CN101601011B - 用于对计算机架构条件码设置进行有效仿真的方法和装置 - Google Patents

用于对计算机架构条件码设置进行有效仿真的方法和装置 Download PDF

Info

Publication number
CN101601011B
CN101601011B CN2008800035662A CN200880003566A CN101601011B CN 101601011 B CN101601011 B CN 101601011B CN 2008800035662 A CN2008800035662 A CN 2008800035662A CN 200880003566 A CN200880003566 A CN 200880003566A CN 101601011 B CN101601011 B CN 101601011B
Authority
CN
China
Prior art keywords
instruction
result
target machine
condition code
situation
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.)
Active
Application number
CN2008800035662A
Other languages
English (en)
Other versions
CN101601011A (zh
Inventor
R·科普兰德
P·多伊勒
C·哈尔
A·约翰森
A·希克
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=39241912&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN101601011(B) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101601011A publication Critical patent/CN101601011A/zh
Application granted granted Critical
Publication of CN101601011B publication Critical patent/CN101601011B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/3017Runtime instruction translation, e.g. macros
    • 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
    • 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)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Clamps And Clips (AREA)
  • Advance Control (AREA)

Abstract

提供了对源机器指令的仿真,其中,使用目标机器CPU条件码来生成仿真的条件码设置,而不使用、编码或者生成分支指令。

Description

