CN1538291A - 产生直接指令的模拟计算机技术 - Google Patents
产生直接指令的模拟计算机技术 Download PDFInfo
- Publication number
- CN1538291A CN1538291A CNA2004100065163A CN200410006516A CN1538291A CN 1538291 A CN1538291 A CN 1538291A CN A2004100065163 A CNA2004100065163 A CN A2004100065163A CN 200410006516 A CN200410006516 A CN 200410006516A CN 1538291 A CN1538291 A CN 1538291A
- Authority
- CN
- China
- Prior art keywords
- instruction
- old
- ring
- instructions
- register
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000009877 rendering Methods 0.000 title 1
- 238000012545 processing Methods 0.000 claims description 32
- 238000013507 mapping Methods 0.000 abstract description 20
- 230000006870 function Effects 0.000 description 30
- 238000004088 simulation Methods 0.000 description 23
- 208000032825 Ring chromosome 2 syndrome Diseases 0.000 description 14
- 208000032826 Ring chromosome 3 syndrome Diseases 0.000 description 13
- 238000007667 floating Methods 0.000 description 13
- 238000005336 cracking Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 7
- 239000000284 extract Substances 0.000 description 7
- 241001673391 Entandrophragma candollei Species 0.000 description 3
- 101000579425 Homo sapiens Proto-oncogene tyrosine-protein kinase receptor Ret Proteins 0.000 description 3
- 102100028286 Proto-oncogene tyrosine-protein kinase receptor Ret Human genes 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000001343 mnemonic effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000013011 mating Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 101100282455 Arabidopsis thaliana AMP1 gene Proteins 0.000 description 1
- 101150093240 Brd2 gene Proteins 0.000 description 1
- 102000015347 COP1 Human genes 0.000 description 1
- 108060001826 COP1 Proteins 0.000 description 1
- 102100021394 CST complex subunit CTC1 Human genes 0.000 description 1
- 101100275473 Caenorhabditis elegans ctc-3 gene Proteins 0.000 description 1
- 102100037735 Fatty acid-binding protein 9 Human genes 0.000 description 1
- 101710083193 Fatty acid-binding protein 9 Proteins 0.000 description 1
- 101100218464 Haloarcula sp. (strain arg-2 / Andes heights) cop2 gene Proteins 0.000 description 1
- 101000894433 Homo sapiens CST complex subunit CTC1 Proteins 0.000 description 1
- 101001019013 Homo sapiens Mitotic interactor and substrate of PLK1 Proteins 0.000 description 1
- 101000667209 Homo sapiens Vacuolar protein sorting-associated protein 72 homolog Proteins 0.000 description 1
- 101150102752 MTC2 gene Proteins 0.000 description 1
- 102100033607 Mitotic interactor and substrate of PLK1 Human genes 0.000 description 1
- 101150007742 RING1 gene Proteins 0.000 description 1
- 208000035217 Ring chromosome 1 syndrome Diseases 0.000 description 1
- 101100478997 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SWC3 gene Proteins 0.000 description 1
- 101100023111 Schizosaccharomyces pombe (strain 972 / ATCC 24843) mfc1 gene Proteins 0.000 description 1
- 108010091769 Shiga Toxin 1 Proteins 0.000 description 1
- 101100142768 Symbiobacterium thermophilum (strain T / IAM 14863) rplY2 gene Proteins 0.000 description 1
- 102100039098 Vacuolar protein sorting-associated protein 72 homolog Human genes 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000003455 independent Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F25—REFRIGERATION OR COOLING; COMBINED HEATING AND REFRIGERATION SYSTEMS; HEAT PUMP SYSTEMS; MANUFACTURE OR STORAGE OF ICE; LIQUEFACTION SOLIDIFICATION OF GASES
- F25D—REFRIGERATORS; COLD ROOMS; ICE-BOXES; COOLING OR FREEZING APPARATUS NOT OTHERWISE PROVIDED FOR
- F25D23/00—General constructional features
- F25D23/10—Arrangements for mounting in particular locations, e.g. for built-in type, for corner type
-
- 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
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F25—REFRIGERATION OR COOLING; COMBINED HEATING AND REFRIGERATION SYSTEMS; HEAT PUMP SYSTEMS; MANUFACTURE OR STORAGE OF ICE; LIQUEFACTION SOLIDIFICATION OF GASES
- F25D—REFRIGERATORS; COLD ROOMS; ICE-BOXES; COOLING OR FREEZING APPARATUS NOT OTHERWISE PROVIDED FOR
- F25D2500/00—Problems to be solved
- F25D2500/02—Geometry problems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Chemical & Material Sciences (AREA)
- Combustion & Propulsion (AREA)
- Mechanical Engineering (AREA)
- Thermal Sciences (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种用于模拟执行一编译高阶语言(例如C/C++)的旧微处理器的指令的系统和方法,其中编译代码被结构化,使得数据及指令段分离。为了改善系统的实时性能,尽可能将旧指令直接映射到主处理器的等效指令。可选择采用其他技术,以进一步提高系统的实时性能。通过利用旧指令到主指令的直接映射,根据本发明的模拟系统为相对现代的RISC微处理器提供改进的实时性能。
Description
技术领域
本发明涉及一种用于模拟一旧微处理器(legacy microprocessor)指令的方法和设备,更确切而言,涉及一种用于一旧微处理器的模拟系统,例如一32位微处理器,其执行一编译的较高阶语言,例如C/C++,其中编译码被结构化,以使数据和指令段被结构化,例如,如同在简化指令集计算机(RISC)微处理器中,其中尽可能地将旧指令直接映射到主处理器的等效指令,以便改善系统的实时性能。
背景技术
已知微处理器配置有不同指令集架构(ISA)。ISA决定一特定微处理器的指令集。应用程序由一微处理器执行,通常用一相对高级语言来编写,其又被编译成与具体微处理器的指令集兼容的机器指令。
由于许多现存微处理器的寿命退化和相应的低速度,常常需要用较新的微处理器(以下称为主微处理器)来更换陈旧的现存微处理器(以下称为旧微处理器)。不幸的是,视具体升级不同,多数情况下主微处理器的指令集与旧微处理器的指令集不兼容。
解决该问题的一个方法是在考虑主微处理器的指令集的条件下,重写现存的应用程序。该技术相对麻烦,且相当昂贵。为了解决指令集的不兼容性,我们已知有软件系统用来模拟旧微处理器的指令。这样的系统常常被称为模拟系统。我们知道,该等模拟系统模拟旧微处理器的指令集,使得用旧微处理器的指令集所编写的应用程序可由一更新、更快的主微处理器来执行。
在许多已知的模拟系统中,旧指令(legacy instruction)由主微处理器来提取,而该主微处理器又使用一查询表来解译旧指令。对于该等模拟系统,因为必须解译每个旧指令,所以配备有高速缓冲存储器的系统的高速缓存未中(cache miss)的机率会相对较高,此降低了系统的总体流量。
为了改善这些模拟系统的流量或速度,已公开的第6,041,402号美国专利揭示了一直接向量旧指令集模拟系统。与提取旧指令并在软件中解译指令不同,直接向量旧指令集模拟系统将直接向量提取至模拟旧指令的软件例行程序。通过提取直接向量,省去了用查询表来解译旧指令的需要。由于该系统免除了查询表访问,高速缓存未中的机率大大减少,从而提高了系统的流量。不幸的是,对于相对现代的微处理器(例如32位RISC微处理器),直接向量旧指令集模拟需要的运行开销太多。因此,需要一种模拟旧微处理器的指令的模拟系统和方法,提供比已知模拟系统改进的实时性能。
发明内容
简言之,本发明涉及一种用于模拟旧微处理器的指令的系统和方法,这些旧微处理器执行一编译高阶语言,例如C/C++,其中编译码被结构化,使得数据和指令段分离,例如,如同在简化指令集计算机(RISC)微处理器中。为了改善系统的实时性能,尽可能地将旧指令直接映射到主处理器的等效指令(equivalent instruction)。可视情况运用其他技术来进一步提高系统的实时性能。当不能达成完全匹配时,使用流向一指令处理程序(handler)的无条件分支指令。该指令处理程序由两条或更多条主处理器指令组成,该等主处理器指令最终执行与被替换的旧指令相同的函数。对于不能单单用主指令来模拟的旧指令,则由包括数条主指令并结合使用便笺式寄存器的指令处理程序来模拟这些旧指令。对于涉及到旧微处理器的架构特点、不易以主处理器的汇编语言来处理的旧指令,则自一高级语言(例如C/C++代码)形成一指令处理程序。通过将旧指令到主指令的直接映射并利用上述模拟技术中的一个或多个技术,根据本发明的模拟系统为相对现代的RISC微处理器提供增进的实时性能。
附图简单说明
参照以下说明和本文附图将不难理解本发明的这些和其他优点。
图1是根据本发明的模拟系统的高级方块图。
图2是根据本发明所使用的指令裂化程序的软件流程图。
图3是存储部分的图示,其说明根据本发明的一个方面的存储映射。
图4说明例示性旧ADDU(无符号加)指令的操作码到主ADD指令的直接映射的例示性实例。
图5类似于图4,但说明了例示性旧LHU(载入无符号半字)指令到主指令的映射。
图6类似于图4,并说明了例示性旧SRA(右移位代数)指令到主指令的映射。
图7类似于图4,并说明了例示性旧SYNC指令到主指令的映射。
图8说明用于例示性旧LB(载入字节)指令的主指令处理程序。
图9类似于图8,但用于例示性旧BEQ(如相等,则分支)指令。
图10说明包括若干直接映射的指令(例如,如图4至7所示)的指令流,说明流向指令处理程序的无条件分支,该指令处理程序用于无法直接映射到主指令的旧指令。
图11是完全由复数条主指令模拟的例示性旧指令的模拟实例,其需要便笺式寄存器以用于流向PowerPC处理程序的MISP SLT(如小于,则设置)指令。
图12类似于图11,只是其说明了例示性MTCl(移向协处理器1)指令的模拟。
图13A是要求由指令处理程序进行模拟的由高级指令生成的Ring 3 SYSCALL旧指令的模拟实例。
图13B类似于图13A,但用于Ring3 CFCz旧指令。
图14说明包含各种旧指令的指令流以及相应的处理程序存储空间。
图15说明根据本发明的模拟程序的执行。
图16-20说明MIPS型RISC微处理器的各种指令格式。
具体实施方式
本发明涉及一种用来模拟执行编译高阶语言(例如C/C++,Fortran或ADA)的特定类别旧微处理器的指令的设备和方法。该编译代码通常被结构化,使得数据及指令段分离。该编译代码也符合描述如过程调用(procedure calling)、链接约定和寄存器使用约定等的其它平台相关的“应用程序二进制接口”(ABI)。
本发明涉及使用一32位RISC微处理器对另一32位RISC微处理器的模拟。如本文所用,主处理器代表执行模拟程序的处理器。“旧处理器”一词用于识别正被模拟的处理器。
根据本发明的模拟技术假设了主处理器与旧处理器之间存在相似性,使旧指令可被归入下述四类中的一个或多个类别中:
Ring 0——此等旧指令可被执行相同函数的单一主处理器指令所替换。对于此类指令,一般只必需修改指令的操作码和重新排列指令字段。
Ring 1——此类旧指令可被执行相同函数的两条或两条以上主处理器指令所替换,且无需便笺式寄存器来执行该操作。
Ring 2——此等旧指令可被两条或更多条执行相同函数的主处理器指令替换,但需要一个或更个便笺式寄存器来执行该操作。
Ring 3——此等旧指令通常涉及旧微处理器的高级架构特点,且还涉及过于复杂而不能仅用主处理器汇编语言来执行的指令。此等指令几乎全部用一高级语言(例如C/C++)进行处理。
为了使主处理器能执行为旧处理器所编写的程序,必须将旧处理器的二进制指令以上述四类指令中的一种译成主处理器二进制指令。所有微处理器都会执行的操作有许多,例如简单算术(即加法、减法、乘法)、逻辑运算(即逻辑与、或、非)以及数据移动(即载入和存储)。在不同品牌和/或型号的RISC微处理器之间,这些指令中的许多十分相似和相同,并常常出现在许多应用程序中。因此,通过尽可能地利用主微处理器与旧微处理器之间的指令集的相似性和利用如在Ring 0类中所述的直接映射,将会大大改善系统的实时性能。当无法完全匹配时,则用一流向一由两条或两条以上主处理器指令组成的旧指令处理程序的无条件分支指令来替换旧指令,该等主处理器指令最终执行与被替换的旧指令相同的函数,例如,对于Ring 1和Ring 2类的旧指令。无条件分支的使用有助于通过利用主处理器分支预报能力来保持性能。对于涉及旧微处理器的高级特点或不易用主处理器汇编语言进行处理的高级指令,则将Ring 3类指令分支出来到较高级语言(例如C/C++),以在较高级别上处理该运算。
为了保持Ring 0、Ring 1和Ring 2的性能优势,且因为旧微处理器与主微处理器之间的寄存器使用约定不同,所以将旧寄存器重新映射到对应的功能对等的主寄存器。例如,一PowerPC主微处理器的堆栈指针(stack pointer)为r1,而一MIPS R4400微处理器的堆栈指针为r29。我们知道,已知的模拟器系统可将旧寄存器保存在存储器中,此需要存储器存取和额外的主指令来操纵一旧寄存器值,因而大大减低了实时性能。通过将旧寄存器重新映射到主处理器寄存器,实时性能相对于已知模拟系统而言得到了提高。
基于将由MIPS技术公司(MIPS Technologies,Inc.)(http://www.mips.com)制造的32位R4400 RISC微处理器作为旧处理器,以及PowerPC主处理器(http://www.motorola.com/powerpc)来描述本发明。然而,如上所述,本发明的原则可适用于任何兼容微处理器,其中一些旧处理器指令可被直接映射到主处理器指令。我们知道,对兼容主/旧处理器组合而言,指令之间1∶1的数量匹配可能比较高。
系统回顾
图1说明了根据本发明的模拟系统和方法的高级方块图,整体用参考数字20表示。如上所述,根据本发明的模拟系统和方法可适用于其中指令与数据分离(如方框22和24所示)的旧微处理器。文件载入程序(file loader)26找出旧程序的位置,通常以参考数字28表示。文件载入程序在本技术领域内为人所熟知。文件载入程序26读取旧文件格式并提取旧二进制文件。如图1所示,文件载入程序26提取旧指令22以及旧数据文件24。这些旧指令22和数据文件24可被包含在磁碟、只读存储器上或通过网络被提取。如果旧数据24为静态,则仅将其复制到一与主微处理器程序相关联的旧数据存储空间30。或者,可为随程序运行而动态创建的数据区(data section),创建并初始化旧数据。
数据载入程序26将旧指令22提供至一裂化图目标32。如同下文将详细论述的,裂化图目标32特定相关于旧指令集架构和主指令集架构。同样如同下文将详细论述的,裂化图目标32分析每条旧指令22,并根据上述四种例示性类别(即Ring 0、Ring 1、Ring 2和Ring 3)对指令进行分类。如图1所示,Ring 1-3指令被置于独立于Ring 0存储空间的处理程序存储空间内。通过裂化图目标32将Ring 0指令直接映射到主处理器存储空间34。所有其他指令被映射到指令处理程序36。
裂化图目标
裂化图目标32把从文件载入程序26接收的每条旧二进制指令转换成一条或多条主处理器指令。如上所述,本文所描述和图示的裂化图目标32是用于通过PowerPC G3/G4处理器来模拟旧MIPS R4400 RISC微处理器的指令。
参照图2,裂化图目标32在步骤40和42中提取并读取每条旧指令22。随后,在步骤44和46中,根据其操作码将每条指令解码。更确切而言,参照下面的表1和表2,将每条旧指令连同其旧操作码以及其他数据字段列于一查询表中(如下所述)。如下文将详细论述的,这些查询表包括每条旧指令22的Ring类型。相应地,裂化图目标32在步骤48中检查,以判定指令是否属于Ring 0类。若是,则裂化图目标32在步骤50中通过翻译该等操作码将旧指令22直接映射到一主指令,下文将对此进行详细论述。然后在步骤52中将翻译过的主指令写入应用程序指令流。
若旧指令22并非Ring 0类,则在步骤54中将指令流中流向下一处理程序的无条件分支指令插入到指令流中。系统随后在步骤56、58和60中检查,以判定旧指令是否属于Ring 1类、Ring 2类和Ring 3类。
若在56中判定出旧指令22属于Ring 1类,则在步骤58B中写入流向指令处理程序36(图1)的指令,并在步骤60A中将一返回分支指令插入到指令处理程序36的末端。若在步骤58A中判定出指令为一Ring 2类指令,则裂化图目标32将插入指令码以保存来自便笺式寄存器的数据,并接着在步骤64中将指令写入指令处理程序空间36(图1)。
如上所述,Ring 2类指令需要复数条主处理器指令和便笺式寄存器,以便提供一等效于旧指令的函数。一旦该指令得到模拟,就在步骤66中恢复与Ring 2指令相关联的便笺式寄存器。系统随后返回到步骤60A,并在处理器的末端插入一分支以返回到该指令流。
若判定出该指令为Ring 3类指令,则在步骤60B中,在指令处理程序36中插入指令码,以保存机器状态。接下来在步骤68中,指令处理程序跳到一较高阶语言程序(例如C/C++)其向旧指令提供一等效函数。该较高阶语言通过一编译器来处理至指令处理程序36的返回,其返回至步骤70,在此恢复机器状态,且通过在处理程序末端插入一返回分支指令,系统返回主指令屏。
指令间隔和分支重叠
如图14和15中清晰所示,主处理器程序被示为一指令流,整体以参考数字72表示,其包括Ring 0类指令和流向指令处理程序36的无条件分支(图1)。将Ring 1-3类指令置于独立于Ring 0空间34的处理程序空间36中并利用无条件分支来分支至Ring 1-3指令处理程序空间36(图1)的这一配置被用以保持指令之间的距离。更确切而言,预期每个程序包含跳跃和/或分支指令。如果指令之间的间隔没有得到保持,跳跃和分支就可能结束在错误的位置,因为许多指令以一相对形式运行,即自当前位置向前或向后跳跃一定距离,而非使用一绝对目的地址(destination address)。因此,当无法达成1∶1匹配时,则用一单一无条件分支替代旧指令,正如图14和15所示。无条件分支指令向量定向(vector)至指令处理程序空间36(图1)以模拟旧指令。当处理程序完成其函数时,其返回到跟随在无条件分支之后的指令,如图14和15所示。
图3说明一基于相对编址(relative addressing)的条件分支转递(conditional branchforward)的实例。更确切而言,在地址1004处执行该指令期间,该程序计数器指向地址1008处的下一指令。如图3所示,指令BEQ为一条件分支指令。该条件分支指令如被接受,则会给当前地址加上八(8),到达目的地址1010。若1008或100C处的任一指令都不能被翻译1∶1,且若在指令行中插入了额外码,则分支会向量定向至错误目的地址。若替代地使用无条件分支来分支至指令处理程式,例如,在指令流72(图14和15)中插入无条件分支,则距离保持不变。
本技术依赖于许多RISC处理器被称为“分支重叠”的特性,其允许可用处理器将无条件分支从指令流中自动移除,而性能极少或毫不受损。当分支为无条件时,必须予以接受。处理器只是沿着新的路径开始指令预提取,而与该分支相关联的性能损失极少或没有损失。另一方面,条件分支可造成重大性能损失,因为在已知采用哪条路径之前,不能进行指令预提取。
寄存器映射
根据本发明的一个方面,使用寄存器映射以防止主处理器与旧处理器之间的冲突。例如,在一MIPS R4400微处理器上,通用寄存器29为堆栈指针。然而在一PowerPC微处理器上,堆栈指针是寄存器1。为防止冲突,将旧指令中的寄存器字段重新映射到主处理器寄存器。在其中将MIPS R4400微处理器指令的旧指令映射到PowerPC指令的实例中,旧指令的寄存器29被重新映射到主处理器的寄存器1,且旧指令的寄存器1被重新映射到主处理器的寄存器29。这可通过将旧寄存器号当作进入一数组的下标来实现,该数组包含待用于该给定旧寄存器号的主处理器号。
指令产生
如上所述,旧指令归为下列四类中的一种:Ring 0、Ring 1、Ring 2或Ring 3。如上论述,将Ring 0旧指令的目标代码直接映射或转换到一执行相同函数的单一主指令。本文描述并图示了旧指令的选择产生的实例。图4-7说明了Ring 0指令映射。图8和图9说明Ring 1指令映射的实例。图11和图12说明Ring 2指令映射的实例,而图13说明了Ring 3指令映射的实例。
Ring 0指令
Ring 0指令是可以单一主处理器指令替代的旧处理器指令。多数时候,需要对旧指令进行二进制重组(即翻译目标代码),即使对应的主处理器指令执行与旧处理器指令相同的操作。
图4-7说明将数条32位MIPS R4400 RISC处理器指令转换为32位PowerPC RISC微处理器等效指令的实例。在此例中,MIPS处理器为旧处理器,而PowerPC为主处理器。
对于Ring 0指令,操作码(op码)被改变来与主处理器中合适的指令匹配。在某些情况下,还必须翻译子操作码字段。视需要移动寄存器和立即值字段。在某些情况下,主处理器位字段设定为一不活动状态。尽管未图示,也可根据旧/主处理器组合进行旧寄存器映射。
图4说明最简单二进制表示的MIPS ADDU(无符号加法指令)的实例。为了将ADDU旧指令转换为一等效主ADD指令,如图4所示改变操作码及各种子操作码字段以及寄存器字段。主指令也有未用于旧指令的2个额外单比特(single bit)可选字段(option field)(即0位和10位)。将这些字段清除即可。
参照图4,ADDU旧指令(将寄存器rs和rt中的值相加,并将结果存储在寄存器rd中)。如图所示,旧子操作码为00000100001,其对应于旧指令的0-10位。二进制值0000010001对应于十进制33。对应的主指令为Add指令。
在此情况下,主指令将在其寄存器rA和rB中的值相加,并将结果储存在寄存器rT中。主处理器指令的格式与对应的旧指令的格式略有不同。此外,主指令包括RC(记录条件)位和OE(overflow enable,溢出允许)位来充当32位指令的0位和10位。旧MIPS处理器则不具备这些选项。如上所述,将这些位清零即可。将0位和10位清零后,主Add指令的等效子操作码为100001010。因此,在此情况下,旧操作码00000 100001被翻译成100001010,且如上所述重新映射寄存器。特别地,将旧寄存器rd映射到主寄存器rT,同时将旧寄存器rs映射到主寄存器rA,最终将旧寄存器rt映射到主寄存器rB。此外,将旧指令的26-31位译成主指令的合适的操作码。如图所示,显示为000000的26-31位上的操作码被译为011111。
图5和图6说明直接映射的其它实例。例如,图5说明一旧LHU(载入无符号半字)指令和SRA(右移位代数)指令的直接映射。在LHU指令的情况下,立即数据也转移到主处理器指令。SRA指令包含一立即5位移位计数字段。最后,图7说明无自变量的旧Sync指令。类似地,对应的Sync指令没有自变量。在此情况下,如图7所示地翻译操作码和子操作码。
Ring 1指令
如上所述,Ring 1类旧指令不能直接映射到单一主处理器指令。因此,如上所述,将一无条件分支指令插入到指令流72(图14、15)中。分支将操作向量定向至指令处理程序,该指令处理程序利用多条主处理指令来模拟被模拟的旧指令的行为。Ring 1指令容许可无需便笺式寄存器的足够简单的模拟。
图8说明用于旧LB(载入字节)的汇编语言助记和用于LB旧指令的主指令处理程序。旧LB指令被归类为Ring 1指令,是因为该旧指令也执行一符号扩展(其根据所载入字节的符号来扩展目的寄存器中的符号位)。需要额外主处理器指令来执行符号扩展。更确切而言,如图8所示,需要五个字来处理此指令。第一个字即就是该旧二进制指令。下一个字是指向另一处理程序的指针,该处理程序用于处理具有不同操作数(operand)的相同指令。这样做是为了重新利用一已经建立的处理程序。该单独链接的列表提供了匹配搜索机制。第三个字开始旧指令的主处理器处理程序。可存在任意数目的主处理器指令。最后,插入主处理器子路径返回指令,以便回到主指令流。
图9说明了旧BEQ(如为相等指令,则分支)和用于模拟此指令的主指令处理程序。在此情况下,因为旧BEQ指令在一条指令中一并执行对比和分支,所以BEQ旧指令被归类为Ring 1指令。主处理器指令不允许在一条指令中进行对比分支。相反,主处理器的指令要求单独进行对比并将结果存储在条件码寄存器中。而后,条件分支使用所储存的条件码决定是否分支。
在旧目标的情况下,主处理程序也可合并紧随在该相等指令分支之后的旧指令,因为旧处理器可在计算目的地址的同时对其予以执行。尽管没有在图中显示,但是处理程序也能适应上述内容。更具体地参照图10,其显示在一具有数条Ring 0指令的指令流中的Ring1指令。每当执行Ring 1指令时,都利用无条件分支和链接指令将执行向量定向至由二字头后的指令开始的指令处理程序。如图10所示,在该指令处理程序末端,执行返回到指令流,且具体而言是返回到紧随在分支之后的链接地址。
Ring 2指令
除了需要一个或多个便笺式寄存器来执行操作之外,Ring 2指令与Ring 1指令类似。这就要求保存出(save out)这些主处理器寄存器中的一个或多个,并之后在返回旧指令屏之前将其恢复。
图11是Ring2指令的实例。图11特别说明了旧SLT(如小于则设定的指令)和处理此指令的主指令处理程序。此旧指令执行对比,若不相等则储存零到指定寄存器,若相等则储存零到指定寄存器。在此情况下,主处理器(PowePC处理器)不具有对应的指令。因此,主处理器代替地执行对比,并随后从条件码寄存器中取出对比结果。而后,必须将这个值旋转到正确的位置。这些操作需要便笺式寄存器来运作,所以分配并保存出一个便笺式寄存器,并在完成处理程序时使其恢复。
图12说明连同其对应的主处理器指令处理程序,旧MTC1指令的另一实例。MTC1指令是向协处理器1指令的移动,其将值从通用寄存器移入浮点寄存器,即旧处理器协处理器1。在主微处理器(即PowerPC微处理器)的情况下,不存在任何将值直接从通用寄存器移到浮点寄存器的指令。因此,指令处理程序必须利用便笺式寄存器来架构存储缓冲器的地址。将通用寄存器值储存在存储器中,且然后利用浮点载入指令将其转入浮点寄存器,如图12所示。
据预料,如果选择了具有充足寄存器资源的主处理器,那么可避免Ring 2指令。在为MIPS R4400旧微处理器和PowerPC主处理器的情况下,其各自具有32位通用寄存器和32位浮点寄存器。这就强制要求通过存储器来保存寄存器,并在需要一个或多个便笺式寄存器时将其恢复。
Ring 3指令
Ring 3指令涉及复杂的操作和不易用主处理器或汇编语言模拟的旧处理器的高级架构特点。因此,替代地用高阶语言(例如C/C++)来处理Ring 3指令。为了这些指令装配了主汇编语言处理程序,但其功能是根据需要调用高阶语言分量(Higher-order languagecomponent)。
图13A说明MIPS SYSCALL(系统调用)指令及其主处理程序。如图所示,在调用高级语言之前保存机器状态,并在从处理程序返回时返还和恢复。以高阶语言调用一函数的要求在主处理器的应用程序二进制接口(ABI)文献中有充分记载。这样的ABI包含必须遵守以确保用于任何给定架构的程序的恰当互动的约定。因此,具体要求由主处理器的选择决定。因而,Ring 3指令的处理程序则为调用高阶语言分量所必需的任何代码。
图13B说明例示性的PowerPC汇编语言和用于一Ring 3CFCz指令的例示性处理程序。以PowerPC机器代码生成指令处理程序。但是,为方便说明,采用的是注释汇编(commented assembly)。
所模拟的旧指令是CFCz指令,其将32位值从旧协处理器寄存器移到通用寄存器。旧微处理器(本例中为MIPS RISC R4400微处理器)允许多达4个协处理器,其中协处理器1是浮点单元。指令处理程序保存出机器状态,从处理程序的顶端提取旧指令,且接着取出由协处理器寄存器号、通用寄存器号和协处理器号组成的三个自变量。
// Save the machine state.Registers get saved on the stack. stwu sp,-160(sp) // adjustthe stack pointer mflr r0 // get current link register stw r0,4(sp) // save it on the stack stw r0,32(sp) // save all PowerPC general registers to the stack stw r1,36(sp) // starting at offset 32 ... stw r30,152(sp) stw r31,156(sp) // Setup to call the C/C++ handler code.For CFCz,this involves fetching <dp n="d8"/> // the legacy instruction from the top of the handler(second word,just // before any executable code)and extracting the arguments from it. // fetch the legacy instruction from the top of the handler so the arguments // can be retrieved bl +4 // do a linking branch to get the program counter nop // into the link register(can′t read it directly) mflr r13 // fetch the program counter from the link register lwz r13,-152(r13) // load the legacy CFCz instruction // get the first argument-the contents of MIPS register rd rlwinm r14,r13,23,25,29 // extract the rd field and multiply by 2 addi r14,r14,32 // form offset into stack for rd lwzx r3,r14,sp // load the contents of rd from the stack // get the second argument-the z field rlwinm r4,r13,5,30,31 // extract the coprocessor number(0-3) // Call the handler function.The rest will be handled in C/C++code. bl Execute_CFCz // Execute_CFCz called as if it were a C function // the return value comes back in r3-store it into the appropriate // register on the stack-in the next stage it will be placed into the // appropriate register rlwinm r15,r13,18,25,29 // extract the rt field from the legacy instruction addi r15,r15,32 // form offset into stack for rd stwx r3,r15,sp // store return value into appropriate register // Restore the machine state.Here all of the non-volatile registers are // reloaded and the stack pointer is adjusted back. lwz r0,32(sp) // restore non-volatile registers lwz r1,36(sp) lwz r30,152(sp) lwz r31,156(sp) lwz r0,4(sp) // load the original link register mtlr r0 // and restore it addi sp,sp,160 // restore the original stack pointer <dp n="d9"/> blr // return to the instruction stream
在设置区中,将自变量置入主机(即PowerPC)寄存器r3和r4内。这符合用于调用C函数的PowerPC应用程序二进制接口规范。对Execute_CFCz的调用是指定的C函数,用于处理CFCz指令。此函数的实例如下:
#include<CoprocessorControlManager.h> // there is a pointer to the C++ class that manages the interaction with // up to 4 MIPS coprocessors extern CoprocessorControlManager *cp; // we must give this function C style language naming so that it can be // called from assembly/machine language code extern″C″ { unsigned long Execute_CFC(unsigned long rd,unsigned long z); }; // this c function calls the C++ object that manages coprocessor // operations;for the CTCz instruction,only a register read or write // is required but the consequences of a read or write are dependent on // the nature of the coprocessor unsigned long Execute_CFC(unsigned long rd,// passed in PowerPC register r3 unsigned long z) // passed in PowerPC register r4 { return cp->readReg(z,rd);
下面是关于处理协处理器操作的C++类的例示性类说明(class specification)。
// this is an example class specification for a coprocessor control object class CoprocessorControlManager { public: // the public constructor initializes the object as necessary CoprocessorControlManager(); // the destructor performs cleanup when the class is destroyed-CoprocessorControlManager(); // this function reads a coprocessor register and returns it value void readReg(unsigned long z,unsigned long rd); };
下面是一定义于上述类中的协处理器读取寄存器函数的例示性实施例。
// this is an exemplary implementation of the method responsible for <dp n="d10"/> // performing reads from coprocessor control registers unsigned long CoprocessorControlManager∷readReg(unsigned long z, unsigned long rd) { // which coprocessor? switch(z) { // the floating point unit case 0: { // which register to read switch rd: // this is the coprocessor implementation and revision register which // contains information about the floating point unit(it is read only) case 0: // return the version number return 1; // this is the floating point control and status register case 1: // rounding,trap enables,and flags are stored here // CODE OMITTED break; // all other regisers are reserved for this coprocessor so just // return 0; default: return 0; }// end case // no other cases handled by default default: return 0; }// end switch // CODE OMITTED
查询表
如上所述,表1和表2代表裂化图目标32所使用的查询表,用于为MIPS R4400 RISC旧微处理器旧指令识别旧指令,并识别其中每条旧指令的具体Ring类别。
表1
MIPS 32位整数指令的分类
指令
操作码
函数
类型
Ring
RS
RT
RD
立即
Shamt
ADD 0 32R 1 0
ADDI 8 I 0
ADDIU 9 I 0
ADDU 0 33R 0 0
AND 0 36R 0 0
ANDI 12 I 0
BC0F 16 I 3 8 0
BC0FL 16 I 3 8 2
BC0T 16 I 3 8 1
BC0TL 16 I 3 8 3
BC1F 17 I 3 8 0
BC1FL 17 I 3 8 2
BC1T 17 I 3 8 1
BC1TL 17 I 3 8 3 0
BC2F 18 I 3 8 0
BC2FL 18 I 3 8 2
BC2T 18 I 3 8 1 0
BC2TL 18 I 3 8 3
BEQ 8 I 2
BEQL 20 I 2
BGEZ 1 I 2 1
BGEZAL 1 I 2 17
BGEZALL 1 I 2 19
BGEZL 1 I 2 3
BGTZ 7 I 2 0
BGTZL 23 I 2 0
指令
操作码
函数
类型
Ring
RS
RT
RD
立即
Shamt
BLEZ 6 I 2 0
BLEZL 22 I 2 0
BLTZ 1 I 2 0
BLTZAL 1 I 2 16
BLTZALL 1 I 2 18
BLTZL 1 I 2 2
BNE 5 I 2
BNEL 21 I 2
BREAK 0 13I 0
CACHE 47 1 3
CFC0 16 0R 0 2 0
CFC1 17 0R 3 2 0
CFC2 18 0R 3 2 0
COP0 16 J 3 upper bit set 0
COP1 17 J 3 upper bit set 0
COP2 18 J 3 upper bit set
CTC0 16 0R 0 6 0
CTC1 17 0R 3 6
CTC2 18 0R 3 6 0
CTC3 19 0R 3 6
DIV 0 26R 2 0 0
DIVU 0 27R 2 0 0
ERET 16 24R 3 16 0 0 0
J 2 J 0
JAL 3 J 2
JALR 0 9R 2 0 0
JR 0 8R 1 0 0 0
LB 32 I 0base offset
LBU 36 I 0base offset
LH 33 I 0base offset
LHU 37 I 0base offset
LL 48 I 3base offset
LUI 15 I 0 0
LW 35 I 0base offset
LWC1 49 I 3base offset
LWC2 50 I 3base offset
LWL 34 I 0ba.se offset
LWR 38 I 0base offset
LWU 39 I 0base offset
MFC1 17 0R 3 0 0
MFC2 18 0R 3 0
MFHI 0 16R 1 0 0 0
MFL0 0 18R 1 0 0 0
MTC1 17 0R 3 4
MTC2 18 0R 3 4
MTHI 0 17R 2 0 0 0
指令
操作码
函数
类型
Ring
RS
RT
RD
立即
Shamt
MTLO 0 19R 2 0 0 0
MULT 0 24R 2 0 0
MULTU 0 25R 3 0 0
NOR 0 39R 0 0
OR 0 37R 0 0
ORI 13 I 0
SB 40 I 0
SC 56 I 3base offset
SH 41 I 0base offset
SLL 0 OR 0 0
SLLV 0 4R 0 0
SLT 0 42R 2 0
SLTI 10 I 2
SLTIU 11 I 2
SLTU 0 43R 2 0
SRA 0 3R 0 0
SRAV 0 7R 0 0
SRL 0 2R 0 0
SRLV 0 6R 0 0
SUB 0 34R 1 0
SUBU 0 35R 0 0
SW 43 I 0base offset
SWC1 57 I 3base offset
SWC2 58 I 3base offset
SWL 42 I 0base offset
SWR 46 I 0base offset
SYNC 0 15R 0 0 0 0 0
SYSCALL 0 12R 3code code code code
TEQ 0 52R 3 code code
TEQI 1 I 3 12
TGE 0 48R 3
TGEI 1 I 3 8
TGEIU 1 I 3 9
TGEU 0 49R 3 code code
TLBP 16 8R 3 16 0 0 0
TLBR 16 1R 3 16 0 0 0
TLBWI 16 2R 3 16 0 0 0
TLBWR 16 6R 3 16 0 0 0
TLT 0 50R 3 code code
TLTI 1 I 3 10
TLTIU 1 I 3 11
TLTU 0 51R 3 code code
TNE 0 54R 3 code code
TNEI 1 I 3 14
XOR 0 38R 0 0
XORI 14 I 0
表2
MIPS 32位浮点指令的分类
指令
操作码
函数
类型
Ring
FT/底数(Base)
FS
FD
偏移
格式
ABS.fmt 17 5R 0 0
ADD.fmt 17 0R 0
C.cond.fmt 17FC/cond R 0 0
CEILLfmt 17 10R 2 0
CEILW.fmt 17 14R 2 0
CVT.D.fmt 17 33R 2 0
CVT.L.fmt 17 37R 2 0
CVT.S.fmt 17 32R 2 0
CVT.W.fmt 17 36R 2 0
DIV.fmt 17 3R 0
DMFCI 17 0R 3 0 1
FLOOR.Lfmt 17 11R 2 0
FLOOR.W.fmt 17 15R 2 0
MOV.fmt 17 6R 0 0
MULfmt 17 2R 0
NEG.fmt 17 7R 0 0
ROUND.Lfmt 17 8R 0 0
ROUND.W.fmt 17 12R 0 0
SQRT.fmt 17 4R 2 0
TRUNC.Lfmt 17 9R 0 0
TRUNC.W.fmt 17 13R 0 0
如图所示,表1包括例示性十字段。第一字段被识别为指令字段,并识别出每条旧指令的汇编语言“助记”。操作码字段代表旧指令的操作码。函数字段用于整数指令格式和浮点指令格式指令的寄存器类型指令。例如,图16-20说明了MIPS微处理器的整数和浮点二进制指令格式。对于寄存器类型指令,函数字段被用作子操作码,并如与图4实例相关的描述那样,翻译成主处理器的函数字段,例如,0位至10位(参见图4)。因此,如图所示,对于ADDU指令,子操作码(即0位至10位)的十进制值为33。由此,在ADDU指令的情况下,此值33在函数字段中被识别出来。
类型字段与指令类型有关,例如,如图16-20中所示。表1和表2还包括一Ring字段。Ring字段对应于上文讨论的Ring类别。RS、RT和RD字段与旧寄存器有关,并识别与寄存器rs、rt和rd相关联的寄存器号。立即字段用于(例如)如图16所示的立即类型指令。最后,“Shamt”字段与(例如)如图17所示的旧指令的位移量有关。
表2列出了MIPS R4400 RISC微处理器的32位浮点指令。“指令”、“操作码”、“函数”、“类型”、“Ring”字段与表1相同。“FT/底数”和“偏移”字段用于(例如)如图19所示的立即类型浮点指令。FT、FS和FD字段是指浮印指令的寄存器号。
格式字段表示浮点值的大小和格式。表3说明了用于指定单精度和双精度IEEE 754浮点值以及单字和长字定点值(fixed point value)的有效格式字段代码。格式字段的其他值虽有可能,但仅用于指令解码。
格式代码(fmt字段) | 助记 | 大小 | 格式 |
16 | S | 单 | 二进制浮点 |
17 | D | 双 | 二进制浮点 |
18 | - | - | - |
19 | - | - | - |
20 | W | 单 | 32位二进制定点 |
21 | L | 长字 | 64位二进制定点 |
22-31 | - | - | - |
显然,根据前述内容,可对本发明进行许多更改和变化。因此,应了解,在所附权利要求的范畴内,可以以不同于上文具体描述的方式来实施本发明。
Claims (10)
1.一种用于模拟一具有一主微处理器的旧微处理器的指令的方法,其包括以下步骤:
(a)将一条或多条旧指令的目标码转换为具有等效函数的定义Ring 0指令的一条或多条主处理器指令的目标码。
(b)用所述Ring 0指令替换旧指令。
2.根据权利要求1所述的方法,还包括将与所述旧指令相关联的寄存器重新映射到相应的主寄存器的步骤。
3.根据权利要求1所述的方法,还包括利用定义Ring 1指令的多条主指令来替换一条或多条所述旧指令的步骤,该等主指令共同执行与一单一旧指令相同的函数。
4.根据权利要求3所述的方法,还包括利用利用定义Ring 2指令的多条主指令来替换一条或多条所述旧指令的步骤,该等主指令共同执行与一单一便笺式寄存器相同的函数,但是需要一个或多个便笺式寄存器。
5.根据权利要求4所述的方法,还包括模拟旧指令的步骤,所述旧指令仅可用一定义一Ring 3指令的高级语言来模拟。
6.根据权利要求5所述的方法,还包括为所述Ring 1指令提供一指令处理程序。
7.根据权利要求6所述的方法,还包括为所述Ring 2指令提供一指令处理程序。
8.根据权利要求7所述的方法,还包括为所述Ring 3指令提供一处理程序。
9.根据权利要求8所述的方法,其中,所述指令处理程序被映射到与所述Ring 0指令分开的独立地址空间。
10.根据权利要求9所述的方法,其中,所述被模拟的指令形成一包含Ring 0指令和无条件分支指令的指令流,流向用于所述Ring 1、Ring 2和Ring 3指令的指令处理程序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/382,598 US7219337B2 (en) | 2003-03-06 | 2003-03-06 | Direct instructions rendering emulation computer technique |
US10/382,598 | 2003-03-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1538291A true CN1538291A (zh) | 2004-10-20 |
Family
ID=32824783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2004100065163A Pending CN1538291A (zh) | 2003-03-06 | 2004-03-04 | 产生直接指令的模拟计算机技术 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7219337B2 (zh) |
EP (1) | EP1455273A3 (zh) |
JP (1) | JP4684571B2 (zh) |
KR (1) | KR20040079851A (zh) |
CN (1) | CN1538291A (zh) |
AU (1) | AU2004200602B2 (zh) |
CA (1) | CA2455479A1 (zh) |
RU (1) | RU2004106717A (zh) |
TW (1) | TWI350991B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126314A (zh) * | 2016-06-15 | 2016-11-16 | 龙芯中科技术有限公司 | 扩充指令的模拟方法和装置 |
CN106990939A (zh) * | 2015-10-30 | 2017-07-28 | Arm 有限公司 | 修改数据处理单元的行为 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7434209B2 (en) * | 2003-07-15 | 2008-10-07 | Transitive Limited | Method and apparatus for performing native binding to execute native code |
US7314491B2 (en) * | 2004-12-29 | 2008-01-01 | Bull Hn Information Systems Inc. | Encapsulation of large native operating system functions as enhancements of the instruction set in an emulated central processor system |
US8359585B1 (en) * | 2007-01-18 | 2013-01-22 | Advanced Testing Technologies, Inc. | Instrumentation ATS/TPS mitigation utilizing I/O data stream |
MX2009007876A (es) * | 2007-01-24 | 2009-07-31 | Ibm | Metodo para emular eficientemente configuraciones de codigos de condiciones de arquitectura de computadora. |
US8458677B2 (en) * | 2009-08-20 | 2013-06-04 | International Business Machines Corporation | Generating code adapted for interlinking legacy scalar code and extended vector code |
TWI420390B (zh) * | 2009-11-04 | 2013-12-21 | Nat Univ Chung Cheng | Methods for extending the RISC processor scratchpad |
WO2017009996A1 (ja) * | 2015-07-16 | 2017-01-19 | 三菱電機株式会社 | 情報処理装置、情報処理方法及びプログラム |
US10972460B2 (en) * | 2016-02-12 | 2021-04-06 | Industry-University Cooperation Foundation Hanyang University | Secure semiconductor chip and operating method thereof |
US9785435B1 (en) * | 2016-10-27 | 2017-10-10 | International Business Machines Corporation | Floating point instruction with selectable comparison attributes |
KR102351620B1 (ko) * | 2020-03-13 | 2022-01-19 | 우리정보 (주) | 모바일 기기를 이용한 지능형 설비관리 시스템 및 방법 |
CN114077424A (zh) * | 2020-08-14 | 2022-02-22 | 上海芯联芯智能科技有限公司 | 扩展mips指令集处理器支持risc指令集多模系统的方法和装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2253432A5 (zh) * | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
US4025901A (en) * | 1975-06-19 | 1977-05-24 | Honeywell Information Systems, Inc. | Database instruction find owner |
JPS62151938A (ja) * | 1985-12-25 | 1987-07-06 | Nec Corp | 命令処理方式 |
JPS63106836A (ja) * | 1986-10-24 | 1988-05-11 | Hitachi Ltd | 異ア−キテクチヤ・エミユレ−シヨン方式 |
JPH05181671A (ja) * | 1992-01-07 | 1993-07-23 | Kobe Nippon Denki Software Kk | ソフトウェア命令のエミュレーション方式 |
JPH08296910A (ja) * | 1995-04-25 | 1996-11-12 | Nippon Steel Corp | 圧縮気体冷媒による冷却水冷却方法 |
US5758140A (en) * | 1996-01-25 | 1998-05-26 | International Business Machines Corporation | Method and system for emulating instructions by performing an operation directly using special-purpose register contents |
US5925124A (en) * | 1997-02-27 | 1999-07-20 | International Business Machines Corporation | Dynamic conversion between different instruction codes by recombination of instruction elements |
US6272453B1 (en) | 1998-01-05 | 2001-08-07 | Trw Inc. | Concurrent legacy and native code execution techniques |
US6041402A (en) | 1998-01-05 | 2000-03-21 | Trw Inc. | Direct vectored legacy instruction set emulation |
US6212614B1 (en) | 1998-01-05 | 2001-04-03 | Trw Inc. | Legacy MIL-STD-1750A software emulator address translation using power PC memory management hardware |
US6202145B1 (en) * | 1998-12-14 | 2001-03-13 | International Business Machines Corporation | System and method for eliminating a ring transition while executing in protected mode |
JP2001092672A (ja) * | 1999-09-22 | 2001-04-06 | Toshiba Corp | 命令コード書き換え方法、命令コード書き換え装置及び情報記録媒体 |
JP2001142692A (ja) * | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法 |
US7100023B2 (en) * | 2001-08-23 | 2006-08-29 | Sony Computer Entertainment Inc. | System and method for processing complex computer instructions |
US7031990B2 (en) * | 2002-12-06 | 2006-04-18 | Sun Microsystems, Inc. | Combining external and intragenerational reference-processing in a garbage collector based on the train algorithm |
-
2003
- 2003-03-06 US US10/382,598 patent/US7219337B2/en not_active Expired - Lifetime
-
2004
- 2004-01-20 CA CA002455479A patent/CA2455479A1/en not_active Abandoned
- 2004-02-02 TW TW093102294A patent/TWI350991B/zh not_active IP Right Cessation
- 2004-02-17 AU AU2004200602A patent/AU2004200602B2/en not_active Ceased
- 2004-02-20 KR KR1020040011242A patent/KR20040079851A/ko not_active Application Discontinuation
- 2004-03-01 EP EP04002677A patent/EP1455273A3/en not_active Ceased
- 2004-03-04 CN CNA2004100065163A patent/CN1538291A/zh active Pending
- 2004-03-05 JP JP2004109500A patent/JP4684571B2/ja not_active Expired - Fee Related
- 2004-03-05 RU RU2004106717/09A patent/RU2004106717A/ru not_active Application Discontinuation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106990939A (zh) * | 2015-10-30 | 2017-07-28 | Arm 有限公司 | 修改数据处理单元的行为 |
CN106990939B (zh) * | 2015-10-30 | 2022-03-15 | Arm 有限公司 | 修改数据处理单元的行为 |
CN106126314A (zh) * | 2016-06-15 | 2016-11-16 | 龙芯中科技术有限公司 | 扩充指令的模拟方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
EP1455273A3 (en) | 2006-12-06 |
RU2004106717A (ru) | 2005-08-10 |
TW200428288A (en) | 2004-12-16 |
EP1455273A2 (en) | 2004-09-08 |
US20040177346A1 (en) | 2004-09-09 |
AU2004200602A1 (en) | 2004-09-23 |
AU2004200602B2 (en) | 2011-02-10 |
TWI350991B (en) | 2011-10-21 |
CA2455479A1 (en) | 2004-09-06 |
JP2004272922A (ja) | 2004-09-30 |
US7219337B2 (en) | 2007-05-15 |
JP4684571B2 (ja) | 2011-05-18 |
KR20040079851A (ko) | 2004-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1194292C (zh) | 具有改良的指令集体系结构的微处理器 | |
CN1538291A (zh) | 产生直接指令的模拟计算机技术 | |
CN1174313C (zh) | 多指令集的数据处理 | |
CN1094610C (zh) | 可以对复合操作数进行压缩操作和拆开操作的微处理器 | |
CN1302380C (zh) | 处理器和编译器 | |
CN1101019C (zh) | 数据序列产生方法及设备、转换方法及计算机 | |
CN1088214C (zh) | 用多指令集处理数据的器件和方法 | |
CN1153129C (zh) | 用于处理器定制操作的设备 | |
CN100339824C (zh) | 高效执行特长指令字的处理器和方法 | |
CN1293465C (zh) | Gui显示装置及光标或gui组件动画显示处理方法 | |
CN1570870A (zh) | 终极管道和最优重排技术 | |
CN1147813C (zh) | 生产数字信号处理器的方法 | |
CN1497435A (zh) | 处理器 | |
CN1228558A (zh) | 程序变换方法和程序变换系统 | |
CN1399736A (zh) | 用于处理器的转移指令 | |
CN1742257A (zh) | 基于识别寻址模式的双目的寄存器的数据预测机制 | |
CN1841328A (zh) | 脚本语言的自动机方法 | |
CN1482540A (zh) | 编译程序、编译程序装置和编译方法 | |
CN1664779A (zh) | 软件开发基础架构 | |
CN1912926A (zh) | 可中断图形处理单元处理多个程序的方法和图形处理单元 | |
CN1672150A (zh) | 用于软件原子化的视图 | |
CN1684058A (zh) | 处理器 | |
CN1758221A (zh) | 程序处理装置 | |
CN1869952A (zh) | 指令执行设备、调试方法、调试设备以及调试程序 | |
CN1115631C (zh) | 具有risc结构的八位微控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |