论文部分内容阅读
动态翻译技术是一种把源指令集体系结构代码翻译成目标指令集体系结构代码的即时编译和优化技术。该技术在动态二进制翻译系统、动态二进制优化系统和高级语言虚拟机中已经得到了广泛的应用。动态翻译系统优化技术的研究,在微处理器结构设计、应用程序性能提高、遗产代码移植、系统安全、网络应用、并行编程模型等方面具有重要意义,已经成为现代编译技术研究的热点之一。 软硬件协同设计是指通过软件和硬件间的功能划分和协同设计来达到提升性能、降低开销的设计方法,在面向特定应用的处理器设计中发挥着重要的作用。本文运用软硬件协同设计的方法,对动态翻译系统中不同功能模块的性能优化技术进行了研究,提出了一系列性能优化方法,并在龙芯平台上进行了实现和性能评估。本文系统化的研究包括动态翻译系统的翻译和执行模块、代码缓存管理模块和运行时服务模块的性能分析和优化。本文主要的贡献和创新点包括: 1.实现了MIPS指令集体系结构下的动态二进制插桩平台SEntre。该平台采用整体插桩的方法实现,解决了应用程序执行权限截获、代码段拷贝插桩、重定位和重定向、插桩点上下文切换等技术问题,同时具备高效性和健壮性。 2.完成了MIPS指令集体系结构下的JavaScript引擎JaegerMonkey的移植。设计和实现了该引擎中即时编译器的MIPS后端,包括设计本地代码栈帧结构、实现解释器与本地代码间上下文切换功能和移植汇编器三个方面。移植后,龙芯处理器上的JavaScript引擎性能在SunSpider测试集上平均提升了2.11倍。 3.提出了基于二进制插桩的ASIP处理器指令集仿真方法,并将其运用在在动态翻译系统的翻译和执行模块优化方面。该方法通过二进制插桩识别出源二进制中的基础指令和扩展指令,基础指令由具有相同基础指令集的宿主机来直接执行,扩展指令在宿主机上被仿真。与传统的动态二进制翻译型仿真相比,这种仿真方法完全避免了在程序中占据较大比重的基础指令的仿真开销,可以显著提升指令集仿真器的性能。 4.提出了基于cache锁机制的代码缓存访存优化方法,并将其运用在动态翻译系统的代码缓存管理模块优化方面。根据处理器提供的cache锁功能,设计了一种面向代码缓存优化的二级cache中的静态锁机制,该机制具有锁区域粒度可灵活配置,加锁解锁操作次数少、开销小的特点。使用该机制锁定代码缓存区域后,可以避免本地代码在执行过程中被替换出二级cache,显著降低其访问内存次数,从而提升了动态翻译系统整体性能。 5、提出了一种基于CAM表的动态语言快速属性访问方法,对动态翻译系统的运行时服务模块进行优化。对象属性访问是运行时服务模块的功能之一,对象属性访问的速度是决定动态语言虚拟机性能的重要因素。分析结果表明,对象自有属性访问占据属性访问的绝大部分;在特定属性访问点上,对象的类型变化不大。基于对象属性访问的上述特点,本文利用CAM表的快速查找特性,对属性访问点上自有属性的对象和属性类型映射信息进行缓存,加速了相同访问点上的后续访问,显著地提高了属性访问速度,从而提升了JavaScript引擎的整体性能。