CN101777006A - 优化虚拟机环境中的应用程序接口的方法和装置 - Google Patents

优化虚拟机环境中的应用程序接口的方法和装置 Download PDF

Info

Publication number
CN101777006A
CN101777006A CN201010004458A CN201010004458A CN101777006A CN 101777006 A CN101777006 A CN 101777006A CN 201010004458 A CN201010004458 A CN 201010004458A CN 201010004458 A CN201010004458 A CN 201010004458A CN 101777006 A CN101777006 A CN 101777006A
Authority
CN
China
Prior art keywords
processor
managed
stake
instruction
instructions
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
Application number
CN201010004458A
Other languages
English (en)
Other versions
CN101777006B (zh
Inventor
古鲁拉杰·纳吉德拉
斯图尔特·泰勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101777006A publication Critical patent/CN101777006A/zh
Application granted granted Critical
Publication of CN101777006B publication Critical patent/CN101777006B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. 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

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)
  • Executing Machine-Instructions (AREA)

Abstract

在虚拟机(VM)环境下用于优化的应用程序接口(API)的方法和装置。首先,生成与一条或更多条处理器指令相关联的处理器指令桩(PIPS),其中,术语“桩”指被提供来在程序执行期间完成各种任务的部分动态生成的代码。然后,基于所生成的PIPS,生成优化的应用程序接口,以执行所述一条或更多条处理器指令。该优化操作克服了这样的事实:在VM环境中的JIT编译器不能进行处理器专用优化,即不能利用下层处理器提供的特征。

Description

