0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA和CPU如何搭配?

SSDFans 来源:未知 作者:李倩 2018-06-20 15:17 次阅读

一个故事理解流水线、并行、缓存、内存、存储

蛋蛋花了一天给小蛋蛋做了一个玩具汽车,没想到做的太好了,同学们都来买。蛋蛋一个人忙不过来,就一家人合作生产。蛋蛋负责把原料分类摆放在桌上,小蛋蛋拧螺丝组装,蛋妈把玩具放到包装盒里。三个人采用流水线的方式,每个人都没闲着,生产效率大为提高,一天能造50个玩具。

隔壁老王看到蛋蛋做玩具赚钱了,也一家三口加入造玩具大军,慢慢整个小区家家冒烟,户户生产。五十家人采用并行工作的方式,一天能造2500个玩具。

本来,蛋蛋家里的工作台旁边有个箱子,叫做缓存。把玩具生产的原料和生产好的玩具放在自己家里,离得又近又速度快。

小区里家家冒烟后,原料供应和玩具运输需求量大增。居民们在小区中央建了一个仓库,叫做内存,里面放了很多原料和玩具,看门大爷每天推着手推车到每家每户去送原料,收玩具,人们给他起了个外号——总线。

镇长看到蛋蛋家园小区交的玩具税日渐增长,为了增加收入,决定建设玩具小镇,于是镇上每个小区都开始生产玩具,玩具生产规模日渐扩大。镇中心建了一个大仓库,集中存放原料和玩具,仓库太大了,如果一个个领取太不方便,所以每次提货或者送货必须以500个为单位批量领取,这个大仓库叫做硬盘。

在我们的计算机中,CPU采用流水线的方式工作,把一个任务分成十几个步骤,用十几级流水线计算,速度增长了十几倍。多核CPU就是并行工作,又能把计算速度提升几倍。计算速度快了之后,对数据的读写速度要求变高,所以,现代CPU设计了先进的缓存系统,可以说,对现代通用CPU来说,缓存才是核心。

可是对某些应用来说,CPU有点走歪了,它擅长的是用高频率把顺序执行的任务分解成很多级流水线高速执行,但是对于深度学习等计算,需要的是大量的并行计算,这时候,CPU的核心数成了限制。

FPGA的并行性

蛋蛋设计了一个复杂的机器叫CPU,它能一条条读取并执行蛋蛋写好的指令,把任务分解成很多级流水线,生产出各种各样复杂的玩具。

玩具市场总是有新的流行风尚,最近突然乐高玩具开始大火,每一个积木都长得差不多,但是很多的积木就可以搭出复杂的形状。现在的家长都希望寓教于玩,让孩子玩游戏也能动脑筋,蛋蛋看到了这个趋势,也想生产乐高积木。可是他发现复杂的机器CPU的生产效率太低了,他需要的是同时大批量几百上千个机器并行生产,而CPU最多只能同时生产十几个。所以,蛋蛋又钻研了一段时间,研制出新的机器——FPGA。这台机器里面有几千个小引擎,按照蛋蛋设定好的任务,大家热火朝天地生产自己的小积木。

我们上大学学习的C语言是给CPU编程的语言,它的特点就是写一个main函数,里面有很多内容,程序启动后,从头按顺序执行到结尾。这是因为只有一个CPU在运行,程序会转化为指令让CPU一条条执行。

FPGA是并行计算机,它的基础编程语言叫做Verilog,在这种语言中,每一段程序,都会转化为FPGA芯片里面的一个小计算引擎,大家并行执行,热火朝天的干自己的活。

FPGA和CPU如何搭配

FPGA作为可重构计算引擎,一般要和CPU搭配使用。如下图,可重构计算引擎要么直接和CPU紧密相连,要么和缓存相连,前者叫紧耦合,后者叫松耦合。还有一种情况下,FPGA是作为协处理器coprocessor连到内存总线上,和CPU共享内存。

如下图,FPGA作为协处理器,CPU把指令写入内存,FPGA从内存读取指令执行,并把计算结果写入内存。这种模式的优点是简单易行,协处理器和CPU分离。瓶颈在于共享内存,限制了性能,同时由于通过内存交互,CPU和FPGA之间通信延迟变长了。所以适合于FPGA能独立执行的加速任务,比如视频编解码、数据加解密等。

下图是一个松耦合的例子。CPU(ARC)和可重构计算逻辑放在一颗芯片里面,CPU可以直接访问可重构计算引擎,而且共享内存,可重构计算引擎可以通过DMA方式直接读写内存。同时,我们看到可重构计算引擎有自己的数据读写接口,所以可以脱离CPU独立工作,打工创业两不误。

再来看一个紧耦合的例子。如下图,CPU FU是一般CPU的基本计算单元,例如ALU、乘法器、浮点处理器等,RFU跟这些基本单元一样,放在芯片里面,而且可以直接被CPU的寄存器控制,还能访问缓存中的数据。

总结一下,协处理器相当于外地当官的,只能接受皇帝的命令工作。松耦合就是京城里的官员,可以定期去皇宫跟皇帝唠唠嗑。紧耦合已经到了外戚和太监的地步,能在皇宫里经常值班。

松耦合和紧耦合都要在芯片里面放可重构计算引擎,成本比较高,但是效率也很高。相当于CPU里面有个FPGA,随时可以编程让它做不同的计算。处理视频时,配置成视频编解码逻辑,做AI计算时配置成深度学习计算器,一个芯片既有CPU,又有可以配置的硬件计算引擎。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21729

    浏览量

    602986
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10854

    浏览量

    211576
  • 深度学习
    +关注

    关注

    73

    文章

    5500

    浏览量

    121111

