论文部分内容阅读
可重构计算系统作为一种新的计算平台,将传统通用微处理器的可编程性同硬件电路基于空间并行的执行方式结合起来,打破了硬件和软件之间传统的划分界线。既能够提供近似于专用集成电路的执行效率,又可针对不同计算任务进行不同的优化,拥有类似于通用微处理器的灵活性。目前可重构计算系统的硬件体系结构多是采用将可重构硬件作为协处理器同一个通用微处理器核耦合在一起,二者在硬件结构上的差异导致前者只适合执行程序中计算量大、控制简单的那部分“计算密集型”代码,由后者执行剩余的控制比较复杂、计算量较少的代码。因此需要根据程序代码自身的性质,对其进行软硬件划分,确定使用可重构硬件执行的代码,以及在通用微处理器核上的代码。此外可重构硬件只能使用硬件描述语言进行编程的特性也是限制可重构计算系统被广泛使用的重要因素之一。为在编译过程中自动对输入的高级语言编写的源程序进行软硬件代码划分,并将其中使用可重构硬件执行的代码自动转换成HDL程序,本文从以下三个方面开展相应的研究工作:底层可重构硬件建模。为在编译过程中有效地对输入程序进行软硬件代码划分,必须了解底层计算平台的硬件结构,因此需要在研究现有模型及其建模方法的基础上,提出一个合适的建模方法,能够清晰、准确地描述可重构硬件的硬件结构和特征参数,进而向编译器提供软硬件代码划分所需要的各种参数信息。代码自动转换技术和电路图布局方法。可重构硬件采用类似于专用集成电路的硬件执行方式,为快速而准确地计算一段程序代码在可重构硬件上的执行时间,以及在片上构建相应电路所需的配置时间,提高软硬件代码划分的效果,需要使用代码自动转换技术,根据输入的源程序生成一个电路图,并使用一个布局算法将该电路图映射到可重构硬件上某个指定的区域内,进而按照一定规则计算其硬件执行时间和配置时间。由于目前可重构硬件只能使用硬件描述语言(HDL)进行编程,还需要根据电路图自动生成对应的HDL程序。软硬件代码划分技术。可重构计算系统中拥有微处理器核以及可重构硬件这两个相对独立,能够并行工作的计算部件,因此需要在研究现有划分方法的基础上,结合任务调度方法和减少配置开销技术,提出一个更为有效的软硬件代码划分技术,充分利用微处理器核与可重构硬件能够并行工作这一特性,以及程序中潜在的数据并行性,减少程序运行过程中的系统重构开销,缩短程序执行时间,提高系统性能。本文的研究工作成果及创新特色如下:1)提出一种基于资源种类和位置信息的FPGA硬件结构建模和描述方法。按照片上硬件资源的种类、位置和数量信息对FPGA的硬件体系结构进行建模,并采用一种层次化描述方法对模型进行描述。实验表明,这种建模方法是可行的。2)提出一种基于IP核的代码转换机制。在已有IP核库支持下,通过将程序数据流图中的结点按照其执行的操作替换为对IP核实例的调用,自动生成该段程序对应的电路图,在对其进行流水段划分后,自动生成相应的HDL程序。IP核的HDL代码是预先生成的,使得自动生成电路图的HDL程序变得非常简单,同时IP核内部的资源都已事先完成布局和布线,减少了编译过程中需要进行的硬件综合以及布局布线的工作量,可以减少编译过程所需时间。实验表明,该种代码转换机制能够有效降低自动生成HDL程序的难度。3)提出一种用于将电路图映射到可重构硬件上的布局算法。该算法在已有IP核库以及底层可重构硬件结构模型的支持下,在可重构硬件上一个指定的区域内,对使用基于IP核代码转换机制得到的程序电路图进行布局。同现有任务布局算相比,第一,允许任务之间通过片上资源进行数据通信;第二,能够将使用特殊资源的任务图布局到拥有特殊资源的可重构硬件上。实验结果显示,相对于现有EDA工具中的布局器,布局速度平均能够提高4个数量级,同时也直接显示出基于IP核代码转换机制的优势。4)提出一种基于链式调度的软硬件代码划分技术。通过将链式调度与代码划分结合起来,使用在编译过程中估计的程序运行时间作为评价一个划分方案好坏的标准;并在调度过程中通过配置预取,用程序中的有效计算掩盖可重构硬件的重构开销,减少程序执行时间,充分发挥系统的性能。实验结果表明,同现有划分方法相比,能够将程序执行时间平均减少20%以上。