程序执行控制设备和程序执行控制方法技术

技术编号:2851998 阅读:159 留言:0更新日期:2012-04-11 18:40
当实现了带JIT编译器的常规JVM的配备有处理器的家用电器执行未编译的方法时,因为该方法被在运行时编译,所以执行速度较慢。为了抑制执行速度的降低,在程序执行的过程中调用一个方法时,程序执行控制设备判断被调用的方法之前是否已被编译过。如果该方法未被编译,所述设备通过解释相关联的字节码来执行该方法,还发出对该方法的编译请求。如果该方法已被编译,所述设备执行通过编译该方法生成的本机码。对被请求的方法的编译被作为与例如解释执行或本机码执行这样的指令执行任务独立的任务被执行。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及一种程序执行控制设备,其用于使处理器执行由字节码(bytecode)集组成的程序。更具体地,本专利技术涉及一种用于抑制在程序执行的初始阶段执行速度降低的技术。
技术介绍
虚拟机是一种独立于平台的执行程序的软件。近年来,虚拟机被实现在例如内置设备(built-in device)这样的各种配备有处理器的家用电器上。一个示范的虚拟机是Java虚拟机(JVM),其解释并执行Java(注册商标)字节码(以下简称字节码)。关于JVM的详细规范参阅“Java虚拟机规范,第二版”(培生教育出版集团出版,ISBN 4-89471-356-x)。通常,字节码由例如Javac这样的Java编译器通过对用Java语言编写的源程序进行转换生成。字节码被存放在后缀为“.class”的所谓类文件中。JVM解释类文件并执行所需的控制以使处理器执行包含在类文件中的方法。方法是用于执行特定过程的字节码集,类似于其他编程语言中的成员函数。基本上,JVM的工作如同一个在运行时按顺序解释字节码的解释器。正如公知的那样,字节码程序的执行速度要慢于可由处理器直接执行的本机码(native code)程序的执行速度。特别地,执行一个对相同方法进行重复性地调用的程序会带来额外的开销,因为对相同方法的每次调用都需要对其进行重复性地解释。为了降低上述开销,提出了具有及时(Just-In-Time,JIT)编译器的JVM。如果判定被调用的方法尚未被编译,JIT编译器将该方法转换成本机码。JIT改进了执行速度,这是因为当相同的方法在第二次被调用的时候,处理器就可以执行之前编译的本机码。另外,还有一种被称之为Java Hotspot(注册商标)的JIT编译器扩展技术,其能确定要被编译为本机码的方法。更具体地,Java Hotspot在程序执行过程中对每一方法的调用进行计数,并在该数目超过阈值时将该方法编译为本机码。日本专利申请公开号H4-178734和S64-62705公开了具有解释器和编译器二者功能的程序执行控制设备,类似于具有JIT编译器的JVM。具有JIT的JVM的一个问题如下。如果一个方法尚未被编译的话,JVM将在该方法被调用时立即开始对该方法进行编译。当编译结束时,所获得的本机码被处理器执行。因此,与解释执行相同的方法相比,未编译方法的执行速度要更慢。在程序执行的初始阶段,因为更多的字节码需要被编译,所以执行速度的降低尤为显著。类似地,当在调用时对未编译方法进行编译,也使Java Hotspot技术面临执行速度更慢的问题。直到编译完成,才能够执行该方法。
技术实现思路
为了解决上述问题,本专利技术旨在提供一种程序执行控制设备,其用于抑制当执行未编译方法时由于在执行该方法时进行编译处理所通常导致的执行速度的降低。本专利技术还旨在提供与该程序执行控制设备相关的技术。根据本专利技术的一个方面,上述目的可以通过一种程序执行控制设备来实现,该程序执行控制设备用于使处理器执行由一个或多个字节码集组成的程序,其中所述一个或多个字节码集包括用于调用一个字节码集的一个字节码。该程序执行控制设备包括判定单元,用于在程序执行过程中,对于调用字节码的每次执行,判断作为调用目标的字节码集是否已被编译为特定于处理器的本机码;第一单元,用于在目标字节码集被判定为未被编译时,命令处理器以使目标字节码集被顺序地解释和执行,并发出将目标字节码集编译为本机码的请求;第二单元,用于当目标字节码集被判定为待编译时,命令处理器执行通过编译得到的本机码;以及第三单元,用于命令处理器并行于第一单元所进行的字节码解释和执行以及第二单元所进行的本机码执行,对第一单元所发出的编译请求所指示的字节码集进行编译。在本专利技术的另一个方面中,提供了一种程序执行控制方法,该程序执行控制方法用于使处理器执行由一个或多个字节码集组成的程序,其中所述一个或多个字节码集包括用于调用一个字节码集的一个字节码。该程序执行控制方法包括判定步骤,用于在程序执行过程中,对于调用字节码的每次执行,判断作为调用目标的字节码集是否已被编译为特定于处理器的本机码;第一步骤,用于当目标字节码集被判定为未被编译时,命令处理器以使目标字节码集被顺序地解释和执行,并发出将目标字节码集编译为本机码的请求;第二步骤,用于当目标字节码集被判定为待编译时,命令处理器执行通过编译得到的本机码;以及第三步骤,用于命令处理器并行于第一步骤中进行的字节码解释和执行以及第二步骤中进行的本机码执行,对第一步骤中发出的编译请求所指示的字节码集进行编译。在本专利技术的另一个方面中,还提供了一个控制程序,该控制程序用于使处理器执行由一个或多个字节码集组成的另一个程序,其中所述一个或多个字节码集包括用于调用一个字节码集的一个字节码。该控制程序包括判定步骤,用于在程序执行过程中,对于调用字节码的每次执行,判断作为调用目标的字节码集是否已被编译为特定于处理器的本机码;第一步骤,用于当目标字节码集被判定为未被编译时,命令处理器以使目标字节码集被顺序地解释和执行,并发出将目标字节码集编译为本机码的请求;第二步骤,用于当目标字节码集被判定为待编译时,命令处理器执行通过编译得到的本机码;以及第三步骤,用于命令处理器并行于第一步骤中进行的字节码解释和执行以及第二步骤中进行的本机码执行,对第一步骤中发出的编译请求所指示的字节码集进行编译。在本专利技术的另一个方面中,还提供了一种存储了控制程序的记录介质,该控制程序用于使处理器执行由一个或多个字节码集组成的另一个程序,其中所述一个或多个字节码集包括用于调用一个字节码集的一个字节码。该控制程序包括判定步骤,用于在程序执行过程中,对于调用字节码的每次执行,判断作为调用目标的字节码集是否已被编译为特定于处理器的本机码;第一步骤,用于当目标字节码集被判定为未被编译时,命令处理器以使目标字节码集被顺序地解释和执行,并发出将目标字节码集编译为本机码的请求;第二步骤,用于当目标字节码集被判定为待编译时,命令处理器执行通过编译得到的本机码;以及第三步骤,用于命令处理器并行于第一步骤中进行的字节码解释和执行以及第二步骤中进行的本机码执行,对第一步骤中发出的编译请求所指示的字节码集进行编译。这里,字节码集可以是方法或成员函数。通过上述结构,当被调用的字节码集(方法)尚未被编译时,字节码集通过顺序化的解释被执行。因此,确保抑制了执行速度降低,其中执行速度降低是常规的具有JIT的JVM所面临问题的且在程序执行初始阶段尤为显著。执行速度降低是由于在执行方法时编译该方法所造成的。此外,通过上述结构,并行于方法的执行对未编译方法进行编译。因此,避免了整个程序的执行速度变得更慢。这里,程序执行控制设备可以在多任务操作系统控制下工作。第三单元所进行的编译被作为与第一单元所进行的字节码执行和第二单元所进行的本机码执行独立的任务来执行。第一和第二单元的任务被赋予比赋予第三单元的任务的优先级更高的优先级。通过上述的结构,指令执行任务被基于比编译任务更高的优先权来执行。因此,确保抑制了在程序执行初始阶段通常很显著的执行速度降低。这里,程序执行控制设备可进一步包括切换单元,用于当第一或第二单元所进行的任务执行被置于待机状态时,切换到第三单元所进行的任务执行。通过上述结构,当指令执行任务本文档来自技高网
...

