首页> 中国专利> 增加任务执行速度的方法和设备

增加任务执行速度的方法和设备

摘要

提供一种增加任务执行速度的方法和设备,具体地讲,提供一种通过将代码编译为字节码,并以块而非以字节码为单位执行本地代码来增加任务执行速度的方法和设备,其中,所述块是一组一连串的字节码。所述设备包括:接收单元,接收字节码;控制单元,识别接收的字节码是否是块的最后字节码;和发送单元,基于识别的结果发送与包括在所述块中的一个或多个字节码相应的一个或多个本地代码中的第一本地代码的地址。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-07-21

    未缴年费专利权终止 IPC(主分类):G06F9/45 授权公告日:20140604 终止日期:20160603 申请日:20080603

    专利权的终止

  • 2014-06-04

    授权

    授权

  • 2010-05-05

    实质审查的生效 IPC(主分类):G06F9/45 申请日:20080603

    实质审查的生效

  • 2009-01-14

    公开

    公开

说明书

本申请要求于2007年6月4日提交到韩国知识产权局的第10-2007-0054661号韩国专利申请的优先权,其公开完整地包含于此,以资参考。

技术领域

根据本发明的设备和方法涉及增加任务执行速度,更具体地讲,涉及通过将代码编译为字节码并以块而非字节码为单位执行本地代码来增加任务执行速度,其中,所述块是一组一连串的字节码。

背景技术

Java是能够在任何平台上执行的面向对象的编程语言。平台指的是程序或软件(如操作系统(OS))在其上运行的硬件。用Java编写的代码通过Java编译器被编译为字节码,并且字节码通过在各种平台上引入的Java虚拟机来执行。

字节码是命令语言(如,机器语言),并且不依赖于特定的处理器。字节码通过虚拟机来执行。也就是说,虚拟机将字节码解释为相应的本地代码。因为字节码不限于特定架构,所以可以在具有Java虚拟机的任何架构上运行。因此,二进制字节码文件能够以独立于平台的方式被执行。

然而,Java的主要缺点在于执行速度。在特定架构上编译的程序比字节码运行的更快,这是因为在特定架构上编译的程序直接在硬件上运行,而无需将在另一处理器架构上被模拟的处理器架构。

对于字节码,在处理器上运行的Java虚拟机必须在开始其操作之前将字节码转换为本地代码。

正在尝试各种硬件或软件技术以增加字节码的执行速度。例如,诸如即时(JIT)编译器或比JIT编译器更快的热点(hotspot)JIT编译器的软件技术已经被用来增加Java虚拟机的速度。JIT编译器在产生本地处理器命令时伴随有编译开销和内存开销。

作为增加字节码的解释速度的硬件技术,正在尝试修改处理器架构的技术和使用外部处理器的技术。

图1是示出将字节码转换为本地代码并执行该本地代码的传统方法的流程图。

参照图1,在中央处理单元(CPU)上运行的软件程序加载字节码,并且处理器将字节码或字节码的地址发送到Java解释加速器(S10)。当发送字节码的地址时,可调用位于该地址的字节码。

然后,将字节码输入到包括在字节码解释器中的状态机,并且状态机在本地代码高速缓存中搜索字节码的被高速缓存和解释的版本(即,本地代码)(S20)。如果在本地代码高速缓存中发现了本地代码,则将本地代码的地址发送到处理器(S60)。因此,从位于该地址的本地代码开始顺序执行本地代码(S70)。

如果在本地代码高速缓存中没有发现本地代码,则状态机搜索字节码解释查询表(S30)。字节码解释查询表表示存储的以便映射或转换字节码的信息。确定字节码是否存在于查询表中(S40)。如果字节码不存在,则处理结束。如果字节码存在于查询表中,则将本地代码的解释的版本复制到本地代码高速缓存(S50)。处理器接收到本地代码高速缓存中的本地代码的地址(S60),并且从与位于该地址的本地代码相应的命令开始执行与本地代码相应的命令(S70)。

在执行最终解释的字节码的本地代码之后,将控制权移交给负责继续解释接下来的字节码的软件或硬件程序。在执行解释的字节码的最后阶段执行这种切换。

然而,因为切换由于额外开销而引起性能损失,所以需要能够通过减小切换的频率来提高系统性能的发明。

发明内容

本发明的示例性实施例克服上述缺点和以上未提及的缺点。此外,本发明不需要克服上述缺点,并且本发明的示例性实施例可不克服上述任何问题。本发明在于提供一种通过将代码编译为字节码并以块为单位执行本地代码来增加任务执行速度的设备和方法,其中,所述块是一组一连串的字节码。

根据本发明的一方面,提供了一种增加任务执行速度的设备。所述设备包括:接收单元,接收字节码;控制单元,识别接收的字节码是否是块的最后字节码;和发送单元,基于识别的结果发送与包括在所述块中的一个或多个字节码相应的一个或多个本地代码中的第一本地代码的地址。

根据本发明的另一方面,提供了一种增加任务执行速度的方法。所述方法包括:接收字节码;识别接收的字节码是否是块的最后字节码;和基于识别的结果发送与包括在所述块中的一个或多个字节码相应的一个或多个本地代码中的第一本地代码的地址。

附图说明

通过参照附图对示例性实施例进行的详细描述,本发明的上述和其他方面和特点将会变得更清楚,其中:

图1是示出将字节码转换为本地代码并执行该本地代码的传统方法的流程图;

图2是根据本发明示例性实施例的增加任务执行速度的设备的框图;

图3是包括在图2的设备中的状态机的详细框图;

图4是示出根据本发明示例性实施例的以块为单位分组的本地代码的示图;

图5是示出根据本发明示例性实施例的基于分支命令(branch command)形成的块的示图;和

图6是示出根据本发明示例性实施例的增加任务执行速度的方法的流程图。

具体实施方式

通过参考以下示例性优选实施例的详细描述和附图,本发明的各方面和特点以及实现本发明的方法可以更容易地被理解。然而,本发明可以许多不同的形式被实现,并且不应该被解释为限于在这里阐述的示例性实施例。相反地,这些示例性实施例被提供以便本公开是全面的和完整的,并且向本领域的技术人员完全地传达本发明的概念,本发明仅由权利要求限定。贯穿说明书,相同的标号表示相同的部件。

在下文中,将参照附图详细地描述本发明的示例性实施例。

图2是根据本发明示例性实施例的增加任务执行速度的设备的框图。参照图2,所述设备(在下文中称为“加速设备”)包括处理器100和解释加速器200。解释加速器200包括本地代码高速缓存210和字节码解释器220。

处理器100将字节码110发送到解释加速器200,接收与发送的字节码110相应的本地代码130,并执行与接收的本地代码130相应的命令。字节码110是程序代码被编译成的命令语言(如机器语言),并且包括独立于平台的代码。

处理器100可将字节码110的地址,而非字节码110,发送到解释加速器200。在这种情况下,处理器100可接收与字节码110相应的本地代码130,并执行与接收的本地代码130相应的命令。

为了执行与接收的本地代码130相应的命令,处理器100从解释加速器200接收本地代码的地址120,并从与位于接收的地址120的本地代码相应的命令开始,执行与存在于接收的地址120之后的地址的本地代码130相应的命令。也就是说,处理器100不是发送一个字节码并接收与所述字节码相应的本地代码。相反,处理器100发送多个字节码并执行与接收的多个本地代码相应的多个命令。

将被处理器100执行的本地代码130可以以预定块为单位而存在。块的最后本地代码可包括指示其位于块的末尾的信息。因此,处理器100执行与包括在块中的一连串本地代码相应的多个命令。在执行与块的最后本地代码相应的命令之后,处理器100接收下一块的第一本地代码的地址,并执行下一块的命令。

解释加速器200从处理器100接收字节码110,并将包括接收的字节码110的块中的第一本地代码的地址(即,地址120)发送到处理器100。

解释加速器200可从处理器100接收字节码110的地址,而非字节码110。在这种情况下,解释加速器200可使用位于接收的地址的字节码110来发送本地代码的地址120。

为了接收字节码110和发送本地代码130,解释加速器200可包括字节码解释器220。字节码解释器220包括状态机300和查询表225。

状态机300识别从处理器100接收的每个字节码110是否是块的最后字节码,并基于识别结果发送本地代码的地址120。