优化虚拟机环境中的应用程序接口的方法和装置
本发明是PCT国际申请号PCT/US2005/002989、国际申请日2005年2月2日、中国国家申请号200580005548.4、名称为“优化虚拟机环境中的应用程序接口的方法和装置”的申请的分案申请。
技术领域
本公开总地涉及受管理运行时环境(managed runtime environment),更具体地说,涉及用于优化受管理应用程序接口的方法和装置。
背景技术
受管理代码(managed code)是在受管理运行时环境(MRTE)的控制下执行的代码(例如,任何用Microsoft
Figure G2010100044586D00011
的C#(“C-sharp”)或者Visual Basic.NET编写的代码),而非受管理代码(unmanaged code)是在MRTE之外执行的代码(例如,COM组件和WIN32API函数)。典型地,受管理代码可以在运行时期间用于支持组件和应用,而非受管理代码可以用于支持与平台(即处理器)的低层交互。随着应用向在MRTE(例如Java
Figure G2010100044586D00012
虚拟机(JVM)和Microsoft
Figure G2010100044586D00013
.NET提供的公共语言运行时(CLR))上的可操作性移植,虚拟机正把应用从处理器移走(即,受管理运行时应用正变得对虚拟机依赖得更多,对处理器依赖得更少)。如今,非受管理软件库函数(例如Intel
Figure G2010100044586D00014
集成性能原语(integrated performanceprimitive,IPP))一般被优化,以供在使用一种或者更多种Intel
Figure G2010100044586D00015
Pentium(奔腾)技术和/或IntelItanium(安腾)技术实现的处理器上的非受管理环境中的执行。通过使用处理器专用指令(例如流式单指令/多数据(streaming single instruction,SIMD)扩展(SSE)指令、SSE2指令和/或Intel
Figure G2010100044586D00019
处理器提供的多媒体扩展(MMX)指令)编写定制手工(customhand)优化代码,所述非受管理软件库函数还可以被进一步优化,以在具体的处理器体系结构上进行操作。例如,字符串比较函数可以用非受管理代码实现,并且通过使用SSE2指令的定制手工优化编码被优化。与非受管理代码形成对比,受管理代码不可以以与非受管理代码相同的方式针对特定的处理器体系结构被优化,因为不存在定制手工优化受管理代码的机制。例如,典型地,受管理API只依赖于用于优化的即时(just-in-time,JIT)编译器。于是,受管理运行时应用不能利用在下层处理器上执行的处理器专用优化指令来使能(enable)和优化诸如音频处理、视频处理、图像处理、言语识别、加密等特征(feature)。
发明内容
本发明的目的之一是提供一种用于优化应用程序接口的方法,包括:生成与一条或更多条处理器指令相关联的处理器指令代理桩,所述一条或更多条处理器指令为处理器专用指令;接收与不支持所述一条或更多条处理器指令的受管理运行环境相关联的受管理应用程序接口;将与所述一条或更多条处理器指令相关联的所述处理器指令代理桩***所述受管理应用程序接口,以生成优化的受管理应用程序接口;以及使用所述受管理运行环境的编译器编译包括本机代码的所述优化的受管理应用程序接口。
本发明的另一目的是提供一种用于优化应用程序接口的装置,包括:处理器指令代理桩生成器,所述处理器指令代理桩生成器生成与一条或更多条处理器指令相关联的处理器指令代理桩,接收与不支持所述一条或更多条处理器指令的受管理运行环境相关联的受管理应用程序接口,以及将与所述一条或更多条处理器指令相关联的所述处理器指令代理桩***所述受管理应用程序接口,以生成优化的受管理应用程序接口,其中所述一条或更多条处理器指令为处理器专用指令;以及编译器,所述编译器使用所述受管理运行环境的编译器编译包括本机代码的所述优化的受管理应用程序接口。
本发明的还有一目的是提供一种处理器***,包括:动态随机存储器DRAM,所述动态随机存储器储存一个或更多个与受管理运行环境相关联的优化的受管理应用程序接口;以及耦合到所述DRAM的处理器,所述处理器生成与一条或更多条处理器指令相关联的处理器指令代理桩,接收与不支持所述一条或更多条处理器指令的受管理运行环境相关联的受管理应用程序接口,将与所述一条或更多条处理器指令相关联的所述处理器指令代理桩***所述受管理应用程序接口以生成优化的受管理应用程序接口,以及使用所述受管理运行环境的编译器编译包括本机代码的所述优化的受管理应用程序接口,其中所述一条或更多条处理器指令为处理器专用指令。
附图说明
图1是现有***中配置的受管理运行时环境(MRTE)***的示例性体系结构层级的框图表示。
图2是示例性MRTE***的示例性体系结构层级的框图表示,所述示例性MRTE***包括根据此处公开的本发明的教导的实施方案配置的处理器指令代理桩(processorinstruction proxy stub,PIPS)***。
图3是示例性处理器指令代理桩(PIPS)***的框图表示。
图4是可以由如图3所示的示例性PIPS***优化的示例性非受管理代码的高级语言表示。
图5是示例性本机(native)汇编代码的代码表示,所述示例性本机汇编代码对应于图4的高级语言,并且包括优化所述本机汇编代码的PIPS。
图6和7是可被执行以实现如图3所示的示例性PIPS***的示例性机器可访问指令的流程图表示。
图8是可以用于实现如图3所示的示例性PIPS***的示例性处理器***的框图表示。
具体实施方式
参照图1,典型地,受管理运行时环境(MRTE)***100的体系结构层级包括受管理运行时应用110、一个或更多个受管理应用程序接口(API)120、虚拟机(VM)130、编译器140、处理器专用指令150以及处理器160。使用在这里,术语“应用”是指操纵数据的一个或更多个方法、程序、函数、例程或子例程。
典型地,所述的受管理运行时应用110由程序员编写,以在MRTE中提供各种服务。受管理运行应用110的源代码可以用例如C#、Visual Basic.NET,和/或任何合适的面向对象编程语言编写。
诸如Microsoft
Figure G2010100044586D00031
.NET框架类库或Java类库的受管理API 120把受管理运行时应用110的源代码分别转换(即编译)为微软中间语言(MSIL)代码或Java字节码。所述受管理API 120作为受管理运行时应用110和VM 130之间的接口。
VM 130通过给受管理API 120提供诸如垃圾收集、存储器管理以及代码与基于角色的安全的服务,来操作抽象处理器对受管理运行时应用110进行管理。例如,处理器不可知的VM 130可以是微软公共语言运行时或者Java虚拟机。所述受管理API 120和所述VM 130独立于任何具体平台操作,从而MISL代码或者Java字节码并不以任何具体处理器为目标。相应地,例如即时(JIT)编译器的编译器140把所述MISL代码或所述Java字节码从受管理API 120转换(即重新编译)为可以由处理器160执行的本机汇编代码。
处理器160可以使用IntelPentium
Figure G2010100044586D00033
(奔腾)技术、Intel
Figure G2010100044586D00034
Itanium
Figure G2010100044586D00035
(安腾)技术和/或Intel
Figure G2010100044586D00036
个人因特网客户体系结构(personal Internet client architecture,PCA)技术中的一种或更多种实现。处理器160能够执行诸如SSE指令、SSE2指令、MMX指令和/或其他合适指令的处理器专用指令150,来为所述MRTE***100提供诸如加密、多媒体、音频编解码器、视频编解码器、图像编码、图像处理、信号处理、字符串处理、言语压缩、计算机视觉等的软件库函数。
然而,如上所述,非受管理软件库函数(即处理器专用指令150)可以针对处理器160被优化,而受管理代码(即受管理API 120)不能以同样的方式针对某些处理器体系结构被优化,因为之前不存在定制手工优化受管理代码函数的机制。即,对应于所述受管理运行时应用110的受管理API 120只依赖于JIT编译器140进行优化,并且所述JIT编译器140不能进行处理器专用优化。因此,在现有技术***中,下层处理器160不能利用所述VM 130提供的服务,同时,所述受管理运行时应用110不能利用由下层处理器160提供的特征,因为所述VM 130不支持所述下层处理器160的某些处理器专用指令150。
在图2的实施例中,示出的包括处理器指令代理桩(PIPS)***200的MRTE的体系结构层级包括受管理运行时应用210、一个或更多个API 220、一个或更多个优化的受管理API 225、VM 230、PIPS生成器235、编译器240、处理器专用指令250和处理器260。使用在这里,“桩(stub)”是指被提供来在程序执行期间完成各种任务的动态生成的代码的一部分。
一般来说,PIPS生成器235生成被称为PIPS(例如,图5的PIPS 510)的代码或指令集的一部分,以优化受管理运行时应用210在下层处理器260上的执行。例如,当受管理运行时应用210被安装时,所述PIPS生成器235基于所述处理器专用指令250生成PIPS。此外,所述PIPS生成器235把所述PIPS***到某些受管理API 220中,以创建被所述受管理运行时应用210使用的优化的受管理API 225。如以下详细描述的,在受管理运行时应用210的执行期间,所述优化的受管理API 225优化下层处理器260的性能,而不是必须把非受管理代码(即处理器专用指令250)重写为受管理代码(即受管理运行时应用210)。优化的受管理API 225可以被储存在存储器(例如,图8的存储器1030)中,并且在受管理运行时应用210在MRTE中的执行期间被重新调用。结果,下层处理器260的特征可以被使能,以优化所述受管理运行时应用210在下层处理器260上的性能。
尽管图2所示的PIPS生成器235被描绘为PIPS***200内分离的方框,但是PIPS生成器235完成的功能可以被集成到VM 230和/或JIT编译器240内。
参照图3,示例性PIPS***300包括受管理运行时应用310、一个或更多个优化的受管理API 325、VM 330、JIT编译器340、本机汇编代码350,以及在MRTE中执行受管理运行时应用310的处理器360。VM 330可以执行与不同处理器兼容的处理器指令,以执行所述受管理运行时应用310。然而,典型地,所述VM 330可能不执行下层处理器360的某些处理器专用指令来使能若没有所述优化的受管理API 325将不可用的特征。相反,例如,在PIPS***300执行受管理运行时应用310期间,所述JIT编译器340对优化的受管理API 325进行编译,以生成所述本机汇编代码350(例如,图5的本机汇编代码500)。具体来说,所述JIT编译器340只编译和执行所述本机汇编代码350,而不是必须对本机汇编代码350进行任何进一步的优化,因为在所述受管理运行时应用310的安装期间所述PIPS生成器235曾***PIPS以生成所述优化的受管理API 325。换句话说,针对受管理运行时应用310在所述下层处理器360上的执行,PIPS之前曾优化了受管理运行时应用310的受管理API(即所述优化的受管理API 325)。因此,所述优化的受管理API 325对所述下层处理器360的性能进行优化,而无需所述JIT编译器340把非受管理代码(例如,图2的处理器专用指令250)重写为受管理代码(即受管理运行时应用310)。于是,所述本机汇编代码350被定制为对受管理运行时应用310在下层处理器360上的性能进行优化。
在图4的实施例中,字符串比较函数400用非受管理高级代码实现。典型地,针对使用上面提及的Intel
Figure G2010100044586D00051
处理技术中的一种或更多种实现的处理器,通过使用诸如SSE2指令的处理器专用指令的定制手工优化编码,所述字符串比较函数400被定制优化成C语言例程。然而,不存在针对特定的处理体系结构定制手工优化诸如C#或Java比较函数代码的受管理代码的机制。
如结合附图2和3所描述的,图5示出本机汇编代码500的示例性部分,所述本机汇编代码500包括PIPS 510以优化字符串比较函数400在下层处理器360上的性能。具体来说,所述本机汇编代码500包括由PIPS生成器235生成的PIPS 510。例如,在字符串比较函数400的安装期间,所述PIPS生成器235可以使用Microsoft.NET提供的本机编排语言(marshaling language,ML)代码生成所述PIPS 510。基于所述PIPS 510,PIPS生成器235创建对应于受管理运行时应用310的优化的受管理API 325。JIT编译器340编译与包括PIPS 510(如图5所示)的字符串比较函数对应的本机汇编代码500,以供所述下层处理器360执行。当所述字符串比较函数400在运行时期间被初始化时,所述VM 330为JIT编译器340取得所述优化的受管理API 325,以生成所述本机汇编代码500。所述JIT编译器340编译并执行优化的受管理API 325,而不是必须对优化的受管理API 325进行进一步优化,因为PIPS生成器235之前曾把PIPS 510***到优化的受管理API 325中。于是,所述受管理运行时应用310可以从VM 330提供的服务(例如,垃圾收集,存储器管理和/或代码与基于角色的安全)和所述下层处理器360的特征两者中受益,因为下层处理器360的处理器专用指令250(即非受管理代码)通过PIPS 510被向上抽象到VM层。换句话说,优化的受管理API 325可以使能处理器专用指令,以使能下层处理器360的特征来操作受管理运行时应用310。
图6和7中分别描述了表示可以被处理器执行以优化受管理API的机器可访问指令的流程图600和700。本领域的普通技术人员将意识到,所述指令可以使用很多不同的编程代码中的任何代码以很多种不同方式中的任何方式来实现,所述编程代码储存在很多种计算机可访问介质的任何一种上,所述计算机可访问介质例如易失性或非易失性存储器或者其他大容量储存设备(例如,软盘,CD和DVD)。例如,机器可访问指令可以被实施在诸如可擦除可编程只读存储器(EPROM)、只读存储器(ROM)、随机访问存储器(RAM)、磁介质、光介质和/或任何其他合适类型的介质的机器可访问介质中。可替换地,机器可访问指令可以用可编程门阵列和/或专用集成电路(ASIC)实施。此外,尽管图6和7示出特定的动作顺序,但是本领域的普通技术人员将意识到,这些动作可以以其他时间顺序完成。再者,结合图2和5,流程图600和700仅被提供和描述为优化受管理API的一种方法的实施例。
在图6的实施例中,流程图600以PIPS生成器235生成与下层处理器260的处理器专用指令250相关联的PIPS 510(方框610)开始。例如,在受管理运行时应用210的安装期间,PIPS生成器235可以基于对应于下层处理器260的处理器标识符(identifier)生成PIPS 510。如上所述,当下层处理器260的诸如音频处理、视频处理、图像处理、言语识别、加密等特征可能不能以其他方式可用时,处理器专用指令250使能这些特征,以优化受管理运行时应用210在下层处理器260上的性能。基于PIPS 510,PIPS生成器235生成优化的受管理API 225(方框620)。具体来说,PIPS生成器235把PIPS 510***到某些对应于受管理运行时应用210的受管理API 220中。PIPS生成器235储存优化的受管理API 225,从而在受管理运行时应用210在下层处理器260上的执行期间,优化的受管理API 235可为JIT编译器240所用。
在图7的实施例中,流程图700以JIT编译器240编译并执行对应于受管理运行时应用210的优化的受管理API 225(方框710)开始。如上所述,JIT编译器240可以编译所述优化的受管理API 225,而无需进一步优化所述优化的受管理API 225,因为PIPS生成器235之前曾把与处理器专用指令250相关联的PIPS 510***到所述优化的受管理API225中。即,所述PIPS 510将受管理运行时应用210定制手工优化为通过优化的受管理优化API 225工作在下层处理器260上。所述JIT编译器240使能下层处理器260的对应于处理器专用指令250(方框640)的特征。在受管理运行时应用210在下层处理器260上的执行期间,除了VM 230提供的诸如垃圾收集、存储器管理和/或代码与基于角色的安全的服务外,所述受管理运行时应用210可以利用优化的受管理API 225提供的诸如加密、多媒体、音频编解码器、视频编解码器、图像编码、图像处理、信号处理、字符串处理、言语压缩、计算机视觉等软件库函数。于是,受管理的优化的API 225允许受管理运行时应用210执行处理器专用指令250来使能下层处理器260的特征,所述特征不然在另一个处理器上将会不可用或无效。此外,受管理的优化的API 225通过本机汇编代码500定制手工优化受管理运行时应用210在下层处理器260上的性能。
此处公开的方法和装置非常适合实现欧洲计算机管理协会(ECMA)公共语言基础结构(CLI)(第二版本,2002年12月)和ECMA C#语言规范(第二版本,2002年12月)的源代码。然而,本领域的普通技术人员将意识到,本公开的教导可以应用于其他运行时环境下的源代码。
图8是适于实现此处公开的方法和装置的示例性处理器***1000的框图。处理器***1000可以是桌面型计算机、膝上型计算机、笔记本式计算机、个人数字助理(PDA)、服务器,因特网应用设备(appliance)或任何其他类型的计算设备。
图8中示出的处理器***1000包括芯片组1010,所述芯片组1010包括存储器控制器1012和输入/输出(I/O)控制器1014。众所周知,芯片组一般提供存储器和I/O管理功能,以及可被处理器1020访问或使用的多个通用和/或专用寄存器、计时器等。处理器1020用一个或更多个处理器实现。例如,处理器1020可以用IntelPentium
Figure G2010100044586D00062
(奔腾)技术、Intel
Figure G2010100044586D00063
Itanium
Figure G2010100044586D00064
(安腾)技术、IntelCentrinoTM(迅驰)技术和/或IntelXScale
Figure G2010100044586D00067
技术中的一种或更多种来实现。可替换地,其他处理技术可以用于实现处理器1020。处理器1020包括缓存(cache)1022,如本领域的普通技术人员将容易意识到的,缓存1022可以用一级统一缓存(L1),二级统一缓存(L2),三级统一缓存(L3)和/或任何其他适合的结构实现以储存数据。
常规地,存储器控制器1012完成使处理器1020能够通过总线1040访问主存储器1030并与之通信的功能,所述主存储器1030包括易失性存储器1032和非易失性存储器1034。所述易失性存储器1032可以用同步动态随机访问存储器(SDRAM)、动态随机访问存储器(DRAM)、RAMBUS动态随机访问存储器(RDRAM)和/或任何其他类型的随机访问存储器设备来实现。非易失性存储器1034可以用闪存存储器、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)和/或其他期望类型的存储器设备来实现。
处理器***1000还包括耦合到总线1040的接口电路1050。接口电路1050可以用任何类型的已知接口标准来实现,所述接口标准例如以太网接口、通用串行总线(USB)、第三代输入/输出(3GIO)接口和/或任何合适的其他类型的接口。
一个或更多个输入设备1060被连接到接口电路1050。一个或多个输入设备1060允许用户向处理器1020输入数据和命令。例如,一个或多个输入设备1060可以用键盘、鼠标、触摸敏感显示器、跟踪板、跟踪球、指向柱(isopoint)和/或语音识别***实现。
一个或更多个输出设备1070也被连接到接口电路1050。例如,一个或多个输出设备1070可以用显示设备(例如,发光二极管显示器(LED),液晶显示器(LCD),阴极射线管(CRT)显示器,打印机和/或扬声器)实现。因此,除其他设备外,接口电路1050一般包括图形驱动器卡。
处理器***1000还包括一个或更多个大容量储存设备1080以储存软件和数据。这样的一个或多个大容量储存设备1080的实施例包括软盘和驱动器、硬盘驱动器、致密盘和驱动器,以及数字多用途盘(DVD)和驱动器。
接口电路1050还包括诸如调制解调器或网络接口卡的通信设备,以便于通过网络与外部计算机交换数据。处理器***1000和所述网络之间的通信链路(link)可以是任何类型的网络连接,例如以太网连接、数字用户线(DSL)、电话线、蜂窝电话***、同轴电缆等。
对一个或多个输入设备1060、一个或多个输出设备1070、一个或多个大容量储存设备1080和/或所述网络的访问一般由I/O控制器1014以常规的方式控制。具体来说,UO控制器1014完成使处理器1020能够通过总线1040和接口电路1050与一个或多个输入设备1060、一个或多个输出设备1070、一个或多个大容量储存设备1080和/或所述网络通信的功能。
尽管图8所示的组件被描绘成处理器***1000内的分离的方框,但是这些方框中的一些完成的功能可以被集成到单个半导体电路中,或者可以用两个或更多个分离的集成电路实现。例如,虽然存储器控制器1012和I/O控制器1014被描绘成芯片组1010内的分离的方框,但是本领域的普通技术人员会容易地理解,存储器控制器1012和I/O控制器1014可以被集成到单个半导体电路中。
虽然这里已描述了某些示例性方法、装置和制品,但是本专利的覆盖范围不限于此。相反,本专利覆盖正好落入所附权利要求书在字面上或者在等同原则下的范围内的所有方法、装置和制品。例如,尽管以上公开了除其他组件外包括软件或硬件上执行的固件的示例性***,但是应该注意,这样的***仅仅是例证性的,而不应被视为限制性的。具体来说,预期任何或所有被公开的硬件、软件和/或固件组件可以被排他地实施在硬件中、排他地实施在软件中、排他地实施在固件中,或是被实施在硬件、软件和/或固件的某种组合中。

