首页> 中国专利> 用于加速解释用解释性语言写的程序的设备

用于加速解释用解释性语言写的程序的设备

摘要

本发明涉及一种设备(10),用于加速对用解释语言写的程序的解释,所述程序包括中间代码,它可以由虚拟机以连续进程的形式执行,所述设备包括路由选择装置(13),该装置能够从存储器(11)中抽取一个当前中间代码以便把它加载到存储装置(16)中。当存在改变进程的请求时,路由选择装置(13)能够抑制当前中间代码的抽取和向存储装置(16)加载一个保留的用于实现对虚拟机环境的保存的中间代码。

著录项

  • 公开/公告号CN1639685A

    专利类型发明专利

  • 公开/公告日2005-07-13

    原文格式PDF

  • 申请/专利权人 皇家飞利浦电子股份有限公司;

    申请/专利号CN03805709.3

  • 申请日2003-03-03

  • 分类号G06F9/46;G06F9/48;

  • 代理机构中国专利代理(香港)有限公司;

  • 代理人程天正

  • 地址 荷兰艾恩德霍芬

  • 入库时间 2023-12-17 16:21:02

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-05-06

    专利权的终止(未缴年费专利权终止)

    专利权的终止(未缴年费专利权终止)

  • 2006-12-13

    授权

    授权

  • 2005-09-07

    实质审查的生效

    实质审查的生效

  • 2005-07-13

    公开

    公开

说明书

本发明涉及一种用于加速解释具有解释性语言形式的程序的设备,所述程序包括中间代码,它可以由虚拟机以连续进程形式执行,所述设备包括路由选择装置,它能够从存储器中抽取一个当前的中间代码,以便将该中间代码装载到存储装置中。

已经发现它特别地应用在可移植编程语言(例如JAVATM型语言)中,并且尤其是应用在这种编程语言的解释和执行中。

这种设备可以集成到数字电视接收机-解码器(也称为机顶盒)、移动电话或任何其他能够执行用这种类型的编程语言写的程序的装置中。

JAVATM语言是所谓的解释性编程语言。它的主要优点是完全可移植或多平台,以这种语言写的程序能够在一个不是为它设计的环境中执行。它成功的一个原因是它能够由虚拟机以称为applet(小程序)的可执行应用程序的形式集成到一个html(超文本标记语言)页面中的能力。

以JAVATM语言写的程序能够产生在源代码和可执行二进制代码之间的也称为字节代码的中间代码。该中间代码借助虚拟机执行。这一中间代码因此不能直接被处理器理解,它可能引起程序执行中有一定量的减慢。

用于加速虚拟机的处理以便更迅速解释中间代码的设备在现有技术中公知。PCT专利申请WO/9918484说明了称为虚拟机解释器的这种设备。虚拟机解释器一般是一个前置处理器,它放置在包含中间代码的存储器和处理器之间,这使得它能够将中间代码变换为一组可由该处理器执行的指令。

在这样一种环境中,进程的改变,即从当前的JAVATM进程到一个新的JAVATM进程,可能在任意时刻发生,特别是在中间代码变换期间发生。常规上这些进程由操作系统管理,操作系统在一个进程改变期间使处理器保存它自己的状态和所涉及的任何硬件的状态,诸如在我们这种场合的虚拟机解释器的状态。这种保存是使用一个保存例行程序实现的。这样,在进程改变期间,对在进程改变时代表虚拟机解释器的状态和处理器的状态的一组寄存器进行保存,使得随后进行恢复以便代表新的JAVATM进程的状态。

然而,用于保存硬件状态的保存例行程序在改变每一进程中可能要数百个时钟周期,也就是说数十毫秒。这样的操作因此具有特别慢的缺点。

本发明的目的是建议这样一种设备,该设备用于加速解释具有解释性语言形式的程序,它在进程改变期间要比现有技术的设备更快。

为此目的,所述设备的特征在于,它包括路由选择装置,该装置在一个进程改变请求期间能够抑制当前中间代码的抽取和把一个保留的预定用于实现对虚拟机的环境(context)的保存的中间代码装载到存储装置。

这样,用于加速解释具有解释性语言形式的程序的设备能够代替操作系统而通过其自身来提供进程的改变。为此目的,它使用一个保留的对象代码,后者使它能够只保存虚拟机的环境,所述环境包括一些确定的参数,诸如堆栈指针,它们在进程改变后在下一个当前中间代码处理期间将是有用的。

这样一种机构同样使得它能够继续处理中间代码而不中断当前中间代码的处理,因此使得在操作系统的一种稳定状态中改变进程。这样,可以不像在现有技术中所做的那样,即不再需要保存设备的寄存器以便加速解释性语言和处理器的解释。

本发明还涉及一种能够执行根据解释性语言的程序和包括用于加速解释该解释性语言的设备的装置。

参考在附图中表示的实施例进一步说明本发明,然而,本发明不限于这些实施例。

图1表示本发明的第一实施例,这里在两个进程变换之间执行预定数目的中间代码,和

图2表示本发明的第二实施例,其中在两个进程变换之间经历预定的时间段。

