为什么 CPU 主频一般都比 FPGA 快,但是却说 FPGA 可以帮助 CPU 加速?


主频只是影响计算速度的一个因素,并不是全部。在执行一些计算密集型的任务场景中,FPGA 的计算速度是更快的,目前 FPGA 作为 CPU 的协处理器已经广泛应用在 Intel、AMD 等公司的产品中。

CPU、GPU、和 FPGA 的比较

下图是左侧为 CPU 的组成,中间为 GPU,右侧为 FPGA。

来源:Xilinx

桌面端的 CPU 为冯诺依曼结构,从上图可以看出,其基本组成为控制器,Cache,和 ALU。而计算单元 ALU 在 CPU 中的占比不大,所以它的并行计算能力有限。

中间的为 GPU,绿色的计算单元占了绝大部分,所以并行计算能力很强。弱点是控制能力很弱,Cache 小,为了保证计算能力,就需要大量的高速 DDR 保证数据吞吐率。

右侧为 FPGA,包含可编程的 I/O、DSP、memory、PCIE 等,因为大量存储单元的存在,FPGA 在做计算的时候可以直接从内部存储单元读取数据。

推荐一个国外的 FPGA 学习网站 -- fpga4fun,里边有 FPGA 的介绍及 26 个实战项目及实现代码,非常适合入门学习!

where FPGAs are fun

正因为 CPU、GPU、和 FPGA 在结构上的不同,也让他们在实际应用层面有所侧重。下图是不同体系结构性能和灵活性的比较:

目前主流的方案是把 CPU、GPU 和 FPGA 都集成在一个 SoC 中,通过片内总线互联。在执行并行计算的时候,比如进行图像处理,FPGA 的优势就体现出来了,通过协作分工,使芯片的工作效率最大化。

目前的 3D 封装以及 chiplet 等技术为这样的组合提供了可实现性。

为什么 FPGA 计算速度会比 CPU 更快?

在执行大量的运算场景中,FPGA 相比 GPU 的核心优势在于低延迟。FPGA 比 CPU 延迟低,在本质上是体系结构的区别。FPGA 同时拥有流水线并行和数据并行,而 CPU 几乎只有数据并行,虽然也会才有流水线设计,但深度受限。因此,FPGA 更适合做需要低延迟的流式处理,GPU 更适合做大批量同构数据的处理。

举个例子:[1]

我们有四个全加器,每一个的进为输出连接到下一个的进位输入,这样实现的加法器被称作行波进位加法器(Ripple-Carry Adder, RCA)。其特点为:

  • 结构特点:低位全加器的 Cout 连接到高一位全加器 Cin
  • 优点:电路布局简单,设计方便
  • 缺点:高位的运算必须等待低位的运算完成

我们来看一下其关键路径的延迟:

总延迟时间:(T + T)*4 + T = 9T,推广到 n 位,总时间为(2n + 1)*T。

每一个全加器计算的时候必须等待它的进位输入产生后才能计算,所以四个全加器并不是同时进行计算的,而是一个一个的串行计算。这样会造成较大的延迟。

我们把这个电路改进一下:提前计算出“进位信号”,对进位信号进行分析。

这样我们就得到了一个:超前进位加法器(Carry-Lookahead Adder, CLA)

其中,C1、C2、C3、C4 都由下面的电路计算好,需要 3 级门延迟,然后在全加器中关键路径上还有 1 级延迟,如图:

所以,总共有 4 级门延迟。

  • 如果采用这种完全的超前进位,理论上的门延迟都是 4 级门延迟
  • 实际电路过于复杂,难以实现(C31 需要 32 位的与门和或门!)
  • 通常的方法:采用多个小规模的超前进位加法器拼接而成,例如,用 4 个 8-bit 的超前进位加法器连接成 32-bit 加法器。

所以我们需要更多的计算位宽或者更大的数组,或者矩阵的运算的时候,我们使用 FPGA 的优势就体现出来。再多的计算,也就是放置更多的硬件逻辑资源。

FPGA 对 CPU 加速场景

下表列出了在一些特定的应用场景下,单独使用 CPU 和 CPU+FPGA 两种方案所需处理时间的对比,可见 FPGA 对 CPU 的加速效果非常明显,甚至比单独使用 CPU 高出 1~2 个数量级!

FPGA 的缺点

