动态编译方法及装置制造方法及图纸

技术编号:13328954 阅读:52 留言:0更新日期:2016-07-11 19:08
本发明专利技术实施例提供一种动态编译方法及装置,其中,所述动态编译方法包括:在当前编译队列中存在待编译的热点方法时,获取所述当前编译队列中各待编译的热点方法的运行速度和大小;根据所述各待编译的热点方法的运行速度和大小,确定所述各待编译的热点方法的优先级;调度所述当前编译队列中优先级最高的热点方法进行编译。本发明专利技术实施例提供的动态编译方法及装置,可以大幅度提升编译的吞吐量,有效提高虚拟机的响应速度。

【技术实现步骤摘要】

本专利技术实施例涉及虚拟机技术,尤其涉及一种动态编译方法及装置
技术介绍
虚拟机(VirtualMachine,简称VM)指通过软件(或者辅以少量硬件支持)的方法来虚拟出一台具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机,并且这台虚拟的计算机通常还支持一套自己的指令集,称为虚拟机指令集。虚拟机依托于本地的物理机,通过其执行引擎对给定的虚拟机指令序列(即目标程序)在本地机器上模拟执行。虚拟机的执行引擎可以由解释器来实现。由于解释器具有可移植性高、实现代价低和内存占用少等特点,大多数虚拟机的执行引擎都包含解释器。解释器以一条虚拟机指令为单位进行取指令、译码和执行。但是单纯的解释执行性能低下,鉴于此,虚拟机中引入动态编译系统以提升虚拟机性能。其中,编译器是动态编译系统的核心,编译器以一组连续的虚拟机指令序列(基本块、函数或方法)为单位整体编译成本地CPU指令序列(也称为本地方法),然后由硬件直接执行编译后的本地方法。由于编译器避免了重复的取指令和译码的过程,同时又在编译时进行了大量卓有成效的优化,因而编译器的性能可以达到解释器的性能的10倍以上。由于编译器是在程序运行过程中对虚拟机所检测到的执行频度较高的方法(也称为热点方法)进行动态编译的,故又将其称为即时编译器(Just-in-timeCompiler,简称JIT)。现有的虚拟机中一般同时包含有解释器和即时编译器,并采用混合运行模式来执行应用程序。所谓混合运行模式是指由解释执行和硬件直接执行相混合的模式,具体为:对于程序中的任意一个方法m,均由解释器开始执行;若方法m的执行频度较高,则虚拟机调用即时编译器将方法m编译成本地方法,然后由硬件直接执行编译生成的本地方法。由于解释器的解释执行的性能较低,故让程序中尽量多的方法通过硬件直接执行是提升虚拟机性能的关键。但是,和传统C/C++等静态编译不同,即时编译器是在程序运行过程中进行动态编译的,这会引入额外的运行时开销。如果编译的方法过多,动态编译将需占用大量的计算机资源,使得程序的正常执行受到影响,虚拟机对外界的响应变得迟钝。相反,如果编译的方法过少,大多数方法将由解释器执行,造成程序运行速度同样非常缓慢。故而,现在亟需一种动态编译方法,以优化动态编译过程中虚拟机的系统性能。
技术实现思路
本专利技术实施例提供一种动态编译方法及装置,以提升虚拟机动态编译的吞吐量及提高虚拟机的响应速度。第一方面,本专利技术实施例提供一种动态编译方法,其中,所述方法包括:在当前编译队列中存在待编译的热点方法时,获取所述当前编译队列中各待编译的热点方法的运行速度和大小;根据所述各待编译的热点方法的运行速度和大小,确定所述各待编译的热点方法的优先级;调度所述当前编译队列中优先级最高的热点方法进行编译。根据第一方面,在第一方面的第一种可能的实现方式中,所述调度所述当前编译队列中优先级最高的热点方法进行编译之后,还包括:将所述优先级最高的热点方法的编译状态置为已编译。根据第一方面,在第一方面的第二种可能的实现方式中,所述调度所述当前编译队列中优先级最高的热点方法进行编译之后,还包括:将所述优先级最高的热点方法从所述当前编译队列中删除。根据第一方面,在第一方面的第三种可能的实现方式中,所述获取当前编译队列中各热点方法的运行速度和大小之后,还包括:确定所述各热点方法的活跃性度量值,所述活跃性度量值用于体现所述各热点方法的活跃性;将活跃性度量值小于或等于活跃性阈值的热点方法从所述当前编译队列中删除;其中,所述活跃性阈值大于或等于0。根据第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述活跃性度量值为热点方法的运行速度;或者,所述活跃性度量值为热点方法的执行次数。根据第一方面、第一方面的第一种至第四种可能的实现方式中任意一种,在第一方面的第五种可能的实现方式中,所述根据所述各待编译的热点方法的运行速度和大小,确定所述各待编译的热点方法的优先级,包括:对于所述当前编译队列中的任一待编译的热点方法m,根据所述热点方法m的运行速度speed(m)和大小size(m),采用以下公式得到所述热点方法m的优先级p(m):p(m)=f(size(m),speed(m));其中,所述f表示关于所述size(m)和speed(m)的二元函数,并且满足:(1)所述f在size(m)≥0和speed(m)≥0时有定义;(2)对任意size(m)≥0和speed(m)≥0,所述f的值为非负;(3)当size(m)≥0时,所述f随所述size(m)单调递减;(4)当speed(m)≥0时,所述f随所述speed(m)单调递增。根据第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述f为以下公式: f = speed ( m ) size ( m ) + 1 ; ]]>或者, f = 9000 size ( m ) + 1 + 100 · speed ( m ) . ]]>根据第一方面的第五种可能的实现方式,在第一方面的第七种可能的实现方式中,所述获取所述当前编译队列中各待编译的热点方法的运行速度,包括:采用以下公式得到所述热点方法m的运行速度speed(m): speed ( m ) = Δexecute ( m ) Δt ; ]]>其中,所述Δt为当前时刻前的长度为预设时间常量的时间段,Δexecute(m)表示在过去的Δt时间段内所述热点方法m的执行次数。第二方面,本本文档来自技高网
...