用于对计算机架构条件码设置进行有效仿真的方法和装置
技术领域
本发明总体上涉及对计算机系统架构的仿真,并且具体地,本发明涉及用于处理在仿真过程中遇到的条件码设置的方法和系统。更具体地,本发明涉及提供指令序列,该指令序列在不使用来自目标结构的分支指令的情况下生成有效的条件码设置。 
背景技术
在实质上所有的现代数据处理系统中,各种操作(诸如,算术运算、逻辑运算甚至数据传输操作)的执行可以导致生成用于指示指令执行的输出状态的多个数据位。这些位通常被称作条件码。作为简单示例,在由于加数对于可用于结果的位数而言过大而导致溢出的算术加法之后,可以设置特殊的条件码设置。几乎每个指令的执行都涉及条件码的使用。 
在执行后会产生条件码变化的指令的经典示例是比较指令,如果操作数相等,则该指令将条件码设置为“0”,而如果第一操作数严格小于第二操作数,则设置为“1”,并且如果第一操作数严格大于第二操作数,则设置为“2”。比较指令表示条件码设置的原型使用(archetypical use)。 
出于多种原因,期望在具有不同可执行指令集的其他系统上对针对一种计算机架构设计的指令进行仿真。例如,在系统或者测试中可以使用仿真。还可以使用仿真来扩展一个数据处理系统的能力,从而使其能够处理针对另一系统编写的指令。本发明涉及指令仿真环境中的条件码设置的处理。尽管本发明的系统和方法广泛适用于存在有条件码的任何仿真方法,但是其特别适用于对z/架构进行仿真。然而,在此阐明的原理适用于任意源架构,并且适用于任何目 标架构。 
在本说明书所考虑的原理性仿真环境中,仿真软件的任务在于接收源架构的指令流以作为输入,并且根据该输入生成在目标架构上运行时会产生相同结果的指令流。这些结果包括各种条件码的设置,诸如符号、进位、溢出以及各种其他指示异常和机器状态的设置。应该注意,尽管仿真环境优选地在目标架构中得到硬件或者条件码元的设置,但是本发明还涉及如下情况:条件码被生成并存储在不同于目标机器中的条件码寄存器的位置。 
还应该特别注意,本发明有意避免了条件码生成的传统处理。通过对比较指令的简单考虑来提供该差异的示例。此指令将两个操作数进行比较,并且根据该比较的输出来设置两位的条件码。例如,如果两个操作数的比较确定它们是相同的,则将条件码设置为“0”。如果确定第一操作数严格小于第二操作数,则将条件码设置为“1”。最后,如果确定第一操作数大于第二操作数,则将条件码设置为“2”。在对比较指令进行仿真的传统方法中,结果是构建出包括有三个分支指令的指令序列。出于在下文中即将阐明的原因,不期望在目标架构指令流中存在分支指令。 
至少出于两个原因而不期望出现分支指令。特别地,应该注意,最为现代的数据处理架构包括称为“分支预测”的特征。在这些架构中,针对指令流在遇到分支指令之后将遵循的两个或者多个路径来进行猜想。如果做出了正确猜想,则一切正常,并且机器处理时间由此得到加速。然而,如果做出了错误猜想,则机器硬件必须退回所采取的路径,继而选择另一路径。此时可以看出,分支指令有碍于整体处理速度。由此可见,分支指令引入了在没有分支指令时不会出现的复杂性。此外,避免分支指令的第二个原因在于,应该注意,分支指令实际上消耗了上述分支预测资源,从而使这些资源无法用于处理器执行的其他指令流。由此,分支指令不但潜在地自身存在浪费,而且还剥夺了其他指令流的有限珍贵计算机资源。 
由此可见,仿真系统的设计者面临进退两难的选择:为了成功 地仿真条件码设置在目标架构中的生成,其需要分支指令;而同时由于分支的不利之处,又希望避免分支指令。当目标架构中的条件码生成和功能与源机器架构中差别很大时,这一问题尤其严重。 
特别应注意,对z/架构的机器状态进行仿真的计算机程序要处理多种修改条件码的z/架构指令。简言之,z/架构是其中的条件码设置通常与其他架构(尤其是历史上从相对简单的微处理器设计发展起来的那些架构)差别很大的架构的一个主要示例。另外,z/架构中对条件码设置的修改是普遍存在的。条件码设置的生成和使用通常是执行算术运算、逻辑运算或者比较运算的结果,在这些运算之后,一个或多个条件码基于结果或者其他因素而改变。在z/架构中条件码修改指令的普遍性、以及有时候这些指令的任意语法导致了对最终在目标架构上执行的指令流的复杂控制流。此控制流对所仿真的指令增加了相当大的空间开销和执行开销。本发明涉及更为有效地处理这一状况。尽管在此的方法和系统尤其适用于所谓的z/架构(该z/架构存在于本发明的受让人所制造并销售的大数据处理系统中),然而这绝不意味着其限于作为源指令供给基础的该z/架构。 
应该注意,本发明在两种上下文或者说模式下使用。在一种模式下,源计算机指令被转换为目标机器指令,以便随后执行。在另一种操作模式下,源指令被转换为目标指令以便立刻执行,这更类似于解释器操作。宽泛地讲,本发明包含这两种操作形式。 
发明内容
在一种用于对来自源机器的计算机指令进行仿真以便在目标机器上生成指令序列的方法中,本发明生成目标机器指令的序列,这些指令一起进行操作,以根据进位、符号和溢出码来直接计算目标机器条件码,而不使用来自所述目标机器的分支指令。直接计算避免了分支指令的使用(分支指令的缺点已在上文中阐明)。 
本发明提供了特定的指导性技术,并且从这些技术中获得多个序列,以便在针对z/架构的仿真二进制转换环境中有效地设置条件 码或者检测异常情况。这些技术特别地涉及使用PowerPC架构以及Intel IA32架构的状况来仿真z/架构的情况。相对于需要较多流控制的较为直接的方法来说,本发明的序列更为有效,并且通常更小。然而应该注意,本发明的原理、技术和方法不限于任何特定的目标机器架构。在此讨论的两个示例性架构仅仅是期望最大价值的最近的架构。 
通过本发明的技术还实现了其他特征和优点。在此详细描述了本发明的其他实施方式和方面,并且将其作为本发明要求保护的一部分。 
在此记载的本发明各种实施方式所满足的期望目的的列表并非暗示或者建议任何或者全部这些目的单独地或者整体上存在于本发明最为一般的实施方式或者其较为具体的任一实施方式中作为基本特征。 
附图说明
在说明书的结论部分中,特别地指出并且明确了要求保护的本发明的主题。然而,结合附图并且参考下文描述将最好地理解本发明(作为实践的组织和方法二者)及其其他目标和优点,在附图中: 
图1是表示在使用最多三个分支指令的仿真环境中的条件码设置的传统处理这一事实的流程图; 
图2是在计算机指令的仿真中避免分支指令的本过程的流程图; 
图3是示出使用本发明的环境示例的框图; 
图4是包含执行本发明方法的程序代码的典型计算机可读介质(例如所示出的压缩盘(CD))的俯视图;以及 
图5是示出了操作并使用本发明的环境的框图。 
具体实施方式
在此使用的用于导出序列的技术是为了实现非常短的一个或者两个指令序列片段,该指令序列片段设置结果寄存器或者临时寄存 器中的一个或者多个位,以区分条件码设置的每个可能输出。这些小代码片段通常操纵进位、符号以及溢出位,并且通过多数计算机架构上可用的、标准且通常高性能的移位、旋转和各种算术或者逻辑指令而联系为略微较大的序列。通过避免不太可能在硬件中得到优化的分支指令和较为复杂的指令两者,得到了非常有效的序列。 
在某些情况下,操纵PowerPC条件码寄存器本身来导出z/架构条件码设置是可行并且有效的。在这些情况下,使用PowerPC记录形式指令,并且得到的PowerPC条件寄存器由旋转和逻辑运算来操纵,以导出相应的z/架构条件码设置。 
下文中的示例是汇编器伪代码的形式,并且适用于可以操纵进位位(carry bit)且具有通常的移位/旋转/求反指令的多数架构。所使用的汇编器伪代码旨在详细,从而使暗含的语法清楚明了。在某些情况下,当用于实现特定操作的有效方式有可能根据不同架构而变化时,使用非标准的记忆法(mnemonics)。在下文的表中将更全面地解释这些非标准的记忆法。在每种情况下,将rX和rY命名为目标机器寄存器,而“b”是立即值(immediate value)。carry bit(进位位)是高阶比特位置的进位。 
表I 
 指令   描述
 get_bit rX,rY,b   rX中的最低有效位从rY中的位置b接收  位值(0或者1),并且将rX的其余位设  置为0
 get_sign_bit rX,rY   将来自rY中的符号位置于rX中,并且清  除rX的其余位
 double   将rY中的值加倍,并且将结果置于rX中
 set_bit_on_zero rX,rY   如果rY包含0,则将1置于rX中;否则,  将0置于rX中
 set_bit_on_not_zero rX, rY   如果rY包含非零值,则将1置于rX中;  否则,将0置于rX中
  add_to_carry rX,rY,rZ  rX=rY+rZ+进位位。还假设此操作基于加 法的结果来设置进位位
  add_set_carry  rX=rY+rZ,并且基于加法的结果来设置进 位位。类似的语法用于sub_set_carry(减 法)
  add_to_carry_immed  rX,rY,imm  rX=rY+imm+进位位。还假设此操作基于 加法的结果来设置进位位
  add_set_carry_immed  rX,rY,imm  rX=rY+imm,并且基于加法的结果来设置 进位位
  move_from_carry  rX=进位位
  flip_bit rX,rY,b  在rY的位置b的位值从0变成1或者从1 变成0,并且将全部改变的寄存器值置于 rX中
