New! View global litigation for patent families

CN101238438A - 用以提高仿真器性能的虚拟代码的选择性预编译 - Google Patents

用以提高仿真器性能的虚拟代码的选择性预编译 Download PDF

Info

Publication number
CN101238438A
CN101238438A CN 200680024664 CN200680024664A CN101238438A CN 101238438 A CN101238438 A CN 101238438A CN 200680024664 CN200680024664 CN 200680024664 CN 200680024664 A CN200680024664 A CN 200680024664A CN 101238438 A CN101238438 A CN 101238438A
Authority
CN
Grant status
Application
Patent type
Prior art keywords
selective
pre
emulator
compilation
virtual
Prior art date
Application number
CN 200680024664
Other languages
English (en)
Other versions
CN101238438B (zh )
Inventor
V·谭
Original Assignee
微软公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/44Arrangements for executing specific programmes
    • G06F9/455Emulation; Software simulation, i.e. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRICAL DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for programme control, e.g. control unit
    • G06F9/06Arrangements for programme control, e.g. control unit using stored programme, i.e. using internal store of processing equipment to receive and retain programme
    • G06F9/44Arrangements for executing specific programmes
    • G06F9/455Emulation; Software simulation, i.e. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Abstract

一种方法和计算机可读介质对仿真二进制码执行预引导扫描以检测高于预定复杂度阈值的函数。然后,可在启动过程期间预编译检测到的函数。预引导扫描还可检测低于第二预定复杂度阈值的函数。检测到的函数可被内联放置在代码主体中;然后,可在运行时执行及时翻译。

Description

用以提高仿真器性能的虚拟代码的选择性预编译发明领域本发明一般涉及软件仿真领域,尤其涉及虚拟代码的选择性预编译和内联。 发明技术当诸如视频游戏的软件应用程序被编译时,它通常被转换成虚拟代码,诸如 提供对应用程序的描述以及该应用程序如何来运行的指令的中间仿真二进制码。软 件仿真器在应用程序被执行之前的某个时刻对软件应用程序的中间二进制码执行 二进制翻译。二进制翻译指将中间二进制码转换成专用于将执行该代码的处理器类 型的机器可执行二进制码的过程。然后,可执行二进制码准备好由针对其已进行格 式化的处理器来执行。一种这样的二进制翻译方法称为"及时(just-in-time) " ( "JIT" ) 二进制 翻译,由其名字所暗示,它是恰好在代码被执行之前进行的软件代码的二进制翻译。 结果,可在各种处理器和计算平台上使用特定中间二进制码,因为成功运行代码所 需进行的处理器专用改变不会发生直至恰好在执行之前。JIT翻译还提供了相对快 速的加载和引导时间,因为在启动期间不进行二进制翻译。遗憾的是,在运行时,JIT翻译可对代码的执行产生不利影响。例如,针对代 码内的大多数平均复杂的图形函数,典型的游戏系统可能在运行时执行JIT翻译而 不对代码的执行产生不利影响(即,不影响图形渲染)。然而,如果遇到特别复杂 的图形函数一诸如涉及大段人工智能("AI")的图形函数一则可能不存在足以 可用于执行函数翻译和代码执行的处理器资源。因此,在回放期间,用户可能注意 到代码执行中如明显的"闪烁"或"结巴(stutter)"的瞬间暂停。随着程序设计 员坚持不懈地为图形逼真度而努力,这些延迟变得越来越令人不快。另一种翻译方法涉及软件预编译器的使用。预编译器对表示执行之前的软件 应用程序代码的整个静态中间二进制码执行二进制翻译。通常在启动过程期间软件 被加载时(在"加载时间")进行翻译。虽然预编译器的使用提供了运行时较快速、 无中断的执行,但是当预编译器执行二进制翻译时的初始加载时间被延长。因而,用户可能体验过度长的系统引导时间,因此,通常不对较大的程序使用预编译器。 在运行时存在与执行机器可执行二进制码中的相对较简单的函数相关的另一 问题。例如,许多函数涉及从代码主体到子例程的调用。对子例程的调用以及从该 子例程的返回(称为"上下文切换")需要处理时间。对于大多数函数,上下文切 换所需的处理时间与执行函数本身所需的处理时间相比可被忽略。然而,如果函数 非常小,则上下文切换所需的处理时间可能在函数所需的总执行时间中占据相当大 的百分比。结果,这种函数作为子例程的执行的效率比如果简单地在代码的主体内 执行该函数要低。此低效率由于被上下文切换占据了过多的处理时间的,可对JIT 翻译以及代码执行的性能产生不利影响。虽然执行这样的函数作为子例程可能是低 效率的,但是这种函数通常充当软件开发者的便利手段。因而,简单地创建所有这 些函数均位于其主体中的代码并非所期望的。因此,需要一种克服了上述缺点和缺陷的机制。本发明满足了这种需要。发明概述鉴于上述缺点和缺陷,提供了一种方法和计算机可读介质,它们对仿真二进 制码执行预引导扫描以检测高于预定复杂度阈值的函数。然后,在启动过程期间, 预编译检测到的函数。预引导扫描还可检测低于第二预定复杂度阈值的函数。可将 检测到的函数与代码主体内联放置。然后,可在运行时执行及时翻译,其中预编译 函数可被直接执行而无需进一步翻译,并且可执行移入内联的任何函数而无需上下 文切换。附图的简要描述图1是其中可实现本发明的方面的示例计算环境;图2是示出了根据本发明的实施例的示例方法的流程图;图3是示出了根据本发明的实施例的示例代码流程的框图;以及图4A-B是示出了根据本发明的实施例的代码流程的示例更改的框图。示例性实施例的详细描述按照以满足法规要求的特征来描述本发明的主题。然而,描述本身并非旨在 限制本专利的范围。相反,发明人构想所要求保护的主题还可以其它方式来体现, 以包括连同其它现有或将来技术的不同步骤或类似于本文献中所述的要素。此外,尽管这里可使用术语"步骤"来意味着所用方法的不同方面,但是该术语不应当被 解释为隐含本文所公开的各种步骤之中或之间的任何特定次序,除非或除明确描述 了各个步骤的次序之外。示例计算环境图1示出了其中可实现本发明的合适计算系统环境100的一个示例。计算系 统环境100仅作为合适的计算环境的一个示例,而非旨在对本发明的使用范围或功能提出任何限制。计算环境100也不应当被解释为对示例性操作环境100中所示组件的任一个或组合具有任何依赖或要求。本发明可与许多其它通用或专用计算系统环境或配置一起运行。可适合用于本发明的众所周知的计算系统、环境和/或配置的示例包括但不限于:个人计算机、 服务器计算机、手持型或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络PC、小型机、大型计算机、包括上述系统或设备的任意种类的分布式计算环境等。可在由计算机执行的诸如程序模块的计算机可执行指令的通用环境中描述本 发明。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、 对象、组件、数据结构等。也可在其中通过经由通信网络链接的远程处理设备执行 任务的分布式计算环境中实践本发明。在分布式计算环境中,程序模块和其它数据 可位于包括存储器存储设备的本地或远程计算机存储介质中。参看图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可包括但不限于:处理单元120;系统存储器130;以及将包括系统存储器在内的各种系统元件耦合到处理单元120的系统总线121。系统总 线121可以是若干类型总线结构中的任意一种,包括存储器总线或存储器控制器、 外围总线以及使用各种总线体系结构中的任一种的局域总线。作为示例而非限制, 这些架构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及也称为附夹板(Mezzanine)总线的外设部件互连(PCI)总线。计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算 机110访问的任何可用介质,包括易失性和非易失性介质、可移动和不可移动介质。 作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存 储介质包括以存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任意方法和技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介