也就是说,如果每个接收的字节码110不是块的最后字节码,则状态机300将与每个字节码110相应的本地代码存储在本地代码高速缓存210中。如果每个接收的字节码110是块的最后字节码,则状态机300将与块的第一字节码相应的本地代码的地址120发送到处理器100。稍后将参照图3详细地描述状态机300。

根据本实施例的加速设备将程序代码编译为字节码,将字节码解释为相应的本地代码,并执行该本地代码。程序代码可包括Java代码,然而这并不表示本实施例的加速设备只根据Java代码来执行任务。应该理解,加速设备在实时地执行编译和解释的所有环境下操作。

图3是包括在图2的加速设备中的状态机300的详细框图。状态机300包括接收单元310、解释器320、数据管理单元330、控制单元340、代码识别单元350、查询表搜索单元360和发送单元370。

接收单元310从处理器100接收字节码。如果处理器100发送字节码的地址,则接收单元310可接收字节码的地址。

代码识别单元350识别与接收的字节码相应的本地代码是否存在于本地代码高速缓存210中。本地代码高速缓存210是能够被高速读取和写入的存储空间,它临时存储本地代码。代码识别单元350识别与接收的字节码相应的本地代码是否存储在本地代码高速缓存210中。

查询表搜索单元360搜索查询表225以识别接收的字节码是否存在于查询表225中。查询表225说明字节码和本地代码之间的相应关系。通过搜索查询表225,查询表搜索单元360可识别是否存在与特定字节码相应的本地代码以及该本地代码存在于何处。

解释器320将接收的字节码解释为本地代码。也就是说,如果代码识别单元350确定与接收的字节码相应的本地代码没有存储在本地代码高速缓存210中,并且如果查询表搜索单元360的搜索结果指示不存在与接收的字节码相应的本地代码,则解释器320分析接收的字节码并产生本地代码。

数据管理单元330将本地代码存储在本地代码高速缓存210中。也就是说,当查询表搜索单元360识别出与接收的字节码相应的本地代码的位置时,数据管理单元330将本地代码存储在本地代码高速缓存210中。可选择地,当解释器320产生本地代码时,数据管理单元330将产生的本地代码存储在本地代码高速缓存210中。

数据管理单元330响应于从控制单元340接收的控制命令来存储本地代码。数据管理单元330可根据接收控制命令的顺序来顺序地将本地代码存储在本地代码高速缓存210的存储空间中。例如,当前本地代码被存储在与前一存储的本地代码相邻的地址。

数据管理单元330可包括说明是否存储有本地代码以及本地代码存储在何处的索引表。在这种情况下,数据管理单元330可将本地代码存储在本地代码高速缓存210的任意位置。一旦存储了本地代码,则数据管理单元330就可更新索引表。

控制单元340识别接收的字节码是否是块的最后字节码。块的最后字节码可包括指示其位于块的末尾的信息。控制单元340使用该信息来识别接收的字节码是否是块的最后字节码。例如,每个字节码可包括指示其是否是最后字节码的标志。如果标志的值是0,则字节码不是最后字节码。如果标志的值是1,则可将字节码设置为最后字节码。

此外,控制单元340控制接收单元310、解释器320、数据管理单元330、代码识别单元350、查询表搜索单元360和发送单元370的全部操作。

基于控制单元340的识别结果,发送单元370将与块中的一个或多个字节码相应的一个或多本地代码中的第一本地代码发送到处理器100。

当接收到第一本地代码的地址时,处理器100从与位于接收的地址的第一本地代码相应的命令开始执行与块的所有本地代码相应的命令。处理器100还可参照索引表来识别将被执行的本地代码的顺序和最后本地代码的位置。

图4是示出根据本发明示例性实施例的以块为单位分组的本地代码的示图。

如上所述,本地代码存储在本地代码高速缓存210中。如图4所示,本地代码可以以块为单位来存储。也就是说,在一个或多个块(即,第一块410至第三块430)中的每一个块中可包括一个或多个本地代码。

当接收单元310接收到字节码时,代码识别单元350和查询表搜索单元360识别是否存在与接收到的字节码相应的本地代码。解释器320基于识别结果产生本地代码,并且数据管理单元330以块为单位将存储在分开的存储介质中的本地代码或产生的本地代码存储在本地代码高速缓存210中。