原文标题:阿呆读可重构计算2:FPGA如何克服CPU的缺陷?

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGACPU和GPU快的原理是什么

    本文首先阐述了FPGA的原理了,其次分析了FPGACPU和GPU快的原理,最后阐述了CPU与GPU的区别。
    的头像 发表于 05-31 09:00 1.7w次阅读
    <b class='flag-5'>FPGA</b>比<b class='flag-5'>CPU</b>和GPU快的原理是什么

    FPGA真的能取代CPU和GPU吗?

    最近我们看到一篇文章,说FPGA可能会取代CPU和GPU成为将来机器人研发领域的主要芯片。文章列举了很多表格和实验数据,证明了在很多领域FPGA的性能会极大优于CPU。并且预言
    发表于 05-16 10:39 1.7w次阅读

    混合CPU_FPGA系统的调试方法

    混合CPU_FPGA系统的调试方法:
    发表于 07-23 10:44 7次下载
    混合<b class='flag-5'>CPU_FPGA</b>系统的调试方法

    一种利用FPGACPU设计

    基于现场可编程(FPGA)技术和硬件描述语言VHDL的设计和综合,通过自顶向下的设计方法和模块化设计思想,在Quartus II环境下能定制、仿真、下载验证和实现CPU功能。通过VHDL语言定制了运算器ALU模块和调用宏模块定制了RAM模块,介绍了基于
    发表于 03-15 17:39 178次下载

    基于FPGA的嵌入式CPU的VHDL建模和设计

    目前,基于FPGA 的嵌入式CPU核的设计已成为SOC设计的重要部分.提出一种嵌入式CPU核的VHDI 行为建模方法,与传统的基于电路结构建模的CPU核的设计方法不同,新的VHDI 建
    发表于 06-27 16:00 75次下载
    基于<b class='flag-5'>FPGA</b>的嵌入式<b class='flag-5'>CPU</b>的VHDL建模和设计

    FPGACPU、DSP的竞争与融合

    FPGA技术来说,早期研发在5年前就已开始尝试采用多核和硬件协处理加速技术朝系统并行化方向发展。在实际设计中,FPGA已经成为CPU的硬件协加速器,很多芯片厂商采用了硬核或软核CPU+FPG
    发表于 09-23 15:30 841次阅读

    三步教你如何DIY电脑主板和CPU搭配

    本文来自ZOL很多DIY玩家在刚接触硬件的时候,经常被主板和CPU的型号搞得晕头转向,不知道如何进行搭配,毕
    的头像 发表于 11-27 06:42 1.5w次阅读

    FPGACPU有什么关系_FPGACPU的联系

    CPU+FPGA的并行处理是目前的发展趋势这种处理方式将大行其道。
    发表于 01-02 15:54 1.7w次阅读

    简单了解CPU和内存搭配规律

    CPU和内存都具有相应的速率和带宽。在配置电脑过程中,根据CPU的速率和带宽,来搭配相应速率和带宽的内存,会直接影响整机的性能。如果搭配不当往往会浪费
    发表于 07-09 10:33 3.3w次阅读

    FPGA为什么比CPU和GPU快

    FPGA仿真篇-使用脚本命令来加速仿真二 基于FPGA的HDMI高清显示借口驱动 基于FPGA灰度图像高斯滤波算法的实现 FPGA为什么比CPU
    发表于 02-20 20:49 1673次阅读

    如何才能合理的搭配CPU和主板

    装机的时候该怎么选择主板?对于大侠级人物这是一个简单的问题,但对于电脑小白却是一个头痛的问题。其实,CPU和主板如何搭配是有一定的方法,按照下面的方法来,相信你也会选出自己所用的主板。
    的头像 发表于 10-26 12:19 6450次阅读

    使用FPGA实现CPU设计的毕业论文总结

    CPU的总体结构到局部功能的实现采用了自顶向下的设计方法和模块化的设计思想,利用Xilinx 公司的Spartan II 系列FPGA,设计实现了八位CPU软核。在FPGA内部不仅实
    发表于 08-03 17:58 13次下载
    使用<b class='flag-5'>FPGA</b>实现<b class='flag-5'>CPU</b>设计的毕业论文总结

    如何使用CPU配置FPGA的详细资料说明

    FPGA 设计,代价不小。为了进一步降低产品的成本和升级成本, 可以考虑利用板上现有CPU 子系统中空闲的ROM 空间存放FPGA 的配置数据, 并由CPU模拟专用EPROM 对
    发表于 08-13 17:43 2次下载
    如何使用<b class='flag-5'>CPU</b>配置<b class='flag-5'>FPGA</b>的详细资料说明

    如何使用FPGA实现八位RISC CPU的设计

    CPU的总体结构到局部功能的实现采用了自顶向下的设计方法和模块化的设计思想, 利用Xilinx 公司的Spartan II 系列FPGA, 设计实现了八位CPU软核。在FPGA 内部
    发表于 08-19 17:43 7次下载
    如何使用<b class='flag-5'>FPGA</b>实现八位RISC <b class='flag-5'>CPU</b>的设计

    为什么FPGA主频比CPU慢,但却可以用来帮CPU做加速

    我们知道,FPGA的频率一般只有几百MHz,而CPU的频率却高达数GHz。那么,有不少网友心中就有一个疑问:为什么FPGA主频比CPU慢,但却可以用来帮
    的头像 发表于 11-20 09:56 3949次阅读