论文部分内容阅读
随着半导体技术的发展,基于时间-空间多维计算方式的可重构计算体系结构,突破了冯.诺依曼结构的局限性,兼具专用集成电路芯片ASIC高效性与通用处理器灵活性的可重构计算在高性能计算、数字信号处理、网络信息安全等重要领域中被广泛应用,在商业上和技术上存在的潜在价值逐渐被人们重视,成为另一种主流计算方式。对于通用计算领域来说,基于GPP+FPGA异构架构的可重构计算架构在能耗、存储、性能等多方面均优于传统架构的通用处理器,这使得可重构计算成为未来新型计算的一个重要研究方向。由于面向通用计算领域的可重构计算相关研究均处于起步阶段,虽然已经取得了很多研究成果,但仍存在很多问题亟需深入研究。影响可重构计算系统实际推广效果的一个重要因素是相关软件生态系统不成熟,同时不受半导体制造工艺和相关硬件技术的限制,使得面向可重构计算系统的可重构编译器相关技术成为目前世界范围内的研究重点与热点。通过对可重构计算系统实现通用计算领域中应用程序硬件加速的过程进行分析,改善可重构编译器实现应用程序中循环结构到可重构计算系统平台并行流水硬件加速单元的自动映射技术成为当前该领域关注的课题。在前人工作的基础上,本文主要针对循环程序中的运算单元、控制单元、存储单元三个主要功能模块的自动映射及优化技术展开深入研究,具体研究内容如下:(1)在现有可重构编译器实现循环程序到流水执行的运算单元自动映射过程中,往往采用流水线直接划分方法,没有考虑基本运算指令在FPGA上执行时真实的硬件延时特性,导致流水线划分结果不优。针对这种情况,本文设计了一种基于硬件延时特性的流水线自动划分算法。结合循环程序在FPGA上运行时基本运算指令的硬件延时特性,建立基本指令硬件延时特征库,并以基本运算指令延时为权值,进行流水线合并和优化,实现流水线的自动划分。实验结果表明,该算法能够有效降低流水线划分段数,从而减少了因流水线划分所导致的硬件资源开销,同时降低了运算单元单次迭代执行时的时钟周期个数。(2)在现有可重构编译器中,循环程序流水执行时迭代间启动间距均采用制导语句指令方式控制,但是该方式只能生成固定的迭代间启动间距信息,不能充分提高循环程序流水执行性能,同时限制了可重构编译器的自动化水平。针对该问题,本文设计了一种循环流水迭代间启动间距自动分析及优化方法。通过建立循环流水迭代间启动间距信息模型,采用循环流水迭代间非固定启动间距控制策略,完成循环流水迭代间启动间距的自动分析,同时采用流水线调度技术对迭代间启动间距进行优化。实验结果表明,本文所设计的循环流水迭代间非固定启动间距控制策略,能够有效减少循环程序流水执行时迭代间等待延时时间,同时采用自动分析算法能够有效提高可重构编译器的自动化水平。(3)在可重构计算系统中目前已经存在很多并行存储结构的研究成果,为了提高数据访问的并行性和重用性,往往采用空间换时间的策略,但是,在资源开销与性能方面均有提高的空间。针对这种情况,本文设计了一种参数化并行存储结构自动映射方法。针对类仿射型数组下标应用,设计一种参数化并行存储体系结构,通过自动生成算法构建循环程序的访存数据依赖图,并进行并行存储结构模板的参数计算,在可重构编译器中实现并行存储体系结构的自动映射生成。实验结果表明,该存储体系结构能够充分挖掘循环中的数据并行性和重用性,与现有方案相比,能够在占用较少硬件资源的情况下,提升循环程序流水执行的性能。最后,本文结合上述研究内容,分别将基于硬件延时特性的流水线自动划分算法、循环流水迭代间启动间距自动分析及优化方法、参数化并行存储结构自动映射方法等技术应用在循环程序运算单元、控制单元、存储单元的自动生成过程中,构建一种面向可重构编译器的循环流水自动映射框架。实验结果表明,本文方法在提高可重构编译器自动化水平的同时,能够有效提高循环程序在可重构计算系统中流水执行的性能,具有一定的可行性。