论文部分内容阅读
现代编译器使用大量的优化来改善程序的性能,而某个特定的优化效果则主要依赖于对程序的静态分析,而这通常都是基于硬件架构的机器模型进行的,但是,当前处理器的硬件架构越来越复杂,编译器很难做到精确的分析,而且缺乏很好的跨平台移植性。尽管对于高层循环变换的优化可以很好的改善性能,但编译器无法知道应用程序运行时的上下文信息,通常很难生成适用于所有运行时环境的高效代码。
通常,某个单一的代码版本也许可以在某个、甚至某些上下文环境中达到比较好的性能,但是它缺乏对所有上下文环境的适应性,不能保证对所有的运行时都有好的性能。这使得我们迫切需要生成能够适应运行时上下文环境的代码的能力。因而,实现一个自适应能力比较强的多版本的方法,让程序运行时选择最适应上下文的版本就显得尤为重要。
本文通过迭代编译等技术,在程序优化空间里进行搜索,产生一些程序版本,然后利用多种手段进行性能评估,再从中选择少数版本。之后,抽象出能够代表程序运行时信息的属性,利用机器学习和数据挖掘的方法,综合比较多种产生策略和学习方法来产生运行时的决策机制,根据程序的运行时信息进行决策,选择最适合运行时上下文信息的版本,以期提高程序的性能。本文开发了一个通用的、利用运行时版本映射机制来提高程序性能的框架,不同于以往专门针对某一应用的方法,更具有普遍性。本文通过在AMD X86-64平台上的试验,主要结果显示运行时多版本的优化方法可以有效提高程序性能。