CN1613054A - 控制指令集体系结构之间的二进制编码翻译的兼容水平 - Google Patents
控制指令集体系结构之间的二进制编码翻译的兼容水平 Download PDFInfo
- Publication number
- CN1613054A CN1613054A CN02826719.2A CN02826719A CN1613054A CN 1613054 A CN1613054 A CN 1613054A CN 02826719 A CN02826719 A CN 02826719A CN 1613054 A CN1613054 A CN 1613054A
- Authority
- CN
- China
- Prior art keywords
- instruction set
- set architecture
- binary
- translation
- instruction
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
在一个实施例中,方法包括接收程序代码的二进制编码。该二进制编码是基于第一指令集体系结构的。该方法还包括翻译所述二进制编码,其中,翻译后的二进制编码是基于第一指令集体系结构和第二指令集体系结构的结合的。
Description
技术领域
本发明涉及计算机处理。更具体地说,本发明涉及不同指令集体系结构之间或者具有相同指令集体系结构的不同优化水平之间的二进制编码翻译。
背景技术
虽然当前的程序代码编译器被设计为产生利用当前指令集体系结构(ISA)的最新发展的二进制编码,但是基于先前的指令集体系结构而产生的二进制编码不能使用这些最新的发展。二进制编码翻译是一种常见方法,用于将基于一种指令集体系结构的给定程序代码/应用程序的二进制编码翻译为基于不同指令集体系结构或基于同一指令集体系结构的不同子集的给定程序代码/应用程序的二进制编码。所述不同指令集体系结构可以是一种不同的体系结构或者是先前的指令集体系结构的改进的版本。
通常,经二进制编码翻译的程序被希望精确地传达与基于先前的指令集体系结构的原始的经二进制编码翻译的程序所提供的相同的功能性。换句话说,通常希望二进制编码翻译完全保持如先前的指令集体系结构所定义的程序语义,从而提供完全的向后兼容。相应地,先前的指令集体系结构的需求可以包括与该先前的指令集体系结构所定义的程序执行的常规指令流、数据精度、异常情况的行为和其他副作用相关联的需求。
这种语义需求通常局限了二进制编码翻译的能力——通过在可翻译的二进制编码上造成某些限制,或者通过约束二进制编码翻译所能够利用的新的指令集体系结构的优点的数量。例如,如果两个不同的指令集体系结构不支持同样的浮点格式、宽度或者精度,则这些指令集体系结构之间的浮点运算的二进制编码翻译可能是困难和/或低效的。
附图说明
本发明的实施例可以通过参考以下的说明和示出这些实施例的附图被最佳地理解。这里所包括的图形的编号方案是这样的:图形中的给定元素的头位数字与图形的序号相关联。例如,系统100会位于图1中。然而,对于在不同图形之间相同的那些元素,元素编号是相同的。
在附图中:
图1示出了根据本发明实施例的示例系统100,其包括处理器102和104,用于控制指令集体系结构之间的二进制编码翻译的兼容水平。
图2示出了根据本发明实施例的处理器和相关联的存储器的更详细的示图。
图3示出了根据本发明实施例的用于将来自基于第一指令集体系结构的二进制编码的指令翻译到来自第二指令集体系结构的指令的流程图,所述第二指令集体系结构部分地与第一指令集体系结构兼容。
图4示出根据本发明实施例的源码和所产生的汇编码,其中使用和没有使用寄存器作为硬件栈的一部分。
具体实施方式
在下面的说明中,为了解释的目的,提出了许多特定的细节,以提供对本发明的全面的理解。但是,对于本领域的技术人员来说很明显,不用这些特定的细节也可以实现本发明。
本发明的实施例考虑部分兼容的指令集体系结构,其中,用于第一指令集体系结构所产生的程序代码的二进制编码被翻译为使用第二指令集体系结构某些特征的二进制编码,同时保持与第一指令集体系结构部分兼容。在一个实施例中,兼容水平由程序环境控制,所述程序环境包括但不限于用户、编译器和操作系统。在一个这样的实施例中,在第二指令集体系结构之上定义了一组兼容模式或者开关。相应地,程序环境可以明确地设置所需的兼容模式。在用于硬件翻译的一个实施例中,可以通过一组硬件指令进行兼容模式的设置。在用于软件翻译的一个实施例中,可以通过结合启动二进制编码的执行一起使用的许多命令行标记,进行这种兼容模式的设置。
因此,如下面将更详细描述的,本发明的实施例考虑以(和第一指令集体系结构相关的)精确的程序语义的一些偏差换得(与第二指令集体系结构相关的)性能改善。
此外,在一个实施例中,(这里所描述的)二进制编码所基于的不同指令集体系结构可以是许多不同指令集体系结构中的任何一种,包括但不限于不同的复杂指令集计算机(CISC)指令集,以及不同的精简指令集计算机(RISC)指令集。这样的指令集体系结构的例子包括IntelIA-32和IntelIA-64。
图1示出了根据本发明实施例的示例系统100,其包括处理器102和104,用于控制指令集体系结构之间的二进制编码翻译的兼容水平。虽然是在系统100的环境中进行描述,但是本发明可以在包括任何适当的一个或多个集成电路的任何适当的计算机系统中实现。
如图1所示,计算机系统100包括处理器102和处理器104。计算机系统100还包括存储器132、处理器总线110和输入/输出控制器中心(ICH)140。处理器102和104、存储器132和ICH 140被耦合到处理器总线110。处理器102和104可以各自包括任何适当的处理器体系结构,并且对于一个实施例来说,包括例如在可从加利福尼亚州圣克拉拉市的Intel公司得到的Pentium系列处理器中所使用的Intel体系结构。用于其他实施例的计算机系统100可以包括一个、三个或者多个处理器,其中的任一个可以执行根据本发明实施例的一组指令。
存储器132存储例如用于计算机系统100的数据和/或指令,并且可以包括任何适当的存储器,举例来说,例如动态随机存取存储器(DRAM)。图形控制器134控制在适当的显示器136上的信息显示,举例来说,显示器136例如是耦合到图形控制器134的阴极射线管(CRT)或者液晶显示器(LCD)。
ICH 140为计算机系统100提供到I/O设备或者外围部件的接口。ICH140可以包括任何适当的接口控制器,以提供到处理器102/104、存储器132和/或到与ICH 140相通信的任何适当的设备或部件的任何适当的通信链路。对于一个实施例来说,ICH 140为每个接口提供适当的仲裁和缓冲。
对于一个实施例,ICH 140提供到一个或多个适当的集成驱动器电子设备(IDE)驱动器142、通过一个或多个通用串行总线(USB)端口144的一个或多个适当的USB设备的接口,其中,IDE驱动器142例如是硬盘驱动器(HDD)或者光盘只读存储器(CR ROM)驱动器,用于存储例如数据和/或指令。对于一个实施例来说,ICH 140还提供到键盘151、鼠标152、通过一个或多个并行端口153的例如打印机的一个或多个适当的设备、通过一个或多个串行端口154的一个或多个适当的设备以及软盘驱动器155的接口。
另外,计算机设备100包括翻译单元180。在一个实施例中,翻译单元180可以是驻留在主存储器132和/或处理器102和104中的进程或者任务,并且可以在处理器102和104中被执行。但是,本发明的实施例并不受此限制,因为翻译单元180可以是执行这里所描述的处理(在下面将更详细地描述)的不同类型的硬件(例如数字逻辑)。
相应地,计算机系统100包括在其上存储了指令集(即,软件)的机器可读介质,这些指令集体现了这里所描述的方法论的任何一个或者全部。例如,软件可以完全地或者至少部分地驻留在存储器132中和/或处理器102/104中。为了本说明的目的,术语“机器可读介质”应当被认为包括以机器(例如,计算机)可读的形式提供(即,存储和/或传输)信息的任何机构。例如,机器可读介质包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存设备;电、光、声或者其他形式的传播信号(例如,载波、红外线信号、数字信号等)等。
图2示出了根据本发明实施例的处理器的更详细的示图。具体地说,图2图示了处理器102/104中的一个处理器(以下称为“处理器102”)的更详细的示图。如图所示,存储器接口单元270耦合到缓存缓冲器256、寄存器文件250(包括通用寄存器252和专用寄存器254)和指令缓冲器202,使得存储器接口单元270可以获取宏指令和相关联的操作数,并将这样的数据存储到指令缓冲器202和缓存缓冲器256、通用寄存器252和/或专用寄存器254中。另外,缓存缓冲器256和寄存器文件250被耦合到译码器204、功能单元212~218和退休(retirement)逻辑228。
译码器204被耦合到指令缓冲器202,使得译码器204能从指令缓冲器202获取指令。译码器204可以接收这些指令,并对它们中的每一个进行译码,以确定出给定的指令,而且还产生内部指令集中的许多指令。例如,在一个实施例中,由译码器204所接收的指令是所谓的宏指令,而由译码器204所产生的指令是所谓的微指令(或微操作)。译码器204还被耦合到指令调度器208,使得指令调度器208可以接收这些微操作,用于所安排的功能单元212~218的执行。
指令调度器208被耦合到分配(dispatch)逻辑226,使得指令调度器208能传输要被功能单元212~218执行的指令。分配逻辑226被耦合到功能单元212~218,使得分配逻辑226将指令传输到功能单元212~218用于执行。功能单元212~218可以是许多不同的执行单元中的一种,包括但不限于整数算术逻辑单元(ALU)、浮点单元、存储器加载/存储单元等。功能单元212~218还被耦合到退休逻辑228,使得功能单元212~218执行指令并将结果传输给退休逻辑228。退休逻辑228可以将这些结果传输到处理器102内部或外部的存储器,所述存储器例如是寄存器文件250中的寄存器或缓存缓冲器或者(处理器102外部的)存储器132。
现在将结合图3的流程图详细地描述计算机系统100的操作。具体地说,图3示出了根据本发明实施例的用于将来自基于第一指令集体系结构的二进制编码的指令翻译到来自第二指令集体系结构的指令的流程图,所述第二指令集体系结构部分地与第一指令集体系结构兼容。
图3的流程图300被描述为计算机系统100的译码-执行流程的一部分。但是,本发明的实施例并不受此限制。例如,在另一个实施例中,流程图300中所示的翻译操作可以不依赖于计算机系统100的译码-执行流程而进行。在一个这样的实施例中,翻译后的指令可以被存储在例如跟踪缓存(trace cache)(图1中未示出)的专用缓冲器(在处理器102的内部或者外部)中。相应地,这样的翻译后的指令可以从这种专用缓冲器中被获取,并在处理器102中被执行。因此,在这样的实施例中,兼容的水平是可选择的,使得处理器102基于其当前的知识或者资源,能够或者不能执行翻译后的指令。例如,翻译后的指令可以在第一环境中(其中,翻译后的指令被完全利用)被执行,而在第二环境中(其中,执行翻译后的指令不增加性能效力)不被执行。此外,在一个实施例中,翻译后的指令的子集被结合到二进制编码的执行中。例如,给定的指令可以被翻译许多次。但是,在一个实施例中,该翻译后的指令被结合到二进制编码的执行中的次数小于该指令被翻译的总的次数。
在过程框302,接收基于第一指令集体系结构的程序代码的第一二进制编码。在一个实施例中,翻译单元180接收基于第一指令集体系结构的程序代码的这种第一二进制编码。在一个实施例中,译码器204接收基于第一指令集体系结构的程序代码的这种第一二进制编码。在一个实施例中,翻译单元180和译码器204都可以接收基于第一指令集体系结构的程序代码的这种第一二进制编码。
在一个实施例中,翻译单元180被用于进行软件翻译,将基于第一指令集体系结构的这种第一二进制编码翻译为基于第一指令集体系结构和第二指令集体系结构的结合的第二或者不同的二进制编码。在一个实施例中,译码器204被用于进行硬件翻译,将基于第一指令集体系结构的这种第一二进制编码翻译为基于第一指令集体系结构和第二指令集体系结构的结合的第二或者不同的二进制编码。如下面将更详细描述的,在一个实施例中,通过翻译单元180的二进制编码的软件翻译可以结合通过译码器204的相同二进制编码的硬件翻译一起使用。在另一个实施例中,通过翻译单元180的二进制编码的软件翻译排斥通过译码器204的相同二进制编码的硬件翻译,反之亦然。
在过程框304,检查指令集体系结构执行标记,以确定第一二进制编码的可能的翻译。在一个实施例中,翻译单元180检查指令集体系结构执行标记,以确定第一二进制编码的可能的翻译。在一个实施例中,译码器204检查指令集体系结构执行标记,以确定第一二进制编码的可能的翻译。尽管翻译单元180可以通过不同的技术确定第一二进制编码的可能的翻译,不过,在一个实施例中,翻译单元180通过检查结合命令被接收的命令行标记来确定第一二进制编码的这种可能的翻译,所述的命令用于开始该第一二进制编码的执行(可以包括该翻译)。例如,如果第一二进制编码的名称是“binary.exe”,则包含命令行标记的用于开始执行的命令可以是“binary.exe-f64-s-o”,其中,命令行标记是(1)-f64(2)-s和(3)-o。这些命令行标记可以指示该第一二进制编码的不同的翻译。
为了帮助说明,翻译单元180可以将“-s”解释为指示将(基于不支持单指令多数据(SIMD)操作的指令集体系结构的)许多单指令翻译成支持这种操作的第二或者不同的指令集体系结构中的一个或多个SIMD指令。如下面将更详细描述的,因为基于第一指令集体系结构的第一二进制编码中的其他指令和操作可以被翻译成基于第二或者不同的指令集体系结构的其他指令和操作,所以这里所描述的不同指令集体系结构执行标记是示例性的,而不是限定性的。此外,在另一个实施例中(代替和/或结合了检查命令行标记),翻译单元180可以通过检查例如寄存器文件250中的寄存器(示出在图2中)的各种存储器单元来查找可能的不同的翻译,以确定第一二进制编码的这种可能的翻译。
返回图3中的流程图300的过程框304,译码器204还可以检查指令集体系结构执行标记以确定第一二进制编码的可能的翻译。在一个实施例中,译码器204可以通过查询例如寄存器文件250中的专用寄存器254(示出在图2中)的寄存器,检查指令集体系结构执行标记。在一个这样的实施例中,给定的位与给定类型的翻译相关联。例如,位零与浮点操作数的精度修改(例如,从用于IntelIA-32指令集体系结构的80位格式变到用于IntelIA-64指令集体系结构的64位格式)相关联。相应地,可能产生基于较低精度操作数的不同结果,其中因为处理器执行基于这种第二或者不同的指令集体系结构的指令通常比执行基于第一指令集体系结构的指令更快,所以执行性能更高了。
在一个实施例中,在处理器102中的寄存器之中所存储的这些指令集体系结构执行标记通过体系结构指令被设置,这些体系结构指令对寄存器中的给定标记进行设置和复位。在一个这样的实施例中,可以在执行二进制编码之前通过操作系统使用这些指令。
在过程判断框306,作出关于是否需要软件翻译来翻译第一二进制编码的判断。在一个实施例中,翻译单元180确定是否需要软件翻译来翻译第一二进制编码。如上面所描述的,翻译单元180可以通过许多不同方式中的一种,确定是否需要软件翻译来翻译第一二进制编码。所述许多不同方式包括但不限于在启动第一二进制编码的执行时查找命令行标记,以及检查例如寄存器的不同的存储器单元。
在过程框308,在确定出需要软件翻译来翻译第一二进制编码后,使用软件翻译将来自第一二进制编码的至少一个指令翻译成基于第二指令集体系结构的至少一个指令。在一个实施例中,翻译单元180进行这种翻译。例如上面所描述的,翻译单元180可以将许多(基于不支持SIMD操作的指令集体系结构的)单指令翻译为支持这种操作的第二或者不同的指令集体系结构中的一个或多个SIMD指令。为了帮助说明,翻译单元180可以遍历(traverse)二进制编码,并确定出该二进制编码包括用于加法的四个不同的指令,使得有不同的四组操作数。相应地,翻译单元180可以将该二进制编码中的这四个不同的指令翻译为用于加法的单个指令,其中,两组四个操作数(每个是32位)被放置在处理器102中的两个128位SIMD寄存器中,用于执行。
在用于该SIMD翻译的实施例中,单个的指令是基于第一指令集体系结构的,而SIMD指令是基于第二指令集体系结构的。在用于该SIMD翻译的一个实施例中,单个指令是基于第一指令集体系结构的,而SIMD指令也是基于第一指令集体系结构的。相应地,SIMD翻译考虑到了相同指令集体系结构的指令中的改进。
这样的翻译可能导致与操作数有关的较低精度;但是,取决于应用程序和/或在其中执行应用程序的执行环境的类型,由这种翻译所提供的性能的提高可能价值上高于对精度的考虑。因此,程序设计环境,例如用户,能够在考虑与性能提高相关联的精度损失的同时,规定可以发生哪种类型的翻译。例如,仅使用全浮点精度中的一部分的一些图形应用程序可以容许浮点操作中的少量的精度不足。与之不同,在其浮点操作中使用全浮点精度的用于预测天气的应用程序不能容许少量的精度不足,因为这样的精度不足会产生不同的和很可能不准确的结果。
另外,取决于执行环境,同一应用程序可以区别地容许这种操作数精度的修改。例如,应用程序可能容许对于第一组输入数据的精度的这种修改,而同一应用程序可能不容许对于另外一组输入数据的精度的这种修改。为了帮助说明,当一组输入数据在由应用程序执行这些数据之前已经被验证的时候,应用程序不需要处理精确的异常。相反地,如果这组输入数据被认为特殊和/或还没有被验证,则应用程序可以被要求进行异常处理,该处理为异常提供精确和完全的数据。因此,程序设计环境可以解决输入数据组中的这种差别,并允许在第一种情形中的翻译,阻止在第二种情形中的翻译。
通过翻译单元180的软件翻译的另一个示例包括与程序栈有关的优化。具体地说,给定的指令集体系结构,例如IntelIA-32指令集体系结构,可以包括具有压入和弹出操作的硬件栈,其中,被传递到程序过程中的数据通过压入操作被放置到栈中,并且在过程完成之后,通过弹出操作从栈中去除。另外,这样的指令集体系结构可以允许对栈指针(通常被存储在专用寄存器254的一个中)的直接访问。因此,由于这种指令集体系结构允许对栈指针的明确访问,所以应用程序的二进制编码可以进行对该硬件栈的非传统访问。
例如,假定程序进入一个过程,并使用离栈指针的某个常数偏移,在栈中的某个位置“L”上存储值“V”。程序然后从该过程返回。但是,在某些指令集体系结构中,值“V”没有明确地从栈中删除。此外,这样的指令集体系结构保证了程序将仍然能够基于参考栈指针的位置“L”(假定该位置还没有被程序的其他部分重写),从栈中访问值“V”。相反地,不同的指令集体系结构可以包括一种模式,其中,硬件栈具有更多的抽象语义,并且被释放的栈存储器的内容是易失性的。具体地说,在过程完成之后,这种不同的指令集体系结构可能不保证值“V”仍然被存储在参考栈指针的位置“L”中。
相应地,在一个实施例中,翻译单元180可以将第一二进制编码翻译成不同的二进制编码,其中,过程中的至少一个被内嵌到调用该过程的程序代码中。例如,如果主过程“MAIN( )”包括对过程“first procedure(x,y)”的调用,其中,在“first procedure(x,y)”中包括了五行代码,则翻译单元180可以修改该二进制编码,使得过程调用被去除,并且这五行代码被直接包括在“MAIN( )”中。相应地,参数x和y可以不被放在栈中。但是,因为这种不同的二进制编码是基于第二指令集体系结构的,而第二指令集体系结构涉及在过程调用返回之后为过程调用中的参数解除对栈指针的参考,所以程序代码将不包括这样的解除参考。如下面将更加详细描述的,因为二进制编码是基于一种指令集体系结构的,该指令集体系结构保证了在过程完成之后,将不通过参考栈指针的位置“L”访问值“V”,所以通过译码器204的硬件翻译也可以结合和/或排斥这种软件翻译而进行。
返回图3的流程图300,在过程框310,与是否在过程框308进行软件翻译无关,在一个实施例中作出是否需要硬件翻译来进行第一二进制编码的翻译的判断。在一个实施例中,译码器204确定是否需要硬件翻译来翻译第一二进制编码。如上面所描述的,译码器204可以通过许多不同的方式中的一种来确定是否需要硬件翻译来翻译第一二进制编码。所述许多不同的方式包括但不限于查询寄存器,例如寄存器文件250中的专用寄存器254之一(示出在图2中)。
在过程框312,在确定出需要硬件翻译来翻译第一二进制编码后,将来自第一二进制编码的至少一个指令翻译成基于第二指令集体系结构的至少一个指令。在一个实施例中,译码器204将来自第一二进制编码的至少一个指令翻译成基于第二指令集体系结构的至少一个指令。具体地说,在一个实施例中,译码器可以进行与第二指令集体系结构的不同特征相关的许多不同的翻译。
为了帮助说明,假定处理器102可以执行基于IntelIA-32和IntelIA-64两种指令集体系结构的指令,并且已经基于IntelIA-32产生了第一二进制编码,使得浮点操作数具有80位宽度。另外,在执行给定的二进制编码之前或者与其结合地,可以设置专用寄存器254中的一个,以指示当前是基于IntelIA-32指令集体系结构的80位操作数的浮点操作数将被转换为基于IntelIA-64指令集体系结构的64位操作数。因此,基于查询该专用寄存器,译码器204将基于IntelIA-32指令集体系结构的浮点指令翻译为基于IntelIA-64指令集体系结构的不同的一组浮点指令。
例如,在收到浮点乘法指令后,译码器204产生用于IntelIA-64指令集体系结构的微操作(代替用于IntelIA-32指令集体系结构的微操作),从而引导相关联的浮点单元(在功能单元212~218中)将80位操作数修改为64位操作数,并按照相关联的用于IntelIA-64指令集体系结构的指令执行浮点乘法指令。因此,浮点操作数的精度将被降低;但是,基于新的指令集体系结构的浮点指令可以提高应用程序的执行中的性能。
通过译码器204的硬件翻译的另一个示例包括与程序栈有关的优化。具体地说,如上面所描述的,例如IntelIA-32指令集体系结构的给定指令集体系结构可以包括具有压入和弹出操作的硬件栈,其中,被传递到程序过程中的数据通过压入操作被放到栈中,并在过程完成之后,通过弹出操作从栈中被去除。此外,这样的指令集体系结构可以允许对栈指针(通常被存储在专用寄存器254的一个中)的直接访问。因此,由于这种指令集体系结构允许对栈指针的明确访问,二进制编码或者应用程序可以进行对该硬件栈的非传统访问。
例如,程序进入一个过程,并使用离栈指针的某个常数偏移,在栈中的某个位置“L”上存储值“V”。程序然后从该过程返回。但是,在某些指令集体系结构中,值“V”没有明确地从栈中删除。此外,这样的指令集体系结构保证了程序将仍然能够基于参考栈指针的位置“L”(假定该位置还没有被程序的其他部分重写),从栈中访问值“V”。相反地,不同的指令集体系结构可以包括一种模式,其中,硬件栈具有更多的抽象语义,并且被释放的栈存储器的内容是易失性的。具体地说,在过程完成之后,这种另外的指令集体系结构可能不保证值“V”仍然被存储在参考栈指针的位置“L”中。
从而,在一个实施例中,除了在处理器102外部的例如存储器132的存储器中的栈,专用寄存器254中的一个可以被用作硬件栈的一部分。相应地,这样减小了由与硬件栈相关联的功能单元212~218进行的加载和存储操作的数量。具体地说,图4示出了根据本发明实施例的源码和所产生的汇编码,其中使用和没有使用寄存器作为硬件栈的一部分。如图所示,图4包括源码402、汇编码404和汇编码406。汇编码404包括当处理器102中的寄存器没有被用作硬件栈的一部分时,为源码402产生的汇编码指令的部分。汇编码406包括当处理器102中的寄存器被用作硬件栈的一部分时,为源码402产生的汇编码指令的部分。
源码402包括具有参数“x”和“y”的过程,其中,该过程中的指令将变量“z”设置为等于“x”和“y”的和。汇编码404包括用于将“x”的值存储到寄存器“r1”中的加载操作;将“y”的值存储到寄存器“r2”中的加载操作;以及寄存器“r1”与寄存器“r2”的加法操作。如图所示,需要两个不同的加载操作来将“x”和“y”的值(被存储在外部存储器中的栈中)放入处理器102内部的寄存器中。与之不同,汇编码406(其中,处理器102中的专用寄存器被用作硬件栈的一部分)包括单个加载操作,其后跟随一个加法操作。具体地说,汇编码406包括将“y”的值存储到寄存器“r2”中的加载操作;以及专用寄存器“sr1”与寄存器“r2”的加法操作(其中,专用寄存器“sr1”是硬件栈的一部分)。
如图所示,当程序设计环境,例如用户,指示出在对于程序栈上的变量的弹出操作之后将不作出对这些变量的访问(即使基于其产生二进制编码的第一指令集体系结构允许这样的访问)时,专用寄存器254中的至少一个专用寄存器可以被用作程序栈的一部分。相应地,当设置了特定的指令集体系结构执行标记,用于指示被执行的程序或者应用程序在具有栈上的数据参数的过程完成之后将不会试图访问这些数据参数的时候,译码器204可以为汇编码406产生相关联的微操作(代替汇编码404的相关联的微操作)。
由处理器102的部件进行的硬件翻译的另一个示例涉及对存储器的乱序访问。具体地说,基于第一指令集体系结构的程序可以保证对(处理器102内部的和外部的两种)存储器的有序访问。因此,为了保证具有第一指令集体系结构的二进制编码的兼容性,在该二进制编码的执行过程中的存储器访问必须是串行化的。这种串行化可能减慢二进制编码的执行性能。例如,如果第一指令需要完成从尚且未知的地址的加载操作,并且第二指令(其在该二进制编码的串行执行中将在第一指令之后被执行)需要完成对已知的地址的存储操作,则第一指令仍然必须在第二指令退休之前被完成,即使第二指令的存储操作可以在等待第一指令的加载操作所需的地址的时候就已经完成了。这样的串行化对于保证多进程或者多处理器系统的正确执行是至关重要的。
与之不同,第二指令集体系结构可以允许乱序存储器访问,以及在已经完成访问之后用于排序这些访问的方法。相应地,如果程序设计环境,例如用户,可以保证基于第一指令集体系结构的二进制编码不要求指令执行的串行化,则程序设计环境可以设置相关联的指令集体系结构执行标记,以允许乱序存储器访问,从而允许二进制编码执行的性能的可能的提高。例如,如果二进制编码是没有与其他并发进程或者设备同步的单线程的程序,则二进制编码可以安全地在允许乱序存储器访问的模式中执行。
因此,在一个实施例中,在确定出允许乱序存储器访问后(对于基于不提供这种访问的第一指令集体系结构的二进制编码),译码器204可以指示存储器接口单元270参考二进制编码中的指令的顺序,乱序地为该二进制编码调度存储器的访问。
在一个实施例中,通过计算机100的部件进行的硬件翻译的示例涉及自修改代码。具体地说,自修改代码包括一种代码,其向该代码自身驻留的存储器位置写入。许多指令集体系结构允许这种代码的执行。但是,这种代码是低效的,并且降低了代码执行的性能。并且具体地说,为了确定代码是否是自修改的,要求存储器控制器和/或其他部件跟踪进行写入的存储器单元。换句话说,这些存储器控制器和/或其他部件确定,对于每个存储器写入来说由代码正在进行写入的存储器中的位置是否包括该代码自身。
与之不同,第二指令集体系结构可以操作在不允许自修改代码的模式中。相应地,如果程序设计环境,例如用户,能够保证基于第一指令集体系结构的二进制编码不包括自修改代码,则程序设计环境可以设置相关联的指令集体系结构执行标记,以取消对给定程序代码是否修改其自身的检查。
因此,在一个实施例中,在确定出二进制译码所基于的程序代码不是自修改的之后,译码器204可以指示与存储该二进制编码的存储器相关联的存储器控制器,不检查给定的程序代码是否修改其自身。相应地,每次执行存储器写入操作,这样的存储器控制器都不检查该存储器写入的位置是否是在该程序代码所驻留的位置中,从而提高了二进制编码执行的速度。
在一个实施例中,通过计算机系统100的部件进行的硬件翻译涉及存储器分段。具体地说,存储器分段被用于扩展程序代码的可访问的地址空间。例如,给定的体系结构可能已经具有对寄存器宽度大小的限制,从而限定了地址空间的大小。相应地,给定的程序代码/二进制编码可以访问跨过存储器中的许多不同的段而被存储的数据。在一个实施例中,被存储在专用寄存器254的一个中的值被用作从虚拟地址空间向物理地址空间进行转换的偏移量。在一个实施例中,该值被加到虚拟地址上,以产生物理地址。因此,如果二进制编码正访问跨过寄存器中的许多段的数据,则在程序执行过程期间当从其访问数据的段改变时,该值被更新。与之不同,最近的体系结构定义了更大的寄存器宽度,例如32位或64位。从而允许在这种体系结构上执行的操作系统给程序提供足够大的虚拟地址空间,而不用依赖于分段。
在一个实施例中,第一二进制编码是基于第一指令集体系结构的,其中,由第一二进制编码访问的数据被存储在存储器中的许多段中。另外,在一个实施例中,第二指令集体系结构包括比用于第一指令集体系结构的虚拟地址空间更大的虚拟地址空间。相应地,如果程序设计环境,例如用户,可以保证由基于第一指令集体系结构的第一二进制编码所访问的数据可以被存储在基于第二指令集体系结构的存储器中的单个段中,则程序设计环境可以设置相关联的执行标记,以忽略存储器分段,从而在存储器地址的虚拟到物理的转换期间回避分段。
在一个实施例中,使用寄存器文件250中的寄存器的更大宽度来允许更大的虚拟地址空间。例如,第一指令集体系结构可以使用存储在寄存器文件250中的具有32位宽度的寄存器的16个位,而第二指令集体系结构可以使用这样的寄存器的全部32个位。在一个实施例中,因为被存储在专用寄存器254中的用于虚拟到物理地址空间的这个偏移量值在二进制编码的执行过程中保持不变(因为被二进制编码访问的数据在存储器中的单个段内),所以译码器204不产生用于更新该偏移量值的微操作。相应地,因为基于第二指令集体系结构,存储器分段被忽略了,所以二进制编码的执行被加速。
此外,在一个实施例中,产生基于第一指令集体系结构的二进制编码,使得被该二进制编码访问的数据的大小可以被存储在存储器中的单个段中。相应地,被存储在通用寄存器252中的值的宽度不需要被增加。在一个实施例中,程序设计环境可以设置指令集体系结构执行标记,其中二进制编码不是基于与寄存器中的更大宽度有关的第二指令集体系结构的。在一个这样的实施例中,译码器204不产生用于更新被存储在专用检测器254的一个中的用于虚拟到物理地址空间的这个偏移量值的微操作。具体地说,因为被二进制编码访问的数据被存储在存储器中的单个段中,所以该值不需要被更新。
返回图3的流程图300,在过程框314,指令(可能已经如上面所描述的那样被修改)被执行。在一个实施例中,功能单元212~218执行这些指令。这里所描述的软件和硬件翻译是示例性的,而不是限定性的,因为本发明的实施例可以包括将基于第一指令集体系结构的第一二进制编码向基于第一指令集体系结构和第二指令集体系结构的结合的第二二进制编码的其他翻译(软件和硬件都可)。此外,虽然已经参考软件和硬件描述了给定的翻译,但是本发明的实施例并不受此限制。例如,虽然已经相对于软件翻译描述了给定的翻译,但是在另一个实施例中,这样的翻译可以以硬件和/或硬件与软件的结合中进行。
此外,涉及软件翻译的本发明的实施例是相对于整个二进制编码的翻译被描述的。但是,本发明的实施例并不如此受限制。在一个实施例中,程序设计模型可以包括二进制编码级对象之间的更复杂的交互。例如,假定二进制编码的共享库是基于第一指令集体系结构被编译的,并且使用该共享库中的二进制编码/与该共享库中的二进制编码相接口的主二进制编码是基于第一和第二指令集体系结构的结合的,如这里所描述的那样。在一个实施例中,取决于所要求的功能、程序设计环境等,主二进制编码可以在两种不同的指令集体系结构的不同功能之间切换。例如,取决于库中的哪类二进制编码被调用、主库的全局程序状态等,库中的二进制编码可以动态地设置第一和第二指令集体系结构之间的兼容性水平。
虽然已经参考具体的示例实施例描述了本发明,但是很明显,可以对这些实施例作出各种修改和变化,而不脱离本发明的更广阔的精神和范围。相应地,说明书和附图应被认为是示例性的,而不是限定性的。
Claims (29)
1.一种方法,包括:
接收程序代码的二进制编码,所述二进制编码基于第一指令集体系结构;以及
翻译所述二进制编码,其中,翻译后的二进制编码基于所述第一指令集体系结构和第二指令集体系结构的结合。
2.根据权利要求1所述的方法,包括检查指令集体系结构执行标记,所述指令集体系结构执行标记指示对所述二进制编码的一部分的至少一种翻译。
3.根据权利要求2所述的方法,其中,所述指令集体系结构执行标记通过所述二进制编码的程序设计环境被设置。
4.根据权利要求2所述的方法,其中,用于翻译所述二进制编码的处理器中的寄存器将存储所述指令集体系结构执行标记。
5.根据权利要求2所述的方法,包括执行所述翻译后的二进制编码。
6.根据权利要求5所述的方法,其中,所述翻译和执行基于一个命令,所述指令集体系结构执行标记基于与所述命令相关联的多个命令行标记。
7.根据权利要求1所述的方法,其中,所述第一指令集体系结构包括浮点指令,并且其中所述第二指令集体系结构包括浮点指令,其中所述二进制编码的翻译包括将所述第一指令集体系结构的所述浮点指令翻译为所述第二指令集体系结构的所述浮点指令。
8.根据权利要求1所述的方法,其中,所述二进制编码的翻译包括将硬件栈的一部分存储在用于翻译所述二进制编码的处理器的寄存器中。
9.一种方法,包括:
接收程序代码的二进制编码,所述二进制编码基于第一指令集体系结构;以及
执行所述二进制编码,其中,所述执行包括将基于所述第一指令集体系结构的所述二进制编码的至少一个指令翻译为基于第二指令集体系结构的至少一个指令。
10.根据权利要求9所述的方法,其中,所述第一指令集体系结构包括对存储器的顺序访问,并且所述第二指令集体系结构包括对存储器的乱序访问,所述二进制编码的翻译包括由用于执行所述二进制编码的处理器对存储器的乱序访问。
11.根据权利要求9所述的方法,其中,所述第一指令集体系结构允许所述二进制编码自修改,并且所述第二指令集体系结构不允许所述二进制编码自修改,所述二进制编码的翻译包括对存储所述二进制编码的存储器的控制器的指令,以进行写操作,所述写操作不依赖于对所述写操作是否修改存储所述二进制编码的位置的检查。
12.根据权利要求9所述的方法,其中,所述第二指令集体系结构具有大于所述第一指令集体系结构的地址空间,所述二进制编码的翻译包括使用所述第二指令集体系结构的所述地址空间。
13.根据权利要求12所述的方法,其中,由所述二进制编码访问的数据被存储在存储器中的单个段中,并且其中用于将所述数据的虚拟地址翻译为所述数据的物理地址的偏移量值在所述二进制编码的执行期间没有被修改。
14.一种系统,包括:
存储器,所述存储器包括基于第一指令集体系结构的程序代码的二进制编码;和
耦合到所述存储器的处理器,所述处理器执行所述二进制编码,其中,执行所述二进制编码包括翻译所述二进制编码,翻译后的二进制编码基于所述第一指令集体系结构和第二指令集体系结构的结合。
15.根据权利要求14所述的系统,其中,所述处理器包括用于存储指令集体系结构执行标记的寄存器,所述指令集体系结构执行标记指示对所述二进制编码的一部分的至少一种翻译。
16.根据权利要求15所述的系统,其中,所述指令集体系结构执行标记通过所述二进制编码的程序设计环境被设置。
17.根据权利要求14所述的系统,其中,所述第二指令集体系结构具有大于所述第一指令集体系结构的地址空间,所述二进制编码的翻译包括使用所述第二指令集体系结构的所述地址空间。
18.根据权利要求17所述的系统,其中,所述二进制编码被存储在所述存储器中的单个段中,并且其中用于将虚拟地址翻译为物理地址的偏移量值在所述二进制编码的执行期间没有被修改。
19.一种装置,包括:
译码器,用于接收基于第一指令集体系结构的二进制编码;和
多个寄存器,其中所述多个寄存器中的至少一个存储指令集体系结构执行标记,所述指令集体系结构执行标记指示二进制编码的翻译,翻译后的二进制编码基于所述第一指令集体系结构和第二指令集体系结构的结合。
20.根据权利要求19所述的装置,其中所述第一指令集体系结构包括浮点指令,并且其中所述第二指令集体系结构包括浮点指令,其中所述二进制编码的翻译包括将所述第一指令集体系结构的所述浮点指令翻译为所述第二指令集体系结构的所述浮点指令。
21.根据权利要求19所述的装置,其中,所述二进制编码的翻译包括将硬件栈的一部分存储在所述多个寄存器中的一个寄存器中。
22.根据权利要求19所述的装置,其中,所述装备被耦合到用于存储所述二进制编码的存储器,其中,所述第一指令集体系结构允许所述二进制编码自修改,并且所述第二指令集体系结构不允许所述二进制编码自修改,所述二进制编码的翻译包括对所述存储器的控制器的指令,以进行写操作,所述写操作不依赖于对所述写操作是否修改存储所述二进制编码的位置的检查。
23.根据权利要求19所述的装置,其中,所述第二指令集体系结构具有大于所述第一指令集体系结构的地址空间,所述二进制编码的翻译包括使用所述第二指令集体系结构的所述地址空间。
24.根据权利要求23所述的装置,其中,由所述二进制编码访问的数据被存储在耦合到所述装置的存储器中的单个段中,并且其中用于将所述数据的虚拟地址翻译为所述数据的物理地址的偏移量值在所述二进制编码的执行期间没有被修改。
25.一种提供指令的机器可读介质,所述指令当被机器执行时,引起机器进行操作,所述操作包括:
接收程序代码的二进制编码,所述二进制编码基于第一指令集体系结构;以及
翻译所述二进制编码,其中,翻译后的二进制编码基于所述第一指令集体系结构和第二指令集体系结构的结合。
26.根据权利要求25所述的机器可读介质,包括执行所述翻译后的二进制编码。
27.根据权利要求26所述的机器可读介质,其中,所述翻译和执行基于一个命令,指令集体系结构执行标记基于与所述命令相关联的多个命令行标记。
28.根据权利要求25所述的机器可读介质,其中,所述第一指令集体系结构包括浮点指令,并且其中所述第二指令集体系结构包括浮点指令,其中所述二进制编码的翻译包括将所述第一指令集体系结构的所述浮点指令翻译为所述第二指令集体系结构的所述浮点指令。
29.根据权利要求25所述的机器可读介质,其中,所述第一指令集体系结构允许所述二进制编码自修改,并且所述第二指令集体系结构不允许所述二进制编码自修改,所述二进制编码的翻译包括对存储所述二进制编码的存储器的控制器的指令,以进行写操作,所述写操作不依赖于对所述写操作是否修改存储所述二进制编码的位置的检查。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/039,254 US7251811B2 (en) | 2002-01-02 | 2002-01-02 | Controlling compatibility levels of binary translations between instruction set architectures |
US10/039,254 | 2002-01-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1613054A true CN1613054A (zh) | 2005-05-04 |
CN100357882C CN100357882C (zh) | 2007-12-26 |
Family
ID=21904487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028267192A Expired - Lifetime CN100357882C (zh) | 2002-01-02 | 2002-12-27 | 处理二进制编码的装置、系统和方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7251811B2 (zh) |
CN (1) | CN100357882C (zh) |
AU (1) | AU2002361884A1 (zh) |
DE (1) | DE10297624T5 (zh) |
GB (1) | GB2400949B (zh) |
HK (1) | HK1067205A1 (zh) |
TW (1) | TWI279715B (zh) |
WO (1) | WO2003058432A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110011A (zh) * | 2009-12-23 | 2011-06-29 | 英特尔公司 | 局部仿真环境中从源指令集架构代码向转换后代码的转换 |
CN107341372A (zh) * | 2017-07-25 | 2017-11-10 | 北京深思数盾科技股份有限公司 | 一种软件保护方法和装置 |
CN107748673A (zh) * | 2012-06-15 | 2018-03-02 | 英特尔公司 | 包括虚拟加载存储队列的处理器和系统 |
CN109918081A (zh) * | 2019-03-01 | 2019-06-21 | 中安智联未来有限公司 | 一种编译方法及编译器 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7219336B2 (en) * | 2002-01-03 | 2007-05-15 | Intel Corporation | Tracking format of registers having multiple content formats in binary translation |
US7519800B2 (en) * | 2003-03-27 | 2009-04-14 | Hewlett-Packard Development Company, L.P. | Apparatus and method for enforcing homogeneity within partitions of heterogeneous computer systems |
US7290253B1 (en) * | 2003-09-30 | 2007-10-30 | Vmware, Inc. | Prediction mechanism for subroutine returns in binary translation sub-systems of computers |
KR100658918B1 (ko) * | 2004-03-29 | 2006-12-15 | 주식회사 팬택앤큐리텔 | 블록 단위 입출력 명령어를 이용한 시스템 전역 변수초기화 장치 및 그 방법 |
CN100573443C (zh) * | 2004-12-30 | 2009-12-23 | 英特尔公司 | 从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择 |
US7818724B2 (en) * | 2005-02-08 | 2010-10-19 | Sony Computer Entertainment Inc. | Methods and apparatus for instruction set emulation |
CN100377088C (zh) * | 2005-03-04 | 2008-03-26 | 中国科学院计算技术研究所 | 二进制翻译中局部变量识别和提升的处理方法 |
US20070006189A1 (en) * | 2005-06-30 | 2007-01-04 | Intel Corporation | Apparatus, system, and method of detecting modification in a self modifying code |
US7802252B2 (en) * | 2007-01-09 | 2010-09-21 | International Business Machines Corporation | Method and apparatus for selecting the architecture level to which a processor appears to conform |
US8560591B2 (en) | 2007-04-25 | 2013-10-15 | International Business Machines Corporation | Detection of potential need to use a larger data format in performing floating point operations |
US7941641B1 (en) | 2007-10-01 | 2011-05-10 | Yong-Kyu Jung | Retargetable instruction decoder for a computer processor |
US8627050B2 (en) | 2007-10-08 | 2014-01-07 | International Business Machines Corporation | Executing perform floating point operation instructions |
US20090164982A1 (en) * | 2007-12-21 | 2009-06-25 | Sun Microsystems, Inc. | Method and system for transforming binaries to use different instructions |
CN103092599A (zh) * | 2011-11-05 | 2013-05-08 | 京瓷办公信息系统株式会社 | 软件开发套件 |
US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
EP2801028A4 (en) * | 2012-01-06 | 2015-08-12 | Intel Corp | METHOD AND APPARATUS FOR REPLACING FUNCTIONS OF A COMPUTER INTEGRATED HELP MODULE BY MACHINE LANGUAGE INSTRUCTIONS |
US9160815B2 (en) * | 2012-06-28 | 2015-10-13 | Intel Corporation | Method and apparatus for virtual machine interoperability |
US9563432B2 (en) | 2013-04-19 | 2017-02-07 | Nvidia Corporation | Dynamic configuration of processing pipeline based on determined type of fetched instruction |
CN104679480A (zh) * | 2013-11-27 | 2015-06-03 | 上海芯豪微电子有限公司 | 一种指令集转换系统和方法 |
US9734083B2 (en) | 2014-03-31 | 2017-08-15 | International Business Machines Corporation | Separate memory address translations for instruction fetches and data accesses |
US9715449B2 (en) | 2014-03-31 | 2017-07-25 | International Business Machines Corporation | Hierarchical translation structures providing separate translations for instruction fetches and data accesses |
US9858058B2 (en) | 2014-03-31 | 2018-01-02 | International Business Machines Corporation | Partition mobility for partitions with extended code |
US9256546B2 (en) | 2014-03-31 | 2016-02-09 | International Business Machines Corporation | Transparent code patching including updating of address translation structures |
US9824021B2 (en) | 2014-03-31 | 2017-11-21 | International Business Machines Corporation | Address translation structures to provide separate translations for instruction fetches and data accesses |
US9569115B2 (en) | 2014-03-31 | 2017-02-14 | International Business Machines Corporation | Transparent code patching |
US9483295B2 (en) | 2014-03-31 | 2016-11-01 | International Business Machines Corporation | Transparent dynamic code optimization |
US9720661B2 (en) | 2014-03-31 | 2017-08-01 | International Businesss Machines Corporation | Selectively controlling use of extended mode features |
US10169043B2 (en) * | 2015-11-17 | 2019-01-01 | Microsoft Technology Licensing, Llc | Efficient emulation of guest architecture instructions |
US20190163492A1 (en) * | 2017-11-28 | 2019-05-30 | International Business Machines Corporation | Employing a stack accelerator for stack-type accesses |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5317740A (en) * | 1991-03-07 | 1994-05-31 | Digital Equipment Corporation | Alternate and iterative analysis of computer programs for locating translatable code by resolving callbacks and other conflicting mutual dependencies |
US5339422A (en) * | 1991-03-07 | 1994-08-16 | Digital Equipment Corporation | System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment |
US5307492A (en) * | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | Mapping assembly language argument list references in translating code for different machine architectures |
US5287490A (en) * | 1991-03-07 | 1994-02-15 | Digital Equipment Corporation | Identifying plausible variable length machine code of selecting address in numerical sequence, decoding code strings, and following execution transfer paths |
US5450575A (en) * | 1991-03-07 | 1995-09-12 | Digital Equipment Corporation | Use of stack depth to identify machine code mistakes |
US5428786A (en) * | 1991-03-07 | 1995-06-27 | Digital Equipment Corporation | Branch resolution via backward symbolic execution |
US5301325A (en) * | 1991-03-07 | 1994-04-05 | Digital Equipment Corporation | Use of stack depth to identify architechture and calling standard dependencies in machine code |
US5307504A (en) * | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events |
US5598560A (en) * | 1991-03-07 | 1997-01-28 | Digital Equipment Corporation | Tracking condition codes in translation code for different machine architectures |
US5507030A (en) * | 1991-03-07 | 1996-04-09 | Digitial Equipment Corporation | Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses |
US5432795A (en) * | 1991-03-07 | 1995-07-11 | Digital Equipment Corporation | System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program |
US5339238A (en) | 1991-03-07 | 1994-08-16 | Benson Thomas R | Register usage tracking in translating code for different machine architectures by forward and reverse tracing through the program flow graph |
US5574887A (en) * | 1993-09-20 | 1996-11-12 | Apple Computer, Inc. | Apparatus and method for emulation routine pointer prefetch |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US6496922B1 (en) * | 1994-10-31 | 2002-12-17 | Sun Microsystems, Inc. | Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation |
KR960015100A (ko) * | 1994-10-31 | 1996-05-22 | 미타 요시히로 | 감광체를 사용하는 전자사진법 |
US5802373A (en) * | 1996-01-29 | 1998-09-01 | Digital Equipment Corporation | Method for providing a pipeline interpreter for a variable length instruction set |
US5875318A (en) * | 1996-04-12 | 1999-02-23 | International Business Machines Corporation | Apparatus and method of minimizing performance degradation of an instruction set translator due to self-modifying code |
US5903760A (en) * | 1996-06-27 | 1999-05-11 | Intel Corporation | Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA |
US6199202B1 (en) * | 1998-01-06 | 2001-03-06 | Hewlett-Packard Company | Method and apparatus for the inter-operation of differing architectural and run time conventions |
US6631514B1 (en) * | 1998-01-06 | 2003-10-07 | Hewlett-Packard Development, L.P. | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations |
US6266769B1 (en) * | 1998-04-30 | 2001-07-24 | Intel Corporation | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers |
US6243668B1 (en) * | 1998-08-07 | 2001-06-05 | Hewlett-Packard Company | Instruction set interpreter which uses a register stack to efficiently map an application register state |
US7640153B2 (en) * | 2001-06-04 | 2009-12-29 | Hewlett-Packard Development Company, L.P. | Networked client-server architecture for transparently transforming and executing applications |
US20030033593A1 (en) * | 2001-08-08 | 2003-02-13 | Evelyn Duesterwald | Dynamic execution layer interface for explicitly or transparently executing application or system binaries |
-
2002
- 2002-01-02 US US10/039,254 patent/US7251811B2/en not_active Expired - Lifetime
- 2002-12-27 GB GB0414805A patent/GB2400949B/en not_active Expired - Lifetime
- 2002-12-27 DE DE10297624T patent/DE10297624T5/de not_active Ceased
- 2002-12-27 CN CNB028267192A patent/CN100357882C/zh not_active Expired - Lifetime
- 2002-12-27 AU AU2002361884A patent/AU2002361884A1/en not_active Abandoned
- 2002-12-27 WO PCT/US2002/041556 patent/WO2003058432A1/en not_active Application Discontinuation
- 2002-12-31 TW TW091138037A patent/TWI279715B/zh not_active IP Right Cessation
-
2004
- 2004-12-22 HK HK04110171A patent/HK1067205A1/xx not_active IP Right Cessation
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110011A (zh) * | 2009-12-23 | 2011-06-29 | 英特尔公司 | 局部仿真环境中从源指令集架构代码向转换后代码的转换 |
CN102110011B (zh) * | 2009-12-23 | 2015-08-12 | 英特尔公司 | 局部仿真环境中从源指令集架构代码向转换后代码的转换 |
CN107748673A (zh) * | 2012-06-15 | 2018-03-02 | 英特尔公司 | 包括虚拟加载存储队列的处理器和系统 |
CN107748673B (zh) * | 2012-06-15 | 2022-03-25 | 英特尔公司 | 包括虚拟加载存储队列的处理器和系统 |
CN107341372A (zh) * | 2017-07-25 | 2017-11-10 | 北京深思数盾科技股份有限公司 | 一种软件保护方法和装置 |
CN107341372B (zh) * | 2017-07-25 | 2018-12-07 | 北京深思数盾科技股份有限公司 | 一种软件保护方法和装置 |
CN109918081A (zh) * | 2019-03-01 | 2019-06-21 | 中安智联未来有限公司 | 一种编译方法及编译器 |
CN109918081B (zh) * | 2019-03-01 | 2022-06-03 | 中安智联未来有限公司 | 一种编译方法及编译器 |
Also Published As
Publication number | Publication date |
---|---|
DE10297624T5 (de) | 2004-11-25 |
US7251811B2 (en) | 2007-07-31 |
CN100357882C (zh) | 2007-12-26 |
TW200403583A (en) | 2004-03-01 |
WO2003058432A1 (en) | 2003-07-17 |
GB2400949A (en) | 2004-10-27 |
HK1067205A1 (en) | 2005-04-01 |
US20030126587A1 (en) | 2003-07-03 |
AU2002361884A1 (en) | 2003-07-24 |
TWI279715B (en) | 2007-04-21 |
GB2400949B (en) | 2006-06-28 |
GB0414805D0 (en) | 2004-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100357882C (zh) | 处理二进制编码的装置、系统和方法 | |
US6105129A (en) | Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction | |
US7926046B2 (en) | Compiler method for extracting and accelerator template program | |
US7389499B2 (en) | Method and apparatus for automatically converting numeric data to a processor efficient format for performing arithmetic operations | |
KR101026689B1 (ko) | 병렬 스레드 계산을 위한 가상 아키텍처 및 명령어 세트 | |
US8024704B2 (en) | Systems and methods for employing tagged types in a dynamic runtime environment | |
US8832672B2 (en) | Ensuring register availability for dynamic binary optimization | |
US20110047533A1 (en) | Generating Code Adapted for Interlinking Legacy Scalar Code and Extended Vector Code | |
CN1945525A (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
TWI733760B (zh) | 記憶體複製指令、處理器、方法及系統 | |
US7949848B2 (en) | Data processing apparatus, method and computer program product for reducing memory usage of an object oriented program | |
JPH08278918A (ja) | エンディアンタスクを実行するシステム及び方法 | |
CN101375248A (zh) | 硬件JavaTM字节码译码器 | |
CN106033370B (zh) | 64位Java虚拟机的实现方法及装置 | |
US7143402B2 (en) | Method and apparatus for precision optimization in compiled programs | |
CN1650266A (zh) | 支持单线程应用程序的时分多路复用推理性多线程 | |
US20060149940A1 (en) | Implementation to save and restore processor registers on a context switch | |
US7032230B2 (en) | Efficient virtual function calls for compiled/interpreted environments | |
US7251594B2 (en) | Execution time modification of instruction emulation parameters | |
CN1975693A (zh) | 具有自驱动功能的指令仿真解析系统及其实现方法 | |
CN114675883A (zh) | 用于对齐矩阵操作加速器瓦片的指令的装置、方法和系统 | |
CN1093657C (zh) | 用于分解操作的高速缓存和体系结构特定功能分层的方法 | |
Smith et al. | POPLOG's Two-level virtual machine support for interactive languages | |
CN1719416A (zh) | 嵌入式并行计算系统以及嵌入式并行计算方法 | |
US20050216900A1 (en) | Instruction scheduling |
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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20071226 |
|
CX01 | Expiry of patent term |