论文部分内容阅读
动态二进制翻译系统中,动态优化技术能根据程序运行时的行为实时地调整代码优化策略,提高程序性能。在传统的系统设计中,代码的优化和代码的执行在同一个进程中分时进行,因此代码优化过程会产生一定的时间开销。一个动态优化方案是否被实施取决于它带来的好处是否超过了其引入的时间开销,这限制了一些深度优化的进行。
受到制造工艺、设计复杂度和功耗等因素的限制,单核处理器的性能达到了实际极限,多处理器、多核等并行体系结构已经成为了主流。多进程/多线程编程技术的发展以及操作系统等的支持,使得多进程/多线程能够并行地在多核上执行。本文以此为出发点,在动态二进制翻译系统中提出了一个基于辅助进程的优化进程框架:我们在程序运行时创建一个新的优化进程,在该进程中以函数为单位进行翻译、优化,并将生成的本地码放在共享存储区中,以便主进程(后文称之为执行进程)读取和执行。这样使代码优化过程和代码执行过程并行地执行,因此隐藏了优化过程引入的时间开销。上述基于辅助进程的优化和执行框架使得一些深度但耗时的优化成为了可能,提高了本地码质量和执行性能。为了验证上述优化进程框架的可用性,我们在该框架下实现并测试了基于动态剖析和异常机制的非对齐访存优化。
本文的贡献主要有以下两个方面:
1.设计并实现了优化进程框架,对其中的关键技术如通信机制、优化进程加载源二进制代码、本地码链接、优化进程退出机制进行了研究。同时,本文将动态剖析和异常机制相结合处理非对齐的优化方法应用到了优化进程框架中,验证了该优化框架的可用性,并取得了一定的性能提升。
2.探讨了在优化进程中的翻译策略对优化进程框架性能的影响。探讨了“按照代码的地址顺序进行翻译”和“最近执行的代码最先翻译”两种翻译顺序对系统性能的影响。相对于以基本块为单位的翻译执行方法,以函数为单位的方法减少了翻译分支指令时生成的本地码指令数量,改善了系统的性能。