1 FPGA浮点运算推陈出新
以往FPGA在进行浮点运算时,为符合IEEE 754标准,每次运算都需要去归一化和归一化步骤,导致了极大的性能瓶颈。因为这些归一化和去归一化步骤一般通过FPGA中的大规模桶形移位寄存器实现,需要大量的逻辑和布线资源。通常一个单浮点加法器需要500个查找表(LUT),单浮点要占用30%的LUT,指数和自然对数等更复杂的数学函数需要大约1000个LUT。因此随着DSP算法越来越复杂,FPGA性能会明显劣化,对占用80%~90%逻辑资源的FPGA会造成严重的布线拥塞,阻碍FPGA的快速互联,终会影响时序收敛。
为解决以上问题, 2010年Altera在DSP Builder模块库中引入了融合数据通路设计。它将基本算子组合在一个函数或者数据通路中,通过分析数据通路的位增长,选择归一化输入,为数据通路分配足够的,尽可能消除归一化和去归一化步骤。这一优化平台将定点DSP模块与可编程软核逻辑相结合,避免了大量使用这类桶形移位寄存器。与使用几种基本IEEE 754算子构成的等价数据通路相比,减少了50%的逻辑,延时减小了50%。并且,这一方法总的数据一般高于使用基本IEEE 754浮点算子库的方法。
在Altera Arria 10和Stratix 10器件中的硬核浮点DSP模块开发出来之前,融合数据通路方法的浮点运算性能和效率是业界的。表1显示了Cholesky求解器运行在Stratix V版DSP开发套件上的结果,形式是Ax = B,使用了DSP Builder模块库中的融合数据通路设计流程。一般来说Cholesky的输入矩阵函数规模大、延时长,因此很难在FPGA硬件中实现,但具有融合数据通路的DSP Builder模块库的浮点运算占用的逻辑只是基本浮点乘法器的3到4倍,并会在每一时钟周期产生一个结果,从而可实现相应规模的 Cholesky求解。
随着Altera DSP模块体系结构的进步和软件工具的不断优化,目前Altera已可在FPGA中实现高性能浮点运算,Altera的Arria 10和Stratix 10器件中的硬核浮点DSP模块就是业界的浮点解决方案的代表。
2 硬核浮点DSP提高设计效能 加快上市
在Arria 10和Stratix 10器件中的硬核浮点DSP模块不仅提高了运算性能,还可加快产品上市时间。
在提高运算性能方面,主要体现在三个方面:
一是可节省逻辑资源的使用。采用Arria 10和Stratix 10器件中的硬核浮点DSP模块,FPGA系统克服了前述提到的限制性能的挑战。在过去,需要使用定点乘法器和FPGA逻辑来实现浮点运算功能,Altera的硬核浮点DSP几乎不使用现有FPGA浮点计算所需要的逻辑资源,并且,桶形移位寄存器可在硬核DSP模块中实现,就避免了使用宝贵的FPGA资源运行归一化和归一化函数。采用硬核浮点DSP模块内置这一创新体系结构,不仅节省了很多的逻辑资源,时序收敛或者fMAX要求也不再受限于次优布线,从而保证了使用80%至90%逻辑资源的FPGA仍能保持较高的fMAX性能。
二是提高了数字。硬核浮点DSP模块支持很多复数浮点运算,包括累乘法、加减法等,其浮点输出都符合IEEE 754标准,从而保证了在具有高分辨率要求的应用中其数值的一致性。过去FPGA实现浮点运算是在内部数据通路上使用二进制补码表示。在算法输入输出时,这一内部二进制补码表示与IEEE 754格式相互转换。这在解决桶形移位寄存器占用资源方面至关重要,但实际输出值与MATLAB/Simulink模型值相比会有所偏差。但是,在采用了Arria 10和Stratix 10器件中的硬核浮点模块后,实际输出值与Simulink模型显示的高度一致。
三是提高了能效。Arria 10和Stratix 10器件还在FPGA业界实现了能效的浮点,每瓦分别是50 GFLOP和100 GFLOPS,极大地减少了以前进行浮点运算时所需要的逻辑和布线资源,从而大幅度降低了内核动态功耗。
而在加快产品上市方面,FPGA中集成的硬核浮点DSP支持很多常见的DSP模型和仿真环境,可无缝实现优化浮点运算。在从军事领域的雷达到通信系统等各种应用中,Arria 10和Stratix 10器件为设计人员提供了更高效的设计,平均可将设计时间缩短6-12个月。一方面是因为不需要额外的转换过程。在前几代FPGA中要实现高性能浮点运算,需要进行转换,将浮点转换为定点,在FPGA中实现,在定点实现中分析、转换并验证浮点算法。这种转换过程一般步骤繁琐。此外,这一过程完成后,还需验证转换过程当中的准确率。如果设计方面有任何的修改或变化,都需要重新把这些流程再进行一遍,持续进行转换。另一方面是因为Altera提供了易用的设计工具。Altera优异的DSP设计工具包括为硬件设计人员、基于模型的设计人员提供的DSP Builder,以及为软件编程人员提供的面向OpenCL的软件开发套件(SDK)。利用这些工具,设计人员完全不需要浮点到定点的转换过程,相应地在实现过程中也不需要调试,在几分钟内就可以完成系统定义和仿真,直至系统实现。当使用DSP Builder或者面向OpenCL的SDK设计算法,设计人员能够将开发精力集中在算法定义和迭代上,而不是设计硬件,帮助他们缩短了开发和验证时间。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。