OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4004|回复: 1

[XILINX] 【阿东手把手教你学FPGA】为什么CPU主频可以1Ghz,而FPGA只能是几百M?

[复制链接]

8

主题

13

帖子

1

精华

超级版主

Rank: 8Rank: 8

积分
221
金钱
221
注册时间
2019-11-11
在线时间
27 小时
发表于 2023-3-2 19:37:19 | 显示全部楼层 |阅读模式
本帖最后由 dongguo100 于 2023-3-8 12:44 编辑

     可能很多初学者会觉得,FPGA的频率一般只有几百MHz,而CPU的频率却高达数GHz,那还要FPGA干什么?这个问题提的很好,下面来给大家浅析下两个主频的差异。

    将FPGA主频与CPU相比不妥
  在开始之前,首先要明确一点,将FPGA的主频与CPU比较,实际是风马牛不相及的问题。FPGA和CPU是两种完全不同的器件,前者是专用,是硬件编程,而后者是通用,是软件编程。
 不同体系结构性能和灵活性的比较。
表面上看,FPGA的时钟频率要低;对于通用计算任务,FPGA设计貌似不如CPU设计。但是实际上,单个FPGA的并行度却比CPU要高得多。FPGA的行为是确定性的,用作硬件加速器没有时间片、线程或资源冲突的问题。它始终以完全相同的速度执行一件事。因此,如果需要低延迟,那么FPGA就可能是最佳选择。
计算密集型任务,CPU、GPU、FPGA、ASIC 的数量级比较(以16位整数乘法为例,数字仅为数量级的估计)
    FPGA并行计算机制
      大家要理解,虽然CPU主频很高,但其是通用处理器,做某个特定运算(如信号处理,图像处理)可能需要很多个时钟周期。而FPGA可以通过编程重组电路,直接生成专用电路。加上电路并行性,可能做这个特定运算只需要一个时钟周期。
  举例来说,CPU主频为3GHz,FPGA主频为200MHz。若做某个特定运算,CPU需要30个时钟周期,而FPGA只需一个,那么耗时情况是:
  CPU:30/3GHz =10ns;
  FPGA:1/200MHz =5ns。
  可以看到,FPGA做这个特定运算速度比CPU块,能帮助加速。
  另外,CPU的主频是加过流水线之后的。比如是15级流水线,则第一条指令执行了15个时钟周期后才能出结果。
  但是,使用FPGA也不一定总能做加速。
  例如,使用FPGA做加速,只是在某些强计算和数据处理的方面,因为其硬件电路并行运行和有很多DSP硬核资源供调用的特点,可以工作得更出色。
  FPGA本身也只是辅助角色,起控制的还是CPU本身,所以FPGA并不能代替CPU,只是在完成一件大任务的过程中将某部分任务分解给FPGA可以更好地一起完成任务。在这过程中也会有额外的开销产生,在某些场合,可能用了FPGA而效果更差也是有的。
  另外,通常说的使用FPGA加速比CPU和GPU省电,是指在完成同样的任务下,FPGA耗费的电力比起CPU和GPU更少一些。这是相对而言的,并不是说FPGA本身就一定省电。
  一个有趣的例子:数组加法计算
  假设我们用FPGA完整实现了CPU(比如Intel的软核CPU-Nios II或者Xilnx的软核CPU-Microblze,这两个都是使用FPGA的逻辑资源实现的软核CPU),然后再跑软件的话,的确比CPU慢。问题是FPGA一般不会那么干,它会直指问题本质,解决问题。
  例如,有两个数组,其中有256个32位数。现在要把它们对应相加变成一个数组,用CPU写最快大概是这个样子:
  r[0] = a[0] + b[0];
  r[1] = a[1] + b[1];
  ...
  r[255] = a[255] + b[255];
  当然也可能会这么写(在分支预测准确,指令缓存不大的情况下可能更快):
  for (int i = 0; i < 255; i++)
  r = a + b;
  对FPGA来说,也可以用上面相同的写法,不同在于:
  CPU是一个一个加法计算,而FPGA排好逻辑电路,在一个时钟周期内计算完毕。就算CPU主频比FPGA快100倍也赶不上啊。话说后来CPU大量的增加SIMD指令,就有点这个意思,不过这相当于提供库函数,没那么灵活。
  FPGA的并行是真并行,CPU完全没得比。CPU如果想并行最多也就是让多个核并行,但是对于大部分算法实现来说,如上例,多个核之间的同步调度开销远远大于计算开销,就算多个核之间的调用开销可以做的很小,一般CPU也就那几个核,而FPGA只要门足够,想并行几路就可以并行几路。
  所以在做可并行的计算密集型任务时,比如信号处理,网络传输等等FPGA可以帮上忙;但是如果做常见的以串行为主的任务,FPGA的确远远比不上CPU。如果要类比的话,有点像似GPU和CPU之间的关系。
  “当年写Verilog的时候,我就想如果CPU里面自带一块FPGA,应用程序程序可以在初始化期间直接烧一段代码下去,那岂不是很爽。后来,有了能写shader的3D显卡...”
  为什么FPGA成为数据中心尖端技术?
  最后再讨论一个话题,就是为什么FPGA一直是数据中心领域最尖端的技术?
  有人可能认为,再大的问题(算力)都可以通过堆CPU核心来解决。那么,假设有一台强大的48核服务器,即使使用非常高端的FPGA,也很难达到相同的吞吐量。而且,FPGA硬件设计还需要由强大的团队来完成,非常烧钱。
  这时,如果把机会成本和能源效率两者考虑进去,好处就开始显现出来了。
  首先来看能源效率。假设这台48核服务器的功耗为400W并且发热严重,那么就会对数据中心运营不利——能耗和散热是数据中心运营的两项最大支出。而将FPGA连接起来只执行一项任务,就可以实现很高的能效而开销极低。通过正确的设计,可以在实现低功耗的同时获得高吞吐量。
  其次,机会成本(这个问题不太明显)。系统中的CPU内核数量就那么多。购买新的内核并且安装需要花很长时间,而且最好是将通用CPU内核保留用于通用任务(例如虚拟机订阅)。每个CPU核卖不出去就会烧钱。
  当有任务大量占用CPU时间(例如AI推理)时,FPGA就成为了不错的选择。
   一个有关微软Project Catapult项目当中FPGA的趣事
  当年,微软必应团队在其Project Catapult项目中发现,在启用FPGA时,CPU的总体利用率实际上略有上升。所有的人都感到困惑,因为从直觉来看FPGA应该要减少CPU负载。但是后来他们发现,数据中心的业务流量达到了原来的2倍!由于效率提高,流量实现了两倍的负载均衡。由此可见FPGA的强大之处。
   总结
        FPGA的优势在于其并行特性,有时对于某些应用而言可以使速度明显变快;可以使用FPGA来对算法中的某些部分加速,也可以在FPGA和通用处理器之间共享部分计算。