Claims (19)

1.一种用于优化应用程序接口的方法,包括:
生成与一条或更多条处理器指令相关联的处理器指令代理桩,所述一条或更多条处理器指令为处理器专用指令;
接收与不支持所述一条或更多条处理器指令的受管理运行环境相关联的受管理应用程序接口;
将与所述一条或更多条处理器指令相关联的所述处理器指令代理桩***所述受管理应用程序接口,以生成优化的受管理应用程序接口;以及
使用所述受管理运行环境的编译器编译包括本机代码的所述优化的受管理应用程序接口。
2.如权利要求1所定义的方法,其中生成与所述一条或更多条处理器指令相关联的所述处理器指令代理桩的操作包括在与受管理运行时环境的虚拟机相关联的层中生成所述处理器指令代理桩。
3.如权利要求1所定义的方法,其中生成与所述一条或更多条处理器指令相关联的所述处理器指令代理桩的操作包括在受管理运行时应用的安装期间生成所述处理器指令代理桩。
4.如权利要求1所定义的方法,其中生成与所述一条或更多条处理器指令相关联的所述处理器指令代理桩的操作包括生成与流式单指令/多数据扩展SSE指令、SSE2指令和多媒体扩展指令中的一种相关联的所述处理器指令代理桩。
5.如权利要求1所定义的方法,其中生成与所述一条或更多条处理器指令相关联的所述处理器指令代理桩的操作包括通过虚拟机的编排语言代码生成所述处理器指令代理桩。
6.如权利要求1所定义的方法,其中生成与所述处理器的所述一条或更多条处理器指令相关联的所述处理器指令代理桩的操作包括响应于识别与所述一条或更多条处理器指令相关联的所述处理器,生成所述处理器指令代理桩。
7.如权利要求1所定义的方法,还包括,基于所述优化的受管理应用程序接口,在受管理运行时应用的执行期间使能与所述一条或更多条处理器指令相关联的特征。
8.一种用于优化应用程序接口的装置,包括:
处理器指令代理桩生成器,所述处理器指令代理桩生成器生成与一条或更多条处理器指令相关联的处理器指令代理桩,接收与不支持所述一条或更多条处理器指令的受管理运行环境相关联的受管理应用程序接口,以及将与所述一条或更多条处理器指令相关联的所述处理器指令代理桩***所述受管理应用程序接口,以生成优化的受管理应用程序接口,其中所述一条或更多条处理器指令为处理器专用指令;以及
编译器,所述编译器使用所述受管理运行环境的编译器编译包括本机代码的所述优化的受管理应用程序接口。
9.如权利要求8所定义的装置,其中所述处理器指令代理桩生成器被集成到虚拟机和所述编译器中的一个。
10.如权利要求8所定义的装置,其中所述处理器指令代理桩生成器识别与所述一条或更多条处理器指令相关联的处理器,以生成所述处理器指令代理桩。
11.如权利要求8所定义的装置,其中一条或更多条处理器指令包括流式单指令/多数据扩展SSE指令、SSE2指令和多媒体扩展指令中的一种。
12.如权利要求8所定义的装置,其中所述编译器包括即时编译器。
13.如权利要求8所定义的装置,其中所述处理器指令代理桩在与受管理运行时环境的虚拟机相关联的层中被生成。
14.如权利要求8所定义的装置,其中所述优化的受管理应用接口程序使能与所述一条或更多条处理器指令相关联的特征,以用于受管理运行时应用的执行。
15.一种处理器***,包括:
动态随机存储器DRAM,所述动态随机存储器储存一个或更多个与受管理运行环境相关联的优化的受管理应用程序接口;以及
耦合到所述DRAM的处理器,所述处理器生成与一条或更多条处理器指令相关联的处理器指令代理桩,接收与不支持所述一条或更多条处理器指令的受管理运行环境相关联的受管理应用程序接口,将与所述一条或更多条处理器指令相关联的所述处理器指令代理桩***所述受管理应用程序接口以生成优化的受管理应用程序接口,以及使用所述受管理运行环境的编译器编译包括本机代码的所述优化的受管理应用程序接口,其中所述一条或更多条处理器指令为处理器专用指令。
16.如权利要求15所述的处理器***,其中一条或更多条处理器指令包括流式单指令/多数据扩展SSE指令、SSE2指令和多媒体扩展指令中的一种。
17.如权利要求15所定义的处理器***,其中所述处理器指令代理桩在与受管理运行时环境的虚拟机相关联的层中被生成。
18.如权利要求15所定义的处理器***,其中所述处理器指令代理桩在受管理运行时应用的安装期间被生成。
19.如权利要求15所定义的处理器***,其中在受管理运行时应用的执行期间,所述的一个或更多个优化的受管理应用接口程序使能与所述一条或更多条处理器指令相关联的特征。
CN2010100044586A 2004-02-20 2005-02-02 优化虚拟机环境中的应用程序接口的方法和装置 Active CN101777006B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/783,840 2004-02-20
US10/783,840 US7516459B2 (en) 2004-02-20 2004-02-20 Methods and apparatus to optimize managed application program interfaces

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN200580005548A Division CN100594479C (zh) 2004-02-20 2005-02-02 优化虚拟机环境中的应用程序接口的方法和装置