【技术保护点】
一种程序执行控制设备,用于使处理器执行由一个或多个字节码集组成的程序,其中所述一个或多个字节码集包括用于调用一个字节码集的一个字节码,所述程序执行控制设备包括:判定单元,用于在所述程序执行过程中,对于调用字节码的每次执行,判断作为调用目标的字节码集是否已被编译为特定于所述处理器的本机码;第一单元,用于当所述目标字节码集被判定为未被编译时,命令所述处理器以使所述目标字节码集被顺序地解释和执行,并且发出将所述目标字节码集编译为本机码的请求;第二单元,用于当所述目标字节码集被判定为待编译时,命令所述处理器执行通过所述编译得到的本机码;以及第三单元,用于命令所述处理器并行于所述第一单元所进行的所述字节码解释和执行以及所述第二单元所进行的所述本机码执行,对所述第一单元发出的编译请求所指示的字节码集进行编译。

【技术特征摘要】
【国外来华专利技术】JP 2003-5-28 151472/20031.一种程序执行控制设备,用于使处理器执行由一个或多个字节码集组成的程序,其中所述一个或多个字节码集包括用于调用一个字节码集的一个字节码,所述程序执行控制设备包括判定单元,用于在所述程序执行过程中,对于调用字节码的每次执行,判断作为调用目标的字节码集是否已被编译为特定于所述处理器的本机码;第一单元,用于当所述目标字节码集被判定为未被编译时,命令所述处理器以使所述目标字节码集被顺序地解释和执行,并且发出将所述目标字节码集编译为本机码的请求;第二单元,用于当所述目标字节码集被判定为待编译时,命令所述处理器执行通过所述编译得到的本机码;以及第三单元,用于命令所述处理器并行于所述第一单元所进行的所述字节码解释和执行以及所述第二单元所进行的所述本机码执行,对所述第一单元发出的编译请求所指示的字节码集进行编译。2.根据权利要求1所述的程序执行控制设备,其中所述程序执行控制设备在多任务操作系统控制下工作,所述第三单元所进行的所述编译被作为与所述第一单元所进行的所述字节码执行和所述第二单元所进行的所述本机码执行独立的任务来执行,以及所述第一和第二单元的任务被赋予比赋予所述第三单元的任务的优先级更高的优先级。3.根据权利要求2所述的程序执行控制设备,进一步包括切换单元,用于当所述第一或第二单元所进行的任务执行被置于待机状态时,切换到所述第三单元所进行的任务执行。4.根据权利要求3所述的程序执行控制设备,进一步包括请求管理单元,用于响应于所述第一单元所发出的编译请求,将编译请求信息登记到存储单元中,并管理所登记的编译请求信息,每项编译请求信息被用于编译相应的编译请求所指示的字节码集,其中所述第三单元命令所述处理器并行于所述第一单元所进行的所述字节码解释和执行以及所述第二单元所进行的所述本机码执行,对登记在所述存储单元中的编译请求信息所指示的每一字节码集进行编译。5.根据权利要求4所述的程序执行控制设备,其中所述请求管理单元按照相应的编译请求被接收的顺序将各项编译请求信息置于队列中,以及所述第三单元命令所述处理器按照从第一项排队的编译请求信息所指示的字节码集开始的顺序来编译字节码集。6.根据权利要求4所述的程序执行控制设备,其中如果编译请求所指示的字节码集的编译请求信息已被登记在所述存储单元中,则所述请求管理单元不再重复地登记编译请求信息。7.根据权利要求4所述的程序执行控制设备,进一步包括优先权信息获取单元,用于获取表示每一字节码集的优先级的信息,其中所述请求管理单元包括指定子单元,用于响应于所述第一单元所发出的编译请求,参考所获得的优先权信息,指定所述编译请求所指示的字节码集的优先级;比较子单元,用于对所指定的优先级和所述存储单元中的排队的编译请求信息所指示的每一字节码集的优先级进行比较;以及确定子单元,用于确定放置对于所述编译请求所指示的所述字节码集的新编译请求信息项的位置,以使所登记的各项编译请求信息被按照优先权的降序来排队。8.根据权利要求4所述的程序执行控制设备,进一步包括相关信息获取单元,用于获取表示每一字节码集以及与该字节码集相关的所有字节码集的相关信息;检测单元,用于参考所述相关信息,检测与所述编译请求所指示的所述字节码集相关的任一字节码集,其中所述请求管理单元对所述检测单元所检测到的所述相关字节码集的编译请求信息进行登记。9.根据权利要求4所述的程序执行控制设备,进一步包括优先权信息获取单元,用于获取表示每一字节码集的优先级的信息;其中参考所获得的优先权信息,所述第三单元命令所述处理器按照优先权的降序对登记在所述存储单元中的各项编译请求信息所指示的字节码集进行编译。10.根据权利要求4所述的程序执行控制设备,进一步包括数目记录单元,用于当所述字节码集的编译被重复请求时,对各字节码集的编译请求进行计数,并将所述请求数目作为所述字节码集的编译请求信息的一部分记录在所述存储单元中;以及获取单元,用于获取请求数目的阈值,其中所述第三单元命令所述处理器按照各个字节码集的请求数目超过所述阈值的顺序来编译字节码集。11.根据权利要求5所述的程序执行控制设备,进一步包括数目记录单元,用于当所述字节码集的编译被重复请求时,对各个字节码集的编译请求进行计数,并将所述请求数目作为所述字节码集的编译请求信息的一部分记录在所述存储单元中;以及顺序更改单元,用于比较各个请求数目,并按照请求数目的降序更改各项排队的编译请求信息的位置。12.根据权利要求5所述的程序执行控制设备,其中所述请求管理单元管理多个具有不同优先级的队列,以及所述第三单元命令所述处理器按照从被置于最高...

【专利技术属性】
技术研发人员:土井繁则青木博司今西祐子
申请(专利权)人:松下电器产业株式会社
类型:发明
国别省市:JP[日本]

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

1