在大众已经习惯的计算模式中,处理器和专用集成电路(ASIC)一直是两大主流。伴随着应用领域特别是嵌入式环境对系统的性能、能耗、上市时间等指标需求的不断提高,传统的计算模式暴露出了种种弊端。可重构计算技术集中了处理器和专用集成电路的优势,能够提供高效灵活的计算能力,自上世纪九十年代以来越来越受到业界的重视。不过,目前对可重构计算技术的研究仍旧处于初期阶段,还有很多难题等待解决。 可重构冲击传统计算模式 面临一个应用,如何去实现它?软件设计者会使用编程语言编写一段代码,将其编译后在处理器上执行;硬件设计者则会利用原理图或者硬件描述语言进行设计,然后以专用集成电路的方式实现。处理器和专用集成电路已经成为了传统计算模式的两大主流,我们也已经习惯了这两种计算模式。但在和这两位“老朋友”打交道的时候,仍旧会时不时感觉到有很多不尽如人意的地方。 处理器(包括通用处理器和各种专用的嵌入式处理器)计算模式的特点在于它们都具有各自的指令集,通过执行指令集中的相关指令来完成计算,改写软件指令就能改变系统实现的功能,而不用去改动底层的硬件环境。但处理器的运算速度要比ASIC慢很多,这主要是因为处理器必须从存储器中读取每条指令,将其译码后再执行,因而每个独立的操作具有更高的执行开销。另外,处理器的指令集是由处理器自身体系结构决定的,没有用专门指令实现的操作只能使用已有的指令组合来处理,这也增加了执行的开销。
专用集成电路是针对某一特定应用专门设计的硬件电路。专用集成电路计算模式的特点在于用硬件来实现应用的操作。因为针对特定应用设计,所以在执行相应应用时具有很高的速度、效率和精度。但其缺陷在于开发周期太长,代价太高。而且硬件电路一旦制作好以后是不能够被随意改动的。这就意味着如果功能的需求发生了变化,就需要重新设计和重新加工新的专用集成电路芯片。哪怕只是芯片上的很小一部分线路需要修改,也要重新制作整个芯片。如果针对各种不同的应用都专门设计专用的电路芯片,就会带来高昂的成本。 由此可见,现有的主流计算模式中存在的主要问题是:处理器方式能够灵活地实现各种应用,但却在性能上有缺陷;而硬件逻辑实现性能虽然高,但灵活性却很差。为了在计算性能和实现灵活性上做一个很好的权衡,可重构计算(Reconfigurable Computing)技术浮出了水面。 技术发展现状 可重构计算的概念早在上个世纪六七十年代就有学者以不同的表述方式提出过。由于技术条件的限制,直到九十年代中期才逐渐兴起。目前比较权威的定义是“设立物理控制点定制硬件该如何工作,通过改动这些控制点使用户能够使用相同的硬件执行不同的应用”。当前已经有多个基于可重构计算技术的原型系统被开发出来,运用在自动目标识别、串匹配、数据压缩等应用领域,取得了非常好的效果。最近几年,可重构计算技术已经迈过了探索阶段,研究者们开始更深入地对可重构计算通用模型进行研究,为后续的可重构计算系统的广泛应用打好基础。
当前在研的可重构计算系统往往由一个或多个可重构逻辑器件以协处理器的方式和一个通用处理器耦合而成,如图2所示。这里的可重构逻辑器件可以是系统定制的,也可以是商业化的部件(如FPGA芯片)。对可重构逻辑器件进行的配置可以使它实现相应的功能,能够以准ASIC的计算速度对应用中的计算密集部分给予加速执行以提高整个应用的执行性能。系统中的通用处理器主要负责对可重构逻辑器件进行资源管理和任务调度。另外,应用中存在的那些不能够采用硬件逻辑实现或者采用硬件实现也不会带来很大性能收益的部分也需要在通用处理器上编程实现,例如递归操作。因为每一层递归都需要使用相同的资源,而递归的层数又往往不能预先知道,硬件无法预留够充足的资源,所以此类操作适合在通用处理器上实现。 可重构计算技术的研究对可重构逻辑器件的开发有着极强的依赖性。正是由于可重构计算系统中使用了可编程逻辑器件,才使得它能够高效灵活地实现多种应用。在研究的早期,研究者们受到可重构逻辑器件的限制,并不能开展很多卓有成效的工作。因为缺乏统一的可重构硬件平台,一些研究机构针对某些特定应用开发了自己相应的可重构逻辑器件。这些器件缺乏一致的模型,彼此间不兼容,不具有普适性。而专门的可重构逻辑器件开发带来的高昂代价也给可重构计算技术的普及设置了巨大的障碍。伴随着超大规模集成电路技术的不断进步,集成在芯片上的门电路数目可以做到“数以百万计”,这使得业界能够设计出功能强大结构复杂的可重构逻辑器件,也昭示着可重构计算技术迎来了发展的大好时机。当前的很多商业化可重构逻辑器件具备有充足的可编程逻辑资源,有的芯片上还集成了乘法器、RAM等结构,在最近的高端产品上更是集成了处理器核来增强系统的功能和性能。 当前,可重构计算技术的研究焦点在于动态可重构技术特别是运行时(run-time)可重构技术。所谓动态可重构技术,是相对于静态可重构技术而言的。静态可重构技术是指在可重构计算系统开始执行任务时,一次性将可重构逻辑器件配置为系统所需的某个或几个功能。这些配置好的功能在整个任务执行期间不会被改变。直到系统完成该任务后,可重构逻辑器件才可以被配置为其他的功能去完成别的任务。动态可重构技术与此相反,在任务执行过程中可重构逻辑器件的功能可以被随时改变。 运行时可重构技术建立在动态可重构技术的基础之上,它能够在器件上已有任务正常执行的同时对器件的空闲资源进行新的配置。运行时可重构技术可以根据应用实现中的实际需求,对可重构逻辑器件上的资源做相应的调配。它能够更充分地利用可重构逻辑器件上的资源,并且使硬件去“适应”应用的需求做调整成为可能。运行时可重构计算技术的研究还存在很多技术难点,有的已经造成了当前可重构计算技术发展的瓶颈。 技术优势和应用前景 可重构计算技术除了具有较高的性能和较大的灵活性以外,还具有很多其他优势,例如系统能耗低、可靠性高等等。这些优势使得可重构计算技术在各个应用领域特别是嵌入式应用领域有着广阔的应用前景。 在过去的研究中已经发现,很多嵌入式应用,例如多媒体应用、加/解密应用以及通信应用等都具有它们固有的执行特征。 多媒体应用具有较多的整数算术指令,这主要是因为大多数多媒体应用中执行的都是定点数据上的算术密集型信号处理操作。 加/解密应用中主要是位运算操作,而且在执行过程中极少出现分支指令,位运算操作可以通过移位操作和逻辑运算来实现。 通信应用的特征是使用大量的分支指令,这主要是由通信应用中复杂的控制流导致的,但其中较少使用到算术和移位等操作。 可以看到,这几类应用都是属于计算密集型应用,可以利用硬件加速计算核心的执行来提高整个应用的性能。应用中较少使用到浮点算术操作,这一点也正好适合利用硬件实现。在多媒体和通信应用中,大量的操作都是针对宽度为一个或多个字节的数据进行的,而在加/解密应用中主要处理的是宽度为1的位数据。针对应用中的这些差异,当前的商业化可重构逻辑器件中提供了大量的不同粒度的资源来支持不同数据宽度的计算。因此,上述在嵌入式领域中的主流应用都非常适合利用可重构计算技术实现。 可重构计算技术具有很好的低能耗特征。在传统的处理器计算模式中,大量的能耗耗费在指令的取指、译码过程中;IC模式则因为在硬件电路的设计过程中针对特定应用进行充分优化,具有较低的能耗损失。在可重构计算系统中,能耗最高的计算核心部分转移到了可重构逻辑器件上执行,减轻了通用处理器的负担,减少了相关的能耗。当应用在可重构逻辑器件上执行时,可重构逻辑器件还可以利用自己的器件特性做调整来达到减少系统能耗的目的。例如,在现有的商业化可重构逻辑器件中,芯片上同时存在着多个时钟域,不同的时钟域可以具有各自的时钟频率。可重构逻辑器件能够为芯片上用于执行应用的那部分资源提供高的时钟频率以提高性能,同时可以将其他闲置部分的时钟频率降低以降低能耗,甚至有的器件可以利用门控时钟对芯片上没有在执行计算任务的部分给予断电处理,进一步降低整个系统的能耗损失。 可重构计算技术还具有天生的容错(fault-tolerant)特性。因为可重构逻辑器件的可重构特性为错误的检测、诊断提供了方便。同时,可重构逻辑器件拥有大量的可重构逻辑资源,又为错误的掩盖、修复提供了基础。当可重构逻辑器件上出现错误,导致系统故障的时候,可以将可重构逻辑器件上的一部分配置为测试模式发生器,对器件上的某些区域做测试,同时还可以利用器件上的其他资源对测试结果进行分析,以得到具体的错误信息。一旦将错误定位后,可以采用对可重构逻辑器件重新配置的方法,避开产生错误的芯片区域,利用其周边的其他可重构逻辑资源组合替代原本在出错区域上实现的功能。可重构计算系统的高容错性和极强的可靠性满足了恶劣的工作环境对计算系统的苛刻要求,因此当前在航空航天军事等领域对可重构计算系统的需求逐渐增大,例如NASA就已经将运行时可重构计算系统的研发和应用列入了2005年的火星探测计划当中。 可重构计算技术大大缩短了产品上市时间。可重构逻辑器件在很长一段时间里主要用于进行硬件系统的原型设计。这一点在当前新的应用需求下有了进一步发展。利用可重构计算技术的原型系统在经过针对不同应用的不同配置后就成为了相应的产品可以直接投放市场,这消除了需要针对各个应用进行单独设计带来的时间开销,同时减少了设计中出现错误的概率,系统的可靠性也得到了提高。另外,当前的很多应用领域瞬息万变,各种新标准新应用层出不穷。在这种情况下,可重构计算系统能够“以不变应万变”,仍旧利用现有资源,根据实际情况及时调整系统功能以满足市场需求。 在一些关键任务执行中,很多任务要到开始前一刻才能最终确定,可重构计算系统的存在无疑为这类应用也提供了有力的支持。仍旧以NASA为例,他们在航天飞机发射前的几个小时内,才会把当前的一些重要信息配置到机上的可重构逻辑器件中。在火星车的设计中,也在大量关键部件上使用了可重构逻辑器件,以满足系统可能的变动要求。 可重构计算技术还有很多优势。例如,相对于传统的一个平台支持一个应用的做法,可重构计算系统中的同一套硬件设备可以支持多个应用,大大减轻了系统重量,这对于那些对重量有着严格要求的应用领域非常有利。比如,嵌入式领域的“穿戴计算”,还有航天领域里的卫星系统等等。 当前的可重构计算技术主要还是用于尖端技术领域中的计算平台,但随着可重构逻辑器件成本逐渐降低,运行时可重构计算技术不断完善,我们有理由相信可重构计算技术具备的种种优势会使其在更多的领域里大有作为。 面临的关键难题 前文已经提到,可重构计算技术的研究焦点是运行时可重构技术。对运行时可重构技术的研究和应用主要是为了解决在下述两种情况下可重构计算系统中存在的问题。 第一种情况是为了减少应用执行的启动时间。可重构计算系统可以先在器件上配置好应用执行的启动所必需的功能,让应用运行起来。在应用开始执行的同时再在器件的其他部分上配置出后续执行所需要的功能,而不必等待整个应用都配置完成后才开始运行,如图3所示。
第二种情况是利用有限的资源处理大规模应用。如果某个规模较大的应用在实现时所需的可重构逻辑资源超过了可重构逻辑器件可以供给的最大资源量,这时可重构计算系统会将大的应用划分为多个在执行时具有先后次序的子部分。在应用执行过程中,某个先执行的子部分完成工作后,可以在其占据的器件资源上按次序配置后续的应用子部分,以此来保证应用的正确实现,如图4所示。
运行时可重构技术研究的深入和成熟还能够促进其他相关领域的计算技术得到长足进展,例如进化硬件和系统容错技术等。但在当前,运行时可重构技术还面临着一些关键问题亟待解决: |