论文部分内容阅读
传统的计算机软件与下层的机器平台有着强烈的依赖关系,针对一个机器平台编译的程序不能运行在其他平台上。这影响了软件的可移植性及可移动性;也使机器平台的进一步发展受制于大量业已存在的软件,为了保证向前兼容性不能在软硬件接口上进行革新。虚拟机作为软硬件之间的中间层解除了两者之间的耦合关系,使软件的二进制代码不再直接运行在物理机器之上。二进制翻译(Binary Translation)是实现高性能虚拟机的关键技术,它对源机器的二进制机器代码进行转换后使其运行在目标机器上。本文研究如何利用动态二进制翻译技术构造进程虚拟机,使用户级程序脱离操作系统与指令集体系结构的限制,运行在不同的目标平台上。在对二进制翻译与相关技术进行了综述和对比之后,文章描述了动态二进制翻译基础平台CrossBit,该原型系统实现了将SimpleScalar程序运行在x86物理机器上,即在x86平台上建立了SimpleScalar的虚拟机器。CrossBit的设计目标是可重定向和可扩展。实现可重定向的关键在于中间指令集VInst,一种低层次的虚拟精简机器指令系统,它有效地分离了源机器与目标机器,减少整个系统中与机器相关的部分。CrossBit的设计同时也具有良好的模块划分与接口定义,很容易在其基础上进行扩展和优化,适合于进一步进行相关技术的科研与开发。本文探讨了CrossBit的系统结构,尤其是中间指令VInst的设计思路,分析了CrossBit各个关键模块的实现方案,包括源机器内存映像的加载、中间指令块的构造与优化、目标代码的生成等。最后用实验数据说明该系统的运行效率高于传统的软件解释技术。