新四季網

亂序執行微處理器及提升效能的方法、執行方法

2023-05-22 18:59:21 1


專利名稱::亂序執行微處理器及提升效能的方法、執行方法
技術領域:
:本發明有關於微處理器領域的應用,特別是有關於微處理器領域的暫存器重新命名的應用。
背景技術:
:電腦程式設計者將一電腦程式內的指令按照一特定的順序安排,通常這個特定順序稱為程序順序。電腦程式設計者通過執行電腦程式的微處理器,根據程序順序,並依據如何執行指令的特定規則以執行電腦程式裡的各項指令。舉例來說,於第一個例子中,假設指令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·虎克申請人:威盛電子股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