基于结构描述的HotSpot C2即时编译器-《中国新通信》(2022年16期).docx

  • 0
  • 0
  • 约2.37千字
  • 约 23页
  • 2023-06-13 发布于北京
  • 正版发售

基于结构描述的HotSpot C2即时编译器-《中国新通信》(2022年16期).docx

  1. 1、本文档共23页,仅提供部分内容试读,阅读完整内容需要下载文档。
  2. 2、本内容来自版权合作机构,仅供个人学习、研究之用,未经授权,严禁复制、发行、汇编、翻译或网络传播等,侵权必究。
  3. 3、因数字商品的特殊性,一经售出,不提供退换货服务、不进行额外附加服务。
龙源版权所有 基于结构描述的HotSpot C2即时编译器 作者:郑艳 来源:《中国新通信》2022年第16期 摘要:OpenJDK的开源吸引了很多想弄明白Java虚拟机如何运行的开发人员。本文基于HotSpot虚拟机源码,分析了Java虚拟机的运行机制,并进一步深入研究了服务器端C2即时编译框架,指出了HotSpot虚拟机高效运行的原因,为下一步深入优化打好基础。 关键词: Java虚拟机;HotSpot虚拟机;服务器端编译器;结构描述文件 一、引言 Java虚拟机技术提供Java标准平台的基础设施,提供对快速开发、部署关键业务的桌面和企业应用程序的解决方案。Java无处不在,而Java虚拟机正是支撑Java运行的秘密武器,它是一个在硬件平台、操作系统之上的一个庞大复杂的软件,涉及的理论和技术非常广而宽。 HotSpot虚拟机是Sun/Oracle JDK和OpenJDK的默认Java虚拟机[1],是基于Java虚拟机规范[2]的一个高效虚拟机实现,也是全世界使用最广泛、最具影响力的Java虚拟机。很多程序员默认HotSpot虚拟机等同于Java虚拟机。 二、HotSpot虚拟机 (二)执行架构 HotSpot虚拟机的执行架构示意图如图1所示[4-5]。 HotSpot虚拟机采用解释器与编译器并存的架构,解释器和编译器是相辅相成地配合工作的。解释器和编译器两者各有优势:当程序需要迅速启动和执行的时候,解释器可以省去编译的时间,立即执行;当程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获取更高的执行效率。在某些特定情况下编译模式也能够通过“逆优化”(deoptimization)退回到解释模式下继续执行。 (二)解释编译交互 同时存在解释执行和编译执行,涉及解释执行和编译执行互相转化,图2说明了解释执行和编译执行互相转换的途径[6]。 Java虚拟机中如果某个方法被编译,则下次执行同样的方法时切换为编译执行。编译执行的入口有2种情况:方法编译和核心循环编译。方法编译在下次执行前要切换方法调用的入口,改写成i2c adapter的首地址,这个adapter完成从解释执行转为编译执行的功能;同时要完成把解释执行的参数拷贝到编译执行的参数区,解释执行时,参数区直接位于栈中,对于编译执行,参数一部分位于寄存器中,一部分位于栈中,所以,移植过程中需要考虑传递参数的这种情况。核心循环编译是由循环体出发的,但编译器依然会以整个方法作为编译对象,执行的是栈上替换OSR算法,即在运行过程中直接用编译执行的方法替换解释执行的方法,而不是下次调用该方法时再做替换,OSR关键的是要复制解释执行时产生的局部变量,同步锁等。 编译执行到解释执行的也有2個入口,最普通的入口是编译执行的方法调用解释执行的方法;另一个入口叫逆(deoptimization)操作。在编译执行的方法中进行方法调用时会查询方法的入口地址,如果是静态方法,直接解析方法入口地址,否则就将解析方法入口地址,这个函数会判断被调用的方法是否已经被编译过了,如果没有被编译过就进入编译转解释执行的入口。逆优化则可能是在编译执行方法时可能由于某种原因需要重新解释执行。 三、C2即时编译 服务器版编译器是一个专门面向服务器典型应用的充分优化过的先进自适应编译器,它支持和传统编译器如C++编译器类似的许多编译优化流程,以及一些传统编译器所不能做的自适应优化。 (一)编译框架 C2即时编译器通过目标处理器平台的结构描述文件和指令匹配规则,提升优化效率,其结构图如图3所示: 编译器首先分析字节码并生成中间表示Ideal图,所有优化和代码产生都是基于它;接着进行平台无关优化并生成平台相关的MachNode图;最后进行平台相关优化,包括指令选择、代码重排、寄存器分配、窥孔优化,直至输出目标机器代码。 在指令匹配选择阶段,基于确定有限状态机生成器(DFA)匹配最优的指令和操作数,通过指令的属性,如指令的访存代价、流水线结构等众多属性分析每种指令的优劣并作出最优匹配选择,这些重要的属性都是通过国产处理器的结构描述文件(Architecture Description File,AD文件)通过结构描述语言编译器(ADL)编译生成获得;接着进行机器平台相关的优化,如寄存器分配、窥孔优化等,直至最后生成热方法的本地机器代码,服务器版编译器寄存器分配是一个全局图着色分配器,它可以充分利用处理器的大寄存器集合。 (二)结构描述文件 结构描述文件(Architecture Description File,AD文件)的准确描述,对服务器版即时编译器的移植工作非常关键,这是性能版虚拟机高性能的基础。它描述目标处理器的结构,并通过专门的ADL编译

文档评论(0)

龙源期刊 + 关注
官方认证
服务提供商

龙源期刊网创建于1998年,是中国领先的人文大众期刊数字发行平台。全文在线的综合性人文大众类期刊品种达到4200多种,优质版权文章数量超过2500万篇,内容涵盖时政、管理、财经、文学、艺术、哲学、历史、社会、科普、军事、教育、家庭、体育、休闲、健康、时尚、职场等全领域。

认证主体北京龙源网通电子商务有限公司
IP属地北京
统一社会信用代码/组织机构代码
91110113721412769J

1亿VIP精品文档

相关文档

相关课程推荐