FPGA相比于CPU,最大的优势在于速度,FPGA通过时钟来控制信号和寄存器传输,也就是说通过时钟来精确控制任务,而且FPGA是并行执行的,每个时钟可以处理多个数据流任务,所以相比于CPU,FPGA是通过稍慢的时钟频率同时并行执行数据流,CPU的主频时钟虽然很高,但是并行能力差,综合同样的程序代码,FPGA的运行速度可能是CPU的上百倍。

一、数据并发处理

        CPU是一个数据一个数据进行处理的,而FPGA在一个时钟内可以同时并行处理多个数据,而且这个数据可以同时做很多个运算,比如乘加运算、比较运算。

二、流水线架构

        FPGA进行图像处理,可以涉及到很多算法一起运行,比如图像进行预处理,灰度、算子、膨胀、腐蚀等,这个时候就可以用到流水线架构处理,FPGA对每一行进行处理时,可以实现同时前一行做灰度运算、后一行做算子运算,整个处理过程是并行的,互不干扰。

三、数据同时接收及处理

        传统的软件处理流程可能是先将数据准备好,然后再进行处理,而FPGA可以做到边接收边处理,在接收数据的同时对数据进行处理。利用数据传输的间隙做数据处理可以节省大量的时间,外部的数据传输是会消耗掉大量时间的。

四、缓存

        FPGA内部有大量缓存单元,在进行图像处理时可以对图像的行数据进行缓存再处理,可以提高处理效率。

五、灵活性

        FPGA可以反复擦除和编程,可以通过设计不同逻辑完成各种电路功能。

六、延时低

        FPGA同时拥有流水线并行和数据并行,例如处理一个数据包有10个步骤,FPGA可以搭建一个10级的流水线,每个流水线可以处理不同的数据包,每个数据包经过10级流水线处理完成,每次完成一个数据包就可以马上输出。而对于常用的GPU只能做到数据并行,如果做10个计算单元,每个计算单元处理不同数据包,所有计算单元必须按照统一步调做相同的事情,,这要求10个数据包一起输入、一起输出,这会增加很大的延迟。而相比于FPGA来说,FPGA的流水线架构可以实现很低的延迟。