CN100354826C - 配有jit编译器的虚拟计算机及其方法 - Google Patents
配有jit编译器的虚拟计算机及其方法 Download PDFInfo
- Publication number
- CN100354826C CN100354826C CNB028267303A CN02826730A CN100354826C CN 100354826 C CN100354826 C CN 100354826C CN B028267303 A CNB028267303 A CN B028267303A CN 02826730 A CN02826730 A CN 02826730A CN 100354826 C CN100354826 C CN 100354826C
- Authority
- CN
- China
- Prior art keywords
- bytecode
- native code
- compiling
- virtual machine
- address
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 105
- 230000008569 process Effects 0.000 claims description 66
- 238000010586 diagram Methods 0.000 description 43
- 230000009471 action Effects 0.000 description 11
- 230000001413 cellular effect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 239000002699 waste material Substances 0.000 description 5
- 230000000052 comparative effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000006185 dispersion Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001195 anabolic effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明披露了一种配备有JIT编译器的虚拟计算机。所述虚拟计算机包括用于保存字节码的字节码保存区,用于连续地解释并执行字节码的装置,用于把字节码编译成可由虚拟计算机直接执行的本机码的编译器,标记信息,其是由用于保存本机码本机码保存区和本机码地址产生的,以及检索表,用于在被编译成本机码的字节码的本机码区保存地址。
Description
技术领域
本发明涉及包括Just-In-Time或JIT(及时供应)编译器的虚拟计算机。本发明的虚拟计算机适用于便携式无线通信设备例如终端设备、蜂窝电话或者具有无线通信功能的个人数字助理(PDA)。
背景技术
互联网的广泛使用使得一个系统能够运行通过互联网得到的程序。例如,蜂窝电话的程序都使用Java语言。
JAVA语言被分配用于在虚拟计算机上执行的程序,其可以用于每个平台,并且所述程序被称为“字节码”。不过,JAVA语言不能直接由便携无线通信设备的处理器执行。而是,这种装置借助于使用仿真技术执行字节码。
本发明涉及包括JUST-IN-TIME或JIT编译器的计算机。本发明的JAVA语言的虚拟计算机可以用高的速度运行字节码,使得其适用于具有小的存储容量的便携无线通信设备,例如蜂窝电话、PDA等。
参照图21-24说明本发明的现有技术。
图21表示解释程序的流程图,其在虚拟计算机上解释和执行字节码。标号为S1-S6的方块表示处理步骤。
利用软件解释并随后执行字节码的解释系统用于在虚拟计算机上执行字节码。不过,由解释系统执行的这个处理的运行速度是低的,这是因为逐步执行的结构所致。现有技术的处理的实施例如下。
取字节码的指令(S1),并对所取的指令译码(S2)。当指令的译码结果是指令的“执行”时,指令则被执行(S3,S4),并且处理返回步骤S1。当指令的译码结果是“分支”时(S5),则执行分支处理,并且处理返回步骤S1。当译码的指令是“调用方法”时(S6),则执行该调用方法(S6),并且步返回S1的处理。用相同方式执行每个相继的指令。
参照图22说明通常使用的现有技术的JIT编译器。
图22表示组合了解释程序和JIT编译器的处理的流程图。根据图22说明一般只在个人计算机中使用的解释程序和JIT编译器的组合过程。这个JIT编译器一直未用于蜂窝电话。步骤S11-S20是处理步骤。其中的步骤S11-S16表示解释程序的处理,步骤S17-S20表示JIT编译器的处理。
JIT编译器一般用于解决解释过程的低运行速度的问题。JIT编译器把字节码编译成本机码。这个本机码可以在基础平台上执行,因而使得程序能够以高的速度运行。
JIT编译器取得一个下载的程序,该程序使方法被执行,并把方法的全部字节码编译成为本机码。编译的本机码被存储在存储器(程序的存储区)中,然后在执行程序时被使用。第一次执行要招致开销时间,但是随后的执行以高的速度进行,没有开销时间。这种处理的实施例如下。
取字节码的指令(S11),并对所取的指令译码(S12)。当指令的译码结果是“执行”时,指令则被执行(S13,S14),并且处理返回步骤S11。当指令的译码结果是“分支”时(S15),则执行分支处理(S15),并且处理返回步骤S11。当译码的指令是“调用方法”时(S16),则执行该调用方法(S16),并且进入下一步,决定该字节码是否已被编译(S17)。
当字节码尚未被编译时,下一步是决定字节码是否需要被编译(S18)。当不需要编译时,处理返回步骤S11。或者,当字节码需要被编译时,由该方法调用的字节码利用JIT编译器被编译,从而产生本机码,并把本机码存储在本机码存储区中(S19)。此外,本机码被执行(S20)。在执行处理时,当调用一个方法时,处理进行到步骤S16,并且所述方法被执行,处理返回步骤S11。在处理中,当由步骤S17的决定执行编译时,处理进入步骤S20。上述的处理将被继续,以便寻址每个指令。
上述的字节码被称为JAVA虚拟机(虚拟计算机)的机器码,其是由Sun Microsystems(Santa Clara,CA,USA)编制的JAVA应用程序的二进制形式。“JIT(JUST-IN-TIME)编译器”是用于把字节码转换成计算机直接执行的本机码的软件。所述“方法”是一个程序(或子程序),其定义在面向对象的程序设计中对象的执行方法。
图23表示装入有虚拟计算机的现有技术的终端设备。
在图23中,服务器51包括JAVA应用程序52和编译JAVA应用程序的JAVA编译器53,以及输出单元54,其在网络上输出由JAVA编译器编译的字节码。
在终端装置61中,输入单元62输入从服务器51发出的字节码。存储器中的字节码存储区63存储输入的字节码。方法64和65是由JAVA编译器53编译成字节码的方法。虚拟计算机66包括解释程序71,JIT编译器编译器73和本机码区3,其是一个存储区,用于存储由JIT编译器编译的本机码。终端设备包括CPU80,计算结果保持区81,其用于在存储器中保持计算结果,以及用于输出计算结果的输出单元82。
在图23中,从服务器51发出的字节码通过输入单元62被输入,并利用字节码地址被存储在字节码存储区63内。解释程序71解释并执行字节码。当译码的结果是方法164时,JIT编译器73则从字节码存储区输入字节码指令,并编译所述字节码。编译的字节码以本机码地址被存储在本机码存储区3内。
CPU81的计算结果被保持在存储器的计算结果保持区81内,并通过输出单元82输出。
加载现有技术的虚拟计算机的电话装置如图24所示。
在图23、24中,相同的标号表示相同的单元。在图24的结构中由服务器51发出的字节码通过输入单元62被输入,并利用字节码地址被存储在字节码存储区63中。解释程序71按照输入的字节码的顺序解释每个指令,CPU80计算译码的字节码。CPU80的计算结果被保持在存储器中的计算结果保持区81中,并通过输出单元82输出。
上述的现有技术的虚拟计算机具有若干缺点。
在便携无线通信设备例如蜂窝电话和PDA中使用的存储容量是有限的,因此所有的编译的代码不能被存储在存储器中。此外,在便携无线通信设备中执行的许多应用程序是交互式软件,例如游戏软件,其需要高的响应速度。因此,对于便携无线通信设备,长的编译时间是不能接受的。
高性能的处理器一般不用于便携无线设备中。当这些设备使用JIT编译器时,使用所述软件时会发生中断(例如在游戏中)。此外,对于只执行一次的任何字节码,执行速度被编译的开销时间延迟,并因为所述开销,当编译一个大的程序时,执行速度比解释程序的执行速度低。
本发明的目的是要解决上述问题,并改善具有有限的存储容量的便携无线设备的处理速度和响应特性。
发明内容
本发明包括下述的结构:
(i)在存储器中实现的虚拟计算机包括字节码存储区,通过按照顺序解释字节码来执行字节码的单元,用于把字节码编译成虚拟计算机执行的本机码的编译器,以及本机码存储区。此外,虚拟计算机包括检索表,用于在本机码区中存储由字节码的地址和本机码地址产生的标记信息。
(ii)在存储器中实现的虚拟计算机的编译方法包括在字节码存储区中存储字节码,通过按顺序解释字节码来执行字节码,把字节码编译成虚拟计算机执行的本机码,在检索表的本机码区中存储由字节码的地址和本机码的地址产生的标记信息,以及通过检索检索表决定是否需要编译字节码。
(iii)一种包括在存储器中实现的虚拟计算机的终端设备,包括字节码存储区,用于通过按顺序解释字节码来执行字节码的单元,用于把字节码编译成由虚拟计算机执行的本机码的编译器,以及本机码存储区。此外,所述虚拟计算机包括检索表,其中存储用于决定是否执行编译的信息,以及编译的本机码的地址。
因而,本发明能够容易地决定是否需要编译,在已经执行编译的情况下,本机码的存储地址的检索被容易地进行。此外,只有方法的频繁使用的部分被编译和保持。因而,在本发明中,编译可以在具有小的存储容量的装置中执行。此外,即使本发明的JIT编译器用于具有有限的产生和保持本机码的存储器的便携终端设备中,因为能够利用小的存储容量编译,处理速度是高的。
附图说明
图1是表示本发明的虚拟计算机的结构的方块图;
图2是表示本发明的第一实施例的流程图;
图3是表示本发明的第二实施例的流程图;
图4是表示本发明的第一实施例的动作的示意图;
图5是表示本发明的第二实施例的动作的示意图;
图6是表示本发明的第二实施例的流程图;
图7A是表示本发明的第三实施例的第一访问动作的示意图;
图7B是表示本发明的第三实施例的第二访问动作的示意图;
图8是表示本发明的第三实施例的流程图;
图9是表示本发明的第四实施例的动作的示意图;
图10A是表示本发明的第五实施例的执行控制单元的结构的示意图;
图10B是表示本发明的第五实施例的执行控制单元的流程图;
图11A是表示本发明的第6实施例的执行控制单元的结构的示意图;
图11B是表示本发明的第6实施例的执行控制单元的流程图;
图12A是表示本发明的第7实施例的执行控制单元的结构的示意图;
图12B是表示本发明的第7实施例的执行控制单元的流程图;
图13A是表示本发明的第8实施例的执行控制单元的结构的示意图;
图13B是表示本发明的第8实施例的执行控制单元的流程图;
图14是表示本发明的第9实施例的示意图;
图15表示第9实施例的流程图;
图16表示第10实施例的动作的示意图;
图17是表示第10实施例的流程图;
图18A是表示第10实施例的重新定位单元的流程图;
图18B是表示第10实施例的重新定位单元的流程图;
图19A是表示本发明的检索表和本机码区之间的关系的示意图;
图19B是表示本发明的检索表和本机码区之间的其它关系的示意图;
图20表示包括本发明的第12实施例的虚拟计算机的蜂窝电话的示意图;
图21表示现有技术的解释器的流程图;
图22是表示使用解释器和JIT编译器的组合的另一个现有技术的流程图;
图23是表示包括现有技术的虚拟计算机的终端设备的示意图;以及
图24是表示包括现有技术的虚拟计算机的蜂窝电话的示意图。
具体实施方式
参照附图说明本发明的实施例。下面说明的虚拟计算机实际上是在便携无线通信设备中利用软件程序和处理器(CPU或MPU)实现的,所述通信设备执行所述程序。
因而,下面说明的流程的所有处理都由软件程序执行。在虚拟计算机中的存储器、代码高速缓存和检索表等由软件程序来实现。
第一实施例的说明
本发明的第一实施例利用软件解释和执行虚拟计算机的字节码。此外,虚拟计算机包括代码高速缓存,其是存储器中的一个有限的区域,用于存储本机码。虚拟计算机还包括JIT编译器。当执行字节码时,JIT编译器把字节码编译成本机码,虚拟计算机可以直接执行所述本机码,并把本机码存储在代码高速缓存中。此外,虚拟计算机包括检索表,其保存用于确定是否使用字节码地址进行编译的信息,这在稍后进行说明。通过检索检索表,可以找到编译过的本机码的地址。
当字节码被编译时,在本机码区中不存在用于存储本机码的自由空间。任何编译过的本机码被删除,以便在本机码区中保留一些自由空间。检索表可以用这种方式被更新。
图1表示包括本发明的虚拟计算机的终端设备。终端设备61包括检索表2,以及在存储区中的用于存储本机码的本机码区3。此外,终端设备61包括输入单元62,用于输入从服务器51发出的字节码,字节码存储区63,用于存储在存储器中输入的字节码,以及要被编译的方法64、65。
虚拟计算机66包括解释器71和编译执行控制单元72。编译执行控制单元72从对检索表单元76的搜索结果中决定是否需要编译。此外,编译执行控制单元72决定编译部分。例如,其发现用来编译的不可避免地要执行的部分或者被频繁使用指令的部分,或者用于编译的一个固定数量指令的部分,或者在一个固定时间内用于编译的部分。虚拟计算机66还包括JIT编译器73,CPU80,用于在存储器中保持计算结果的计算结果保持区81,以及用于输出执行结果的输出单元82。
虚拟计算机66还包括标记产生单元74,用于在检索表2中产生标记并把本机码区3中的字节码地址写入所述标记中,JIT编译器73,用于产生本机码,以及本机码记录单元75,用于在对应于检索表中的字节码的标记内记录本机码区的本机码地址。检索表检索单元76检索检索表2,并决定字节码是否被编译并被记录在本机码存储区内。本机码执行单元78按照检索表检索单元76的检索结果执行在本机码区3中存储的本机码。
在图1中,标记产生单元74按照解释器71的处理顺序产生指向字节码的标记。或者,对于每个字节码产生所述标记。JIT编译器编译字节码,从而产生本机码。本机码记录单元75在相应于字节码的标记中记录本机码的地址。检索表检索单元76在检索表2中检索要被处理的字节码的标记。当检索表检索单元找到相应于字节码的本机码被记录时,其被认为是“命中”,并且本机码执行单元78通过利用本机码执行字节码。
从服务器51发出的字节码通过输入单元62被输入,并以其字节码地址被存储在字节码存储区63。解释器71解释并执行字节码。当被译码的字节码是一种方法,并且检索表检索单元76的计算结果表示本机码已被编译时,便是一个“命中”,并且本机码执行单元78通过利用本机码执行字节码。当由检索表检索单元76检索检索表的计算结果表示本机码未被编译时,这是“未命中”,编译执行控制单元72则引导JIT编译器编译指令或方法等的一部分。JIT编译器73编译指令等的一部分。由JIT编译器编译的本机码用本机码地址被存储在本机码存储区3内。此外,本机码记录单元75记录相应于编译的字节码的标记的本机码地址。检索表2只记录编译序列块的第一个指令。
CPU80的计算结果被保持在计算结果保存区81中,并通过输出单元82输出。
图2表示本发明的虚拟计算机的流程的第一个例子。参看图2说明本发明的第一实施例。该流程图说明由虚拟计算机执行的用于检查是否字节码已被编译的处理。对于所有的字节码,是否应当执行编译通过使用在检索表中的标记信息进行检查(S31),当字节码未被编译时,便确定是否需要编译(S32)。当不需要编译时,则取字节码指令(S33),并且字节码指令被译码(S34)。
当结果是“执行”时(S35,36),则指令被执行,并且处理返回步31。当结果是“分支”时(S37),则指令被执行,并且处理返回步骤31。当结果是“调用方法”时(S38),则指令被执行,并且处理返回步骤31。
当步骤S32的决定是需要编译时,则字节码的一部分被编译,从而产生本机码,并把所述本机码存储在本机码存储区中(S39)。此外,本机码被执行(S40),并且处理返回步骤S31。或者,当在步骤31的处理中字节码已被编译时,则处理进入步骤40。在上述的处理中,处理S31-S38由解释器71执行,处理S39和S40由JIT编译器73执行。
图3表示本发明的第一实施例的第二个例子的流程图。参见图3说明本发明的第一实施例的第二个例子。
第二个例子的处理是,在执行控制的暂停时(例如当执行分支或方法等时)决定是否需要编译。第二个例子的特征在于,编译不由整个方法单元执行,而是借助于一些条件引起的中断,这将在本发明的第5,6,7和8实施例中稍后进行说明。即本发明不同于普通的JIT编译器。
在图3中,取字节码指令(S41),并译码所述指令(S42)。当译码结果是“执行”时(S43,44),则指令被执行(S43,S44),并且处理返回步骤41。当译码结果是“分支”时(S45),则执行分支处理,当指令是“调用方法”时(S46),则调用方法被执行。
此外,当分支或调用方法在上述步骤中被执行时,则决定字节码是否已被编译(S47)。如果字节码未被编译,则下一步确定字节码是否需要被编译(S48)。如果这一步的结果是字节码的编译不需要,则处理返回步骤S41。
或者,当需要编译时,则部分地执行编译,从而产生本机码,并把产生的本机码存储在本机码存储区中(S49)。本机码被执行(S50),并且处理返回步骤S46或S47。
图4表示本发明的第一实施例的虚拟计算机的方块图。在图4中,示出了比较器1,本机码区3、解释器71、编译执行控制单元72,JIT编译器73,标记产生单元74,本机码记录单元75,检索表检索单元76和本机码执行单元78。
本发明的本机码区3作为高速缓存,具有检索表2,标记产生单元74,本机码记录单元75和检索表检索单元76。在下面的说明中,代码高速缓存相应于本机码区3。
在图4中,使用检索表2确定字节码是否已被编译。检索表2记录在标记和本机码地址(即在高速缓存内的本机码区的地址)之间的对应性。因而,可以利用本机码地址检索高速缓存中的本机码区3的数据。
字节码的地址由较高的M位和较低的N位构成。字节码地址可以通过在检索表中检索而从字节码地址的较低的N位找到。字节码的较高的M位和标记信息被输入到比较器1中。比较器1自动地比较从而找到匹配或不匹配的信息。当检索结果是“命中”或匹配时,本机码执行单元78则利用在本机码区存储的本机码执行指令。
当比较结果是匹配或命中时,比较器1则输出一个匹配信号,表示字节码已被编译。
本发明的第一实施例的特征如下。字节码是否已被编译通过检索检索表而被容易地确定。此外,在字节码被编译的情况下,查找本机码地址,即相应于字节码的高速缓存中的本机码区3的地址是容易的。利用编译的字节码和存储的本机码,程序是运行速度是快的。用于存储由JIT编译器产生的本机码所需的存储器被限制,因而即使在小的存储容量下,也能以高速运行程序。
第二实施例的说明
本发明的第二实施例在于,检索表2或代码高速缓存3包括一个计数器,用于计数指令被执行的次数。当执行虚拟计算机的字节码时,在执行计数器的计数器值小于预定值的情况下,解释器执行指令。另外,在执行计数器的计数器值等于或大于预定值的情况下,即字节码被频繁地执行,则字节码被JIT编译器编译并被执行。
图5表示本发明的第二实施例的结构和动作。在图5中,示出了解释器71,编译执行控制单元72,JIT编译器73,和本机码控制单元72。在编译执行控制单元72中,计数器值查找单元91读出检索表92的计数器值。JIT编译器73包括计数器更新单元92,用于更新执行计数器和编译单元100。
在图5中。解释器71在字节码地址未被记录在一个标记中的情况下,把字节码地址记录在所述标记中,并且执行计数器被清除。此外,在字节码地址被记录在标记中并且字节码尚未被编译的情况下,则解释器71增加执行计数器的计数值。计数值查找单元91查找计数值,并且在计数值小于预定值的情况下,则解释器执行字节码的指令。当在计数器值查找单元91发现字节码的出现次数达到预定值时,则JIT编译器73借助于编译执行控制单元72的编译指令把字节码编译成本机码。本机码被存储在本机码区3内。本机码地址被记录在相应于所述指令的标记中。在本机码地址被记录在检索表2之后,借助于检索表检索单元76的检索命中使用在本机码区内的本机码执行字节码的指令。
如图5所示,检索表2由标记、执行计数器以及相应于本机码地址的信息构成。因而,在代码高速缓存中的本机码区3的地址可借助于检索本机码地址找到。此外,本机码地址可通过搜索检索表2字节码的较低地址的较低N位的标记而被找到,所述字节码由较高的M位以及较低的N位构成。字节码的较高的M位和检索表的标记信息被输入到比较器1,并且比较器1确定在标记信息和较高的M位之间是否存在匹配或命中。当存在命中时,本机码执行单元78执行本机码。
当比较结果是匹配或命中时,从比较器1输出匹配信号,并且可以使用匹配信号确定是否字节码已被编译。编译执行控制单元72在计算结果是未命中的情况下参考执行计数器值。当作用于字节码的计数器值小于预定值时,本机码执行控制单元使解释器71处理字节码。解释器的处理和现有技术的相同。或者,当计数器值等于或大于预定值时,本机码执行控制单元72命令JIT编译器编译字节码。在上述的情况下,执行计数器构成在标记上,但是执行计数器也可以在高速缓存代码3内被构成。
图6表示本发明第二实施例的虚拟计算机的流程图。该流程图表示编译选择处理。参见图6,说明本发明的第二实施例的编译选择处理。
所述处理由两部分构成。第一部分是解释处理(S61-S67),第二部分是编译处理(S71-S75)。在解释处理中,确定字节码是否已被编译(S61)。当字节码未被编译时,通过检查字节码地址是否在图4的检索表的标记中,确定字节码地址是否被记录在检索表中(S62)。当所述地址未被记录在所述表中时,地址被记录在标记中(S63)。然后执行计数器被清除(S64)。此外,取指令(S65),译码(S66),并执行(S67)。处理然后返回步骤S61。
当步骤S62的结果确定所述标记被记录在检索表中时,检索表2的执行计数器例如增加+1(S71),并确定计数值是否大于预定值(S72)。当计数值小于预定值时,处理进行步骤S65的处理,并且指令被译码并被解释器执行。当所述的值等于或大于预定值时,处理执行步骤S73的处理,字节码被JIT编译器编译而产生本机码,并把本机码记录在代码高速缓存3中。在这个处理中,所需的信息,即本机码地址,被记录在表2中(S74)。本机码被执行(S75),然后处理返回步骤S61的处理。
在步骤S61的处理中,当编译已被执行时,处理返回S75的处理,执行本机码。
本发明的第二实施例的特征如下。编译处理一般是长的。不频繁使用的字节码的解释器执行的整个处理时间小于对其进行编译而执行的处理时间。但是,在本发明的第二实施例中,因为极少被使用的本机码不被编译,处理速度被显著增加。
图7A,7B是本发明第三实施例的方块图。图7A表示对检索表的第一次访问。图7B表示对检索表的第二次访问。
第三实施例的说明
本发明的第三实施例不使用第二实施例中的执行计数器来决定是否需要编译。在第一执行时,只记录字节码地址,即在检索表2的标记中被记录。在本机码地址区中,一种专用于编译的函数,即编译或处理的顶部地址被记录。代替专用函数,可以使用数字0记录在本机码地址记录区中。用这种方式,例如,由解释器执行第一次处理,并且第二次处理由编译器执行。
图7A表示第一次访问。在图7A中,标号71表示解释器,检索表信息记录单元79通过解释处理而在检索表2的本机码区中记录本机码地址。在图7A中,在第一次访问时,因为字节码地址未被记录在检索表2中,解释器71在检索表2中记录字节码,并把数值0或编译的专用函数写入检索表2的本机码地址区中。此外,字节码被解释器71执行。
图7B表示用于解释第二次访问的操作。在图7B中,示出了解释器71,执行控制单元721,JIT编译器73,检索表2和本机码记录单元75。在图7B中,解释器71在第一次访问时处理,执行控制单元721命令JIT编译器,后者把字节码编译成在随后访问时可由虚拟计算机执行的本机码。第二次发生字节码的处理,数字0或专用函数被记录在检索表2的本机码地址区中。执行控制单元721找到记录的数值0或专用函数,并命令JIT编译器73编译字节码。由编译产生的本机码被存储在本机码区3中,然后本机码被执行。此外,本机码记录单元75在检索表2中记录本机码地址。此后,当字节码处理发生时,检索结果总是“命中”,并且本机码可被执行。
图8表示本发明的第三实施例的编译选择的流程图。所述处理由S81-S86的解释器处理和编译处理S91-S94构成。解释器处理从圆圈内的标号A开始,并确定字节码地址是否被记录在检索表2中(S81)。当字节码地址未被记录时,则意味着这是第一次访问,解释器解释字节码。在这个处理中,只有字节码地址被记录的检索表2的标记中(S82)。
在步骤S82的处理之后,入口B被记录在本机码地址中(S83)。此外,取指令(S84)并译码(S85)。然后执行译码的指令(S86),处理返回步骤S81。
在步骤S81的处理,当字节码地址被记录时,意味着其是第二次访问,因而处理由JIT编译器执行。在处理中,处理跳到本机码地址(S91),JIT编译器从入口B编译(S92),记录本机码地址(S93)。此外,执行本机码(S94),处理返回步骤S81的处理。
或者,按照步骤S91的处理结果,处理进入步94的处理,执行本机码(S94)并返回步骤S81。
本发明的第三实施例的特征如下。因为编译处理需要长的处理时间,当处理任何只使用一次的字节码时,由解释器执行的处理比如果由编译执行处理要快。因而,借助于上述处理,程序的总的运行速度增加。此外,第三实施例不需要一个用于执行计数器的区域,因此在第三实施例中所需的存储器比第二实施例的小。
第四实施例的说明
在第四实施例中,检索表不包括本机码地址,而包括正在被执行的编译的信息,即标记信息。在本机码区中的本机码地址可以借助于字节码地址的计算获得。
图9表示第四实施例的检索表2和本机码区的结构。检索表2只存储标记。检索表2通过字节码地址的较低的N位被访问。在本机码区3中的本机码地址通过利用算术单元4对较低的N位进行计算的计算结果来设置。例如,算术单元4计算字节码的较低的N位乘以8,即N×8,并把计算结果设置为本机码区3的本机码地址。
在检索表2中的标记可借助于使用(由M位的较高的地址和N位的较低的地址构成的)字节码地址的较低的N位被检索。字节码地址的较高的M位和在检索表中的标记信息被输入到比较器1中。两个输入被比较,从而决定是否命中。在匹配的情况下,从比较器1输出匹配信号,并可通过匹配信号发现编译执行。可借助于根据字节码的较低的N位计算地址的算术单元4的计算结果决定地址。
第四实施例的特征如下。在存储器上被编译的本机码的地址可根据字节码地址的计算唯一地获得。因而,不需要在检索表2中检索本机码地址。此外,当替换在本机码区中的本机码时(这将在后面说明),不需要寻找要被删除的本机码。因而,简化了替换处理。
第五实施例的说明
第五实施例限制第一实施例中的编译范围,从而缩短编译时间,即改进响应性能。当在编译处理中发现特殊指令例如分支指令或调用方法等时(这在前面定义过),一个停止编译的指令例如本机码的分支指令或中断指令被产生。即,如果分支指令或中断指令在本机码的末端被插入,则字节码的其余部分不被编译。
图10A示出了第五实施例的虚拟计算机中的编译执行控制单元72。第五实施例中的检索表与图4中所示第一实施例中的检索表相同。处理限制单元20查找专用指令,并且在所找到专用指令的点上中断编译。还有,专用指令查找单元21查找诸如IF条件句中的THEN处理或RETURN指令之类的指令。编译结束命令单元25命令结束编译。
图10B示出了由第五实施例的编译执行控制单元72和JIT编译器进行编译的流程图。在步骤S1执行编译。然后,确定专用指令是否存在(S2,S3)。当没有找到专用指令时,在步骤S1继续进行编译。可替换地,当在步骤S3找到专用指令时,在步骤S4结束编译。如上所述,处理限制单元20限制编译范围,以便缩短虚拟计算机中的编译时间。当在编译过程中找到专用指令时,产生用于中断该过程的指令,以便不编译从专用指令开始的其余字节码。
第五实施例的特征在于下面的特征。需要被编译的字节码中只有部分被编译了,因此编译性能很高。例如,当编译一串字节码“IF条件以及THEN处理”时,只有条件“IF”的过程被编译,而不编译“THEN”的过程。
在现有技术中,因为整个方法都被编译,所以从不执行的过程那些部分还是被编译了。另一方面,在本发明的第五实施例中,只有必然执行的部分被编译,因此,在编译上花费的时间比较少,并且该处理能够高速运行。还有,存储器没有被浪费,并且还提高了响应效率。通常,应用程序是在编译的过程中被中断。然而,在本发明中,因为本发明仅仅编译必然用于执行的部分,所以减少了由编译引起的应用程序的被中断的时间。
第六实施例的解释
第六实施例减少了编译时间。第六实施例根据被编译的字节码的量中断该编译,而不是在第五实施例中的查找专用指令。例如,当编译了100个指令时,就中断编译。第六实施例还包括与第五实施例相同的功能,以便在专用指令的步骤上中断该处理。
图11A示出了第六实施例的虚拟计算机的编译执行控制单元的结构。如图11A所示,编译执行控制单元72包括处理限制单元20,其中处理限制单元20由专用指令查找单元21、对被编译的指令数进行计数的指令数计数单元22以及编译结束命令单元25组成。在图11A中,指令数计数单元22对被编译的指令数进行计数。编译结束命令单元25在指令数的计数达到预定数量的时候命令结束该编译。然而,即使指令计数数量没有达到预定数量,在找到专用指令的时候也要结束该编译。
图11B示出了由本发明第六实施例的指令计数值单元22和JIT编译器进行编译的流程图。在该流程的处理(S1)中,确定找到还是没有找到结束编译处理的专用指令(S2,S3)。当找到专用指令时,结束编译处理(S6)。当没有找到专用指令时,确定被编译的指令数(S4,S5)。当指令数小于预定数量时,该处理返回到S1继续编译,而当指令数达到预定数量时,结束编译(S6)。
本发明的第六实施例的特征在于如下特征。因为仅仅编译必然被执行的代码,所以并没有浪费所产生的代码,并且减少了存储器的消耗。因此改善了应用程序的响应能力。通常,是在编译的过程中中断应用程序。然而在本发明中,仅仅编译必然被执行的部分,因此减少了由编译引起的中断时间。此外,由于编译受被编译的指令数的条件的限制,所以减少了存储器消耗的浪费。
图12A示出了本发明第七实施例的虚拟计算机的编译执行控制单元。第七实施例缩短了编译时间。第七实施例除了通过第五实施例中的查找专用指令的条件之外,还通过所产生的本机码的数量的条件进行中断编译。例如,当产生128个本机码时,中断编译。然而,第七实施例包括在查找专用指令的时候中断编译的条件,这与本发明第五实施例中的条件是相同的。
在图12A中,编译执行控制单元72包括处理限制单元20。处理限制单元20由专用指令查找单元21、对被编译的字数(被编译的机器字数)进行计数的字数计数单元23以及编译结束命令单元25构成。在图12A的结构中,字数计数单元23对字数进行计数。在被编译的字数达到预定值时,编译结束命令单元25命令中断该编译。然而,在找到一个专用指令时,即使被编译的字数小于预定值,也要中断该编译。
图12B示出了本发明第七实施例的编译执行控制单元和JIT编译器的流程图。在编译处理(S1)中,确定是否找到用于中断该处理的专用指令(S2,S3)。当找到专用指令时,结束该处理(S6)。当没有找到专用指令时(S2,S3),检测被编译的字数(S4,S5)。当字数小于预定数量时,在步骤S1继续进行编译。或者,当被编译的字数达到预定数量时,结束处理(S6)。
本发明的第七实施例的特征在于如下特征。因为仅仅编译必然被执行的部分,所以没有浪费所产生的本机码,并且减少了存储器的消耗。因此改善了应用程序的响应能力。通常,在编译的过程中中断应用程序。然而在本发明中,仅仅编译必然被执行的部分,因此减少了由编译引起的程序的中断时间。还改善了应用程序的响应性能。此外,因为编译还受被编译的字数的条件的限制,所以必然抑制了存储器消耗的浪费。
第八实施例的解释
第八实施例减少了编译时间。除了查找专用指令的条件之外,编译还根据编译的已用时间的条件进行中断。例如,当编译器已经编译了100ms时,中断该编译。本发明的第八实施例还包括用于在找到专用指令的时候中断编译的条件。
图13A示出了本发明第八实施例的虚拟计算机的编译执行控制单元。编译执行控制单元72包括处理限制单元20、从开始编译算起对已用时间进行计数的编译时间计数单元24以及编译结束命令单元25。在图13A中,编译时间技术单元24对编译处理的已用时间进行计数。当已用时间达到预定时间时,编译结束命令单元25命令中断该编译。然而,当找到专用指令时,即使编译时间小于预定时间,也要中断该编译。
图13B示出了本发明第八实施例的编译执行控制单元和JIT编译器的流程图。在编译处理(S1)中,确定找到还是没有找到专用指令(S2,S3)。如果找到专用指令(S2,S4),则结束编译(S3,S6)。如果没有找到专用指令(S3),则检测该编译的经过时间(S4,S5)。当编译时间的已用时间小于预定时间时,该处理进行至步骤S1。当该编译的已用时间达到预定时间时,结束该处理(S6)。
本发明的第八实施例的特征在于如下特征。所产生的本机码没有浪费,并且减少了存储器的消耗,由于仅编译了必须执行的部分。应用程序的响应性能也被改进了。通常在编译过程中中断应用程序。然而,在本发明中,仅编译必须执行的部分,因此,减少了由编译引起的应用程序的中断时间。此外,由于编译也受到编译的已用时间的条件的限制,所以减少了存储器消耗的浪费。
第九实施例的解释
第九实施例是在代码高速缓存中替换本机码。当没有在该高速缓存中,即本机码区3找到空闲空间(自由空间)时,代码高速缓存中的某些本机码就被依次从该高速缓存的顶部删除。替换的另一种方法是用FIFO(先进先出)实现,FIFO依次从最早编译的代码中进行删除,其中最早编码的代码是在最早的时间被编译的。
图14表示本发明虚拟计算机的第九实施例的检索操作的说明。在图14中,示出了比较器1、检索表2、本机码区3以及JIT编译器73。JIT编译器73由编译单元100和高速缓存块替换单元101组成。
在第九实施例中,P1是指令产生指针,P2是释放指针。P1的初始值指向代码高速缓存的首地址,P2的初始值指向代码高速缓存的尾地址。由于该过程处理许多编译,每当执行编译时,代码高速缓存被划分为块。标记指针,即块的首地址,以及指向下一个块的下一个指针,被产生和存储。块区的其余部分是用于存储本机码的指令区。并不要求下一个指针是所述指针,而可以使用任何标记,以代替指针表示块的边界。
图15示出了本发明第九实施例的代码高速缓存替换的流程图。
这个处理示出了在编译过程中执行在代码高速缓存3中替换的例子。指向检索表2的标记指针被设置为本机码产生区域中的标记指针(S101)。标记指针设置区用图14中所示的P1(指令产生指针)指示。步骤S102、S103、S104和S105是从字节码中产生本机码的编译处理的主要部分。
JIT编译器将字节码转换为本机码(S102)。在将本机码存储在代码高速缓存3中以前,指令产生指针的值和释放指针的值彼此之间进行比较,以便确定指令产生指针是否小于释放指针。这个检测可以防止重写有效的本机码。
当指令产生指针小于释放指针时,即所有的区域都是空闲空间时,产生本机码并且将其写入代码高速缓存3中(S103)。还有,增加指令产生指针,并且确定是否满足编译结束条件(S105)。结果,当不满足编译结束条件时,该处理返回到步骤S102,以便继续进行编译。当满足编译结束条件的条件时,所产生的本机码的块被安排为一个块。也就是,指令产生指针被设置为下一个指针(S106)。当不满足上述条件时,即指令产生指针大于或等于释放指针时,必须产生用于存储所产生的本机码的有效区域。因此,必须检测释放指针是否指向该高速缓存的尾地址。也就是,必须检测释放指针是否小于该高速缓存的尾地址(S107)。结果,当释放指针指向代码高速缓存的尾地址时,释放指针被设置在高速缓存的顶部地址(S108),并且指令产生指针被设置在首块的指令区域中(见图14)(S109)。利用这个处理,该块在代码高速缓存3的顶部地址上被释放。
还有,根据由释放指针所指示的标记指针,清除在检索表2中的标记(S110)。在检索表中的标记通过步骤110的处理被删除,并且由释放指针所指示的块被真正释放。然后,释放指针的设置被改为下一个指针(S111),并且进行步骤S104的处理。通过这种处理,释放指针指向下一个块。
当在S107满足释放指针小于代码高速缓存的尾地址的条件时,由释放指针的标记指针所指示的检索表的标记被删除(S110),并且由释放指针所指示的块被真正释放。此后,释放指针被设置为下一个指针(S111),并且该处理进行S104的处理。通过这种处理,释放指针指向下一个块。
在上述流程图中,当使用FIFO系统时,从最早的代码开始代码被依次删除,并且在步骤S108,释放指针被设置到最近块的顶部。
本发明的第九实施例的特征在于如下特征。由于代码高速缓存包括指向检索表的指针,所以代码高速缓存的块的大小可以在长度上变化,并且存储器可以被有效利用。通过研究整个检索表而不使用指针也可以删除代码高速缓存,但是对于编译而言,研究整个检索表是一个大量的处理工程,并且耗费处理时间。然而,本发明的第九实施例能够删除代码高速缓存的一部分,即本机码区,并且能够高速地执行代码高速缓存的删除。
第十实施例的解释
图16示出了用于解释本发明第十实施例的虚拟计算机的代码高速缓存中的替换的图。在图16中,示出了编译执行控制单元72、计数器值查找单元91、JIT编译器73、计数值更新单元92、编译单元100、本机码执行单元78以及本机码删除单元102。计数值更新单元92对字节码即由解释器实现的指令的数量进行计数,并且对已经访问的所编译的本机码的数量进行计数,并且更新执行计数器的计数值。
在本发明的第十实施例中,当代码高速缓存中没有空闲空间时,计数器值查找单元91通过扫描查找具有最小执行计数值的本机码,并且本机码删除单元102依次从最小执行计数值的本机码中删除本机码。仅在开始编译的时候用任意值设置该执行计数器。随着每次本机码的执行,增加相应于所执行的本机码的执行计数器,并且当删除本机码时,减少所有计数器的值。
图17示出了本发明第十实施例的流程图。第十实施例将参照图17进行解释。步骤S121-S131与图6中的步骤S61-S67是相同的。
在该解释器的处理中,确定字节码是否已经被编译(S121)。当已经被编译时,确定在该表中记录还是没有记录该字节码,以确定该字节代码是否被记录在检索表2的标记中(S122)。结果,当该字节代码没有被记录在标记表中时,实现该字节代码的字节码的地址的记录(S123),并且清除执行计数器(S124)。然后,取指令,并进行译码(S125,S126)。该指令按照之前所述的方法执行(S127),并且该处理进一步进行步骤S121。
当在步骤S122确定字节码地址已经被记录在该表中时,将检索表2的执行计数器正向增加(+1)(S129),并且确定该计数器值是否超过预定值(S130)。结果,当该值小于固定值时,该处理进行至将由解释器执行的步骤S125。当执行时间的数值大于或等于固定值时,由编译器编译该字节码,以便产生本机码(S132),并且将所产生的本机码记录在代码高速缓存中(S132)。同时,设置检索表2的执行计数器。然后,执行在处理S123中所记录的本机码(S133),并且该处理进行至处理S121。在处理S121,当确定已经编译了该字节代码时,将检索表2的执行计数器正向增加(+1),该处理进行至步骤S133。
在步骤S131的处理中,当产生本机码时,确定该代码高速缓存3中有空闲空间(S134)。当代码高速缓存3中有空闲空间时,该处理返回到步骤S131。当代码高速缓存3中没有空闲空间时,扫描该检索表中所有的执行计数器,并且减少所有的执行计数器(S135)。然后,删除执行次数的数量少的项,以便在代码高速缓存3中腾出空闲空间(S136)。然后,该处理进行至步骤S131。
本发明的第十实施例的特征在于如下特征。被频繁执行的本机码几乎不被删除。然而,空闲空间被分散在代码高速缓存区中,并且需要分支指令到基本上不是必需的分散代码。
第十一实施例的解释
第十一实施例是在代码高速缓存中靠扰本机码的例子,其中该代码高速缓存中空闲空间被分散在本机码中。在第十实施例中,必然引起代码高速缓存3中分散的空闲空间。在一个编译处理中产生的本机码的分散块被移动或重定位,以便在本机码的位置中相邻。
图18A是用于本发明虚拟计算机的第十一实施例的动作的图。在图18A中,示出了在本机码块的重定位之前的本机码区3、在重定位之后的本机码区3以及重定位单元90。重定位单元90查找空间区域A和C,并且靠扰本机码块的块。图18B示出了本机码的重定位的流程图。当重定位单元90在本机码块之间查找空间区域时(S1),空间区域的顶部地址被替换为相邻于空闲空间的本机码块的顶部地址(S2)。还有,本机码的被移动的块的尾地址被重定位为本机码的被移动的块的尾部地址(S3)。
本发明的第十一实施例的特征在于如下特征。不需要插入分支指令以用于连接由被分散的空间区域所引起的被分隔的指令。在本发明的第十一实施例中,将要执行的指令队列被紧密地定位在代码高速缓存中,并且总是被配置为一个块,因此,代码高速缓存就得以有效利用,并且改进了性能。
图19A和19B示出了用于解释改善命中率的图。本发明的检索表的标记能够被应用到两种情况。一种情况是为本机码区中的每个指令产生标记。另一种情况是为一个编译序列产生标记。图19A示出了为每个指令产生标记的情况。图19B示出了为一个编译序列产生标记的情况。
在所有被编译的字节码的地址被记录到入图19A所示的检索表中的情况下,由于检索表的项数的限制,在检索表2上的重写将会增加。据此,增加检索表上被编译的本机码的删除。它会引起非命中的增加,并且使得编译是一个浪费。但是,如图19B所示的为一个编译序列产生标记的情况能够防止这些不好的表现。
图20示出了包括本发明的虚拟计算机的蜂窝式电话。本发明的虚拟计算机能够被应用到存储器尺寸很小的便携式无线通信装置。图20示出了应用到蜂窝式电话的一个例子。在图20中,没有示出与本发明不相关的结构。
在图20所示的蜂窝式电话60中,输入单元62输入从服务器51中发送出的字节码。存储器的字节码存储区域63保存所输入的字节码。对于字节码,编译该方法64和65。图20中示出了虚拟计算机66、解释器71、编译执行控制单元72、JIT编译器73、CPU80以及本机码执行单元78。本机码区3是用于存储本机码的存储器区。输出单元82输出所计算的结果。标记产生单元74在检索表2中产生标记。检索表检索单元76检索该检索表,确定字节码是否已经被编译并且已经存储在本机码区中。
因为图20中的虚拟计算机的动作与图2中的虚拟计算机的动作相同,所以省略了对动作的详细解释。
应用于工业的可行性
本发明包括检索表,该检索表包括信息,以便确定字节码是否已经根据字节码的地址进行了编译,并且检索被编译的本机码的地址。因此,字节码已经被编译还是没有编译就能够很容易地根据检索表进行确定,并且被编译地本机码的已存储的地址也能够很容易地通过检索该检索表进行查找。结果,通过将字节代码编译为本机码,提高了程序的执行速度。与现有技术的JIT编译器所使用的存储器大小相比,用于产生并存储本机码的存储器大小被极大地减小了。因此,随着本发明中采用小的存储器大小,处理速度也增加了。
由于这些特征,本发明的虚拟计算机能够被应用到蜂窝式电话、PDA等,它们都是具有小的存储器大小的便携式无线通信装置,而且,本发明的虚拟计算机能够使得这些装置的运行速度很高。
Claims (22)
1.一种在存储器中实现的虚拟计算机,包括:
字节码存储区,用于存储被所述虚拟计算机执行的字节码;
通过按顺序解释字节码来执行字节码的解释器;
将字节码编译为虚拟计算机执行的本机码的编译器;以及
本机码区;
检索表,用于存储从字节码的地址和本机码区中的编译过的本机码的地址产生的标记信息;
检索表检索单元,用于对检索表进行检索,并决定字节码是否被编译并被记录在本机码区;以及
编译执行控制单元,根据检索表检索单元的搜索结果决定是否需要编译及决定编译的部分。
2.根据权利要求1的虚拟计算机,还包括:
执行计数器,被形成在检索表中或本机码区中,用于对指令执行次数进行计数;以及
编译执行控制单元,其中
编译执行控制单元在执行字节码的过程中检测执行计数器的值,当该值小于一个事先确定的值时,解释器通过依次解释字节码来执行字节码,以及
当该值大于或等于所述确定值时,编译器编译字节码,并且所述执行被实施。
3.根据权利要求1的虚拟计算机,还包括:
记录单元,用于将字节码地址和本机码地址记录在所述检索表中;以及
编译执行控制单元,其中
在第一次执行时,记录单元仅在检索表中记录本机码地址以及用于本机码地址的专用值或0,以及
在随后的执行中,所述编译执行控制单元控制及时供应编译器,使得及时供应编译器将字节码编译为虚拟计算机能够执行的本机码。
4.根据权利要求1的虚拟计算机,还包括:
编译执行控制单元,用于限制编译范围以便缩短编译时间,其中当找到预定的专用指令时,编译执行控制单元产生一个指令以用于中断编译并且不编译该过程的剩余部分。
5.根据权利要求1的虚拟计算机,还包括:
第一丢弃单元,用于当本机码区中不存在空闲空间时,从本机码区的顶部地址开始依次丢弃本机码。
6.根据权利要求1的虚拟计算机,还包括:
第二丢弃单元,用于当本机码区中不存在空闲空间时,通过FIFO机制丢弃最早的本机码。
7.根据权利要求1的虚拟计算机,还包括:
运算单元,用于根据字节码地址计算本机码地址,其中检索表只包括用于确定该字节码是否被编译的信息,并且根据字节码地址通过运算单元的运算来计算本机码地址。
8.根据权利要求4的虚拟计算机,
其中,当发现一个预定数量的被编译的字节码和专用指令时,编译执行控制单元控制编译的中断。
9.根据权利要求4的虚拟计算机,其中当发现一个预定数量的所产生的本机码和专用指令时,编译执行控制单元控制编译的中断。
10.根据权利要求4的虚拟计算机,其中当发现经过一个预定的编译时间以及专用指令时,编译执行控制单元控制编译的中断。
11.一种操作在存储器中实现的虚拟计算机的方法,包括:
在字节码存储区中存储字节码;
通过按顺序解释字节码来执行字节码;
将字节码编译为虚拟计算机执行的本机码;
在检索表的本机码区中存储从字节码的地址和本机码区中本机码的地址产生的标记信息;
利用检索表检索单元对检索表进行检索,并决定字节码是否被编译并被记录在本机码区;以及
利用编译执行控制单元,根据检索表检索单元的搜索结果决定是否需要编译及决定编译的部分。
12.根据权利要求11的虚拟计算机的操作方法,还包括:
利用被形成在检索表中或者本机码区中的执行计数器对指令执行的次数进行计数,
其中,在执行字节码的过程中检测执行计数器的值,当该值小于一个事先确定的值时,由解释器执行字节码,以及
当该值大于或等于所述事先确定的值时,编译器编译字节码,所述执行被实施。
13.根据权利要求11的虚拟计算机的操作方法,
其中编译范围被限制,以便当发现一个预定的专用指令时,中断编译并且不编译该处理的其余部分以缩短编译时间。
14.根据权利要求11的虚拟计算机的操作方法,其中当在本机码区中不存在空闲空间时,依次从本机码区的顶部地址开始丢弃本机码。
15.根据权利要求11的虚拟计算机的操作方法,其中当本机码区中不存在空闲空间时,通过FIFO机制依次丢弃最早的本机码。
16.根据权利要求11的虚拟计算机的操作方法,
其中检索表只包括用于确定字节码是否被编译的信息,并且基于字节码地址通过运算单元的运算来计算本机码地址。
17.根据权利要求13的虚拟计算机的操作方法,
其中当发现一个预定数量的被编译的字节码和所述专用指令时,中断编译。
18.根据权利要求13的虚拟计算机的操作方法,
其中当发现一个预定数量的所产生的本机码和所述专用指令时,中断编译。
19.根据权利要求13的虚拟计算机的操作方法,
其中当发现经过一个预定的编译时间和所述专用指令时,中断编译。
20.一种终端设备,包括:
在存储器中实现的虚拟计算机,其包括字节码存储区;
通过按顺序解释字节码来执行字节码的单元;
将字节码编译为虚拟计算机执行的本机码的编译器;以及
本机码区;
检索表,用于存储从字节码的地址和本机码区中本机码的地址产生的标记信息;
检索表检索单元,用于对检索表进行检索,并决定字节码是否被编译并被记录在本机码区;以及
编译执行控制单元,根据检索表检索单元的搜索结果决定是否需要编译及决定编译的部分。
21.根据权利要求20的终端设备,其中终端设备是便携式终端设备。
22.根据权利要求20的终端设备,其中终端设备是便携式无线终端设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP341577/2001 | 2001-11-07 | ||
JP2001341577A JP3808755B2 (ja) | 2001-11-07 | 2001-11-07 | Jitコンパイラを備えた仮想計算機 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1613058A CN1613058A (zh) | 2005-05-04 |
CN100354826C true CN100354826C (zh) | 2007-12-12 |
Family
ID=19155584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028267303A Expired - Fee Related CN100354826C (zh) | 2001-11-07 | 2002-11-07 | 配有jit编译器的虚拟计算机及其方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20040210865A1 (zh) |
EP (1) | EP1445695A4 (zh) |
JP (1) | JP3808755B2 (zh) |
KR (1) | KR20040063923A (zh) |
CN (1) | CN100354826C (zh) |
WO (1) | WO2003040918A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957770A (zh) * | 2010-10-09 | 2011-01-26 | 中兴通讯股份有限公司 | 一种移动设备上应用程序的启动方法及装置 |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040044988A1 (en) * | 2002-08-29 | 2004-03-04 | Schene Christopher Robin | Generation of compiled code for simulator speed up |
JP4701611B2 (ja) * | 2004-01-15 | 2011-06-15 | 株式会社日立製作所 | 動的変換方式のエミュレータ向けメモリ管理方法 |
US7412693B2 (en) * | 2004-03-05 | 2008-08-12 | Sun Microsystems, Inc. | Method and apparatus for determining frequency of execution for compiled methods within a virtual machine |
GB0410151D0 (en) * | 2004-05-07 | 2004-06-09 | Zeus Technology Ltd | Load balancing & traffic management |
JP4846226B2 (ja) * | 2004-10-26 | 2011-12-28 | 株式会社日立ソリューションズ | 情報処理装置、情報処理方法、およびプログラム |
DE102004056006B3 (de) * | 2004-11-19 | 2006-03-23 | Fujitsu Siemens Computers Gmbh | Verfahren zur Emulation eines für einen Ursprungsprozessor in einem Ursprungscode erstellten Programms auf einem Zielprozessor |
US7707547B2 (en) * | 2005-03-11 | 2010-04-27 | Aptana, Inc. | System and method for creating target byte code |
US7844958B2 (en) * | 2005-03-11 | 2010-11-30 | Aptana, Inc. | System and method for creating target byte code |
DE102005015746A1 (de) * | 2005-04-06 | 2006-10-12 | Man Roland Druckmaschinen Ag | Druckmaschinensimulator |
KR100763199B1 (ko) * | 2006-02-20 | 2007-10-04 | 삼성전자주식회사 | 가상 머신 환경에서의 메소드 호출 방법 및 상기 방법을수행하는 가상 머신이 탑재된 시스템 |
US7784041B2 (en) * | 2006-03-30 | 2010-08-24 | Oracle America, Inc. | Mechanism for reducing detectable pauses in dynamic output caused by dynamic compilation |
US7963839B2 (en) * | 2006-09-19 | 2011-06-21 | Mudalla Technology, Inc. | Regulated gaming exchange |
US8341609B2 (en) * | 2007-01-26 | 2012-12-25 | Oracle International Corporation | Code generation in the presence of paged memory |
US8037460B2 (en) * | 2007-01-26 | 2011-10-11 | Oracle International Corporation | Code persistence and dependency management for dynamic compilation in a database management system |
US8413125B2 (en) * | 2007-01-26 | 2013-04-02 | Oracle International Corporation | Asynchronous dynamic compilation based on multi-session profiling to produce shared native code |
KR101407629B1 (ko) * | 2007-06-04 | 2014-06-13 | 더 보드 오브 리젠츠 오브 더 유니버시티 오브 텍사스 시스템 | 자바 변환 가속 장치 및 방법 |
KR101407628B1 (ko) * | 2007-06-04 | 2014-06-13 | 더 보드 오브 리젠츠 오브 더 유니버시티 오브 텍사스 시스템 | 작업 수행 속도를 향상시키는 장치 및 방법 |
US8914774B1 (en) | 2007-11-15 | 2014-12-16 | Appcelerator, Inc. | System and method for tagging code to determine where the code runs |
US8954989B1 (en) | 2007-11-19 | 2015-02-10 | Appcelerator, Inc. | Flexible, event-driven JavaScript server architecture |
US8260845B1 (en) | 2007-11-21 | 2012-09-04 | Appcelerator, Inc. | System and method for auto-generating JavaScript proxies and meta-proxies |
US8719451B1 (en) | 2007-11-23 | 2014-05-06 | Appcelerator, Inc. | System and method for on-the-fly, post-processing document object model manipulation |
US8566807B1 (en) | 2007-11-23 | 2013-10-22 | Appcelerator, Inc. | System and method for accessibility of document object model and JavaScript by other platforms |
US8819539B1 (en) | 2007-12-03 | 2014-08-26 | Appcelerator, Inc. | On-the-fly rewriting of uniform resource locators in a web-page |
US8756579B1 (en) | 2007-12-03 | 2014-06-17 | Appcelerator, Inc. | Client-side and server-side unified validation |
US8806431B1 (en) | 2007-12-03 | 2014-08-12 | Appecelerator, Inc. | Aspect oriented programming |
US8527860B1 (en) | 2007-12-04 | 2013-09-03 | Appcelerator, Inc. | System and method for exposing the dynamic web server-side |
US8938491B1 (en) | 2007-12-04 | 2015-01-20 | Appcelerator, Inc. | System and method for secure binding of client calls and server functions |
US8285813B1 (en) | 2007-12-05 | 2012-10-09 | Appcelerator, Inc. | System and method for emulating different user agents on a server |
US8335982B1 (en) | 2007-12-05 | 2012-12-18 | Appcelerator, Inc. | System and method for binding a document object model through JavaScript callbacks |
US8639743B1 (en) | 2007-12-05 | 2014-01-28 | Appcelerator, Inc. | System and method for on-the-fly rewriting of JavaScript |
US8516459B2 (en) * | 2008-03-25 | 2013-08-20 | Intel Corporation | XSLT-specific XJIT compiler |
US8490077B2 (en) * | 2008-05-15 | 2013-07-16 | Microsoft Corporation | Runtime versioning and distribution of dynamic web-elements |
US8291079B1 (en) | 2008-06-04 | 2012-10-16 | Appcelerator, Inc. | System and method for developing, deploying, managing and monitoring a web application in a single environment |
US8880678B1 (en) | 2008-06-05 | 2014-11-04 | Appcelerator, Inc. | System and method for managing and monitoring a web application using multiple cloud providers |
GB2475648A (en) | 2008-08-05 | 2011-05-25 | Wms Gaming Inc | Mash-up wagering game creation |
US7596620B1 (en) | 2008-11-04 | 2009-09-29 | Aptana, Inc. | System and method for developing, deploying, managing and monitoring a web application in a single environment |
US9250938B2 (en) * | 2008-10-15 | 2016-02-02 | Microsoft Technology Licensing, Llc | Caching runtime generated code |
JP2010140233A (ja) * | 2008-12-11 | 2010-06-24 | Nec Computertechno Ltd | エミュレーションシステム及びエミュレーション方法 |
KR100930831B1 (ko) * | 2009-03-24 | 2009-12-10 | 주식회사 에이디칩스 | 바이트코드 변환 가속 장치 및 그 방법 |
JP5460430B2 (ja) | 2010-04-05 | 2014-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 動的コンパイラプログラム、動的コンパイル方法及び動的コンパイル装置 |
US8938728B2 (en) | 2010-04-05 | 2015-01-20 | International Business Machines Corporation | Dynamic compiler program, dynamic compiling method and dynamic compiling device |
WO2012105000A1 (ja) * | 2011-02-01 | 2012-08-09 | 富士通株式会社 | プログラム実行方法 |
JP2013061810A (ja) * | 2011-09-13 | 2013-04-04 | Fujitsu Ltd | 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム |
CN103092618A (zh) * | 2013-01-15 | 2013-05-08 | 东南大学 | 基于软件Cache的Dalvik虚拟机JIT加速方法 |
US9003382B2 (en) * | 2013-02-18 | 2015-04-07 | Red Hat, Inc. | Efficient just-in-time compilation |
US9239712B2 (en) * | 2013-03-29 | 2016-01-19 | Intel Corporation | Software pipelining at runtime |
CN103984531B (zh) * | 2014-05-30 | 2016-09-28 | 龙芯中科技术有限公司 | 超长分支跳转处理方法及装置 |
JP6287650B2 (ja) * | 2014-07-10 | 2018-03-07 | 富士通株式会社 | シミュレーション方法、シミュレーションプログラム |
US9696973B1 (en) * | 2016-02-24 | 2017-07-04 | Semmle Limited | Compilation cache with imports scanner |
US9934051B1 (en) * | 2017-04-17 | 2018-04-03 | Futurewei Technologies, Inc. | Adaptive code generation with a cost model for JIT compiled execution in a database system |
US10783082B2 (en) | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
US10802854B2 (en) * | 2019-08-30 | 2020-10-13 | Alibaba Group Holding Limited | Method and apparatus for interpreting bytecode instruction stream |
US20220253488A1 (en) | 2019-09-27 | 2022-08-11 | Intel Corporation | Methods and apparatus to process a machine learning model in a web-browser environment |
US20210397425A1 (en) | 2020-06-22 | 2021-12-23 | Apple Inc. | Systems and Methods for Performing Binary Translation |
CN112925523B (zh) * | 2021-03-02 | 2024-06-21 | 京东科技控股股份有限公司 | 对象比较方法、装置、设备及计算机可读介质 |
US11972240B2 (en) * | 2021-12-03 | 2024-04-30 | Samsung Electronics Co., Ltd. | Systems and methods for automapping source code to machine code |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1234551A (zh) * | 1997-10-06 | 1999-11-10 | 太阳微系统有限公司 | 动态优化字节编码程序的方法和装置 |
JP2000172512A (ja) * | 1998-12-03 | 2000-06-23 | Internatl Business Mach Corp <Ibm> | バイトコ―ドを実行するための方法およびデ―タ処理システム |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5560013A (en) * | 1994-12-06 | 1996-09-24 | International Business Machines Corporation | Method of using a target processor to execute programs of a source architecture that uses multiple address spaces |
US6226789B1 (en) * | 1996-01-29 | 2001-05-01 | Compaq Computer Corporation | Method and apparatus for data flow analysis |
US5768593A (en) * | 1996-03-22 | 1998-06-16 | Connectix Corporation | Dynamic cross-compilation system and method |
JPH09282174A (ja) * | 1996-04-10 | 1997-10-31 | Hitachi Ltd | プログラム実行方法 |
JPH1097431A (ja) * | 1996-07-31 | 1998-04-14 | Fujitsu Ltd | シミュレーション装置及びシミュレーション方法並びにコンピュータ読取可能な記録媒体 |
JP3632344B2 (ja) * | 1997-01-06 | 2005-03-23 | 日産自動車株式会社 | 半導体装置 |
US5933635A (en) * | 1997-10-06 | 1999-08-03 | Sun Microsystems, Inc. | Method and apparatus for dynamically deoptimizing compiled activations |
US6170083B1 (en) * | 1997-11-12 | 2001-01-02 | Intel Corporation | Method for performing dynamic optimization of computer code |
US6760907B2 (en) * | 1998-06-30 | 2004-07-06 | Sun Microsystems, Inc. | Code generation for a bytecode compiler |
JP2000215181A (ja) * | 1999-01-21 | 2000-08-04 | Fujitsu Ltd | ネットワ―クコンピュ―タシステム及び代理コンパイルサ―バ装置 |
JP3470948B2 (ja) * | 1999-01-28 | 2003-11-25 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ |
US6295642B1 (en) * | 1999-04-29 | 2001-09-25 | International Business Machines Corporation | Method and apparatus for partial just in time compiling in a data processing system |
GB9921720D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
US6880152B1 (en) * | 1999-10-13 | 2005-04-12 | Transmeta Corporation | Method of determining a mode of code generation |
US7290254B2 (en) * | 2003-03-25 | 2007-10-30 | Intel Corporation | Combining compilation and instruction set translation |
US7257657B2 (en) * | 2003-11-06 | 2007-08-14 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses for specific types of instructions |
-
2001
- 2001-11-07 JP JP2001341577A patent/JP3808755B2/ja not_active Expired - Fee Related
-
2002
- 2002-11-07 KR KR10-2004-7006877A patent/KR20040063923A/ko not_active Application Discontinuation
- 2002-11-07 EP EP02775508A patent/EP1445695A4/en not_active Withdrawn
- 2002-11-07 CN CNB028267303A patent/CN100354826C/zh not_active Expired - Fee Related
- 2002-11-07 WO PCT/JP2002/011599 patent/WO2003040918A1/ja active Application Filing
-
2004
- 2004-05-06 US US10/839,310 patent/US20040210865A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1234551A (zh) * | 1997-10-06 | 1999-11-10 | 太阳微系统有限公司 | 动态优化字节编码程序的方法和装置 |
US5995754A (en) * | 1997-10-06 | 1999-11-30 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing byte-coded programs |
JP2000172512A (ja) * | 1998-12-03 | 2000-06-23 | Internatl Business Mach Corp <Ibm> | バイトコ―ドを実行するための方法およびデ―タ処理システム |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957770A (zh) * | 2010-10-09 | 2011-01-26 | 中兴通讯股份有限公司 | 一种移动设备上应用程序的启动方法及装置 |
WO2012045238A1 (zh) * | 2010-10-09 | 2012-04-12 | 中兴通讯股份有限公司 | 一种移动设备上应用程序的启动方法及装置 |
US8726249B2 (en) | 2010-10-09 | 2014-05-13 | ZTE Corportaion | Bootup method and device for application program in mobile equipment |
CN101957770B (zh) * | 2010-10-09 | 2015-09-02 | 中兴通讯股份有限公司 | 一种移动设备上应用程序的启动方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP1445695A1 (en) | 2004-08-11 |
KR20040063923A (ko) | 2004-07-14 |
EP1445695A4 (en) | 2005-05-04 |
WO2003040918A1 (fr) | 2003-05-15 |
CN1613058A (zh) | 2005-05-04 |
JP2003140909A (ja) | 2003-05-16 |
US20040210865A1 (en) | 2004-10-21 |
JP3808755B2 (ja) | 2006-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100354826C (zh) | 配有jit编译器的虚拟计算机及其方法 | |
KR100713738B1 (ko) | 제로 오버헤드 예외 처리 | |
US6446254B1 (en) | Packaging memory image files | |
US5748963A (en) | Adaptive binding | |
US6324689B1 (en) | Mechanism for re-writing an executable having mixed code and data | |
US4330822A (en) | Recursive system and method for binding compiled routines | |
US5396622A (en) | Efficient radix sorting system employing a dynamic branch table | |
EP0838755B1 (en) | Binary program conversion apparatus and method | |
CN1119756C (zh) | 用于进行静态初始化的方法和系统 | |
US6701520B1 (en) | Preventing garbage collection of objects in object oriented computer programming languages | |
US20020019930A1 (en) | Fast instruction profiling and effective trace selection | |
EP0950219B1 (en) | Selective emulation interpretation using transformed instructions | |
KR100421234B1 (ko) | 플랫폼-독립형 가상기계의 기호표 탐색 최적화 | |
McDaniel | An Analysis of a Mesa Instruction Set | |
CN101847096B (zh) | 包含栈变量函数的优化方法 | |
CN109643237A (zh) | 分支目标缓冲器压缩 | |
EP0202421A2 (en) | Batch file processing | |
US6651245B1 (en) | System and method for insertion of prefetch instructions by a compiler | |
CN1151047A (zh) | 将指令装入指令高速缓冲存储器中的方法 | |
US7530063B2 (en) | Method and system for code modification based on cache structure | |
JP4684571B2 (ja) | エミュレーションコンピュータ技術を実行する直接命令 | |
WO1986007478A1 (en) | Addressing environment storage for accessing a stack-oriented memory | |
Glass | An elementary discussion of compiler/interpreter writing | |
WO2021036173A1 (zh) | 解释执行字节码指令流的方法及装置 | |
US6934726B2 (en) | Storing and retrieving of field descriptors in Java computing environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |