论文部分内容阅读
二进制翻译技术是实现软件跨平台移植和硬件仿真的核心技术,采用二进制翻译技术能使不同处理器体系架构的可执行目标文件能够跨硬件平台以及跨操作系统执行,同时还能实现硬件逻辑的验证,系统软件的调试等。动态二进制翻译技术是目前最热门的二进制翻译技术。它采用边翻译边执行的策略实现对目标架构的指令向本地架构的指令转化,具有实时翻译、迅速响应、多源多目标等特性。然而,动态二进制翻译技术还处于不断发展的阶段,有许多尚待完善之处,例如,将动态二进制翻译技术与硬件技术结合,以加速仿真器的执行;引入新型的优化算法来提高代码翻译的质量等。如何实现快速翻译和优化一直是动态二进制翻译技术的研究热点。QEMU是一个典型的动态二进制翻译系统,它能实现对目标架构指令的实时翻译和执行,并具有多源多目标、快速翻译、支持自引用/自修改代码等特性。然而,较之于快速翻译,在其生成的主机代码中,有许多不必要的内存存取操作以及寄存器移动操作,这些指令的执行将导致极大的开销;另外,QEMU采用串行化的方式来实现目标指令翻译、优化和执行,这种方式将造成许多优化无法进行,这是由于优化操作需要进行耗时的分析,造成极大的优化开销,常常得不偿失。文章对QEMU的TCG翻译引擎进行了详细研究,并在此基础上提出了一种热点代码探测与动态优化模型:结合处理器多核心以及多线程技术,通过代码插装及NET算法实现QEMU的热点代码探测,将探测到的热点代码块进行合并,生成一个超级块,并对超级块进行深度优化,以产生精简的主机代码。文章采用多线程技术,让合并和优化例程在不同的线程中执行,这使得核心仿真线程不会考虑优化算法带来的开销。多个线程同时在不同的处理器核心中并行执行,使得原始QEMU的串行化执行转换为并行化执行,有效地提升处理器的利用率,从而改进QEMU的性能。此外,文章还提出一种新颖的优化方法——委托机制,该机制能够有效消除代码中存在的内存加载操作以及寄存器移动操作,以提升翻译后代码的质量,从而达到代码优化的目的。以QEMU-ARM仿真平台进行测试,实现结果表明,该模型能够有效提升QEMU的平均执行性能约10%。