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

文档序号:6606757阅读:162来源:国知局

专利名称::乱序执行的微处理器以及相关执行指令的方法
技术领域
:本发明是有关于具有一乱序执行(out-of-orderexecution)微架构的微处理器,特别是有关于具有一x86架构的微处理器。
背景技术
:x86架构中定义了当一x86位移指令(ShiftRight(SHR)指令或ShiftLeft(SHL)指令,通称为Shift(SHF)指令)具有一位移量为零时,旗标暂存器EFLAGS将不改变;否则,旗标暂存器EFLAGS的位将被更新以反应位移操作的结果。然而,如此却可能使得在对一x86位移指令(X86SHF指令)之后的一个条件码(Conditioncode,CC)指令进行相依性判断时(亦即旗标暂存器EFLAGS的读取单元(reader),如跳跃条件码(Jcc)/设置条件码(Setcc)/移动条件码Movcc)时,引发问题。以下的程序片段用以说明这样的问题ADDEAX,EBX;writesEFLAGSSHREDX,CL;writesEFLAGS,onlyifshiftamount(inCL)isnon—zeroJZ<target>;usesEFLAGS若CL暂存器的值为零时,JZ指令将相依于ADD指令;反之,若CL暂存器的值非为零时,JZ指令将相依于SHR指令。不幸地,在暂存器别名表(registeraliastable,简称RAT)判断相依性时,暂存器别名表无法得知CL暂存器的值为零或非为零。因此,在微处理器的一种旧式设计中a)RAT使得JZ指令相依于SHR指令;且b)RAT使得SHR指令相依于ADD指令(即相依于最近的较旧旗标暂存器EFLAGS-修改指令)。于此例中,由于SHR指令必须提供从ADD指令所接收到的旗标暂存器EFLAGS的数值至JZ指令,且依据x86架构的定义,当CL暂存器的值为零,SHR指令不会修改旗标暂存器EFLAGS的数值,因此当CL暂存器的值为零,SHR指令可从ADD指令接收其所需的旗标暂存器EFLAGS的数值。本发明的发明人观察到一SHF指令(位移指令的通称)在最近的较旧旗标暂存器EFLAGS-修改指令上的额外相依性,其是只于零位移(shift-by-zero)的例子中为必要,但是上述旧式设计却会使得SHF指令其送至执行单元中的时间点晚于理想上必须传送的时间点,进而造成系统效能的损害。须提醒的是,前述问题只会发生在格式为“SHFreg,reg”的SHF指令中,亦即,位移量是由一存有较旧的指令的一暂存器所提供;反之,对格式为“SHFreg,I謹”的SHF指令而言,因RAT可以从I謹字段(Immediatefield)上提早得知位移量是否为零并同时可正确地设定其相依性,故不会遭遇前述的问题。
发明内容有鉴于此,本发明实施例提供一种乱序执行的微处理器。微处理器包括一暂存器别名表,用以产生一第一指示,以指示一指令是否相依于一位移指令的一条件码结果。微处理器也包括一第一执行单元,用以执行位移指令并且产生一第二指示,以指示位移指令的一位移量是否为零。微处理器也包括一第二执行单元,用以接收第一指示以及第二指示,并产生一重送信号,以致使当第一指示指示指令是相依于位移指令的条件码结果且第二指示指示位移指令的位移量为零时,重送指令。本发明实施例还提供一种执行指令的方法,用以执行一乱序执行处理器中的指令。方法包括产生一第一指示,以指示一指令是否相依于一位移指令的一条件码结果的步骤。方法也包括执行位移指令并产生一第二指示的步骤,其中第二指示指示位移指令的一位移量是否为零。方法也包括接收第一指示以及第二指示,并产生一重送信号,以致使当第一指示指示指令是相依于位移指令的条件码结果且第二指示指示上述位移指令的位移量为零时,重送指令。为使本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举出较佳实施例,并配合所附图式,作详细说明如下。图1是显示依据本发明实施例的一微处理器的区块图。图2A以及图2B是显示依据本发明实施例的图1的微处理器的操作流程图。[主要元件标号说明]100-微处理器;102-指令快取单元;104-指令转译器;106-暂存器别名表(RAT);108-DERS位;112-保留站;114A执行单元A;114B执行单元B;118-重排序缓冲器(ROB);122-结构性的旗标暂存器EFLAGS;132-条件码旗标总线(FlagCC_Bus)134、136重送信号;202、204、206、208、212、214、216、218、222、224、226、228、232、234执行步骤。具体实施例方式为了解决前述的效能问题,暂存器别名表(registeraliastable,简称RAT)永远假设位移量非为零,如此一来,一个SHF指令不需相依于一旗标暂存器EFLAGS(亦即,不需相依于比SHF指令旧的最近的旗标暂存器EFLAGS-修改指令)。若稍后执行单元判断出SHF指令的位移量为零,并且遇到一指令其指定(specify)—个条件码结果作为一来源操作数,上述指令相依于一较旧(older)SHF指令的旗标暂存器EFLAGS结果时,重排序缓冲器(reorderbuffer,简称ROB)将重送(r印lay)与SHF指令相依的指令。在一实施例中,上述条件码结果例如是一x86架构的旗标暂存器EFLAGS结果,可以是旗标暂存器EFLAGS中的一数值。参见图1,是显示依据本发明施例的一乱序执行的微处理器100的区块图。微处理器100包含一指令快取单元102,用以快取X86指令,X86指令例如是SHF指令、使用旗标暂存器EFLAGS作为一来源操作数的一指令(例如前述范例程序片段中的JZ指令)或更新旗标暂存器EFLAGS的一指令(例如前述范例程序片段中的ADD指令)。一指令转译器104选择性地将x86指令转译为提供至一暂存器别名表(RAT)106的微指令。RAT106产生一第一指示(indicator),此第一指示用以指示指令的相依性。特别来说,RAT106被修改以追踪相依于“SHFReg,Reg”指令的旗标暂存器EFLAGS结果的指令并设定一位,此位将与具有相依性的上述指令一起往下传送以指示相依性,其系被称为DERS位108。RAT106在一重排序缓冲器(ROB)118中为每一指令配置一项目(entry)并且派送指令及其对应的相依性信息至保留站112。当一个指令准备好被发送时,亦即,当其来源操作数是有效且一合适的执行单元114可用时,保留站112将送出指令至执行单元114执行。特别来说,保留站112随着每一个指令提供DERS位108至执行单元114。必要时,ROBl18会产生一重送信号(r印laysignal)136至保留站112,以使得必要的指令将被重送至保留站112,例如,当一个指令是相依于一个具有一位移量为零的SHF指令时,相关细节将于下讨论。于图1的实施例中,分别显示两个执行单元,称为执行单元A114A以及执行单元BlHB0执行单元Al14A用以执行上述SHF指令并且产生第二指示,此第二指示用以指示上述SHF指令的一位移量是否为零。于图1的例子中,执行单元A114A执行SHF指令;执行单元B114B执行相依于SHF指令的指令。执行单元114A与114B通过一7位的条件码旗标总线(flagconditioncodebus),FlagCC_Bus[60]132,彼此耦接,其中FlagCC_Bus[60]132的位是定义如下[6]:SBZ(零位移)[5]:0F[4]:SF[3]:ZF[2]:AF[1]:PF:CF观察前述位定义可知,位[5:0]中定义了旗标暂存器EFLAGS的通用条件码位(commonconditioncodebits)。此外,FlagCC_Bus132亦包含一个额外的位[6],SBZ位。执行单元A114A通过设定SBZ位以指出一个SHF指令具有一个零位移量(例如,于前述程序例子中,CL暂存器具有一零值)。执行单元A114A在FlagCC_Bus132上转送一个SHF指令的通用EFLAGS位结果以及SBZ位值至执行单元Bl14B。若执行单元Bl14B执行一已设定DERS位108的指令(即相依于SHF指令)且SBZ位被清除时,则执行单元B114B可使用位[5:0]来执行相依于SHF的指令;反之,若SBZ位被设定时,执行单元B114B设置(assert)一重送信号134至R0B118,以通知R0B118重送与SHF指令相依的上述指令(可视为“相依指令”)。在某些情况下,当“相依”指令是未真的相依于SHF指令时,例如当“相依”指令是未真的相依于SHF指令是发生于指令被重送时,执行单元B114B将接收一结构性的条件码暂存器的数值,例如结构性的旗标暂存器EFLAGS122的值。一般而言,条件码暂存器用以储存指令执行的状态。接着参见图2A以及图2B,是显示一依据本发明实施例的图1的微处理器100的操作流程图。流程开始于步骤202。于步骤202,暂存器别名表RAT106遇到一SHF指令(例如“SHFReg,Reg”指令)并且产生SHF指令的相依性。特别是,与已知的旧式设计相比,RAT106假设SHF指令并不具有旗标暂存器EFLAGS的相依性。换句话说,RAT106假设位移量为非零值,因此SHF指令将产生一个新的旗标暂存器EFLAGS的数值,其可于不需旗标暂存器EFLAGS的先前数值的情况下提供给任何相依指令。如前述,这可视为一个好处,因为其可比具有一旗标暂存器EFLAGS相依性的SHF指令更快致能欲送出的SHF指令加以执行,因此可提升微处理器100的总处理量(throughput)。接着执行步骤204。于步骤204,RAT106派送SHF指令至一保留站112。保留站112随后发送SHF指令至第一执行单元(执行单元Al14A)。接着执行步骤206。于步骤206,第一执行单元(执行单元A114A)检查一暂存器的位移量(于前述例子中,CL暂存器包含位移量)。接着执行判断步骤208。于判断步骤208,若第一执行单元(执行单元A114A)判断出位移量为零时,则流程执行步骤212;否则,流程执行步骤214。于步骤212,第一执行单元(执行单元A114A)在FlagCC_Bus132中设定(set)SBZ位。为了满足x86架构要求,当R0B118引退(retire)SHF指令时,由于其位移量为零(shiftbyzero),因此结构性的旗标暂存器EFLAGS122将不会被此SHF指令所更新。流程接着执行步骤222。于步骤214,第一执行单元(执行单元A114A)清除在FlagCC_Bus132中的SBZ位,并且依据SHF指令所定义的位移操作产生新的旗标暂存器EFLAGS结果。此旗标暂存器EFLAGS结果将接着被写入至结构性的旗标暂存器EFLAGS122中。流程接着执行步骤222。于步骤216,RAT106遇到一个指令,其指定(specify)EFLAGS作为一来源操作数,例如前述例子中的JZ指令。若此指令是相依于一较旧的SHF指令(如“SHFReg,Reg”指令)的旗标暂存器EFLAGS结果,则RAT106将设定与相依指令关联(associated)的DERS位108。流程接着执行步骤218。于步骤218,RAT106派送相依指令至一保留站112。须注意的是,微处理器100可同时地执行步骤216与218或接续在步骤202与204之后再执行步骤216与218。亦即,RAT106可于每个时钟周期中接收并派送多重指令,且虽然SHF指令是依据程序顺序处理相依指令,RAT106可在同一个时钟周期中对其进行处理。流程接着执行步骤218至步骤222。于步骤222,保有(holding)相依指令的保留站112检测SHF指令的执行,亦即,保留站112检测SHF指令的旗标暂存器EFLAGS结果的有效性,例如结果为有效,并且对应地发送相依指令至第二执行单元(执行单元Bl14B)。流程接着执行步骤224。于步骤224,第二执行单元(执行单元B114B)执行具有相依性的指令(可视为相依指令),亦即第二执行单元(执行单元B114B)检查相依指令的DERS位108以及来自FlagCC_Bus132的SBZ位。流程接着执行决定步骤226。于决定步骤226,当部分的相依指令执行时,第二执行单元(执行单元B114B)判断与相依指令关联的DERS位108是否被设定以及第一执行单元(执行单元A114A)在步骤212中所产生的SBZ位是否被设定。若前述两个位同时被设定时,则流程执行步骤232;否则,流程执行步骤228。于步骤228,第二执行单元(执行单元B114B)从FlagCC_Bus132中接收通用旗标暂存器EFLAGS位并正常地执行相依指令,其中通用旗标暂存器EFLAGS位是于SHF指令时在步骤212所产生。重排序缓冲器R0B118随后正常地引退相依指令。流程至步骤228结束o于步骤232,第二执行单元(执行单元B114B)设置重送信号134至R0B118,以通知R0B118相依指令需要被重送,此重送的信息R0B118会注记(note)在为了相依指令所配置(allocaate)的项目(entry)中。流程接着执行步骤234。于步骤234,ROB118重送相依指令。亦即,当此相依指令变为微处理器100中最旧的指令而使其准备被引退时,ROB118重送从相依指令开始的所有未引退的指令。亦即,重送相依指令与之后的所有未引退的指令。上述的情况是必要的,这是因为RAT106于步骤202假设SHF指令为一非零位移量指令,故SHF指令不能提供旗标暂存器EFLAGS的值至相依指令。值得一提的是,通过消除在EFLAGS上的SHF指令的相依性,微处理器100有机会在效能上获得提升。值得注意的是,当相依指令是重送时,其将成为微处理器中最旧的指令,如此一来,相依指令的DERS位将被清除,因此将不具任何相依性,并且仅是(simply)从结构性的旗标暂存器EFLAGS122接收条件码。流程于是结束于步骤234。于一实施例中,保留站112可发送SHF指令至多个执行单元中的其中一个。此外,虽然图1只显示执行单元A输出至FlagCC_BuS132,但是若执行单元在执行指令时,其指令会影响旗标暂存器EFLAGS,这些每一执行单元也将输出至FlagCC_Bus132,且可执行相依于EFLAGS的指令的每一执行单元将接收FlagCC_Bus132作为其输入。虽然本发明可能需要相对适当数量的额外硬件的配合以及有可能需要进行指令重送,但是通过本发明,微处理器能够消除在一最旧旗标暂存器EFLAGS-修改指令上的SHF的相依性,在大量的混合指令(instructionmixes)中将可提升效能,并且提升于一超纯量乱序微架构中的使用率。虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。例如,软件可致能,例如,功能、制造、模型化、仿真、描述及/或测试本发明所述的装置以及方法。上述可通过使用一般程序语言(例如C、C++)、硬件描述语言(HDL)包括VerilogHDL、VHDL等等或其它有效的程序语言来实现。此类软件可以以程序码的型态包含于实体媒体,例如任何其它机器可读取(如计算机可读取)储存媒体如半导体、软盘、硬盘或光盘片(例如CD-ROM、DVD-ROM等等),其中,当程序码被机器,如计算机加载且执行时,此机器变成用以实行本发明的装置。本发明的方法与装置也可以以程序码型态通过一些传送媒体,如电线或电缆、光纤、或是任何传输型态进行传送,其中,当程序码被机器,如计算机接收、加载且执行时,此机器变成用以实行本发明的装置。当在一般用途处理器实作时,程序码结合处理器提供一操作类似于应用特定逻辑电路的独特装置。本发明所述的装置以及方法可包含于一半导体智财核心例如一微处理器核心(嵌入于HDL),并转换于集成电路生产时转换为硬件产品。此外,本发明所述的装置以及方7法可实作于包含具有硬件以及软件的组合的实体实施例。因此本发明的保护范围当视所附的权利要求范围所界定者为准。特别地,本发明可被实作于一微处理器装置中,其可被用于一一般用途计算机上。最后,任何本领域技术人员,可基于本发明所揭露的概念以及特定实施例,在不脱离本发明的精神和范围内,可做些许更动与润饰以达到本发明的相同目的。权利要求一种乱序执行的微处理器,包括一暂存器别名表,用以产生一第一指示,上述第一指示用以指示一指令是否相依于一位移指令的一条件码结果;一第一执行单元,用以执行上述位移指令并且产生一第二指示,上述第二指示用以指示上述位移指令的一位移量是否为零;以及一第二执行单元,用以接收上述第一指示以及上述第二指示,并产生一重送信号,以致使当上述第一指示指示上述指令是相依于上述位移指令的上述条件码结果且上述第二指示指示上述位移指令的上述位移量为零时,重送上述指令。2.根据权利要求1所述的微处理器,其中上述暂存器别名表假设上述位移量非为零,来产生上述位移指令的相依性。3.根据权利要求1所述的微处理器,其中当上述第一执行单元判断上述位移量非为零时,上述第一执行单元清除上述第二指示,并依据上述位移指令产生另一条件码结果以写入一结构性的条件码暂存器。4.根据权利要求1所述的微处理器,其中用以执行上述位移指令的上述第一执行单元包括用以产生上述位移指令的上述条件码结果,其中若上述第二指示指示上述位移指令的上述位移量非为零时,上述第二执行单元用以利用上述第一执行单元所产生的上述条件码结果,以执行相依于上述位移指令的上述条件码结果的上述指令。5.根据权利要求1所述的微处理器,其中当上述指令重送时,上述第二执行单元用以接收来自上述微处理器的一结构性的条件码暂存器的上述条件码结果以执行上述指令,上述暂存器别名表重送从上述指令与之后的所有未引退的指令。6.一种执行指令的方法,用以执行一乱序执行微处理器中的指令,包括下列步骤产生一第一指示,用以指示一指令是否相依于一位移指令的一条件码结果;执行上述位移指令并产生一第二指示,其中上述第二指示指示上述位移指令的一位移量是否为零;以及接收上述第一指示以及上述第二指示,并产生一重送信号,以于上述第一指示指示上述指令是相依于上述位移指令的上述条件码结果且上述第二指示指示上述位移指令的上述位移量为零时,重送上述指令。7.根据权利要求6所述的执行指令的方法,还包括假设上述位移量非为零,产生上述位移指令的相依性。8.根据权利要求6所述的执行指令的方法,其中当判断上述位移量非为零时,清除上述第二指示,并依据上述位移指令产生另一条件码结果以写入一结构性的条件码暂存器。9.根据权利要求6所述的执行指令的方法,还包括若上述第二指示指示上述位移指令的上述位移量非为零时,利用上述位移指令的上述条件码结果,执行相依于上述位移指令的上述条件码结果的上述指令。10.根据权利要求6所述的执行指令的方法,其中上述重送上述指令的步骤包括接收来自上述微处理器的一结构性的条件码暂存器的上述条件码结果以执行上述指令;以及重送从上述指令与之后的所有未引退的指令。全文摘要本发明提供一种乱序执行的微处理器,包括一暂存器别名表,用以产生一第一指示,上述第一指示指示一指令是否相依于一位移指令的一条件码结果。微处理器也包括一第一执行单元,用以执行上述位移指令并且产生一第二指示,上述第二指示指示上述位移指令的一位移量是否为零。微处理器也包括一第二执行单元,用以接收上述第一指示以及上述第二指示,并产生一重送信号,以致使当上述第一指示指示上述指令是相依于上述位移指令的上述条件码结果且上述第二指示指示上述位移指令的上述位移量为零时,重送上述指令。文档编号G06F9/30GK101894009SQ20101023950公开日2010年11月24日申请日期2010年7月27日优先权日2009年8月7日发明者吉拉德·M·卡尔,布莱恩·W·伯格,泰瑞·派克斯,马修·D·戴申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1