质包括但不限于:RAM、 ROM、 EEPROM、闪存或其它存储器技术、CD-ROM、 数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储器或其它磁存 储设备、或者可被用来存储所需信息并可由计算机110访问的任意其它介质。通信 介质通常以诸如载波或其它传送机制的已调制数据信号的方式体现计算机可读指 令、数据结构、程序模块或者其它数据,并且包括任意信息传输介质。术语"已调 制数据信号"是指以在信号中编码信息的方式设置或改变其特性中的一个或多个的 信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接的有线介质、 以及诸如声波、RF、红外线和其它无线介质的无线介质。以上任一种组合应当也 可被包括在计算机可读介质的范围内。

系统存储器130包括诸如只读存储器(ROM) 131和随机存取存储器(RAM) 132的易失性和/或非易失性存储器形式的计算机存储介质。包含有助于诸如在启动 期间在计算机110内的元件之间传递信息的基本例程的基本输入/输出系统(BIOS) 133通常被存储在ROM 131中。RAM 132通常包含可由处理单元120立即访问和 /或当前正操作的数据和/或程序模块。作为示例而非限制,图1示出了操作系统134、 应用程序135、其它程序模块136和程序数据137。

计算机110也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。 仅作为示例,图1示出了对不可移动的非易失性磁性介质读写的硬盘驱动器140、 对可移动的非易失性磁盘152读写的磁盘驱动器151、以及对诸如CD ROM或其 它光学介质的可移动的非易失性光盘156读写的光盘驱动器155。可被用在示例性 操作环境中的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限 于:磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。 硬盘驱动器141通常经由诸如接口 140的不可移动存储器接口连接到系统总线 121,而磁盘驱动器151和光盘驱动器155通常经由诸如接口 150的可移动存储器 接口连接到系统总线121。

以上讨论并在图1中示出的驱动器以及与它们相关联的计算机存储介质为计 算机110提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如, 在图1中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模 块146以及程序数据147。注意:这些组件可与操作系统134、应用程序135、其 它程序模块136和程序数据137相同或不同。这里,操作系统144、应用程序145、 其它程序模块146和程序数据147被赋予不同附图标记,以便说明至少它们是不同的副本。用户可通过诸如键盘162和通常指的是鼠标、跟踪球或触摸板的定点设备

161向计算机20输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵 杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其它输入设备常常经由耦合于 系统总线的用户输入接口 160连接到处理单元120,但也可通过诸如并行端口、游 戏端口或通用串行总线(USB)的其它接口和总线结构连接。监视器191或其它类 型的显示设备也经由诸如视频接口 190的接口连接到系统总线121。除监视器之外, 计算机还可包括诸如扬声器197和打印机196的其它外围输出设备,它们可经由输 出外围接口 l卯连接。

计算机110可工作在使用到诸如远程计算机180的一个或多个远程计算机的 逻辑连接的网络化环境中。远程计算机180可以是个人计算机、服务器、路由器、 网络PC、对等设备或其它公共网络节点,并且通常包括以上就计算机IIO所描述 的组件中的许多或所有组件,尽管图1仅示出了存储器存储设备181。图1中所示 的逻辑连接包括局域网(LAN) 171和广域网(WAN) 173,但也可包括其它网络。 这些网络环境在办公室、企业范围计算机网络、内联网和因特网中是普遍的。

当用在LAN网络环境中时,计算机110经由网络接口或适配器170连接到 LAN 171。当用在WAN网络环境中时,计算机110通常包括调制解调器172或在 诸如因特网的WAN 173上建立通信的其它装置。或为内置式或为外置式的调制解 调器172可经由用户输入接口 160或其它适当的机制连接到系统总线121。在网络 化环境中,关于计算机110所述的程序模块或其一部分可被存储在远程存储器存储 设备中。作为示例而非限制,图1将远程应用程序185示为驻留在存储器设备181 上。应当理解,所示网络连接仅是示例性的,并且也可使用在计算机之间建立通信 链接的其它装置。