FPGA 也是有缺点的,其中之一便是开发周期长。其需要对特定的应用编写特定的 FPGA。只要干的事情稍有不同,一般来说 FPGA 代码就要重新写一遍或者是至少要修改很多东西。如果要做的事情复杂、重复性不强,就会占用大量的逻辑资源,其中的大部分处于闲置状态。

不过,Chiplet 的应用对对 FPGA 的开发周期有一定的优化,以下是传统 FPGA 开发的周期和应用 chiplet 的开发周期对比:

未来的方向

在现在的 SoC 设计中,要充分考虑不同模块的特点,FPGA 和 CPU 协同工作,充分发挥各自的长处,局部性和重复性强的归 FPGA,复杂的归 CPU。从而达到整个系统算力的最优化。

在未来,FPGA 会作为协处理器和 CPU、GPU 共存一段时间,其主要提供以下三方面的能力:

  1. 能够提供专门的硬件加速,实现各种应用中需要的关键处理功能。
  2. FPGA 设计在性能上非常灵活,使用流水线和并行结构,适应对性能的需求变化。
  3. 协处理器能为主处理器和系统存储器提供宽带,低延迟接口。

目前,英特尔,AMD,赛灵思等公司都把 FPGA 作为协处理器集成在 SoC 中作为实际应用的硬件加速解决方案,这样的设计也使得 CPU 和 FPGA 在未来的一段时间内会共存,互相配合,赋能各种计算场景。


往期精彩推荐:

低功耗 CPU 是怎么做到的?

为什么最好的光刻机来自荷兰,而不是芯片大国美国?

我国的光刻机开发得怎么样了?

半导体厂商如何做芯片的出厂测试?

一个芯片产品从构想到完成电路设计是怎样的过程?

司马迁为什么要把五帝当作真实人物记载在史记中?
上一篇
玛雅文明衰落的原因是什么?(玛雅文明衰落之谜)
下一篇
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

相关推荐

  • 苹果手机各个功能介绍,iphone必须关闭的十个功能

    1、关闭蓝牙。现在已经很少有人用蓝牙传输文件了,而且iPhone与安卓的蓝牙并不兼容,所以,可以在设置中,关闭蓝牙功能。2、关闭通知功能。关于APP推送,无非也就是一些更新提醒,关了也不会有什么影响,还能多省点电。3、关闭自动调节亮度功能。一般来说,可以将屏幕亮度在15%-30%之间,在强光环境中,在进行手动调整就可以了。4、禁止后台刷新。在设置—通用中,关闭后台自动刷新功能,也可以对省电起到一点...

  • 高德打车怎么设置途经地,高德如何添加途经路线

    1、点击高德地图APP界面底部的“导航”按钮,进入导航模式。2、点击右下角的“路线”,进入路线设定页面,根据要求输入起点、终点进行路线规划。3、点击“添加途经点”,弹出添加途经点页面,点击右上角,可以添加或者删除途经点,乘客可以手动输入要添加的途经点。4、当添加完途经点时,点击“确定”按钮,即可添加途经路线。此时地图会显示出这条路线上所有的途经点,以及当前途经点的地点信息。怎么设计高德地图设置要经...

  • 高中必修二物理知识点总结,高一物理必修2重点知识点归纳

    您好,1.运动学-位移、速度、加速度的概念及计算方法-相关运动的分析方法,如相对运动和抛体运动-牛顿运动定律及其应用2.力学-力的概念及种类,如重力、弹力、摩擦力等-牛顿第一、二、三定律及其应用-力的合成与分解-能量、功、动能定理、功率的概念及计算方法-动量、冲量定理及其应用3.热学-温度、热量、热能的概念及计量单位-热传递的方式及其特点,如传导、对流、辐射-热力学第一、二定律及其应用,如热机效率...

  • 一滴雨能砸死一只蚂蚁吗?(为什么下雨蚂蚁不会砸死)

    虽然一滴雨水并不能砸死,但有可能把它困死。这只蚂蚁在晶莹剔透的雨滴监狱里窒息而死。2011 年,荷兰摄影师吉米 · 霍夫曼(Jimmy Hoffman)在位于赫罗纳的花园里拍到了这张照片。这绝对不是唯...

  • 蒸汽机是怎么输给内燃机的?(蒸汽机怎么能比过和谐号)

    现在很多人不知道的是,从 1890 年代到 1910 年代,蒸汽机汽车,电动汽车和内燃机汽车曾经有过一段“三足鼎立”的时间,到后来才变成内燃机一统天下。至于原因,我在汽车历史画报:你可能不知道的汽车『...