微处理器以及相关指令执行方法

文档序号:6330761阅读:211来源:国知局

专利名称::微处理器以及相关指令执行方法微处理器以及相关指令执行方法
技术领域
本发明是有关于微处理器中的浮点数(floatingpointnumber)计算领域,特别是有关于具有非正规数(denormalmimber)的浮点数计算。
背景技术
:在一微处理器中所表示的浮点数本文中,非零有限数值或操作数(operand)分为两个类别正规化数值(normalizednumber)(或正规数(normalnumber))以及非正规化数值(denormalizednumber)(或非正规数(denormalnumber))。举例来说,更详细的相关讨论请共同参照由英特尔(Intel)公司所发表的文献“IA-32ArchitectureSoftwareDeveloper,sManual,Volume1BasicArchitecture,2002,OrderNumber245470-008,,中的段落4.8.2.1以及4.8.3.2中的内容,此处仅摘要列举其结果。一正规数、或正规化数或以正规化的形式所编码的数值具有一个有效位数(significand)以及一个指数部分(exponent),其中有效位数为数字1与2之间的一个实数(亦即,一整数字元接着组成一小数(fraction)的数个位),指数部分则指定数值中二进小数点的位置。当一个浮点数非常趋近于0时,由于指数的范围不足够大来补偿将二进小数点往右移以消除前置零,使得前述正规化数值格式无法再使用于表示此数值。当指数(偏差)为0时,较小的数仅可通过令整数字元(以及或许其它前置位)的有效位数为0来表示。在这个范围之内的数值便称为非正规数、或非正规化数或非正规化形式的数值。前置零与非正规化数的使用可允许表示较小的数。然而,这样的非正规化将造成精度的损失(前置零将减少小数部分的有效位数)。一般而言,一微处理器中的浮点数单元用以执行以正规化形式表示的操作数的计算。因此,当一个指令指定一非正规操作数(denormaloperand)时,微处理器将此非正规操作数转换为一正规操作数,以便执行此指令所指定的计算。这个程序将会浪费一相对大量的时间及/或要求一非固定数量的执行时间来增加指令执行延迟(latency),其将引发讨论于下的问题。
发明内容本发明实施例提供一种微处理器。微处理器包含多个执行单元,用以接收多个指令以及上述指令中的指令操作数并用以执行上述指令。微处理器也包含一指令调度器,用以发送上述指令至上述执行单元并且选择上述指令操作数的来源。上述执行单元的其中至少一者用以检测出上述指令的其中一者的上述操作数中的一操作数为一非正规操作数、相应于检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行;并且相应于检测出上述非正规操作数,提供上述非正规操作数至上述指令调度器。上述指令调度器用以相应于上述指示,将上述非正规操作数正规化,并且当上述指令被重新执行时,提供上述已正规化操作数至上述执行单元。本发明另一实施例提供一种指令处理方法,用以于一微处理器中处理一指定一非正规操作数的一指令,其中上述微处理器包含一执行单元以及一指令调度器。方法包括检测出上述指令的上述操作数为一非正规操作数,其中上述检测步骤是由上述执行单元所执行。方法也包括相应于上述检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行,其中上述产生上述指示的步骤是由上述执行单元所执行。方法也包括相应于上述检测出上述非正规操作数,提供上述非正规操作数至上述指令调度器,其中上述提供上述非正规操作数的步骤是由上述执行单元所执行。方法也包括相应于上述指示,将上述非正规操作数正规化,其中上述将上述非正规操作数正规化的步骤是由上述指令调度器所执行。方法也包括于上述提供上述非正规操作数之后,重新执行上述指令。方法也包括相应于上述重新执行上述指令,提供上述已正规化操作数至上述执行单元。本发明又一实施例提供一种微处理器。微处理器包括一微码单元以及多个执行单元。上述执行单元用以接收多个指令以及上述指令中的指令操作数并用以执行上述指令。上述执行单元的其中至少一者用以检测出上述指令的其中一者的上述操作数中的一操作数为一非正规操作数;以及相应于检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行。上述微处理器用以相应于上述指示,调用(invoke)上述微码单元用以将上述非正规操作数正规化。上述微处理器用以当上述指令被重新执行时,提供上述已正规化操作数至上述执行单元。为使本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举出较佳实施例,并配合所附图式,作详细说明如下。图1显示一依据本发明实施例的一微处理器的方块图。图2显示图1的微处理器的操作流程图。[主要元件标号说明]100微处理器;102指令高速缓存;104指令转译器;106暂存器别名表;108保留立占;112执行单元;114重排序缓冲器;116调度器;118结构暂存器集;122多工器;132信号;136结果总线;138旗标;142操作数缓冲器;144正规器;146标记缓冲器;148项目;152信号;154标jE;202、204、206、208、212、214、216执行步骤。具体实施例方式请参见图1,显示一依据本发明实施例的一微处理器100的方块图。微处理器100包含一个指令高速缓存(cache)102,其可从系统存储器中快取程序指令。一指令转译器(translator)104从指令高速缓存102中接收程序指令并且将接收到的指令转译为微指令(microinstoiction)。一暂存器别名表(registeraliastable,以下简称RAT)106依照程序顺序从指令转译器104中接收微指令。RAT106于一重排序缓冲器(reorderbuffer,以下简称ROB)114中为每一个微指令配置一项目(entry)148、产生这些微指令的相依性信息并且依照程序顺序发送这些微指令及其相依性信息至保留站108中。R0B114中每一项目148保持与此指令相关的信息,包含一旗标138,其表示此指令是否需要被重新执行(replay),因为此指令指定一非正规操作数,其细节将于下讨论。前述微指令被发送至执行单元112来执行。于一实施例中,每个执行单元112具有其对应的保留站108,用以保持将发送至执行单元112的指令。执行单元112在结果总线136上提供其执行结果至ROB114。当一执行单元112(即一浮点运算单元112)检测出其已接收到用以执行的一指令具有一或多个非正规操作数并且浮点运算单元112无法在一非正规操作数上执行所需的操作时,浮点运算单元112将输出一个指定ROB114中配置给该指令的项目148的标记(tag)154。其中,标记154为进入ROB114的项目148的一个索引。此外,浮点运算单元112也发出一信号132至ROB114,以致使ROB114来设定在与该指令相关的项目148中的旗标138。当一个指令变成微处理器100中最旧的指令且旗标138表示其需要被重新执行时,ROB114发出一重新执行信号152至保留站108,以表示此条件,并且提供欲重新执行的指令给保留站108。多个多工器122提供指令操作数至执行单元112。多工器122接收来自多个来源的操作数,包括从执行单元112本身所反馈的结果总线136;与ROB114相关的暂时结果暂存器;一结构暂存器集(generalpuposeregisters,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加以处理并且包含一个转换器来转换前述非结构化数据格式结果回结构化数据格式,以引退至GPR118。前述非结构化数据格式包含额外的指数位,以提供非正规数值的正规化。具体来说,当正规器144转换一非正规操作数成为一正规操作数时,其将非正规操作数从结构化数据格式转换为非结构化数据格式。在一实施例中,上述执行单元被设计为不具有用以将非正规数正规化的一电路,其中上述指令调度器具有用以将上述非正规操作数正规化的一电路。在一实施例中,多个保留站用以于上述指令等待被上述指令调度器发送至上述执行单元时保持上述指令,其中上述执行单元被设计为不具有用以储存上述指令操作数的储存单元。参见图2,显示依据图1的微处理器100的操作流程图。流程开始于步骤202。于步骤202,浮点运算单元112检测出其接收到具有非正规操作数的指令。浮点运算单元112相应地输出此指令的标记154、发出信号132以表示此条件至调度器116以及ROB114,并输出非正规操作数而非输出其产生的结果在其结果总线136上。接着执行步骤204。于步骤204,调度器116将非正规操作数从结果总线136加载至操作数缓冲器142并且储存标记154在其标记缓冲器146中并且标记此非正规操作数条件。于一实施例中,调度器116—个时间只可处理一个具有非正规操作数条件的指令。于本实施例中,调度器116可比对新指令的标记154与标记缓冲器146的值,并且若新指令较旧于调度器116目前正在执行正规化的操作数的指令时,调度器116放弃目前指令、将标记缓冲器146的值更新为新的标记154的值、并且于步骤206开始将新指令的操作数正规化。接着执行步骤206。于步骤206,调度器116正规化在操作数缓冲器142中的操作数。接着执行步骤208。于步骤208,前述具有非正规操作数的指令变为微处理器100中最旧的指令并且ROB114标记旗标138,表示需要一个重新执行。对应地,ROB114发出重新执行信号152将指令重新派送其回到保留站来重新执行指令。于一实施例中,ROB114也同时重新执行所有较旧于此指令的指令;而于另一实施例中,ROB114则只会重新执行较旧于此指令且相依于此指令的指令。接着执行判断步骤212。于判断步骤212,调度器116检测出前述指令将被重新执行,亦即,调度器116检测到标记缓冲器146中的有效值与保留站108中准备要发出来执行的一指令的标记相符合。若调度器116判断出操作数缓冲器142中的非正规操作数已完成正规化时,执行步骤216;反之,则执行步骤214。于步骤214,调度器116维持浮点运算单元112的保留站为关闭,直到调度器116完成非正规操作数的正规化为止。接着执行步骤216。于步骤216,调度器116将指令从保留站108发送至浮点运算单元112并且控制多工器122提供来自操作数缓冲器142而非操作数的其它正规化来源,例如来自于GPR118、ROB114或结果总线136的已正规化操作数至浮点运算单元112。浮点运算单元112接着利用已正规化操作数执行指令。注意的是,一个指令可包含一个以上非正规形式的操作数。于一实施例中,当指令是以调度器116所正规化后的操作数重新执行时,若浮点运算单元112检测出一非正规操作数时(亦即,一第二非正规操作数,因为第一非正规操作数现在已被正规化),其将再一次发出信号132以及标记154,使得调度器116将正规化第二非正规操作数并且ROB114将依据第二图所示的流程图再一次重新执行指令。流程结束于步骤216。本案发明人观察到非正规操作数的发生相对地较少,使得在微处理器100中执行的程序所处理的大量多数的数据集中,假设已正规化操作数所得到的优点超过了与重新执行一包含一非正规操作数的指令所带来的延迟相关的代价。本发明另外一些优点是来自调度器可于一固定的执行时间基础上发送指令。也就是说,调度器可以准确地知道一个给定执行单元需要多少时钟来执行一给定类型的指令。本发明其中一优点是降低了调度器的复杂度。本发明另一优点在于调度器可较早于在其等待知道一执行单元已经完成一个可变执行时间指令的执行之前发送指令来提升效能。也就是说,假设指令B具有一相依性在较旧的指令A上。假设调度器发出一指令的时间与指令到达执行单元以执行的时间之间有一些已知的延迟X。通过一固定的执行时间,因为调度器准确地知道何时执行指令A的执行单元112将提供其结果,调度器可于指令A完成之前的X个时钟发出指令B。这些优点可通过一相对地较小的成本来实现。在一实施例中,上述执行单元相应于检测出上述非正规操作数,提供上述非正规操作数至上述指令调度器,而非将上述非正规操作数正规化,上述执行单元执行上述指令于一固定的执行时间中,其使得上述指令调度器于一固定的执行时间基础上发送指令至上述执行单元。一种传统解决方案是将保留站设置在执行单元中,使得其得以在执行单元中内部地重新执行,而非由ROB从外部地重新执行,并设置保留站来保持这些指令的指令操作数。为了保持前述指令操作数,此方案将具有可变的执行时间以及增加的保留站数目缺点。相反地,本发明的解决方案造成一固定的执行时间并允许本发明的保留站变小,因为这些保留站并不需要保持这些操作数;或者,这些操作数可从各种来源直接(onthefly)应用。另一种传统解决方案包含一大的以及耗时间/电力的固定执行时间正规器电路于浮点运算单元(FPU)中,以便保持固定的执行时间统治(regime)。虽然前述实施例中调度器116用以转换非正规操作数至一正规操作数,另一实施例可考虑相应于浮点运算单元112于检测到一非正规来源操作数而致使微处理器100产生一内部例外时,利用由微处理器100中的一微码单元所执行的微码来转换非正规操作数至一正规操作数。虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。例如,软件可致能,例如,功能、制造、模型化、仿真、描述及/或测试本发明所述的装置以及方法。上述可通过使用一般程序语言(例如C、C++)、硬件描述语言(HDL)包括VerilogHDL、VHDL等等来实现。此类软件可以以程序码的型态置放于任何已知的计算机可用媒体,例如一磁带、半导体、磁盘、软盘、硬盘或光盘片(例如CD-ROM、DVD-ROM等等)、一网络、有线连线、无线或其它通讯媒体。其中,当程序码被机器,如计算机加载且执行时,此机器可成为用以实施本发明的装置。本发明所述的装置以及方法可包含于一半导体智财核心,例如一微处理器核心(嵌入于HDL),并转换成集成电路的硬件产品。此外,本发明实施例所述的装置以及方法可包含具有硬件以及软件的组合的实体实施例。因此本发明的保护范围当视所附的权利要求范围所界定者为准。特别来说,本发明可被实作在一微处理器装置中,而使用于一一般用途处理器中。最后,任何本领域技术人员,可基于本发明所揭露的概念以及特定实施例,在不脱离本发明的精神和范围内,可做些许更动与润饰以达到本发明的相同目的。权利要求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.—种微处理器,包括多个执行单元,用以接收多个指令以及上述指令中的指令操作数并用以执行上述指令;其中上述执行单元的其中至少一者用以检测出上述指令的其中一者的上述操作数中的一操作数为一非正规操作数;以及相应于检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行;其中上述微处理器用以相应于上述指示,调用一微码单元用以将上述非正规操作数正规化;其中上述微处理器用以当上述指令被重新执行时,提供上述已正规化操作数至上述执行单元。全文摘要本发明提供一种微处理器,包括多个执行单元,用以接收多个指令以及上述指令中的指令操作数并用以执行上述指令。一指令调度器发送上述指令至上述执行单元并且选择上述指令操作数的来源。上述执行单元的其中至少一者检测出上述指令的其中一者的上述操作数中的一操作数为一非正规操作数、相应于检测出上述非正规操作数,产生一指示,上述指示表示上述指令需要被重新执行;并且相应于检测出上述非正规操作数,提供上述非正规操作数至上述指令调度器。上述指令调度器相应于上述指示,将上述非正规操作数正规化,并且当上述指令被重新执行时,提供上述已正规化操作数至上述执行单元。文档编号G06F9/30GK102023841SQ201010261278公开日2011年4月20日申请日期2010年8月23日优先权日2009年9月9日发明者G·葛兰·亨利,吉拉德·M·卡尔,提摩西·A·伊里亚德,泰瑞·派克斯,罗德尼·E·虎克申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1