本发明在用于加速JAVATM语言的解释的虚拟机解释器的设计的环境中被开发出来。然而对于熟悉本技术领域的人都明白,它可以应用于其他编程语言,只要它们能够在源代码和可执行二进制代码之间产生中间代码,所述中间代码必须被解释以便由处理器执行。例如LISP语言或Windows XP的C#语言就可以是这种情况。

一个中间的JAVATM代码包括一种例如相应于加法或减法类型的指令的助记符,和可能一个或者多个例如相应于常数型参量的操作数。助记符以8位编码,这样所允许的256个助记符并不全部使用。因此剩余某些中间代码,它们可以由JAVATM虚拟机保留作为内部使用。这些保留的中间代码随后不能用于另外的用途。本发明建议使用这些保留的中间代码中的一个以便管理JAVATM进程的改变。

另外,虚拟机解释器可以代替操作系统而通过其自身提供JAVATM进程的改变。这样,在进程改变期间,它能够以保留的中间代码替换当前中间代码。对保留的中间代码的执行便产生出函数调用,从而允许进程的时间管理软件(也称为调度器)保存虚拟机的环境,后者通常相应于一组包括堆栈指针、全局指针、程序计数器和JAVATM帧指针的参数。这些参数然后在下一当前中间代码的执行期间被恢复。

于是减少了进程改变造成的延迟时间和允许在没有中断的情况下执行中间代码。

在图1所示的第一实施例中,虚拟机解释器VMI(10)使得能够在一个时间片与为了在两个连续的进程改变之间执行预定数目(n个)的当前中间代码所用的时间之间进行映射。

为此目的,虚拟机解释器VMI(10)包括一个当前中间代码计数器BCC(12),它能给控制电路CONT(14)指示一个存储器地址MEM(11),所述地址相应于要从所述存储器抽取的一个当前中间代码,以便将其加载到一个中间代码寄存器BCREG(16)中。虚拟机解释器VMI(10)包括路由选择装置(13),所述装置除了控制电路CONT(14)之外还包括路由选择计数器COUN(21),它的预定的初始值n相应于在两个进程改变之间要被执行的中间代码数目,它通过寄存器REG(22)而被初始加载。

在当前中间代码被处理后,控制电路CONT(14)将计数器BCC(12)增量,以便能够指向下一个当前中间代码。每次在一个当前中间代码被从存储器MEM(11)被引导到寄存器BCREG(16)时,控制电路CONT(14)还把路由选择计数器COUN(21)减量。

当被选择路由的当前中间代码的数目大于预定的初始值n,亦即路由选择计数器COUN(21)具有值零时,计数器BCC(12)不再由控制电路CONT(14)增量,并且当前中间代码由称为“软件陷阱字节代码”的保留中间代码替换,所述保留中间代码由控制电路CONT(14)从寄存器SWT(23)中抽取,以便加载到寄存器BCREG(16)中。一个执行“或”功能的门(15)表示下述事实,即寄存器BCREG(16)能够接收一般场合的中间代码,或者也能接收在进程改变期间一个保留的中间代码。这一保留中间代码能够产生用于保存和恢复用于处理下一个当前中间代码的虚拟机环境的功能调用。

该虚拟机解释器还包括一个用于当前中间代码的变换模块TRAN(17),它根据本领域的技术人员熟悉的原理工作和用于一个特定的变换表中。由变换模块TRAN(17)发布的代码然后或者以可执行代码的形式、或者以能够产生所述保存的保留中间代码的形式被传输到处理器PROC(18)。

这样根据本发明的虚拟机解释器VMI(10)在没有中断的情况下工作,并在JAVATM进程的两个连续的改变之间执行预定数目的中间代码。

在图2所示的第二实施例中,虚拟机解释器VMI(10)能够在一个具有等于一个固定持续时间的预定持续时间的时间片内管理当前中间代码的执行,在该固定持续时间上附加了相应于结束最后一个当前中间代码的执行所经历的时间。

为此目的,所述解释器包括一个能够接收外部或内部时钟(19)中断的中断寄存器INREG(24)。当请求一个与改变进程的请求相对应的中断时,由时钟(9)来驱动中断寄存器INREG(24)。当处理下一中间代码时,控制电路CONT(14)将不增量该计数器BCC(12),并且当前中间代码用由控制电路CONT(14)从寄存器SWT(23)抽取的保留中间代码来替代。寄存器BCREG(16)于是接收该保留中间代码以代替当前中间代码,这个保留中间代码能够产生一个用于保存虚拟机的环境的功能调用。

在上述两个实施例中说明的虚拟机解释器VMI(10)可以结合到一个可编程集成电路例如FPGA(“现场可编程门阵列”)型的电路中。

可以把这样的虚拟机解释器集成到视频解码器、数字电视接收机-解码器、电视机、移动电话、个人数字助理或者能够以JAVATM语言或以任何其他解释性语言写的程序的任何其他装置中。

本文中括号中的参考符号不应该解释为限制性的。动词“包括”及其各种变化形式也应该广义解释,也就是说,不仅不排除并非在所述动词后面开列的那些元件或步骤的存在,而且不排除在所述动词后面已经开列的并且其前面冠以单词“一个”的多个元件或步骤的存在。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号