示例实施例

在以下的讨论中,认为关于代码仿真和二进制翻译的细节对于本领域技术人 员是公知的。因此,为了清晰和说明的目的,这里很大程度上略去了这些细节。另 外,这里使用涉及游戏软件上下文中的图形渲染的示例实施例仅为了说明的目的, 而非旨在将本发明限于任何这种实施例。

本发明的实施例选择性地组合JIT翻译和预编译技术以在软件应用程序的代 码执行期间避免暂停。可对这种代码的仿真二进制码执行预引导扫描,以检测该二 进制码内的复杂函数。在软件的引导过程期间,实施例预编译检测到的复杂函数。在运行时,JIT翻译技术用于二进制码的其它部分,而可直接执行经预编译的函数 而无需进一步的翻译。另外,在此预引导扫描期间,实施例可检测极简单函数,并 选择性地将它们重新定位到代码的主体(在这里称为"内联"的过程)。在运行时, 可避免将否则执行函数所必需的上下文切换。对实施例的预引导扫描可增加执行初始引导过程所需的时间量。然而,由于 可选择性地实施预编译和内联操作,所以引导时间的增加可被控制成保持在可接受 的限度内。因而,可改进代码执行以在不用过分延长应用的引导时间的情况下避免 显著的暂停。现在参看图2,它示出了实施例的示例方法200。在步骤201,例如扫描诸如 视频游戏的中间二进制码的仿真代码。可使用任何类型的扫描机制。例如,在2005 年5月12日提交的、题为"Function-Level Just隱in-Time Translation Engine with Multiple Pass Optimization (具有多遍优化的函数级及时时翻译引擎)的共同转让的 美国申请No.11/128,699描述了这样一种扫描方法,该申请通过引用全部结合于此。 扫描可涉及例如根据对于本领域技术人员而言应知的相对指令移置技术来在整个 仿真代码流中移动指令指针等。当扫描在整个仿真代码中进行时,确定函数边界以 确立仿真代码内的每个函数的复杂度。这里所用的术语"复杂度"指编译和/或执 行函数所需的处理时间或资源的任何量度。例如,可根据函数大小(例如,代码行 的数量等)、处理难度等来测量复杂度。对涉及通过函数指针或绝对寻址的另一形 式来引用的函数的实例,可使用对这些函数的二进制专用引用来使以下的步骤211 的预编译能够进行。在完成步骤201的扫描之后,在步骤203,就是否检测到一个或多个复杂函数 作出判定。如上所述,什么构成"复杂"函数可基于任何准则。另外,可选择预定 阈值,从而仅超出该阈值的函数被判定为复杂。如上所述,预定阈值可按照代码行 作出。因而,如果函数包含比阈值代码行数目多的代码行,则函数被判定为复杂。 阈值可基于任何数量的因素来预先确定。例如,以下将讨论的步骤205的预编译可 增加应用程序的总启动时间。开发员等可能希望将由于这些预编译而导致的启动时 间的增加保持在某一限度内。因而,例如可选择阈值以便可在该时间限度内预编译 尽可能多的被判定为复杂的函数。如果步骤203的判定结果为没有函数是复杂的,则方法200可前进到任选步 骤207。如果步骤203的判定结果为一个或多个函数是复杂的,则在步骤205编译 这些复杂函数——这在此处被称为"预编译",因为此编译发生在执行代码之前(以及在任何JIT翻译之前)。根据实施例, 一旦己根据步骤205对函数进行预编译,则它即准备好被执行而无需进一步进行处理。在任选步骤207,就是否检测到一个或多个"简单"函数作出判定。与复杂函 数的情形一样,什么构成简单函数可基于任何准则。例如,简单函数可被定义为代 码行数目比阈值数目小的子例程。例如,可基于与执行子例程所需的处理时间相比 的上下文切换所需的处理时间来选择阈值。还可考虑附加的因素,包括专用程序应 用因素。例如,特定的子例程的代码行数目可能小于阈值数目,但可能在整个应用程 序代码中出现众多次。函数的内联可涉及本质上将该函数内的代码行拷贝到代码的 主体来替代相应的函数调用。因而,在执行期间,函数代码可被内联编译或执行而 无需与该代码所起源的子例程来回上下文切换。这样的拷贝由于所复制的数据而可 增加应用程序的总大小。结果,在应用程序中出现众多次的子例程可需要进行如此 多的复制,以致因内联函数所获得的处理好处可能由于增加的存储需求、内联大量 函数所需的过多的处理时间等而抵销。结果,这些函数可能不被判定为简单,即使 它们根据阈值是合格的。在任选步骤207,如果一个或多个函数被确定为简单,则在任选步骤209,函 数被与应用程序代码的主体内联放置。如上所述,内联放置代码可能需要从子例程 等拷贝代码并使用该子例程代码来替代在主体中的相应的函数调用。图4A-B示出 了将在以下讨论的内联放置函数的效果的图示。如果步骤207的判定是在任选步骤 207没有函数被判定为简单,则方法200直接前进到步骤211。在步骤211 ,仿真代码的JIT翻译通过运行时引擎等连同代码的执行一起进行。 如上所述,因为复杂函数已在步骤205被预编译,这些函数不需要在步骤211翻译, 并且可被直接执行。另外,对在步骤209被内联放置的任何函数,无需执行上下文 切换。如上所述,用于判定函数是复杂还是简单的(由此该函数分别应当被预编译 还是内联放置)阈值和因素可基于各种因素,包括但不限于应用程序的所期望的引 导时间。因而,应当理解,实施例允许开发员等来确定由此预编译和/或内联导致 的运行时好处与引导时间的相应增加之间的可接受的折衷。图3表示根据实施例的示例代码流程。函数310a-d表示应用程序的虚拟代码 的主体300内的函数。在运行时期间,函数310a使用JIT翻译进程320a来翻译。 代码流程由从函数310a通向JIT翻译进程320a的箭头A来表示,接着, 一旦JIT翻译进程320完成,箭头B指示随后执行函数310a。然后,仿真二进制码经由箭 头C前进到函数310b。函数310b还按箭头A表示由进程320b进行JIT翻译,并 且按箭头B表示来执行。然而, 一旦二进制到达预编译函数310c,则无需JIT翻 译,因为已根据例如图2的步骤205进行了翻译的预编译函数310c准备好被执行。 这些对于预编译函数310d也是成立的。因而,可了解到图3提供了根据实施例可 能发生的经更改的JIT翻译进程的图示。图4A-B根据如上结合以上连同图2的任选步骤209 —起讨论的代码的内联的 示例代码流程。参看图4A,函数410a-b位于应用程序的主体400内。如箭头A所 示,从函数410a-b分别调用函数子例程420a-b,并且如箭头B所示,子例程420a-b 的结果返回到函数410a-b。如可从图4A中了解到,子例程420b被指定为"简单", 这指示例如其代码行数目小于阈值数目,与以上结合图2的步骤207所述的一样。 主体400内从函数410a到410b的代码流程由箭头C来表示。现在参看图4B,函数410a和子例程420a与以上结合图4A所讨论的一样。 然而,可见,函数410b不包含对子例程420b的调用。相反,函数410b前进到已 被放置在代码的主体400中的子例程420b。因而,为子例程420b避免了由箭头A 和B指示的调用和返回。子例程420'表示由于其代码已被拷贝到代码的主体400 而未被使用的原始子例程420b所占据的存储器。虽然已结合各个附图的实施例描述了本发明,但是应当理解,可使用其它类 似实施例,而且可对所述实施例作出更改和附加以执行本发明的相同功能而不与之 背离。因此,本发明不应当限于任何单个实施例,而相反应当根据所附权利要求的 广度和范围来解释。

