CN110325966A - 用于仿真的算术惰性标志表示 - Google Patents

用于仿真的算术惰性标志表示 Download PDF

Info

Publication number
CN110325966A
CN110325966A CN201880013197.9A CN201880013197A CN110325966A CN 110325966 A CN110325966 A CN 110325966A CN 201880013197 A CN201880013197 A CN 201880013197A CN 110325966 A CN110325966 A CN 110325966A
Authority
CN
China
Prior art keywords
state variable
integer value
instruction
host
arithmetic
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
Application number
CN201880013197.9A
Other languages
English (en)
Inventor
D·J·米霍克卡
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN110325966A publication Critical patent/CN110325966A/zh
Pending legal-status Critical Current

Links

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/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/3001Arithmetic instructions
    • 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/30094Condition code generation, e.g. Carry, Zero 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

在用于仿真的算术惰性标志表示的各方面中,主机处理器系统接收被设计用于由客户处理器系统执行的应用指令,该客户处理器系统不同于主机处理器系统的处理器架构。主机仿真器接收包括算术运算的应用指令,确定对整数值执行的算术运算的结果值,并且确定第一状态变量和第二状态变量。主机仿真器还确定后续应用指令是否需要部分基于第三状态变量的算术标志子集的得出。然后,主机仿真器可以确定后续应用指令不需要算术标志子集的得出,并且执行后续应用指令而不需要确定第三状态变量,从而减少用于仿真应用指令的处理器时钟周期。

Description

