首页 > 编程知识 正文

基于fpga的cpu设计的说明(fpga加速卡的原理)

时间:2023-05-06 09:41:07 阅读:74805 作者:2939

为什么FPGA的主频比CPU慢,却能帮助其加速? 已知FPGA的频率一般只有几百MHz,但CPU的频率高达几GHz。 那么,在很多网友心中,“为什么FPGA的频率比CPU慢,却能用于CPU的加速? ”的疑问。

今天,EDN将和大家系统地讨论这个问题。

将FPGA的动作频率与CPU进行比较是不合适的

在开始之前,首先要明确的是,将FPGA的主频与CPU进行比较,实际上是风马牛不相容的问题。 FGA和CPU是两种截然不同的器件,前者专用硬件编程,而后者通用软件编程。

不同体系结构的性能和灵活性比较。 (图像源: 《如何评价微软在数据中心使用 FPGA 代替传统 CPU 的做法?》 )

表面上看,FPGA时钟频率低的FPGA设计在通用计算任务中似乎比不上CPU的设计。 但实际上,各个FPGA的并行度比CPU高得多。 FGA行为是确定性的,用作硬件加速器没有时间片、线程或资源争用问题。 总是以完全相同的速度执行一件事。 因此,如果需要低延迟,FPGA可能是最佳选择。

计算密集型任务、CPU、GPU、FPGA和ASIC订单比较(以16位整数乘法为例,数字只是订单估计) (图像源: 《如何评价微软在数据中心使用 FPGA 代替传统 CPU 的做法?》 ) () ) ) ) )。

FGA并行计算机制

根据young cc,CPU的时钟数高,但是通用处理器,进行信号处理、图像处理等特定运算可能需要很多时钟周期。 FPGA可以通过编程和重组电路来直接生成专用电路。 除了电路的并行性之外,进行这个特定的运算可能只需要一个时钟。

例如,CPU的主频率是3GHz,FPGA的主频率是200MHz。 进行特定运算时,CPU需要30个时钟周期,而FPGA只需要一个。 需要时间的情况如下。

CPU:30/3GHz=10ns;

FPGA:1/200MHz=5ns。

可见FPGA的该特定运算速度比CPU快,有助于加速。

另外,CPU的主频是增加了流水线。 例如,如果是15级管线,则只有第一个指令执行15个时钟周期才能产生结果。

但是,即使使用FPGA也不一定总是加速。

例如,已经认识的网友Evan172可以做得更好,因为仅在一些强大的计算和数据处理方面,Evan172允许硬件电路并行运行并且有很多DSP硬件核心资源用于调用

FPGA本身也是辅助作用,进行控制的是CPU本身,因此FPGA并不能代替CPU,只需将完成大任务的过程中的一部分任务分解为FPGA,就能一起完成更好的任务。 在此过程中可能会产生额外的成本,有时使用FPGA可能会进一步降低效果。

此外,通常认为FPGA加速比CPU和GPU更省电,这意味着完成相同任务时,FPGA的功耗会比CPU和GPU少。 这是相对的,FPGA本身并不一定省电。

一个有趣的例子是数组加法计算

用户doing举出了一个有趣的例子。 他指出,假设在用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(intI=0; i 255; I )

r[i]=a[i] b[i];

对FPGA来说,也可以用和上面一样的写法。 不同之处在于:

CPU是一个个加法运算,而FPGA组成逻辑电路,在一个时钟周期内完成计算。 即使CPU的主频率比FPGA快100倍也来不及了呢。 顺便说一下,CPU增加了大量的SIMD指令,有点这个意思,但这和提供库函数一样,不那么灵活。

FGA并行是真正的并行,CPU是完全无法比拟的。 虽然CPU想要并行化就最多并行化多个核,但是对于大部分算法的实现来说,如上例所示,在多个核之间进行同步调度的开销远大于计算的开销,并且在多个核之间进行调用的开销

因此,在执行信号处理、网络传输等可并行处理的计算密集型任务时,FPGA很有用; 但是,如果进行一般的以串行为中心的任务,FPGA远远比不上CPU。 类比的话,类似于GPU和CPU的关系。

“写Verilog的时候,我想如果CPU附带有FPGA,APP程序可以在初始化过程中直接烧码的话,那会不会很爽呢? 之后,制作了可以写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和通用处理器之间共享部分计算。

综上,FPGA有两个优点:FPGA并行度远超CPU;CPU是通用电路,FPGA是定制电路。但是也有两个缺点:开发周期长;并不是所有东西都适合FPGA。

 

【QQ交流群】

群号:173560979,进群暗语:FPGA技术江湖粉丝。

多年的FPGA企业开发经验,各种通俗易懂的学习资料以及学习方法,浓厚的交流学习氛围,QQ群目前已有1000多名志同道合的小伙伴,无广告纯净模式,给技术交流一片净土,从初学ljdy到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有。

 

【微信交流群】

现微信交流群已建立09群,人数已达数千人,欢迎关注“FPGA技术江湖”微信公众号,可获取进群方式。

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

江湖偌大,继续闯荡,愿大侠一切安好,有缘再见!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。