CN102023841B - 微处理器以及相关指令执行方法 - Google Patents
微处理器以及相关指令执行方法 Download PDFInfo
- Publication number
- CN102023841B CN102023841B CN201010261278.6A CN201010261278A CN102023841B CN 102023841 B CN102023841 B CN 102023841B CN 201010261278 A CN201010261278 A CN 201010261278A CN 102023841 B CN102023841 B CN 102023841B
- Authority
- CN
- China
- Prior art keywords
- mentioned
- instruction
- operand
- denormal
- performance element
- 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
Links
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
Abstract
本发明提供一种微处理器,包括多个执行单元,用以接收多个指令以及上述指令中的指令操作数并用以执行上述指令。一指令调度器发送上述指令至上述执行单元并且选择上述指令操作数的来源。上述执行单元的其中至少一者检测出上述指令的其中一者的上述操作数中的一操作数为一非正规操作数、相应于检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行;并且相应于检测出上述非正规操作数,提供上述非正规操作数至上述指令调度器。上述指令调度器相应于上述指示,将上述非正规操作数正规化,并且当上述指令被重新执行时,提供上述已正规化操作数至上述执行单元。
Description
技术领域
本发明是有关于微处理器中的浮点数(floating point number)计算领域,特别是有关于具有非正规数(denormal number)的浮点数计算。
背景技术
在一微处理器中所表示的浮点数本文中,非零有限数值或操作数(operand)分为两个类别:正规化数值(normalized number)(或正规数(normal number))以及非正规化数值(denormalized number)(或非正规数(denormal number))。举例来说,更详细的相关讨论请共同参照由英特尔(Intel)公司所发表的文献“IA-32 Architecture Software Developer’sManual,Volume 1:Basic Architecture,2002,Order Number 245470-008”中的段落4.8.2.1以及4.8.3.2中的内容,此处仅摘要列举其结果。一正规数、或正规化数或以正规化的形式所编码的数值具有一个有效位数(significand)以及一个指数部分(exponent),其中有效位数为数字1与2之间的一个实数(亦即,一整数字元接着组成一小数(fraction)的数个位),指数部分则指定数值中二进小数点的位置。当一个浮点数非常趋近于0时,由于指数的范围不足够大来补偿将二进小数点往右移以消除前置零,使得前述正规化数值格式无法再使用于表示此数值。当指数(偏差)为0时,较小的数仅可通过令整数字元(以及或许其它前置位)的有效位数为0来表示。在这个范围之内的数值便称为非正规数、或非正规化数或非正规化形式的数值。前置零与非正规化数的使用可允许表示较小的数。然而,这样的非正规化将造成精度的损失(前置零将减少小数部分的有效位数)。
一般而言,一微处理器中的浮点数单元用以执行以正规化形式表示的操作数的计算。因此,当一个指令指定一非正规操作数(denormal operand)时,微处理器将此非正规操作数转换为一正规操作数,以便执行此指令所指定的计算。这个程序将会浪费一相对大量的时间及/或要求一非固定数量的执行时间来增加指令执行延迟(latency),其将引发讨论于下的问题。
发明内容
本发明实施例提供一种微处理器。微处理器包含多个执行单元,用以接收多个指令以及上述指令中的指令操作数并用以执行上述指令。微处理器也包含一指令调度器,用以发送上述指令至上述执行单元并且选择上述指令操作数的来源。上述执行单元的其中至少一者用以:检测出上述指令的其中一者的上述操作数中的一操作数为一非正规操作数、相应于检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行;并且相应于检测出上述非正规操作数,提供上述非正规操作数至上述指令调度器。上述指令调度器用以:相应于上述指示,将上述非正规操作数正规化,并且当上述指令被重新执行时,提供上述已正规化操作数至上述执行单元。
本发明另一实施例提供一种指令处理方法,用以于一微处理器中处理一指定一非正规操作数的一指令,其中上述微处理器包含一执行单元以及一指令调度器。方法包括检测出上述指令的上述操作数为一非正规操作数,其中上述检测步骤是由上述执行单元所执行。方法也包括相应于上述检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行,其中上述产生上述指示的步骤是由上述执行单元所执行。方法也包括相应于上述检测出上述非正规操作数,提供上述非正规操作数至上述指令调度器,其中上述提供上述非正规操作数的步骤是由上述执行单元所执行。方法也包括相应于上述指示,将上述非正规操作数正规化,其中上述将上述非正规操作数正规化的步骤是由上述指令调度器所执行。方法也包括于上述提供上述非正规操作数之后,重新执行上述指令。方法也包括相应于上述重新执行上述指令,提供上述已正规化操作数至上述执行单元。
本发明又一实施例提供一种微处理器。微处理器包括一微码单元以及多个执行单元。上述执行单元用以接收多个指令以及上述指令中的指令操作数并用以执行上述指令。上述执行单元的其中至少一者用以:检测出上述指令的其中一者的上述操作数中的一操作数为一非正规操作数;以及相应于检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行。上述微处理器用以相应于上述指示,调用(invoke)上述微码单元用以将上述非正规操作数正规化。上述微处理器用以当上述指令被重新执行时,提供上述已正规化操作数至上述执行单元。
为使本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举出较佳实施例,并配合所附图式,作详细说明如下。
附图说明
图1显示一依据本发明实施例的一微处理器的方块图。
图2显示图1的微处理器的操作流程图。
[主要元件标号说明]
100~微处理器;
102~指令高速缓存;
104~指令转译器;
106~暂存器别名表;
108~保留立占;
112~执行单元;
114~重排序缓冲器;
116~调度器;
118~结构暂存器集;
122~多工器;
132~信号;
136~结果总线;
138~旗标;
142~操作数缓冲器;
144~正规器;
146~标记缓冲器;
148~项目;
152~信号;
154~标记;
202、204、206、208、212、214、216~执行步骤。
具体实施方式
请参见图1,显示一依据本发明实施例的一微处理器100的方块图。
微处理器100包含一个指令高速缓存(cache)102,其可从系统存储器中快取程序指令。一指令转译器(translator)104从指令高速缓存102中接收程序指令并且将接收到的指令转译为微指令(microinstruction)。一暂存器别名表(register alias table,以下简称RAT)106依照程序顺序从指令转译器104中接收微指令。RAT 106于一重排序缓冲器(reorder buffer,以下简称ROB)114中为每一个微指令配置一项目(entry)148、产生这些微指令的相依性信息并且依照程序顺序发送这些微指令及其相依性信息至保留站108中。ROB114中每一项目148保持与此指令相关的信息,包含一旗标138,其表示此指令是否需要被重新执行(replay),因为此指令指定一非正规操作数,其细节将于下讨论。
前述微指令被发送至执行单元112来执行。于一实施例中,每个执行单元112具有其对应的保留站108,用以保持将发送至执行单元112的指令。执行单元112在结果总线136上提供其执行结果至ROB 114。当一执行单元112(即一浮点运算单元112)检测出其已接收到用以执行的一指令具有一或多个非正规操作数并且浮点运算单元112无法在一非正规操作数上执行所需的操作时,浮点运算单元112将输出一个指定ROB 114中配置给该指令的项目148的标记(tag)154。其中,标记154为进入ROB 114的项目148的一个索引。此外,浮点运算单元112也发出一信号132至ROB 114,以致使ROB 114来设定在与该指令相关的项目148中的旗标138。当一个指令变成微处理器100中最旧的指令且旗标138表示其需要被重新执行时,ROB 114发出一重新执行信号152至保留站108,以表示此条件,并且提供欲重新执行的指令给保留站108。
多个多工器122提供指令操作数至执行单元112。多工器122接收来自多个来源的操作数,包括:从执行单元112本身所反馈的结果总线136;与ROB 114相关的暂时结果暂存器;一结构暂存器集(general pupose registers,GPRs)118;以及一调度器(scheduler)116中的一操作数缓冲器142。调度器116将指令从保留站108发送至执行单元112并选择指令操作数的来源,以便连同其对应的指令提供给执行单元112。
调度器116包含一标记缓冲器146,其可由浮点运算单元112中接收标记154。调度器116也接收表示浮点运算单元112已检测出指定有一非正规操作数的一指令的指示132。调度器116也包含可由浮点运算单元112的结果总线136上接收非正规操作数的操作数缓冲器142。调度器116也包含一正规器(normalizer)144,其可由操作数缓冲器142中接收非正规操作数并将其转换为一正规化形式的操作数,同时,将已正规化操作数写回操作数缓冲器142中。于一实施例中,正规器144为一移位器(shifter),可于正规化完成之前,将非正规操作数的有效位数左移并且可以利用等同于有效位数被左移的位位置数目的一个数量来递减非正规操作数的指数部分。于一实施例中,正规器144于每一时钟周期将有效位数左移一位、将指数减一并将中间结果写回操作数缓冲器142中。于一实施例中,由浮点运算单元112所处理的操作数的数据格式是与指令所指定的结构化操作数格式不同。也就是说,浮点运算单元112包含一个转换器来转换一结构化数据格式操作数成为非结构化数据格式以由浮点运算单元112加以处理并且包含一个转换器来转换前述非结构化数据格式结果回结构化数据格式,以引退至GPR 118。前述非结构化数据格式包含额外的指数位,以提供非正规数值的正规化。具体来说,当正规器144转换一非正规操作数成为一正规操作数时,其将非正规操作数从结构化数据格式转换为非结构化数据格式。
在一实施例中,上述执行单元被设计为不具有用以将非正规数正规化的一电路,其中上述指令调度器具有用以将上述非正规操作数正规化的一电路。
在一实施例中,多个保留站用以于上述指令等待被上述指令调度器发送至上述执行单元时保持上述指令,其中上述执行单元被设计为不具有用以储存上述指令操作数的储存单元。
参见图2,显示依据图1的微处理器100的操作流程图。流程开始于步骤202。
于步骤202,浮点运算单元112检测出其接收到具有非正规操作数的指令。浮点运算单元112相应地输出此指令的标记154、发出信号132以表示此条件至调度器116以及ROB 114,并输出非正规操作数而非输出其产生的结果在其结果总线136上。接着执行步骤204。
于步骤204,调度器116将非正规操作数从结果总线136加载至操作数缓冲器142并且储存标记154在其标记缓冲器146中并且标记此非正规操作数条件。于一实施例中,调度器116一个时间只可处理一个具有非正规操作数条件的指令。于本实施例中,调度器116可比对新指令的标记154与标记缓冲器146的值,并且若新指令较旧于调度器116目前正在执行正规化的操作数的指令时,调度器116放弃目前指令、将标记缓冲器146的值更新为新的标记154的值、并且于步骤206开始将新指令的操作数正规化。接着执行步骤206。
于步骤206,调度器116正规化在操作数缓冲器142中的操作数。接着执行步骤208。
于步骤208,前述具有非正规操作数的指令变为微处理器100中最旧的指令并且ROB 114标记旗标138,表示需要一个重新执行。对应地,ROB 114发出重新执行信号152将指令重新派送其回到保留站来重新执行指令。于一实施例中,ROB 114也同时重新执行所有较旧于此指令的指令;而于另一实施例中,ROB 114则只会重新执行较旧于此指令且相依于此指令的指令。接着执行判断步骤212。
于判断步骤212,调度器116检测出前述指令将被重新执行,亦即,调度器116检测到标记缓冲器146中的有效值与保留站108中准备要发出来执行的一指令的标记相符合。若调度器116判断出操作数缓冲器142中的非正规操作数已完成正规化时,执行步骤216;反之,则执行步骤214。
于步骤214,调度器116维持浮点运算单元112的保留站为关闭,直到调度器116完成非正规操作数的正规化为止。接着执行步骤216。
于步骤216,调度器116将指令从保留站108发送至浮点运算单元112并且控制多工器122提供来自操作数缓冲器142而非操作数的其它正规化来源,例如来自于GPR 118、ROB 114或结果总线136的已正规化操作数至浮点运算单元112。浮点运算单元112接着利用已正规化操作数执行指令。注意的是,一个指令可包含一个以上非正规形式的操作数。于一实施例中,当指令是以调度器116所正规化后的操作数重新执行时,若浮点运算单元112检测出一非正规操作数时(亦即,一第二非正规操作数,因为第一非正规操作数现在已被正规化),其将再一次发出信号132以及标记154,使得调度器116将正规化第二非正规操作数并且ROB 114将依据第二图所示的流程图再一次重新执行指令。流程结束于步骤216。
本案发明人观察到非正规操作数的发生相对地较少,使得在微处理器100中执行的程序所处理的大量多数的数据集中,假设已正规化操作数所得到的优点超过了与重新执行一包含一非正规操作数的指令所带来的延迟相关的代价。本发明另外一些优点是来自调度器可于一固定的执行时间基础上发送指令。也就是说,调度器可以准确地知道一个给定执行单元需要多少时钟来执行一给定类型的指令。本发明其中一优点是降低了调度器的复杂度。本发明另一优点在于调度器可较早于在其等待知道一执行单元已经完成一个可变执行时间指令的执行之前发送指令来提升效能。也就是说,假设指令B具有一相依性在较旧的指令A上。假设调度器发出一指令的时间与指令到达执行单元以执行的时间之间有一些已知的延迟X。通过一固定的执行时间,因为调度器准确地知道何时执行指令A的执行单元112将提供其结果,调度器可于指令A完成之前的X个时钟发出指令B。这些优点可通过一相对地较小的成本来实现。
在一实施例中,上述执行单元相应于检测出上述非正规操作数,提供上述非正规操作数至上述指令调度器,而非将上述非正规操作数正规化,上述执行单元执行上述指令于一固定的执行时间中,其使得上述指令调度器于一固定的执行时间基础上发送指令至上述执行单元。
一种传统解决方案是将保留站设置在执行单元中,使得其得以在执行单元中内部地重新执行,而非由ROB从外部地重新执行,并设置保留站来保持这些指令的指令操作数。为了保持前述指令操作数,此方案将具有可变的执行时间以及增加的保留站数目缺点。相反地,本发明的解决方案造成一固定的执行时间并允许本发明的保留站变小,因为这些保留站并不需要保持这些操作数;或者,这些操作数可从各种来源直接(on the fly)应用。另一种传统解决方案包含一大的以及耗时间/电力的固定执行时间正规器电路于浮点运算单元(FPU)中,以便保持固定的执行时间统治(regime)。
虽然前述实施例中调度器116用以转换非正规操作数至一正规操作数,另一实施例可考虑相应于浮点运算单元112于检测到一非正规来源操作数而致使微处理器100产生一内部例外时,利用由微处理器100中的一微码单元所执行的微码来转换非正规操作数至一正规操作数。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。例如,软件可致能,例如,功能、制造、模型化、仿真、描述及/或测试本发明所述的装置以及方法。上述可通过使用一般程序语言(例如:C、C++)、硬件描述语言(HDL)包括Verilog HDL、VHDL等等来实现。此类软件可以以程序码的型态置放于任何已知的计算机可用媒体,例如一磁带、半导体、磁盘、软盘、硬盘或光盘片(例如:CD-ROM、DVD-ROM等等)、一网络、有线连线、无线或其它通讯媒体。其中,当程序码被机器,如计算机加载且执行时,此机器可成为用以实施本发明的装置。本发明所述的装置以及方法可包含于一半导体智财核心,例如一微处理器核心(嵌入于HDL),并转换成集成电路的硬件产品。此外,本发明实施例所述的装置以及方法可包含具有硬件以及软件的组合的实体实施例。因此本发明的保护范围当视所附的权利要求范围所界定者为准。特别来说,本发明可被实作在一微处理器装置中,而使用于一一般用途处理器中。最后,任何本领域技术人员,可基于本发明所揭露的概念以及特定实施例,在不脱离本发明的精神和范围内,可做些许更动与润饰以达到本发明的相同目的。
Claims (17)
1.一种微处理器,包括:
多个执行单元,用以接收多个指令以及上述指令中的指令操作数并用以执行上述指令;以及
一指令调度器,用以发送上述指令至上述执行单元并且用以选择上述指令操作数的来源;
其中上述执行单元的其中至少一者用以:
检测出上述指令的其中一者的上述操作数中的一操作数为一非正规操作数;
相应于检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行;以及
相应于检测出上述非正规操作数,提供上述非正规操作数至上述指令调度器;
其中上述指令调度器用以:
相应于上述指示,将上述非正规操作数正规化;以及
当上述指令被重新执行时,提供上述已正规化操作数至上述执行单元。
2.根据权利要求1所述的微处理器,其中若于上述指令被重新执行时上述指令调度器尚未完成上述正规化上述非正规操作数,上述指令调度器用以在上述指令调度器完成上述正规化上述非正规操作数之前,等待发送上述指令至上述执行单元。
3.根据权利要求1所述的微处理器,还包括:
一重排序缓冲器,耦接至上述执行单元,上述重排序缓冲器包括多个项目,每一上述项目用以储存一指令的执行信息,每一上述项目具有一旗标,用以表示其储存的上述指令是否需要被重新执行;
其中上述重排序缓冲器用以相应于上述执行单元所产生关于上述指令需要被重新执行的上述指示,设定上述指令所对应的上述项目的上述旗标。
4.根据权利要求3所述的微处理器,其中上述重排序缓冲器用以相应于检测到上述指令的项目中的上述旗标被设定时,于上述指令变成上述重排序缓冲器中的最旧指令时重新执行上述指令。
5.根据权利要求3所述的微处理器,其中上述执行单元用以相应于检测出上述非正规操作数,提供上述重排序缓冲器一标记,上述标记用以识别上述重排序缓冲器中的上述指令的项目,其中上述重排序缓冲器用以使用上述标记来设定上述旗标,其中上述指令调度器用以储存上述标记并接着使用储存的上述标记来检测上述指令于何时被重新执行。
6.根据权利要求1所述的微处理器,还包括:
一总线,耦接至上述执行单元;
其中在上述指令的一初始执行期间,该执行单元用以相应于检测出上述非正规操作数,在上述总线上提供上述非正规操作数至上述指令调度器;
其中在上述指令的上述初始执行之后的一执行期间,该执行单元用以利用上述已正规化操作数,在上述总线上提供上述执行单元所产生的上述指令的一结果。
7.根据权利要求1所述的微处理器,其中上述执行单元用以:
检测出上述指令的一第二操作数为一第二非正规操作数;
相应于检测出上述第二非正规操作数,产生一第二指示,表示上述指令需要被重新执行;以及
相应于检测出上述第二非正规操作数,提供上述第二非正规操作数至上述指令调度器;
其中上述指令调度器用以:
相应于上述第二指示,将上述第二非正规操作数正规化;以及
当上述指令被重新执行时,提供已正规化的上述第二操作数至上述执行单元。
8.根据权利要求1所述的微处理器,其中若在上述指令的上述重新执行之前,上述指令调度器储存有上述指令的上述已正规化操作数且上述执行单元因为一第二指令具有一非正规操作数以及上述第二指令的执行顺序较新于上述指令而产生关于一第二指令需要被重新执行的一指示时,上述指令调度器用以放弃上述指令的上述已正规化操作数并且开始将上述第二指令的上述非正规操作数正规化。
9.一种指令处理方法,用以于一微处理器中处理一指定一非正规操作数的一指令,其中上述微处理器包含一执行单元以及一指令调度器,该方法包括下列步骤:
检测出上述指令的操作数为一非正规操作数,其中上述检测步骤是由上述执行单元所执行;
相应于上述检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行,其中上述产生上述指示的步骤是由上述执行单元所执行;
相应于上述检测出上述非正规操作数,提供上述非正规操作数至上述指令调度器,其中上述提供上述非正规操作数的步骤是由上述执行单元所执行;
相应于上述指示,将上述非正规操作数正规化,其中上述将上述非正规操作数正规化的步骤是由上述指令调度器所执行;
于上述提供上述非正规操作数之后,重新执行上述指令;以及
相应于上述重新执行上述指令,提供上述已正规化操作数至上述执行单元。
10.根据权利要求9所述的指令处理方法,还包括:
相应于上述重新执行上述指令,检测到上述指令调度器尚未完成上述正规化上述非正规操作数;以及
在上述指令调度器完成上述正规化上述非正规操作数之前,等待发送上述指令至上述执行单元。
11.根据权利要求9所述的指令处理方法,其中上述微处理器也包含一重排序缓冲器,上述重排序缓冲器包括多个项目,每一上述项目用以储存一指令的执行信息,每一上述项目具有一旗标,用以表示其储存的上述指令是否需要被重新执行,上述方法还包括:
相应于上述产生上述指令需要被重新执行的上述指示,设定上述指令所对应的上述项目的上述旗标。
12.根据权利要求11所述的指令处理方法,还包括:
相应于检测到上述指令的项目中的上述旗标被设定时,于上述指令变成上述重排序缓冲器中的最旧指令时重新执行上述指令。
13.根据权利要求11所述的指令处理方法,还包括:
相应于检测出上述非正规操作数,提供上述重排序缓冲器一标记,上述标记用以识别上述重排序缓冲器中的上述指令的项目;以及
储存上述标记并接着使用储存的上述标记来检测上述指令于何时被重新执行,其中上述储存以及使用上述标记的步骤是由上述指令调度器所执行。
14.根据权利要求9所述的指令处理方法,其中上述微处理器也包含一总线,耦接至上述执行单元,上述方法还包括:
在上述指令的一初始执行期间,相应于上述检测出上述非正规操作数,在上述总线上提供上述非正规操作数至上述指令调度器,其中上述在上述总线上提供上述非正规操作数至上述指令调度器的步骤是由上述执行单元所执行;以及
在上述指令的上述初始执行之后的一执行期间,利用上述已正规化操作数,在上述总线上提供上述执行单元所产生的上述指令的一结果,其中上述在上述总线上提供上述指令的上述结果的步骤是由上述执行单元所执行。
15.根据权利要求9所述的指令处理方法,还包括:
检测出上述指令的一第二操作数为一第二非正规操作数,其中上述检测出上述指令的上述第二操作数的步骤是由上述执行单元所执行;
相应于上述检测出上述第二非正规操作数,产生一第二指示,表示上述指令需要被重新执行,其中上述产生上述第二指示的步骤是由上述执行单元所执行;
相应于上述检测出上述第二非正规操作数,提供上述第二非正规操作数至上述指令调度器,其中上述提供上述第二非正规操作数的步骤是由上述执行单元所执行;
相应于上述第二指示,将上述第二非正规操作数正规化,其中上述将上述第二非正规操作数正规化的步骤是由上述指令调度器所执行;
于上述提供上述第二非正规操作数之后,重新执行上述指令;以及
相应于上述重新执行上述指令,提供已正规化的上述第二操作数至上述执行单元。
16.根据权利要求9所述的指令处理方法,还包括:
检测到一条件成立,其中:(1)在上述重新执行上述指令之前,上述指令调度器储存有上述指令的上述已正规化操作数,(2)上述执行单元因为一第二指令具有一非正规操作数,已产生关于一第二指令需要被重新执行的一指示,并且(3)上述第二指令的执行顺序较新于上述指令;
相应于检测到上述条件成立,放弃上述指令的上述已正规化操作数并且将上述第二指令的上述非正规操作数正规化,其中上述放弃步骤是由上述指令调度器所执行。
17.一种微处理器,包括:
多个执行单元,用以接收多个指令以及上述指令中的指令操作数并用以执行上述指令;
其中上述执行单元的其中至少一者用以:
检测出上述指令的其中一者的上述操作数中的一操作数为一非正规操作数;以及
相应于检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行;
其中上述微处理器用以相应于上述指示,调用一微码单元用以将上述非正规操作数正规化;
其中上述微处理器用以当上述指令被重新执行时,提供上述已正规化操作数至上述执行单元。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US24069609P | 2009-09-09 | 2009-09-09 | |
US61/240,696 | 2009-09-09 | ||
US12/793,821 | 2010-06-04 | ||
US12/793,821 US8495343B2 (en) | 2009-09-09 | 2010-06-04 | Apparatus and method for detection and correction of denormal speculative floating point operand |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102023841A CN102023841A (zh) | 2011-04-20 |
CN102023841B true CN102023841B (zh) | 2013-10-30 |
Family
ID=43648579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010261278.6A Active CN102023841B (zh) | 2009-09-09 | 2010-08-23 | 微处理器以及相关指令执行方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8495343B2 (zh) |
CN (1) | CN102023841B (zh) |
TW (1) | TWI423125B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3151110B1 (en) * | 2011-04-07 | 2019-12-25 | VIA Technologies, Inc. | Microprocessor that translates conditional load or store instructions into a variable number of microinstructions |
CN102308274B (zh) * | 2011-07-19 | 2013-04-24 | 华为技术有限公司 | 一种访问关机硬盘的方法、网卡和硬盘卡 |
JP6951622B2 (ja) * | 2017-05-18 | 2021-10-20 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101116053A (zh) * | 2005-02-09 | 2008-01-30 | 先进微装置公司 | 适用于高效数字信号处理的数据处理器及其方法 |
CN101515310A (zh) * | 2009-02-16 | 2009-08-26 | 中国科学院计算技术研究所 | 微处理器浮点单元的随机验证方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966085A (en) * | 1998-04-09 | 1999-10-12 | Lockheed Martin Corporation | Methods and apparatus for performing fast floating point operations |
US6684323B2 (en) * | 1998-10-27 | 2004-01-27 | Stmicroelectronics, Inc. | Virtual condition codes |
US6487653B1 (en) * | 1999-08-25 | 2002-11-26 | Advanced Micro Devices, Inc. | Method and apparatus for denormal load handling |
US6571265B1 (en) * | 1999-10-29 | 2003-05-27 | Intel Corporation | Mechanism to detect IEEE underflow exceptions on speculative floating-point operations |
US6826704B1 (en) * | 2001-03-08 | 2004-11-30 | Advanced Micro Devices, Inc. | Microprocessor employing a performance throttling mechanism for power management |
US7313790B2 (en) * | 2003-06-23 | 2007-12-25 | Intel Corporation | Methods and apparatus for preserving precise exceptions in code reordering by using control speculation |
US8452831B2 (en) * | 2009-03-31 | 2013-05-28 | Oracle America, Inc. | Apparatus and method for implementing hardware support for denormalized operands for floating-point divide operations |
-
2010
- 2010-06-04 US US12/793,821 patent/US8495343B2/en active Active
- 2010-08-19 TW TW099127697A patent/TWI423125B/zh active
- 2010-08-23 CN CN201010261278.6A patent/CN102023841B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101116053A (zh) * | 2005-02-09 | 2008-01-30 | 先进微装置公司 | 适用于高效数字信号处理的数据处理器及其方法 |
CN101515310A (zh) * | 2009-02-16 | 2009-08-26 | 中国科学院计算技术研究所 | 微处理器浮点单元的随机验证方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20110060943A1 (en) | 2011-03-10 |
TW201110018A (en) | 2011-03-16 |
US8495343B2 (en) | 2013-07-23 |
CN102023841A (zh) | 2011-04-20 |
TWI423125B (zh) | 2014-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3509027B2 (ja) | 数式プロセッサ、および該数式プロセッサを用いて複数の数式を構成する方法 | |
CN100382061C (zh) | 按照类型对中断计数的方法和装置 | |
US11379234B2 (en) | Store-to-load forwarding | |
CN101377736B (zh) | 乱序执行微处理器以及宏指令处理方法 | |
CN101706713B (zh) | 改善乱序超纯量执行单元的微处理器及方法 | |
CN100449499C (zh) | 在微处理器恢复单元中进行写队列读数据的方法和装置 | |
US20100070741A1 (en) | Microprocessor with fused store address/store data microinstruction | |
CN101894009A (zh) | 乱序执行的微处理器以及相关执行指令的方法 | |
TWI715678B (zh) | 用以執行鍵值查找指令之處理器與鍵值查找方法 | |
CN101246447B (zh) | 用于测量微处理器中的流水线停顿的方法和装置 | |
TWI737652B (zh) | 併合乘-加(fma)低功能性單元 | |
TW201337738A (zh) | 用以提供向量水平式多數決投票功能之指令與邏輯 | |
EP3757809A1 (en) | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator | |
CN101377733B (zh) | 最佳化微处理器执行x87浮点加法指令的装置及方法 | |
CN101443738A (zh) | 提取cpu时间工具 | |
CN104182204A (zh) | 融合if-then指令的微处理器 | |
CN104049944A (zh) | 将有条件短前向分支转换成计算等效的所断言指令 | |
CN100543670C (zh) | 产生扩展精度的整数除的商和余数的方法和装置 | |
CN101266558A (zh) | 可配置微处理器和将多个小核组合为单微处理器核的方法 | |
CN102023841B (zh) | 微处理器以及相关指令执行方法 | |
CN101387951B (zh) | 具有用于各种不同类型指令的公共子电路的处理器 | |
CN101266559A (zh) | 将单微处理器核划分为多个小核的可配置微处理器和方法 | |
CN105320494A (zh) | 带有一致的和非一致的子系统的存储器排序 | |
US11669586B2 (en) | Systems and methods for combining low-mantissa units to achieve and exceed FP64 emulation of matrix multiplication | |
CN101916182B (zh) | 使用非架构的数据格式的快速浮点结果的转送 |
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 |