Altera公司日前宣布在FPGA浮点DSP性能方面实现了重大突破。该公司首席DSP产品规划经理Michael Parker称,Altera是第一家能够在FPGA中集成硬核IEEE 754兼容浮点运算功能的可编程逻辑公司,前所未有地提高了DSP性能、逻辑效率和设计效能。根据规划,硬核浮点DSP模块将集成在正在发售的20nm Arria 10 FPGA和SoC中,也将集成在14nm Stratix 10 FPGA和SoC中,DSP设计人员可以选择定点或者浮点模式,浮点模块与现有设计后向兼容。
面向高性能计算,与GPGPU展开竞争
与传统使用定点乘法器和FPGA逻辑来实现浮点功能的做法不同,Altera的硬核浮点DSP几乎不使用现有FPGA浮点计算所需要的逻辑资源,释放了上千个乘法器和加法器,从而一举在Arria 10器件中实现了1.5 TeraFLOP(每秒浮点运算次数)和Stratix 10器件中10 TeraFLOP的DSP性能。
“这要归功于我们创新的精度可调DSP体系结构。”Altera公司软件和DSP产品市场经理Albert Chang说,在DSP模块现有模式(标准精度定点模式和高精度定点模式)基础上添加浮点模式,Altera FPGA和SoC的性能和功耗效率将在很多领域高于目前正在使用的微处理器和GPU,尤其是那些需要高性能计算的行业(大数据分析、石油和天然气行业的地震建模、金融仿真、雷达和医疗成像等)。但其对定点模式并没有影响(性能、大小和功耗),且对管芯总体改变<1%。
Altera方面称,其开发的硬核浮点FPGA产品的竞争对手并非来自同行,而是通用图形处理单元(GPGPUs)。“其他FPGA厂商提供的软核浮点实现方式,主要通过逻辑来实现复杂的浮点运算电路,是缺乏功效和竞争力的。”公司首席DSP产品规划经理Michael Parker打比方说,这就好像数年前没有硬乘法器的FPGA,却总在试图和现代具备DSP模块的FPGA进行竞争一样可笑。
Michael Parker认为,FPGA业界目前的主要发展趋势是提高器件的每瓦性能,而不是单纯提高性能,几乎所有客户都面临这一发展趋势。未来无论何种应用,管理功耗,进而到管理成本将是他们面临的一个关键问题。因此,具有精细粒度密集流水线体系结构的FPGA非常适合用作高性能计算加速器,与DSP、CPU和GPU相比,FPGA的每瓦性能是最高的。
他继续表示:“FPGA的特点就是功耗低,然后又增加了硬核浮点运算的能力。它每瓦的功耗,或者是每个槽的功耗都是比较低的。我认为FPGA未来肯定会取代很多高端的DSP处理器。然后,它也可以取代一些GPU,因为它在功耗方面、时延方面,在连接到网络的便利性方面,它都拥有优势。”据透露,增加了硬核浮点功能的Arria 10 DSP性能已相当于TI最高性能DSP,也完全具备与GPGPU进行竞争的资本。
另外,FPGA被设计为可以在高温下工作,对于软件编程人员来说也是一个福音。使用了Altera的软件,他们可以更倾向于使用这种浮点的,而不是定点的。
硬核浮点DSP模块缩短6-12个月的开发时间
由于设计人员可以将其DSP设计直接转译成浮点硬件,而不是转换为定点,从而大幅度缩短了时序收敛和验证时间。相比此前系列,硬核浮点DSP模块能够缩短近12个月的开发时间。Albert Chang认为这帮助设计人员克服了以下3方面的技术挑战:
首先,浮点设计必须手动转换为定点,这需要一名非常有经验的工程师。即使这样,在验证阶段也无法实现同仿真阶段同样的数值精度。
其次,对于算法的任何事后修改仍然需要手工完成。同时,系统中任何针对定点算法的优化步骤都无法在仿真过程中得以体现。
第三,系统集成和测试过程中出现的问题,可能的原因大多来自下列任何一项或几项:手动转换过程中的错误、数值精度问题、或是算法本身就存在缺陷。找出这些问题是非常困难的,然而,Altera的浮点FPGA却能够解决上述所有问题。
为了帮助硬件设计人员、基于模型的设计人员以及软件编程人员在器件中轻松实现高性能浮点DSP模块,Altera还同时提供多种工具流程,包括:
* DSP Builder高级模块库提供了基于模型的设计流程,设计人员使用业界标准MathWorks Simulink工具在几分钟内就可以完成系统定义和仿真,直至系统实现。
* 对于软件编程人员,Altera在FPGA编程中率先使用了OpenCL,并面向FPGA提供基于C语言的通用高级设计流程。Arria 10 FPGA浮点DSP模块结合使用方便的开发流程,为软件编程人员提供了硬件直接转译方法,帮助他们缩短了开发和验证时间。
2014年下半年,Altera将提供面向Arria 10器件中硬核浮点DSP模块的浮点设计流程,包括演示和基准测试。在此之前,用户可以采用Arria 10 FPGA开始设计,使用软件浮点技术来实现浮点功能,在得到设计流程支持后,软件工具会自动(一次重新编译)将浮点算法无缝映射到硬核浮点运算中,而不必使用软核逻辑。