如果控制单元340识别出接收的字节码是第一块410、第二块420或第三块430的最后字节码,则控制单元340提取第一块410的第一本地代码411、第二块420的第一本地代码421或第三块430的第一本地代码431的地址,并通过发送单元370将提取的地址发送到处理器100。这里,本地代码的地址表示本地代码高速缓存210中的地址。接收到提取的地址的处理器100从位于接收的地址的第一本地代码411、421或431开始顺序提取本地代码,并且执行与提取的本地代码相应的命令。这一操作持续到与第一块410、第二块420或第三块430的最后本地代码相应的命令被执行为止。当根据第一块410、第二块420或第三块430的所有本地代码的任务被完成时,接收单元310接收下一字节码。

图5是示出根据本发明示例性实施例的基于分支命令形成的块的示图。

在本发明中,块可以被理解为一组命令。也就是说,包括在块中的一连串命令被顺序执行。因此,可期望在块中具有大量的本地代码,以便减少编译和解释的切换。事实上,块的大小可由分支命令的位置来确定。

例如,当诸如“if”命令的分支命令被包括在块中时,可通过运行时处理的状态来确定随后的任务。因此,随后的任务必然包括在另一块中。

最后,与块的最后本地代码相应的命令可以是分支命令,并且块可分支到两个或多个块。

参照图5,因为与第一块510的最后本地代码相应的命令是分支命令,所以第一块510在分叉点501分支到第二块520和第三块530。

另外,因为分别与第二块520和第三块530的最后本地代码相应的命令是分支命令,所以第二块520和第三块530在分叉点502和503分别分支到第四块540和第五块550以及第六块560和第七块570。

如上所述,通过分支命令的位置来确定分叉点的位置。然而,分叉点也可根据设置而位于任意位置。

图6是示出根据本发明示例性实施例的增加任务执行速度的方法的流程图。

为了增加任务执行速度,状态机300的接收单元310从处理器100接收字节码或字节码的地址(S610)。

代码识别单元350识别与接收的字节码相应的本地代码是否存储在本地代码高速缓存210中(S620)。当识别出字节码的地址时,代码识别单元350可调用位于该地址的字节码,并通过使用调用的字节码来识别与字节码相应的本地代码是否存储在本地代码高速缓存210中。

当与接收的字节码相应的本地代码存储在本地代码高速缓存210中时,发送单元370将本地代码高速缓存210中的本地代码的地址发送到处理器100(S690)。

在接收到本地代码的地址之后,处理器100从与位于接收的地址的本地代码相应的命令开始,执行与相应块的所有本地代码相应的命令(S700)。

当与接收的字节码相应的本地代码没有存储在本地代码高速缓存210中时,查询表搜索单元360搜索查询表225(S630),并识别接收的字节码是否存在于查询表225中(S640)。

当在查询表225中发现接收的字节码时,控制单元340识别接收的字节码是否是块的最后字节码(S660)。

当在查询表225中没有发现接收的字节码时,控制权被移交给解释器320,并且解释器320产生与接收的字节码相应的本地代码(S650)。随后,控制单元340识别接收的字节码是否是块的最后字节码(S660)。

如果接收的字节码是块的最后字节码,则发送单元370将与接收的字节码相应的本地代码的地址发送到处理器100(S690)。

如果接收的字节码不是块的最后字节码,则数据管理单元330将与接收的字节码相应的本地代码存储在本地代码高速缓存210中(S670)。这里,数据管理单元330可更新说明是否存储有本地代码以及本地代码存储在何处的索引表。

在将本地代码存储在本地代码高速缓存210中并且更新索引表之后,接收单元310接收下一字节码或下一字节码的地址(S680)。随后,重复执行识别是否存在与接收的字节码相应的本地代码和识别接收的字节码在相应块中的位置的操作。

如上所述,根据本发明的增加任务执行速度的设备和方法可通过将代码编译为字节码并以块为单位执行本地代码来增加任务执行速度,其中,所述块是一组一连串的字节码。

虽然已经参照本发明的示例性实施例具体显示和描述了本发明,但是本领域普通技术人员应该理解,在不脱离由权利要求限定本发明的精神和范围的情况下,可以在形式和细节上进行各种改变。示例性实施例应该仅被考虑为说明性的目的,而非限制性的目的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号