论文部分内容阅读
随着操作系统和计算机体系结构的快速发展,计算机基础平台出现了多样化的趋势,不同平台间的应用程序不能无缝迁移成为了制约基础平台发展的主要问题,应用程序跨平台的支持变得越来越重要。Java语言是平台无关的,是实现应用程序跨平台支持的重要途径,Java程序不需要移植就可以运行在多样化平台上,因此Java虚拟机对于以龙芯为代表的国产高性能处理器丰富软件环境具有重要的现实意义。
Java程序的运行需要Java虚拟机的支持,但目前多数的Java虚拟机还存在效率较低的情况,目前基于纯软件和软硬件协同设计方法具有效率和硬件设计、验证复杂度等多方面的弊端,严重制约着Java技术的发展。为了研究上述问题,提高Java虚拟机的性能,促进应用软件的跨平台融合,本文在现有平台的基础上,实现了一个简洁高效的Java虚拟机,并对该Java虚拟机的各组成部分进行了系统的优化。
本文的主要贡献如下:
1、以JavaHotSpot虚拟机为基础,实现了基于龙芯国产高性能处理器的Java虚拟机系统。本文以JavaHotSpot虚拟机为基础,修改HotSpot虚拟机中的类装载子系统以及运行时环境等,使这些环境能够符合龙芯处理器的结构设计,从而能够在龙芯硬件平台上稳定运行,并根据龙芯处理器的硬件结构,对HotSpot虚拟机做了初步优化。在龙芯处理器硬件平台上,以HotSpot为基础设计的Java虚拟机可以稳定运行,并且性能达到了较高水平,为本文提供了良好的研究平台。
2、通过在CPU中增加硬件CAM查找表,提出了一种软硬件协同设计的混合的虚方法调用机制,有效地解决了同一方法调用点频繁调用多种不同类型方法的问题。实验表明,采用本方法,virtualtest测试程序虚方法调用点的类型比较命中率从13.3%升高到了76.4%,性能有了16.2%的提升;SPECjvm98性能平均提升6.4%。
3、通过在CPU中添加有界访存和128位访存指令,提出了一种软硬件结合的访存优化方法,有效地降低了数组越界检查的开销,提高了内存拷贝的效率,优化了Java程序的整体性能。使用有界访存指令,科学计算类测试SciMark2.0获得了27%的性能提升,通用测试SPECjvm2008获得了1.5%的性能提升;使用128位访存指令,SPECjvm2008性能平均提升5.9%。
4、通过在CPU中增加硬件cache锁机制,提出了一种软硬件协同设计的即时编译方法。实验表明,生成代码执行时的cache失效次数降低了6.9%,测试SPECjvm2008中程序最高获得了17.9%的性能提升,平均性能提升4.2%。
本文工作应用于我国首款四核通用处理器龙芯3号芯片中,有效地解决了应用软件的跨平台支持问题,对龙芯平台上产品化Java虚拟机的构建具有重要意义。