Claims (20)

1.一种方法,包括: 扫描具有至少一个函数的虚拟代码; 在所述扫描期间判定所述至少一个函数是否超出第一预定阈值; 如果所述至少一个函数超出所述第一预定阈值,则预编译所述函数;以及 对所述虚拟代码执行及时翻译。
2. 如权利要求1所述的方法,其特征在于,所述预定阈值对应于预定复杂度 级别。
3. 如权利要求2所述的方法,其特征在于,所述复杂度级别对应于代码行的 预定数目。
4. 如权利要求1所述的方法,其特征在于,还包括在启动过程期间加载所述 虚拟代码,并且其中所述扫描步骤是在所述加载步骤之前执行的。
5. 如权利要求1所述的方法,其特征在于,所述预编译步骤延长虚拟代码启 动周期一持续时间,并且其中所述第一预定阈值基于所述持续时间。
6. 如权利要求1所述的方法,其特征在于,所述虚拟代码具有主体和至少一 个子例程,并且还包括:判定所述至少一个子例程具有小于第二预定阈值的复杂度;以及 将所述至少一个子例程放置在所述虚拟代码的所述主体中。
7. 如权利要求6所述的方法,其特征在于,所述至少一个子例程具有代码行, 以及其中所述主体具有对应于所述子例程的函数调用,并且其中所述放置步骤包括 从所述至少一个子例程拷贝所述代码行并使用所述代码行替代所述虚拟代码的所 述主体中的所述函数调用。
8. 如权利要求7所述的方法,其特征在于,还包括多个子例程,并且其中仅 当所述子例程的数量小于第三预定阈值时,才执行所述放置步骤。
9. 如权利要求l所述的方法,其特征在于,所述虚拟代码实现图形渲染软件。
10. —种方法,包括:对软件应用的仿真二进制码执行预引导扫描;对所述二进制码内超出第一预定阈值的第一函数进行标识;对所述二进制码内需要上下文切换来执行并小于第二预定阈值的第二函数进行标识;预编译所述第一函数;将所述第二函数内联放置在所述仿真二进制的主体中;以及 对所述仿真二进制码执行及时翻译。
11. 如权利要求IO所述的方法,其特征在于,所述及时翻译生成适于由预定 处理器执行的第二二进制码。
12. 如权利要求11所述的方法,其特征在于,还包括执行所述经翻译的二进 制码。
13. 如权利要求IO所述的方法,其特征在于,所述及时翻译在所述软件应用程序的运行时执行。
14. 如权利要求10所述的方法,其特征在于,所述软件应用程序是游戏软件。
15. 如权利要求10所述的方法,其特征在于,所述第一和第二函数与图形渲 染相关。
16. —种具有用于执行一种方法的计算机可执行指令的计算机可读介质,所述 方法包括:扫描具有至少一个函数的虚拟代码;判定所述至少一个函数是否超出第一预定阈值;如果所述至少一个函数超出所述第一预定阈值,则预编译所述函数;以及 对所述虚拟代码执行及时翻译。
17. 如权利要求16所述的计算机可读介质,其特征在于,所述方法还包括在 启动过程期间加载所述虚拟代码,并且其中所述扫描步骤是在所述加载步骤之前执 行的。
18. 如权利要求16所述的计算机可读介质,其特征在于,所述预编译步骤延 长虚拟代码启动周期一持续时间,并且其中所述第一预定复杂度阈值基于所述持续 时间。
19. 如权利要求16所述的计算机可读介质,其特征在于,所述虚拟代码具有 主体和至少一个子例程,并且还包括:判定所述至少一个子例程具有小于第二预定复杂度阈值的复杂度;以及 将所述至少一个子例程放置在所述虚拟代码的所述主体中。
20. 如权利要求19所述的计算机可读介质,其特征在于,所述至少一个子例 程具有代码行,以及其中所述主体具有对应于所述子例程的函数调用,并且其中所述放置步骤包括从所述至少一个子例程拷贝所述代码行并使用所述代码行替代所 述虚拟代码的所述主体中的所述函数调用。
CN 200680024664 2005-07-08 2006-06-30 用以提高仿真器性能的虚拟代码的选择性预编译方法和系统 CN101238438B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US11177130 US7389500B2 (en) 2005-07-08 2005-07-08 Selective pre-compilation of virtual code to enhance boot time emulator performance
US11/177,130 2005-07-08
PCT/US2006/026081 WO2007008506A3 (en) 2005-07-08 2006-06-30 Selective pre-compilation of virtual code to enhance emulator performance

