论文部分内容阅读
分片式处理器体系结构(TPA)将计算、存储和互连资源组织成片式的基本结构单元,并将大量的片式单元由高效能、可扩展的片上网络连接起来。为了有效利用TPA丰富的片上资源,高度暴露程序并行性,指令集体系结构(ISA)的设计是首要问题,与ISA配合的编译技术也至关重要。数据流模型和超块技术的结合为二者的协同的设计提供了一个较理想的解决方案。编译器根据一定的选择标准将某些执行路径上的基本块集合成规模更大的多指令块,有利于接下来的全局优化和指令调度,同时提高块内的指令级并行性。但是,如果编译器一味保守的按照程序的串行顺序组织超块,使得超块间和超块内部受限于数据依赖,就会削弱整个程序运行时的潜在数据级并行性和线程级并行性,不利于发挥分片式多核结构的优势。本文,提出了一种称为“超块内多任务”的超块分裂重组技术来模拟TPA结构上多线程运行的效果,进一步挖掘运行串行单线程程序时的指令级并行性。本文的主要研究工作和成果包括:
(1)提出了一种“超块内多任务”的方法,并给出其对串行程序性能提升的理论依据。这种方法通过从多个任务中分别抽取任务片段来组织超块,从而提高超块内部指令级并行性。本文验证了这种方法的可行性和有效性,实验选用的三个程序获得了平均超过两倍的性能提升。
(2)提出了一种“跨层循环展开”的编译优化技术。这种技术是“超块内多任务”在编译器前端的一种实现方法。基本思想是,在保证程序正确性的前提下,将循环的最外层的各次迭代在其内层循环中的某一层中展开指定次数,从而使原本放置在不同超块中属于不同外层迭代的指令合并到同一个超块中,达到了“超块内多任务”的目的。此外,本文还采用了一种保守的依赖性检测方法来使编译器自动判断程序中可以进行跨层循环展开的循环。实验结果表明,数十个应用程序经结合了“跨层循环展开”技术的编译器编译后,运行在TRIPS和TFlex处理器上均能获得接近两倍的平均性能提升。