论文部分内容阅读
近年来,二进制翻译技术已成为一种用软件方法实现代码移植的重要手段。由于二进制翻译及其相关优化技术的研究在代码移植、虚拟机、网络应用、计算机安全和硬件开发等方面都具有重要意义,已经成为现代计算机研究的热点之一。二进制翻译技术通常分为解释执行、动态二进制翻译和静态二进制翻译三种。解释执行一次翻译一条指令并立即执行,并不保存翻译结果;静态二进制翻译则先对二进制指令进行静态翻译、分析,最后生成经过优化处理的本地代码;动态二进制翻译则采用边翻译边执行的策略,在执行过程中收集动态信息以便对翻译后代码块进行优化,同时保存翻译后的代码块,当代码块再次被执行时就可以直接使用缓存中的代码块,从而大大提升翻译器性能。动态二进制翻译系统中,用来缓存代码块的子系统被称为代码缓存(Translated Code Cache)。本文首先介绍了二进制翻译技术的研究现状和基本原理,然后简要介绍了QEMU平台。针对动态二进制翻译系统QEMU,研究如何为其代码缓存子系统设计一个高效的管理策略,来存放和管理已经翻译好的目标代码块。研究内容包括代码缓存空间的性能影响因素即命中时间、缺失率、缺失代价,和它的申请、分配以及组织和替换策略。文章通过针对目前动态二进制翻译系统中已有的代码缓存的替换算法的分析和对比,结合QEMU平台自身的一些特点,设计了相应的代码缓存管理策略。两种策略分别将全清空策略和FIFO策略,以及全清空策略与LRU策略相结合起来,结合了它们的优点。而且在全系统模拟的情况下,进行了实验验证,同时通过SPEC CPU2006基准测试程序进行了性能验证。实验数据表明,一种合适的代码缓存管理策略,能够使QEMU平台性能有很大提升。同时,本文提出的算法,对其他的二进制翻译器也具有重要的参考价值。