CN1328666A - 通过指令集结构转换的指令集模拟 - Google Patents
通过指令集结构转换的指令集模拟 Download PDFInfo
- 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
Links
- 230000007704 transition Effects 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000006243 chemical reaction Methods 0.000 claims description 48
- 230000008569 process Effects 0.000 claims description 19
- 238000004088 simulation Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 238000011084 recovery Methods 0.000 claims description 7
- 238000007667 floating Methods 0.000 claims description 5
- 238000004321 preservation Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 19
- 238000003860 storage Methods 0.000 description 12
- 230000006835 compression Effects 0.000 description 11
- 238000007906 compression Methods 0.000 description 11
- 238000010276 construction Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000006837 decompression Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002708 enhancing effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
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的系统,其中代码序列还包括第七代码段,在语境转换中有恢复操作时,用于在语境转换中有恢复操作时用第二数据格式将保存的寄存器内容从存储器恢复到寄存器中。
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)
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)
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)
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 |
-
1998
- 1998-10-12 US US09/170,131 patent/US6163764A/en not_active Expired - Lifetime
-
1999
- 1999-10-06 CN CN99812059A patent/CN1126034C/zh not_active Expired - Fee Related
- 1999-10-06 DE DE19983632T patent/DE19983632B4/de not_active Expired - Fee Related
- 1999-10-06 GB GB0107747A patent/GB2357876B/en not_active Expired - Fee Related
- 1999-10-06 KR KR10-2001-7004574A patent/KR100401799B1/ko not_active IP Right Cessation
- 1999-10-06 WO PCT/US1999/023376 patent/WO2000022524A1/en active IP Right Grant
- 1999-10-06 AU AU11040/00A patent/AU1104000A/en not_active Abandoned
Cited By (5)
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 |