[发明专利]待编译代码的过滤方法和装置有效
申请号: | 201610317585.9 | 申请日: | 2016-05-12 |
公开(公告)号: | CN107368347B | 公开(公告)日: | 2020-08-04 |
发明(设计)人: | 傅杰;靳国杰;高翔;王剑 | 申请(专利权)人: | 龙芯中科技术有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 张洋;刘芳 |
地址: | 100095 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 编译 代码 过滤 方法 装置 | ||
本发明提供一种待编译代码的过滤方法和装置,其中,该方法包括:在对编译队列中的各待编译代码单元进行编译之前,根据编译队列中的各待编译代码单元的活跃信息,分别确定编译队列中的各待编译代码单元的活跃性值;根据各待编译代码单元的活跃性值,确定各待编译代码单元中的疑似僵尸代码单元,并将疑似僵尸代码单元从编译队列中删除。对这些疑似僵尸代码单元不进行编译,进而可以有效降低了虚拟机中的僵尸代码单元的比例,减少了虚拟机系统的运行时的开销,同时还缩短了其余待编译代码单元的编译延迟,提升了虚拟机系统的性能。
技术领域
本发明涉及计算机技术领域,尤其涉及一种待编译代码的过滤方法和装置。
背景技术
在计算机应用过程中,通常会使用虚拟机。虚拟机(Virtual Machine,简称VM)主要通过软件或者辅以少量硬件的方法来虚拟出一台计算机,并且这台虚拟的计算机通常还支持一套自己的指令集,称为虚拟机指令集。虚拟机依托于本地的物理机,通过其执行引擎对给定的虚拟机指令序列或目标程序在本地机器上模拟执行。虚拟机的执行引擎可以由解释器来实现。由于解释器具有可移植性高、实现代价低和内存占用少等特点,大多数虚拟机的执行引擎都包含解释器。解释器以一条虚拟机指令为单位进行取指令、指令分派、取操作数和执行。但单纯的解释执行性能低下,从而虚拟机中引入动态编译系统来提高其性能。编译器是动态编译系统的核心。编译器以一组连续的虚拟机指令序列为单位整体编译成本地CPU指令序列,即编译成本地方法,其中,虚拟机指令序列包括了基本块、函数、方法,然后由硬件直接执行编译后的本地方法。编译器由于消除了重复的取指令和指令分派等过程,同时又在翻译时进行大量卓有成效的优化,因此其性能往往是解释器的10倍以上。由于编译器是在程序运行过程中进行动态编译的,故又将其称为即时编译器(Just-in-timeCompiler,简称JIT)。并且,动态编译是决定虚拟机性能的关键。和传统C/C++等静态编译不同,动态编译行为发生在程序运行期间,会引入额外的编译开销。研究表明,程序运行的时间分布具有明显的局部性特征,即程序执行的大部分时间集中在小部分代码上。为了尽可能降低由动态编译产生的额外开销,现代虚拟机的动态编译系统通常依据“选择性编译”(selective compilation)理论进行设计和实现。
现有技术中,会在虚拟机的运行过程中,根据选择性编译的原理,将执行频率较高、对程序性能影响较大的代码片段,识别为待编译代码。具体来说,虚拟机会为虚拟机中的每一个代码片段分别确定一个调用计数器和一个内部循环计数器,调用计数器确定代码片段被调用的次数,内部循环计数器确定代码片段内循环迭代的次数,当调用计数器确定出的次数与内部循环计数器确定出的次数之和达到预设阈值的时候,将这样的代码片段确定为待编译代码。然后,将待编译代码加入到编译队列中等待编译;进而虚拟机的编译线程会按照一定的编译调度策略,将编译队列中的各待编译代码进行编译,进而生成各待编译代码的本地代码。从而完成了对虚拟机中的待编译代码的动态编译。在对待编译代码进行了动态编译之后,就可以对编译之后的待编译代码均直接执行编译后生成的本地代码。
然而现有技术中,确定进行编译的待编译代码的时候,由于程序行为的易变性,会出现将非待编译代码误判为待编译代码的情况;同时,在对一些待编译代码进行编译之后,会发现这些待编译代码并没有被执行。对这些待编译代码的编译会增加虚拟机系统的运行时的开销,进而会增大对真正需要被编译的待编译代码的编译延迟,进而降低虚拟机系统的性能。
发明内容
本发明提供一种待编译代码的过滤方法和装置,用以解决现有技术中对待编译代码的编译会增加虚拟机系统的运行时的开销,增大对真正需要被编译的待编译代码的编译延迟,进而降低虚拟机系统的性能的问题。
本发明的一方面是提供一种待编译代码的过滤方法,包括:
在对编译队列中的各待编译代码单元进行编译之前,根据所述编译队列中的各待编译代码单元的活跃信息,分别确定所述编译队列中的各待编译代码单元的活跃性值;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于龙芯中科技术有限公司,未经龙芯中科技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610317585.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:应用程序数据处理的方法及装置
- 下一篇:虚拟机克隆方法及装置