论文部分内容阅读
指令调度是一种指令级并行技术。它既是一种微体系结构技术,也是一种编译技术。对于后者,指令调度指的是在保持程序语义的前提下通过重新排列指令的顺序来提高流水的或多发射处理机的指令级并行度。随着微体系结构和微电子技术的发展,现代处理机所包含的硬件资源越来越丰富。指令调度只有跨越基本块的边界才能够充分地发挥目标处理机的指令级并行的潜力。本文所研究的技术就是全局调度的一种,即无环的全局指令调度。本文的贡献包括以下几个方面: 1.在D.Bernstein的面向超标量目标机的全局调度算法基础上,提出了面向IA-64体系结构的全局调度框架。 2.在D.Bernstein的全局指令调度算法框架上提出了层次化区域上全局调度框架。传统的全局调度的区域是扁平的。扁平调度区域有许多缺点。一方面,由于调度器对调度的形状有许多特定的要求,因而常常导致区域偏小。另一方面,在控制流比较简单的情况下,扁平调度又有可能过大,因而导致过大的编译时空开销。层次化区域不存在上述缺点。因此,应用层次化区域到D.Bernstein的全局调度中是很有意义的。 3.在D.Bernstein的全局调度算法框架上集成P-ready调度技术。 4.改进了D.Bernstein的全局调度算法的启发性方法。提出了新的优先级函数来衡量指令优先级。 克服或减弱了该算法存在的以下3方面缺点:(1)偏袒控制等价调度从而抑制了指令投机。(2)过分高估指令复制的代价从而导致失去一些优化机会。(3)在指令的优先级的评估机制中,DelaySum()函数比DepHeight()重要从而不必要地延长了关键路径的长度。 5.提出了生成树调度算法,包括调度框架和启发性方法两个方面。传统的基于非线性控制流图的全局无环指令调度算法在评估指令的优先级别局限于基本块。而生成树调度则能够在整个控制流的最大生成树上评估指令的优先级,因而能够更加精确地评估指令的优先级,从而提高调度质量。 6.上述技术均在IA-64开放源码编译器ORC中实现。实验结果验证了这些技术的有效性,达到了先进水平的性能加速比。