[发明专利]基于树型程序分支的计算机程序即时编译方法有效
申请号: | 201410078456.X | 申请日: | 2014-03-05 |
公开(公告)号: | CN103838616B | 公开(公告)日: | 2017-04-05 |
发明(设计)人: | 廖湖声;武辰之;于成龙;高红雨;苏航 | 申请(专利权)人: | 北京工业大学 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京思海天达知识产权代理有限公司11203 | 代理人: | 纪佳 |
地址: | 100124 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 程序 分支 计算机 即时 编译 方法 | ||
技术领域
本发明涉及计算机系统中运行程序的编译优化方法,属于计算机语言技术,用于在程序运行的过程中适时地改变程序的执行方式以其整体性能。
技术背景
计算机程序设计语言的实现通常采用编译实现方法。通过编译系统事先将高级程序设计语言描述的程序翻译等价的、执行效率更高的目标语言程序,避免逐句解释高级语言程序所需要的解释负担,能够十分有效地提高程序的执行效率。然而,对于网络环境下使用的众多程序设计语言,描述计算功能的实用程序可能构造于未知的其他站点,或者是动态生成,无法预先采用编译技术进行优化处理。为了利用编译技术带来的性能改善,此类程序设计语言的有效实现常采用某种即时编译技术。例如,著名的Java虚拟机系统中,采用了这种即时编译技术,设法在程序解释执行的过程中,统计各个程序片段的执行频度,识别出执行频度较高的程序片段,进行编译处理;以编译产生的目标程序的执行代替原程序的解释执行,以求获得程序执行效率的整体提升。
鉴于计算机程序设计语言的多样性,以及程序片段的复杂性,现有的即时编译技术通常采用程序中的函数或子例程作为即时编译处理的基本单元,进而在程序执行中统计各个函数和子例程的执行次数,获得执行频度较高的热点函数,进行编译处理。然而,即时编译处理的程序粒度越大,则编译处理的开销越大,有可能在很大程度上抵消编译优化所带来的好处。为此,本发明提出一种基于执行路径的即时编译方法,允许以程序分支等更小粒度的热点程序片段作为即时编译的处理对象,能够更准确地识别出执行频度较高的程序分支,更有效地利用编译技术来提高程序的执行效率。
和其他基于程序分支的即时编译方法相比,本发明针对程序运行的结构化的基本块控制流图,适用于所有能够将控制逻辑转化为结构化基本块控制流图的程序设计语言,在程序解释和编译执行的过程中,允许将新发现的执行路径编译处理后,扩展到已经编译好的目标程序中,形成一种树型的热点程序分支,具有良好的动态可扩展性,减少了在运行时刻频繁地切换执行方式所带来的额外负担。
发明内容
本发明的目的是为符合结构化控制流的计算程序,提供高效灵活、便于高执行频度程序的识别、便于执行方式切换的即时编译方法,以支持高性能程序执行的解释编译系统的实现。
本发明的特征为:
1、本发明基于树型程序分支的计算机程序即时编译方法,其特征在于计算机程序是按照结构化基本
块流图的表示,实现步骤如下:
步骤S1按照控制流的指示,依次解释执行每个基本块,遇到循环结构时则记录程序分支的起点;
步骤S2如果再次遇到相同循环结构的起点时,则记录程序分支信息,累计该分支的出现次数;
步骤S3如果当前分支路径的出现次数大于给定的阈值,则按照以下步骤对当前分支进行编译处理:
步骤S3.1为当前分支设置编译标记,表示为热点分支;
步骤S3.2按照以下步骤,对当前分支中的每个基本块进行编译处理:
步骤S3.2.1将当前基本块翻译为目标代码模块;
步骤S3.2.2遇到其他分支入口,则生成出口指令;
步骤S3.2.3将步骤S3.2.1和S3.2.2生成的代码合并为目标程序分支;
步骤S3.3保存步骤S3.2所生成的目标程序分支;
步骤S3.4如果当前分支和其他分支有包含关系,则按照以下步骤进行处理:
步骤S3.4.1如果当前分支中包含了其他热点分支,则将其他热点分支作为当前分支的子分支,合并为树型的程序分支;
步骤S3.4.2如果当前分支入口属于其他热点分支,则将当前分支作为其他热点分支的子分支,合并为树型的程序分支;
步骤S3.4.3如果当前分支中部分基本块属于其他热点分支,且分支入口相同,则将其他热点分支作为当前分支的子分支,合并为树型的程序分支;
步骤S4每当再次执行循环结构时,如果该循环已经具有编译标记,则将解释执行方式切换为编译执行方式,按照以下步骤进行执行目标程序中的每条指令:
步骤S4.1将解释执行环境的上下文信息转换为目标程序的上下文信息,并保留返回地址;
步骤S4.2按照控制指令顺序执行目标程序中的指令序列;
步骤S4.3如果遇到了出口指令,则将编译执行方式切换为解释执行方式,按照目标程序的上下文信息恢复解释执行环境的上下文信息,随后按照出口指令的指示继续程序的解释执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410078456.X/2.html,转载请声明来源钻瓜专利网。