Publications (2)

Publication Number Publication Date
CN101238438A true true CN101238438A (zh) 2008-08-06
CN101238438B CN101238438B (zh) 2010-12-08

Family

ID=37619700

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200680024664 CN101238438B (zh) 2005-07-08 2006-06-30 用以提高仿真器性能的虚拟代码的选择性预编译方法和系统

Country Status (6)

Country Link
US (1) US7389500B2 (zh)
EP (1) EP1902364A4 (zh)
JP (1) JP4294084B2 (zh)
KR (1) KR20080023728A (zh)
CN (1) CN101238438B (zh)
WO (1) WO2007008506A3 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137076A (zh) * 2012-02-27 2014-11-05 高通股份有限公司 用于图形处理单元的应用的验证
CN104205049A (zh) * 2012-03-22 2014-12-10 英特尔公司 混合模拟和内核函数处理系统和方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8157654B2 (en) * 2000-11-28 2012-04-17 Nintendo Co., Ltd. Hand-held video game platform emulation
US7987457B2 (en) * 2007-06-25 2011-07-26 Microsoft Corporation Targeted patching for native generation images
US8875114B2 (en) * 2007-09-21 2014-10-28 International Business Machines Corporation Employing identifiers provided by an operating system of a processing environment to optimize the processing environment
KR100964581B1 (ko) * 2008-08-20 2010-06-21 주식회사 컴퍼니원헌드레드 두 단계 레지스터 기반 바이트코드를 이용한 스크립트 언어 실행 시스템
US9239732B2 (en) * 2011-02-16 2016-01-19 Microsoft Technology Licensing Llc Unrolling aggregation operations in asynchronous programming code having multiple levels in hierarchy
US9378001B2 (en) 2014-05-02 2016-06-28 Microsoft Technology Licensing, Llc Matching program sections through feature extraction

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5097407A (en) 1986-08-08 1992-03-17 Integrated Inference Machines Artificial intelligence processor
CN1266378A (zh) 1998-04-27 2000-09-13 世嘉企业股份有限公司 利用游戏者数据的游戏执行方法及游戏装置
US6354940B1 (en) 1999-04-30 2002-03-12 Square Co., Ltd. Game apparatus, game fight processing method, and computer readable storage medium storage program therefor
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
US6332215B1 (en) * 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US7225436B1 (en) * 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6826749B2 (en) * 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US6338160B1 (en) * 1998-12-08 2002-01-08 Nazomi Communications, Inc. Constant pool reference resolution method
US6774885B1 (en) 1999-01-20 2004-08-10 Motek B.V. System for dynamic registration, evaluation, and correction of functional human behavior
US6842894B1 (en) 1999-04-05 2005-01-11 Gateway, Inc. Dynamic Compiling
JP3191241B2 (ja) 1999-07-14 2001-07-23 株式会社スクウェア コンピュータ読み取り可能な記録媒体、ゲーム制御方法およびゲーム装置
GB9921720D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
US6704926B1 (en) * 2000-09-28 2004-03-09 International Business Machines Corporation Bimodal Java just-in-time complier
JP2002169696A (ja) * 2000-12-04 2002-06-14 Mitsubishi Electric Corp データ処理装置
US7225456B2 (en) * 2001-04-23 2007-05-29 Sony Corporation Gateway screen for interactive television
WO2003015034A1 (en) 2001-08-10 2003-02-20 Stephen John Regelous A method of rendering an image and a method of animating a graphics character
US7228533B2 (en) * 2001-08-24 2007-06-05 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions for performing programming loops
GB0220282D0 (en) * 2002-08-31 2002-10-09 Ibm Improved just in time compilation of java software methods
US7090576B2 (en) 2003-06-30 2006-08-15 Microsoft Corporation Personalized behavior of computer controlled avatars in a virtual reality environment

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137076A (zh) * 2012-02-27 2014-11-05 高通股份有限公司 用于图形处理单元的应用的验证
CN104137076B (zh) * 2012-02-27 2017-05-24 高通股份有限公司 用于验证应用的方法和设备
CN104205049A (zh) * 2012-03-22 2014-12-10 英特尔公司 混合模拟和内核函数处理系统和方法

