基于Trace的CMinus语言即时编译技术研究
发布时间:2017-07-29 20:01
本文关键词:基于Trace的CMinus语言即时编译技术研究
更多相关文章: 即时编译 基于热踪 CMinus 环境切换 运行时环境 Java虚拟机
【摘要】:在网络环境下,一些网页脚本、分布式查询等可能动态生成查询请求或程序。这类查询或程序通常难以提前对其进行静态编译,如XQuery、JavaScript、Python、MATLAB等,它们一般是以解释执行方式运行。为了加快解释执行效率,可以通过即时编译技术,动态识别出程序中频繁执行的代码,对其进行编译处理后执行生成的目标代码,从而提高整个程序的执行效率。即时编译技术按照编译的应用对象不同可以分为两种:基于函数(Method)的即时编译技术和基于踪迹(Trace)的即时编译技术。基于函数的即时编译技术以函数为编译单元,编译粒度较粗。而基于Trace的即时编译技术按照控制流中频繁执行的路径作为即时编译的对象,能够完成更加细粒度的程序优化,并减少了对函数内非频繁代码进行编译的开销,在相当多的场景下能够更加有效的提高程序整体的执行效率。然而,基于Trace的即时编译系统涉及很多底层代码的优化,导致其开发难度较大。如果针对每一种程序设计语言都构造一个支持该优化技术的执行引擎,势必加大开发成本,导致该技术的应用范围受到一定限制。如果能够构造一个引入该技术的通用的执行引擎,便可快捷的将该技术扩展到其他语言的优化中。因此,为了扩展基于Trace的即时编译技术的应用范围,本文提出了一种针对CMinus语言程序的热踪编译技术。利用该热踪编译技术及其支撑工具,任何开发语言编写的程序只要能够翻译为CMinus程序都可以使用该技术提高其执行效率。本文的主要工作和贡献有:1)提出了针对CMinus语言程序的热点Trace探测技术:能够在运行时探测并识别CMinus程序代码中的热点Trace,并进行编译处理;2)设计了热点Trace的探测和动态合并方法:在运行时将对热点Trace进行探测并将出现重复节点的热点Trace进行动态合并,以降低运行时多个Trace间在重复节点处频繁地进行环境切换的开销;3)设计了不同运行时环境间的切换技术:能够保证程序运行过程中不同执行方式下运行时环境的一致性;4)设计并实现了一个基于Trace的CMinus语言通用即时编译系统,任何可以翻译为CMinus的语言都可以利用该技术提高执行效率,扩展了该技术的应用范围。实验结果表明这种即时编译技术能够显著地提高程序的执行效率,同时具有较好的可用性。
【关键词】:即时编译 基于热踪 CMinus 环境切换 运行时环境 Java虚拟机
【学位授予单位】:北京工业大学
【学位级别】:硕士
【学位授予年份】:2016
【分类号】:TP314
【目录】:
- 摘要4-5
- Abstract5-10
- 第1章 绪论10-16
- 1.1 课题背景10-11
- 1.2 研究目的与意义11
- 1.3 相关研究11-14
- 1.3.1 HotSpot即时编译技术11-12
- 1.3.2 基于Trace的即时编译技术12-14
- 1.3.3 Java虚拟机语言14
- 1.4 课题来源14
- 1.5 本文研究工作和创新点14-15
- 1.6 本文组织结构15-16
- 第2章 背景知识与概念16-22
- 2.1 即时编译技术16-17
- 2.1.1 即时编译分类16
- 2.1.2 热点代码判断策略16-17
- 2.2 Java虚拟机17-19
- 2.2.1 虚拟机结构17-18
- 2.2.2 栈帧(Stack Frame)18
- 2.2.3 Java虚拟机指令18-19
- 2.3 CMinus简介19-20
- 2.3.1 CMinus文法19
- 2.3.2 示例程序19-20
- 2.4 本章小结20-22
- 第3章 CMinus即时编译系统22-30
- 3.1 系统框架22
- 3.2 基本块流图生成22-25
- 3.2.1 基本块结构22-23
- 3.2.2 基本块流图转换规则23-25
- 3.3 CMinus解释执行25-29
- 3.3.1 基本结构25-26
- 3.3.2 表达式执行规则26-27
- 3.3.3 函数调用27-29
- 3.4 本章小结29-30
- 第4章 基于Trace的热点探测技术30-38
- 4.1 基本概念30-32
- 4.1.1 Trace定义30-31
- 4.1.2 锚点识别31-32
- 4.2 基于Trace的热点探测32-36
- 4.2.1 Trace探测整体流程32-33
- 4.2.2 Trace探测33-35
- 4.2.3 Trace合并35-36
- 4.3 本章小结36-38
- 第5章 目标代码生成及执行38-52
- 5.1 目标代码的选择38
- 5.2 目标代码设计及生成38-44
- 5.2.1 目标代码类设计39-40
- 5.2.2 辅助信息收集40
- 5.2.3 目标代码生成40-44
- 5.3 环境切换44-49
- 5.3.1 解释执行到编译执行45-46
- 5.3.2 编译执行到解释执行46-49
- 5.4 执行目标代码49-50
- 5.5 本章小结50-52
- 第6章 系统设计及测试52-64
- 6.1 系统设计52-55
- 6.1.1 CMinus即时编译引擎设计52-54
- 6.1.2 基本块流图类体系54-55
- 6.2 测试方案55-56
- 6.3 功能测试56
- 6.4 性能测试56-61
- 6.4.1 解释执行和基于Trace即时编译比较57-60
- 6.4.2 循环次数对加速比的影响60-61
- 6.4.3 编译阈值影响61
- 6.5 本章小结61-64
- 结论64-66
- 参考文献66-70
- 附录 A70-78
- 附录 B78-84
- 攻读硕士学位期间发表的学术论文84-86
- 致谢86
本文编号:590823
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/590823.html