论文部分内容阅读
异构平台系统虚拟机技术是解决“ISA壁垒”问题的重要手段,对于促进体系结构创新和新兴处理器的推广具有重要意义。受ISA间差异影响,异构平台系统虚拟机在运行时存在较大的性能损耗,因此各种优化技术是本领域的研究重点。本文在深入研究相关工作的基础上,提出了若干异构平台系统虚拟机优化技术,并在自主设计的原型系统ARCH-BRIDGE之上对这些优化技术进行了验证,有效地提升了异构平台系统虚拟机的运行效率。 本研究主要内容包括:⑴针对异构平台系统虚拟机访存开销过大的问题,提出了一种面向 x86架构的虚拟机访存性能优化方法。该优化方法由段式存储管理优化和页式存储管理优化两种技术组成,前者利用x86操作系统多采用平面模式内存管理方式的特性,去除不必要的线性地址计算和段边界检查操作;后者利用x86访存指令中存在较多公共寻址方式的特性,识别基本块中采用公共寻址方式的一组x86指令及其访存位移量,动态计算该组指令访存使用的宿主基地址,在确保所有访存操作不跨页和页面可写的情况下,优先使用基址加偏移的方式访问虚拟机内存,以合并系统虚拟机访存过程中的地址转换操作。同时,页式存储管理优化技术还可以很好地扩展到x86的堆栈操作、串操作和取指令操作。该优化方法具有很好的适用性,可大幅提高虚拟机的访存性能。⑵针对基本块翻译过程中存在较多 Load/Store冗余指令的问题,提出了一种基于Load/Store冗余消除的基本块内二进制翻译优化方法。该方法采用基于虚拟寄存器的翻译技术,将频繁使用的x86寄存器及标志位处理信息看作生命周期为基本块范围的全局虚拟寄存器并为其分配宿主寄存器,去除了冗余的Load操作;采用机器状态延迟提交技术,仅在具有较高异常发生概率时才提交对机器状态的修改,消除了不必要的Store操作。该优化方法可在不引入中间表示和确保精确异常的前提下,统一消除基本块翻译代码中由于x86寄存器模拟和标志位处理产生的Load/Store冗余指令,在维持较低翻译开销的同时,减小了翻译代码的尺寸,提升翻译代码的执行效率。⑶针对常见的以Trace为单位的翻译优化方法在应用到OS内核代码时存在更明显的早期退出和代码重复等问题,提出了一种基于热例程的OS内核代码区域翻译优化方法。该方法以频繁执行的热例程作为优化单位,采用动态剖析技术识别热例程的入口,沿翻译块链发现热例程的代码区域,并采用基于扩展基本块的优化算法消除二进制翻译引入的块间冗余。相比基于Trace的优化方法,该方法具有优化单位发现和构造开销更小、优化单位尺寸更大、优化单位执行几率更高、不存在重复优化等优点,更适用于异构平台系统虚拟机中OS内核代码区域的优化。⑷针对异构平台系统虚拟机中虚拟x86保护机制存在很高开销的问题,提出了一种基于协同设计的x86保护机制优化方法。该方法利用x86保护检查大多可以正常通过的特性,通过在宿主处理器硬件中加入保护缓存来保存以往的保护检查结果,通过增加自定义指令的方式向异构平台系统虚拟机软件提供接口来进行保护缓存管理工作,以软硬件协同的方式虚拟x86保护机制。利用硬件提供的支持,软件中的保护检查操作得以简化,降低了虚拟x86保护机制的开销,提升了频繁进行系统调用、频繁产生页面异常或I/O密集型应用的效率。⑸给出了可虚拟x86ISA的、支持申威、Alpha、OpenRISC等多种宿主平台的异构平台系统虚拟机原型ARCH-BRIDGE的框架及其处理器虚拟化、内存虚拟化和I/O虚拟化三个子系统的内部设计,描述了其中的代码缓存、异常处理、自修改代码支持、翻译块链等关键技术的实现要点,并对应用各种优化技术后的系统虚拟机效率进行了评测。相比ARCH-BRIDGE的早期实现和移植到申威平台的QEMU而言,综合采用各种优化措施后的ARCH-BRIDGE在运行SPEC CPUINT2006和NBENCH测试集的性能上均有显著提升,验证了本文提出的各种优化措施的有效性。