对于64位寄存器,位从0-63编号,而对于32位寄存器,位从0-31编号。0是最高位,而31或者63是最低位。在下文描述中,使用以下寄存器命名习惯: 
rA、rB:分别为赋值到寄存器中的z/架构指令的第一和第二操作数; 
rT:计算到寄存器中的z/架构指令的结果值; 
rX、rY、rZ:用于保存中间结果的临时寄存器; 
rC:在序列结束时保存条件码的寄存器。 
在下文中将列出并讨论通过这种技术导出的各种序列。如上文所述,比较指令是设置条件码的指令的原型示例。由此,在下文中提供对条件码设置进行仿真的序列。所提供的序列是在本发明的实践中所采取的典型方法。特别地,作为对象的源指令是称为“比较逻辑操作”的z/架构指令。该示例假设:rA和rB在64位环境是零扩展的(仅当比较指令对32位操作数进行操作时)。 
                                                    sub_set_carry 
       rC,rA,rB 
              set_bit_on_zero       rX,rC 
                                              set_bit_on_not_zero 
       rC,rC 
              add_to_carry_immed    rC,rC,0 
              sub                   rC,rC,rX 
表II 
Figure G2008800035662D00071
如上表所示,在执行“sub_set_carry”(指令[1])之后,寄存器rX的条件是不适用的。然而,目标机器中指令[1]的执行却设置了在CPU状态中的进位位,其可由之后的指令进行访问。这在表中的“进位”列中指示,其表示目标机器中的进位位标志。重点应该注意并且认识到,与目标机器中的多个其他标志位类似,在目标机器中,该进位位不是通过与源机器相同的方式或者在相同的条件下设置的。此时,用来设置寄存器位置rC中相应值的传统方法将使用如图1中所示的分支指令。这些传统方法以及本过程将进行操作,从而提供适当的进位位指示,以供仿真软件使用。 
对于指令[1],在rA>=rB的情况下,其执行将进位位(即,CPU进位位)设置为“1”;而在rA<rB的情况下,将进位位设置为“0”。另外,rC包含减法的结果,特别地其可以是“0”。上表中的条目“rC>0”、“rC=0”以及“rC<0”意味着提供结果状态的指示。在 指令[2](set_bit_on_zero)的执行之后,寄存器rC的状态未变,但是在两个操作数rA和rB相同的情况下,基于rC的内容(在此情况下将其限制为0或者不限制为0)而将rX的内容设置为“1”。指令[2]的执行不影响rC的内容。而且,指令[2]不影响CPU进位位。对于指令[3](set_bit_on_not_zero),无论rC是否为0(即,无论rA是否等于rB),都将rC设置为“1”。CPU进位位不受指令[3]的影响。由此,此时,如果rA>rB,或者如果rA<rB,则rC=1;但是如果rA=rB,则rC=0。注意,此时,设置rX以提供区别信息以区分相等和不相等,并且这发生在rC和CPU进位位二者的外部(即,与其分离)。 
继而,利用示出的自变量(rC、rC、0)来执行指令[4](add_to_carry_immed),其中“0”是立即操作数。对于示出的操作数,其执行操作:rC+“CPU进位位”+0。尽管其还可以设置CPU进位位,但是后续处理并不需要此结果。可见,在上文表II中,如果rA>rB,则rC的内容现在是“2”;如果rA=rB,则rC的内容是“1”,以及如果rA<rB,rC的内容也是“1”。在此阶段,相关的是,应该注意,在rC中提供了指示,用于指示rA>rB的情况不同于其他两种情况(rA=rB以及rA<rB)。 
利用操作数“rC、rC、rX”来执行指令[5](减法),其提供最后的步骤,在该步骤中从rC减去rX的内容(现在表示相等),以作为将rA=rB的情况区别于rA<rB的情况的机制,这是因为相等的情况会导致从“1”中减去“1”,并将结果“0”置于rC中。由此,在上文示出的指令序列结束时,获得如下结果:如果rA>rB,则rC=2;如果rA<rB,则rC=1;以及如果rA=rB,则rC=0。 
以此方式,则可见在没有执行分支指令的情况下获得对条件码设置的期望仿真结果。上文给出的概念同样适用于产生条件码改变的任何源指令的仿真。尽管上述示例特别地涉及进位位的设置,但其同样适用于其他目标架构条件码位,诸如符号位和溢出位。 
作为应用本发明从而在仿真环境中提供条件码生成的另一示 例,下面将考虑Add逻辑(32位)和Add逻辑(64位)指令。如同上述比较逻辑示例,假定对于Add逻辑(32位)的64位目标架构环境,rA和rB是零扩展的。下文是伪汇编代码形式的序列,该序列在处理结束时提供rC位置中的正确设置。在下文中,c是进位位。 
add_set_carry rT,rA,rB 
move_from_carry rC 
double rC 
set_bit_on_not_zero rX,rT 
or rC,rC,rX 
Figure G2008800035662D00091
总体上,该过程具有如下步骤,其中任何步骤都不使用或者执行任何分支指令。首先,执行目标机器的架构中的指令(图2中的步骤100),其以如下方式模拟源指令流中存在的指令:设置一个或者多个目标CPU标志位,并将结果置于仿真器可访问的存储位置(第一位置,诸如上述rC)。接着,执行指令(步骤105),其使用该结果来设置仿真器控制的其他存储位置(第二位置,诸如上述rX)中的一个或者多个位,以区分一个或者多个情况结果。接着,使用上述结果来将其自身重置(步骤110)为较短的位配置(上述示例中的一个位),这也用于区分一个或者多个情况结果。接着,执行指 令(步骤115),该指令使用第一存储位置来生成区分情况结果的不同集合的结果。最后,执行目标机器指令(步骤120),其使用第一位置和第二位置中的结果在仿真器可访问的两个指令之一中提供指示,其中至少区分三种情况。 
更为一般地,本过程涉及这样的仿真方法,其不使用目标机器分支指令,而是使用如下目标机器指令,这些指令的执行导致以如下方式来控制在随后执行的非分支指令中使用的目标机器条件码:其用来区分一个或者多个结果状态,而该结果状态可以从仿真器可以用作条件码仿真位置的位置中获得。 
应该注意,在此记载的过程旨在涵盖以下二者:生成将在目标机器上执行指令的适当序列,以及在目标机器上实际执行这些指令,而不考虑执行是在生成源指令序列时立即进行(如同“解释”环境中那样),还是实际执行在必要的情况下稍后进行(如同在“类编译”环境中那样)。 
无论哪种情况,在图3中示出了本发明操作于其中的环境。本发明在数据处理环境中操作,其有效地包括图3中示出的一个或者多个计算机元件。具体地,计算机500包括中央处理单元(CPU)520,其访问存储在随机访问存储器510中的程序和数据。存储器510通常实质上是易失性的,因此为这种系统提供有非易失性存储器,其形式通常是可旋转的磁性存储器540。尽管存储器540优选地是非易失性磁性设备,但其也可以使用其他介质。CPU 530通过输入/输出单元530来与控制台(例如,终端550)处的用户进行通信。终端550通常是成千上万种控制台中的一种,其通过一个或者多个I/O单元530来与计算机500进行通信。特别地,将控制台单元550示为包括用于读取一个或者多个类型的介质的设备,诸如图5所示的CD-ROM 600。在图4中示出的示例中,媒体600包括任何方便设备,其中包括但不限于磁性媒体、光学存储设备以及诸如闪存设备或者所谓拇指设备的芯片。盘600也表示更为通用的分布介质,其形式是电信号,用来传输表示在此讨论的指令码的数据位。尽管此类传 输信号实质上可以是临时的,该传输信号仍然构成承载已编码指令位的物理介质,并且旨在于在信号的一个或者多个目的地处被持久性捕获。 
在图5中示出了其中可以使用本发明的典型仿真环境。仿真器(诸如320)接收输入指令流305,其表示被设计用于在源机器300上进行操作机器指令或者汇编语言指令。仿真器320使用目标机器310中的存储器315来生成能够在目标机器310上执行的指令流。尽管图5具体地示出了在仿真环境中的操作,但是还应该注意,本发明旨在包含以下情况:仿真器320实质上作为解译器来操作,其不是仅将指令转换至新的架构,而是实质上可以同时执行该指令。 
尽管在此根据本发明的特定优选实施方式来详细描述了本发明,本领域技术人员在此可以进行多种修改和变化。由此,旨在于由所附权利要求书来涵盖落入本发明的真实精神和范围的所有此类修改和变化。 