另外大家也要明白一点,CPU并不是所有的电路都能跑到1Ghz,只有CPU内核才能跑到1Ghz,举例来说,ARM Cortex A53核心的CPU,一般只有Cortex A53内核才能跑到1Ghz,其他的外设部分,比如SPI接口、显示接口等,这些一般也是几百M主频的。
综上,FPGA有两个优点:FPGA并行度远超CPU;CPU是通用电路,FPGA是定制电路。但是FPGA也有两个缺点:开发周期长;并不是所有东西都适合FPGA。

引用:《为什么FPGA主频比CPU慢,但却可以用来帮CPU加速?》作者:赵明灿。阿东基于该文章做了一些修改,如有侵权,请及时联系我。

正点原子FPGA开发板推荐:
入门FPGA学习可以选择开拓者开发板       :https://detail.tmall.com/item.htm?abbucket=2&id=609033128784
入门XILINX学习可以选择达芬奇开发板:https://detail.tmall.com/item.htm?abbucket=2&id=624335496505
入门ZYNQ学习可以选择领航者开发板      :https://detail.tmall.com/item.htm?abbucket=2&id=609032204975
进阶MPSOC学习可以选择MSPOC开发板 :https://detail.tmall.com/item.htm?abbucket=2&id=692450874670
进阶XILINX可以选择达芬奇Pro开发板      :https://detail.tmall.com/item.htm?abbucket=2&id=640278473312
国产FPGA学习可以选择紫光开发板          :https://detail.tmall.com/item.htm?abbucket=2&id=692712955836
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

16

帖子

0

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2018-4-9
在线时间
76 小时
发表于 2023-3-21 14:34:53 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-4 06:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表