【技术保护点】
一种动态编译方法,其特征在于,包括:在当前编译队列中存在待编译的热点方法时,获取所述当前编译队列中各待编译的热点方法的运行速度和大小;根据所述各待编译的热点方法的运行速度和大小,确定所述各待编译的热点方法的优先级;调度所述当前编译队列中优先级最高的热点方法进行编译。

【技术特征摘要】
1.一种动态编译方法,其特征在于,包括:
在当前编译队列中存在待编译的热点方法时,获取所述当前编译队列中
各待编译的热点方法的运行速度和大小;
根据所述各待编译的热点方法的运行速度和大小,确定所述各待编译的
热点方法的优先级;
调度所述当前编译队列中优先级最高的热点方法进行编译。
2.根据权利要求1所述的方法,其特征在于,所述调度所述当前编译队
列中优先级最高的热点方法进行编译之后,还包括:
将所述优先级最高的热点方法的编译状态置为已编译。
3.根据权利要求1所述的方法,其特征在于,所述调度所述当前编译队
列中优先级最高的热点方法进行编译之后,还包括:
将所述优先级最高的热点方法从所述当前编译队列中删除。
4.根据权利要求1所述的方法,其特征在于,所述获取当前编译队列中
各热点方法的运行速度和大小之后,还包括:
确定所述各热点方法的活跃性度量值,所述活跃性度量值用于体现所述
各热点方法的活跃性;
将活跃性度量值小于或等于活跃性阈值的热点方法从所述当前编译队列
中删除;其中,所述活跃性阈值大于或等于0。
5.根据权利要求4所述的方法,其特征在于,
所述活跃性度量值为热点方法的运行速度;或者,
所述活跃性度量值为热点方法的执行次数。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述根据所述各
待编译的热点方法的运行速度和大小,确定所述各待编译的热点方法的优先
级,包括:
对于所述当前编译队列中的任一待编译的热点方法m,根据所述热点方
法m的运行速度speed(m)和大小size(m),采用以下公式得到所述热点方法m
的优先级p(m):
p(m)=f(size(m),speed(m));
其中,所述f表示关于所述size(m)和speed(m)的二元函数,并且满足:
(1)所述f在size(m)≥0和speed(m)≥0时有定义;
(2)对任意size(m)≥0和speed(m)≥0,所述f的值为非负;
(3)当size(m)≥0时,所述f随所述size(m)单调递减;
(4)当speed(m)≥0时,所述f随所述speed(m)单调递增。
7.根据权利要求6所述的方法,其特征在于,所述f为以下公式:
f = speed ( m ) size ( m ) + 1 ; ]]>或者,
f = 9000 size ( m ) + 1 + 100 · speed ( m ) . ]]>8.根据权利要求6所述的方法,其特征在于,所述获取所述当前编译队
列中各待编译的热点方法的运行速度,包括:
采用以下公式得到所述热点方法m的运行速度speed(m):
speed ( m ) = Δexecute ( m ) Δt ; ]]>其中,所述Δt为当前时刻前的长度为预设时间常量的时间段,Δexecute(m)
表示在过去的Δt时间段内所述热点方法m的执行次数。
9.一种动态编译装置,其特征在于,包括:
参数获取模块,用于在当前编...

【专利技术属性】
技术研发人员:傅杰靳国杰高翔王剑
申请(专利权)人:龙芯中科技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1