Claims (10)

1.一种用于对来自源机器的计算机指令进行仿真从而在目标机器上生成指令序列的方法,所述方法生成目标机器指令序列,所述目标机器指令一起进行操作,从而在不包括来自所述目标机器的分支指令的情况下,根据进位、符号和溢出码来直接计算目标机器条件码,所述方法包括步骤:
通过设置一个或者多个目标CPU标志位的方式来模拟源指令流中存在的指令,并将结果置于第一存储位置;
执行如下指令,所述指令使用所述结果来设置第二存储位置中的至少一个位,以区分一个或者多个情况结果;
使用所述结果将所述结果自身重置为较短的位配置,所述较短的位配置用于区分所述情况结果中的至少一个;
执行如下指令,所述指令使用所述第一存储位置来生成区分不同情况结果集合的结果;以及
执行如下指令,所述指令使用所述第一存储位置中的所述结果和所述第二存储位置中用以区分一个或者多个情况结果的所述至少一个位来提供指示,其中对至少三种情况进行区分,所述情况表示所述源机器的条件码。
2.根据权利要求1所述的方法,其中在非分支指令序列中执行目标机器条件码的所述计算,所述非分支指令操纵在所述目标机器自身中生成的条件码设置,以便在目标机器位置中生成相同的条件码。
3.根据权利要求2所述的方法,其中所述操纵使用临时位置来存储中间结果。
4.根据权利要求1所述的方法,进一步包括执行所述生成的目标机器指令序列的步骤。
5.根据权利要求4所述的方法,其中所述执行与所述生成同时进行。
6.一种用于对来自源机器的计算机指令进行仿真从而在目标机器上生成指令序列的系统,所述系统生成目标机器指令序列,所述目标机器指令一起进行操作,从而在不包括来自所述目标机器的分支指令的情况下,根据进位、符号和溢出码来直接计算目标机器条件码,所述系统包括:
配置为通过设置一个或者多个目标CPU标志位的方式来模拟源指令流中存在的指令,并将结果置于第一存储位置的模块;
配置为执行如下指令的模块,所述指令使用所述结果来设置第二存储位置中的至少一个位,以区分一个或者多个情况结果;
配置为使用所述结果将所述结果自身重置为较短的位配置的模块,所述较短的位配置用于区分所述情况结果中的至少一个;
配置为执行如下指令的模块,所述指令使用所述第一存储位置来生成区分不同情况结果集合的结果;以及
配置为执行如下指令的模块,所述指令使用所述第一存储位置中的所述结果和所述第二存储位置中用以区分一个或者多个情况结果的所述至少一个位来提供指示,其中对至少三种情况进行区分,所述情况表示所述源机器的条件码。
7.根据权利要求6所述的系统,其中在非分支指令序列中执行目标机器条件码的所述计算,所述非分支指令操纵在所述目标机器自身中生成的条件码设置,以便在目标机器位置中生成相同的条件码。
8.根据权利要求7所述的系统,其中所述操纵使用临时位置来存储中间结果。
9.根据权利要求6所述的系统,进一步包括配置为执行所述生成的目标机器指令序列的模块。
10.根据权利要求9所述的系统,其中所述执行与所述生成同时进行。
CN2008800035662A 2007-01-30 2008-01-22 用于对计算机架构条件码设置进行有效仿真的方法和装置 Active CN101601011B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/668,623 2007-01-30
US11/668,623 US8713289B2 (en) 2007-01-30 2007-01-30 Efficiently emulating computer architecture condition code settings without executing branch instructions
PCT/EP2008/050725 WO2008092776A1 (en) 2007-01-30 2008-01-22 Method for efficiently emulating computer architecture condition code settings