用于仿真的算术惰性标志表示
背景技术
计算设备依赖于处理器以运行应用和执行其他任务。应用开发人员通常将其应用设计为由特定类型的处理器架构运行。因为不同的计算设备通常实现不同的处理器架构,所以当为一个处理器架构设计的应用由实现另一处理器架构的计算设备运行时会出现问题。例如,实现基于x86的处理器架构的主机计算设备在尝试执行客户应用或操作系统的算术指令(诸如被设计为由除了主机的基于x86的处理器架构以外的处理器架构运行的应用)时会遇到问题。出现这些问题是因为一个处理器架构中的算术标志通常不直接映射到不同处理器架构的算术标志。
作为传统解决方案,主机计算设备使用仿真器,仿真器将客户应用的指令转换为可以由主机处理器架构运行的基于x86的指令。但是,仿真器转换需要附加的时钟周期来计算,从而当为客户处理器架构设计的应用在主机处理器架构上运行时引入了速度减慢。传统的仿真器技术实现“惰性(lazy)标志”以仿真不同处理器架构之间的算术标志。然而,即使当正确执行客户应用不需要这些算术标志时,这些传统的仿真器技术也会由于仿真算术标志而浪费时钟周期。由于算术标志仿真在运行应用时经常发生,因此传统的仿真技术会导致不必要的延迟并且降低仿真应用的预期性能。
发明内容
本“发明内容”介绍了用于仿真的算术惰性标志表示的特征和概念,其在下面的“具体实施方式”中进一步描述和/或在附图中示出。本“发明内容”不应当被视为描述所要求保护的主题的必要特征,也不应当用于确定或限制所要求保护的主题的范围。
描述了用于仿真的算术惰性标志表示。在各方面,实现主机处理器架构的主机系统接收指令集以便启动和运行为与主机处理器架构不同的客户处理器架构而设计的应用或操作系统,使得系统需要仿真来执行指令集。指令集中的每个客户指令包括第一整数值、第二整数值和要对第一整数值和第二整数值执行的算术运算。主机系统的仿真器对第一整数值和第二整数值执行算术运算以生成算术结果。使用第一整数值、第二整数值和算术结果,主机仿真器确定第一状态变量、第二状态变量和可选的第三状态变量。三个状态变量包括描述执行算术运算的结果的信息,并且可以由主机仿真器用来在执行算术运算之后得出描述处理器状态的算术标志。具体地,第三状态变量可以用于得出基于x86的处理器系统架构的进位标志、溢出标志和调节标志。
主机仿真器以每个状态变量一个处理器时钟周期的速率确定第一状态变量、第二状态变量和第三状态变量中的每个。然而,因为客户指令通常需要不频繁地得出进位标志、溢出标志和调节标志,所以如果在执行每个客户指令之后确定三个状态变量中的每个,则主机仿真器将经常浪费宝贵的时钟周期。因此,本文中描述的技术在确定第三状态变量之前确定一组多个客户指令中的后续客户指令是否需要得出进位标志、溢出标志或调节标志。如果主机仿真器确定后续客户指令不需要得出这些算术标志,则主机仿真器继续执行后续客户指令而不首先确定第三状态变量,从而将仿真客户指令所需要的时间量减少了一个时钟周期。因此,本文中描述的算术惰性标志表示技术显著减少了启动和运行仿真应用、操作系统等所需要的时钟周期数。
附图说明
参考以下附图描述用于仿真的算术惰性标志表示的各方面。附图中表示的实体可以指示一个或多个实体,因此可以在讨论中将单个或多个形式的实体互换地引用。可以始终使用相同的数字来引用附图中所示的相似特征和组件:
图1示出了根据本文中描述的技术的用于仿真的算术惰性标志表示的示例系统。
图2示出了可以实现用于仿真的算术惰性标志表示的各方面的示例系统。
图3示出了根据本文中描述的技术的用于仿真的算术惰性标志表示的示例方法。
图4示出了具有可以实现如本文中描述的用于仿真的算术惰性标志表示的示例设备的示例系统。
具体实施方式
描述了用于仿真的算术惰性标志表示的各方面,以用于仿真被设计用于由一个处理器系统架构执行的算术指令,这些算术指令要由不同的处理系统架构执行,使得应用或操作系统可以由处理器系统运行,即使应用或操作系统没有被设计为由该处理器系统运行。如本文所述,执行仿真的处理器系统被称为“主机处理器系统”。由主机处理器系统接收和仿真的指令被称为“客户指令”,其被设计为在与主机处理器系统的架构不同的客户处理器系统架构上运行。
在实现中,客户指令需要使用存储在处理器系统的某些存储器位置中的信息。例如,当由运行应用的计算设备执行应用的算术运算时,计算设备存储包含执行算术运算的结果的信息。在应用运行时,后续应用指令需要使用包含算术运算的结果的信息,以便正确执行后续应用指令。因此,应用指令通常需要计算设备查询特定存储器位置以在执行某些指令时使用。
然而,因为不同的处理器系统架构被不同地设计,所以客户处理器系统中的存储器位置不一定与主机处理器系统中的存储器位置直接相对应。例如,诸如基于x86的处理器系统、基于Power-PC的处理器系统、基于高级精简指令集计算机机器(ARM)的处理器系统等处理器系统架构不实现存储器位置的相同底层架构。由于成本问题、应用的源代码、操作系统等被设计为在一个特定的处理器系统架构上运行。源代码包含必须由处理器系统正确执行以便应用、操作系统等能够在处理器系统上正确启动和运行的指令序列。因为为客户处理器系统设计的应用指令可能需要使用存储在主机处理器系统中不存在的存储器位置中的信息,所以实现主机处理器系统的设备不能运行应用,除非该应用是专门为主机处理器系统设计的。
例如,在基于x86的处理器系统架构中,处理器系统包括存储在存储器中的标志寄存器。标志寄存器包含描述处理器系统执行的算术运算的结果的信息。在基于x86的处理器系统中,在标志寄存器的各个位中存储有用于表征算术运算的结果的标志。例如,标志寄存器包括位6中的“零标志”、位7中的“符号标志”、位2中的“奇偶校验标志”、位0中的“进位标志”、位11中的“溢出标志”、位4中的“调节标志”等。因此,基于x86的处理器系统中的标志寄存器的位包含处理器系统的当前状态。相反,基于Power-PC的处理器系统架构包括存储在存储器中的用于包含描述所执行的算术运算的结果的信息的条件寄存器。条件寄存器包括8个字段,每个字段是用于存储关于应用或操作系统指令的结果的状态信息的4个位的段。因此,PowerPC条件寄存器的段不能直接映射到x86标志寄存器的位。
继续该示例,经常为基于x86的应用设计的指令需要使用描述先前算术运算的结果的信息,该信息存储在标志寄存器的标志中。相反,基于PowerPC的应用的指令需要使用描述存储在条件寄存器的位中的先前算术运算的结果的信息。因此,仿真为客户的基于PowerPC的处理器系统架构设计的应用的客户指令的主机的基于x86的处理器系统架构需要存储描述执行算术运算的结果的信息,以在执行后续客户指令时使用。
生成和使用进位标志的示例是执行无进位加法(ADD)指令,后跟有进位加法(ADC)指令,诸如当32位代码执行64位算术作为32位ADD,并且使用ADC指令将进位标志传播到数字的高32位部分。ADD指令生成所有6个基于x86的处理器标志,ADC指令消耗进位标志,然后自己再次生成所有6个基于x86的处理器标志。如上所述,算术标志集包括零标志、符号标志、奇偶校验标志、进位标志、溢出标志和调节标志。生成和使用进位标志的其他示例包括常见的“比较和分支序列”,“比较和分支序列”涉及比较(CMP)或减法(SUB)指令,后跟条件分支,诸如JZ(如果为零则跳转)或JNZ(如果不为零则跳转)或JC(如果进位则跳转)。在CMP或SUB指令后跟JZ的情况下,本文中描述的优化技术提供了不需要计算第三状态变量,因为零标志是消耗的标志,而不是进位标志。但是,如果JC是指令,则需要计算第三状态变量,但由于JZ/JNZ指令比JC/JNC指令更常见,因此当指令为JZ/JNZ指令时,优化技术可以节省时钟周期。
使用本文中描述的技术,主机处理器系统使用主机仿真器仿真为客户处理器系统设计的应用的客户指令。主机仿真器通过以下方式来仿真客户指令:执行由客户指令指定的算术运算,并且在存储在主机处理器系统的存储器内的惰性标志寄存器中的三个不同“状态变量”中记录描述算术运算的结果的信息。使用这三个不同的状态变量,主机仿真器可以得出描述算术运算的结果的信息,诸如得出将由基于x86的标志寄存器的零标志、符号标志、奇偶校验标志、进位标志、溢出标志和调节标志指示的信息。具体地,本文中描述的技术将描述算术运算的结果的所有信息存储在主机处理器系统上的惰性标志寄存器的第一状态变量和第二状态变量中。标志寄存器的第三状态变量包含可以用于得出由执行算术运算而产生的某些算术标志的信息,包括基于x86的进位标志、溢出标志和调节标志。
主机仿真器在执行算术运算之后确定三个状态变量的速度由主机处理系统的速度控制,因为主机仿真器以每状态变量一个时钟周期的速率确定三个状态变量中的每个。因此,减少在仿真客户应用指令时由主机仿真器使用的时钟周期数是有利的。因为后续应用指令并不总是需要得出进位标志、溢出标志或调节标志以便正确执行后续应用指令,所以如果主机处理器系统在执行一组多个应用指令中的每个应用指令之后确定第三状态变量,则它将不必要地浪费时钟周期。
因为在执行应用期间得出进位标志、溢出标志或调节标志比得出诸如零标志、符号标志和奇偶校验标志等其他算术标志发生得少得多,所以除非后续应用指令需要得出进位标志、溢出标志或调节标志,否则本文中描述的技术不要确定第三状态变量。因此,本文中描述的技术提供了在主机处理器系统上运行的客户应用的更快仿真。
虽然使用算术惰性标志表示的仿真的特征和概念可以在任何数目的不同设备、系统、网络、环境和/或配置中实现,但是用于仿真的算术惰性标志表示的各方面在以下示例设备、系统和方法的上下文中描述。
图1示出了示例系统100,其中主机仿真器102仿真客户指令104,客户指令104被设计为在客户处理器系统架构上执行,该客户处理器系统架构不同于实现主机仿真器102的主机处理器系统架构。如本文所述,客户指令104包括要使用第一整数值108和第二整数值110执行的算术运算106,第一整数值108可以在数学上表示为“A”,第二整数值110可以在数学上表示为“B”。算术运算106可以是为了在处理器系统上启动或运行应用、操作系统等而执行的任何算术运算。
例如,算术运算106可以是加法运算或减法运算。第一整数值108和第二整数值110可以是任何位长整数的值,诸如1位整数、8位整数、16位整数、32位整数、64位整数等。此外,第一整数值108和第二整数值110可以是有符号整数值或无符号整数值。如本文所述,有符号整数值可以包括正整数值或负整数值。相反,无符号整数值只能包括正整数值。
客户指令104表示需要正确执行以便正确启动和运行应用或操作系统的应用或操作系统的一组多个指令中的一个指令。在实现中,由主机仿真器102接收的后续客户指令可能需要使用描述对第一整数值108和第二整数值110执行算术运算106的结果的信息。因此,除了执行算术运算106之外,主机仿真器102被配置为确定三个不同的状态变量,这些状态变量包含描述使用第一整数值108和第二整数值110执行的算术运算106的结果的信息。
主机仿真器102可以确定这三个状态变量的速率受到实现主机仿真器102的主机处理器系统的处理器时钟速度的约束。在实现中,主机仿真器被配置为以每个状态变量一个时钟周期的速率确定三个状态变量。这些时钟周期在示例系统100中通过第一时钟周期112、第二时钟周期114和第三时钟周期116在视觉上表示。在三个时钟周期112、114和116中的每个期间,主机仿真器102被配置为确定可以用于描述执行算术运算106的结果的各种信息。
例如,在第一时钟周期112期间,主机仿真器102使用第一整数值108和第二整数值110来执行算术运算106以确定算术运算结果118、第一状态变量120和子表达式122。在第二时钟周期114期间,主机仿真器102确定第二状态变量124。最后,在第三时钟周期期间,主机仿真器102确定第三状态变量126。如下面进一步详细描述的,确定第二状态变量124需要知道算术运算结果118和子表达式122,使得在确定算术运算结果118和子表达式122之前不能确定第二状态变量124的确定。类似地,确定第三状态变量126需要知道第一状态变量120和第二状态变量124,使得在确定第二状态变量124之前不能确定第三状态变量126的确定。在确定第一状态变量120、第二状态变量124和第三状态变量126之后,主机仿真器102完成算术运算106的仿真,算术运算106的结果产生状态变量120、124和126,使得主机仿真器102能够根据需要或“惰性地”得出算术标志。
为了进一步说明主机仿真器102如何确定状态变量120、124和126中的每个,考虑以下示例,其中主机仿真器102接收客户指令104,该客户指令104包括要对第一整数值“A”和第二整数值“B”执行的算术加法运算。在该示例中,主机仿真器102使用等式(1)确定被表示为“S”的算术运算结果118:
S=A+B
主机仿真器102将算术运算结果118存储在实现主机仿真器102的计算设备的存储器中以供将来检索。主机仿真器102通过使用第一整数值108和第二整数值110执行逻辑与运算来确定第一状态变量120,如等式(2)所示:
第一状态变量120=(A&B)
主机仿真器102将第一状态变量120存储在实现主机仿真器的计算设备的存储器中以供将来检索。主机仿真器102通过使用第一整数值108和第二整数值110执行逻辑异或(XOR)运算来确定子表达122,如等式(3)所示:
子表达式122=(A^B)
主机仿真器102将子表达式122存储在实现主机仿真器102的计算设备的存储器中以供将来检索并且用于在确定第二状态变量124时使用。在单个处理器时钟周期期间,诸如在第一时钟周期112期间,主机仿真器102确定算术运算结果118、第一状态变量120和子表达式122。在确定算术运算结果118、第一状态变量120和子表达式122之后,主机仿真器102确定第二状态变量124。第二状态变量124通过以下方式来确定:执行应用于算术运算结果118以产生NOT值(该NOT值可以在数学上表示为“~S”)的逻辑NOT运算,并且执行应用于所产生的NOT值和子表达式122的逻辑AND运算,如等式(4)所示:
第二状态变量124=(~S&(A^B))
主机仿真器102将第二状态变量124存储在实现主机仿真器102的计算设备的存储器中以供将来检索并且用于在确定第三状态变量126时使用。在确定第二状态变量124之后,主机仿真器102通过使用第一状态变量和第二状态变量执行逻辑XOR运算来确定第三状态变量126,如等式(5)所示:
第三状态变量126=(A&B)^(~S&(A^B))
主机仿真器102将第三状态变量126存储在实现主机仿真器102的计算设备的存储器中以供将来检索。因此,在确定第一状态变量120、第二状态变量124和第三状态变量126之后,主机仿真器能够在执行客户指令104之后惰性地得出描述处理器状态的信息,诸如得出由于使用第一整数值108和第二整数值110执行算术运算106而产生的算术标志。例如,如果实现主机仿真器102的设备是基于x86的处理器系统,则主机仿真器102能够使用算术运算结果118、第一状态变量120、第二状态变量124和第三状态变量126惰性地得出零标志、符号标志、奇偶校验标志、进位标志、溢出标志和调节标志。
主机仿真器102可以简单地从算术运算结果118得出零标志、符号标志和奇偶校验标志,在数学上表示为“S”。主机仿真器102通过将逻辑等于运算符应用于算术运算结果118和零值来得出零标志,如等式(6)所示:
零标志=(S==0)
因此,主机仿真器102将得出,已经响应于算术运算结果118等于零而设置了零标志。主机仿真器102通过将逻辑小于运算符应用于算术运算结果和零值来得出符号标志,如等式(7)所示:
符号标志=(S<0)
因此,主机仿真器102将得出,已经响应于算术运算结果118具有小于零的值而设置了符号标志。主机仿真器通过执行表查找以确定算术运算结果118的二进制表示中的设置位的数目是奇数还是偶数,来得出奇偶校验标志,如等式(8)所示:
奇偶校验标志=(位的计数(S&255)&1==0)
在等式8中,“S&255”表示用于在执行表查找时使用的索引。因此,因为零标志、符号标志和奇偶校验标志可以从算术运算结果118得出,所以主机仿真器102存储算术运算结果118并且仅在必要时得出零标志、符号标志或奇偶校验标志以避免不必要地消耗得出这些算术标志所需要的时钟周期。在实现中,主机仿真器102被配置为通过将存储器中的算术运算结果118定义为对第一整数值108和第二整数值110执行算术运算106的符号扩展结果“S”来存储算术运算结果118。
为了确定是否设置了进位标志、溢出标志或调节标志,主机仿真器102从第三状态变量126得出进位标志、溢出标志和调节标志。主机仿真器102通过将逻辑小于符号应用于第三状态变量126和零值来从第三状态变量得出进位标志,如等式(9)所示:
进位标志=((A&B)^(~S&(A^B)))<0
因此,如果第三状态变量126包含小于零的值,则主机仿真器102将得出,已经响应于执行客户指令104而设置了进位标志。主机仿真器102通过将左移位运算符应用于第三状态变量126的二进制表示来使用第三状态变量得出溢出标志,该左移位运算符将第三状态变量126的二进制表示的位向左移位1。然后,主机仿真器102将逻辑XOR运算符应用于左移位的第三状态变量位和第三状态变量126,并且将逻辑不等于运算应用于零值以及将逻辑XOR值应用于左移位的第三状态变量位和第三状态变量126的结果。在数学上,主机仿真器102使用等式(10)得出溢出标志:
溢出标志=
(((A&B)^(~S&(A^B)))^(((A&B)^(~S&(A^B)))<<1))!=0
因此,主机仿真器102得出,已经响应于包含在最外面的括号中的上述等式(10)的部分不等于零而设置了溢出标志。主机仿真器102通过以下方式来得出已经设置了调节标志:对第三状态变量126和值八(8)应用逻辑AND运算,并且对该逻辑AND运算的结果和零值应用逻辑不等于运算。在数学上,主机仿真器102使用等式(11)得出调节标志:
调节标志=(((A&B)^(~S&(A^B)))&8)!=0
因此,主机仿真器102得出,已经响应于包含在最外面的括号中的等式(11)的部分不等于零而设置了调节标志。
因此,本文中描述的算术惰性标志表示技术使得主机仿真器102能够容易地按需得出算术标志,或者当主机仿真器102执行需要使用一个或多个算术标志的客户指令104时“惰性地”得出算术标志。因此,主机仿真器102通过除非需要否则不得出算术标志来避免不必要地浪费处理器时钟周期。
主机仿真器102被配置为通过选择性地确定第三状态变量126来进一步避免浪费不必要的处理器时钟周期。具体地,主机仿真器102确定跟随客户指令104的后续客户指令是否需要使用进位标志、溢出标志或调节标志,以便正确仿真后续客户指令。当主机仿真器102确定后续客户操作不需要得出进位标志、溢出标志或调节标志时,主机仿真器102执行后续客户操作而不需要确定第三状态变量。因为需要得出算术标志的大多数应用和操作系统指令使用除了进位标志、溢出标志和调节标志之外的算术标志,所以本文中描述的技术消除了否则在确定第三状态变量时将浪费的时钟周期的使用。
因此,在图1的示例系统100中,主机仿真器102在第一时钟周期112期间确定第一状态变量120,在第二时钟周期114期间确定第二状态变量124,并且可以避免确定第三状态变量126,除非确定在客户指令104之后要执行的客户指令要求使用进位标志、溢出标志或调节标志。因此,使用本文中描述的技术,主机仿真器102仅在需要时确定第三状态变量126。当执行客户指令104之后的客户指令不需要第三状态变量126时,主机仿真器102能够仅使用第一时钟周期112和第二时钟周期114来仿真客户指令104,从而避免了在仿真应用或操作系统期间的不必要的时钟周期消耗。
因此,通过选择性地确定存储描述仿真期间算术运算的结果的信息的第三状态变量,本文中描述的技术使得能够以比使用传统仿真技术更少的时钟周期的方式来在不同的主机系统架构上仿真为客户处理器系统架构设计的客户指令。
图2示出了其中可以实现用于仿真的算术惰性标志表示的实施例的示例系统200。示例系统200包括主机计算设备202,诸如确定第一状态变量120,确定第二状态变量124,以及使用参考图1所示和描述的技术选择性地确定第三状态变量126的主机计算设备。主机计算设备202可以用各种组件(诸如处理器204(或处理系统)和存储器206)以及任何数目和组合的不同组件来实现,如参考图4所示的示例设备进一步描述的。
处理器204(或处理系统)对应于主机处理器系统架构,诸如参考图1描述的主机处理器系统架构。尽管未示出,但是主机计算设备202可以实现为移动或便携式设备,并且可以包括电源,诸如电池,以为各种设备组件供电。此外,主机计算设备202可以包括通信系统208,通信系统208包括被实现用于与其他设备、网络和服务进行无线通信的无线电设备、天线和芯片组。
如本文所述,用于在主机计算设备202上仿真客户指令的算术惰性标志表示的技术使得主机计算设备202能够启动和运行为与处理器204的处理器系统架构不同的客户处理器系统架构设计的应用、操作系统等。所公开的技术包括通过以下方式来执行算术运算并且存储算术运算的结果:确定第一状态变量,确定第二状态变量,以及选择性地确定第三状态变量,如果后续客户指令需要使用算术标志,则第三状态变量可以用于得出算术标志。主机计算设备202包括一个或多个计算机应用210(诸如客户应用212)和主机仿真器102,主机仿真器102被配置为仿真客户应用212的客户指令104,使得客户应用212可以启动并且在主机计算设备202上运行。
在实现中,客户应用212被设计用于由客户处理器架构214执行,其中客户处理器架构214是与由主机计算设备202实现的处理器204的处理器系统架构基本上不同的处理器系统架构。例如。处理器204可以是基于x86的处理器,并且客户处理器架构214可以是不同的处理器系统架构,诸如基于PowerPC的处理器系统、基于ARM的处理器系统等。替代地,客户处理器架构214可以是基于x86的处理器系统,并且处理器204可以是不同的处理器系统架构,诸如基于PowerPC的处理器系统、基于ARM的处理器系统等。
为了使客户应用212正确启动和运行,客户应用212包括需要由实现客户应用212的计算设备正确执行的多个客户指令104。在实现中,每个客户指令104包括要对由客户应用212指定的整数值216执行的算术运算。例如,根据一个或多个实现,客户指令104之一指定要使用第一整数值108和第二整数值110执行的算术运算,如上面参考图1所述。
继续该示例,因为后续客户指令104可能需要使用由于执行先前客户指令而产生的算术结果以便正确执行,所以执行客户应用212的主机计算设备202需要存储描述所执行的算术运算的结果的信息。例如,后续客户指令104可以指示运行客户应用212的主机计算设备访问客户处理器架构214的状态寄存器以执行后续客户指令。然而,因为状态寄存器不存在于处理器204中,所以当主机计算设备202正在执行客户应用212时可能出现问题。为了解决这些寄存器访问问题,主机计算设备202实现主机仿真器102,主机仿真器102被配置为执行由客户指令104指定的算术运算并且存储关于这些算术运算的结果的信息,以便可以适当地仿真后续客户指令104。
主机仿真器102被实现为从客户应用212接收客户指令104和相关联的整数值216,并且使用本文中描述的算术惰性标志表示技术来执行客户指令104。主机仿真器102包括算术运算模块218,算术运算模块218被实现为使用由客户应用212提供的整数值216(诸如第一整数值108和第二整数值110)来执行由客户指令104指定的算术运算。算术运算模块218另外被实现为确定描述所执行的算术运算的结果的信息并且将该确定的信息存储在惰性标志寄存器222中。在实现中,算术运算模块218确定第一状态变量120,确定第二状态变量124,并且选择性地确定第三状态变量126,如上面参考图1所述。
主机计算设备202中的主机仿真器102另外包括标志得出模块220,标志得出模块220被实现为从由算术运算模块218执行的算术运算的结果和存储在惰性标志寄存器222中的信息得出运算标志224,诸如从被存储为第一状态变量120、第二状态变量124和第三状态变量126的信息。得出的算术标志224可以包括由基于x86的处理器架构指定的零标志、符号标志、奇偶校验标志、进位标志,溢出标志和调节标志。因此,标志得出模块220被实现为使用上面参考图1描述的技术得出算术标志224。
主机仿真器102以及算术运算模块218和标志得出模块220均可以实现为软件应用或模块,诸如可以使用处理器204(或使用处理系统)执行以实现本文中描述的算术惰性标志表示技术的计算机可执行软件指令。主机仿真器102以及算术运算模块218和标志得出模块220可以存储在计算机可读存储存储器(例如,设备存储器206)上,诸如在计算设备中实现的任何合适的存储器设备或电子数据存储装置。尽管示出为单个主机仿真器102的组件,但是算术运算模块218和标志得出模块220可以实现为单独的模块、组件或软件应用。
在实现中,主机仿真器102接收客户指令104,以便在主机计算设备202上执行被设计用于客户处理器架构214的客户应用212,该主机计算设备202实现具有与客户处理器架构214不同的处理器系统架构的处理器204。主机仿真器102包括算术运算模块218,算术运算模块218使用整数值216(诸如第一整数值108和第二整数值110)执行由客户指令104指定的算术运算。除了存储所执行的算术运算的结果之外,算术运算模块218还使用第一状态变量120、第二状态变量124和第三状态变量126将描述所执行的算术运算的结果的信息存储在惰性标志寄存器222中。
由于需要各个处理器时钟周期来确定状态变量120、124和126中的每个,因此算术运算模块218被实现为选择性地确定第三状态变量126,使得仅当后续客户指令104需要得出进位标志、溢出标志和/或调节标志以便正确执行时确定第三状态变量126。算术标志子集包括来自6个运算标志224的整个集合的进位标志、溢出标志和调节标志,这6个运算标志224是零标志、符号标志、奇偶校验标志、进位标志、溢出标志和调节标志。主机仿真器102另外包括标志得出模块220,标志得出模块220被实现为仅在需要时从惰性标志寄存器222中的状态变量得出算术标志224。因此,主机仿真器102消除了不必要的时钟周期的使用并且增加了可以在主机计算设备202上仿真客户应用212的速度。
参考图3描述根据用于仿真的算术惰性标志表示的一个或多个方面的示例方法300。通常,本文中描述的任何组件、模块、方法和操作可以使用软件、固件、硬件(例如,固定逻辑电路)、手动处理或其任何组合来实现。示例方法的一些操作可以在存储在计算机可读存储存储器上的可执行指令的一般上下文中描述,该计算机可读存储存储器是计算机处理系统的本地和/或远程的,并且实现可以包括软件应用、程序、函数等。替代地或另外地,本文中描述的任何功能可以至少部分由一个或多个硬件逻辑组件执行,诸如但不限于现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SoC)、复杂可编程逻辑器件(CPLD)等。
图3示出了使用本文中讨论的算术惰性标志表示技术的指令仿真的示例方法300,并且总体上参考图1和2来描述。描述该方法的顺序不旨在被解释为限制,并且任何数目或组合的方法操作可以以任何顺序执行以实现方法或替代方法。
在302处,接收应用指令,其中应用指令包括要使用第一整数值和第二整数值来执行的算术运算。例如,在主机计算设备202上实现的主机仿真器102接收客户指令104,客户指令104指定要使用整数值216(诸如第一整数值108和第二整数值110)执行的算术加法或减法运算。每个整数值对应于整数值的二进制表示,该整数值可以以任何比特长度表示。客户指令104和整数值216可以从正在由主机计算设备202执行的客户应用212接收,其中客户指令104被设计用于由与主机计算设备202的处理器204不同的客户处理器架构214执行。
在304处,通过对第一整数值和第二整数值执行算术运算来确定算术运算的结果值。例如,算术运算模块218使用第一整数值108和第二整数值110来执行算术运算106以产生算术运算结果118。该算术运算结果118可以存储在实现算术运算模块218的计算设备的存储器中以供稍后使用和检索,诸如在主机计算设备202的存储器206中。因为后续客户指令104的执行可能需要使用描述执行算术运算的结果的信息,所以算术运算模块218确定各种状态变量,其中描述算术运算的结果的信息存储在主机计算设备202上。
在306处,使用第一整数值和第二整数值确定第一状态变量。例如,算术运算模块218通过使用第一整数值108和第二整数值110执行逻辑AND运算来确定第一状态变量120。然后第一状态变量120存储在实现算术运算模块218的计算设备的存储器中。例如,第一状态变量120存储在主机计算设备202的存储器206内的惰性标志寄存器222中。
在308处,使用第一整数值、第二整数值和算术运算的结果值来确定第二状态变量。例如,算术运算模块218通过以下方式来确定第二状态变量124:将逻辑NOT运算符应用于算术运算结果118以产生NOT值,将逻辑XOR运算应用于第一整数值108和第二整数值110以产生XOR值,该XOR值表示为子表达122,并且将逻辑AND运算应用于所产生的NOT值和子表达122。然后第二状态变量124存储在实现算术运算模块218的计算设备的存储器中。例如,第二状态变量124存储在主机计算设备202的存储器206内的惰性标志寄存器222中。
在310处,确定后续客户指令是否需要算术标志子集的得出。例如,主机仿真器102确定在客户指令104之后接收的后续客户指令104是否将需要得出进位标志、溢出标志和/或调节标志以便正确执行后续客户指令。主机仿真器102在确定第三状态变量126之前执行该确定以便减少仿真客户指令104所需要的处理器时钟周期的数目。算术标志子集包括6个标志的整个算术标志集合的进位标志、溢出标志和调节标志,这6个标志是零标志、符号标志、奇偶校验标志、进位标志、溢出标志和调节标志。
如果后续客户指令将需要算术标志子集的得出(即,来自310的“是”),则在312处,使用第一状态变量和第二状态变量确定第三状态变量,并且从第三状态变量得出算术标志子集。例如,算术运算模块218通过将逻辑XOR运算应用于第一状态变量120和第二状态变量124来确定第三状态变量126。然后第三状态变量126存储在实现该算术运算模块218的计算设备的存储器中。例如,第三状态变量126存储在主机计算设备202的存储器206内的惰性标志寄存器222中。标志得出模块220然后从存储在惰性标志寄存器222中的第三状态变量126得出算术标志224。
在实现中,标志得出模块220使用本文中描述的等式(9)来得出算术进位标志;使用本文中描述的等式(10)得出算术溢出标志;并且使用本文中描述的等式(11)得出算术调节标志。然后得出的算术标志224存储在计算设备的存储器中,使得得出的标志可以用于在主机计算设备202上正确地执行后续客户指令104。例如,得出的算术标志224存储在主机计算设备202的存储器206内的惰性标志寄存器222中。然而,如果在310处确定后续客户指令不需要算术标志(例如,惰性标志)子集的得出(即,来自310的“否”),则不确定第三状态变量并且不得出算术标志子集,从而避免了浪费否则将需要用于确定第三状态变量并且得出算术标志子集(即,进位标志、溢出标志和调节标志)的处理器时钟周期。
在314处,执行后续客户指令。例如,后续客户指令是在接收到客户指令104之后由主机仿真器102接收的另一客户指令104。方法300可以在302处继续,并且主机仿真器102以上面关于方法框304-312描述的类似的方式执行客户指令104。因此,实现本文中描述的技术以继续为客户应用212或处理器系统执行客户指令104,即使客户应用或处理器系统未被设计为由实现主机仿真器102的主机计算设备202的处理器系统执行。
图4示出了包括示例设备402的示例系统400,示例设备402可以使用本文中描述的技术实现用于仿真的算术惰性标志表示。示例设备402可以实现为参考先前的图1-3描述的任何计算设备和/或服务器设备,诸如任何类型的移动设备、客户端设备、移动电话、平板计算机、计算、通信、娱乐、游戏、媒体回放和/或其他类型的设备。例如,本文中描述的主机计算设备202可以实现为示例设备402或者与示例设备的各种组件一起实现。
设备402包括通信设备404,通信设备404支持设备数据406的有线和/或无线通信,诸如在客户指令的执行中使用的整数值。另外,设备数据406可以包括任何类型的音频、视频和/或图像数据。通信设备404还可以包括用于蜂窝电话通信和用于网络数据通信的收发器。
设备402还包括输入/输出(I/O)接口408,诸如数据网络接口,I/O接口408提供设备、数据网络和本文中描述的其他设备之间的连接和/或通信链路。I/O接口可以用于将设备耦合到任何类型的组件、外围设备和/或附件设备。例如,I/O接口可以用于将设备耦合到从其接收客户应用的客户计算设备。I/O接口还包括数据输入端口,经由该数据输入端口可以接收任何类型的数据、媒体内容和/或输入(诸如到设备的用户输入)、以及从任何内容和/或数据源接收的任何类型的音频、视频和/或图像数据。
设备402包括处理系统410,处理系统410可以至少部分用硬件实现,诸如利用处理可执行指令的任何类型的微处理器、控制器等。处理系统可以包括集成电路的组件、可编程逻辑器件、使用一个或多个半导体形成的逻辑器件、以及使用硅和/或硬件的其他实现,诸如实现为片上系统(SOC)的处理器和存储器系统。替代地或另外地,该设备可以用可以用处理和控制电路实现的软件、硬件、固件或固定逻辑电路中的任何一个或组合来实现。设备402还可以包括耦合设备内的各种组件的任何类型的系统总线或其他数据和命令传输系统。系统总线可以包括不同总线结构和架构中的任何一个或组合、以及控制和数据线。
设备402还包括计算机可读存储存储器412,诸如可以由计算设备访问并且提供数据和可执行指令(例如,软件应用、程序、函数等)的持久存储的数据存储设备。计算机可读存储存储器412的示例包括易失性存储器和非易失性存储器、固定和可移除媒体设备、以及保持用于计算设备访问的数据的任何合适的存储器设备或电子数据存储装置。计算机可读存储存储器可以包括各种存储器设备配置的随机存取存储器(RAM)(例如,DRAM和电池支持的RAM)、只读存储器(ROM)、闪存和其他类型的存储介质的各种实现。
计算机可读存储存储器412提供设备数据406和各种设备应用414的存储,诸如作为使用计算机可读存储存储器被保持为软件应用并且由处理系统410执行的操作系统。在该示例中,设备应用包括客户应用416,客户应用416被设计为在与处理系统410的处理器架构不同的处理器架构上运行。另外,设备应用包括实现本文中参考图1-3描述的算术惰性标志表示技术的实施例的主机仿真器418,并且可以用于生成也可以存储在计算机可读存储存储器412中的惰性标志寄存器420。主机仿真器418的示例实现是参考图1和2示出和描述的主机仿真器102。
设备402还包括为音频设备424生成音频数据和/或为显示设备426生成显示数据的音频和/或视频系统422。音频设备和/或显示设备包括处理、显示和/或以其他方式呈现音频、视频、显示和/或图像数据的任何设备。在实现中,音频设备和/或显示设备是示例设备402的集成组件。替代地,音频设备和/或显示设备是示例设备的外部外围组件。
在各方面,用于仿真技术的算术惰性标志表示的至少一部分可以在分布式系统中实现,诸如通过平台430中的“云”428实现。云428包括和/或代表用于服务432和/或资源434的平台430。平台430抽象出硬件的底层功能,诸如服务器设备(例如,被包括在服务432中)和/或软件资源(例如,被包括作为资源434),并且将示例设备402与其他设备、服务器等连接。资源434还可以包括在远离示例设备402的服务器上执行计算机处理时可以使用的应用和/或数据。另外,服务432和/或资源434可以支持订户网络服务,诸如通过因特网、蜂窝网络或Wi-Fi网络。平台430还可以用于抽象和缩放资源以服务于对经由平台实现的资源434的需求,诸如在具有分布在整个系统400中的功能的互连设备实施例中。例如,功能可以部分在示例设备402处以及经由抽象云的功能的平台430来实现。
尽管已经用特定于特征和/或方法的语言描述了用于仿真的算术惰性标志表示的各方面,但是所附权利要求不必限于所描述的特定特征或方法。相反,特定特征和方法被公开作为用于仿真的算术惰性标志表示的示例实现,并且其他等效特征和方法旨在落入所附权利要求的范围内。此外,描述了各种不同的实施例,并且应当理解,每个描述的实施例可以独立地实现或者与一个或多个其他描述的实施例相结合实现。本文中讨论的技术、特征和/或方法的其他方面涉及以下一个或多个:
一种被实现用于指令仿真的计算系统,系统包括:存储器,被配置为保持应用的多个指令,应用被设计用于由客户处理器系统执行;以及与客户处理器系统不同的主机处理器系统,主机处理器系统实现主机仿真器,主机仿真器被配置为:接收具有要使用第一整数值和第二整数值执行的算术运算的多个指令之一;确定对第一整数值和第二整数值执行的算术运算的结果值;确定第一状态变量和第二状态变量;确定后续指令是否需要部分基于第三状态变量的算术标志子集的得出;以及响应于确定后续指令不需要算术标志子集的得出,执行后续指令而不需要确定第三状态变量。
作为上述计算系统的替代或补充,以下中的任何一个或组合:算术运算是要使用第一整数值和第二整数值执行的加法运算或减法运算。主机仿真器被配置为:使用第一整数值和第二整数值确定第一状态变量;以及使用算术运算的结果值、第一整数值和第二整数值确定第二状态变量。主机仿真器还被配置为,响应于确定后续指令确实需要算术标志子集的得出:使用第一状态变量和第二状态变量确定第三状态变量;至少部分基于第三状态变量得出算术标志子集;以及使用算术标志子集执行后续指令。主机处理器系统包括基于x86的系统,并且客户处理器系统包括基于Power-PC的系统或基于高级精简指令集计算机机器(ARM)的系统之一。第一整数值是有符号整数值或无符号整数值之一,并且第二整数值是有符号整数值或无符号整数值之一。算数标志子集包括来自算数标志集的进位标志、溢出标志和调节标志,算数标志集包括零标志、符号标志、奇偶校验标志、进位标志、溢出标志和调节标志。主机仿真器被配置为至少将第一状态变量和第二状态变量存储在存储器中的惰性标志寄存器中。应用包括用于计算设备的操作系统,并且多个指令是被设计用于由客户处理器系统执行的操作系统的指令。
一种用于指令仿真的方法,方法包括:在主机处理器系统处接收应用的应用指令,应用被设计用于由与主机处理器系统不同的客户处理器系统执行,应用指令包括要使用第一整数值和第二整数值执行的算术运算;通过对第一整数值和第二整数值执行算术运算来确定结果值;确定第一状态变量和第二状态变量;确定后续应用指令是否需要部分基于第三状态变量的算术标志子集的得出;以及响应于确定后续应用指令不需要算术标志子集的得出,执行后续应用指令而不需要确定第三状态变量。
作为上述方法的替代或补充,以下中任何一个或组合:算数标志子集包括来自算数标志集的进位标志、溢出标志和调节标志,算数标志集包括零标志、符号标志、奇偶校验标志、进位标志、溢出标志和调节标志。算术运算包括使用第一整数值和第二整数值执行的加法运算或减法运算。方法还包括:使用第一整数值和第二整数值确定第一状态变量;以及使用算术运算的结果值、第一整数值和第二整数值确定第二状态变量。响应于确定后续应用指令确实需要算术标志子集的得出,方法还包括:使用第一状态变量和第二状态变量确定第三状态变量;至少部分基于第三状态变量得出算术标志子集;以及使用算术标志子集执行后续应用指令。主机处理器系统包括基于x86的系统,并且客户处理器系统包括基于Power-PC的系统或基于高级精简指令集计算机机器(ARM)的系统之一。方法还包括至少将第一状态变量和第二状态变量存储在实现主机处理器系统和应用的主机仿真器的计算设备的存储器中的惰性标志寄存器中。
一种计算机可读存储存储器,包括存储指令,存储指令可执行,并且响应于计算系统对存储指令的执行,计算系统实现执行操作的主机仿真器,操作包括:接收应用的应用指令,应用被设计用于由与计算系统的主机处理器系统不同的客户处理器系统执行,应用指令包括要使用第一整数值和第二整数值执行的算术运算;通过对第一整数值和第二整数值执行算术运算来确定结果值;使用第一整数值和第二整数值确定第一状态变量;使用算术运算的结果值、第一整数值和第二整数值确定第二状态变量;确定后续应用指令是否需要部分基于第三状态变量的算术标志子集的得出;以及响应于确定后续应用指令不需要算术标志子集的得出,执行后续应用指令而不需要确定第三状态变量。
作为上述计算机可读存储存储器的替代或补充,以下中的任何一个或组合:主机仿真器还执行包括使用第一整数值和第二整数值执行诸如加法运算或减法运算的算术运算的操作。主机仿真器还执行包括以下各项的操作:响应于确定后续应用指令确实需要算术标志子集的得出:使用第一状态变量和第二状态变量确定第三状态变量;至少部分基于第三状态变量得出算术标志子集;以及使用算术标志子集执行后续应用指令。主机仿真器还执行包括至少将第一状态变量和第二状态变量存储在存储器中的惰性标志寄存器中的操作。