Publications (2)

Publication Number Publication Date
CN101777006A true CN101777006A (zh) 2010-07-14
CN101777006B CN101777006B (zh) 2013-11-13

Family

ID=34861350

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2010100044586A Active CN101777006B (zh) 2004-02-20 2005-02-02 优化虚拟机环境中的应用程序接口的方法和装置
CN200580005548A Active CN100594479C (zh) 2004-02-20 2005-02-02 优化虚拟机环境中的应用程序接口的方法和装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN200580005548A Active CN100594479C (zh) 2004-02-20 2005-02-02 优化虚拟机环境中的应用程序接口的方法和装置

Country Status (5)

Country Link
US (1) US7516459B2 (zh)
EP (2) EP1719053A1 (zh)
JP (3) JP2007522584A (zh)
CN (2) CN101777006B (zh)
WO (1) WO2005083564A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103020530A (zh) * 2012-11-23 2013-04-03 山东电力集团公司 一种基于嵌入式平台sm2加密算法的优化方法

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4486483B2 (ja) * 2004-11-26 2010-06-23 古野電気株式会社 Tdma通信装置
US7472375B2 (en) * 2005-03-29 2008-12-30 Intel Corporation Creating managed code from native code
US9363481B2 (en) * 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US8311091B1 (en) * 2005-06-03 2012-11-13 Visualon, Inc. Cache optimization for video codecs and video filters or color converters
US7694285B2 (en) * 2005-08-30 2010-04-06 Microsoft Corporation Relaxed and extended delegates
US20070074185A1 (en) * 2005-08-30 2007-03-29 Microsoft Corporation Identifier expressions
US8429629B2 (en) 2005-11-30 2013-04-23 Red Hat, Inc. In-kernel virtual machine for low overhead startup and low resource usage
US8104034B2 (en) * 2005-11-30 2012-01-24 Red Hat, Inc. Purpose domain for in-kernel virtual machine for low overhead startup and low resource usage
US8612970B2 (en) * 2005-11-30 2013-12-17 Red Hat, Inc. Purpose domain for low overhead virtual machines
US7784041B2 (en) * 2006-03-30 2010-08-24 Oracle America, Inc. Mechanism for reducing detectable pauses in dynamic output caused by dynamic compilation
US7984483B2 (en) 2007-04-25 2011-07-19 Acxess, Inc. System and method for working in a virtualized computing environment through secure access
GB2452316B (en) * 2007-08-31 2009-08-19 Toshiba Res Europ Ltd Method of Allocating Resources in a Computer.
KR101528853B1 (ko) * 2007-12-14 2015-07-01 삼성전자주식회사 Api 서비스 방법과 api 매쉬업 생성 방법, 장치 및기록매체
US8479178B2 (en) * 2008-06-27 2013-07-02 Microsoft Corporation Compiler in a managed application context
US8442343B1 (en) * 2009-05-29 2013-05-14 Adobe Systems Incorporated Optimization of staged computations
US8694988B2 (en) * 2010-10-22 2014-04-08 Adobe Systems Incorporated Runtime extensions
US9152437B2 (en) * 2010-10-28 2015-10-06 Hewlett-Packard Development Company, L.P. Dynamically installing image processing
US9223599B1 (en) * 2012-03-30 2015-12-29 Zynga Inc. Client-side server for client-side scripting languages
CN102693150B (zh) * 2012-05-11 2016-06-08 深圳市华为技术软件有限公司 基于计费专有领域的虚拟机的处理方法及装置
US9001136B2 (en) * 2012-05-30 2015-04-07 Ncr Corporation Format and method for representing a dynamic digital image
US8826240B1 (en) * 2012-09-29 2014-09-02 Appurify, Inc. Application validation through object level hierarchy analysis
US20150286471A1 (en) * 2012-12-06 2015-10-08 Integrity Project Ltd System and methods thereof for safe compilation of code into embedded processing systems
CN103136029A (zh) * 2013-03-12 2013-06-05 无锡江南计算技术研究所 即时编译***自适应调优方法
US9720661B2 (en) * 2014-03-31 2017-08-01 International Businesss Machines Corporation Selectively controlling use of extended mode features
US11023556B2 (en) * 2019-07-10 2021-06-01 Salesforce.Com, Inc. Web page designing with content beam to device preview

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1234553A (zh) * 1998-03-23 1999-11-10 太阳微***有限公司 减少编译代码中动态类初始化检查的代价的技术
US6332215B1 (en) * 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
CN1409236A (zh) * 2001-09-28 2003-04-09 讯宝科技公司 无线网络中工作的移动计算机终端通信期间保持应用程序间连通性的软件方法
US20030070161A1 (en) * 2001-10-05 2003-04-10 Sun Microsystems, Inc. Platform-independent selective ahead-of-time compilation
EP1313012A1 (en) * 2001-11-15 2003-05-21 Texas Instruments France Java DSP acceleration by byte-code optimization
US20030115582A1 (en) * 2001-12-13 2003-06-19 Robert Hundt Dynamic registration of dynamically generated code and corresponding unwind information
US20030191620A1 (en) * 2002-04-04 2003-10-09 International Business Machines Corp. Dynamic loading of C-API HDL model instrumentation

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339430A (en) * 1992-07-01 1994-08-16 Telefonaktiebolaget L M Ericsson System for dynamic run-time binding of software modules in a computer system
EP1313021B1 (en) 1995-06-30 2007-01-03 Sony Corporation Data recording method and apparatus, data record medium and data reproducing method and apparatus
WO2002041145A2 (en) 2000-11-20 2002-05-23 Zucotto Wireless Inc. System and methods providing runtime byte code simplification for platform independent languages
US7203941B2 (en) * 2002-11-14 2007-04-10 Microsoft Corporation Associating a native resource with an application
US7707566B2 (en) * 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7647629B2 (en) * 2004-02-03 2010-01-12 Microsoft Corporation Hosted code runtime protection
US7770202B2 (en) * 2004-02-03 2010-08-03 Microsoft Corporation Cross assembly call interception

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1234553A (zh) * 1998-03-23 1999-11-10 太阳微***有限公司 减少编译代码中动态类初始化检查的代价的技术
US6332215B1 (en) * 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
CN1409236A (zh) * 2001-09-28 2003-04-09 讯宝科技公司 无线网络中工作的移动计算机终端通信期间保持应用程序间连通性的软件方法
US20030070161A1 (en) * 2001-10-05 2003-04-10 Sun Microsystems, Inc. Platform-independent selective ahead-of-time compilation
EP1313012A1 (en) * 2001-11-15 2003-05-21 Texas Instruments France Java DSP acceleration by byte-code optimization
US20030115582A1 (en) * 2001-12-13 2003-06-19 Robert Hundt Dynamic registration of dynamically generated code and corresponding unwind information
US20030191620A1 (en) * 2002-04-04 2003-10-09 International Business Machines Corp. Dynamic loading of C-API HDL model instrumentation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103020530A (zh) * 2012-11-23 2013-04-03 山东电力集团公司 一种基于嵌入式平台sm2加密算法的优化方法

