乱序执行微处理器及提升效能的方法、执行方法

文档序号:6598402阅读:118来源:国知局

专利名称::乱序执行微处理器及提升效能的方法、执行方法
技术领域
:本发明有关于微处理器领域的应用,特别是有关于微处理器领域的暂存器重新命名的应用。
背景技术
:计算机程序设计者将一计算机程序内的指令按照一特定的顺序安排,通常这个特定顺序称为程序顺序。计算机程序设计者通过执行计算机程序的微处理器,根据程序顺序,并依据如何执行指令的特定规则以执行计算机程序里的各项指令。举例来说,于第一个例子中,假设指令B的程序顺序是于指令A之后,并且假设指令A写入至微处理器的一暂存器,指令B从同一暂存器中读取数据。于此例中,程序设计者通过微处理器,利用指令A所写入的数值来执行指令B,而不是利用在指令A将其数值写入至暂存器之前在暂存器中的数值。于第二个例子中,假设指令A由暂存器中读取数据且指令B写入至暂存器。于此例中,程序设计者是通过微处理器,利用在指令B将其数值写入至暂存器之前在暂存器中的数值来执行指令A。于第三个例子中,假设指令A以及指令B皆将数据写入至暂存器,指令C的程序顺序在指令B之后,并且指令C读取暂存器的数据。于此例中,程序设计者是通过微处理器,利用由指令B写入的数值来执行指令C,而不是指令A写入的数值。—种可以使微处理器根据上述程序顺序的规则执行的方法是简单地根据程序顺序来执行指令。然而,许多较先进的微处理器,特别是包括多个执行单元的超纯量管线微处理器(superscalarpipelinedmicroprocessor),可在一个单一时脉周期中发送多个指令,并且可通过乱序(out-of-order),亦即不依照程序顺序来执行指令,以实现效能的提升。乱序执行特别利于在指令流中需要较长的时间来执行的特定的指令(通常为长延迟指令,例如浮点指令或存储器读取指令)的处理。当一个有序(in-order)执行微处理器遇到(encounter)—长延迟指令时,执行单元可能在多个时隙(timeslot)中(在一些情况下可为100个时隙)保持闲置(idle),用以等待长延迟指令完成。然而,在等待长延迟指令完成的同时,一个乱序执行微处理器试着去找到可被执行单元所执行的指令。这些指令通常为独立指令,因为这些指令可以在不违反任何与程序顺序有关的规则(例如上述讨论三种)的情况下,不依照与长延迟指令有关的程序顺序加以执行。相反地,有序执行微处理器必须等候执行与任何程序顺序出现在之前的指令(例如长延迟指令)相关的指令。因此,可以发现一乱序执行超纯量管线微处理器的多个执行单元的效能利用,可能受限于微处理器可在程序的指令流中找到的独立指令的个数。—种应用在乱序执行超纯量管线微处理器上,用以增加指令流的独立指令的数量的现有技术为暂存器重新命名。特别地,暂存器重新命名可以帮助在上面第二以及第三例子中的指令A以及指令B彼此独立,使得微处理器可以不照顺序执行指令A以及指令B。微处理器包括结构暂存器(architecturalregister),例如程序指令定义的运算元的来源暂存器或存放结果的目的暂存器。举例来说,一个x86结构微处理器的整数结构暂存器包括、ECX、EDX、ESI、EDI、ESP以及EBP暂存器等。一个具有暂存器重新命名功能的微处理器包括比结构暂存器的数量更多的实体暂存器。举例来说,一结构定义为8个整数暂存器的x86微处理器可能具有32个实体暂存器,其可重新命名8个结构暂存器。当微处理器遇到定义这些结构暂存器中的一暂存器为其目的暂存器的一指令时,重新命名硬件将结构暂存器"重新命名"为实体暂存器中其中之一。当微处理器执行此指令以产生结果时,微处理器便将结果写入至实体暂存器。此外,假设一个指令定义结构暂存器中其中一者为一运算元的来源,重新命名硬件判断与目前指令相依(关)的指令,该指令是在程序顺序中将一结果写入至定义好的来源结构暂存器的最新的指令但较早于目前指令。重新命名硬件将致使目前指令不去参考结构暂存器,而是去参考与目前指令相关的结构暂存器被重新命名后的实体暂存器。如此一来,将使得目前指令从适当地重新命名的实体暂存器中接收其来源运算元。然而,通过暂存器重新命名来提升效能可能会造成硬件芯片(die)空间、电源以及复杂度的大量增加。在许多暂存器重新命名微处理器上,这是存在的事实。因此,需要一种可在一乱序执行超纯量管线微处理器上对效能、成本冲突提供一良好平衡的解决方法。
发明内容有鉴于此,本发明提供一种可在一乱序执行超纯量管线微处理器上对效能、成本冲突提供一良好平衡的解决方法。本发明提供一种乱序执行微处理器,用以执行一区段暂存器载入指令。区段暂存器载入指令指示该乱序执行微处理器将一新值载入至该乱序执行微处理器的一区段暂存器。乱序执行微处理器包括一执行单元,该执行单元至少包括一比较器,该执行单元用以通过该比较器比较区段暂存器载入指令所指示的新值与区段暂存器的一目前值,当比较器显示新值不等于目前值时,该执行单元利用该新值重新执行在乱序执行微处理器中所有以区段暂存器的目前值作为一来源运算元且程序顺序较新于区段暂存器载入指令的程序顺序的第一指令,其中该区段暂存器为一x86区段暂存器,且该新值描述一存储器区段。本发明另提供一种乱序执行微处理器,其是具有一第一区段暂存器。乱序执行微处理器包括一指令排程器,用以发送的一第一指令加以执行,其中第一指令指示乱序执行微处理器将一第一新值载入至该第一区段暂存器,其中指令排程器更用以由第一区段暂存器中撷取一目前值,并且利用撷取到的该目前值发送一第二指令加以执行,即使该第一指令的程序顺序是早于该第二指令的程序顺序,并且第一指令尚未将新值写入至区段暂存器。乱序执行微处理器还包括一执行单元,其是耦接至指令排程器,用以比较第一新值与撷取到的目前值,并且若第一新值不等于撷取到的目前值,则由第一区段暂存器中撷取第一新值,并利用撷取到的第一新值,重新发送第二指令加以执行。本发明还提供一种微处理器,其具有多个区段暂存器,其中区段暂存器包括互斥的第一子集合以及第二子集合。微处理器包括一存储器,用以储存第一微码程序以及第二微码程序。微处理器还包括一指令解码器,耦接至该存储器,用以遇到指示所述区段暂存器中的一第一区段暂存器载入一新值的一指令。其中当该第一区段暂存器是于该第一子集合中时,该指令解码器是用以执行该第一微码程序,其中当该第一区段暂存器是于该第二子集合中时,该指令解码器是用以执行该第二微码程序。其中,该第一微码程序是用以将该新6值直接载入至该第一区段暂存器中。其中,该第二微码程序是用以于该新值不等于该第一区段暂存器中所储存的一目前值时,将该新值载入至该第一区段暂存器中。本发明还提供一种提升效能的方法,适用于一微处理器,该微处理器包括多个区段暂存器,但不包括所述区段暂存器的暂存器重新命名硬件,其中该微处理器是用以执行一区段暂存器载入指令以及一存储器存取指令,该区段暂存器载入指令将一新值载入至所述区段暂存器中的一第一区段暂存器,以及该存储器存取指令存取该第一区段暂存器所描述的一存储器区段,其中该存储器存取指令的程序顺序是于该第一区段暂存器载入指令之后。该提升效能的方法包括下列步骤。首先,由第一区段暂存器中撷取一目前值。接着,利用撷取到的目前值,执行存储器存取指令。在撷取到目前值之后,判断目前值是否等于新值。若该目前值不等于该新值时,则将该新值载入至该第一区段暂存器中,并且由该第一区段暂存器中撷取该新值。之后,利用第一区段暂存器中撷取到的该新值,重新执行该存储器存取指令。本发明还提供一种执行方法,用以执行于一微处理器中的一存储器存取指令。其中,存储器存取指令存取由微处理器的一区段暂存器上一区段描述符所描述的一存储器区段,使得微处理器利用该区段描述符来执行该存储器存取指令。该执行方法方法包括下列步骤。首先,执行关于将被写入至区段暂存器的一新值与区段暂存器所储存的一目前值相等的一预测。接着,利用目前值,执行存储器存取指令,而非等候微处理器将新值写入至区段暂存器,即使该存储器存取指令的程序顺序较新于指示该新值将被写入至该结构暂存器的一指令。本发明上述方法可以通过程序码方式收录于实体介质中。当程序码被机器载入且执行时,机器变成用以实行本发明的装置。本发明可在一乱序执行超纯量管线微处理器上对效能、成本冲突提供良好的平衡。图1显示一依据本发明实施例的微处理器的示意图。图2至图4显示依据本发明实施例的图1的微处理器的操作流程示意图。附图中符号的简单说明如下100:微处理器102:指令快取104:指令转译器106:相依性检查单元108:保留站(RS)112:载入DS/ES暂存器微码程序114:执行单元116:微码只读存储器118:重排序缓冲器(ROB)122:载入非DS/ES暂存器微码程序124:发送逻辑单元128:暂时暂存器132:DS/ES暂存器134:比较器138:区段暂存器142:宏指令144:微指令202208:执行步骤302308:执行步骤402412:执行步骤具体实施例方式为使本发明的上述和其他目的、特征和优点能更明显易懂,下文特举出较佳实施例,并配合所附图式,作详细说明如下。图1显示依据本发明实施例的微处理器100。于本实施例中,微处理器100的宏结构为一x86宏结构。一微处理器如果能正确地执行大部分被设计在一x86微处理器上执行的应用程序,则此微处理器被称为具有一x86宏结构。若得到一个应用程序预期的结果时,该应用程序是被正确地执行。特别地,微处理器100可执行x86指令集中的指令并包括x86使用者可视暂存器(user-visibleregister)集。x86使用者可视暂存器集包括区段暂存器(segmentregister)138,亦即,CS、DS、ES、FS、GS以及SS暂存器。区段暂存器138被程序用来定义(specify)不同的存储器区段以及其属性,例如基地址(baseaddress)、大小、特权级(privilegelevel)、预设操作大小、可供系统软件所使用、读/写/执行能力、是否存在存储器中等。存取存储器的指令可取决于区段暂存器138的值。也就是说,为了能够适当地执行存储器存取指令,微处理器100必须存取区段暂存器138的值,以决定相关存储器区段的属性。每一x86区段暂存器138在区段暂存器138的一使用者可视部分储存有一16位选择器(selector)以及在区段暂存器138的一隐藏部分(亦即非使用者可视部分)储存有一64位区段描述符(descriptor)。选择器为储存在系统存储器中的描述符表(如全域描述符表(globaldescriptortable,GDT)或区域描述符表(localdescriptortable,LDT))的一索引。描述符描述存储器区段,亦即,定义其属性,并且其为微处理器中由选择器值所索引的GDT或LDT描述符表项目(entry)的一区域性备份。x86指令集包括可允许一程序载入区段暂存器(例如,LDS,LES,LFS,LGS,LSS,POPsegment_register以及MOVsegment_register)的指令。这些指令定义一个运算元,其为欲载入至区段暂存器138的选择器的16位选择器值。除了根据前述指令中的其中一指令将新的选择器值载入至区段暂存器138之外,微处理器也由新的选择器值所索引的GDT或LDT项目中读取描述符,并将描述符载入至区段暂存器138。为了减少微处理器100的电力消耗以及复杂度,微处理器100并不包括用以重新命名区段暂存器138的暂存器重新命名硬件。也就是说,微处理器100不包括提供执行区段暂存器138的暂存器重新命名所需的特定元件,例如相关重新命名表(relevantrenamingtable)、得分禾反项目(scoreboard)、相依性比较器(dependencycomparator)以及转送总线(forwardingbus),即使微处理器100需包括这些元件以执行其他结构暂存器(例如在通用整数、浮点数以及多介质暂存器集里的暂存器)的暂存器重新命名。因此,为了确保微处理器100可产生正确的程序结果,若微处理器100尚未将较旧的用以将一数值载入至一区段暂存器138的指令结果写回时,微处理器100将依序(serialize)执行任何与区段暂存器载入指令相关的较新指令,亦即使用区段暂存器138作为一来源运算元的较新指令,其中上述微处理器中比上述区段暂存器载入指令更旧的指令是指于上述区段暂存器载入指令之前被提取的指令。于一实施例中,微处理器100依序执行一指令是通过等到该指令成为微处理器100中最旧的指令时,才发送该指令加以执行,亦即,等到所有较旧的指令都被引退(retired)时。本领域技术人员可由上述得知,如此将使得与区段暂存器载入指令相关的较新指令的效能降低。下表一显示一示范的程序片段,用以说明前述的相依性情形。表一(l)LFSEBX…(2)MOVFS:[mem],EAX表一的程序中包括一个x86LFS指令(将EBX暂存器的内容载入至FS区段暂存器以及将所选取的区段描述符由适当的描述符表中载入至区段暂存器的隐藏部分),并且按照一程序顺序(尽管不一定要是连续地)接着一将EAX暂存器的内容储存至一存储器区段里的一存储器位置的x86MOV指令,其中该存储器区段由FS区段暂存器描述符所描述,如组合语言码中的区段跨越标记(segmentoverridenotation)所指示。第(2)行中的MOV指令是相依于第(1)行中的LFS指令,因为MOV指令使用由LFS指令所写入的FS区段暂存器描述符值。然而,有益地,发明人观察各种程序,观察当程序执行将一新值载入至DS或ES区段暂存器的一指令,特别是新值频繁地与旧值相同时的情形。观察结果发现,依据本发明实施例的微处理器100不会使与一DS/ES载入指令相依的指令依序执行。微处理器100"预测"DS/ES载入指令所载入的新的DS/ES值将与旧的DS/ES值相同。也就是说,微处理器100在无须等待接收DS/ES载入指令中的新值的情形下,允许发送相依指令以执行并且使用DS/ES暂存器132中的旧值。为了检查此预测以确保微处理器IOO产生正确的程序结果,微处理器100在允许使用旧的DS/ES值的相依指令更新结构状态之前,也会检查确认预测结果正确,亦即新值等于旧值。若新值不等于旧值时,在将新值载入至DS/ES区段暂存器之后,微处理器100清除(flush)管线中的相依指令,使得这些相依指令利用新值重新执行。因此,微处理器IOO可以称为预测地执行(speculativelyexecute)相依指令。下表二显示一示范的程序片段,用以说明前述的情形,其中微处理器100是通过预测一个较旧的区段暂存器载入指令将写入与ES暂存器的目前值相同的值至ES暂存器,以预测地执行一使用ES暂存器的相依存储器存取指令。表二(3)LESEBX…(4)MOVES:[mem],EAX表二的程序片段是类似于表一的程序片段,差别在于其包括ES区段暂存器,而不是FS区段暂存器。表二的程序包括一个x86LES指令(将EBX暂存器的内容载入至ES区段暂存器),并且按照一程序顺序(尽管不一定要是连续地)接着一将EAX暂存器的内容储存至一存储器区段里的一存储器位置的x86MOV指令,其中该存储器区段由ES区段暂存器描述符所描述,如组合语言码中的区段跨越标记所指示。第(4)行中的MOV指令是相依于第(3)行中的LES指令,因为MOV指令使用由LES指令所写入的ES暂存器描述符值。参考图l,微处理器IOO包括一指令快取102,耦接至一指令转译器104(亦可称为指令解码器);一相依性检查单元106,耦接至指令转译器104;—微码只读存储器116,耦接至指令转译器104以及相依性检查单元106;—保留站(reservationstation,RS)108,耦接至相依性检查单元106;发送逻辑单元124(在一实施例中,发送逻辑单元为一指令排程器(instructionscheduler)),耦接至保留站108;执行单元114,其包括一比较器134,耦接至保留站108;区段暂存器138(亦可称为结构区段暂存器),其包括DS/ES暂存器132,耦接至执行单元114;一暂时暂存器128(非结构暂存器),耦接至执行单元114以及区段暂存器138;以及一重排序缓冲器(reorderbuffer,ROB)118,耦接至相依性检查单元106、发送逻辑单元124以及执行单元114。于一实施例中,执行单元114包括一执行存储器存取指令的载入/储存单元(未绘示)。载入/储存单元利用在区段暂存器138中的区段描述符值以执行存储器存取指令。指令快取102由系统存储器(未绘示)中快取包括存储器存取指令以及载入区段暂存器138的程序指令。微处理器也包括一指令转译器104,用以接收来自指令快取102的指令142。于一实施例中,这些指令可视为宏指令(macroinstruction)142,因为这些指令是来自微处理器100的宏指令集(例如x86结构指令集)的指令。指令转译器104将宏指令142转译为微指令144,其中微指令144为微处理器100的微结构的微指令集的指令。特别地,指令转译器104将用以存取存储器的宏指令142转译成与一区段暂存器载入指令相依的载入/储存微指令。微处理器100也包括一微码只读存储器(microcodeR0M)116,用以储存微码程序(microcoderoutine)。本发明不限定于微码只读存储器116,于另一实施例中,亦可用其他储存装置替代。一般而言,微码程序包括可实现载入一区段暂存器138的宏指令142的载入DS/ES暂存器微码程序112以及载入非DS/ES暂存器微码程序122。微处理器100的一微定序器(microsequencer)(未绘示)撷取载入DS/ES暂存器微码程序112以及载入非DS/ES暂存器微码程序122的指令,以提供给微处理器100管线的下一阶段。请参照图2,用以说明载入DS/ES暂存器微码程序112、载入非DS/ES暂存器微码程序122的操作。微处理器100进行一乱序执行。亦即,执行单元114可不依照原有的程序顺序执行指令。特别地,相依性检查单元106以预设在R0B118中的一特定顺序接收来自指令转译器104的微指令144,因此指令可依据此特定顺序引退。然而,执行单元114也可不依照此顺序执行微指令144。因此,依据本发明(例如,如下将描述的图3的步骤308),一个与原有的程序顺序中的旧DS/ES载入指令所写入DS/ES暂存器132的值相依的存储器存取指令,可能实际上由执行单元114在旧DS/ES载入指令写入新值至DS/ES暂存器132之前被执行。请参照图2,其是显示依据本发明实施例的图1中微处理器100的操作流程图。10于步骤202,图1的指令转译器104遇到一个载入区段暂存器138的宏指令142,例如前述表一第(1)行的LFS指令或表二第(3)行的LES指令。接着执行判断步骤204。于判断步骤204,指令转译器104判断目的区段暂存器是否为DS或ES暂存器。若目的区段暂存器为DS或ES暂存器时,则执行步骤206;否则,执行步骤208。于步骤206,指令转译器104暂停宏指令142的转译并且暂时地转移控制至图1的载入DS/ES暂存器微码程序112。载入DS/ES暂存器微码程序112将于图4详细说明。于是,流程于步骤206结束。在步骤208,指令转译器104暂停宏指令142的转译并且暂时地转移控制至图1的载入非DS/ES暂存器微码程序122。载入非DS/ES暂存器微码程序122可包括将非DS/ES载入宏指令142所定义的新值载入至非DS/ES暂存器并且接着返回控制给指令转译器104的微指令。于是,流程于步骤208结束。请再参照图l,微处理器100也包括一相依性检查单元106,其可接收来自指令转译器104以及来自微码只读存储器116的微指令144。相依性检查单元106在ROB118中对每一个指令配置一对应的项目。ROB118的项目是依照程序顺序设置,使得R0B118可确保指令会依照程序顺序引退。相依性检查单元106也产生每一指令的相依信息并且将指令的相依信息提供给R0B118,以储存至与指令相关的R0B118项目中。相依性检查单元106接着提供指令至保留站108,使指令于保留站108中等候,直到发送逻辑单元124决定其是已经准备好要被发送至执行单元114加以执行。R0B118更新每个指令的状态,例如指示指令已被发送、已被执行完成或已被引退,发送逻辑单元124也用此以判断一个指令是否已准备好被发送。更特别来说,相依性检查单元106保持追踪在微处理器100中所有未引退指令的结果目的暂存器。当相依性检查单元106接收到一指令时,其察看被指令所使用的多个来源运算元暂存器(例如区段暂存器138),并且对每个来源运算元决定较旧的未引退指令(例如一区段载入指令)中的哪一个将被写入至来源运算元暂存器,并指出该指令是相依于该较旧的未引退指令。若相依性检查单元106找到许多写入同一来源运算元暂存器的未引退指令,相依性检查单元106判断这些未引退指令中哪一个未引退指令最新,并指出目前接收的指令是相依于这些未引退指令中最新的一个。发送逻辑单元124使用由相依性检查单元106所产生的相依性信息以决定保留站108中的哪一指令已准备好发送至执行单元114加以执行。一般来说,发送逻辑单元124将根据相依性信息,等到所有的指令都被引退时(亦即利用其结果更新其目的暂存器)才发送一指令,其中相依性信息表示指令与其来源运算元相依。为求精确,微处理器100可通过转送总线及/或重新命名暂存器,转送其结果至相依指令中;亦即,结果可为有效的,致使发送逻辑单元124可在结果供应(result-su卯lying)指令实际更新结构暂存器并且引退之前,发送相依指令。然而,由相依性信息所表示的结果供应指令必须在发送逻辑单元124可发送相依指令至执行单元114之前,产生其结果以及致使结果可有效于相依指令。关于发送逻辑单元124的细部操作,请参照图3。请参照图3,其是显示依据本发明实施例的图1中微处理器100的操作流程图。流程由步骤302开始。于步骤302,发送逻辑单元124判断在其中一保留站108中有一个指令,该指令与载入其中的一区段暂存器138的指令相依。也就是说,发送逻辑单元124判断该指令为一存储器参考指令(例如表一第(2)行中或表二第(4)行中的MOV指令),使得微处理器100必须存取一区段暂存器138加以执行,并且区段暂存器138为一较旧的未引退指令的目的暂存器。接着,执行判断步骤304。于判断步骤304,发送逻辑单元124判断相依指令与DS/ES暂存器132相依或与区段暂存器(非DS/ES暂存器)138相依。若相依指令与DS/ES暂存器132相依,执行步骤308;否则执行步骤306。于步骤306,如前述,发送逻辑单元124依序执行与载入一非DS/ES暂存器相依的指令。于一实施例中,相依性检查单元106产生相依性信息表示相依指令与其本身相依以实现依序执行。也就是说,当相依性信息表示相依指令与其本身相依时,发送逻辑单元124将依照ROB118所指示,等到相依指令为微处理器100中最旧的指令时,才决定相依指令是已准备好要发送至执行单元114。特别地,因为执行单元114乱序执行指令,若相依性检查单元106以及发送逻辑单元124并未依序执行相依指令,则载入/储存单元可能使用一个陈旧的(stale)区段描述符值加以执行。然而,在本发明中,即使微处理器100不包括区段暂存器138的暂存器重新命名硬件,依序执行指令可确保正确的程序操作,如前述,因为其可确保相依指令在其可接收来自区段暂存器138的区段描述符的最新值前,不会被发送。也就是说,发送逻辑单元124可等到新值被载入至区段暂存器138之后,由该区段暂存器138中撷取新值,并且利用撷取到的新值发送次一连续的指令加以执行。表一的第(2)行的MOV指令为一个微处理器IOO将依序执行的指令的例子,因为其相依于表一的第(1)行的非DS/ES暂存器载入指令。于是,流程于步骤306结束。于步骤308,发送逻辑单元124忽略存储器存取指令关于DS/ES暂存器132的相依性。也就是说,只要所有用以使相依指令准备被发送的其他条件满足(例如载入/储存单元是可用的并且除了DS/ES暂存器132之外的所有其他来源运算元都有效),发送逻辑单元124发送指令至执行单元114并且DS/ES暂存器132将其目前值提供至执行单元114,借此执行存储器存取指令。于另一实施例中,发送逻辑单元124可由DS/ES暂存器132中撷取其目前值,并且发送使用撷取到的目前值作为来源运算元的存储器存取指令加以执行,并以此执行结果更新微处理器100的结构状态。有效地,发送逻辑单元124预测DS/ES暂存器132的目前值与将通过DS/ES载入指令写入至DS/ES暂存器132的新值相等,并且预测地执行相依的存储器存取指令。通过前述预测并且进而发送相依指令,微处理器100有效地减少了执行包括DS/ES载入指令及其相依存储器存取指令的程序所需的时间。表二的第(4)行的M0V指令为一个微处理器100预测地执行的例子,因为其相依于表二的第(3)行的DS/ES暂存器载入指令。于是,流程于步骤308结束。下表三显示一示范的虚拟程序码,用以描述图1的载入DS/ES暂存器微码程序112的相关部分。此虚拟程序码将与图4一并讨论。表三(1)loadTemp,[NewDescriptorAddress](2)compareT卿,DS(3)if(T卿==DS){(4)done;12(5)}else{(6)MoveTemp—>DS(7)branchtoNextInstruction;causeapipelineflush(8)done;(9)}请参照图4,其是显示依据本发明实施例的图1中微处理器100的操作流程图。流程由步骤402开始。于步骤402,相应于遇到一将一值(区段暂存器值)载入图1的DS/ES暂存器132的指令,指令转译器104将转移控制至载入DS/ES暂存器微码程序112,如前述的图2的对应步骤206所示。载入DS/ES暂存器微码程序112首先将指令所定义的值(区段暂存器值)自存储器载入至图1的暂时暂存器128,如表三的第(1)行所示。接着,执行步骤404。于步骤404,载入DS/ES暂存器微码程序112比较图1的DS/ES暂存器132中的目前值与在步骤402时载入至暂时暂存器128中的值,如表三的第(2)行所示。于一实施例中,载入DS/ES暂存器微码程序112可命令比较器134执行此步骤。接着,执行决定步骤406。于决定步骤406,载入DS/ES暂存器微码程序112判断图1的DS/ES暂存器132中的目前值与载入至暂时暂存器128中的值是否相等,如表三的第(3)行所示。若是,流程结束,如表三的第(4)行所示;否则,接着执行步骤408,如表三的第(5)行所示。于步骤408,因为在图1的DS/ES暂存器132中的目前值不等于与载入至暂时暂存器128中的值(其为将被DS/ES载入指令所载入的新值),载入DS/ES暂存器微码程序112将暂时暂存器128中的值移至DS/ES暂存器132中,如表三的第(6)行所示。值得注意的是,执行表三的第(6)行的动作的微指令144为载入DS/ES暂存器微码程序112中的实际写入新值至DS/ES暂存器132的指令。因此,于步骤308所描述的相依存储器存取指令是相依于第(6)行中的指令,并且发送逻辑单元124忽略其相依性并预测由第(6)行中的指令所写入的DS/ES暂存器132的新值是等于步骤308中所描述的相依存储器存取指令所使用的DS/ES暂存器132的旧值。然而,在这种情形下,于决定步骤406将判断出预测为不正确的,亦即第(6)行中的指令所写入的DS/ES暂存器132的新值是不等于步骤308中所描述的相依存储器存取指令所使用的DS/ES暂存器132的旧值;因此,存储器存取指令可能会使用错误的DS/ES暂存器132的值以执行,并且预测错误必须被更正以确保微处理器100产生正确的程序结果。接着,执行步骤412。于步骤412,为了更正图3的步骤308的错误预测结果,载入DS/ES暂存器微码程序112清除管线中所有较新于表三的第(6)行的指令,包括相依存储器存取指令,例如表二的第(4)行的MOV指令。载入DS/ES暂存器微码程序112接着在如步骤202所述遇到载入DS/ES暂存器132的宏指令142(例如表二的第(3)行的LES指令)之后,重新开始撷取次一连续的宏指令。如此,将可正确地利用在步骤408中通过第(6)行中的指令写入至DS/ES暂存器132的新值重新发送以及重新执行相依存储器存取指令,并以此执行结果更新微处理器100的结构状态,因此更正了在步骤308的预测错误。于一实施例中,清除并跳至次一连续的宏指令是可通过表三的第(7)行中的指令加以执行。于一实施例中,载入DS/ES暂存器微码程序112可命令执行单元114执行此步骤。虽然于上述实施例中,微处理器是具有一x86宏结构,然而本发明并不限于应用在x86宏结构。再者,实施例考虑微处理器具有一不同的宏结构,具有包括区段暂存器以及不包括区段暂存器重新命名硬件的一超纯量微结构,也可利用前述技术,通过预测由一较旧的指令所载入至一区段暂存器的新值与区段暂存器的旧值相同并随后忽略较新的存储器存取指令在区段暂存器值的相依性,再于新值不等于旧值时,通过清除并重新执行相依指令来确保正确的程序结果,进而预测地执行相依存储器存取指令。本发明的方法,或特定型态或其部分,可以以程序码的型态包括于实体介质,如软盘、光盘片、硬盘或是任何其他机器可读取(如计算机可读取)储存介质,其中,当程序码被机器,如计算机载入且执行时,此机器变成用以实施本发明的装置。本发明的方法与装置也可以以程序码型态通过一些传送介质,如电线或电缆、光纤或是任何传输型态进行传送,其中,当程序码被机器,如计算机接收、载入且执行时,此机器变成用以实施本发明的装置。当在一般用途微处理器操作时,程序码结合微处理器提供一操作类似于应用特定逻辑电路的独特装置。以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。权利要求一种乱序执行微处理器,其特征在于,用以执行一区段暂存器载入指令,该区段暂存器载入指令指示该乱序执行微处理器将一新值载入至该乱序执行微处理器的一区段暂存器,该乱序执行微处理器包括一执行单元,至少包括一比较器,该执行单元用以通过该比较器比较该区段暂存器载入指令所指示的该新值与该区段暂存器的一目前值,当该比较器显示该新值不等于该目前值时,该执行单元利用该新值重新执行在该微处理器中所有以该区段暂存器的该目前值作为一来源运算元且程序顺序较新于该区段暂存器载入指令的程序顺序的第一指令,其中该区段暂存器为一x86区段暂存器,且该新值描述一存储器区段。2.根据权利要求1所述的乱序执行微处理器,其特征在于,还包括一指令排程器,用以撷取该区段暂存器的该目前值,并且发送使用撷取到的该目前值作为该来源运算元的至少一所述第一指令加以执行,即使所述第一指令的程序顺序较新于该区段暂存器载入指令的程序顺序,并且该区段暂存器载入指令尚未将该新值写入至该区段暂存器。3.根据权利要求l所述的乱序执行微处理器,其特征在于,该x86区段暂存器包括一可视部分以及一隐藏部分,该可视部分用以储存索引一存储器区段描述符表的一区段选择器,而该隐藏部分用以储存描述该存储器区段的一区段描述符。4.一种乱序执行微处理器,其特征在于,具有一第一区段暂存器,该乱序执行微处理器包括一指令排程器,用以发送一第一指令加以执行,其中该第一指令指示该乱序执行微处理器将一第一新值载入至该第一区段暂存器,其中该指令排程器还用以由该第一区段暂存器中撷取一目前值,并且利用撷取到的该目前值发送一第二指令加以执行,即使该第一指令的程序顺序早于该第二指令的程序顺序,并且该第一指令尚未将该第一新值写入至该第一区段暂存器;以及一执行单元,耦接至该指令排程器,用以比较该第一新值与撷取到的该目前值,并且若该第一新值不等于撷取到的该目前值,则由该第一区段暂存器中撷取该第一新值,并利用撷取到的该第一新值,重新发送该第二指令加以执行。5.根据权利要求4所述的乱序执行微处理器,其特征在于,当该第一新值等于撷取到的该目前值时,该执行单元更利用该第二指令的第一次执行结果更新该微处理器的一结构状态,而当该第一新值不等于撷取到的该目前值时,该执行单元更利用该第二指令的第二次执行结果更新该微处理器的该结构状态。6.根据权利要求4所述的乱序执行微处理器,其特征在于,该第一区段暂存器为一x86DS区段暂存器或ES区段暂存器。7.—种微处理器,其特征在于,具有多个区段暂存器,所述区段暂存器包括互斥的第一子集合以及第二子集合,该微处理器包括一存储器,用以储存第一微码程序以及第二微码程序;以及一指令解码器,耦接至该存储器,用以遇到指示所述区段暂存器中的一第一区段暂存器载入一新值的一指令,其中当该第一区段暂存器是于该第一子集合中时,该指令解码器用以执行该第一微码程序,当该第一区段暂存器是于该第二子集合中时,该指令解码器用以执行该第二微码程序;其中该第一微码程序用以将该新值直接载入至该第一区段暂存器中;该第二微码程序用以于该新值不等于该第一区段暂存器中所储存的一目前值时,将该新值载入至该第一区段暂存器中。8.根据权利要求7所述的微处理器,其特征在于,所述区段暂存器的该第二子集合由x86DS区段暂存器以及ES区段暂存器所构成。9.根据权利要求7所述的微处理器,其特征在于,当该新值不等于该第一区段暂存器中所储存的该目前值时,该第二微码程序更用以致使所有较新于该指令的指令利用该新值重新执行。10.—种提升效能的方法,其特征在于,适用于一微处理器,该微处理器包括多个区段暂存器,但不包括所述区段暂存器的暂存器重新命名硬件,其中该微处理器用以执行一区段暂存器载入指令以及一存储器存取指令,该区段暂存器载入指令将一新值载入至所述区段暂存器中的一第一区段暂存器,以及该存储器存取指令存取该第一区段暂存器所描述的一存储器区段,其中该存储器存取指令的程序顺序是于该第一区段暂存器载入指令之后,该提升效能的方法包括由该第一区段暂存器中撷取一目前值;利用撷取到的该目前值,执行该存储器存取指令;在撷取到该目前值之后,判断该目前值是否等于该新值;若该目前值不等于该新值时,则将该新值载入至该第一区段暂存器中;由该第一区段暂存器中撷取该新值;以及利用该第一区段暂存器中撷取到的该新值,重新执行该存储器存取指令。11.根据权利要求10所述的提升效能的方法,其特征在于,还包括若该目前值等于该新值时,则不载入该新值至该第一区段暂存器。12.根据权利要求10所述的提升效能的方法,其特征在于,还包括在所述判断该目前值是否等于该新值的步骤之前,将该新值由该存储器载入至该微处理器的一暂时暂存器;其中该判断步骤包括比较由该存储器载入至该暂时暂存器的该新值与该第一区段暂存器中的该目前值。13.根据权利要求IO所述的提升效能的方法,其特征在于,还包括在所述重新执行该存储器存取指令步骤之前,清除该微处理器的一管线中的该存储器存取指令。14.一种执行方法,其特征在于,用以执行于一微处理器中的一存储器存取指令,其中该存储器存取指令存取由该微处理器的一区段暂存器上一区段描述符所描述的一存储器区段,使得该微处理器利用该区段描述符来执行该存储器存取指令,该执行方法包括执行关于将被写入至该区段暂存器的一新值与该区段暂存器所储存的一目前值相等的一预测;以及利用该目前值,执行该存储器存取指令,而非等候该微处理器将该新值写入至该区段暂存器,即使该存储器存取指令的程序顺序较新于指示该新值将被写入至该区段暂存器的一指令。15.根据权利要求14所述的执行方法,其特征在于,还包括若该预测不正确时,清除该微处理器的一管线中的该存储器存取指令;以及利用该新值重新执行该存储器存取指令。全文摘要本发明提供一种乱序执行微处理器及提升效能的方法、执行方法,该乱序执行微处理器用以执行指示乱序执行微处理器将一新值载入至乱序执行微处理器的一区段暂存器的一区段暂存器载入指令。该乱序执行微处理器包括一执行单元,该执行单元至少包括一比较器,用以比较新值与区段暂存器的一目前值,当新值不等于目前值时,利用新值重新执行在微处理器中所有以目前值作为一来源运算元且程序顺序较新于区段暂存器载入指令的程序顺序的第一指令,其中该区段暂存器为一x86区段暂存器,且该新值描述一存储器区段。本发明可在一乱序执行超纯量管线微处理器上对效能、成本冲突提供良好的平衡。文档编号G06F9/38GK101776989SQ20101011202公开日2010年7月14日申请日期2010年2月5日优先权日2009年2月11日发明者吉拉德·M·卡尔,泰瑞·派克斯,罗德尼·E·虎克申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1