CN1729453A - 永久高速缓存装置和方法 - Google Patents
永久高速缓存装置和方法 Download PDFInfo
- Publication number
- CN1729453A CN1729453A CNA2003801072308A CN200380107230A CN1729453A CN 1729453 A CN1729453 A CN 1729453A CN A2003801072308 A CNA2003801072308 A CN A2003801072308A CN 200380107230 A CN200380107230 A CN 200380107230A CN 1729453 A CN1729453 A CN 1729453A
- Authority
- CN
- China
- Prior art keywords
- machine code
- code
- machine
- cache
- stored
- 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.)
- Granted
Links
Images
Classifications
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了一种永久高速缓存装置和方法。一种用于高速缓存机器代码的装置和方法,接收即时编译器中的中间语言代码并即时编译中间语言代码以生成机器代码。所述装置和方法把机器代码存储在运行时间环境中的非永久高速缓存中,也把它存储在与运行时间环境耦接的永久高速缓存中。
Description
发明领域
本发明一般涉及可控制运行时间环境,更具体地说,涉及在可控制运行时间环境中使用的永久高速缓存的装置和方法。
背景技术
增长的软件应用程序可移植性(也就是,在各种具有不同硬件、操作系统等等的平台上执行给定软件应用程序的能力)以及缩短独立软件卖方(ISVs)交易的时间所带来的需求使受控运行时间环境的发展和使用得到发展。
受控运行时间环境典型地使用诸如java和C#的动态编程语言来实现。软件引擎(例如,java虚拟计算机(JVM),通用语言运行时间(CLR)等),一般是指运行时间环境执行动态编程语言指令。运行时间环境插入或耦接在将被执行的动态编程语言指令(例如,java程序)和目标执行平台(也就是,执行动态程序的计算机的硬件和操作环境)之间,从而以平台无关的方式执行动态程序。
动态编程语言指令(例如,java指令,C#指令等)不是静态编译并直接耦接到由目标平台(也就是,目标处理系统或平台的操作系统和硬件)执行的本机码或机器代码,而是静态编程为中间语言(例如,字节码)且随后中间语言由即时(JIT)编译器编译为将由目标处理系统或平台执行的本机码或机器代码。典型地,JIT编译器由运行时间环境提供,该运行时间环境由诸如计算机系统的目标处理平台的操作系统作为主机。这样,运行时间环境和(特别是)JIT编译器起着将平台无关的程序指令(例如,java指令,C#指令等)转变为本机码(也就是,由基础目标处理系统或平台执行的机器码的说明)。
为改进动态编程语言的整体性能,许多受控运行时间环境配置JIT编译器,使其在执行应用程序前不必编译整个软件应用程序。作为替代,只有当前需要执行的应用程序的软件对象或方法由JIT编译器编译并随后由目标处理系统或平台执行。虽然这种部分编译技术能够改进性能,JIT编译器从中间语言代码产生本机码的速率还是对动态或平台无关的程序语言整体性能产生巨大冲击。
为了改进产生本机码的速率,许多JIT编码器在内部高速缓存或存储器内高速缓存中存储编译的中间语言(也就是,本机码)。在此方法中,JIT编译器的内部高速缓存结构消除了再编译(例如)当需要重复调用应用程序方法时需频繁调用先前已编译的方法或对象的需要。
不幸地是,由许多受控运行时间环境使用的内部高速缓存或存储器内高速缓存在运行期结束、系统重新启动后不再持续。换言之,采用这些已知的存储器内高速缓存机制,在运行期后、系统重新启动,高速缓存编码丢失且JIT编译器必须再编译需要执行的所有对象或方法,而不管那些对象或方法是否在前面的运行期间已经编译过。
附图简述
图1是可用于实施这里所述的永久高速缓存的装置和方法的示范配置的方框图;
图2是可配置图1中所示的即时编译器和永久高速缓存引擎的示范方法的流程图;
图3是可配置图1中所示的永久高速缓存引擎以产生用于永久高速缓存中高速缓存的本机码的标识符的示范方法的流程图;
图4示出可用于产生用作本机码标识符的混列码的示例伪码;
图5是使用这里所述的装置和方法的示范处理系统的方框图。
详细描述
图1是可用于实施这里所述的永久高速缓存的装置和方法的示范配置的方框图。对示范配置10,将由多个动态编程语言和/或指令中的一个所组成的一个或多个软件应用程序12提供给语言编译器14。应用程序12可采用诸如java或C#这样与平台无关的语言来编写。不过,也可使用任意其它的动态或与平台无关的计算机语言或指令。另外,可将一些或所有的应用程序12存储在将执行应用程序的系统中。替换地,可将一些或所有的应用程序存储在与执行应用程序12的系统分离(可能远程定位)的系统中。
语言编译器14静态编译一个或多个应用程序12以产生编译代码16。经编译的代码16是以二进制形式存储在存储器(没有示出)中的中间语言代码或指令(例如,以java编写的编译应用程序中的字节码)。如应用程序12一样,编译代码16可以本地存储在将执行编译代码16的目标系统18中。目标系统18可为计算机系统或是如下面结合图5描述的更详细的系统。目标系统18可联系一个或多个终端用户。替换地,编译代码16可通过通讯链接或包括(例如局域网、因特网、蜂窝网或其它无线通讯系统)送到目标系统18。
编码代码16的一个或多个部分(例如,一个或多个软件应用程序)可由目标系统18执行。特别是,在操作系统20(例如,Windows、Linux)中寄宿执行经编译代码16的一个或多个部分的运行时间环境22。例如,在编译的代码16包括java字节码的情况中,运行时间环境22基于Java虚拟计算机(JVM)或执行Java字节码的类似装置。运行时间环境22将经编译的代码16(也就是,中间语言指令或代码)的一个或多个部分装载到运行时间环境22可访问的存储器(没有示出)。较佳地,运行时间环境18将整个应用程序(或可能的多个应用程序)装载到存储器中并为了类型安全验证编译或中间语言代码16。
在应用程序或多个应用程序由运行时间环境22装载到存储器中后,与由正执行或需要被执行的应用程序调用的方法或对象有关的中间语言指令由即时(JIT)编译器24处理。该JIT编译器24编译中间语言指令以产生在计算机系统18中的一个或多个处理器(诸如,例如图5示出的处理器122)执行的本机码或机器代码。
较佳地,JIT编译器24在JIT存储器内高速缓存(JIT IMC)26中存储本机码(也就是,由计算机系统18兼容并可由其执行的机器代码)。在此方法中,运行时间环境22可再使用与先前编译的被调用超过一次的方法相关的本机码。换言之,被编译为本机码并存储在JIT IMC26中的中间语言指令可由运行时间环境22再使用并执行多次。不过,JIT IMC26是非永久性高速缓存,在与运行时间环境22相关的运行期结束,计算机系统18重新启动后,不保留数据。
虽然所述的JIT IMC26是被描述的运行时间环境22中JIT编译器24的一部分,但其它配置的JIT IMC26也是允许的。例如,JIT IMC26可为寄宿在操作系统20中的其它运行模块、对话期间或环境(没有示出)中的另一个数据结构的一部分。在一些例子中,可实现JIT IMC26使得本机码存储在公知的数据结构类型中,比如说,v表格(vtable)。如结合图5所更详细地描述的,JIT IMC 26可在与计算机系统18相关的系统存储器(诸如,在图5中示出的系统存储器134)中实现。
与已知的运行时间环境相反,该运行时间环境22包括耦接到JIT编译器24的永久性高速缓冲存储器引擎。一般,当JIT编译器24产生本机码或机器代码时,永久性高速缓冲存储器引擎28与JIT编译器24通信。当JIT编译器24为所执行的应用程序的特别方法类型产生本机码序列时,JIT编译器24将新产生的本机码存储在JIT IMC26中。此外,JIT编译器24与永久高速缓冲存储器引擎28一同将新产生的本机码存储在永久高速缓冲存储器30中。
永久高速缓冲存储器30较佳地是非易失性大容量存贮器装置,比如,使用磁或光存储介质的盘驱动器。不过,永久高速缓冲存储器30可使用其它类型装置或存储装置和介质的组合来实现。例如,可使背电池(battery-backed)的静态随机存储器(SRAM)、静态动态随机存储器(SDRAM)等等。在任何情况下,永久高速缓冲存储器30具有比JIT IMC26更高的存储容量,并在其后是平台重新启动(也就是,计算机系统18的重新启动)的运行对话期间以外保留高速缓存的本机码。
如下面结合图2更详细描述的,永久性高速缓冲存储器30用作JIT IMC28的第二级或备用的高速缓冲存储器。不过,JIT IMC26具有相对有限的存储容量,因此,使用数据清除策略或技术移走没有以充分频率使用的高速缓存编码以证明其相对稀少的存储资源的消费是正确的。有许多已知的可由JIT MIC26使用的数据清除技术。一个这样的技术是公知的最少最近使用算法,其趋于保留(也就是,不清除)不久将会使用的可能性相对高的高速缓存数据。在任何情况中,JIT IMC26可清除或消除在永久高速缓冲存储器30中仍然保留的高速缓存编码。作为结果,JIT MIC26典型地只保持当前在永久高速缓冲存储器30中存储的高速缓存编码的一个子集。
除了与计算机系统18执行的一个或多个应用程序相关的本机码外,永久高速缓冲存储器引擎28也还存储与永久高速缓冲存储器30中的应用程序有关的增加信息。例如,与应用程序12、最后运行时间/日期、最后编译时间/日期等有关的版本信息可和用于应用程序12的本机码一起存储。该附加信息可由永久高速缓冲存储器配置管理器32、永久高速缓冲存储器引擎28和/或JIT编译器24使用以利于中间语言代码的编译及永久高速缓冲存储器30的管理。
可以使用任意利于本机码信息的有效检索数据结构将信息存储在永久高速缓冲存储器30中。例如,可使用关系数据库按类型存储本机码方法。此外,应用程序名称、方法类型、方法名称或其任意组合可用作永久高速缓冲存储器30的数据库记录中的密钥。另外,本机码信息可采用可扩展标记语言(XML)文件(或类似文件)存储或组织在永久高速缓冲存储器30中。
永久高速缓冲存储器配置管理器32能使用户指定何时需要再编译分类方法。例如,永久高速缓冲存储器配置管理器32可以使用户指定在平台或计算机系统18重新启动后再编译方法。作为替代,用户可以指定周期性地(例如,一星期一次)再编译方法。此外,用户可以指令永久高速缓冲存储器配置管理器32强制再编译一个或多个方法,而不管该方法是否已经编译过。例如,在新的硬件已被添加到平台或计算机系统18的情况下,或修改现有硬件的情况下,用户可调用一个或多个方法的再编译,使得由计算机系统18执行的应用程序能够使用新增或修改的硬件。
一般,JIT编译器24和永久高速缓冲存储器引擎28互相作用,使得JIT编译器24编译中间语言代码为只有当本机码并没有在此时存储在JIT IMC26或永久高速缓冲存储器30中时才需要执行方法的本机码。特别是,在与所执行方法相关的中间语言代码的JIT编译执行之前,该JIT编译器24首先为与该方法相关的本机码检查JIT MIC26。如果JIT编译器24当为本机码检查JITMIC26时遭遇高速缓冲存储器过错,JIT编译器24为本机码检查永久高速缓冲存储器30。如果JIT编译器24当检查永久高速缓冲存储器30时也遭遇高速缓冲存储器过错,则JIT编译器24编译中间语言代码并在JIT IMC26中存储结果本机码。另外,永久高速缓冲存储器引擎28也在永久高速缓冲存储器30中存储新产生的本机码(其存储在JIT IMC26中)。
图2是可配置成JTI编译24和永久高速缓冲存储器引擎28相互作用的示范方法的流程图。如图2所示,在运行时间环境22中的装载器(没有示出)将与由计算机系统或平台18执行的应用程序相关的中间语言代码(例如,字节码)装载进运行时间环境22(方框50)。然后,该JIT编译器24判定是否所装载的应用程序已进入永久高速缓冲存储器30(也就是,与应用程序相关的一个或多个本机码部分先前已被存储进永久高速缓冲存储器30中)(方框52)。为进行该判定,JIT编译器24可以检查标识符列表(它可以是在下面图3和图4中描述所产生的),该列表与具有一些或所有存储在永久高速缓冲存储器30中的本机码的应用程序相关,以判定是否与上述应用程序相关的标识符是否存在于列表中,从而,判定其是否存储在永久高速缓冲存储器30中。如果JIT编译器24判定将被执行的应用程序还没有进入永久高速缓冲存储器30中(方框52),则JIT编译24和永久高速缓冲存储器引擎28相互作用以为在永久高速缓冲存储器中的应用程序创建并存储项目(方框54)。如结合图3和图4而更详细描述的,该项目可以包括可用于与应用程序相关的结构信息、检索信息的标识符。
另一方面,如果JIT编译器24确定上述应用程序已经进入永久高速缓冲存储器30中(方框52),则随后JIT编译器24判定对应于待执行方法的本机码是否在此时存储在JIT IMC26中(方框56)。如果用于当前方法(也就是,所要执行的方法,其执行至少一部分当前装载的应用程序)的本机码已被装载进JIT IMC26中,则运行时间环境22执行该本机码(方框58)。在执行与当前方法相关的本机码之后,JIT编译器24判定应用程序中需要被执行的下一个方法(方框60)并把运行时间环境22控制返回到方框56。
如果JIT编译器24确定用于当前方法的本机码没有存储在JIT IMC26中(方框56),或用于应用程序的新项目如果恰好刚存储在永久高速缓冲存储器30中(方框54),该JIT编译器24请求永久高速缓冲存储器引擎28确定是否用于当前方法的本机码存储在永久高速缓冲存储器30中(方框62)。如果永久高速缓冲存储器引擎28确定用于当前方法的本机码没有存储在永久高速缓冲存储器30中(方框62),则JIT编译器24把该方法(也就是,相应于该方法的中间语言指令)编译成本机码并存储新产生的本机码到JIT IMC26中(方框66)。然后该JIT编译器24请求新产生的本机码存储在永久高速缓冲存储器30中的永久高速缓冲存储器引擎28(方框68)。一旦新产生的本机码已被存储在永久高速缓冲存储器30中,则本机码被执行(方框58)且JIT编译24选择下一个将被执行的方法(方框60)。
如果用于当前方法的本机码存储在永久高速缓冲存储器30中(方框62),JIT编译器24请求永久高速缓冲存储器引擎28从永久高速缓冲存储器30中检索本机码(方框70)。该JIT编译器24从永久高速缓冲存储器引擎28接收被请示的本机码并更新(例如,储存)在JIT IMC26中的本机码(方框72)。例如,JIT编译器24可用v表格(vtable)或任意适用的数据结构类型来存储从永久高速缓冲存储器引擎28中接收到的本机码。在JIT编译器24采用新检索到的本机码(方框72)更新JIT IMC26后,执行新检索到的本机码(方框58)。然后该JIT编译器60选择将被执行的下一个方法(方框60)并将运行时间环境22的控制返回方框56。
因为任意给出的本机码部分可同时驻留在JIT IMC 26和永久高速缓冲存储器30中,需要保持JIT IMC 26和永久高速缓冲存储器30间的高速缓冲存储器的一致性或完整性。因此,如果修改了一个应用程序,则图示的JIT编译器24将应用程序的修改版本作为新的应用程序,以使得可采用(例如)图2所示的技术在永久高速缓冲存储器30中储存对修改应用程序的登录(方框54)。结果,当修改的应用程序由运行时间环境22执行时,JIT编译器24编译应用程序的方法(例如,按照按需访问的策略(as-needed basis)),以产生存储在永久高速缓冲存储器30中的这些方法的本机码序列。永久高速缓冲存储器配置管理器32较佳地从永久高速缓冲存储器30中移除或废除最近修改的应用程序的先前或旧有的登录。
作为选择,应用程序的修改并不必然会创建新的登录并重新产生存储在永久高速缓冲存储器30中的应用程序的本机码。替换地,可将JIT编译器24和永久高速缓冲存储器引擎28配置成只JIT编译由以某种方式已被修改的应用程序组成的那些方法。在那种情况下,只有更新的本机码存储在永久高速缓冲存储器30中。但是,只更新已被修改并且存储在永久高速缓冲存储器30中的应用程序的那些本机码部分将要求使用几个参数,例如包括:应用程序最后被编译的时间,版本号,或任意其它适用于查找并更新存储在永久高速缓冲存储器30中的本机码的信息。
较佳地,保护永久高速缓冲存储器30,防止未授权者查看和/或修改其内容。例如,如果永久高速缓冲存储器30未被保护,未授权者可能查看其中的信息(例如,平台或计算机系统18的配置),从而使恶意代码(例如,蠕虫病毒等)的下载难以被察觉和/或移除。为保护永久高速缓冲存储器30,可使用物理和/或基于软件的数据分区方法。例如,当永久高速缓冲存储器30是硬盘时,硬盘驱动器的一个分区(例如,块或扇区范围)需接受安全措施并被永久高速缓冲存储器30单独使用,而硬盘驱动器的另一个分区不需要这样的安全措施。
由于永久高速缓冲存储器30能够存储比JIT IMC 26多得多的信息(例如,由平台或计算机系统18执行的一个或更多的应用程序相关的本机码),永久高速缓冲存储器30能够用于产生审计索引信息。例如,存储在永久高速缓冲存储器30中的信息能够用来收集执行统计,生成与由计算机系统18执行的一个或多个应用程序有关的登录报告,等等。
图3是示范方法的流程图,在其中,可设置图1所示的永久高速缓冲存储器28,以生成在永久高速缓冲存储器30中存储的本机码唯一标识符。当编译与应用程序关联的方法时,JIT编译器24将方法名称(方框100)、该方法所属的类型名称(方框102)和该应用程序名称(方框104)传给永久高速缓冲存储器引擎28。这个信息最好作为字符串数据传送给永久高速缓冲存储器28。不过,可用其它数据类型替代。然后,永久高速缓冲存储器引擎28从计算机系统18中的网络接口插件(未示出)取得媒体访问控制(MAC)地址(方框106),并将其与从方框100-106取得的字符串数据耦接以形成单个字符串(方框108)。接着,将耦接好的字符串用于生成混列码(方框110),该混列码用作标识符或密钥用于组织并检索存储在永久高速缓冲存储器30中的本机码数据。
图4所示的伪码代表了一种可生成伪码的示例方法。如图4所示,变量“hashCode”预置为零,并定义字符串变量“stringData”。然后,在迭代循环中计算混列码(例如,存储在变量“hashCode”中的值),所述迭代循环将当前的混列码值乘以31,并将变量“stringData”的整数部分加到当前的混列码。迭代循环执行的次数等于由“stringData”表示的字符串字符长度。
图5是可用于实现这里所述的装置和方法的示例处理器系统120的方框图。如图5所示,处理器系统120包括耦接到互连总线或网络124的处理器122。处理器122可为任意适宜的处理器、处理单元或微处理器,诸如Intel Itanium系列、Intel X-Scale系列、Intel Pentium系列等。虽然在图5中没有示出,系统120可以是多处理器系统,因此可包括一个或多个与处理器122相同或相似并且耦接到互连总线或网络124的附加处理器。
图5中的处理器122耦接到芯片组128,芯片组包括存储控制器130和输入/输出(I/O)控制器132。众所周知,芯片组一般提供了I/O和存储管理功能、以及多个通用和/或专用寄存器、时钟等,可由耦接到芯片组的一个或多个处理器访问或使用。存储控制器130执行使处理器(如果是多个处理器则为处理器组)访问系统存储器134的功能,它可包括所需的任意类型的易失存储器,诸如,静态随机存储器(SRAM),动态随机存储器(DRAM)等。如上所述,系统存储器134可用于实现JIT IMC26。I/O控制器132执行使处理器122通过I/O总线140与外围输入/输出(I/O)装置136通信的功能。I/O装置136和138可以是任意所需类型的I/O装置,诸如,键盘、视频显示器或监视器、鼠标等。当然,I/O装置136和138可以包括用来实现永久高速缓存30的海量储存设备(例如,磁盘驱动器)。虽然存储控制器130和I/O控制器132在图5中描述为芯片组128中的分离功能模块,由这些模块执行的功能可集成到单个半导体电路中或可使用两个或更多的分离集成电路来实现。
虽然在这里描述了一些方法和装置,本专利申请所覆盖的范围并不限于此。相反,本专利申请覆盖了所有落入附加权利要求的文字表述或其等同原则范围中的实施例。
Claims (36)
1.一种高速缓存机器代码的方法,其特征在于,包括:
接收即时编译器中的中间语言代码;
即时编译中间语言代码以生成机器代码;
将机器代码存储到运行时间环境中的非永久高速缓存中;及
将机器代码存储到与运行时间环境耦接的永久高速缓存。
2.如权利要求1所述的方法,其特征在于,所述接收即时编译器中的中间语言代码包括接收与java虚拟计算机和通用语言运行时间之一关联的编译器中的字节码。
3.如权利要求1所述的方法,其特征在于,所述将机器代码存储到非永久高速缓存包括将机器代码存储到即时存储器中(存储器内)高速缓存中。
4.如权利要求1所述的方法,其特征在于,所述将机器代码存储到非永久高速缓存包括将机器代码存储到与java虚拟计算机和通用语言运行时间之一关联的高速缓存中。
5.如权利要求1所述的方法,其特征在于,所述将机器代码存储到永久高速缓存包括将机器代码存储到海量储存设备。
6.如权利要求5所述的方法,其特征在于,所述海量储存设备包括磁盘驱动器。
7.如权利要求1所述的方法,其特征在于,将机器代码存储到与运行时间环境耦接的永久高速缓存中包括为机器代码生成标识符并将机器代码存储到与标识符关联的永久高速缓存中。
8.如权利要求7所述的方法,其特征在于,为机器代码生成标识符包括使用与机器代码关联的字符串信息生成标识符。
9.一种用于高速缓存机器代码的系统,其特征在于,包括:
具有即时编译器和永久高速缓存引擎的运行时间环境;及
与运行时间环境耦接的永久高速缓存。
10.如权利要求9所述的系统,其特征在于,所述运行时间环境基于java虚拟计算机和通用语言运行时间之一。
11.如权利要求9所述的系统,其特征在于,所述运行时间环境寄宿了在计算机系统中执行的操作系统。
12.如权利要求9所述的系统,其特征在于,所述永久高速缓存包括磁盘驱动器。
13.如权利要求9所述的系统,其特征在于,所述即时编译器和永久高速缓存引擎共同产生标识符并在与标识符关联的永久高速缓存中存储本机码。
14.如权利要求13所述的系统,其特征在于,所述标识符基于与本机码关联的字符串信息。
15.如权利要求9所述的系统,其特征在于,还包括永久高速缓存配置管理器。
16.一种计算机系统,其特征在于,包括:
海量储存设备;及
与海量储存设备耦接的处理器,对其编程以用来:
接收即时编译器中的中间语言代码;
即时编译中间语言代码以生成机器代码;
将机器代码存储到与即时编译器关联的高速缓存中;及
在海量储存设备上存储机器代码。
17.如权利要求16所述的计算机系统,其特征在于,所述中间语言代码包括java字节码,且即时编译器与java虚拟计算机和通用语言运行时间之一关联。
18.如权利要求16所述的计算机系统,其特征在于,所述与即时编译器关联的高速缓存是存储器中(存储器内)高速缓存。
19.如权利要求16所述的计算机系统,其特征在于,所述海量储存设备包括磁盘驱动器。
20.如权利要求16所述的计算机系统,其特征在于,所述处理器被编程以生成标识符,并在与标识符关联的海量存储设备上存储机器代码。
21.如权利要求20所述的计算机系统,其特征在于,所述处理器被编程以生成标识符,所述标识符使用与机器代码关联的字符串信息。
22.一种具有在其上存储的数据的机器可访问介质,当执行时,使机器:
接收即时编译器中的中间语言代码;
即时编译中间语言代码以生成机器代码;
将机器代码存储到运行时间环境中的非永久高速缓存中;及
将机器代码存储到与运行时间环境耦接的永久高速缓存。
23.如权利要求22所述的机器可访问介质,具有在其上存储数据,当执行时,通过把机器代码存储在运行时间环境中的即时存储器中(存储器内)高速缓存中,使机器把机器代码存储在非永久高速缓存中。
24.如权利要求22所述的机器可访问介质,具有在其上存储数据,当执行时,通过为机器代码生成标识符并且根据所述标识符将机器代码存储到永久高速缓存中,使机器把机器代码存储在永久高速缓存中。
25.一种执行软件应用程序的方法,其特征在于,包括:
为软件应用程序的执行选择一种方法;
判定是否用于该方法的机器代码存储在即时编译器存储器中(存储器内)高速缓存中;
判定是否用于该方法的机器代码存储在永久高速缓存中;及
执行该方法的所述机器代码。
26.如权利要求25所述的方法,其特征在于,还包括:
即时编译所述方法,以根据机器代码未被存储在永久高速缓存中的判定生成机器代码;
将机器代码存储到即时编译器存储器中(存储器内)高速缓存中;及
将机器代码存储到永久高速缓存中。
27.如权利要求25所述的方法,其特征在于,还包括:
从永久高速缓存中检索机器代码;及
更新即时编译器存储器中(存储器内)高速缓存以包括机器代码。
28.如权利要求27所述的方法,其特征在于,更新即时编译器存储器中(存储器内)高速缓存包括更新与存储器中(存储器内)高速缓存关联的v表格(vtable)。
29.如权利要求25所述的方法,其特征在于,还包括判定是否用于软件应用程序的登录被包含在永久高速缓存中。
30.如权利要求29所述的方法,其特征在于,还包括根据永久高速缓存未包含用于软件应用程序的登录的判定,创建用于永久高速缓存中的软件应用程序的登录。
31.一种用于执行软件应用程序的系统,其特征在于,包括:
永久高速缓存;
非永久高速缓存;及
耦接到永久高速缓存和非永久高速缓存的处理器,其被编程以:
为软件应用程序的执行选择一种方法;
判定是否用于该方法的机器代码被存储在非永久高速缓存中;
判定是否用于该方法的机器代码被存储在永久高速缓存中;及
用于执行该方法的所述机器代码。
32.如权利要求31所述的系统,其特征在于,所述处理器被编程以:
根据机器代码未被储存在永久高速缓存中的判定,即时编译所述方法以生成机器代码;
在非永久高速缓存中存储机器代码;及
在永久高速缓存中存储机器代码。
33.如权利要求31所述的系统,其特征在于,所述处理器被编程以从永久高速缓存中检索机器代码并更新非永久高速缓存以包含机器代码。
34.一种具有在其上存储的数据的机器可访问介质,当执行时,使机器:
为软件应用程序的执行选择一种方法;
判定是否用于该方法的机器代码存储在非永久高速缓存中;
判定是否用于该方法的机器代码存储在永久高速缓存中;及
用于执行该方法所述机器代码。
35.如权利要求34所述的机器可访问介质,其特征在于,机器可访问介质具有在其上存储的数据,当执行时,使机器:
根据机器代码未存储在永久高速缓存中的判定,即时编译所述方法以生成机器代码;
将机器代码存储在非永久高速缓存中;及
将机器代码存储在永久高速缓存中。
36.如权利要求34所述的机器可访问介质,其特征在于,机器可访问介质具有在其上存储的数据,当执行时,使机器:
从永久高速缓存检索机器代码并更新非永久高速缓存以包含机器代码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/327,848 | 2002-12-23 | ||
US10/327,848 US20040123278A1 (en) | 2002-12-23 | 2002-12-23 | Persistent cache apparatus and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1729453A true CN1729453A (zh) | 2006-02-01 |
CN100365577C CN100365577C (zh) | 2008-01-30 |
Family
ID=32594361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003801072308A Expired - Fee Related CN100365577C (zh) | 2002-12-23 | 2003-12-05 | 永久高速缓存装置和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20040123278A1 (zh) |
CN (1) | CN100365577C (zh) |
AU (1) | AU2003298026A1 (zh) |
DE (1) | DE10393968T5 (zh) |
GB (1) | GB2412460A (zh) |
WO (1) | WO2004061658A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412754A (zh) * | 2013-08-15 | 2013-11-27 | 优视科技有限公司 | 动态语言代码执行方法和装置 |
CN106066686A (zh) * | 2016-05-31 | 2016-11-02 | 广东欧珀移动通信有限公司 | 一种信息处理方法及终端设备 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7609829B2 (en) * | 2001-07-03 | 2009-10-27 | Apptera, Inc. | Multi-platform capable inference engine and universal grammar language adapter for intelligent voice application execution |
US7406418B2 (en) * | 2001-07-03 | 2008-07-29 | Apptera, Inc. | Method and apparatus for reducing data traffic in a voice XML application distribution system through cache optimization |
US7203932B1 (en) * | 2002-12-30 | 2007-04-10 | Transmeta Corporation | Method and system for using idiom recognition during a software translation process |
US7617490B2 (en) * | 2003-09-10 | 2009-11-10 | Intel Corporation | Methods and apparatus for dynamic best fit compilation of mixed mode instructions |
US7697673B2 (en) * | 2003-11-17 | 2010-04-13 | Apptera Inc. | System for advertisement selection, placement and delivery within a multiple-tenant voice interaction service system |
US7406464B2 (en) * | 2003-12-08 | 2008-07-29 | Ebay Inc. | Custom caching |
US7770034B2 (en) * | 2003-12-16 | 2010-08-03 | Intel Corporation | Performance monitoring based dynamic voltage and frequency scaling |
US7730464B2 (en) * | 2005-09-14 | 2010-06-01 | Microsoft Corporation | Code compilation management service |
US7882499B2 (en) * | 2005-10-24 | 2011-02-01 | Microsoft Corporation | Caching dynamically compiled code to storage |
US20080189251A1 (en) * | 2006-08-25 | 2008-08-07 | Jeremy Branscome | Processing elements of a hardware accelerated reconfigurable processor for accelerating database operations and queries |
US8296742B2 (en) * | 2006-10-10 | 2012-10-23 | Microsoft Corporation | Automatic native generation |
US8161243B1 (en) * | 2007-09-28 | 2012-04-17 | Intel Corporation | Address translation caching and I/O cache performance improvement in virtualized environments |
US9411744B1 (en) * | 2008-01-15 | 2016-08-09 | Xilinx, Inc. | Content-based caching in a managed runtime computing environment |
US20090240930A1 (en) * | 2008-03-24 | 2009-09-24 | International Business Machines Corporation | Executing An Application On A Parallel Computer |
US8281311B2 (en) * | 2008-04-24 | 2012-10-02 | International Business Machines Corporation | Executing a distributed software application on a plurality of compute nodes according to a compilation history |
US8161483B2 (en) | 2008-04-24 | 2012-04-17 | International Business Machines Corporation | Configuring a parallel computer based on an interleave rate of an application containing serial and parallel segments |
US9250938B2 (en) * | 2008-10-15 | 2016-02-02 | Microsoft Technology Licensing, Llc | Caching runtime generated code |
US9423920B2 (en) | 2010-12-22 | 2016-08-23 | Sap Se | System and method for modifying user interface elements |
WO2013048943A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Active state power management (aspm) to reduce power consumption by pci express components |
US9110751B2 (en) * | 2012-02-13 | 2015-08-18 | Microsoft Technology Licensing, Llc | Generating and caching software code |
US9529610B2 (en) * | 2013-12-30 | 2016-12-27 | Unisys Corporation | Updating compiled native instruction paths |
US10108402B2 (en) * | 2014-01-30 | 2018-10-23 | Hewlett Packard Enterprise Development Lp | Persistent pointers for programs running on NVRAM based computers |
US20170068570A1 (en) * | 2015-09-08 | 2017-03-09 | Apple Inc. | System for managing asset manager lifetimes |
US10929160B1 (en) * | 2018-12-12 | 2021-02-23 | The Mathworks, Inc. | Composite-trace just-in-time compilation |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768593A (en) * | 1996-03-22 | 1998-06-16 | Connectix Corporation | Dynamic cross-compilation system and method |
US5926631A (en) * | 1997-08-15 | 1999-07-20 | International Business Machines Corporation | Network computer emulator systems, methods and computer program products for personal computers |
US6637025B1 (en) * | 1998-12-03 | 2003-10-21 | International Business Machines Corporation | Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file |
US6216199B1 (en) * | 1999-08-04 | 2001-04-10 | Lsi Logic Corporation | Hardware mechanism for managing cache structures in a data storage system |
US20010042241A1 (en) * | 2000-01-21 | 2001-11-15 | Fujitsu Limited | Apparatus and method for executing program using just-in time-compiler system |
US20020194483A1 (en) * | 2001-02-25 | 2002-12-19 | Storymail, Inc. | System and method for authorization of access to a resource |
US7124407B1 (en) * | 2000-08-16 | 2006-10-17 | Sun Microsystems, Inc. | Method and apparatus for caching native code in a virtual machine interpreter |
US7640153B2 (en) * | 2001-06-04 | 2009-12-29 | Hewlett-Packard Development Company, L.P. | Networked client-server architecture for transparently transforming and executing applications |
-
2002
- 2002-12-23 US US10/327,848 patent/US20040123278A1/en not_active Abandoned
-
2003
- 2003-12-05 CN CNB2003801072308A patent/CN100365577C/zh not_active Expired - Fee Related
- 2003-12-05 AU AU2003298026A patent/AU2003298026A1/en not_active Abandoned
- 2003-12-05 DE DE10393968T patent/DE10393968T5/de not_active Ceased
- 2003-12-05 WO PCT/US2003/038825 patent/WO2004061658A2/en active Application Filing
- 2003-12-05 GB GB0507000A patent/GB2412460A/en not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412754A (zh) * | 2013-08-15 | 2013-11-27 | 优视科技有限公司 | 动态语言代码执行方法和装置 |
WO2015021809A1 (zh) * | 2013-08-15 | 2015-02-19 | 优视科技有限公司 | 动态语言代码执行方法和装置 |
CN106066686A (zh) * | 2016-05-31 | 2016-11-02 | 广东欧珀移动通信有限公司 | 一种信息处理方法及终端设备 |
CN106066686B (zh) * | 2016-05-31 | 2019-02-05 | Oppo广东移动通信有限公司 | 一种信息处理方法及终端设备 |
US10628271B2 (en) | 2016-05-31 | 2020-04-21 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for information processing and related device |
US11016860B2 (en) | 2016-05-31 | 2021-05-25 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for information processing and related device |
Also Published As
Publication number | Publication date |
---|---|
WO2004061658A2 (en) | 2004-07-22 |
GB0507000D0 (en) | 2005-05-11 |
CN100365577C (zh) | 2008-01-30 |
AU2003298026A1 (en) | 2004-07-29 |
DE10393968T5 (de) | 2007-03-08 |
GB2412460A (en) | 2005-09-28 |
US20040123278A1 (en) | 2004-06-24 |
WO2004061658A3 (en) | 2005-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100365577C (zh) | 永久高速缓存装置和方法 | |
JP3659317B2 (ja) | データを管理する方法及び装置 | |
US8239861B2 (en) | Software-based unloading and reloading of an inactive function to reduce memory usage of a data processing task performed using a virtual machine | |
US20070150881A1 (en) | Method and system for run-time cache logging | |
US7502890B2 (en) | Method and apparatus for dynamic priority-based cache replacement | |
US7765527B2 (en) | Per thread buffering for storing profiling data | |
US6701520B1 (en) | Preventing garbage collection of objects in object oriented computer programming languages | |
US6430667B1 (en) | Single-level store computer incorporating process-local address translation data structures | |
US20040168162A1 (en) | System and method for shortening compiling time of byte codes in java program | |
US20080229299A1 (en) | Adaptive class loading | |
US20090222798A1 (en) | Information Processing Apparatus | |
US6950837B2 (en) | Method for using non-temporal streaming to improve garbage collection algorithm | |
US20070156967A1 (en) | Identifying delinquent object chains in a managed run time environment | |
CN1791860A (zh) | 用于在受控运行时环境中恢复同步到面向对象的软件应用的装置和方法 | |
US20060212468A1 (en) | Method and system for global constant management | |
US7577947B2 (en) | Methods and apparatus to dynamically insert prefetch instructions based on garbage collector analysis and layout of objects | |
US6223179B1 (en) | Database server for handling a plurality of user defined routines (UDRs) expressed in a plurality of computer languages | |
US7689971B2 (en) | Method and apparatus for referencing thread local variables with stack address mapping | |
CN1300681C (zh) | 用于缩短java程序中的类加载处理的系统和方法 | |
US7194736B2 (en) | Dynamic division optimization for a just-in-time compiler | |
US20020107667A1 (en) | Method and apparatus for bag-to-set, buffering remembered set | |
US6978448B1 (en) | Method and apparatus for rewriting bytecodes to minimize runtime checks | |
US20080034022A1 (en) | System and method for updating references when incrementally compacting a heap | |
CN110908771A (zh) | 一种基于java的智能合约的内存管理方法 | |
US6996825B2 (en) | Method and apparatus for efficient object sub-typing |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080130 Termination date: 20131205 |