Claims (15)

1.一种被实现用于指令仿真的计算系统,所述系统包括:
存储器,被配置为保持针对应用的多个指令,所述应用被设计用于由客户处理器系统执行;以及
与所述客户处理器系统不同的主机处理器系统,所述主机处理器系统实现主机仿真器,所述主机仿真器被配置为:
接收具有要使用第一整数值和第二整数值执行的算术运算的所述多个指令之一;
确定对所述第一整数值和所述第二整数值执行的所述算术运算的结果值;
确定第一状态变量和第二状态变量;
确定后续指令是否需要部分基于第三状态变量的算术标志子集的得出;以及
响应于确定所述后续指令不需要所述算术标志子集的所述得出,执行所述后续指令而不需要确定所述第三状态变量。
2.根据权利要求1所述的计算系统,其中所述算术运算是要使用所述第一整数值和所述第二整数值执行的加法运算或减法运算。
3.根据权利要求1所述的计算系统,其中所述主机仿真器被配置为:
使用所述第一整数值和所述第二整数值确定所述第一状态变量;以及
使用所述算术运算的所述结果值、所述第一整数值和所述第二整数值确定所述第二状态变量。
4.根据权利要求1所述的计算系统,其中所述主机仿真器还被配置为,响应于确定所述后续指令确实需要所述算术标志子集的所述得出:
使用所述第一状态变量和所述第二状态变量确定所述第三状态变量;
至少部分基于所述第三状态变量得出所述算术标志子集;以及
使用所述算术标志子集执行所述后续指令。
5.根据权利要求1所述的计算系统,其中所述主机处理器系统包括基于x86的系统,并且所述客户处理器系统包括基于Power-PC的系统或基于高级精简指令集计算机机器(ARM)的系统之一。
6.根据权利要求1所述的计算系统,其中所述第一整数值是有符号整数值或无符号整数值之一,并且所述第二整数值是有符号整数值或无符号整数值之一。
7.根据权利要求1所述的计算系统,其中所述算数标志子集包括来自算数标志集的进位标志、溢出标志和调节标志,所述算数标志集包括零标志、符号标志、奇偶校验标志、所述进位标志、所述溢出标志和所述调节标志。
8.根据权利要求1所述的计算系统,其中所述主机仿真器被配置为至少将所述第一状态变量和所述第二状态变量存储在所述存储器中的惰性标志寄存器中。
9.根据权利要求1所述的计算系统,其中所述应用包括用于计算设备的操作系统,并且所述多个指令是被设计用于由所述客户处理器系统执行的所述操作系统的指令。
10.一种用于指令仿真的方法,所述方法包括:
在主机处理器系统处接收针对应用的应用指令,所述应用被设计用于由与所述主机处理器系统不同的客户处理器系统执行,所述应用指令包括要使用第一整数值和第二整数值执行的算术运算;
通过对所述第一整数值和所述第二整数值执行所述算术运算来确定结果值;
确定第一状态变量和第二状态变量;
确定后续应用指令是否需要部分基于第三状态变量的算术标志子集的得出;以及
响应于确定所述后续应用指令不需要所述算术标志子集的所述得出,执行所述后续应用指令而不需要确定所述第三状态变量。
11.根据权利要求10所述的方法,其中所述算数标志子集包括来自算数标志集的进位标志、溢出标志和调节标志,所述算数标志集包括零标志、符号标志、奇偶校验标志、所述进位标志、所述溢出标志和所述调节标志。
12.根据权利要求10所述的方法,其中所述算术运算包括使用所述第一整数值和所述第二整数值执行的加法运算或减法运算。
13.根据权利要求10所述的方法,还包括:
使用所述第一整数值和所述第二整数值确定所述第一状态变量;以及
使用所述算术运算的结果值、所述第一整数值和所述第二整数值确定所述第二状态变量。
14.根据权利要求10所述的方法,其中响应于确定所述后续应用指令确实需要所述算术标志子集的所述得出,所述方法还包括:
使用所述第一状态变量和所述第二状态变量确定所述第三状态变量;
至少部分基于所述第三状态变量得出所述算术标志子集;以及
使用所述算术标志子集执行所述后续应用指令。
15.根据权利要求10所述的方法,还包括至少将所述第一状态变量和所述第二状态变量存储在实现所述主机处理器系统和所述应用的主机仿真器的计算设备的存储器中的惰性标志寄存器中。
CN201880013197.9A 2017-02-28 2018-02-22 用于仿真的算术惰性标志表示 Pending CN110325966A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/445,403 US10261785B2 (en) 2017-02-28 2017-02-28 Arithmetic lazy flags representation for emulation
US15/445,403 2017-02-28
PCT/US2018/019073 WO2018160414A1 (en) 2017-02-28 2018-02-22 Arithmetic lazy flags representation for emulation

