论文部分内容阅读
动态优化技术作为一种针对二进制代码的优化方法,能够根据即时的运行环境对程序进行动态的调整优化,从而使得程序在具体的运行环境中得以发挥最优的性能。动态优化系统也可以在程序运行中精确的捕捉和控制运行中的各种事件,以便提供详尽的统计数据供用户使用。目前,已经有诸多基于动态优化技术的应用。比如针对跨平台进行动态翻译执行的二进制动态翻译器,针对对于单(多)处理器、内存系统、缓存等子系统的功能模拟以及性能考量的模拟器平台,以及观察和监控程序执行情况以便开展性能调试和分析的动态二进制解释器,甚至可以根据程序执行的实时环境实现动态加速执行的动态优化器等等,都是动态优化技术的具体应用。这些软件通过对程序的二进制代码进行解析和处理,获得相应的运行结果。然而这些动态优化系统遇到的共同问题便是受制于二进制代码中包含信息的有限性,系统的整体执行效率都不高。以二进制调试器以及模拟器等为例,通过这些动态优化系统的运行速度要较之程序的直接运行速度慢上十几倍甚至更多。因此,如何提高执行效率,成为当下的研究热点之一。尽管已有多种着眼于动态优化系统效率问题的相关研究,但是因为这些系统运行中缺乏程序的原始语义信息,很多高级优化方法(如针对内存的优化等)都无法展开。实际上,如果从编译角度出发,这些动态优化所缺失的信息却是容易得到的。本文正是从该角度出发,通过把编译阶段分析所得的信息以元数据的形式附着在二进制程序之中并为动态优化器所用,从而使得多种高级的或者深入的优化的开展成为可能,进而提高系统的总体性能。本文以动态优化中的两个常见应用作为实例,即在模拟器中优化选取模拟点,以及动态翻译器中利用元数据的信息展开动态优化,加速动态优化系统的运行。实验数据表明本文所提出的基于元数据的动态优化方法在这些应用中均获得了一定的效率提升。