微處理器以及微處理器操作方法【專利摘要】一種微處理器以及微處理器操作方法,適用于x86架構(gòu)下的微處理器處理存儲(chǔ)器存取指令,存儲(chǔ)器存取指令指示載入/儲(chǔ)存信息由/至微處理器的x86區(qū)段暫存器的存儲(chǔ)器區(qū)段,x86指令指示微處理器載入新值至x86區(qū)段暫存器,而x86指令尚未被微處理器引退,微處理器操作方法包括:判斷該x86區(qū)段暫存器是否為多個(gè)DS/ES?x86區(qū)段暫存器的一個(gè);若是,則:發(fā)送存儲(chǔ)器存取指令以利用DS/ES?x86區(qū)段暫存器的目前值而不是新值來(lái)執(zhí)行;以及若不是,則:等候發(fā)送存儲(chǔ)器存取指令直到存儲(chǔ)器存取指令可利用新值而不是非DS/ES?x86區(qū)段暫存器的目前值來(lái)執(zhí)行?!緦@f(shuō)明】微處理器以及微處理器操作方法[0001]本申請(qǐng)是申請(qǐng)日為2010年2月5日、申請(qǐng)?zhí)枮?01010112024.8、發(fā)明名稱為“亂序執(zhí)行微處理器及提升效能的方法、執(zhí)行方法”的申請(qǐng)的分案申請(qǐng)。【
技術(shù)領(lǐng)域:
】[0002]本發(fā)明有關(guān)于微處理器領(lǐng)域的應(yīng)用,特別是有關(guān)于微處理器領(lǐng)域的暫存器重新命名的應(yīng)用。【
背景技術(shù):
】[0003]計(jì)算機(jī)程序設(shè)計(jì)者將一計(jì)算機(jī)程序內(nèi)的指令按照一特定的順序安排,通常這個(gè)特定順序稱為程序順序。計(jì)算機(jī)程序設(shè)計(jì)者通過(guò)執(zhí)行計(jì)算機(jī)程序的微處理器,根據(jù)程序順序,并依據(jù)如何執(zhí)行指令的特定規(guī)則以執(zhí)行計(jì)算機(jī)程序里的各項(xiàng)指令。舉例來(lái)說(shuō),于第一個(gè)例子中,假設(shè)指令B的程序順序是于指令A(yù)之后,并且假設(shè)指令A(yù)寫(xiě)入至微處理器的一暫存器,指令B從同一暫存器中讀取數(shù)據(jù)。于此例中,程序設(shè)計(jì)者通過(guò)微處理器,利用指令A(yù)所寫(xiě)入的數(shù)值來(lái)執(zhí)行指令B,而不是利用在指令A(yù)將其數(shù)值寫(xiě)入至?xí)捍嫫髦霸跁捍嫫髦械臄?shù)值。于第二個(gè)例子中,假設(shè)指令A(yù)由暫存器中讀取數(shù)據(jù)且指令B寫(xiě)入至?xí)捍嫫鳌S诖死?,程序設(shè)計(jì)者是通過(guò)微處理器,利用在指令B將其數(shù)值寫(xiě)入至?xí)捍嫫髦霸跁捍嫫髦械臄?shù)值來(lái)執(zhí)行指令A(yù)。于第三個(gè)例子中,假設(shè)指令A(yù)以及指令B皆將數(shù)據(jù)寫(xiě)入至?xí)捍嫫?,指令C的程序順序在指令B之后,并且指令C讀取暫存器的數(shù)據(jù)。于此例中,程序設(shè)計(jì)者是通過(guò)微處理器,利用由指令B寫(xiě)入的數(shù)值來(lái)執(zhí)行指令C,而不是指令A(yù)寫(xiě)入的數(shù)值。[0004]一種可以使微處理器根據(jù)上述程序順序的規(guī)則執(zhí)行的方法是簡(jiǎn)單地根據(jù)程序順序來(lái)執(zhí)行指令。然而,許多較先進(jìn)的微處理器,特別是包括多個(gè)執(zhí)行單元的超純量管線微處理器(superscalarpipelinedmicroprocessor),可在一個(gè)單一時(shí)脈周期中發(fā)送多個(gè)指令,并且可通過(guò)亂序(out-of-order),亦即不依照程序順序來(lái)執(zhí)行指令,以實(shí)現(xiàn)效能的提升。亂序執(zhí)行特別利于在指令流中需要較長(zhǎng)的時(shí)間來(lái)執(zhí)行的特定的指令(通常為長(zhǎng)延遲指令,例如浮點(diǎn)指令或存儲(chǔ)器讀取指令)的處理。[0005]當(dāng)一個(gè)有序(in-order)執(zhí)行微處理器遇到(encounter)—長(zhǎng)延遲指令時(shí),執(zhí)行單元可能在多個(gè)時(shí)隙(timeslot)中(在一些情況下可為100個(gè)時(shí)隙)保持閑置(idle),用以等待長(zhǎng)延遲指令完成。然而,在等待長(zhǎng)延遲指令完成的同時(shí),一個(gè)亂序執(zhí)行微處理器試著去找到可被執(zhí)行單元所執(zhí)行的指令。這些指令通常為獨(dú)立指令,因?yàn)檫@些指令可以在不違反任何與程序順序有關(guān)的規(guī)則(例如上述討論三種)的情況下,不依照與長(zhǎng)延遲指令有關(guān)的程序順序加以執(zhí)行。相反地,有序執(zhí)行微處理器必須等候執(zhí)行與任何程序順序出現(xiàn)在之前的指令(例如長(zhǎng)延遲指令)相關(guān)的指令。因此,可以發(fā)現(xiàn)一亂序執(zhí)行超純量管線微處理器的多個(gè)執(zhí)行單元的效能利用,可能受限于微處理器可在程序的指令流中找到的獨(dú)立指令的個(gè)數(shù)。[0006]一種應(yīng)用在亂序執(zhí)行超純量管線微處理器上,用以增加指令流的獨(dú)立指令的數(shù)量的現(xiàn)有技術(shù)為暫存器重新命名。特別地,暫存器重新命名可以幫助在上面第二以及第三例子中的指令A(yù)以及指令B彼此獨(dú)立,使得微處理器可以不照順序執(zhí)行指令A(yù)以及指令B。微處理器包括結(jié)構(gòu)暫存器(architecturalregister),例如程序指令定義的運(yùn)算元的來(lái)源暫存器或存放結(jié)果的目的暫存器。舉例來(lái)說(shuō),一個(gè)x86結(jié)構(gòu)微處理器的整數(shù)結(jié)構(gòu)暫存器包括EAX、EBX、ECX、EDX、ES1、ED1、ESP以及EBP暫存器等。一個(gè)具有暫存器重新命名功能的微處理器包括比結(jié)構(gòu)暫存器的數(shù)量更多的實(shí)體暫存器。舉例來(lái)說(shuō),一結(jié)構(gòu)定義為8個(gè)整數(shù)暫存器的x86微處理器可能具有32個(gè)實(shí)體暫存器,其可重新命名8個(gè)結(jié)構(gòu)暫存器。當(dāng)微處理器遇到定義這些結(jié)構(gòu)暫存器中的一暫存器為其目的暫存器的一指令時(shí),重新命名硬件將結(jié)構(gòu)暫存器“重新命名”為實(shí)體暫存器中其中之一。當(dāng)微處理器執(zhí)行此指令以產(chǎn)生結(jié)果時(shí),微處理器便將結(jié)果寫(xiě)入至實(shí)體暫存器。此外,假設(shè)一個(gè)指令定義結(jié)構(gòu)暫存器中其中一者為一運(yùn)算元的來(lái)源,重新命名硬件判斷與目前指令相依(關(guān))的指令,該指令是在程序順序中將一結(jié)果寫(xiě)入至定義好的來(lái)源結(jié)構(gòu)暫存器的最新的指令但較早于目前指令。重新命名硬件將致使目前指令不去參考結(jié)構(gòu)暫存器,而是去參考與目前指令相關(guān)的結(jié)構(gòu)暫存器被重新命名后的實(shí)體暫存器。如此一來(lái),將使得目前指令從適當(dāng)?shù)刂匦旅膶?shí)體暫存器中接收其來(lái)源運(yùn)算元。[0007]然而,通過(guò)暫存器重新命名來(lái)提升效能可能會(huì)造成硬件芯片(die)空間、電源以及復(fù)雜度的大量增加。在許多暫存器重新命名微處理器上,這是存在的事實(shí)。因此,需要一種可在一亂序執(zhí)行超純量管線微處理器上對(duì)效能、成本沖突提供一良好平衡的解決方法?!?br/>發(fā)明內(nèi)容】[0008]有鑒于此,本發(fā)明提供一種可在一亂序執(zhí)行超純量管線微處理器上對(duì)效能、成本沖突提供一良好平衡的解決方法。[0009]本發(fā)明還提供一種微處理器操作方法,適用于x86架構(gòu)下的一微處理器處理一存儲(chǔ)器存取指令,該存儲(chǔ)器存取指令指示由該微處理器的一x86區(qū)段暫存器的一存儲(chǔ)器區(qū)段載入數(shù)據(jù)、或者儲(chǔ)存數(shù)據(jù)至該微處理器的一x86區(qū)段暫存器的一存儲(chǔ)器區(qū)段,一x86指令指示該微處理器載入一新值至該x86區(qū)段暫存器,而該x86指令尚未被該微處理器引退,該微處理器操作方法包括:判斷該x86區(qū)段暫存器是否為多個(gè)DS/ESx86區(qū)段暫存器的一個(gè);若該x86區(qū)段暫存器為所述DS/ESx86區(qū)段暫存器的一個(gè),則:發(fā)送該存儲(chǔ)器存取指令以利用該DS/ESx86區(qū)段暫存器的一目前值而不是該新值來(lái)執(zhí)行;以及若該x86區(qū)段暫存器并非為該DS/ESx86區(qū)段暫存器,則:等候發(fā)送該存儲(chǔ)器存取指令直到該存儲(chǔ)器存取指令可利用該新值而不是一非DS/ESx86區(qū)段暫存器的一目前值來(lái)執(zhí)行。[0010]本發(fā)明還提供一微處理器,用于x86架構(gòu)下處理一存儲(chǔ)器存取指令,該存儲(chǔ)器存取指令指示由該微處理器的一x86區(qū)段暫存器的一存儲(chǔ)器區(qū)段載入數(shù)據(jù)、或者儲(chǔ)存數(shù)據(jù)至該微處理器的一x86區(qū)段暫存器的一存儲(chǔ)器區(qū)段,一x86指令指示該微處理器載入一新值至該x86數(shù)據(jù)區(qū)段暫存器,而該x86指令尚未被該微處理器引退,該微處理器包括:一微碼,引發(fā)以回應(yīng)該x86指令,且該x86指令指示該微處理器載入該新值至該x86區(qū)段暫存器;其中,若該x86區(qū)段暫存器并非為一DS/ESx86區(qū)段暫存器,則:該微碼執(zhí)行一第一指令用以載入該新值至一非DS/ESx86區(qū)段暫存器,以致使該存儲(chǔ)器存取指令利用該新值而不是該非DS/ESx86區(qū)段暫存器的一目前值執(zhí)行;其中,若該x86區(qū)段暫存器為該DS/ESx86區(qū)段暫存器,則:該微碼執(zhí)行一第二指令用以比較該新值與該DS/ESx86區(qū)段暫存器的一目前值,其中若該目前值等于該新值時(shí),則該微碼不執(zhí)行載入該新值至該DS/ESx86區(qū)段暫存器的指令,以致使該存儲(chǔ)器存取指令利用該DS/ESx86區(qū)段暫存器的該目前值而非該新值執(zhí)行,否則執(zhí)行一第三指令以及一第四指令,該第三指令用以載入該新值至該DS/ESx86區(qū)段暫存器,而該第四指令用以將該存儲(chǔ)器存取指令清除并利用載入至該DS/ESx86區(qū)段暫存器的該新值重新執(zhí)行該存儲(chǔ)器存取指令。[0011]本發(fā)明還提供一微處理器,用以執(zhí)行一區(qū)段暫存器載入指令以及一存儲(chǔ)器存取指令,該區(qū)段暫存器載入指令將一新值載入至一區(qū)段暫存器,以及該存儲(chǔ)器存取指令存取一區(qū)段暫存器所描述的一存儲(chǔ)器區(qū)段,其中該存儲(chǔ)器存取指令的程序順序處于該區(qū)段暫存器載入指令之后,該微處理器包括:多個(gè)區(qū)段暫存器,包括該區(qū)段暫存器,其中該微處理器不包括用于所述區(qū)段暫存器的一暫存器重新命名硬體;以及多個(gè)執(zhí)行單元,用以:從該區(qū)段暫存器擷取一目前值;利用所擷取到的該目前值執(zhí)行該存儲(chǔ)器存取指令;以及擷取該目前值后,判斷該目前值是否等于該新值;其中,若該新值等于該目前值,則:該微處理器不載入該新值至該區(qū)段暫存器;以及其中,若該新值不等于該目前值,則:該微處理器載入該新值至該區(qū)段暫存器;從該區(qū)段暫存器擷取該新值;以及利用從該區(qū)段暫存器所擷取的該新值重新執(zhí)行該存儲(chǔ)器存取指令。[0012]本發(fā)明還提供一種微處理器操作方法,適用于具有多個(gè)區(qū)段暫存器的一微處理器,其中所述區(qū)段暫存器包括互斥的第一子集合以及第二子集合,該微處理器操作方法包括:遇到指示所述區(qū)段暫存器中的一區(qū)段暫存器載入一新值的一指令;若該區(qū)段暫存器于該第一子集合中,則:將該新值直接載入至該區(qū)段暫存器中;以及若該區(qū)段暫存器于該第二子集合中,則:于該新值不等于該區(qū)段暫存器中所儲(chǔ)存的一目前值時(shí),將該新值載入至該區(qū)段暫存器中;以及于該新值等于該區(qū)段暫存器中所儲(chǔ)存的該目前值時(shí),不載入該新值至該區(qū)段暫存器。[0013]本發(fā)明上述方法可以通過(guò)程序碼方式收錄于實(shí)體介質(zhì)中。當(dāng)程序碼被機(jī)器載入且執(zhí)行時(shí),機(jī)器變成用以實(shí)行本發(fā)明的裝置。[0014]本發(fā)明可在一亂序執(zhí)行超純量管線微處理器上對(duì)效能、成本沖突提供良好的平衡?!緦@綀D】【附圖說(shuō)明】[0015]圖1顯示一依據(jù)本發(fā)明實(shí)施例的微處理器的示意圖。[0016]圖2至圖4顯示依據(jù)本發(fā)明實(shí)施例的圖1的微處理器的操作流程示意圖。[0017]附圖中符號(hào)的簡(jiǎn)單說(shuō)明如下:[0018]100:微處理器[0019]102:指令快取[0020]104:指令轉(zhuǎn)譯器[0021]106:相依性檢查單元[0022]108:保留站(RS)[0023]112:載入DS/ES暫存器微碼程序[0024]114:執(zhí)行單元[0025]116:微碼只讀存儲(chǔ)器[0026]118:重排序緩沖器(ROB)[0027]122:載入非DS/ES暫存器微碼程序[0028]124:發(fā)送邏輯單元[0029]128:暫時(shí)暫存器[0030]132:DS/ES暫存器[0031]134:比較器[0032]138:區(qū)段暫存器[0033]142:宏指令[0034]144:微指令[0035]202?208:執(zhí)行步驟[0036]302?308:執(zhí)行步驟[0037]402?412:執(zhí)行步驟?!揪唧w實(shí)施方式】[0038]為使本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉出較佳實(shí)施例,并配合所附圖式,作詳細(xì)說(shuō)明如下。[0039]圖1顯不依據(jù)本發(fā)明實(shí)施例的微處理器100。于本實(shí)施例中,微處理器100的宏結(jié)構(gòu)為一x86宏結(jié)構(gòu)。一微處理器如果能正確地執(zhí)行大部分被設(shè)計(jì)在一x86微處理器上執(zhí)行的應(yīng)用程序,則此微處理器被稱為具有一x86宏結(jié)構(gòu)。若得到一個(gè)應(yīng)用程序預(yù)期的結(jié)果時(shí),該應(yīng)用程序是被正確地執(zhí)行。特別地,微處理器100可執(zhí)行x86指令集中的指令并包括x86使用者可視暫存器(user-visibleregister)集。[0040]x86使用者可視暫存器集包括區(qū)段暫存器(segmentregister)138,亦即,CS、DS、ES、FS、GS以及SS暫存器。區(qū)段暫存器138被程序用來(lái)定義(specify)不同的存儲(chǔ)器區(qū)段以及其屬性,例如基地址(baseaddress)、大小、特權(quán)級(jí)(privilegelevel)、預(yù)設(shè)操作大小、可供系統(tǒng)軟件所使用、讀/寫(xiě)/執(zhí)行能力、是否存在存儲(chǔ)器中等。存取存儲(chǔ)器的指令可取決于區(qū)段暫存器138的值。也就是說(shuō),為了能夠適當(dāng)?shù)貓?zhí)行存儲(chǔ)器存取指令,微處理器100必須存取區(qū)段暫存器138的值,以決定相關(guān)存儲(chǔ)器區(qū)段的屬性。[0041]每一x86區(qū)段暫存器138在區(qū)段暫存器138的一使用者可視部分儲(chǔ)存有一16位選擇器(selector)以及在區(qū)段暫存器138的一隱藏部分(亦即非使用者可視部分)儲(chǔ)存有一64位區(qū)段描述符(descriptor)。選擇器為儲(chǔ)存在系統(tǒng)存儲(chǔ)器中的描述符表(如全域描述符表(globaldescriptortable,GDT)或區(qū)域描述符表(localdescriptortable,LDT))的一索引。描述符描述存儲(chǔ)器區(qū)段,亦即,定義其屬性,并且其為微處理器中由選擇器值所索引的⑶T或LDT描述符表項(xiàng)目(entry)的一區(qū)域性備份。x86指令集包括可允許一程序載入?yún)^(qū)段暫存器(例如,LDS,LES,LFS,LGS,LSS,POPsegment_register以及MOVsegment_register)的指令。這些指令定義一個(gè)運(yùn)算元,其為欲載入至區(qū)段暫存器138的選擇器的16位選擇器值。除了根據(jù)前述指令中的其中一指令將新的選擇器值載入至區(qū)段暫存器138之外,微處理器也由新的選擇器值所索引的GDT或LDT項(xiàng)目中讀取描述符,并將描述符載入至區(qū)段暫存器138。[0042]為了減少微處理器100的電力消耗以及復(fù)雜度,微處理器100并不包括用以重新命名區(qū)段暫存器138的暫存器重新命名硬件。也就是說(shuō),微處理器100不包括提供執(zhí)行區(qū)段暫存器138的暫存器重新命名所需的特定元件,例如相關(guān)重新命名表(relevantrenamingtable)、得分板項(xiàng)目(scoreboard)、相依性比較器(dependencycomparator)以及轉(zhuǎn)送總線(forwardingbus),即使微處理器100需包括這些元件以執(zhí)行其他結(jié)構(gòu)暫存器(例如在通用整數(shù)、浮點(diǎn)數(shù)以及多介質(zhì)暫存器集里的暫存器)的暫存器重新命名。因此,為了確保微處理器100可產(chǎn)生正確的程序結(jié)果,若微處理器100尚未將較舊的用以將一數(shù)值載入至一區(qū)段暫存器138的指令結(jié)果寫(xiě)回時(shí),微處理器100將依序(serialize)執(zhí)行任何與區(qū)段暫存器載入指令相關(guān)的較新指令,亦即使用區(qū)段暫存器138作為一來(lái)源運(yùn)算元的較新指令,其中上述微處理器中比上述區(qū)段暫存器載入指令更舊的指令是指于上述區(qū)段暫存器載入指令之前被提取的指令。于一實(shí)施例中,微處理器100依序執(zhí)行一指令是通過(guò)等到該指令成為微處理器100中最舊的指令時(shí),才發(fā)送該指令加以執(zhí)行,亦即,等到所有較舊的指令都被引退(retired)時(shí)。本領(lǐng)域技術(shù)人員可由上述得知,如此將使得與區(qū)段暫存器載入指令相關(guān)的較新指令的效能降低。[0043]下表一顯示一示范的程序片段,用以說(shuō)明前述的相依性情形。[0044]表一[0045](I)LFSEBX[0046]…[0047](2)MOVFS:[mem],EAX[0048]表一的程序中包括一個(gè)X86LFS指令(將EBX暫存器的內(nèi)容載入至FS區(qū)段暫存器以及將所選取的區(qū)段描述符由適當(dāng)?shù)拿枋龇碇休d入至區(qū)段暫存器的隱藏部分),并且按照一程序順序(盡管不一定要是連續(xù)地)接著一將EAX暫存器的內(nèi)容儲(chǔ)存至一存儲(chǔ)器區(qū)段里的一存儲(chǔ)器位置的X86M0V指令,其中該存儲(chǔ)器區(qū)段由FS區(qū)段暫存器描述符所描述,如組合語(yǔ)言碼中的區(qū)段跨越標(biāo)記(segmentoverridenotation)所指示。第(2)行中的MOV指令是相依于第(I)行中的LFS指令,因?yàn)镸OV指令使用由LFS指令所寫(xiě)入的FS區(qū)段暫存器描述符值。[0049]然而,有益地,發(fā)明人觀察各種程序,觀察當(dāng)程序執(zhí)行將一新值載入至DS或ES區(qū)段暫存器的一指令,特別是新值頻繁地與舊值相同時(shí)的情形。觀察結(jié)果發(fā)現(xiàn),依據(jù)本發(fā)明實(shí)施例的微處理器100不會(huì)使與一DS/ES載入指令相依的指令依序執(zhí)行。微處理器100“預(yù)測(cè)”DS/ES載入指令所載入的新的DS/ES值將與舊的DS/ES值相同。也就是說(shuō),微處理器100在無(wú)須等待接收DS/ES載入指令中的新值的情形下,允許發(fā)送相依指令以執(zhí)行并且使用DS/ES暫存器132中的舊值。為了檢查此預(yù)測(cè)以確保微處理器100產(chǎn)生正確的程序結(jié)果,微處理器100在允許使用舊的DS/ES值的相依指令更新結(jié)構(gòu)狀態(tài)之前,也會(huì)檢查確認(rèn)預(yù)測(cè)結(jié)果正確,亦即新值等于舊值。若新值不等于舊值時(shí),在將新值載入至DS/ES區(qū)段暫存器之后,微處理器100清除(flush)管線中的相依指令,使得這些相依指令利用新值重新執(zhí)行。因此,微處理器100可以稱為預(yù)測(cè)地執(zhí)行(speculativelyexecute)相依指令。[0050]下表二顯示一示范的程序片段,用以說(shuō)明前述的情形,其中微處理器100是通過(guò)預(yù)測(cè)一個(gè)較舊的區(qū)段暫存器載入指令將寫(xiě)入與ES暫存器的目前值相同的值至ES暫存器,以預(yù)測(cè)地執(zhí)行一使用ES暫存器的相依存儲(chǔ)器存取指令。[0051]表二[0052](3)LESEBX[0053]…[0054](4)MOVES:[mem],EAX[0055]表二的程序片段是類(lèi)似于表一的程序片段,差別在于其包括ES區(qū)段暫存器,而不是FS區(qū)段暫存器。表二的程序包括一個(gè)X86LES指令(將EBX暫存器的內(nèi)容載入至ES區(qū)段暫存器),并且按照一程序順序(盡管不一定要是連續(xù)地)接著一將EAX暫存器的內(nèi)容儲(chǔ)存至一存儲(chǔ)器區(qū)段里的一存儲(chǔ)器位置的X86M0V指令,其中該存儲(chǔ)器區(qū)段由ES區(qū)段暫存器描述符所描述,如組合語(yǔ)言碼中的區(qū)段跨越標(biāo)記所指示。第(4)行中的MOV指令是相依于第(3)行中的LES指令,因?yàn)镸OV指令使用由LES指令所寫(xiě)入的ES暫存器描述符值。[0056]參考圖1,微處理器100包括一指令快取102,耦接至一指令轉(zhuǎn)譯器104(亦可稱為指令解碼器);一相依性檢查單元106,耦接至指令轉(zhuǎn)譯器104;—微碼只讀存儲(chǔ)器116,耦接至指令轉(zhuǎn)譯器104以及相依性檢查單元106保留站(reservationstation,RS)108,耦接至相依性檢查單元106;發(fā)送邏輯單元124(在一實(shí)施例中,發(fā)送邏輯單元為一指令排程器(instructionscheduler)),f禹接至保留站108;執(zhí)行單元114,其包括一比較器134,耦接至保留站108;區(qū)段暫存器138(亦可稱為結(jié)構(gòu)區(qū)段暫存器),其包括DS/ES暫存器132,耦接至執(zhí)行單元114;一暫時(shí)暫存器128(非結(jié)構(gòu)暫存器),耦接至執(zhí)行單元114以及區(qū)段暫存器138;以及一重排序緩沖器(reorderbuffer,ROB)118,稱接至相依性檢查單元106、發(fā)送邏輯單元124以及執(zhí)行單元114。于一實(shí)施例中,執(zhí)行單元114包括一執(zhí)行存儲(chǔ)器存取指令的載入/儲(chǔ)存單元(未繪示)。載入/儲(chǔ)存單元利用在區(qū)段暫存器138中的區(qū)段描述符值以執(zhí)行存儲(chǔ)器存取指令。指令快取102由系統(tǒng)存儲(chǔ)器(未繪示)中快取包括存儲(chǔ)器存取指令以及載入?yún)^(qū)段暫存器138的程序指令。[0057]微處理器也包括一指令轉(zhuǎn)譯器104,用以接收來(lái)自指令快取102的指令142。于一實(shí)施例中,這些指令可視為宏指令(macroinstruction)142,因?yàn)檫@些指令是來(lái)自微處理器100的宏指令集(例如X86結(jié)構(gòu)指令集)的指令。指令轉(zhuǎn)譯器104將宏指令142轉(zhuǎn)譯為微指令144,其中微指令144為微處理器100的微結(jié)構(gòu)的微指令集的指令。特別地,指令轉(zhuǎn)譯器104將用以存取存儲(chǔ)器的宏指令142轉(zhuǎn)譯成與一區(qū)段暫存器載入指令相依的載入/儲(chǔ)存微指令。[0058]微處理器100也包括一微碼只讀存儲(chǔ)器(microcodeROM)116,用以儲(chǔ)存微碼程序(microcoderoutine)。本發(fā)明不限定于微碼只讀存儲(chǔ)器116,于另一實(shí)施例中,亦可用其他儲(chǔ)存裝置替代。一般而言,微碼程序包括可實(shí)現(xiàn)載入一區(qū)段暫存器138的宏指令142的載入DS/ES暫存器微碼程序112以及載入非DS/ES暫存器微碼程序122。微處理器100的一微定序器(microsequencer)(未繪示)擷取載入DS/ES暫存器微碼程序112以及載入非DS/ES暫存器微碼程序122的指令,以提供給微處理器100管線的下一階段。請(qǐng)參照?qǐng)D2,用以說(shuō)明載入DS/ES暫存器微碼程序112、載入非DS/ES暫存器微碼程序122的操作。[0059]微處理器100進(jìn)行一亂序執(zhí)行。亦即,執(zhí)行單元114可不依照原有的程序順序執(zhí)行指令。特別地,相依性檢查單元106以預(yù)設(shè)在R0B118中的一特定順序接收來(lái)自指令轉(zhuǎn)譯器104的微指令144,因此指令可依據(jù)此特定順序引退。然而,執(zhí)行單元114也可不依照此順序執(zhí)行微指令144。因此,依據(jù)本發(fā)明(例如,如下將描述的圖3的步驟308),一個(gè)與原有的程序順序中的舊DS/ES載入指令所寫(xiě)入DS/ES暫存器132的值相依的存儲(chǔ)器存取指令,可能實(shí)際上由執(zhí)行單元114在舊DS/ES載入指令寫(xiě)入新值至DS/ES暫存器132之前被執(zhí)行。[0060]請(qǐng)參照?qǐng)D2,其是顯示依據(jù)本發(fā)明實(shí)施例的圖1中微處理器100的操作流程圖。[0061]于步驟202,圖1的指令轉(zhuǎn)譯器104遇到一個(gè)載入?yún)^(qū)段暫存器138的宏指令142,例如前述表一第(I)行的LFS指令或表二第(3)行的LES指令。接著執(zhí)行判斷步驟204。[0062]于判斷步驟204,指令轉(zhuǎn)譯器104判斷目的區(qū)段暫存器是否為DS或ES暫存器。若目的區(qū)段暫存器為DS或ES暫存器時(shí),則執(zhí)行步驟206;否則,執(zhí)行步驟208。[0063]于步驟206,指令轉(zhuǎn)譯器104暫停宏指令142的轉(zhuǎn)譯并且暫時(shí)地轉(zhuǎn)移控制至圖1的載入DS/ES暫存器微碼程序112。載入DS/ES暫存器微碼程序112將于圖4詳細(xì)說(shuō)明。于是,流程于步驟206結(jié)束。[0064]在步驟208,指令轉(zhuǎn)譯器104暫停宏指令142的轉(zhuǎn)譯并且暫時(shí)地轉(zhuǎn)移控制至圖1的載入非DS/ES暫存器微碼程序122。載入非DS/ES暫存器微碼程序122可包括將非DS/ES載入宏指令142所定義的新值載入至非DS/ES暫存器并且接著返回控制給指令轉(zhuǎn)譯器104的微指令。于是,流程于步驟208結(jié)束。[0065]請(qǐng)?jiān)賲⒄請(qǐng)D1,微處理器100也包括一相依性檢查單元106,其可接收來(lái)自指令轉(zhuǎn)譯器104以及來(lái)自微碼只讀存儲(chǔ)器116的微指令144。相依性檢查單元106在ROBl18中對(duì)每一個(gè)指令配置一對(duì)應(yīng)的項(xiàng)目。ROBl18的項(xiàng)目是依照程序順序設(shè)置,使得ROBl18可確保指令會(huì)依照程序順序引退。相依性檢查單元106也產(chǎn)生每一指令的相依信息并且將指令的相依信息提供給ROBl18,以儲(chǔ)存至與指令相關(guān)的ROBl18項(xiàng)目中。相依性檢查單元106接著提供指令至保留站108,使指令于保留站108中等候,直到發(fā)送邏輯單元124決定其是已經(jīng)準(zhǔn)備好要被發(fā)送至執(zhí)行單元114加以執(zhí)行。ROBl18更新每個(gè)指令的狀態(tài),例如指示指令已被發(fā)送、已被執(zhí)行完成或已被引退,發(fā)送邏輯單元124也用此以判斷一個(gè)指令是否已準(zhǔn)備好被發(fā)送。[0066]更特別來(lái)說(shuō),相依性檢查單元106保持追蹤在微處理器100中所有未引退指令的結(jié)果目的暫存器。當(dāng)相依性檢查單元106接收到一指令時(shí),其察看被指令所使用的多個(gè)來(lái)源運(yùn)算元暫存器(例如區(qū)段暫存器138),并且對(duì)每個(gè)來(lái)源運(yùn)算元決定較舊的未引退指令(例如一區(qū)段載入指令)中的哪一個(gè)將被寫(xiě)入至來(lái)源運(yùn)算元暫存器,并指出該指令是相依于該較舊的未引退指令。若相依性檢查單元106找到許多寫(xiě)入同一來(lái)源運(yùn)算元暫存器的未引退指令,相依性檢查單元106判斷這些未引退指令中哪一個(gè)未引退指令最新,并指出目前接收的指令是相依于這些未引退指令中最新的一個(gè)。[0067]發(fā)送邏輯單元124使用由相依性檢查單元106所產(chǎn)生的相依性信息以決定保留站108中的哪一指令已準(zhǔn)備好發(fā)送至執(zhí)行單元114加以執(zhí)行。一般來(lái)說(shuō),發(fā)送邏輯單元124將根據(jù)相依性信息,等到所有的指令都被引退時(shí)(亦即利用其結(jié)果更新其目的暫存器)才發(fā)送一指令,其中相依性信息表示指令與其來(lái)源運(yùn)算元相依。為求精確,微處理器100可通過(guò)轉(zhuǎn)送總線及/或重新命名暫存器,轉(zhuǎn)送其結(jié)果至相依指令中;亦即,結(jié)果可為有效的,致使發(fā)送邏輯單元124可在結(jié)果供應(yīng)(result-supplying)指令實(shí)際更新結(jié)構(gòu)暫存器并且引退之前,發(fā)送相依指令。然而,由相依性信息所表示的結(jié)果供應(yīng)指令必須在發(fā)送邏輯單元124可發(fā)送相依指令至執(zhí)行單元114之前,產(chǎn)生其結(jié)果以及致使結(jié)果可有效于相依指令。關(guān)于發(fā)送邏輯單元124的細(xì)部操作,請(qǐng)參照?qǐng)D3。[0068]請(qǐng)參照?qǐng)D3,其是顯示依據(jù)本發(fā)明實(shí)施例的圖1中微處理器100的操作流程圖。流程由步驟302開(kāi)始。[0069]于步驟302,發(fā)送邏輯單元124判斷在其中一保留站108中有一個(gè)指令,該指令與載入其中的一區(qū)段暫存器138的指令相依。也就是說(shuō),發(fā)送邏輯單元124判斷該指令為一存儲(chǔ)器參考指令(例如表一第(2)行中或表二第(4)行中的MOV指令),使得微處理器100必須存取一區(qū)段暫存器138加以執(zhí)行,并且區(qū)段暫存器138為一較舊的未引退指令的目的暫存器。接著,執(zhí)行判斷步驟304。[0070]于判斷步驟304,發(fā)送邏輯單元124判斷相依指令與DS/ES暫存器132相依或與區(qū)段暫存器(非DS/ES暫存器)138相依。若相依指令與DS/ES暫存器132相依,執(zhí)行步驟308;否則執(zhí)行步驟306。[0071]于步驟306,如前述,發(fā)送邏輯單元124依序執(zhí)行與載入一非DS/ES暫存器相依的指令。于一實(shí)施例中,相依性檢查單元106產(chǎn)生相依性信息表示相依指令與其本身相依以實(shí)現(xiàn)依序執(zhí)行。也就是說(shuō),當(dāng)相依性信息表示相依指令與其本身相依時(shí),發(fā)送邏輯單元124將依照R0B118所指示,等到相依指令為微處理器100中最舊的指令時(shí),才決定相依指令是已準(zhǔn)備好要發(fā)送至執(zhí)行單元114。特別地,因?yàn)閳?zhí)行單元114亂序執(zhí)行指令,若相依性檢查單元106以及發(fā)送邏輯單元124并未依序執(zhí)行相依指令,則載入/儲(chǔ)存單元可能使用一個(gè)陳舊的(stale)區(qū)段描述符值加以執(zhí)行。然而,在本發(fā)明中,即使微處理器100不包括區(qū)段暫存器138的暫存器重新命名硬件,依序執(zhí)行指令可確保正確的程序操作,如前述,因?yàn)槠淇纱_保相依指令在其可接收來(lái)自區(qū)段暫存器138的區(qū)段描述符的最新值前,不會(huì)被發(fā)送。也就是說(shuō),發(fā)送邏輯單元124可等到新值被載入至區(qū)段暫存器138之后,由該區(qū)段暫存器138中擷取新值,并且利用擷取到的新值發(fā)送次一連續(xù)的指令加以執(zhí)行。表一的第(2)行的MOV指令為一個(gè)微處理器100將依序執(zhí)行的指令的例子,因?yàn)槠湎嘁烙诒硪坏牡?I)行的非DS/ES暫存器載入指令。于是,流程于步驟306結(jié)束。[0072]于步驟308,發(fā)送邏輯單元124忽略存儲(chǔ)器存取指令關(guān)于DS/ES暫存器132的相依性。也就是說(shuō),只要所有用以使相依指令準(zhǔn)備被發(fā)送的其他條件滿足(例如載入/儲(chǔ)存單元是可用的并且除了DS/ES暫存器132之外的所有其他來(lái)源運(yùn)算元都有效),發(fā)送邏輯單元124發(fā)送指令至執(zhí)行單元114并且DS/ES暫存器132將其目前值提供至執(zhí)行單元114,借此執(zhí)行存儲(chǔ)器存取指令。于另一實(shí)施例中,發(fā)送邏輯單元124可由DS/ES暫存器132中擷取其目前值,并且發(fā)送使用擷取到的目前值作為來(lái)源運(yùn)算元的存儲(chǔ)器存取指令加以執(zhí)行,并以此執(zhí)行結(jié)果更新微處理器100的結(jié)構(gòu)狀態(tài)。有效地,發(fā)送邏輯單元124預(yù)測(cè)DS/ES暫存器132的目前值與將通過(guò)DS/ES載入指令寫(xiě)入至DS/ES暫存器132的新值相等,并且預(yù)測(cè)地執(zhí)行相依的存儲(chǔ)器存取指令。通過(guò)前述預(yù)測(cè)并且進(jìn)而發(fā)送相依指令,微處理器100有效地減少了執(zhí)行包括DS/ES載入指令及其相依存儲(chǔ)器存取指令的程序所需的時(shí)間。表二的第(4)行的MOV指令為一個(gè)微處理器100預(yù)測(cè)地執(zhí)行的例子,因?yàn)槠湎嘁烙诒矶牡?3)行的DS/ES暫存器載入指令。于是,流程于步驟308結(jié)束。[0073]下表三顯示一示范的虛擬程序碼,用以描述圖1的載入05作5暫存器微碼程序112的相關(guān)部分。此虛擬程序碼將與圖4一并討論。[0074]表三[0075](I)loadTemp,[NewDescriptorAddress][0076](2)compareTemp,DS[0077](3)if(Temp==DS){[0078](4)done;[0079](5)}else{[0080](6)MoveTemp—>DS[0081](7)branchtoNextInstruction;causeapipelineflush[0082](8)done;[0083](9)}[0084]請(qǐng)參照?qǐng)D4,其是顯示依據(jù)本發(fā)明實(shí)施例的圖1中微處理器100的操作流程圖。流程由步驟402開(kāi)始。[0085]于步驟402,相應(yīng)于遇到一將一值(區(qū)段暫存器值)載入圖1的DS/ES暫存器132的指令,指令轉(zhuǎn)譯器104將轉(zhuǎn)移控制至載入DS/ES暫存器微碼程序112,如前述的圖2的對(duì)應(yīng)步驟206所示。載入DS/ES暫存器微碼程序112首先將指令所定義的值(區(qū)段暫存器值)自存儲(chǔ)器載入至圖1的暫時(shí)暫存器128,如表三的第(I)行所示。接著,執(zhí)行步驟404。[0086]于步驟404,載入DS/ES暫存器微碼程序112比較圖1的DS/ES暫存器132中的目前值與在步驟402時(shí)載入至?xí)簳r(shí)暫存器128中的值,如表三的第(2)行所示。于一實(shí)施例中,載入DS/ES暫存器微碼程序112可命令比較器134執(zhí)行此步驟。接著,執(zhí)行決定步驟406。[0087]于決定步驟406,載入DS/ES暫存器微碼程序112判斷圖1的DS/ES暫存器132中的目前值與載入至?xí)簳r(shí)暫存器128中的值是否相等,如表三的第(3)行所示。若是,流程結(jié)束,如表三的第⑷行所示;否則,接著執(zhí)行步驟408,如表三的第(5)行所示。[0088]于步驟408,因?yàn)樵趫D1的DS/ES暫存器132中的目前值不等于與載入至?xí)簳r(shí)暫存器128中的值(其為將被DS/ES載入指令所載入的新值),載入DS/ES暫存器微碼程序112將暫時(shí)暫存器128中的值移至DS/ES暫存器132中,如表三的第(6)行所示。值得注意的是,執(zhí)行表三的第(6)行的動(dòng)作的微指令144為載入DS/ES暫存器微碼程序112中的實(shí)際寫(xiě)入新值至DS/ES暫存器132的指令。因此,于步驟308所描述的相依存儲(chǔ)器存取指令是相依于第(6)行中的指令,并且發(fā)送邏輯單元124忽略其相依性并預(yù)測(cè)由第(6)行中的指令所寫(xiě)入的DS/ES暫存器132的新值是等于步驟308中所描述的相依存儲(chǔ)器存取指令所使用的DS/ES暫存器132的舊值。然而,在這種情形下,于決定步驟406將判斷出預(yù)測(cè)為不正確的,亦即第(6)行中的指令所寫(xiě)入的DS/ES暫存器132的新值是不等于步驟308中所描述的相依存儲(chǔ)器存取指令所使用的DS/ES暫存器132的舊值;因此,存儲(chǔ)器存取指令可能會(huì)使用錯(cuò)誤的DS/ES暫存器132的值以執(zhí)行,并且預(yù)測(cè)錯(cuò)誤必須被更正以確保微處理器100產(chǎn)生正確的程序結(jié)果。接著,執(zhí)行步驟412。[0089]于步驟412,為了更正圖3的步驟308的錯(cuò)誤預(yù)測(cè)結(jié)果,載入DS/ES暫存器微碼程序112清除管線中所有較新于表三的第(6)行的指令,包括相依存儲(chǔ)器存取指令,例如表二的第(4)行的MOV指令。載入DS/ES暫存器微碼程序112接著在如步驟202所述遇到載入DS/ES暫存器132的宏指令142(例如表二的第(3)行的LES指令)之后,重新開(kāi)始擷取次一連續(xù)的宏指令。如此,將可正確地利用在步驟408中通過(guò)第(6)行中的指令寫(xiě)入至DS/ES暫存器132的新值重新發(fā)送以及重新執(zhí)行相依存儲(chǔ)器存取指令,并以此執(zhí)行結(jié)果更新微處理器100的結(jié)構(gòu)狀態(tài),因此更正了在步驟308的預(yù)測(cè)錯(cuò)誤。于一實(shí)施例中,清除并跳至次一連續(xù)的宏指令是可通過(guò)表三的第⑵行中的指令加以執(zhí)行。于一實(shí)施例中,載入DS/ES暫存器微碼程序112可命令執(zhí)行單元114執(zhí)行此步驟。[0090]雖然于上述實(shí)施例中,微處理器是具有一x86宏結(jié)構(gòu),然而本發(fā)明并不限于應(yīng)用在x86宏結(jié)構(gòu)。再者,實(shí)施例考慮微處理器具有一不同的宏結(jié)構(gòu),具有包括區(qū)段暫存器以及不包括區(qū)段暫存器重新命名硬件的一超純量微結(jié)構(gòu),也可利用前述技術(shù),通過(guò)預(yù)測(cè)由一較舊的指令所載入至一區(qū)段暫存器的新值與區(qū)段暫存器的舊值相同并隨后忽略較新的存儲(chǔ)器存取指令在區(qū)段暫存器值的相依性,再于新值不等于舊值時(shí),通過(guò)清除并重新執(zhí)行相依指令來(lái)確保正確的程序結(jié)果,進(jìn)而預(yù)測(cè)地執(zhí)行相依存儲(chǔ)器存取指令。[0091]本發(fā)明的方法,或特定型態(tài)或其部分,可以以程序碼的型態(tài)包括于實(shí)體介質(zhì),如軟盤(pán)、光盤(pán)片、硬盤(pán)或是任何其他機(jī)器可讀取(如計(jì)算機(jī)可讀取)儲(chǔ)存介質(zhì),其中,當(dāng)程序碼被機(jī)器,如計(jì)算機(jī)載入且執(zhí)行時(shí),此機(jī)器變成用以實(shí)施本發(fā)明的裝置。本發(fā)明的方法與裝置也可以以程序碼型態(tài)通過(guò)一些傳送介質(zhì),如電線或電纜、光纖或是任何傳輸型態(tài)進(jìn)行傳送,其中,當(dāng)程序碼被機(jī)器,如計(jì)算機(jī)接收、載入且執(zhí)行時(shí),此機(jī)器變成用以實(shí)施本發(fā)明的裝置。當(dāng)在一般用途微處理器操作時(shí),程序碼結(jié)合微處理器提供一操作類(lèi)似于應(yīng)用特定邏輯電路的獨(dú)特裝置。[0092]以上所述僅為本發(fā)明較佳實(shí)施例,然其并非用以限定本發(fā)明的范圍,任何熟悉本項(xiàng)技術(shù)的人員,在不脫離本發(fā)明的精神和范圍內(nèi),可在此基礎(chǔ)上做進(jìn)一步的改進(jìn)和變化,因此本發(fā)明的保護(hù)范圍當(dāng)以本申請(qǐng)的權(quán)利要求書(shū)所界定的范圍為準(zhǔn)?!緳?quán)利要求】1.一種微處理器操作方法,其特征在于,適用于x86架構(gòu)下的一微處理器處理一存儲(chǔ)器存取指令,該存儲(chǔ)器存取指令指示由該微處理器的一x86區(qū)段暫存器的一存儲(chǔ)器區(qū)段載入數(shù)據(jù)、或者儲(chǔ)存數(shù)據(jù)至該微處理器的一x86區(qū)段暫存器的一存儲(chǔ)器區(qū)段,一x86指令指示該微處理器載入一新值至一x86區(qū)段暫存器,而該x86指令尚未被該微處理器引退,該微處理器操作方法包括:判斷該x86區(qū)段暫存器是否為多個(gè)DS/ESx86區(qū)段暫存器中的一個(gè);若該x86區(qū)段暫存器為所述DS/ESx86區(qū)段暫存器中的一個(gè),則:發(fā)送該存儲(chǔ)器存取指令以利用該DS/ESx86區(qū)段暫存器的一目前值而不是該新值來(lái)執(zhí)行;以及若該x86區(qū)段暫存器并非為該DS/ESx86區(qū)段暫存器,則:等候發(fā)送該存儲(chǔ)器存取指令直到該存儲(chǔ)器存取指令可利用該新值而不是一非DS/ESx86區(qū)段暫存器的一目前值來(lái)執(zhí)行。2.根據(jù)權(quán)利要求1所述的微處理器操作方法,其特征在于,還包括:若該x86區(qū)段暫存器為所述DS/ESx86區(qū)段暫存器中的一個(gè),則:比較該新值與該DS/ESx86區(qū)段暫存器的該目前值;若該目前值等于該新值時(shí),則:不載入該新值至該DS/ESx86區(qū)段暫存器;以及引退該存儲(chǔ)器存取指令;以及若該目前值不等于該新值時(shí),則:`將該新值載入至該DS/ESx86區(qū)段暫存器。3.根據(jù)權(quán)利要求2所述的微處理器操作方法,其特征在于,還包括:若該x86區(qū)段暫存器為該DS/ESx86區(qū)段暫存器中的一個(gè),則:若該目前值不等于該新值,則:清除該存儲(chǔ)器存取指令并重新發(fā)出利用載入至該DS/ESx86區(qū)段暫存器的該新值執(zhí)行的存儲(chǔ)器存取指令。4.一種微處理器,其特征在于,用于x86架構(gòu)下處理一存儲(chǔ)器存取指令,該存儲(chǔ)器存取指令指示由該微處理器的一x86區(qū)段暫存器的一存儲(chǔ)器區(qū)段載入數(shù)據(jù)、或者儲(chǔ)存數(shù)據(jù)至該微處理器的一x86區(qū)段暫存器的一存儲(chǔ)器區(qū)段,一x86指令指示該微處理器載入一新值至一x86數(shù)據(jù)區(qū)段暫存器,而該x86指令尚未被該微處理器引退,該微處理器包括:一微碼,引發(fā)以回應(yīng)該x86指令,且該x86指令指示該微處理器載入該新值至該x86區(qū)段暫存器;其中,若該x86區(qū)段暫存器并非為一DS/ESx86區(qū)段暫存器,則:該微碼執(zhí)行一第一指令用以載入該新值至一非DS/ESx86區(qū)段暫存器,以致使該存儲(chǔ)器存取指令利用該新值而不是該非DS/ESx86區(qū)段暫存器的一目前值執(zhí)行;其中,若該x86區(qū)段暫存器為該DS/ESx86區(qū)段暫存器,則:該微碼執(zhí)行一第二指令用以比較該新值與該DS/ESx86區(qū)段暫存器的一目前值,其中若該目前值等于該新值時(shí),則該微碼不執(zhí)行載入該新值至該DS/ESx86區(qū)段暫存器的指令,以致使該存儲(chǔ)器存取指令利用該DS/ESx86區(qū)段暫存器的該目前值而非該新值執(zhí)行,否則執(zhí)行一第三指令以及一第四指令,該第三指令用以載入該新值至該DS/ESx86區(qū)段暫存器,而該第四指令用以將該存儲(chǔ)器存取指令清除并利用載入至該DS/ESx86區(qū)段暫存器的該新值重新執(zhí)行該存儲(chǔ)器存取指令。5.根據(jù)權(quán)利要求4所述的微處理器,其特征在于,還包括:一相依性檢查單元,其中若該微碼執(zhí)行該第一指令,則該相依性檢查單元通過(guò)該存儲(chǔ)器存取指令產(chǎn)生一相依性信息以等候該存儲(chǔ)器存取指令被發(fā)送而執(zhí)行直到該新值載入至該DS/ESx86區(qū)段暫存器為止,否則不產(chǎn)生該相依性信息。6.根據(jù)權(quán)利要求5所述的微處理器,其特征在于,還包括:一指令發(fā)送邏輯單元;其中,若存在該相依性信息,則該指令發(fā)送邏輯單元等候該存儲(chǔ)器存取指令直到該存儲(chǔ)器存取指令可利用該新值而不是該非DS/ESx86區(qū)段暫存器的該目前值來(lái)執(zhí)行;以及其中,若不存在該相依性信息,則該指令發(fā)送邏輯單元發(fā)送該存儲(chǔ)器存取指令以利用該DS/ESx86區(qū)段暫存器的該目前值而不是該新值執(zhí)行。7.—種微處理器,其特征在于,用以執(zhí)行一區(qū)段暫存器載入指令以及一存儲(chǔ)器存取指令,該區(qū)段暫存器載入指令將一新值載入至一區(qū)段暫存器,以及該存儲(chǔ)器存取指令存取一區(qū)段暫存器所描述的一存儲(chǔ)器區(qū)段,其中該存儲(chǔ)器存取指令的程序順序處于該區(qū)段暫存器載入指令之后,該微處理器包括:多個(gè)區(qū)段暫存器,包括該區(qū)段暫存器,其中該微處理器不包括用于所述區(qū)段暫存器的一暫存器重新命名硬體;以及多個(gè)執(zhí)行單元,用以:從該區(qū)段暫存器擷取一目前值;`利用所擷取到的該目前值執(zhí)行該存儲(chǔ)器存取指令;以及擷取該目前值后,判斷該目前值是否等于該新值;其中,若該新值等于該目前值,則:該微處理器不載入該新值至該區(qū)段暫存器;以及其中,若該新值不等于該目前值,則:該微處理器載入該新值至該區(qū)段暫存器;從該區(qū)段暫存器擷取該新值;以及利用從該區(qū)段暫存器所擷取的該新值重新執(zhí)行該存儲(chǔ)器存取指令。8.根據(jù)權(quán)利要求7所述的微處理器,其特征在于,還包括:一暫時(shí)暫存器;其中,該微處理器還用以在判斷該目前值是否等于該新值的步驟之前,將該新值由存儲(chǔ)器載入該暫時(shí)暫存器;以及其中,當(dāng)判斷該目前值是否等于該新值時(shí),所述執(zhí)行單元比較由該存儲(chǔ)器載入至該暫時(shí)暫存器的該新值與該區(qū)段暫存器中的該目前值。9.根據(jù)權(quán)利要求7所述的微處理器,其特征在于,還用以在利用從該區(qū)段暫存器所擷取的該新值重新執(zhí)行該存儲(chǔ)器存取指令的步驟之前,清除該微處理器的一管線中的該存儲(chǔ)器存取指令。10.一種微處理器操作方法,其特征在于,適用于具有多個(gè)區(qū)段暫存器的一微處理器,其中所述區(qū)段暫存器包括互斥的第一子集合以及第二子集合,該微處理器操作方法包括:遇到指示所述區(qū)段暫存器中的一區(qū)段暫存器載入一新值的一指令;若該區(qū)段暫存器于該第一子集合中,則:將該新值直接載入至該區(qū)段暫存器中;以及若該區(qū)段暫存器于該第二子集合中,則:于該新值不等于該區(qū)段暫存器中所儲(chǔ)存的一目前值時(shí),將該新值載入至該區(qū)段暫存器中;以及于該新值等于該區(qū)段暫存器中所儲(chǔ)存的該目前值時(shí),不載入該新值至該區(qū)段暫存器。11.根據(jù)權(quán)利要求10所述的微處理器操作方法,其特征在于,區(qū)段暫存器的該第二子集合由X86DS以及ES區(qū)段暫存器所構(gòu)成。12.根據(jù)權(quán)利要求10所述的微處理器操作方法,其特征在于,還包括:若該區(qū)段暫存器于該第二子集合中,則:當(dāng)該新值不等于該區(qū)段暫存器中所儲(chǔ)存的該目前值時(shí),將所有較新于該指令的指令利用該新值重新執(zhí)行?!疚臋n編號(hào)】G06F9/38GK103488464SQ201310460683【公開(kāi)日】2014年1月1日申請(qǐng)日期:2010年2月5日優(yōu)先權(quán)日:2009年2月11日【發(fā)明者】吉拉德·M·卡爾,羅德尼·E·虎克,泰瑞·派克斯申請(qǐng)人:威盛電子股份有限公司