(1)根据对集成电路面积大小的重构,当前的可重构系统可以分成两个组成部分,分别为部分重构和全部重构。
全部重构定义为:系统或者器件全部被重新配置。额外的存储区存放,被拿出来的结果,这个结果是计算出的中间结果,在新的操作开始之前,新的配置功能必须全部完成下载。当前存储配置信息一般通过给FPGA并联或者串联一个可以加载用的可擦可编程的只读存储器(EPROM)。为实现不同的硬件功能,可以通过烧入不同的源代码,并且以这样的方式可以进行多次重构。
部分重构的定义为:在尽量避免其他部分运行不受影响的情况下,重新配置可重构的器件或系统一部分。这种方法不但允许元器件的其他部分重构时候依然有效,而且还能缩短重构的时间。
(2)动、静态重构是系统实现重构计算的实现方式
l 静态重构
在中断程序执行的情况下进行转载配置文件的过程就是静态重构的过程。对可编程逻辑器件芯片,不同的工艺对应不同的配置方法。基于静态存储器SRAM的可编程逻辑器件芯片,我们可知有Altera公司的Acex系列和Flex系列都是这样的,因为在断电后,RAM中的相关的配置信息容易丢失,所以,在每次上电之前要把配置的数据加载到SRAM中。配置完成之后,复位它的寄存器,使能它的输入/输出管脚,就可实现设计者想实现的逻辑功能。而该系统中的MCU和基于FLASH的芯片一样,能够修改配置或者进行配置,在系统正常工作的电压下。但是对于FPGA中的反熔丝(anti-fuse)芯片,这是一种不可修改的、需要提前写好程序的专用编程器。在当前用途最广,每个计算任务都要包括整个器件的配置文件,这个文件要一次性全部烧入可编程逻辑器件[1]的逻辑资源上,必须在运行前就执行这样的操作,并且利用可重构逻辑器件实现计算任务的技术,这就是静态重构。系统运行开始后,在整个T内,必须使可编程逻辑器件上的配置处于静态。优化系统资源,提高系统的性能,这是静态重构的优势所在。这样使得系统算法得到了优化,系统(功耗、程序、面积)也有效的降低,执行效率也得到了提高,运算成本也有效的降低了。
l 动态重构
若是运行程序和转载配置文件的过程在同一时刻进行,这就是动态重构。动态重构通常只运用于一定结构的基于SRAM程序的FPGA,在相关逻辑控制的驱动下,系统高速状态的变换可以依靠对芯片逻辑功能的变化来完成。正是由于此特征,产生了新的设计理念。例如系统时序功能的大规模实现依靠小规模硬件逻辑资源;硬件逻辑在传统设计的空间分布,逐渐演变为器件外部特征没有变化但是内部逻辑却在时间上交替的变换,并且在时间与空间上一起组成了系统整体逻辑功能。逻辑功能的动态重构在这种芯片上,包括全局变换和局部修正。在储存全部的配置信息方面需要有相当多的存储器空间和对运行态方面可编程器件支持加载是动态重构可以应用的要求条件。动态重构配置FPGA应该在系统运行状态之前,但是在运行的状态中间,也可以根据实际需求重新对FPGA进行配置,从而产生需要的逻辑功能,实现系统的重构。因此,存储配置信息的存储器容积的大小决定了系统所能支持的配置。
根据系统重构的粒度特点,动态的全局重构和部分重构组成了系统的动态重构。
l 动态全局重构
在进行重构的时候,需重新配置整个FPGA芯片,此时芯片处于停止工作状态,并且旧的逻辑功能已经不复存在了,新的逻辑功能没有建立之前,在时间序列上,系统的逻辑功能处于断裂状,系统不能执行动态连续的功能。因此,动、静态全局重构的效果相差无几。
l 动态部既野过可编程逻辑器件上的一些资源进行重新配置可以有选择性,资源也会受到影响,因此在重新配置的过程中,芯片依旧工作。系统在创立新逻辑功能的过程中,没有被重配置部分的逻辑功能依旧正常工作,也就是说,系统的逻辑功能在时间序列上是动态的、连续的。当前,研究动态部分重构,主要以Xilinx公司的支持动态部分
[1] RC:可重构计算(ReconfigurableComputing的缩写)