以市场观点来看,许多人只会重视FPGA的大量型应用,例如用FPGA取代ASIC。
但就技术角度来看,FPGA的应用拓展就更为多样且具意义,这包括用FPGA加速高效运算、用FPGA加速电路设计验证、用FPGA取代大量性的DSP运算。
由于掩膜成本的指数性攀升,许多中等用量规模(约50万颗以下)的芯片无法如过去般以ASIC方式投产,且不得不改以FPGA投产,如此使近年来FPGA的市场不断增长。
FPGA侵蚀原有ASIC市场的用量极为可观的,此也成为近年来众人关注FPGA的首要焦点,不过也因为过于聚焦在高用量、大市场的观察,使FPGA的其它新应用发展被人所忽略,但这些应用却也极具意义。所以,以下本文将针对FPGA的新应用进行更多的了解与说明。
高效运算(High Performance Computing;HPC)
高效运算所指的即是军方、政府机关、学术研究单位所用的超级计算机(Supercomputer),另外部分企业内的工程、科技运算也含括在内,这类型的计算机拥有极高的运算效能,然近年来为了进一步提升系统效能,因此开始将FPGA运用于系统中。
首
先是Cray Research,该公司的超级计算机:XD1就有用上FPGA,XD1用的是Xilinx(赛灵思)公司的VIRTEX系列FPGA。XD1机内有所谓的FPGA应用程序加速模块(FPGA Application Acceleration Module),模块等于是机内的一个小型辅助运算系统,VIRTEX是模块内的主控芯片,等于是一个协同处理器(Co-Processor),只不过这个协同处理器与ASIC型式的协同处理器不同,FPGA具有可程序化的功效,因此VIRTEX是一颗可程序化的协同处理器。
运算模块内除了有FPGA的协同处理器外,处理器也必须搭配内存才能行使运算,所以FPGA会再连接4颗QDR II SRAM(极高速性的内存),然后模块一方面用HyperTransport与XD1的主处理器相连,另一方面也连往XD1的特有高速I/O界面:RapidArray。
接着,由于高效运算多是执行大量重复性的运算,例如气象预测、风洞测试等,所以可以将执行的应用程序转化成FPGA内的组态(Configuration,中国内地方面称为:配置)程序,以硬件线路方式来执行运算,如此将比过往用纯软件方式执行快上数倍至数十倍的效能,甚至在特定的应用运算上能达一百倍以上的效能。
更仔细而言,其实是将整个应用程序中重复性最高、且最经常呼用(Call,呼叫使用,中国内地方面称为:调用)的函式库(Library,中国内地方面称为:库)进行转化,改以FPGA的硬件线路执行,如此就能够以最小的转化心力获得最大的加速效果。
Cray如此,与Cray同为高效运算市场的另一家业者:SGI(视算科技)也实行相同的作法,SGI提出所谓的RASC(Reconfigurable Application Specific Computing;RASC),中文可称为:可组态化应用程序性运算,RASC也是以模块方式让原有的超级计算机能获得加速效果。
SGI的作法与Cray有部分相同也有部分不同,Cray是将模块设置在原有超级计算机的机内,而SGI则是运用既有超级计算机机箱的上部来加搭加速模块,不过就功效机制而言两者异曲同工,此外两者都使用Xilinx的VIRTEX系列FPGA,但是内存与I/O部分两家也实行不同的设计,Cray是使用QDR II SRAM,SGI则是可实行QDR SRAM,或者也可用DDR2 SDRAM,前者容量少(80MB)但速度快,后者容量大(20GB)而速度慢,提供两种选择的原因是可依据不同的应用程序特性来选用。
另外,高效运算业者通常有独门的机内通讯传输技术,RapidArray即是Cray的独家技术,而SGI自身也有独家的传输技术,即NUMAlink 4(已是第四代技术),所以SGI的RASC不是使用RapidArray,而是使用NUMAlink 4。
其实Cray系统内所用的FPGA模块是与DRC Computer公司技术合作而成,因此DRC Computer自身也有提供相近方案,DRC的RPU(Reconfigurable Processor Units)同样也是用FPGA来加速,一样是用Xilinx VIRTEX FPGA,但与主系统间的连接接口改成AMD Opteron处理器的接座接口,如此一般使用AMD Opteron处理器的x86服务器也可以加装RPU来提升高效运算的效能。
芯片开发时的逻辑功效验证
FPGA的另一个新应用是芯片开发时的逻辑功效验证。过去数字芯片在设计开发时,每开发至一个阶段就必须对已经完成的电路进行逻辑上、机制上的功效验证,以了解设计是否有误,关于此多是用计算机软件程序来进行逻辑推演(Simulation),不过用计算机程序来进行验证,其推演速度相当慢,所以每一项验证都要经过漫长等待才能知道结果。