Also Published As

Publication number Publication date Type
CN101238438B (zh) 2010-12-08 grant
JP4294084B2 (ja) 2009-07-08 grant
WO2007008506A2 (en) 2007-01-18 application
WO2007008506A3 (en) 2007-08-23 application
KR20080023728A (ko) 2008-03-14 application
EP1902364A2 (en) 2008-03-26 application
US7389500B2 (en) 2008-06-17 grant
JP2009501368A (ja) 2009-01-15 application
US20070011666A1 (en) 2007-01-11 application
EP1902364A4 (en) 2009-01-21 application

Similar Documents

Publication Publication Date Title
Eilam Reversing: secrets of reverse engineering
US6907519B2 (en) Systems and methods for integrating emulated and native code
Hookway et al. Digital FX! 32: Combining emulation and binary translation
Lippman Inside the C++ object model
US6314560B1 (en) Method and apparatus for a translation system that aggressively optimizes and preserves full synchronous exception state
Heiser et al. The OKL4 Microvisor: Convergence point of microkernels and hypervisors
US20060265703A1 (en) Computer architecture and method of operation for multi-computer distributed processing with replicated memory
US6233725B1 (en) Method and apparatus to coordinate and control the simultaneous use of multiple just in time compilers with a java virtual machine
Chernoff et al. FX! 32 a profile-directed binary translator
US20060155667A1 (en) Systems and methods for attaching a virtual machine virtual hard disk to a host machine
Desoli et al. Deli: A new run-time control point
Vasudevan et al. Cobra: Fine-grained malware analysis using stealth localized-executions
Klein et al. seL4: Formal verification of an OS kernel
US5911073A (en) Method and apparatus for dynamic process monitoring through an ancillary control code system
US6275938B1 (en) Security enhancement for untrusted executable code
US20060004554A1 (en) Systems and methods for development of emulated devices in a virtual machine environment
Dehnert et al. The Transmeta Code Morphing™ Software: using speculation, recovery, and adaptive retranslation to address real-life challenges
US20060005188A1 (en) Systems and methods for initializing multiple virtual processors within a single virtual machine
US6530075B1 (en) JIT/compiler Java language extensions to enable field performance and serviceability
US20050080753A1 (en) Systems and methods for instruction sequence compounding in a virtual machine environment
Hunt et al. An overview of the Singularity project
US20100318997A1 (en) Annotating virtual application processes
US7496495B2 (en) Virtual operating system device communication relying on memory access violations
US20060130016A1 (en) Method of kernal-mode instruction interception and apparatus therefor
Hunt et al. Singularity: rethinking the software stack

Legal Events

Date Code Title Description
C06 Publication
C10 Request of examination as to substance
C14 Granted
C17 Cessation of patent right