Publications (1)

Publication Number Publication Date
CN110325966A true CN110325966A (zh) 2019-10-11

Family

ID=61569448

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880013197.9A Pending CN110325966A (zh) 2017-02-28 2018-02-22 用于仿真的算术惰性标志表示

Country Status (4)

Country Link
US (1) US10261785B2 (zh)
EP (1) EP3566136A1 (zh)
CN (1) CN110325966A (zh)
WO (1) WO2018160414A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884720B2 (en) * 2018-10-04 2021-01-05 Microsoft Technology Licensing, Llc Memory ordering annotations for binary emulation

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3891974A (en) * 1973-12-17 1975-06-24 Honeywell Inf Systems Data processing system having emulation capability for providing wait state simulation function
US5774694A (en) * 1996-09-25 1998-06-30 Intel Corporation Method and apparatus for emulating status flag
US20040158822A1 (en) * 2002-02-06 2004-08-12 Sandham John H. Condition code flag emulation for program code conversion
US20080222388A1 (en) * 2007-03-05 2008-09-11 Microsoft Corporation Simulation of processor status flags
US20090030668A1 (en) * 2007-07-26 2009-01-29 Microsoft Corporation Signed/unsigned integer guest compare instructions using unsigned host compare instructions for precise architecture emulation

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065750B2 (en) * 1999-02-17 2006-06-20 Elbrus International Method and apparatus for preserving precise exceptions in binary translated code
GB0202728D0 (en) 2002-02-06 2002-03-27 Transitive Technologies Ltd Condition code flag emulation for program code conversion
US7536682B2 (en) * 2003-04-22 2009-05-19 International Business Machines Corporation Method and apparatus for performing interpreter optimizations during program code conversion
US7200841B2 (en) 2003-04-22 2007-04-03 Transitive Limited Method and apparatus for performing lazy byteswapping optimizations during program code conversion
GB2425372B (en) * 2005-04-20 2007-06-13 Transitive Ltd Method and apparatus for precise handling of exceptions during program code conversion
US8532975B2 (en) * 2009-06-12 2013-09-10 Cadence Design Systems, Inc. System and method implementing a simulation acceleration capture buffer
CN105247484B (zh) * 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3891974A (en) * 1973-12-17 1975-06-24 Honeywell Inf Systems Data processing system having emulation capability for providing wait state simulation function
US5774694A (en) * 1996-09-25 1998-06-30 Intel Corporation Method and apparatus for emulating status flag
US20040158822A1 (en) * 2002-02-06 2004-08-12 Sandham John H. Condition code flag emulation for program code conversion
US20080222388A1 (en) * 2007-03-05 2008-09-11 Microsoft Corporation Simulation of processor status flags
US20090030668A1 (en) * 2007-07-26 2009-01-29 Microsoft Corporation Signed/unsigned integer guest compare instructions using unsigned host compare instructions for precise architecture emulation

