CN106325964B - 动态编译调度方法及装置 - Google Patents

动态编译调度方法及装置 Download PDF

Info

Publication number
CN106325964B
CN106325964B CN201510341035.6A CN201510341035A CN106325964B CN 106325964 B CN106325964 B CN 106325964B CN 201510341035 A CN201510341035 A CN 201510341035A CN 106325964 B CN106325964 B CN 106325964B
Authority
CN
China
Prior art keywords
current
hotspot approach
queue
compiling
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510341035.6A
Other languages
English (en)
Other versions
CN106325964A (zh
Inventor
傅杰
靳国杰
高翔
王剑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201510341035.6A priority Critical patent/CN106325964B/zh
Publication of CN106325964A publication Critical patent/CN106325964A/zh
Application granted granted Critical
Publication of CN106325964B publication Critical patent/CN106325964B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供了一种动态编译调度方法及装置,涉及虚拟机编译调度技术领域,解决了现有技术中虚拟机动态编译的开销大、动态编译性能降低的问题。所述方法包括:获取当前编译队列的长度,其中,所述当前编译队列为热点方法队列;若所述当前编译队列的长度大于编译过载阈值,则获取所述当前编译队列中各热点方法的综合活跃度,删除综合活跃度最低的至少一个热点方法,并对所述当前编译队列中剩余的热点方法进行编译调度;若所述当前编译队列的长度不大于编译过载阈值,则对所述当前编译队列中的热点方法进行编译调度;将编译调度时所选定的热点方法从所述当前编译队列中移除,并进行编译。本发明实施例适用于在JAVA等高级语言虚拟机中进行动态编译调度。

Description

动态编译调度方法及装置
技术领域
本发明涉及虚拟机编译调度技术领域,尤其涉及一种动态编译调度方法及装置。
背景技术
虚拟机(VM,Virtual Machine)主要通过软件或者辅以少量硬件支持的方法虚拟出一台计算机,其依托于本地的物理机,通过其执行引擎对给定的虚拟机指令序列在本地机器上模拟执行。虚拟机的执行引擎可以由解释器来实现,解释器以一条虚拟机指令为单位进行取指令、译码和执行。但单纯的解释执行性能低下,因此虚拟机中引入动态编译系统来提高其性能。编译器是动态编译系统的核心,以一组连续的虚拟机指令序列为单位整体编译成本地CPU指令序列,称为本地方法,然后由硬件直接执行翻译后的本地方法。编译器由于消除了重复的取指令和译码的过程,同时又在翻译时进行大量优化,因此其性能往往是解释器的10倍以上。解释执行期间,虚拟机会侦测程序中执行频度较高的方法,称为热点方法,编译器是在程序运行过程中,对虚拟机所侦测到的热点方法进行动态编译的,故又将其称为即时(JIT,Just-in-time)编译器。
因此,现代虚拟机中一般同时包含解释器和即时编译器,并采用混合的运行模式来执行应用程序。对于程序中的任意一个方法m,均由解释器开始执行。若方法m的执行频度较高,则虚拟机调用即时编译器将方法m编译成本地方法,随后将由硬件直接执行编译生成的本地方法。这种由解释执行和硬件直接执行相混合的模式称为混合运行模式。
对于采用混合运行模式的虚拟机,程序中所有方法均由解释器开始执行。解释执行期间,虚拟机会侦测程序中的热点方法。当某个热点方法被虚拟机识别后,该热点方法会被加入到编译队列中等待编译。当系统中的编译队列非空时,即时编译器会按照热点方法被加入编译队列的先后顺序,优先编译先加入队列的热点方法。
目前,虚拟机主要采用基于热点阈值的热点识别策略来侦测程序中的热点方法,即当程序中方法m的执行次数超过热点阈值时,则判定方法m为程序中的热点方法,热点阈值越小,程序中被识别为热点的方法也越多,由此带来的编译开销也越大。
在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:
现有的对程序热点的识别是根据程序过去的历史信息来进行预测的,不能精确识别出程序中的热点,有些方法可能为被误识别为热点方法,从而导致虚拟机动态编译的开销增大,动态编译性能降低。
发明内容
本发明提供的动态编译调度方法及装置,能够降低虚拟机动态编译的开销,提升动态编译性能。
第一方面,本发明提供一种动态编译调度方法,包括:
获取当前编译队列的长度,其中,所述当前编译队列为热点方法队列;
若所述当前编译队列的长度大于编译过载阈值,则获取所述当前编译队列中各热点方法的综合活跃度,删除综合活跃度最低的至少一个热点方法,并对所述当前编译队列中剩余的热点方法进行编译调度;
若所述当前编译队列的长度不大于编译过载阈值,则对所述当前编译队列中的热点方法进行编译调度;
将编译调度时所选定的热点方法从所述当前编译队列中移除,并进行编译。
第二方面,本发明提供一种动态编译调度装置,包括:
第一获取单元,用于获取当前编译队列的长度,其中,所述当前编译队列为热点方法队列;
第二获取单元,用于在所述当前编译队列的长度大于编译过载阈值时,获取所述当前编译队列中各热点方法的综合活跃度;
删除单元,用于删除综合活跃度最低的至少一个热点方法;
第一编译调度单元,用于对所述当前编译队列中剩余的热点方法进行编译调度;
第二编译调度单元,用于在所述当前编译队列的长度不大于编译过载阈值时,对所述当前编译队列中的热点方法进行编译调度;
移除单元,用于将编译调度时所选定的热点方法从所述当前编译队列中移除;
编译单元,用于对所述移除单元所移除的热点方法进行编译。
本发明实施例提供的动态编译调度方法及装置,在当前编译队列的长度大于编译过载阈值时,先删除综合活跃度最低的部分热点方法,然后再对当前编译队列中剩余的热点方法进行编译调度,并将编译调度时所选定的热点方法从当前编译队列中移除后进行编译。与现有技术相比,本发明能够清除编译队列中综合活跃度较低的热点方法,有效降低虚拟机动态编译的开销;而且只有当虚拟机处于编译过载的状态时才进行热点方法的清除,可以避免编译队列中的热点方法被过度删除,从而在整体上提升虚拟机的动态编译性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明动态编译调度方法实施例一的流程图;
图2为本发明动态编译调度方法实施例二的流程图;
图3为本发明动态编译调度装置实施例一的结构示意图;
图4为本发明动态编译调度装置实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种动态编译调度方法,图1为本发明动态编译调度方法实施例一的流程图,如图1所示,本实施例的方法包括:
S11、获取当前编译队列的长度,其中,所述当前编译队列为热点方法队列。
这里的方法指的是面向对象程序设计中的方法,本质上是程序中的一个代码片段,是虚拟机进行编译的最小单元。因此,本文中“方法”的概念可以扩展为程序中能够被编译的最小代码片段,例如,面向过程的编程语言中的函数,以及Qemu等二进制翻译器中的基本块等。
S12、若所述当前编译队列的长度大于编译过载阈值,则获取所述当前编译队列中各热点方法的综合活跃度,删除综合活跃度最低的至少一个热点方法,并对所述当前编译队列中剩余的热点方法进行编译调度。
S13、若所述当前编译队列的长度不大于编译过载阈值,则对所述当前编译队列中的热点方法进行编译调度。
S14、将编译调度时所选定的热点方法从所述当前编译队列中移除,并进行编译。
本发明实施例提供的动态编译调度方法,在当前编译队列的长度大于编译过载阈值时,先删除综合活跃度最低的部分热点方法,然后再对当前编译队列中剩余的热点方法进行编译调度,并将编译调度时所选定的热点方法从当前编译队列中移除后进行编译。与现有技术相比,本发明能够清除编译队列中综合活跃度较低的热点方法,有效降低虚拟机动态编译的开销;而且只有当虚拟机处于编译过载的状态时才进行热点方法的清除,可以避免编译队列中的热点方法被过度删除,从而在整体上提升虚拟机的动态编译性能。
本发明实施例还提供一种动态编译调度方法,图2为本发明动态编译调度方法实施例二的流程图,如图2所示,本实施例的方法包括:
S21、虚拟机启动,完成对解释器、编译器的初始化。
S22、解释器初始化完毕后,开始解释执行程序中的方法。
S23、编译器初始化完毕后进入等待编译的状态。
S24、解释器在解释执行方法的同时,侦测方法是否属于热点方法,若该方法不属于热点方法,则继续解释执行;若该方法属于热点方法,则执行步骤S25。
具体地,解释器侦测方法的执行次数是否超过热点阈值,若不超过热点阈值,则判定该方法不属于热点方法;若超过热点阈值,则判定该方法属于热点方法。
S25、解释器将热点方法加入编译队列中,同时唤醒编译器,触发编译。
S26、编译器获取当前编译队列的长度,其中,所述当前编译队列为热点方法队列。
S27、编译器判断当前编译队列的长度是否大于编译过载阈值,若当前编译队列的长度大于编译过载阈值,则执行步骤S28~S31;若当前编译队列的长度不大于编译过载阈值,则执行步骤S32。
其中,所述编译过载阈值为所述编译器预先设定的。
S28、编译器获取所述当前编译队列中各热点方法的全局活跃信息。
具体地,编译器按照如下公式计算获得当前编译队列中各热点方法的全局活跃信息:
global_activeness(m)=execute_count(m)
其中,global_activeness(m)为热点方法m的全局活跃信息,execute_count(m)为热点方法m的总执行次数,execute_count(m)=invocation_count(m)+loop_count(m),invocation_count(m)为热点方法m被调用的次数,loop_count(m)为热点方法m内部循环迭代的次数。
S29、编译器获取所述当前编译队列中各热点方法的当前局部活跃信息;
具体地,编译器按照如下公式计算获得当前编译队列中各热点方法的当前局部活跃信息:
其中,local_activeness(m)为热点方法m的当前局部活跃信息,Δt为当前时刻前的某一时间段长度,Δexecute(m)为当前时刻前的Δt时间段内热点方法m的执行次数,Δexecute(m)=Δinvocation_count(m)+Δloop_count(m),Δinvocation_count(m)为当前时刻前的Δt时间段内热点方法m被调用的次数,Δloop_count(m)为当前时刻前的Δt时间段内热点方法m内部循环迭代的次数。
S30、根据所述全局活跃信息和当前局部活跃信息,计算所述当前编译队列中各热点方法的综合活跃度。
具体地,编译器按照如下公式计算获得当前编译队列中各热点方法的综合活跃度:
activeness(m)=global_activeness×[local_activeness(m)+1]
其中,activeness(m)为当前编译队列中热点方法m的综合活跃度,global_activeness(m)为热点方法m的全局活跃信息,local_activeness(m)为热点方法m的当前局部活跃信息。
S31、编译器从所述当前编译队列中删除综合活跃度最低的k个热点方法。
其中,k可以为预先设置的常数,也可以等于当前编译队列的长度乘以Ratio后取整,其中,Ratio为所述编译器预先设定的,0<Ratio<1;
值得说明的是,若当前编译队列的长度乘以Ratio所得的值小于1,则k取1;若当前编译队列的长度乘以Ratio所得的值为大于1的小数,则k为当前编译队列的长度乘以Ratio所得的值向下取整。
S32、编译器对所述当前编译队列中的热点方法进行编译调度。
S33、编译器将编译调度时所选定的热点方法从所述当前编译队列中移除。
S34、编译器对所移除的热点方法进行编译。
S35、编译器判断当前编译队列是否为空,若不为空,则返回执行步骤S26;若为空,则返回步骤S23,编译器进入等待编译的状态。
本发明实施例提供的动态编译调度方法,在当前编译队列的长度大于编译过载阈值时,先根据当前编译队列中各热点方法的全局活跃信息和当前局部活跃信息,计算各热点方法综合活跃度,并删除综合活跃度最低的部分热点方法,然后再对当前编译队列中剩余的热点方法进行编译调度,并将编译调度时所选定的热点方法从当前编译队列中移除后进行编译,直至编译队列为空。与现有技术相比,本发明能够清除编译队列中综合活跃度较低的热点方法,有效降低虚拟机动态编译的开销;而且只有当虚拟机处于编译过载的状态时才进行热点方法的清除,可以避免编译队列中的热点方法被过度删除,从而在整体上提升虚拟机的动态编译性能。
本发明实施例提供一种动态编译调度装置,图3为本发明动态编译调度装置实施例一的结构示意图,如图3所示,本实施例的装置包括:
第一获取单元11,用于获取当前编译队列的长度,其中,所述当前编译队列为热点方法队列;
这里的方法指的是面向对象程序设计中的方法,本质上是程序中的一个代码片段,是虚拟机进行编译的最小单元。因此,本文中“方法”的概念可以扩展为程序中能够被编译的最小代码片段,例如,面向过程的编程语言中的函数,以及Qemu等二进制翻译器中的基本块等。
第二获取单元12,用于在所述当前编译队列的长度大于编译过载阈值时,获取所述当前编译队列中各热点方法的综合活跃度;
删除单元13,用于删除综合活跃度最低的至少一个热点方法;
第一编译调度单元14,用于对所述当前编译队列中剩余的热点方法进行编译调度;
第二编译调度单元15,用于在所述当前编译队列的长度不大于编译过载阈值时,对所述当前编译队列中的热点方法进行编译调度;
移除单元16,用于将编译调度时所选定的热点方法从所述当前编译队列中移除;
编译单元17,用于对所述移除单元所移除的热点方法进行编译。
本发明实施例提供的动态编译调度装置,在当前编译队列的长度大于编译过载阈值时,先删除综合活跃度最低的部分热点方法,然后再对当前编译队列中剩余的热点方法进行编译调度,并将编译调度时所选定的热点方法从当前编译队列中移除后进行编译。与现有技术相比,本发明能够清除编译队列中综合活跃度较低的热点方法,有效降低虚拟机动态编译的开销;而且只有当虚拟机处于编译过载的状态时才进行热点方法的清除,可以避免编译队列中的热点方法被过度删除,从而在整体上提升虚拟机的动态编译性能。
图4为本发明动态编译调度装置实施例二的结构示意图,如图4所示,可选地,所述第二获取单元12可以包括:
第一获取模块121,用于获取所述当前编译队列中各热点方法的全局活跃信息;
第二获取模块122,用于获取所述当前编译队列中各热点方法的当前局部活跃信息;
计算模块123,用于根据所述全局活跃信息和当前局部活跃信息,计算所述当前编译队列中各热点方法的综合活跃度。
可选地,所述第一获取模块121,用于按照如下公式计算获得当前编译队列中各热点方法的全局活跃信息:
global_activeness(m)=execute_count(m)
其中,global_activeness(m)为热点方法m的全局活跃信息,execute_count(m)为热点方法m的总执行次数,execute_count(m)=invocation_count(m)+loop_count(m),invocation_count(m)为热点方法m被调用的次数,loop_count(m)为热点方法m内部循环迭代的次数。
可选地,所述第二获取模块122,用于按照如下公式计算获得当前编译队列中各热点方法的当前局部活跃信息:
其中,local_activeness(m)为热点方法m的当前局部活跃信息,Δt为当前时刻前的某一时间段长度,Δexecute(m)为当前时刻前的Δt时间段内热点方法m的执行次数,Δexecute(m)=Δinvocation_count(m)+Δloop_count(m),Δinvocation_count(m)为当前时刻前的Δt时间段内热点方法m被调用的次数,Δloop_count(m)为当前时刻前的Δt时间段内热点方法m内部循环迭代的次数。
可选地,所述计算模块123,用于按照如下公式计算获得当前编译队列中各热点方法的综合活跃度:
activeness(m)=global_activeness×[local_activeness(m)+1]
其中,activeness(m)为当前编译队列中热点方法m的综合活跃度,global_activeness(m)为热点方法m的全局活跃信息,local_activeness(m)为热点方法m的当前局部活跃信息。
可选地,所述删除单元13,用于删除综合活跃度最低的k个热点方法。
其中,k可以是预先设置的常数,也可以等于当前编译队列的长度乘以Ratio后取整,其中,Ratio为所述编译器预先设定的,0<Ratio<1;
值得说明的是,若当前编译队列的长度乘以Ratio所得的值小于1,则k取1;若当前编译队列的长度乘以Ratio所得的值为大于1的小数,则k为当前编译队列的长度乘以Ratio所得的值向下取整。
本发明实施例提供的动态编译调度装置,在当前编译队列的长度大于编译过载阈值时,先根据当前编译队列中各热点方法的全局活跃信息和当前局部活跃信息,计算各热点方法综合活跃度,并删除综合活跃度最低的部分热点方法,然后再对当前编译队列中剩余的热点方法进行编译调度,并将编译调度时所选定的热点方法从当前编译队列中移除后进行编译,直至编译队列为空。与现有技术相比,本发明能够清除编译队列中综合活跃度较低的热点方法,有效降低虚拟机动态编译的开销;而且只有当虚拟机处于编译过载的状态时才进行热点方法的清除,可以避免编译队列中的热点方法被过度删除,从而在整体上提升虚拟机的动态编译性能。
本发明实施例动态编译调度方法及装置,可以适用于在JAVA等高级语言虚拟机中进行动态编译调度,但不仅限于此。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (12)

1.一种动态编译调度方法,其特征在于,包括:
获取当前编译队列的长度,其中,所述当前编译队列为热点方法队列;
若所述当前编译队列的长度大于编译过载阈值,则根据所述当前编译队列中各热点方法的全局活跃信息和当前局部活跃信息获取所述当前编译队列中各热点方法的综合活跃度,删除综合活跃度最低的至少一个热点方法,并对所述当前编译队列中剩余的热点方法进行编译调度;
若所述当前编译队列的长度不大于编译过载阈值,则对所述当前编译队列中的热点方法进行编译调度;
将编译调度时所选定的热点方法从所述当前编译队列中移除,并进行编译。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前编译队列中各热点方法的全局活跃信息和当前局部活跃信息获取所述当前编译队列中各热点方法的综合活跃度包括:
获取所述当前编译队列中各热点方法的全局活跃信息;
获取所述当前编译队列中各热点方法的当前局部活跃信息;
根据所述全局活跃信息和当前局部活跃信息,计算所述当前编译队列中各热点方法的综合活跃度。
3.根据权利要求2所述的方法,其特征在于,所述获取所述当前编译队列中各热点方法的全局活跃信息包括:按照如下公式计算获得当前编译队列中各热点方法的全局活跃信息:
global_activeness(m)=execute_count(m)
其中,global_activeness(m)为热点方法m的全局活跃信息,execute_count(m)为热点方法m的总执行次数,execute_count(m)=invocation_count(m)+loop_count(m),invocation_count(m)为热点方法m被调用的次数,loop_count(m)为热点方法m内部循环迭代的次数。
4.根据权利要求2所述的方法,其特征在于,获取所述当前编译队列中各热点方法的当前局部活跃信息包括:按照如下公式计算获得当前编译队列中各热点方法的当前局部活跃信息:
其中,local_activeness(m)为热点方法m的当前局部活跃信息,Δt为当前时刻前的某一时间段长度,Δexecute(m)为当前时刻前的Δt时间段内热点方法m的执行次数,Δexecute(m)=Δinvocation_count(m)+Δloop_count(m),Δinvocation_count(m)为当前时刻前的Δt时间段内热点方法m被调用的次数,Δloop_count(m)为当前时刻前的Δt时间段内热点方法m内部循环迭代的次数。
5.根据权利要求2所述的方法,其特征在于,所述根据所述全局活跃信息和当前局部活跃信息,计算所述当前编译队列中各热点方法的综合活跃度包括:按照如下公式计算获得当前编译队列中各热点方法的综合活跃度:
activeness(m)=global_activeness×[local_activeness(m)+1]
其中,activeness(m)为当前编译队列中热点方法m的综合活跃度,global_activeness(m)为热点方法m的全局活跃信息,local_activeness(m)为热点方法m的当前局部活跃信息。
6.根据权利要求1所述的方法,其特征在于,所述删除综合活跃度最低的至少一个热点方法包括:删除综合活跃度最低的k个热点方法,其中,k等于当前编译队列的长度乘以Ratio后取整,其中,Ratio为编译器预先设定的,0<Ratio<1;
若当前编译队列的长度乘以Ratio所得的值小于1,则k取1;若当前编译队列的长度乘以Ratio所得的值为大于1的小数,则k为当前编译队列的长度乘以Ratio所得的值向下取整。
7.一种动态编译调度装置,其特征在于,包括:
第一获取单元,用于获取当前编译队列的长度,其中,所述当前编译队列为热点方法队列;
第二获取单元,用于在所述当前编译队列的长度大于编译过载阈值时,根据所述当前编译队列中各热点方法的全局活跃信息和当前局部活跃信息获取所述当前编译队列中各热点方法的综合活跃度;
删除单元,用于删除综合活跃度最低的至少一个热点方法;
第一编译调度单元,用于对所述当前编译队列中剩余的热点方法进行编译调度;
第二编译调度单元,用于在所述当前编译队列的长度不大于编译过载阈值时,对所述当前编译队列中的热点方法进行编译调度;
移除单元,用于将编译调度时所选定的热点方法从所述当前编译队列中移除;
编译单元,用于对所述移除单元所移除的热点方法进行编译。
8.根据权利要求7所述的装置,其特征在于,所述第二获取单元包括:
第一获取模块,用于获取所述当前编译队列中各热点方法的全局活跃信息;
第二获取模块,用于获取所述当前编译队列中各热点方法的当前局部活跃信息;
计算模块,用于根据所述全局活跃信息和当前局部活跃信息,计算所述当前编译队列中各热点方法的综合活跃度。
9.根据权利要求8所述的装置,其特征在于,所述第一获取模块,用于按照如下公式计算获得当前编译队列中各热点方法的全局活跃信息:
global_activeness(m)=execute_count(m)
其中,global_activeness(m)为热点方法m的全局活跃信息,execute_count(m)为热点方法m的总执行次数,execute_count(m)=invocation_count(m)+loop_count(m),invocation_count(m)为热点方法m被调用的次数,loop_count(m)为热点方法m内部循环迭代的次数。
10.根据权利要求8所述的装置,其特征在于,所述第二获取模块,用于按照如下公式计算获得当前编译队列中各热点方法的当前局部活跃信息:
其中,local_activeness(m)为热点方法m的当前局部活跃信息,Δt为当前时刻前的某一时间段长度,Δexecute(m)为当前时刻前的Δt时间段内热点方法m的执行次数,Δexecute(m)=Δinvocation_count(m)+Δloop_count(m),Δinvocation_count(m)为当前时刻前的Δt时间段内热点方法m被调用的次数,Δloop_count(m)为当前时刻前的Δt时间段内热点方法m内部循环迭代的次数。
11.根据权利要求8所述的装置,其特征在于,所述计算模块,用于按照如下公式计算获得当前编译队列中各热点方法的综合活跃度:
activeness(m)=global_activeness×[local_activeness(m)+1]
其中,activeness(m)为当前编译队列中热点方法m的综合活跃度,global_activeness(m)为热点方法m的全局活跃信息,local_activeness(m)为热点方法m的当前局部活跃信息。
12.根据权利要求7所述的装置,其特征在于,所述删除单元,用于删除综合活跃度最低的k个热点方法,其中,k等于当前编译队列的长度乘以Ratio后取整,其中,Ratio为编译器预先设定的,0<Ratio<1;
若当前编译队列的长度乘以Ratio所得的值小于1,则k取1;若当前编译队列的长度乘以Ratio所得的值为大于1的小数,则k为当前编译队列的长度乘以Ratio所得的值向下取整。
CN201510341035.6A 2015-06-18 2015-06-18 动态编译调度方法及装置 Active CN106325964B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510341035.6A CN106325964B (zh) 2015-06-18 2015-06-18 动态编译调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510341035.6A CN106325964B (zh) 2015-06-18 2015-06-18 动态编译调度方法及装置

Publications (2)

Publication Number Publication Date
CN106325964A CN106325964A (zh) 2017-01-11
CN106325964B true CN106325964B (zh) 2019-09-27

Family

ID=57733607

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510341035.6A Active CN106325964B (zh) 2015-06-18 2015-06-18 动态编译调度方法及装置

Country Status (1)

Country Link
CN (1) CN106325964B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108536514B (zh) * 2017-03-01 2020-10-27 龙芯中科技术有限公司 一种热点方法的识别方法和装置
CN107506221B (zh) * 2017-09-28 2020-08-04 阿里巴巴集团控股有限公司 应用程序升级方法、装置及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000047879A (ja) * 1998-07-06 2000-02-18 Internatl Business Mach Corp <Ibm> コンパイル方法及び装置、実行方法、及びプログラム実行装置
CN1795434A (zh) * 2003-05-28 2006-06-28 松下电器产业株式会社 程序执行控制设备,程序执行控制方法,控制程序和记录介质
US7725885B1 (en) * 2000-05-09 2010-05-25 Hewlett-Packard Development Company, L.P. Method and apparatus for trace based adaptive run time compiler
CN103136029A (zh) * 2013-03-12 2013-06-05 无锡江南计算技术研究所 即时编译系统自适应调优方法
CN103793502A (zh) * 2014-01-24 2014-05-14 北京航空航天大学 即时编译器中一种基于云的热路径优化方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000047879A (ja) * 1998-07-06 2000-02-18 Internatl Business Mach Corp <Ibm> コンパイル方法及び装置、実行方法、及びプログラム実行装置
US7725885B1 (en) * 2000-05-09 2010-05-25 Hewlett-Packard Development Company, L.P. Method and apparatus for trace based adaptive run time compiler
CN1795434A (zh) * 2003-05-28 2006-06-28 松下电器产业株式会社 程序执行控制设备,程序执行控制方法,控制程序和记录介质
CN103136029A (zh) * 2013-03-12 2013-06-05 无锡江南计算技术研究所 即时编译系统自适应调优方法
CN103793502A (zh) * 2014-01-24 2014-05-14 北京航空航天大学 即时编译器中一种基于云的热路径优化方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Compilation Queuing and Graph for Dynamic Compilers;Lukas Stadler等;《In:Proceedings of the 6th ACM Workshop on Virtual Machines and Intermediate Languages,New York,USA》;20121102;第49-58页 *
一种Dalvik虚拟机的自适应编译系统;凌明等;《电子学报》;20130831;第41卷(第8期);第1623-1626页 *
编译队列监视下的Size-Speed动态编译调度算法;傅杰等;《高技术通讯》;20141231;第24卷(第12期);第1228-1237页 *

Also Published As

Publication number Publication date
CN106325964A (zh) 2017-01-11

Similar Documents

Publication Publication Date Title
CN100578453C (zh) 用于多线程的线程管理的方法和装置
CN1853165A (zh) 用于多线程的编译器创建辅助线程的方法和装置
CN1294486C (zh) 多重处理环境中透明动态优化的方法和系统
US20070226700A1 (en) Dynamic incremental compiler and method
KR102112081B1 (ko) 언어 가상 머신에서 고-사용 중간 코드를 식별하는 방법 및 디바이스
WO2007055875A1 (en) Method and apparatus for software scouting regions of a program
JP2013504124A (ja) 軽量サービスベースの動的バイナリリライタフレームワーク
CN106325964B (zh) 动态编译调度方法及装置
KR20120083803A (ko) 가상머신을 위한 추가코드 생성장치 및 방법
Suganuma et al. A region-based compilation technique for dynamic compilers
US20090019431A1 (en) Optimised compilation method during conditional branching
CN102411513B (zh) 一种工作于混合模式执行引擎中的垃圾收集方法
CN105988854B (zh) 动态编译方法及装置
CN100573461C (zh) 在嵌入式系统中分析堆栈使用的方法
JPWO2009004709A1 (ja) 間接分岐処理プログラムおよび間接分岐処理方法
CN106325963B (zh) 自适应动态编译调度方法及装置
CN108536514B (zh) 一种热点方法的识别方法和装置
KR20120064446A (ko) 컴퓨팅 시스템 상의 바이트코드의 분기 처리 장치 및 방법
Novaes et al. Compiler-assisted adaptive program scheduling in big. LITTLE systems: poster
Kyle et al. Efficiently parallelizing instruction set simulation of embedded multi-core processors using region-based just-in-time dynamic binary translation
Shekhar et al. Comparison of parallel programming models for multicore architectures
CN101630268B (zh) 同步优化的方法及设备
JP5042487B2 (ja) コンピュータの動作方法、プログラム、コンピュータ
Hartmann et al. Efficient code management for dynamic multi-tiered compilation systems
Campanoni et al. Dynamic look ahead compilation: a technique to hide jit compilation latencies in multicore environment

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100195 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100195 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.