可编程逻辑
(文章来源:和讯网)
与其他计算载体如CPU与GPU相比,FPGA具有高性能、低能耗以及可硬件编程的特点。图1介绍了FPGA的硬件架构,每个FPGA主要由叁个部分组成:输入输出逻辑,主要用于FPGA与外部其他部件,比如传感器的通信;计算逻辑部件,主要用于建造计算模块;以及可编程连接网络,主要用于连接不同的计算逻辑部件去组成一个计算器。
在编程时,我们可以把计算逻辑映射到硬件上,通过调整网络连接把不同的逻辑部件连通在一起去完成一个计算任务。比如要完成一个图像特征提取的任务,我们会连接FPGA的输入逻辑与照相机的输出逻辑,让图片可以进入FPGA。然后,连接FPGA的输入逻辑与多个计算逻辑部件,让这些计算逻辑部件并行提取每个图片区域的特征点。最后,我们可以连接计算逻辑部件与FPGA的输出逻辑,把特征点汇总后输出。由此可见,FPGA通常把算法的数据流以及执行指令写死在硬件逻辑中,从而避免了CPU的Instruction Fetch与Instruction Decode 工作。
虽然FPGA的频率一般比CPU低,但是可以用FPGA实现并行度很大的硬件计算器。比如一般CPU每次只能处理4到8个指令,在FPGA上使用数据并行的方法可以每次处理256个或者更多的指令,让FPGA可以处理比CPU多很多的数据量。另外,如上所述,在FPGA中一般不需要Instruction Fetch与Instruction Decode, 减少了这些流水线工序后也节省了不少计算时间。
为了让读者对FPGA加速有更好的了解,我们总结了微软研究院2010年对BLAS算法的FPGA加速研究。BLAS是矩阵运算的底层库,被广泛运用到高性能计算、机器学习等领域。在这个研究中,微软的研究人员分析了CPU、GPU以及FPGA对BLAS的加速以及能耗。图2对比了FPGA以及CPU、GPU执行GaxPy算法每次迭代的时间,相对于CPU,GPU与FPGA都达到了60%的加速。图中显示的是小矩阵运算,随着矩阵的增大,GPU与FPGA相对与CPU的加速比会越来越明显。
FPGA相对于CPU与GPU有明显的能耗优势,主要有两个塬因。首先,在FPGA中没有Instruction Fetch与Instruction Decode,在Intel的CPU里面,由于使用的是CISC架构,仅仅Decoder就占整个芯片能耗的50%;在GPU里面,Fetch与Decode也消耗了10%~20%的能源。其次,FPGA的主频比CPU与GPU低很多,通常CPU与GPU都在1GHz到3GHz之间,而FPGA的主频一般在500MHz以下。如此大的频率差使得FPGA消耗的能源远低于CPU与GPU。
全部0条评论
快来发表一下你的评论吧 !