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

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

CPU、GPU、和 FPGA 的比较

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

为什么 CPU 主频一般都比 FPGA 快,但是却说 FPGA 可以帮助 CPU 加速?
来源: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 主频一般都比 FPGA 快,但是却说 FPGA 可以帮助 CPU 加速?

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

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

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

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

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

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

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

举个例子:[1]

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

  • 结构特点:低位全加器的 Cout 连接到高一位全加器 Cin
  • 优点:电路布局简单,设计方便
  • 缺点:高位的运算必须等待低位的运算完成
为什么 CPU 主频一般都比 FPGA 快,但是却说 FPGA 可以帮助 CPU 加速?

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

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

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

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

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

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

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

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

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

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

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

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

FPGA 对 CPU 加速场景

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

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

FPGA 的缺点

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

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

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

未来的方向

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

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

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

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

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


往期精彩推荐:

低功耗 CPU 是怎么做到的?

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

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

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

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

[新春采购季]京东云 服务器2核2G 51元起/年 点这里优惠购买
[新春采购季]阿里云 服务器2核2G 61元起/年 点这里优惠购买
[新春采购季]腾讯云 云服务器2核2G 61起/年 点这里优惠购买
感谢您的来访,获取更多精彩文章请Ctrl+D收藏本站。
更多精彩文章,请收藏本站
版权声明:本文依据知识共享署名4.0国际许可协议(BY-NC-SA)进行授权。
文章标题:为什么 CPU 主频一般都比 FPGA 快,但是却说 FPGA 可以帮助 CPU 加速?
文章链接:https://app.qiip.cc/8025.html
本文为【软件乐园】原创文章,转载请附上原文链接。
免责声明:根据我国《计算机软件保护条例》第十七条的规定,为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。本网站特此声明,所有内容资源均来源于网络,仅供用户进行交流、学习与研究之用,若涉及侵权问题,请联系站长进行删除处理。版权归属原版权方所有,本网站不承担任何版权争议。用户下载后,不得将内容用于商业或非法用途,并需在24小时内删除。否则,由此产生的一切后果将由用户自行承担。
THE END
分享
二维码
< <上一篇
下一篇>>