论文部分内容阅读
近年来,FPGA(Field Programmable Gate Array)技术飞速发展,由于其具备低功耗、可配置和可高度并行化的特点,成为计算密集型和大数据计算应用的重要加速平台。基于FPGA平台的可重构体系结构需要可重构编译系统的支持。通过对目前的可重构编译系统的研究分析发现,可重构编译系统仍存在较多不足,如对程序的运行时性能评估研究不充分、在编译过程中对硬件多版本探索不足、软硬件划分粒度单一化、面向循环程序优化的自动映射模板支持不足、编译后硬件代码的鲁棒性和指令并行性有待提高等,因此通过研究解决上述问题可进一步提高程序的编译质量。本文通过研究可重构编译器的关键技术来解决上述问题,包括编译框架的整体结构设计、程序运行时特征评估、软硬件划分粒度选取、硬件多版本分析、软硬件划分模型、并行结构的自动映射模板、IR(intermediate representation)代码的映射和优化等,具体的研究工作可分为如下几部分:(1)提出了一种面向FPGA的可重构编译器框架编译器框架核心功能基于LLVM(low level virtual machine)架构实现,并以LLVM为前端,实现输入代码的预处理和IR代码的生成;通过本文的软硬件划分模型对IR进行软硬件划分;依据划分的结果将IR代码按照软件、硬件重新封装,并生成接口辅助信息文件;然后对硬件运行的IR代码进行优化和代码映射、生成软硬件通信接口文件、利用LLVM反编译生成软件运行的代码;最后以EDK(Embedded Development Kit)和ISE(Integrated Software Environment)为后端,编译生成目标系统软硬件可运行代码。与其它编译框架的主要不同之处包括:本文设计的编译框架设置了独立功能扩展库,将编译过程中调用的功能模块独立设置,以方便编译器的升级与改进;本文的软硬件划分模型基于程序运行时特征评估、面向可变划分粒度和硬件多版本实现。实验结果表明,本文所提出的可重构编译器框架能够正确地将程序编译成软硬件协同运行系统。(2)提出了一种基于程序运行时特征和硬件多版本的软硬件划分模型结合现有软硬件划分中存在的不足,提出了本文的软硬件划分模型。依据软硬件划分工作流程,首先设计实现了程序运行时特征评估功能模块,包括:基于BP(back propagation)神经网络的软件运行时间评估模型;基于IR运算指令的代码块硬件开销相关评估算法,其中包括软硬件划分粒度选择方案、硬件多版本分析、硬件运行时间评估算法、硬件面积开销评估算法和软硬件间通信时间计算方法,硬件相关评估需要根据目标硬件平台的不同,通过编译后系统的运行反馈信息来修正评估公式的权值;最后依据程序运行时特征评估的支持、基于改进的遗传算法设计实现了本文的软硬件划分模型。实验结果表明,程序运行时特征相关评估算法均能获得较准确的评估值,可以满足软硬件划分模型的需求;与同类研究相比,基于本文设计的软硬件划分模型可产生较好的加速效果,通过修改遗传操作较好地改善了软硬件划分算法的收敛性。(3)提出了一种循环程序到脉动阵列结构的自动映射模板结合规则循环程序和脉动阵列结构的特点,提出了循环程序到脉动阵列结构的自动映射模板。模板以循环的数据依赖模型(data dependence model,DDM)为输入,首先通过自动增加临时变量来消除全局数据依赖;接下来通过时空映射函数将DDM映射到中间过渡的虚拟脉动阵列结构模型(Virtual Systolic Array Architecture Model,VSAAM);最后VSAAM被综合为可重构脉动阵列模型(Reconfigurable Systolic Array Architecture Model,RSAAM)。RSAAM即最终的脉动阵列结构模板,为可重构编译框架提供了一种硬件版本的实现方案。实验结果表明,相比于同类研究,本文的自动映射模板生成的硬件结构可产生较少的系统执行周期,相对于软件执行可获得较高的加速比,由于增加了可重构接口单元和众多的临时变量,硬件面积开销较大。(4)提出了一种IR代码映射与面向硬件的优化方案结合FPGA硬件运行的特点,提出了IR到VHDL(Very High Speed Integrated Circuit Hardware Description Language)代码的映射与优化方案。首先面向语义,设计了防止硬件访存冲突、操作数数据类型不匹配的优化方案;接着面向硬件设计了IR指令并行化的优化算法;最后实现了IR到VHDL代码的映射,并生成相应的数据读写控制逻辑。实验结果表明,本文的代码映射方案可以正确实现IR到VHDL代码的映射,在保持原有运算逻辑不变的前提下,优化的IR代码在转换为VHDL代码后,提高了硬件代码的鲁棒性和指令运行的并行性,从而提高了编译后系统的执行效率。本文所研究的各项关键技术均已应用于可重构编译器框架的功能模块中,实验结果表明,本文的研究成果较好地解决了可重构编译系统相应存在的问题,所提出的可重构编译框架能够产生较好的系统加速效果。