Also Published As

Publication number Publication date
JP2012069130A (ja) 2012-04-05
US20050188382A1 (en) 2005-08-25
US7516459B2 (en) 2009-04-07
WO2005083564A1 (en) 2005-09-09
JP2010176688A (ja) 2010-08-12
EP3136233A1 (en) 2017-03-01
JP2007522584A (ja) 2007-08-09
CN100594479C (zh) 2010-03-17
CN101777006B (zh) 2013-11-13
CN1922575A (zh) 2007-02-28
EP1719053A1 (en) 2006-11-08
EP3136233B1 (en) 2019-12-25

Similar Documents

Publication Publication Date Title
CN100594479C (zh) 优化虚拟机环境中的应用程序接口的方法和装置
CN100476721C (zh) 提供模块化本机方法启用***的方法、和装置和***
US7472375B2 (en) Creating managed code from native code
US11385872B2 (en) Extending a virtual machine instruction set architecture
US7657881B2 (en) Using optimized libraries to improve performance of deployed application code at runtime
US6526570B1 (en) File portability techniques
US7765527B2 (en) Per thread buffering for storing profiling data
US6308315B1 (en) System and method for automatically and selectively promoting object variables to method fields and variables in a digital computer system
US20110314458A1 (en) Binding data parallel device source code
US20070294679A1 (en) Methods and apparatus to call native code from a managed code application
US7086044B2 (en) Method, article of manufacture and apparatus for performing automatic intermodule call linkage optimization
US20050055678A1 (en) Method and apparatus for managing software in computer system using virtual machine
EP1046985A2 (en) File portability techniques
US8984473B2 (en) Methods for type analysis in systems for code generation
US11243876B2 (en) Techniques for accessing off-heap memory
US11875168B2 (en) Optimizing execution of foreign method handles on a virtual machine
JP2005108126A (ja) 中間コード実行システム、中間コード実行システム搭載機器
JP2001117759A (ja) プラグ可能なバーチャル・マシンをインプリメントする技術

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