可重构计算(Reconfigurable Computing,RC),简单地说,就是利用FPGA逻辑实现计算任务。有些文献把它称为自适应计算(Adaptive Computing),也有的文献把它称为FPGA定制计算(Custom Computing)。
可重构计算的概念早在20世纪60年代就已提出。在通用微处理器上也运用了这一思想,如组件就是利用多路选择器来实现功能的变化,而这些组件一般与计算结构不发生直接联系。目前,可重构计算已有较大发展,主要目标是希望通过硬件可编程,来自适应计算任务的需求,以期达到最佳性能;而且这种硬件结构的变化,能实时地适应计算任务要求的变化。
可重构计算的底层技术是FPGA编程技术,如表1所示。其中主要有两种,一种是反熔丝技术,即我们通常所说的电可擦写技术。这种技术在早期的PAL中广泛使用,但这种技术的可重构实时性太差。
表1 各种FPGA编程技术
开关类型 可编程性 易失性 工艺
Fuse 无 否 Bipolar
EPROM 有(电路外) 否 UVCMOS
EEPROM 有(电路里) 否 EECMOS
Anti-fuse 无 否 CMOS+
SRAM 有(电路里) 是 CMOS
Flash 有(电路里) 否 Flash, CMOS
另一种是基于静态存储器(SRAM)可编程原理的FPGA编程技术,其基本原理是:FPGA中各部件之间由SRAM相接,通过对SRAM编程便可实现应用的需求。这样,FPGA硬件可编程,就如同一般SRAM的可编程,如图1所示。需要特别指出的是,FPGA的可编程实现运用了静态存储器的基本原理,但实质与通常意义上的可编程是完全不一样的。
采用可重构计算技术构建的可重构系统通常由三个部分组成:主机、RPU (Reconfigurable Processing Unit)和存储系统[4],如图2所示。主机用来提供用户接口和I/O服务,编译器和其他工具也在主机当中。通常,任何商用PC和工作站都可以看作是主机。影响主机性能的最主要因素是系统的总线带宽,大量的数据将从主机传输到可重构处理器中,因而提高总线带宽是非常必要的。
RPU是一个或多个FPGA芯片组成的阵列,其中阵列的宽度要和存储系统的总线带宽匹配。因为软件根据数据流图来配置RPU,通常自顶向下的流程。大多数FPGA芯片在芯片外围提供可配置的I/O引脚,在阵列顶端输入数据和在底端输出数据称为标准配置过程。
最后,也许是最重要的部分就是存储系统。采用数据并行计算模型将影响存储系统的设计,因为RPU是流水线化的,存储系统对带宽需求非常高。
可重构计算的优点是硬件设计的实现基于软件的灵活性,并且保持了传统的基于硬件方法的执行速度。其体系结构可变的特点,很好地适应了实际应用中的多元化需求。随着深亚微米VLSI技术的不断发展,FPGA各方面的特点也促使着FPGA逐渐地取代了ASIC市场。以FPGA为先导的可重构技术,是半导体科学、材料科学、电子工程和计算机科学的前沿研究领域。