CN101208661A - 支持非正规输入处理机制的动态二进制翻译的设备、系统和方法 - Google Patents
支持非正规输入处理机制的动态二进制翻译的设备、系统和方法 Download PDFInfo
- Publication number
- CN101208661A CN101208661A CNA2006800229828A CN200680022982A CN101208661A CN 101208661 A CN101208661 A CN 101208661A CN A2006800229828 A CNA2006800229828 A CN A2006800229828A CN 200680022982 A CN200680022982 A CN 200680022982A CN 101208661 A CN101208661 A CN 101208661A
- Authority
- CN
- China
- Prior art keywords
- instruction
- denormal
- target
- target instruction
- exception
- 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
- 230000007246 mechanism Effects 0.000 title claims abstract description 43
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000001514 detection method Methods 0.000 claims 6
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 9
- 238000003860 storage Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000008280 blood Substances 0.000 description 1
- 210000004369 blood Anatomy 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000000007 visual effect Effects 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/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明的一个实施例提供一种方法,该方法用于将源指令的集合翻译成目标指令的集合,执行该目标指令的集合,并且如果源指令的集合使用非正规(denormal)输入处理机制,则对非正规输入控制位取消屏蔽。本发明的另一个实施例提供一种方法,该方法通过执行目标指令的集合来检测故障目标指令的至少一个非正规异常;将预定值赋予故障目标指令的一个或多个非正规操作数;以及利用一个或多个非正规操作数的预定值来执行故障目标指令。本发明的实施例也提供了其设备、系统和机器可读介质。
Description
背景技术
一些符合例如Intel体系结构-32(IA-32)的计算机平台可以支持称为反常值为零(Denormals-Are-Zeroes)(DAZ)的、用于在程序代码执行期间处理非正规(denormal)输入或操作数的特征。这些平台可以包括控制位,本文中称为DAZ位,它控制对浮点(FP)非正规异常状态下的单指令多数据(SIMD)指令的响应。程序代码可以具有控制平台中的DAZ位的一个或多个控制指令。这些控制指令可以将DAZ位设置为两个值(例如“1”和“0”)的其中之一。例如,当DAZ位被设置为“1”时,运行在支持DAZ特征的平台上的处理器可以检测在代码执行期间产生非正规异常状况的指令,并以预定值(例如带初始操作数的符号的零)对该指令(发生异常的指令)的非正规操作数赋值。然后,处理器就可以利用操作数的这些新值来执行该发生异常的指令。在本文中,可以将上述的对非正规操作数的处理称为非正规输入处理机制或DAZ机制。
动态二进制翻译器可以将源代码(如符合支持DAZ特征的源体系结构的IA-32代码)翻译成将在目标平台上执行的目标代码。目标平台可以具有浮点模型,因此能够产生诸如非正规异常的流SIMD扩展(SSE)异常。但是,在处理非正规异常的非正规输入时,目标平台可能不支持DAZ特征。一种这样的目标平台可以是,例如,符合Intel ItaniumTM处理器族的体系结构的平台。
附图说明
在本说明书中的结尾部分中具体提出了被视为本发明的主题,并明确地要求了该主题的权利。然而,通过结合附图阅读以下的详细说明,可以最好地理解有关本发明的组织方式和操作方法,以及本发明的目标、特征和优点。在这些附图中:
图1是根据本发明的某些说明性实施例的、能够执行支持DAZ机制的动态二进制翻译的装置的框图;
图2是根据本发明的说明性实施例的、支持DAZ机制的动态二进制翻译方法的流程图;
图3是根据本发明的说明性实施例的、用于在所有不属于非正规异常的异常均被屏蔽时在程序代码执行期间处理非正规异常的方法的流程图;
图4是根据本发明的说明性实施例的、用于在一个或多个不属于非正规异常的异常被取消屏蔽时在程序代码执行期间处理非正规异常的方法的示意图;
图5是根据本发明的说明性实施例的、用于处理从对应的故障目标指令恢复的异常源指令的方法的示意图;
图6是根据本发明的说明性实施例的、用于构建具有大量非正规异常的翻译后目标代码块的方法的示意图;
图7是根据本发明的说明性实施例的、用于执行目标指令块的方法的示意图。
可以懂得,为了使图示变得简单和清楚,不必按比例绘制图中示出的各要素。例如,为清楚起见,可能将某些要素的尺寸相对于其他要素进行放大。
具体实施方式
在以下的详细描述中,阐述了许多具体细节,以便使读者透彻地理解本发明的实施例。但是,本领域的技术人员将懂得,即便没有这些具体细节,也可以实施本发明的实施例。在其他实例中,未详细描述众所周知的方法和流程,以避免干扰对本发明实施例的描述。
通过利用算法和与计算机存储器中的数据位或二进制数字信号的操作有关的符号表现形式,给出了以下的详细说明中的一些部分。这些算法描述和表现形式可以是数据处理技术领域的技术人员用以将他们的工作内容传达给其他同行的表示方式。
在本文中和一般情况下,将算法视为产生期望结果的自相容的动作或操作序列。它们包括对物理量的物理处理。通常(虽然并非必要),这些量呈现为电信号或磁信号的形式,这些电信号或磁信号能够被存储、传输、组合、比较和进行其他处理。已经证明,将这些信号称为位、值、元素、符号、字符、项、数字等等时常被证明是方便的,主要是因为这些称呼常用。然而,应当懂得,所有这些和类似术语均与合适的物理量相关联,它们仅仅是应用于这些量的便捷标记。
除非另外进行具体说明,否则从以下讨论中明显可以看到,在整个说明书中,采用诸如“处理”、“计算”、“计算”、“确定”等术语的讨论是指计算机或计算系统或类似的电子计算设备的动作和/或过程,这些动作和/或过程处理计算系统的寄存器和/或存储器内的表示为物理(如电子的)量的数据,和/或将这些数据变换为计算系统的存储器、寄存器或其他这类信息存储装置、传输或显示设备内的被类似地表示为物理量的其他数据。
可以采用存储指令或指令集的机器可读介质或制品来实施本发明的某些实施例,当所述指令或指令集被机器执行时,会引起所述机器执行依照本发明的实施例的方法和/或操作。这类机器可以包括,例如,任何合适的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器,等等,并可以用硬件和/或软件的任何合适的组合来实施。所述机器可读介质或制品可以包括,例如,任何适合类型的存储器单元、存储器设备、存储器制品、存储器介质、存储装置、存储制品、存储介质和/或存储单元(如存储器、可拆卸或不可拆卸介质、可擦除或不可擦除介质、可写或可重写介质、数字或模拟介质、硬盘、软盘、只读致密盘(CD-ROM)、可记录致密盘(CD-R)、可重写致密盘(CD-RW)、光盘、磁介质、各种类型的数字多功能光盘(DVD)、磁带、盒式磁带,等等)。所述指令可以包括任何类型的代码,例如源代码、经过编译的代码、经过解释的代码、可执行代码、静态代码、动态代码,等等,并可以用任何适合的高级、低级、面向对象的、可视的、编译和/或解释型编程语言(如C、C++、Java、BASIC、Pascal、Fortran、Cobol、汇编语言、机器码等等)来实现。
本发明的实施例可包括用于执行本文中的操作的装置。这些装置可以是专为期望的目的而特意制造的,或者,它们可以包括由计算机程序有选择地进行激活或重新配置的通用计算机,所述计算机程序存储在该计算机中。这类计算机程序可以存储在计算机可读存储介质中,所述计算机可读存储介质包括但不限于任何类型的存储盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁或光卡或适于存储电子指令并且能够耦合到计算机系统总线的任何其他类型的介质。
本文阐述的过程和显示本质上并不与任何特定计算机或其他装置相关。可以将根据本文教导的程序与各种通用系统一起使用,或者,制造更专门的装置来执行期望的方法可能比较方便。从以下的描述中可以看出用于多种这类系统的期望结构。此外,并没有结合任何特定的编程语言来描述本发明的实施例。将会懂得,可以使用多种编程语言来实现本文描述的发明原理。
在以下的描述中,提供了作为不同手段的多种附图、图表、流程图、模型和描述来有效地表达实质内容以及示出本申请中建议的本发明的不同实施例。本领域技术人员应当懂得,它们仅作为示范样本而提供,且不应被理解为对本发明的限制。
图1是根据本发明的某些说明性实施例的、能够执行支持DAZ机制的动态二进制翻译的装置100的框图。装置100可以是计算平台,本文称为目标平台,并且,装置100可以包括操作地连接到存储器106的处理器102。
根据本发明的实施例,存储器106适于存储源指令100(本文中也称为“源代码”)的集合和目标指令120(本文中也称为“目标代码”)的集合。存储器106也可以存储动态二进制翻译器108的指令。处理器102可以执行动态二进制翻译器108,以将源指令集110翻译成目标指令集120。然后,处理器102可以通过应用输入103来执行目标指令集120,并且可以在目标代码执行期间应用算法104来取消目标平台上的非正规输入控制位的屏蔽,以下将结合图2对此进行详细描述。动态二进制翻译器108可以包括异常处理程序109,以处理诸如非正规异常的异常,以下将结合图3-7对此进行详细描述。
源指令集110可以符合例如IA-32的源体系结构,该源体系结构能够支持非正规输入处理机制(本文中也称为DAZ机制)。源指令集110可以包括一个或多个控制指令,当在源平台上执行时,这些控制指令决定源代码是否应使用由源平台支持的DAZ机制。如果源代码使用DAZ机制,则该源体系结构可以通过将非正规操作数转换成带初始操作数的符号的零来响应发生异常的指令的SIMD浮点非正规操作数状况,然后使用非正规操作数的新值来执行上述发生异常的指令。
处理器120可以与目标体系结构(如Intel ItaniumTM处理器系列的体系结构)相符。根据本发明的实施例,处理器102可以不需要源体系结构中所需的硬件来支持DAZ机制。相反,根据本发明的说明性实施例,可以在目标指令集120的执行期间通过动态二进制翻译来模拟DAZ机制,如以下的详细说明所述。
关于装置100的非穷尽例子的列表可包括台式个人计算机、工作站、服务器计算机、膝上型计算机、笔记本计算机、手持式计算机、个人数字助理(PDA)、移动电话、游戏控制台等等。
关于处理器102的非穷尽例子的列表可包括中央处理单元(CPU)、数字信号处理器(DSP)、精简指令集计算机(RISC)、复杂指令集计算机(CISC)等等。而且,处理器102可以是专用集成电路(ASIC)的一部分,或者,可以是专用标准产品(ASSP)的一部分。
存储器106可以固定在装置100内或可以从设备100上卸下。关于存储器106的非穷尽例子的列表可包括以下器件的其中一种或任何组合:半导体器件,同步动态随机存取存储器(SDRAM)器件、RAMBUS动态随机存取存储器(RDRAM)器件、双数据速率(DDR)存储器器件、静态随机存取存储器(SRAM)器件、闪速存储器(FM)器件、电可擦除可编程只读存储器(EEPROM)器件、非易失性随机存取存储器(NVRAM)器件、通用串行总线(USB)可拆卸存储器等等;光器件,如致密盘只读存储器(CD-ROM)等等;以及磁器件,如硬盘、软盘、磁带等等。
在源代码执行期间,源代码中的指令可能产生各种异常。例如,符合IntelIA-32体系结构的源指令可支持二进制浮点算法的ANSI/IEEE标准754-1985中定义和要求的如下特定异常:“无效操作”、“除以零”、“溢出”、“下溢”和“不精确计算”浮点异常。以上异常一般称为SSE异常。目标平台可包括一个或多个控制位,这些控制位包括非正规输入控制位,可以对非正规输入控制位设置或取消屏蔽来控制对SSE异常的处理。如以下结合图2的详细说明所述,可以由处理器102通过算法104来控制这些控制位。此外,源代码可以包括一个或多个控制指令,这些控制指令用于控制源平台中的DAZ位的设置,以确定源代码是否使用DAZ机制。
根据本发明的说明性实施例,可以由动态二进制翻译器108通过在目标平台上执行目标代码120来模拟源平台支持的和源代码110使用的DAZ机制。处理器102适于运行动态二进制翻译器108,以将包括例如源指令112和/或113的源指令集110翻译成包括例如目标指令122和/或123的目标指令集120。在目标代码执行期间,处理器102可以执行算法104,以对目标平台上的非正规输入控制位取消屏蔽,这样,通过执行一个或多个对应的故障目标指令(如目标指令122),可以检测一个或多个发生异常的源指令(如源指令112)。
根据本发明的说明性实施例,当检测到非正规异常时,可以由动态二进制翻译器108来模拟DAZ机制。可以通过动态二进制翻译器108以预定值(例如带初始操作数的符号的零)对目标指令的非正规操作数赋值来执行这种模拟,该目标指令是对应于非正规异常的故障目标指令。然后,处理器120可以用非正规操作数的新赋的值来执行上述故障目标指令。
根据本发明的某些说明性实施例,当在故障目标指令122处检测到非正规异常时,可以重新翻译对应的发生异常的源指令112来生成新的目标指令122。此外,可以生成前缀代码121,并将其附于新生成的目标指令122。前缀代码121可以识别源指令112的所有非正规操作数,以及识别源代码110中的控制指令执行的控制,以确定源代码是否使用DAZ机制。如果源代码使用DAZ机制,则如以上的详细说明所述,前缀代码121可以模拟DAZ机制。
根据本发明的说明性实施例,处理器102可以包括计数器,例如基于高速缓存的计数器105,该计数器用于对目标指令块中的非正规异常的数目计数。如果非正规异常的数目超过预定阈值,则动态二进制翻译器108可以如以下结合图6详细说明的那样模拟DAZ机制。
图2是根据本发明的说明性实施例的、支持DAZ机制的动态二进制翻译方法的流程图。
根据本发明的说明性实施例,动态二进制翻译器108可以接收源代码(例如源代码110),如框202所示。然后,动态二进制翻译器108可以翻译源代码110,以生成对应的目标代码120,如框204所示,并执行目标代码120,如框206所示。源代码110可以包括一个或多个控制指令,这些控制指令可以更改源平台中的DAZ位的设置来决定源代码是否使用DAZ机制。在执行期间,如框208所示,如果确定源代码中的控制指令执行的控制指示源代码中使用DAZ机制,则处理器102可以对目标平台中的非正规输入控制位取消屏蔽,如框212所示,以便可以在DAZ处理的代码执行期间检测非正规异常。可以由处理器102执行取消屏蔽算法(如算法104(图1))来对非正规输入控制位取消屏蔽。
根据本发明的说明性实施例,可能有两种需要单独处理目标代码执行期间检测到的非正规异常的情况。如框214所示,第一种情况是在源代码中屏蔽了不包括非正规异常的所有SSE异常,并因此在对应的目标代码中屏蔽了相同的不属于非正规异常的异常。在这种情况下,处理器102可以执行目标代码、检测非正规异常,并应用DAZ机制,如框216所示,以下将结合图3对此进行详细说明。
第二种情况是在源代码中对一个或多个不属于非正规异常的异常取消屏蔽,并因此在对应的目标代码中对上述异常取消屏蔽。在这种情况下,处理器102可以执行目标代码、检测非正规异常,并应用状态恢复机制来处理该异常,如框218所示,以下将结合图4对此进行详细说明。
如框208所示,如果确定源代码中的控制指令执行的控制未指示源代码使用DAZ机制,则处理器102可以如框210所示继续执行目标代码。
图3是根据本发明的说明性实施例的、用于在所有不属于非正规异常的异常均被屏蔽时在程序代码执行期间处理非正规异常的方法的流程图。对目标平台中的非正规输入控制位取消屏蔽,这样处理器102可以在目标代码执行期间检测非正规异常。
根据本发明的说明性实施例,处理器102可以开始执行目标指令的集合(如目标指令集120),如框302所示。目标指令的该集合可以对应于使用DAZ机制的源指令的集合(如源指令集110)。在执行期间,处理器102可以检测产生非正规异常的故障目标指令(如目标指令122),如框304所示。该异常是非正规异常,因为所有不属于非正规异常的异常,即不同于非正规异常的SSE异常均已被屏蔽从而无法被检测到。如框306所示,当检测到该非正规异常时,处理器102可以将非正规操作数识别为非正规异常,并且可以用预定值(例如带初始操作数的符号的零)对非正规操作数赋值。然后,处理器102可以利用非正规操作数的新值来执行目标指令122,如框308所示。可以从目标指令122的执行得到结果,如框310所示,并将其保存在例如与上述处理器相关的指令高速缓存中,以在随后将其应用于后续目标指令的执行。在框312处,可以移动目标代码执行中使用的指令指针,或将其递增,以指向新的目标指令,例如指向故障目标指令122之后的指令。可以在该指令指针所指的新目标指令处恢复对剩余的目标指令的执行,如框314所示,并且,如框310所示,可以将从故障目标指令122的执行获得的结果应用于该执行。
图4是根据本发明的说明性实施例的、用于在一个或多个不属于非正规异常的异常被取消屏蔽时在程序代码执行期间处理非正规异常的方法的示意图。对目标平台中的非正规输入控制位取消屏蔽,这样处理器102可以在目标代码执行期间检测非正规异常。
根据本发明的说明性实施例,处理器102可以如框402所示执行目标指令,并且可以如框404所示检测产生非正规异常的故障目标指令。但是,在这种情况下,故障目标指令也可能产生其他不属于非正规异常的异常,因为一个或多个不属于非正规控制位的控制位未被屏蔽。例如,故障目标指令可能产生另一种SSE异常(如“溢出”或“下溢”异常)。在不知道故障目标指令可能产生的所有其他异常的情况下,处理器102可能需要使用状态恢复机制来处理非正规异常,以下将对此进行详细描述。
根据本发明的说明性实施例,二进制翻译器108的异常处理程序109可以恢复源指令,该源指令是从其中翻译出上述故障目标指令的发生故障的源指令,如框406所示。然而,本发明不限于此,可以通过其他方式或异常处理程序来恢复该源指令。可以重新翻译和重新执行该恢复的源指令,如框408所示,且以下将结合图5对此进行详细说明。在执行该恢复的源指令之后,处理器102可以恢复剩余的目标指令的执行,如框410所示。
图5是根据本发明的说明性实施例的、用于处理从故障目标指令恢复的发生异常的源指令的方法的示意图。
根据本发明的说明性实施例,可以将恢复的源指令重新翻译成重新生成的目标指令,如框502所示。可以将该翻译与其他指令的翻译分开执行,以避免由于其他异常所导致的潜在影响。在框504处,可以将前缀代码(如前缀代码121)附于重新生成的目标指令(如目标指令122)。随后,处理器102可以执行前缀代码,如框506所示,以确定源代码是否使用DAZ机制。如果源代码中的控制指令将DAZ位设置为“1”(这指示源代码使用DAZ机制),则该前缀代码可以继续将一个或多个输入识别为非正规异常,并将属于非正规操作数的那些输入更改为零,如框508所示。然后,处理器102可以继续执行重新生成的目标指令(如目标指令122),如框510所示。
图6是根据本发明的说明性实施例的、用于构建具有大量非正规异常的翻译后的代码块的方法的示意图。
根据本发明的说明性实施例,可以将目标指令集(如目标指令集120)分成多个指令块,可以按这些指令块中的第一个指令的地址来区分这些指令块。通过确定在可能的故障目标指令的每一轮执行期间是否存在非正规操作数情形,可以进一步改进对在执行期间产生大量非正规异常的目标指令块的执行。
根据本发明的说明性实施例,可以创建用于对目标指令块的非正规异常计数的计数器(如计数器105(图1)),如框602所示。计数器105可以是基于高速缓存的计数器和/或可以是任何其他计数机制。计数器105可以在每次产生非正规异常时对目标指令块(如目标代码120的目标指令122和123)的非正规异常的数目进行计数,如框604所示。可以将由上述目标指令块产生的非正规异常的数目与预定的阈值进行比较,如框606所示。如果该数目达到该阈值,则可以重写该目标指令块以包括一个或多个内置指令(如内置指令124(图1)),如框608所示。在执行时,这些内置指令可能识别块中的每个SIMD指令的内嵌的(in-line)非正规状况,并在检测到非正规异常时将非正规异常的非正规操作数设置为零,以下将结合图7对此进行详细说明。然后,可以执行重写的目标指令块,如框610所示。
图7是根据本发明的某些说明性实施例的、用于执行目标指令块的方法的示意图。
根据本发明的说明性实施例,在执行目标指令(如指令123)之前,处理器102可以执行内置指令(例如指令124)来确定指令123是否产生非正规异常,如框702所示。如果未检测到或未产生非正规异常,如框704所示,便可以像任何其他指令一样执行目标指令123,如框706所示。但是,如果检测到非正规异常状况,则处理器102可以识别属于非正规操作数的目标指令123的输入,并将零值赋予这些非正规操作数,如框708所示。随后,可以利用非正规操作数的该新赋值来执行目标指令123,如框710所示。
虽然本文已经示出并描述了本发明的某些特征,但是,本领域技术人员现在仍可以得到有关这些特征的许多修改、替换、变更和等同物。因此,应当懂得,期望附录的权利要求涵盖落在本发明的要旨之内的所有此类修改和变更。
Claims (29)
1.一种方法,包括:
将源指令的集合翻译成目标指令的集合;
执行目标指令的所述集合;以及
如果源指令的所述集合使用非正规(denormal)输入处理机制,则对非正规输入控制位取消屏蔽。
2.如权利要求1所述的方法,其特征在于,包括:
通过执行目标指令的所述集合来检测故障目标指令的至少一个非正规异常;
如果屏蔽了对应于一个或多个不属于非正规异常的异常的一个或多个控制位,则将预定值赋予所述故障目标指令的一个或多个非正规操作数;以及
利用所述一个或多个非正规操作数的所述预定值来执行所述故障目标指令。
3.如权利要求2所述的方法,其特征在于,包括:
通过应用从所述故障目标指令的所述执行获得的结果,恢复所述故障目标指令之后的目标指令的执行。
4.如权利要求3所述的方法,其特征在于,恢复所述故障目标指令之后的目标指令的执行包括:
将指令指针从指向所述故障目标指令移到指向要执行的后续目标指令;以及
执行所述后续目标指令。
5.如权利要求2所述的方法,其特征在于,所述预定值是零。
6.如权利要求1所述的方法,其特征在于,包括:
通过执行目标指令的所述集合来检测故障目标指令的至少一个非正规异常;
如果对对应于一个或多个不属于非正规异常的异常的一个或多个控制位取消屏蔽,则恢复从其中翻译出所述故障目标指令的源指令;以及
将所述源指令重新翻译成重新生成的目标指令。
7.如权利要求6所述的方法,其特征在于,包括:
确定源指令的所述集合是否使用所述非正规输入处理机制;
如果使用所述非正规输入处理机制,则识别作为所述非正规异常的输入的一个或多个非正规操作数;以及
将预定值赋予所述一个或多个非正规操作数。
8.如权利要求7所述的方法,其特征在于,所述预定值是零。
9.如权利要求1所述的方法,其特征在于,还包括:
对执行目标指令块期间的非正规异常的数目计数;以及
如果非正规异常的所述数目达到预定的阈值,则重写所述目标指令块以包括一个或多个内置指令。
10.如权利要求9所述的方法,其特征在于,还包括:
执行所述一个或多个内置指令的至少其中之一,以确定目标指令是否产生非正规异常;
如果所述目标指令产生非正规异常,则识别所述目标指令的一个或多个非正规操作数;
将零值赋予所述一个或多个非正规操作数;以及
利用非正规操作数的所赋零值执行所述目标指令。
11.如权利要求1所述的方法,其特征在于,所述非正规输入处理机制是DAZ机制。
12.一种设备,包括:
动态二进制翻译器,所述动态二进制翻译器将源指令的集合翻译成目标指令的集合,并且如果源指令的所述集合使用非正规输入处理机制,则对非正规输入控制位取消屏蔽;以及
处理器,所述处理器用于执行目标指令的所述集合,以检测故障目标指令的至少一个非正规异常。
13.如权利要求12所述的设备,其特征在于,所述动态二进制翻译器包括异常处理程序,所述异常处理程序用于将预定值赋予所述故障目标指令的一个或多个非正规操作数,以及所述处理器用于利用所述一个或多个非正规操作数的所述预定值来执行所述故障目标指令。
14.如权利要求13所述的设备,其特征在于,所述处理器通过应用从所述故障目标指令的所述执行获得的结果来恢复所述故障目标指令之后的目标指令的执行。
15.如权利要求14所述的设备,其特征在于,所述处理器通过将指令指针从指向所述故障目标指令移到指向要执行的后续目标指令来恢复所述故障目标指令之后的目标指令的执行。
16.如权利要求12所述的设备,其特征在于,所述动态二进制翻译器包括异常处理程序,所述异常处理程序恢复从其中翻译出所述故障目标指令的源指令,并将所述源指令重新翻译成重新生成的目标指令。
17.如权利要求16所述的设备,其特征在于,所述处理器确定源指令的所述集合是否使用所述非正规输入处理机制;识别作为所述非正规异常的输入的一个或多个非正规操作数;以及如果使用了所述非正规输入处理机制,则将预定值赋予所述一个或多个非正规操作数。
18.如权利要求12所述的设备,其特征在于,所述处理器对执行目标指令块期间的非正规异常的数目计数;以及如果非正规异常的所述数目达到预定阈值,则重写所述目标指令块以包括一个或多个内置指令。
19.如权利要求18所述的设备,其特征在于,所述处理器执行所述内置指令的至少其中之一以确定目标指令是否产生非正规异常;识别所述故障目标指令的一个或多个非正规操作数;以及如果所述目标指令产生非正规异常,则将预定值赋予所述一个或多个非正规操作数。
20.一种系统,包括:
存储器,所述存储器存储源指令的集合、目标指令的集合以及动态二进制翻译器,其中所述动态二进制翻译器适于将源指令的所述集合翻译成目标指令的所述集合,并且如果源指令的所述集合使用非正规输入处理机制,则对非正规输入控制位取消屏蔽;以及
处理器,所述处理器用于执行目标指令的所述集合,以检测故障目标指令的至少一个非正规异常。
21.如权利要求20所述的系统,其特征在于,所述动态二进制翻译器包括异常处理程序,所述异常处理程序将预定值赋予所述故障目标指令的一个或多个非正规操作数;以及所述处理器利用所述一个或多个非正规操作数的所述预定值来执行所述故障目标指令。
22.如权利要求21所述的系统,其特征在于,所述处理器通过应用从所述故障目标指令的所述执行获得的结果来恢复所述故障目标指令之后的目标指令的执行。
23.如权利要求20所述的系统,其特征在于,所述动态二进制翻译器包括异常处理程序,所述异常处理程序恢复从其中翻译出所述故障目标指令的源指令,并将所述源指令重新翻译成重新生成的目标指令。
24.如权利要求23所述的系统,其特征在于,所述处理器确定源指令的所述集合是否使用所述非正规输入处理机制;识别作为所述非正规异常的输入的一个或多个非正规操作数;以及如果使用了所述非正规输入处理机制,则将预定值赋予所述一个或多个非正规操作数。
25.如权利要求20所述的系统,其特征在于,所述处理器对执行目标指令块期间的非正规异常的数目计数,以及如果非正规异常的所述数目达到预定阈值,则重写所述目标指令块以包括一个或多个内置指令。
26.如权利要求25所述的系统,其特征在于,所述处理器执行所述内置指令的至少其中之一以确定目标指令是否产生非正规异常;识别所述故障目标指令的一个或多个非正规操作数;以及如果所述目标指令产生非正规异常,则将预定值赋予所述一个或多个非正规操作数。
27.一种其上存储了指令集的机器可读介质,所述指令集被机器执行时,导致将源指令的集合翻译成目标指令的集合,并且如果源指令的所述集合使用非正规输入处理机制,则对非正规输入控制位取消屏蔽。
28.如权利要求27所述的机器可读介质,其特征在于,所述指令导致通过执行目标指令的所述集合来检测故障目标指令的至少一个非正规异常;如果屏蔽了对应于一个或多个不属于非正规异常的异常的一个或多个控制位,则将预定值赋予所述故障目标指令的一个或多个非正规操作数;以及利用所述一个或多个非正规操作数的所述预定值来执行所述故障目标指令。
29.如权利要求27所述的机器可读介质,其特征在于,所述指令导致通过执行目标指令的所述集合来检测故障目标指令的至少一个非正规异常;如果未屏蔽对应于一个或多个不属于非正规异常的异常的一个或多个控制位,则恢复从其中翻译出所述故障目标指令的源指令;以及将所述源指令重新翻译成重新生成的目标指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/166,628 | 2005-06-27 | ||
US11/166,628 US7363471B2 (en) | 2005-06-27 | 2005-06-27 | Apparatus, system, and method of dynamic binary translation supporting a denormal input handling mechanism |
PCT/US2006/025321 WO2007002809A1 (en) | 2005-06-27 | 2006-06-27 | Apparatus, system, and method of dynamic binary translation supporting a denormal input handling mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101208661A true CN101208661A (zh) | 2008-06-25 |
CN101208661B CN101208661B (zh) | 2011-12-21 |
Family
ID=37054613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800229828A Expired - Fee Related CN101208661B (zh) | 2005-06-27 | 2006-06-27 | 支持非正规输入处理机制的动态二进制翻译的方法和设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7363471B2 (zh) |
EP (1) | EP1899809A1 (zh) |
JP (2) | JP4814937B2 (zh) |
KR (3) | KR20080011447A (zh) |
CN (1) | CN101208661B (zh) |
WO (1) | WO2007002809A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104205088A (zh) * | 2012-03-30 | 2014-12-10 | 英特尔公司 | 用于实现页级自动二进制转换的硬件剖析机制 |
CN107533622A (zh) * | 2014-12-27 | 2018-01-02 | 迈克菲有限责任公司 | 可信二进制文件翻译 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090210678A1 (en) * | 2005-08-01 | 2009-08-20 | Simon Ford | Handling of Denormals In Floating Point Number Processim |
US7757221B2 (en) * | 2005-09-30 | 2010-07-13 | Intel Corporation | Apparatus and method for dynamic binary translator to support precise exceptions with minimal optimization constraints |
US8103858B2 (en) * | 2008-06-30 | 2012-01-24 | Intel Corporation | Efficient parallel floating point exception handling in a processor |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US8775153B2 (en) * | 2009-12-23 | 2014-07-08 | Intel Corporation | Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment |
WO2013048468A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
US9032381B2 (en) | 2012-06-29 | 2015-05-12 | Intel Corporation | State recovery methods and apparatus for computing platforms |
WO2014043886A1 (en) * | 2012-09-21 | 2014-03-27 | Intel Corporation | Methods and systems for performing a binary translation |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
US9934380B2 (en) * | 2014-12-23 | 2018-04-03 | Mcafee, Llc | Execution profiling detection of malicious objects |
US9832207B2 (en) * | 2014-12-23 | 2017-11-28 | Mcafee, Inc. | Input verification |
US9996690B2 (en) * | 2014-12-27 | 2018-06-12 | Mcafee, Llc | Binary translation of a trusted binary with input tagging |
GB2537936B (en) * | 2015-05-01 | 2020-01-22 | Advanced Risc Mach Ltd | System and method for translating a guest instruction of a guest architecture into at least one host instruction of a host architecture |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03240831A (ja) * | 1990-02-19 | 1991-10-28 | Fujitsu Ltd | 割り込み処理方式 |
US5886915A (en) * | 1995-11-13 | 1999-03-23 | Intel Corporation | Method and apparatus for trading performance for precision when processing denormal numbers in a computer system |
US6000028A (en) * | 1996-01-29 | 1999-12-07 | Digital Equipment Corporation | Means and apparatus for maintaining condition codes in an unevaluated state |
US6247117B1 (en) * | 1999-03-08 | 2001-06-12 | Advanced Micro Devices, Inc. | Apparatus and method for using checking instructions in a floating-point execution unit |
US6356615B1 (en) | 1999-10-13 | 2002-03-12 | Transmeta Corporation | Programmable event counter system |
US6681322B1 (en) * | 1999-11-26 | 2004-01-20 | Hewlett-Packard Development Company L.P. | Method and apparatus for emulating an instruction set extension in a digital computer system |
US7000226B2 (en) * | 2002-01-02 | 2006-02-14 | Intel Corporation | Exception masking in binary translation |
US6895460B2 (en) * | 2002-07-19 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Synchronization of asynchronous emulated interrupts |
-
2005
- 2005-06-27 US US11/166,628 patent/US7363471B2/en not_active Expired - Fee Related
-
2006
- 2006-06-27 KR KR1020077030439A patent/KR20080011447A/ko not_active Application Discontinuation
- 2006-06-27 KR KR1020107029474A patent/KR101196963B1/ko active IP Right Grant
- 2006-06-27 WO PCT/US2006/025321 patent/WO2007002809A1/en active Application Filing
- 2006-06-27 CN CN2006800229828A patent/CN101208661B/zh not_active Expired - Fee Related
- 2006-06-27 KR KR1020127009460A patent/KR20120059620A/ko not_active Application Discontinuation
- 2006-06-27 EP EP06785816A patent/EP1899809A1/en not_active Withdrawn
- 2006-06-27 JP JP2008516047A patent/JP4814937B2/ja not_active Expired - Fee Related
-
2010
- 2010-11-09 JP JP2010251239A patent/JP4815008B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104205088A (zh) * | 2012-03-30 | 2014-12-10 | 英特尔公司 | 用于实现页级自动二进制转换的硬件剖析机制 |
CN107533622A (zh) * | 2014-12-27 | 2018-01-02 | 迈克菲有限责任公司 | 可信二进制文件翻译 |
Also Published As
Publication number | Publication date |
---|---|
KR20110014679A (ko) | 2011-02-11 |
JP2011070694A (ja) | 2011-04-07 |
JP4815008B2 (ja) | 2011-11-16 |
KR20120059620A (ko) | 2012-06-08 |
WO2007002809A1 (en) | 2007-01-04 |
KR101196963B1 (ko) | 2012-11-05 |
EP1899809A1 (en) | 2008-03-19 |
JP4814937B2 (ja) | 2011-11-16 |
KR20080011447A (ko) | 2008-02-04 |
JP2008546121A (ja) | 2008-12-18 |
US7363471B2 (en) | 2008-04-22 |
US20060294508A1 (en) | 2006-12-28 |
CN101208661B (zh) | 2011-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101208661B (zh) | 支持非正规输入处理机制的动态二进制翻译的方法和设备 | |
CN101290565B (zh) | 执行乘法函数的方法和设备 | |
US8381194B2 (en) | Methods and apparatuses for selective code coverage | |
CN102331921B (zh) | 用于检测十进制浮点量异常的方法和系统 | |
CN104881611A (zh) | 保护软件产品中的敏感数据的方法和装置 | |
US10108296B2 (en) | Method and apparatus for data processing method | |
US20170357513A1 (en) | Transmitting data between execution slices of a multi-slice processor | |
US10241800B2 (en) | Split-level history buffer in a computer processing unit | |
US20060168485A1 (en) | Updating instruction fault status register | |
Lemire | Number parsing at a gigabyte per second | |
KR101695341B1 (ko) | 솔리드 스테이트 저장 장치의 수명을 향상시키기 위한 숫자 표현 | |
JP2016133986A (ja) | 処理プログラム、処理装置および処理方法 | |
CN115357216A (zh) | 数据处理方法、介质、电子设备和程序产品 | |
CN114902336B (zh) | 具有子字段最小和最大箝位的内容可寻址存储器 | |
CN107592924B (zh) | 用于对由处理器执行的指令进行优化的方法和装置 | |
US20060015706A1 (en) | TLB correlated branch predictor and method for use thereof | |
US11144280B2 (en) | Method and apparatus for processing data | |
KR101700405B1 (ko) | 레지스터, 프로세서 및 프로세서 제어 방법 | |
CN101601011B (zh) | 用于对计算机架构条件码设置进行有效仿真的方法和装置 | |
CN112199160B (zh) | 虚拟指令还原方法、装置、设备及存储介质 | |
US20060095896A1 (en) | Apparatus, system, and method of removing exception related dependencies | |
JP4533432B2 (ja) | Tlb相関型分岐予測器及びその使用方法 | |
WO2023108600A1 (en) | System, method and apparatus for reducing power consumption of error correction coding using compacted data blocks | |
CN117008972B (zh) | 一种指令分析方法、装置、计算设备及存储介质 | |
US20050149913A1 (en) | Apparatus and methods to optimize code in view of masking status of exceptions |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111221 Termination date: 20140627 |
|
EXPY | Termination of patent right or utility model |