Also Published As

Publication number Publication date
EP3566136A1 (en) 2019-11-13
US10261785B2 (en) 2019-04-16
WO2018160414A1 (en) 2018-09-07
US20180246719A1 (en) 2018-08-30

Similar Documents

Publication Publication Date Title
US11316836B2 (en) Efficient sensor data delivery
CN109597993A (zh) 语句分析处理方法、装置、设备以及计算机可读存储介质
CN107402881A (zh) 一种项目测试的选取方法及装置
CN108282518A (zh) 一种客户端页面生成方法和装置
CN109246027B (zh) 一种网络维护的方法、装置和终端设备
CN108763551A (zh) 页面渲染方法、装置、服务器及计算机可读存储介质
CN106202224B (zh) 搜索处理方法及装置
CN107393502B (zh) 用于多遍渲染的技术
CN109684008A (zh) 卡片渲染方法、装置、终端及计算机可读存储介质
CN103530243A (zh) 用于确定用于设备的设置的系统、方法和计算机程序产品
CN109697083B (zh) 数据的定点化加速方法、装置、电子设备及存储介质
CN109660581A (zh) 物理机管理方法及装置、系统
CN109983504A (zh) 通过使用多层移动来促进立体视觉的方法和装置
CN106970872A (zh) 信息埋点方法及装置
CN116701233B (zh) 基于高并发报单模拟的交易系统测试方法、设备及介质
CN110325966A (zh) 用于仿真的算术惰性标志表示
US9747448B2 (en) Cryptographic mechanisms to provide information privacy and integrity
CN108833504A (zh) 跨站点信息同步方法及装置
CN109284493B (zh) 一种教育云平台上的随机题库实现方法及电子设备
US20200279152A1 (en) Lexicographic deep reinforcement learning using state constraints and conditional policies
Nutaro An extension of the OpenModelica compiler for using Modelica models in a discrete event simulation
CN106250346A (zh) 一种智能计算器的实现方法及系统
CN113391813A (zh) 程序编译方法和装置、存储介质及电子设备
US20160307123A1 (en) Methods and systems for legacy compatible software
CN110909191A (zh) 图数据处理方法及装置、存储介质、电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination