登录注册   忘记密码
查看: 70|回复: 3
上一主题 下一主题

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

楼主
发表于 2017/11/7 15:38:47 | 只看该作者

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

1 楼
发表于 2017/11/8 | 只看该作者

尺有所短,寸有所长。
虽然CPU主频很高,但其是通用处理器,做某个特定运算(如信号处理,图像处理)可能需要很多个时钟周期;而FPGA可以通过编程重组电路,直接生成专用电路,加上电路并行性,可能做这个特定运算只需要一个时钟周期。
举例,CPU主频3GHz,FPGA主频200MHz,若做某个特定运算CPU需要30个时钟周期,FPGA只需一个,则耗时情况:
CPU:30/3GHz =10ns;
FPGA:1/200MHz =5ns。
可以看到,FPGA做这个特定运算速度比CPU块,能帮助加速。

另外,CPU的主频是加过流水线之后的。比如是15级流水线,则第一条指令执行了15个时钟周期后才能出结果。


2 楼
发表于 2017/11/22 | 只看该作者

在这里快有两种不同的意思:1. CPU频率高,动辄3G HZ以上的频率;2. 完成一件具体的事务花的时间少。在很多场合1不一定等于2,CPU强在控制灵活,但其按顺序执行的特点使对控制不复杂的并行数据类事务并不强,且其工作模式除了自己工作外,其它部分也要配合,好多操作都是反复把数据读入简单处理后又送出去,无法充分利用其性能。再者CPU同时运行的事务很多,在事务间不断进行切换也会占用很多资源。

而且,使用FPGA不一定总能加速,只是在某些强计算和数据处理的方面,因为其硬件电路并行运行和有很多DSP硬核资源供调用的特点,可以工作得更出色。FPGA本身也只是辅助角色,起控制的还是CPU本身,所以FPGA并不能代替CPU,只是在完成一件大任务的过程中将某部分任务分解给FPGA可以更好地一起完成任务。在这过程中也会有额外的开销产生,在某些场合,可能用了FPGA而效果更差也是有的。

另外,通常说的使用FPGA加速比CPU和GPU省电,是指在完成同样的任务下,FPGA耗费的电力比起CPU和GPU更少一些,相对而言的,并不是说FPGA本身就一定省电。


3 楼
发表于 2017/12/25 | 只看该作者

CPU是一种通用的硬件。也就是说,干任何事情都需要按部就班的拆成指令。一条条执行。而有些活(例如机器学习中的大规模矩阵运算)一行一行算耗时还了得?所以需要定制一些FPGA硬件,可以并行计算,且不需要拆成指令。实际上FPGA加速中并行度是非常高的。一般可能会有几千甚至上万个单元同时计算。与现有的CPU在并行度上根本不是一个数量级。

所以总结起来FPGA优点大体上有两个:
1.FPGA并行度远超CPU。导致FPGA运算速度更快。
2.CPU是通用电路,FPGA是定制电路。CPU任何计算一般都要拆解成取指,译码等固定步骤。影响计算效率。

缺点么,大体上也有两个:
1.开发周期长。需要对特定的应用编写特定的FPGA。只要干的事情稍有不同,一般来说FPGA代码就要重新写一遍或者是至少要修改很多东西。开发代价和码农码几行代码完全不可比。而且一般需要若干工程师花费若干周才能搞的定。重点是会写的人还不多。
2.并不是所有东西都适合FPGA。FPGA适合于做那些可并行计算的东西,例如矩阵运算。如果是一些判断类的问题,FPGA算得并没有CPU快(这个时候时钟周期才是关键因素)。所以现实中都是有人来分析,在整个任务中有哪些地方可以并行计算,把这些地方替换为FPGA卡。

总之,由于现在机器学习、大数据比较火,里面矩阵运算成千上万,所以没有出现定制的ASIC之前,FPGA加速还是业界主流。现在百度、微软、谷歌等公司都已经把FPGA加速运用到了实际的商业运营中。


验证码
看不清换一张