CN1328666A - 通过指令集结构转换的指令集模拟 - Google Patents

通过指令集结构转换的指令集模拟 Download PDF

Info

Publication number
CN1328666A
CN1328666A CN99812059A CN99812059A CN1328666A CN 1328666 A CN1328666 A CN 1328666A CN 99812059 A CN99812059 A CN 99812059A CN 99812059 A CN99812059 A CN 99812059A CN 1328666 A CN1328666 A CN 1328666A
Authority
CN
China
Prior art keywords
data layout
processor
register
data
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
Application number
CN99812059A
Other languages
English (en)
Other versions
CN1126034C (zh
Inventor
C·杜龙
J·H·克劳福德
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 CN1328666A publication Critical patent/CN1328666A/zh
Application granted granted Critical
Publication of CN1126034C publication Critical patent/CN1126034C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

用于在一个处理器上模拟指令的一种方法和设备。该指令用第一数据格式操作操作数,而该处理器用第二数据格式进行操作。操作数从第一数据格式转换成第二数据格式。然后处理器用第二数据格式执行指令产生第二数据格式的结果。该结果从第二数据格式转换成第一数据格式。

Description

通过指令集结构转换的指令集模拟
背景
1、发明领域
本发明涉及计算机系统。特别是,本发明涉及微处理器指令的模拟。
2、相关领域的描述
改进一个处理器使之引入增强的性能时,重要的是保持与以先前模型开发的应用程序之间的软件兼容性。一个特别的难题就是用于逻辑与/或算术操作的数据的表示法。
举个例子来说,浮点(FP)数的格式有单精度(SP)和双精度(DP)两种数据格式。SP格式典型地由32-位表示法表示,而DP格式可以有2种不同的表示类型:常规64-位格式和扩展的82-位格式。常规的处理器典型地使用64-位FPDP格式作为存储在寄存器和存储器中的操作数的格式。增强型的处理器典型地使用扩展的82-位FPDP格式作为存储在寄存器中的操作数的格式,而使用常规的64-位FPDP格式作为存储在存储器中的操作数的格式。举个例子来说,英特尔架构(IA)处理器有32-位型和64-位型:IA-32处理器和IA-64处理器。IA-32处理器使用64-位FPDP格式作为存储在寄存器和存储器中的操作数的格式。IA-64处理器使用64-位FPDP格式作为存储器操作数的格式,以及使用扩展的82-位FPDP格式作为寄存器操作数的格式。
将使用常规数据格式进行操作的指令集转换到使用增强的数据格式进行操作的指令集被称作指令集结构(ISA)转换。在这样一个ISA转换中,其中用常规操作方式(例如,64-位FPDP)编写的应用程序被传送到使用增强操作方式(例如,82-位FPDP)的处理器时,就会发生操作数不匹配,反之亦然。操作数不匹配会导致性能降低,以及在多数情形中可能导致软件不兼容。
因此,在技术上有必要提供一种方法,以便在使用扩展数据格式的处理器上对一种数据格式的指令集进行模拟。
概述
本发明是在处理器上模拟一个指令的方法和设备。指令用第一数据格式操作操作数,处理器用第二数据格式进行操作。操作数从第一数据格式转换到第二数据格式。然后处理器用第二数据格式执行指令产生第二数据格式的结果。该结果从第二数据格式转换到第一数据格式。
附图简述
根据以下本发明的附图详述,本发明的特征和优点将变得明显。
图1是说明了可以实施本发明一个实施方案的计算机系统的框图。
图2是说明了依照本发明的一个实施方案的标签结构的框图。
图3是说明了依照本发明的一个实施方案的格式转换的框图。
图4是说明了依照本发明的一个实施方案的模式转换的框图。
图5是说明了依照本发明的一个实施方案的语境转换的框图。
图6是说明了依照本发明的一个实施方案的数字格式转换的框图。
图7是说明了依照本发明的一个实施方案模拟逻辑指令的过程的框图。
图8是说明了依照本发明的实施方案的调用操作的框图。
图9是说明了依照本发明的实施方案用于目标代码转换(OCT)的一个过程的流程图。
描述
本发明是一种方法和设备,用于在具有一种数据格式表示法的处理器上模拟用另一种数据格式表示的指令操作。该技术包括许多实施方案。一种标签结构提供了要与每一个寄存器相联系的标签位。提供了各种用于转换数据表示的方案。在模式转换或语境转换中使用带有跳转指令的代码修补以便跳转到合适代码。转换指令是为算术和逻辑指令在整型和浮点数之间进行数据表示转换。本发明提供了在处理器结构和增强的处理器结构之间的软件兼容性。
在以下描述中,出于解释的目的,提出众多细节以便提供对本发明的透彻理解。不过,对于本领域的技术人员显而易见的是,为实施本发明并不要求这些特定的细节。在其它实例中,为了不搞混本发明,以框图形式说明了众所周知的电气结构和电路。
图1是说明了一个可以实施本发明一个实施方案的计算机系统的框图。该计算机系统100包括处理器110、主机总线120、存储器控制器130和存储设备150。
处理器110代表了任何类型结构的中央处理单元,如复杂指令集计算机(CISC)、精简指令集计算机(RISC)、超长指令字(VLIW)或混合结构。虽然本发明是按照单处理器计算机系统来描述的,但本发明可以在多处理器计算机系统中得到实现。
存储器控制器140提供各种访问存储设备150的功能。存储器控制器140被连接到主机总线130来允许处理器访问存储设备150。存储设备150代表了一个或更多存储信息的机制。举个例子来说,存储设备150可能包括非易失性存储器或易失性存储器。这些存储器的例子包括闪存、只读存储器(ROM)或随机存取存储器(RAM)。
图1也说明了存储设备150,在那里存储了程序代码152和数据154。程序代码152表示了用于执行本发明中任何和/或全部技术所必须的代码。尤其是,程序代码152包括模拟代码153。模拟代码153在处理器110上以一种数据格式(或模式)模拟指令。数据154存储了由程序代码152使用的数据,图象数据和临时数据。尤其是数据存储器154包括数据分段155,其中包含以格式1表示的数据,格式1被称作存储器格式或扩展格式。当然,存储设备150优选地包含附加的软件(没有显示),该软件对于理解本发明不是必须的。
图1附加地说明了处理器110,包括解码单元112、执行单元114、寄存器集116和内部总线111。当然,处理器110包含附加电路,该电路对于理解本发明不是必须的。解码单元112将处理器110接收的指令解码成控制信号和/或微代码入口点。执行单元114响应这些控制信号和/或微代码入口点,执行合适的操作。寄存器集116包括多个寄存器,用以存储用格式2(称之为寄存器格式)表示的数据。
在一个实施方案中,处理器110是英特尔架构-64(IA-64)处理器。IA-64是处理64-位数据的64-位处理器。在IA-64中,64-位浮点双精度数字被表示成寄存器116(扩展或寄存器格式)中的82-位FPDP,但在存储器115中是64-位FPDP(常规或存储器格式)。32-位处理器(例如,IA-32)在其寄存器和存储器中都将一个64-位FPDP数字表示为64-位FPDP格式,该格式被称作常规格式。为保持软件的兼容性,在把为32-位处理器(例如,IA-32)开发的程序移植到64-位处理器(例如,IA-64)时,需要进行一些转化或变换。本发明的技术可用于在64-位处理器上模拟32-位指令。在下面的讨论中,处理器110被称作平台处理器而用32-位指令编写的程序或软件被称为移植程序或软件。
模拟可以使用多种方法来实现。一种方法涉及对平台处理器作细微的硬件修改。其他方法涉及通过对移植程序修补代码而进行数据格式的变换。
实现本发明所描述技术的计算机程序或软件能够在机器可读的媒体中存储和/或传输。这种机器可读的媒体的例子包括半导体存储器如随机存取存储器(RAM)、只读存储器(ROM)、可擦写ROM(EROM)、闪存、磁介质媒体、小型光盘只读存储器(CDROM)、软盘、硬盘、光盘、信号、载波等。计算机程序或代码序列模拟了这样的指令,该指令用第一数据格式操作至少一个操作数,而处理器用第二数据格式进行操作。该计算机程序或代码序列包括执行多个操作的多个代码段、子程序、子例程或函数。这些操作的例子包括将操作数从第一数据格式转换到第二数据格式,由处理器用第二数据格式执行指令来产生第二数据格式表示的结果,将该结果从第二数据格式转换成第一数据格式。使用附加的代码段来执行其他功能,如在下面描述中所解释的。
图2是说明了依照本发明的一个实施方案的一个标签结构的框图。标签结构包括要与寄存器集相联系的标签构造。
如图2所示,处理器110包括寄存器集116a和相应的标签集116b。寄存器集116a包括N个寄存器2101—210N。标签集116b包括与N个寄存器2101—210N各自相对应的N个标签2121—212N。
2121—212N中的每一个标签存储一个标签位用来指示相应寄存器的格式。例如,标签位可以用0来指明寄存器格式是64-位常规格式,而用1来指明寄存器格式是82-位扩展格式。本领域的技术人员清楚,可以使用其他的位模式。标签集提供了一种手段用以检测在操作和操作数之间是否存在不匹配。可以实现一种探测逻辑电路来将操作类型与相应的标签位进行比较。当格式不匹配时,可以调用中断来将控制转向微例程以改变操作数格式。格式不匹配不会经常发生。因此由微中断辅助引起的时间延迟是可以被接受的。
在从寄存器到存储器的所有存储中,格式由扩展格式改变到存储器格式。图2说明了将寄存器K210K的内容转移到存储器230的存储指令。
在语境转换中,由保存指令(例如,FXSAVE)将寄存器集116a保存在存储器中作为被保存的寄存器240以及由恢复指令(例如,FXRESTORE)对寄存器集116a进行恢复。当操作和操作数格式之间出现不匹配时,在第一次使用数据时进行格式转换。保存指令并不对标签集116b进行保存。在恢复时要重新设置标签来指明存储器格式。
图3是说明了一个依照本发明的一个实施方案的格式转换的框图。格式转换方法在所有操作前将64-位格式转换成82-位格式以及在所有操作后将82-位格式转换成64-位格式。格式转换包括格式1转换器320、格式2转换器360和操作340。
图3显示了操作数310、330、350和370。操作数310和370采用格式1(例如,64-位)而操作数330和350采用格式2(例如,82-位)。在操作前,格式1转换器将操作数310从格式1转换成采用格式2的操作数330。操作340是使用格式2执行的。在操作后,格式2转换器360将操作数350转换回采用格式1的操作数370。
图4是说明了一个依照本发明的一个实施方案的模式转换的框图。当采用第一模式(例如,IA32)运行的应用程序调用采用第二模式(例如,IA64)的一个应用程序时就发生模式转换(例如,ISA转换)。
模式转换包括模式1应用程序410、模式1域420、模式2域430和模式2应用程序440。模式1应用程序410调用模式2应用程序440。模式2应用程序440不了解模式1格式(例如,寄存器格式)。模式1域420通过跳转指令(例如,JUMPE)给模式2提供一个跳转。模式2域430提供参数的模式2转换。然后在模式2应用程序440中进行操作。
在从模式2应用程序440到模式1应用程序的模式转换时,分支指令(例如,BR-IA)提供了从模式2应用程序440到模式1应用程序的出口。
在模式1应用程序410中,双精度数据在寄存器中可以表示成存储器的格式或扩展格式。在模式1域420中,所有模式1应用程序410中的寄存器被保存在存储器中。模式2域430根据使用的格式从存储器装入参数。在模式2应用程序440中,双精度数据在寄存器中被转换成扩展格式。在模式2应用程序中进行操作后,分支指令将存储器中的结果参数传递到模式1应用程序410。
图5是说明了一个依照本发明的一个实施方案的语境转换500的框图。语境转换500由于中断而发生,它涉及模式1应用程序410和模式2操作系统520。正如本领域的技术人员所知道的,可能存在其他引起语境转换的原因如过程交换、多任务等。
模式1应用程序是用模式1指令集(例如,IA32)运行的应用程序。模式1应用程序410包括调用代码512和返回代码514。模式2操作系统(OS)520是用模式2指令集(例如,IA64)运行的操作系统。模式2操作系统包括修补代码522、保存代码524、模式2代码525、恢复代码526和返回代码528。
在图5说明的语境转换500中,模式1应用程序410接收到一个中断。模式1应用程序410中的寄存器采用存储器和扩展的格式。调用代码512调用模式2OS520。当控制传递到模式2OS520时,修补代码522通过执行一个修补指令(如JUMPE指令)来执行从模拟模式到本地模式的转换。所有寄存器通过修补指令被转换为存储器格式。保存代码524用位存储指令将所有模式1寄存器按位保存。位存储指令(例如,STF.SPILL)无需进行转换就可存储寄存器的内容。例如,无需进行转换就可将IA32FP寄存器作为16字节存储在存储器中。
于是模式2代码525继续执行模式2指令集(例如,IA64)来恰当地为中断或其他任务服务。在模式2代码525完成其执行后,恢复代码526用位恢复指令将保存的模式1寄存器按位恢复。位恢复指令(例如,LDF.FILL)将通过位存储指令存储在存储器中的寄存器位恢复到该寄存器中。例如,IA32FP寄存器无需经过转换就可用来自存储器的16字节进行恢复。然后返回代码528通过执行分支指令(例如,BR_IA)引起ISA转换以返回到模式1应用程序。在返回到模式1应用程序410中的返回代码514时,所有寄存器用存储器格式恢复。如果使用了标签结构,所有内部标签都被重新设置为存储器格式。模式1应用程序410中的返回代码514继续执行模式1环境中的操作。
图6是说明了一个依照本发明的一个实施方案的数字格式转换的框图。数字格式转换将压缩的32-位整型(INT)项610转换成压缩的32-位单精度(SP)项660,反之亦然。由转换序列605将压缩的32-位INT项610转换成压缩的32-位SP项660。通过使用本地转换指令如fpcvt指令将压缩的32-位SP项660转换成压缩的32-位INT项610。
转换序列605通过把项660解压缩成两个独立的部分(其中每一部分都是32-位INT项)而将压缩的32-位INT项610转换成一个解压缩后的32-位INT项620。然后通过将每一个32-位INT项转换成相应的64-位INT项来将解压缩后的32-位INT项620转换成解压缩后的64-位INT项630。接着通过将每一个64-位INT项转换成相应的82-位DP项来将解压缩后的64-位INT项630转换成解压缩后的82-位INT项640。随后通过把82-位DP项压缩或组合成压缩格式来将解压缩后的82-位DP项640转换成压缩的82-位DP项650。最后,压缩的82-位DP项650被转换成32-位DP项660。
图7是说明了一个依照本发明的一个实施方案的模拟逻辑指令的过程700的框图。
开始后,过程700判定指令是否是逻辑双精度(DP)指令如ANDNDP、ANDDPD、ORDP、XORDP(程序块710)。如果不是,终止过程700。如果该指令是逻辑DP指令中的一种,过程700接着判定操作数是否采用存储器格式(程序块720)。如果不是,终止过程700。如果操作数采用存储器格式,则过程700判定significand(有效值)是否为0(程序块730)。如果不是,则过程700将指数域设为0×1003E(程序块750)并继续执行逻辑操作(程序块760)。如果有效值为0,则过程700将指数域设为0×0(程序块740)并继续执行相应的逻辑操作(程序块760)如FAND、FANDCM、FOR或FXOR。
图8是说明了一个依照本发明的一个实施方案的调用操作800的框图。调用操作800包括调用方810和被调用方820。
调用方810采用一种数据格式来运行应用程序并调用被调用方820。被调用方820采用另一种数据格式来运行应用程序。调用方知道其寄存器的用法,因此在调用被调用方820前只保存需要被保存的寄存器。被调用方820通过在存储器将寄存器按位存储而依据标签位溢出寄存器。在该操作后,被调用方820采用存储器格式恢复保存在存储器中的寄存器位。如果格式不匹配,则被调用方820在执行调用方指令时会转换回去。在返回到调用方810后,调用方要避免假的数据类型转换。
图9是说明了一个依照本发明的一个实施方案用于目标代码转换(OCT)的过程900的流程图。
开始后,过程900判定指令是否是增强模式(EM)的本地指令(程序块910)。如果不是,终止过程900。如果指令是EM本地指令,过程900判定其是否是压缩DP指令中的一个(程序块920)。如果不是,终止过程900。如果指令是压缩DP指令,过程900使用相应的本地DP指令来模拟指令(程序块930)。过程900插入一个合适的转换指令将存储器格式(例如,64-位DP)转换成扩展的DP指令(例如,82-位DP)。转换指令典型地包括一个存储和装载序列。
接下来,过程900用扩展的DP格式(例如,82-位DP)执行该DP指令(程序块950)。在执行后,过程900插入一个转换指令将扩展的DP格式(例如,82-位DP)转换成存储器格式(例如,64-位DP)。同样,转换指令典型地包括一个存储和装载序列。然后终止过程900。
本发明提供一种技术,用以在包含扩展精度格式表示法的处理器上模拟一个双精度指令。该技术包括格式转换、语境转换、标签结构、调用协议和转换指令。
虽然本发明已经参照说明的实施方案进行描述,但该描述不应被看作是限制性的。对本领域的技术人员而言,显然,对说明的实施方案的各种修改以及其他实施方案,都应该被认为是包括于本发明的精神和范围之内的。

Claims (28)

1、用于在处理器上模拟一个指令的方法,该指令用第一数据格式操作至少一个操作数,处理器用第二数据格式进行操作,该方法包括:
将该至少一个操作数从第一数据格式转换到第二数据格式;
由处理器用第二数据格式执行指令以产生用第二数据格式表示的结果;以及
将该结果从第二数据格式转换到第一数据格式。
2、权利要求1的方法,其中第一数据格式是双精度浮点(DPFP)格式。
3、权利要求2的方法,其中第二数据格式是扩展的双精度浮点(EDPFP)格式。
4、权利要求3的方法,其中DPFP格式包含64-位表示法。
5、权利要求4的方法,其中EDPFP格式包含82-位表示法。
6、权利要求5的方法,其中64-位DPFP格式用于存储器中而82-位EDPFP格式用于处理器的寄存器中。
7、权利要求6的方法,还包括使标签位与处理器的其中一个寄存器相联系以表明该寄存器是否采用第一和第二数据格式中的一种格式。
8、权利要求7的方法,如果在标签位与相应的指令之间不匹配,则处理器将操作数转换成第一和第二数据格式中的一种格式。
9、权利要求8的方法,还包括用第二数据格式将其中一个寄存器存储在存储器中。
10、权利要求9的方法,还包括当语境转换中有一个保存操作时,采用第二数据格式将寄存器的内容保存在存储器中。
11、权利要求10的方法,还包括当语境转换中有一个恢复操作时,用第二数据格式将保存的寄存器内容从存储器恢复到寄存器中。
12、一种机器可读的媒体,包含其上的一个计算机程序,该程序可以由处理器进行处理以便在该处理器上模拟指令,该指令用第一数据格式操作至少一个操作数,该处理器用第二数据格式进行操作,该计算机程序包括:
第一代码段,该代码段用于将至少一个操作数从第一数据格式转换到第二数据格式;
第二代码段,该代码段用于由处理器用第二数据格式执行指令来产生第二数据格式的结果;以及
第三代码段,该代码段用于将该结果从第二数据格式转换成第一数据格式。
13、权利要求12的机器可读的媒体,其中第一数据格式是双精度浮点(DPFP)格式。
14、权利要求13的机器可读的媒体,其中第二数据格式是扩展的双精度浮点(EDPFP)格式。
15、权利要求14的机器可读的媒体,其中DPFP格式包含64-位表示法。
16、权利要求15的机器可读的媒体,其中EDPFP格式包含82-位表示法。
17、权利要求16的机器可读的媒体,其中64-位DPFP格式用于存储器中而82-位EDPFP格式用于处理器的寄存器中。
18、权利要求17的机器可读的媒体,其中计算机程序还包括第四代码段,用于使一个标签位与处理器的其中一个寄存器相联系以指明该寄存器是否采用了第一和第二数据格式中的一种格式。
19、权利要求18的机器可读的媒体,其中计算机程序还包括第五代码段,用于在标签位与相应的指令之间不匹配时将操作数转换成第一和第二数据格式中的一种格式。
20、权利要求19的机器可读的媒体,其中计算机程序还包括第六代码段,用于用第二数据格式将其中一个寄存器存储在存储器中。
21、权利要求20的机器可读的媒体,其中计算机程序还包括第七代码段,用于在语境转换中有保存操作时用第二数据格式将寄存器的内容保存在存储器中。
22、权利要求21的机器可读的媒体,其中计算机程序还包括第七代码段,用于在语境转换中有恢复操作时用第二数据格式将保存的寄存器内容从存储器恢复到寄存器中。
23、一种系统,包括:
一个处理器;以及
连接到该处理器的一个存储器,该存储器保存了使该处理器在处理器上模拟指令的代码序列,该指令用第一数据格式操作至少一个操作数,该处理器用第二数据格式进行操作,该代码序列包括:
第一代码段,该代码段用于将至少一个操作数从第一数据转换到第二数据格式;
第二代码段,该代码段用于由处理器用第二数据格式执行指令来产生第二数据格式的结果;以及
第三代码段,该代码段用于将该结果从第二数据格式转换成第一数据格式。
24、权利要求23的系统,其中代码序列还包括第四代码段,用于使一个标签位与处理器的其中一个寄存器相联系以指明该寄存器是否采用了第一和第二数据格式中的一种格式。
25、权利要求24的系统,其中代码序列还包括第五代码段,用于在标签位与相应的指令之间不匹配时将操作数转换成第一和第二数据格式中的一种格式。
26、权利要求25的系统,其中代码序列还包括第六代码段,用于用第二数据格式将其中一个寄存器存储在存储器中。
27、权利要求26的系统,其中代码序列还包括第七代码段,用于在语境转换中有保存操作时用第二数据格式将寄存器的内容保存在存储器中。
28、权利要求27的系统,其中代码序列还包括第七代码段,在语境转换中有恢复操作时,用于在语境转换中有恢复操作时用第二数据格式将保存的寄存器内容从存储器恢复到寄存器中。
CN99812059A 1998-10-12 1999-10-06 通过指令集结构转换的指令集模拟 Expired - Fee Related CN1126034C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/170,131 1998-10-12
US09/170,131 US6163764A (en) 1998-10-12 1998-10-12 Emulation of an instruction set on an instruction set architecture transition

Publications (2)

Publication Number Publication Date
CN1328666A true CN1328666A (zh) 2001-12-26
CN1126034C CN1126034C (zh) 2003-10-29

Family

ID=22618665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN99812059A Expired - Fee Related CN1126034C (zh) 1998-10-12 1999-10-06 通过指令集结构转换的指令集模拟

Country Status (7)

Country Link
US (1) US6163764A (zh)
KR (1) KR100401799B1 (zh)
CN (1) CN1126034C (zh)
AU (1) AU1104000A (zh)
DE (1) DE19983632B4 (zh)
GB (1) GB2357876B (zh)
WO (1) WO2000022524A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598691A (zh) * 2003-12-19 2017-04-26 英特尔公司 用于低功率程序调整的功率性能监视器的装置和方法
CN114096948A (zh) * 2019-07-09 2022-02-25 美光科技公司 位串查找数据结构

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
US8074055B1 (en) * 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6529862B1 (en) * 1999-06-30 2003-03-04 Bull Hn Information Systems Inc. Method and apparatus for dynamic management of translated code blocks in dynamic object code translation
US6516295B1 (en) * 1999-06-30 2003-02-04 Bull Hn Information Systems Inc. Method and apparatus for emulating self-modifying code
US6564179B1 (en) * 1999-07-26 2003-05-13 Agere Systems Inc. DSP emulating a microcontroller
US6845353B1 (en) * 1999-12-23 2005-01-18 Transmeta Corporation Interpage prologue to protect virtual address mappings
US6609247B1 (en) * 2000-02-18 2003-08-19 Hewlett-Packard Development Company Method and apparatus for re-creating the trace of an emulated instruction set when executed on hardware native to a different instruction set field
US6601163B1 (en) * 2000-05-08 2003-07-29 International Business Machines Corporation Method and system for executing adapter configuration routines utilizing different operating modes
GB2376098B (en) * 2001-05-31 2004-11-24 Advanced Risc Mach Ltd Unhandled operation handling in multiple instruction set systems
US7092869B2 (en) * 2001-11-14 2006-08-15 Ronald Hilton Memory address prediction under emulation
US20030093774A1 (en) * 2001-11-14 2003-05-15 Ronald Hilton State-specific variants of translated code under emulation
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US7171546B2 (en) * 2002-05-23 2007-01-30 Adams Phillip M CPU life-extension apparatus and method
US7779407B2 (en) * 2002-05-29 2010-08-17 Adams Phillip M Computer-hardware, life-extension apparatus and method
US7299170B2 (en) * 2003-06-28 2007-11-20 Transitive Limited Method and apparatus for the emulation of high precision floating point instructions
US8255882B2 (en) * 2004-12-30 2012-08-28 Intel Corporation Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture
US7447882B2 (en) * 2005-04-20 2008-11-04 Arm Limited Context switching within a data processing system having a branch prediction mechanism
US7360031B2 (en) * 2005-06-29 2008-04-15 Intel Corporation Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces
US7408484B1 (en) * 2007-02-20 2008-08-05 International Business Machines Corporation Method of doing PACK unicode zSeries instructions
US7394409B1 (en) * 2007-02-20 2008-07-01 International Business Machines Corporation Method of doing pack ASCII zSeries instructions
US8832679B2 (en) * 2007-08-28 2014-09-09 Red Hat, Inc. Registration process for determining compatibility with 32-bit or 64-bit software
US9652210B2 (en) 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
CN101676863B (zh) * 2008-08-15 2012-12-26 北京北大众志微系统科技有限责任公司 一种双宽度指令系统的性能无损切换方法及其应用系统
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
US9411585B2 (en) * 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US8694973B2 (en) * 2011-09-27 2014-04-08 Unisys Corporation Abstracting computational instructions to improve performance
US9563432B2 (en) 2013-04-19 2017-02-07 Nvidia Corporation Dynamic configuration of processing pipeline based on determined type of fetched instruction

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4951195A (en) * 1988-02-01 1990-08-21 International Business Machines Corporation Condition code graph analysis for simulating a CPU processor
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems
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
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
US5685009A (en) * 1994-07-20 1997-11-04 Exponential Technology, Inc. Shared floating-point registers and register port-pairing in a dual-architecture CPU
US5742794A (en) * 1995-10-13 1998-04-21 Dell Usa, L.P. Emulation techniques for computer systems having mixed processor/software configurations
US5701508A (en) * 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US5764959A (en) * 1995-12-20 1998-06-09 Intel Corporation Adaptive 128-bit floating point load and store instructions for quad-precision compatibility
US5729724A (en) * 1995-12-20 1998-03-17 Intel Corporation Adaptive 128-bit floating point load and store operations for quadruple precision compatibility
US5740093A (en) * 1995-12-20 1998-04-14 Intel Corporation 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility
US5920721A (en) * 1997-06-11 1999-07-06 Digital Equipment Corporation Compiler generating functionally-alike code sequences in an executable program intended for execution in different run-time environments
US5870575A (en) * 1997-09-22 1999-02-09 International Business Machines Corporation Indirect unconditional branches in data processing system emulation mode

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598691A (zh) * 2003-12-19 2017-04-26 英特尔公司 用于低功率程序调整的功率性能监视器的装置和方法
CN106598691B (zh) * 2003-12-19 2020-06-05 英特尔公司 用于低功率程序调整的功率性能监视器的装置和方法
CN114096948A (zh) * 2019-07-09 2022-02-25 美光科技公司 位串查找数据结构
CN114096948B (zh) * 2019-07-09 2022-11-11 美光科技公司 位串查找数据结构
US11809868B2 (en) 2019-07-09 2023-11-07 Micron Technology, Inc. Bit string lookup data structure

Also Published As

Publication number Publication date
WO2000022524A1 (en) 2000-04-20
GB2357876A (en) 2001-07-04
KR100401799B1 (ko) 2003-10-17
GB2357876B (en) 2003-08-27
AU1104000A (en) 2000-05-01
DE19983632T1 (de) 2001-09-27
WO2000022524A9 (en) 2001-01-04
KR20010080104A (ko) 2001-08-22
US6163764A (en) 2000-12-19
GB0107747D0 (en) 2001-05-16
DE19983632B4 (de) 2007-02-22
CN1126034C (zh) 2003-10-29

Similar Documents

Publication Publication Date Title
CN1126034C (zh) 通过指令集结构转换的指令集模拟
RU2292581C2 (ru) Команды загрузки/перемещения и копирования для процессора
US6151669A (en) Methods and apparatus for efficient control of floating-point status register
US6970994B2 (en) Executing partial-width packed data instructions
US6480868B2 (en) Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
US6502115B2 (en) Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
RU2638766C2 (ru) Процессоры, способы, системы и инструкции для транскодирования точек кода переменной длины знаков unicode
US5805475A (en) Load-store unit and method of loading and storing single-precision floating-point registers in a double-precision architecture
US6247116B1 (en) Conversion from packed floating point data to packed 16-bit integer data in different architectural registers
CN102473093A (zh) 对多个通道中的紧缩数据解压缩
JP3776132B2 (ja) マイクロプロセッサの改良
WO1999056245A2 (en) Color conversion from floating point format to integer format
JPH08234959A (ja) データ圧縮システム及び方法
JP2000029704A (ja) デ―タ型によるコプロセッサの操作コ―ドの分割
US7203935B2 (en) Hardware/software platform for rapid prototyping of code compression technologies
CN107925419B (zh) 用于使用硬件和软件进行解压缩的系统、方法和装置
US5265258A (en) Partial-sized priority encoder circuit having look-ahead capability
CN1320450C (zh) 提供可变宽度的至少六路加法指令的方法及相应装置
US7219337B2 (en) Direct instructions rendering emulation computer technique
KR100267434B1 (ko) 제 1 처리 환경내에서 제 1 명령어를 에뮬레이션 환경내에서의제 2 명령어 처리 개시에 응하여 처리하는 방법 및 시스템
US6212539B1 (en) Methods and apparatus for handling and storing bi-endian words in a floating-point processor
US20020108029A1 (en) Program counter (PC) relative addressing mode with fast displacement
CN1816798A (zh) 用于单指令多数据管理的方法和计算机程序
US20040230775A1 (en) Computer instructions for optimum performance of C-language string functions
US6230258B1 (en) Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
PB01 Publication
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: 20031029

Termination date: 20131006