Publications (2)

Publication Number Publication Date
CN101601011A CN101601011A (zh) 2009-12-09
CN101601011B true CN101601011B (zh) 2012-07-25

Family

ID=39241912

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008800035662A Active CN101601011B (zh) 2007-01-30 2008-01-22 用于对计算机架构条件码设置进行有效仿真的方法和装置

Country Status (10)

Country Link
US (1) US8713289B2 (zh)
JP (1) JP4662087B2 (zh)
KR (1) KR101171423B1 (zh)
CN (1) CN101601011B (zh)
BR (1) BRPI0806390B1 (zh)
CA (1) CA2675635C (zh)
IL (1) IL198613A0 (zh)
MX (1) MX2009007876A (zh)
TW (1) TWI423126B (zh)
WO (1) WO2008092776A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9274797B2 (en) 2012-12-19 2016-03-01 International Business Machines Corporation Computer processor with instruction for execution based on available instruction sets
AU2016396782B2 (en) 2016-03-11 2021-07-22 Lzlabs Gmbh Load module compiler

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1164704A (zh) * 1996-02-15 1997-11-12 太阳微系统有限公司 在具有相应精确异常处理机构的数字计算机上的延迟异常仿真
US5774694A (en) * 1996-09-25 1998-06-30 Intel Corporation Method and apparatus for emulating status flag
US6049864A (en) * 1996-08-20 2000-04-11 Intel Corporation Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor
CN1270348A (zh) * 1998-10-21 2000-10-18 富士通株式会社 用于结构仿真的动态优化目标码翻译器和翻译方法
EP1455273A2 (en) * 2003-03-06 2004-09-08 Northrop Grumman Corporation Emulation of microprocessor instructions

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58195963A (ja) 1982-05-12 1983-11-15 Hitachi Ltd デ−タ処理装置
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
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
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5903760A (en) 1996-06-27 1999-05-11 Intel Corporation Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA
US6807625B1 (en) * 2000-02-18 2004-10-19 Hewlett-Packard Development Company, L.P. Method and apparatus for efficiently generating, storing, and consuming arithmetic flags between producing and consuming macroinstructions when emulating with microinstructions
US20030093649A1 (en) 2001-11-14 2003-05-15 Ronald Hilton Flexible caching of translated code under emulation
US7331040B2 (en) * 2002-02-06 2008-02-12 Transitive Limted Condition code flag emulation for program code conversion
JP2004152201A (ja) 2002-11-01 2004-05-27 Mitsubishi Electric Corp プロセッサ装置
GB0315350D0 (en) * 2003-06-28 2003-08-06 Transitive Ltd Method and apparatus for the emulation of high precision floating point instructions
US7676797B2 (en) 2005-01-31 2010-03-09 Computer Associates Think, Inc. System and method for managing long names in an application programming interface

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1164704A (zh) * 1996-02-15 1997-11-12 太阳微系统有限公司 在具有相应精确异常处理机构的数字计算机上的延迟异常仿真
US6049864A (en) * 1996-08-20 2000-04-11 Intel Corporation Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor
US5774694A (en) * 1996-09-25 1998-06-30 Intel Corporation Method and apparatus for emulating status flag
CN1270348A (zh) * 1998-10-21 2000-10-18 富士通株式会社 用于结构仿真的动态优化目标码翻译器和翻译方法
EP1455273A2 (en) * 2003-03-06 2004-09-08 Northrop Grumman Corporation Emulation of microprocessor instructions

Also Published As

Publication number Publication date
BRPI0806390B1 (pt) 2019-08-06
WO2008092776A1 (en) 2008-08-07
MX2009007876A (es) 2009-07-31
CA2675635C (en) 2016-03-15
JP2010517154A (ja) 2010-05-20
KR101171423B1 (ko) 2012-08-06
US8713289B2 (en) 2014-04-29
CN101601011A (zh) 2009-12-09
TWI423126B (zh) 2014-01-11
CA2675635A1 (en) 2008-08-07
KR20090115119A (ko) 2009-11-04
JP4662087B2 (ja) 2011-03-30
IL198613A0 (en) 2010-02-17
TW200844852A (en) 2008-11-16
BRPI0806390A2 (pt) 2011-09-06
US20080184014A1 (en) 2008-07-31

Similar Documents

Publication Publication Date Title
CN110036368B (zh) 用于执行算术运算以累加浮点数的装置及方法
Davies Computer programming in quantitative biology
Hill et al. Digital systems: hardware organization and design
Warren Hacker's delight
US4228498A (en) Multibus processor for increasing execution speed using a pipeline effect
US9424037B2 (en) Instructions and functions for evaluating program defined conditions
US9262161B2 (en) Tracking multiple conditions in a general purpose register and instruction therefor
CN102947794A (zh) 用于处理器功能查询的功能虚拟化设施
CN104919416A (zh) 用于提供矢量地址冲突检测功能的方法、装置、指令和逻辑
US20200233668A1 (en) Systems and methods for controlling machine operations
CN102906700A (zh) 用于阻止虚拟处理器的多功能指令的指令功能的功能虚拟化工具
US7613912B2 (en) System and method for simulating hardware interrupts
US10209958B2 (en) Reproducible stochastic rounding for out of order processors
CN107851007B (zh) 宽数据类型的比较的方法和装置
Hyde The art of assembly language
KR20010001022A (ko) 병렬 프로세서를 위한 무순서 명령어 발행 방법 및 장치
CN101601011B (zh) 用于对计算机架构条件码设置进行有效仿真的方法和装置
US6021487A (en) Method and apparatus for providing a signed integer divide by a power of two
US11526357B2 (en) Systems and methods for controlling machine operations within a multi-dimensional memory space
Djordjevic et al. Evaluation of some proposed name-space architectures using ISPS
JPH1196001A (ja) プログラム実行装置及びプログラム変換方法
JPH04353923A (ja) 電子計算機の並列命令実行方式
Kaisler Birthing the Computer: From Drums to Cores
Hersh et al. A Little-Known History: The Polish Computer Industry
Reitwiesner The first operating system for the EDVAC

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant