超级计算背后的英雄


■ 中国科学技术大学计算机系体系结构研究室主任 安虹



可重构计算技术正逐渐成为高性能计算机系统研究中的一个新热点,它的出现使过去传统意义上的硬件和软件界限变得模糊。可重构计算的技术优势为实现高效能的通用微处理芯片提供了强大的技术支持。

近年来,可重构计算技术逐渐成为高性能计算机系统研究中的一个新热点,它的出现使过去传统意义上的硬件和软件界限变得模糊。可重构计算的技术优势为实现高效能的通用微处理芯片提供了强大的技术支持。可重构计算使硬件可“编译”,在可编程的硬件介质中提供更大的计算能力和密度,能够针对应用中固有的并行性特征动态配置芯片的体系结构和微体系结构,能在单片系统上以低的硬件复杂度开发各种类型的应用中包含的指令级并行性、数据级并行性和线程级并行性,完成各种各样新的任务,大幅度提高芯片系统的总体性能,实现片上超级计算。

在超级计算中的应用

Cray XD1

2005年2月,超级计算机厂商Cray宣布了基于FPGA(现场可编程门阵列)技术实现的超级计算机Cray XD1所取得的显著成果。该系统主板采用了AMD的处理器和6块Virtex XC2VP50 FPGA芯片。FPGA将该系统的图形能力提升了1000倍。在一般情况下,XD1系统的性能提升为15到100倍。Cray超级计算机在HPC基准测试的各项指标上均表现出色。以随机数生成算法为例,Cray-XD1上的Virtex II每秒能够产生32亿个左右的随机数,相对于2.2GHz的AMD Operton,可以获得3倍的加速比。值得注意的是,如果不受写入处理器存储器的速度限制,每秒最高可获得16亿个整数。长度为65535的一维复杂FFT,在Vitex II上能获得相对于2.2G的Operton 5倍的加速比,如果使用更好的压缩数据包,加速比可以达到10倍以上。

SGI Alitix 4700超级服务器

SGI Altix 4700刀片系统是SGI近期推出的基于英特尔安腾2处理器的Altix 4700高效能服务器。它由共享内存的NUMAlink 系统互连、多个通用计算节点、对等挂接的通用I/O、图形/可视化部件以及可重构专用计算(RASC)部件等构成。其中,NUMAlink结构可以简化软件开发,实现工作负载管理和系统管理。它在一个Linux实例下最高可支持512个处理器,可对60TB的全局内存寻址,这为业界的集群应用带来了超高的带宽和延迟性能。Altix系统基于64位的英特尔安腾2处理器,处理器总线支持每秒6.4GB带宽。SGI Altix 4700服务器代表了一个通用的用于任意规模的共享或分布内存应用的解决方案。这个系统能够为可重构处理提供可伸缩解决方案。通过将它与全局共享存储器结构紧密耦合,使得系统中的其他处理部件也可以使用可重构计算。

通过Altix4000平台,SGI对多范式计算的预见成为现实。其中的关键部分是SGI的可重配置专用计算(RASC)技术,它使用户能够为数据密集型应用提供超强的性能、可伸缩性和带宽,这对于国防和情报、生物信息学、医疗图像、传媒、勘探和其他数据相关产业来说是非常重要的。

SRC SRC 6/7

SRC公司的SRC 6/7是由微处理器和多适应性处理器(Multi-Adaptive Processor,MAP)耦合而成,两种处理器对于共享存储是对等的。用MAP处理器可生成并行和流水计算逻辑。一个H系列的MAP性能相当于16个AMD Opteron处理器。

NCSA ISL的实验结果证实SRC 平台具有良好的性能优势。以SRC-6E为实验平台,其中包含两个微处理器板和一个MAP处理器板,MAP板上包含两个Xilinx Virtex II XC2V 6000TM FPGA,微处理器板通过具有800MB/s数据传输速度的SNAP卡与MAP连接,用做对比的基准平台是基于奔腾4的PC平台,2.4GHz CPU,512M RAM和512M Cache。对于输入输出数据密集型的应用 IDEA加密应用在SRC-6E的加速比相对于奔腾4平台可以达到21; 如果对IDEA进行优化,使得系统中数据传送和计算能够重叠进行,加速比可达到30; RC5加密算法的加速比达到5.7; Sobel Edge检测算法上的加速比为27; Median Filter应用的加速比可以达到409。对计算密集型应用,可重构技术就更加体现了其充分开发并行性的优势。对DES解密算法在SRC-6E平台可获得1706倍的速度提升; IDEA解密和RC5解密分别能获得294和194的加速比。对延迟关键型应用,两种ECC算法分别能获得615和33倍的加速。

可重构计算的技术优势

在过去很长一段时间里,FPGA存在计算密度低、配置时间长、封装复杂、高密度芯片的静态功耗和尺寸大等问题。大量芯片面积消耗在连线上,用在逻辑和存储器上的面积只占很小的比例,在性能上不及ASIC,在功能上不如处理器。因此,FPGA的应用在多媒体、通信等嵌入式应用场合,通过加速多个计算核心的执行来提高整个应用的性能。此外,FPGA还用于硬件系统的原型设计。随着大规模高性能可编程器件的出现,上述情形正在发生很大改观。现代FPGA中已经能嵌入复杂的ASIC模块(如乘法器甚至处理器软核)以及大量的片上存储器,I/O管脚数也得到很大程度的增加,性能不断向ASIC靠近,功能上也能满足广泛的应用需要,计算密度可达到逻辑设计的80%。


以Xilinx公司设计的Virtex-IV(该款产品由台湾UMC公司制造)为例,采用90nm工艺,500MHz频率,获得1GFlops的性能需要的功耗仅为0.05~0.32W,而奔腾4 3.4G和日本的地球模拟器分别需要16.5W和320W的。表中给出了Xilinx Virtex-IV的性能、面积、功耗和成本与奔腾4和地球模拟器使用的处理器的比较。

由表可见,可重构计算技术在芯片的性能、计算密度、功耗与成本方面具有巨大的优势。

1. 适应未来半导体技术的进步,增加芯片使用的灵活性

根据美国半导体协会制订的2003年国际半导体技术发展路线图及其2004年更新,未来15年集成电路仍将按摩尔定律持续高速发展。预测到2010年,高性能CPU芯片上可集成的晶体管数将超过20亿个(到2018年超过140亿个),片上局部时钟频率可达到15 GHz(到2018年达到53GHz)。Intel总裁Craig Barrett预测说,传统的芯片制造技术有可能支撑到5纳米的范围。半导体技术的这些进步,为微处理芯片的设计者提供了更丰富的资源(无论是晶体管的数量还是种类)来实现更高性能的芯片,从而有可能在单个芯片上创造更复杂和更灵活的系统。

但是纳米工艺也为芯片设计带来严重的负面影响。一方面,线延迟超过门延迟,片上通信代价变得十分昂贵,将使其成为决定最大的有效芯片面积的关键因素。有估计说,在35纳米工艺下,一个时钟周期信号只能穿过芯片上1%的面积。这就要求单个处理器面积不能太大,处理器内部尽可能保持通信局部性。另一方面,单个芯片上的I/O引脚数目由于受物理技术的限制不可能同晶体管数目同比例增长,使得片上计算能力的增长与片外带宽的增长不匹配。从180纳米到35纳米,晶体管数与引脚数的比率增加了45倍。这意味着尽管随着晶体管数目的增加,单个芯片上可以容纳的处理器核数目能够相应增加,但芯片之间、芯片与系统中其他部分的通信带宽却并不会同比例增加,使多个处理器核不得不共享同一条访存或通信通路。因此,未来半导体技术提供的数十亿晶体管资源并非都能够被有效地用于计算目的。利用可重构计算技术可以提供大量的轻巧处理器,通过重构既可用做计算目的也可用于服务目的,构建安全和自我优化的硬件,提供容错、性能调试和入侵检测能力。

2. 高性能

FPGA应用早期最成功的例子是Splash2系统。在一次基因组分析应用中,Splash2系统比当时的SPARC10工作站运算速度整整快了2500倍; 做灰度图像的中值滤波器,比SPARC10几乎快了140倍。这里Splash2使用了17块FPGA芯片,SPARC10工作站只有1个CPU芯片。按芯片数平均,在以上两个应用中每块FPGA芯片分别使性能提高了147倍和8倍。这一结果曾一度引起轰动,引发了学术界对可重构计算的兴趣。

FPGA另一个成功应用例子是,在一块66MHz的FPGA芯片XC2V6000上实现密钥长度为270位的椭圆曲线密码算法的点积操作只需0.36ms; 而在2个2.6GHz的Intel Xeon计算机上用优化的软件实现该算法需要196.71ms。FPGA芯片比通用处理器要快540多倍,但时钟频率却低40倍。

目前,可重构计算已经涉足到许多高性能计算的领域,如结构分析、计算流体力学、分子模拟、生物信息、计算化学、地震地质(油气勘探)、数值气象、宇宙学研究等等。许多工业应用中嵌入了FPGA ,例如电力网格、太空机器人以及计算机PCI 和I/O PAD等。技术的进步使得新的FPGA 逻辑单元的密度更高,并紧密集成了软IP核以及接口功能,使得其灵活性和适应性进一步提高。许多高性能计算机都使用了FPGA作为协处理器来加速某些特定应用。应用场合的不同,可重构系统对性能的提高程度也大不相同。一般情况下,按系统中FPGA的芯片数量平均,每块FPGA能使运算速度提高大约7~30倍。一些特殊的应用能获得更高的加速。

3. 高可靠性

一方面,可重构逻辑器件的可重构特性为错误的检测、诊断提供了方便。当可重构逻辑器件上出现错误,导致系统故障的时候,可以将可重构逻辑器件上的一部分配置为测试模式发生器,对器件上的故障区域做测试,同时还可以利用器件上的其他资源对测试结果进行分析,得到具体的错误信息。另一方面,可重构逻辑器件拥有大量的可重构资源,又为错误的掩盖、修复提供了基础。一旦将错误定位后,可以对可重构逻辑器件重新配置,避开产生错误的芯片区域,利用其周边的其他可重构资源组合替代原本在出错区域上实现的功能。

可重构计算系统的容错特性和高可靠性能够满足恶劣的工作环境对计算系统的苛刻要求,在军事、航空航天、超大规模科学计算等领域具有重要的意义。例如,在卫星上,电子元件有可能被宇宙射线损坏,而用人工维修几乎是不可能的。传统的方法是增加冗余的部件作为备份,但卫星上狭小的空间限制了备份部件的冗余量。可重构计算技术提供了一种“可进化硬件”(Evolvable Hardware,EHW)修复方案。在采用EHW 技术的芯片上,一旦系统检测到某部分电路已被宇宙射线损坏,就对芯片逻辑电路结构进行重构,重建已经损坏的元件功能,继续正常工作。这种方案用芯片内部的可重构资源冗余代替系统级芯片的冗余,通过软件的方法在片上运行程序来修复芯片,不必替换整个芯片,使得单个芯片的寿命大大提高,降低了整个系统的成本。

4. 低能耗

在传统的处理器计算模式中,大量的能量耗费在指令的取指、译码过程中。在可重构计算系统中,能耗最高的计算核心部分可以转移到可重构硬件上用优化的逻辑电路执行,从而减轻了通用处理器的负担,减少了相应的能耗。最近的研究表明,将关键的软件循环移到可重构硬件上执行,在平均加速3到7倍的同时,平均节省35%到70%的能耗。

当应用在可重构硬件上执行时,还可以利用可重构器件的特性调整计算来达到减少系统能耗的目的。例如,在现有的商用可重构芯片上同时存在着多个时钟域,不同的时钟域可以具有各自的时钟频率。可重构逻辑器件可以通过提高芯片上用于执行应用的那部分资源的时钟频率来提高性能,同时降低其他闲置部分的时钟频率从而降低能耗,甚至可以利用门控时钟将芯片上没在执行计算任务的部分断电,进一步降低整个系统的能耗。

5. 低成本

随着芯片制造逐步向纳米工艺逼近,FPGA的优势越来越明显,尤其是通过重构多个软核,可以在单片上实现多个指令集的处理器。根据现场计算任务的划分,实时实现不同的处理器功能,达到一次芯片设计,多个功能实现,从而大幅度降低芯片设计和制造的NRE(Non-Recurring Expenses ,一次性工程费用)成本。通过广阔的市场分摊成本,获得总体上的性能/价格优势,同时将软件实现(通用处理器)的灵活性和硬件实现(ASIC)的高性能优点合二为一。而ASIC的市场领域风险则越来越大,NRE成本越来越高。NRE成本既包括体系结构设计成本(如系统和处理器设计、硬件/软件划分、逻辑综合、设计验证和后期系统集成),也包括物理设计成本(如版图规划、布局布线、线路设计、版图设计等),还包括掩膜成本(纳米工艺一般需要三十多块掩膜版)等。

随着FPGA技术的日益成熟和完善,以及集成电路设计工具的改进,可实时改变逻辑电路结构的FPGA芯片设计方法,很可能逐渐替代完全固定逻辑和硬接线模式的ASIC芯片设计方法。目前,FPGA芯片已显现出比通用微处理器芯片更快的发展势头。

链接一:可重构计算是什么

所谓可重构计算(Reconfigurable Computing)是指在软件的控制下,利用系统中的可重用资源,根据应用的需要重新构造一个新的计算平台,达到接近专用硬件设计的高性能。具有可重构计算特征的系统称为可重构计算系统。可重构计算的本质是利用可编程器件多次重新配置逻辑单元的功能和互连的特性,使系统兼具灵活性、高性能、高可靠、低能耗、低成本、易于升级等多种优良特性。其主要技术基础是现场可编程门阵列(Field Programmable Gate Arrays,FPGA)技术。在可重构计算系统中,硬件的结构配置信息可以像软件程序一样被动态调用或修改,这样既保留了用ASIC方法(硬件方法)实现计算的性能,又具有用处理器方法(软件方法)实现计算的灵活性。换句话说,可重构计算把硬件软件化,使硬件可以像软件一样被编程修改和重用。可重用资源是可重构计算的物质基础。FPGA可重用资源的基本单位是可编程的逻辑块和可编程的连线资源,根据硬件配置文件中的编程信息,可以改变逻辑块的功能和连线的互连方式,从而改变计算系统的硬件功能。


链接二:可重构计算系统结构

为了同时获得灵活和高效的计算能力,目前的可重构计算系统一般都由可重构硬件和微处理器“耦合”构成。微处理器用来配置可重构硬件、分配输入输出端口、完成那些可重构硬件难以有效执行的计算任务,如变长循环、分支控制、存储器读写等等。可重构硬件则用于加速计算的核心部分。可重构硬件的设计重点主要是逻辑块(Logic Blocks)和互连资源(Routing Resources)。设计的过程就是对系统的性能和灵活性进行折衷的过程。通常,可重构硬件与微处理器耦合的方式有以下四种,如图2a所示。

■ 方式一: 可重构硬件用做主处理器内部的可重构的逻辑功能部件(FU: Functional Units)。

■ 方式二: 可重构硬件用做协处理器(Coprocessor)。

■ 方式三: 可重构硬件处于输入输出接口与内存缓存器之间,作为一个附加的处理部件(Attached Processing Unit)。

■ 方式四: 可重构硬件是CPU外部单独的处理部件(Stand-alone Processing Unit),这是四种互连方式中耦合最松的一种。

此外,可重构计算系统还可通过将处理器嵌入到可重构硬件中“融合”构成,其中的处理器可以是硬核,也可以是用可重构硬件本身实现的软核。(图2b)。


(计算机世界报 04期 B17、B18)