论文部分内容阅读
随着计算机系统的发展,新的硬件平台不断推出,在推动计算机系统性能不断提高的同时,也使得软件兼容性问题日益突出。软件兼容性问题产生的根源在于,针对一种体系结构的处理器(如x86体系结构处理器)编译出来的二进制可执行文件,无法直接在另一种体系结构处理器(如MIPS体系结构处理器)上运行。当前,软件兼容性问题已经影响到底层硬件设计,上层软件开发以及终端用户体验等计算机技术的各个层面。二进制翻译是一种翻译执行二进制程序的技术,能够在一种处理器上直接翻译执行其他体系结构处理器的二进制程序,可以在可控的人力投入范围内解决软件兼容性问题。二进制翻译可以理解为一种特殊的编译技术。传统编译器的前端是高级语言,后端生成针对某种体系结构处理器的可执行指令,而二进制翻译器的前端是某种处理器的二进制代码,后端生成可在另一种体系结构处理器上执行的指令。近些年,随着云计算的兴起和计算机体系结构的发展,二进制系统的应用范围日益广泛。然而,在实际的应用过程中,存在如下几个制约二进制翻译系统发展的技术难题:1)执行过程引入过多额外工作负载;2)翻译后指令质量不高导致执行性能降低;3)目标体系结构与宿主体系结构差异导致性能下降;4)对与操作系统内核交互的应用软件支持不够完善。围绕上述几个问题,本文以内核中的二进制翻译系统的设计和实现为中心,从性能和功能两个方面入手,一方面研究如何利用内核和底层硬件特性对系统进行深度优化,另一方面利用内核的特性对传统二进制翻译系统的功能进行扩展,使之支持新的执行模式。本文主要的研究内容和创新点可概括为以下几点:1)设计并实现了内核级动态二进制翻译系统。该系统具有不同于传统动态二进制翻译系统的新执行模式,其目标程序的执行环境和与操作系统的交互方式都与用户态二进制翻译系统有显著不同。同时,内核态的特殊性给二进制翻译系统的性能优化带来了新的突破点。2)提出了软硬结合的二进制翻译系统指令管理与查找策略。该策略通过加速单次指令查找速度提升系统整体性能。与传统的利用纯软件技巧减少指令查找次数的优化方法相比,充分利用了硬件的性能优势,优化效果较为明显,进一步优化的潜力也较大。3)设计了一种新的应用软件内核驻留模块翻译执行模式。传统的用户态二进制翻译系统只能通过翻译执行整个操作系统的方式来实现内核模块的跨平台运行,而本文提出的内核级二进制翻译系统设计了专门的执行模式,能够直接翻译执行内核模块。由于减少了翻译执行的指令数量,该模式显著提高了系统的执行效率。4)设计了新的硬件设备模拟方式。该方式利用内核态程序能直接操纵底层硬件设备的特性,将传统的纯软件模拟硬件设备的方式升级为使用实际的硬件设备模拟目标硬件。这种模拟方式能够将软件的工作量减少到最低的程度。5)设计了面向龙芯计算平台的动态二进制翻译系统翻译规则优化策略。该策略利用动态二进制翻译系统执行过程中获得的目标程序动态信息,统计并分析了动态二进制翻译系统后端指令执行规律,在这一基础上,利用龙芯CPU扩展指令集进行了高频指令的翻译规则优化。这种优化策略显著减少了翻译后指令的数量,从而提高了系统的整体性能。本文所有研究工作己实际应用于龙芯动态二进制翻译系统,显著提升了龙芯计算平台运行Windows操作系统和X86应用程序的性能,支持了国产CPU的发展和市场化。