登录注册   忘记密码

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

刘天奇 | 2017/9/4 17:31:00

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


  • 陈鹏程  |   2017/9/5 10:25:43

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

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


  • Filestorm  |   2017/9/6 16:59:30

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

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

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