论文部分内容阅读
随着处理器和存储器速度差距不断拉大,访存子系统日益成为发挥CPU性能的瓶颈.当发生cache miss时,尤其是最后一级cache miss,需要几十拍,甚至上百拍.处理器花费大量的时间在等待cache miss的访存指令完成.另一方面,编译器中不知道何处何时哪条访存指令发生了cache miss,保守的假定所有的访存指令都发生cache miss或者都命中.这样的保守假设很影响编译器优化效果.本论文工作针对此问题在编译器存储优化方面进行了深入研究,论文主要创新和贡献如下:1设计实现了基于编译器cache profiling技术.基于编译器的Cache profiling技术就是编译器通过插桩的库函数调用,模拟访存指令访问cache的行为,运行时收集访存指令cache miss或者命中的信息,用来指导编译器的优化.2提出了乱序执行机器上的load指令优化调度技术.我们利用cache profiling技术收集到的反馈信息,调整调度时依赖图中访存指令的延迟,使之更加准确.我们接着调整调度策略,改变频繁发生cache miss的访存指令和依赖于该访存指令的指令的优先级,达到增加指令级和存储级并行度的目的.经SPEC CPU2000Benchmark测试显示,我们的调度对于bzip2有高达4.8﹪的提升,art有4﹪的提升,整体平均提高1.5﹪.3提出了cache profiling信息指导的软件流水技术.与前人预测访存延迟的方法不同,我们引入cache profiling技术,通过动态收集到profile信息来预测访存延迟,并进行适当地调度.我们改进了CSMS算法和FLMS算法,在尽量不增大启动间隔的情况下,改变访存指令的延迟.实验表明,我们的方法可以有效的提高程序性能,对SPEC CPU2000测试程序,个别例子的性能改进高达11﹪.4提出了循环合并敏感的内联模型--循环合并敏感的优化内联模型,既考虑执行频率和函数大小,又考虑后面的优化.我们实现了考虑循环合并的内联,加入到ORC原有的内联模型巾,自适应的建立新的内联模型,并对此模型进行性能调优.实验的结果显示,我们的内联模型可以有效地提高编译器的性能,某些SPECCPU2000实例的peak性能有高达6﹪的性能提升.