欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

管線式微處理器及其執(zhí)行兩種條件分支指令的方法

文檔序號(hào):6585645閱讀:196來源:國(guó)知局

專利名稱::管線式微處理器及其執(zhí)行兩種條件分支指令的方法
技術(shù)領(lǐng)域
:本發(fā)明有關(guān)于微處理器,特別關(guān)于在一微處理器中執(zhí)行條件分支指令(conditionalbranchinstruction)0
背景技術(shù)
:當(dāng)沒有控制流程指令時(shí),微處理器依序地提取指令并執(zhí)行該指令。換言之,預(yù)設(shè)動(dòng)作就是讓微處理器先提取一指令,接著再提取下一個(gè)循序指令,然后再提取下一個(gè)循序指令,以此類推。然而,控制流程指令會(huì)命令微處理器脫離此循序提取制度。微處理器在其指令集結(jié)構(gòu)(instructionsetarchitecture)中包括某種型式的條件分支指令,用以指定一分支條件狀態(tài)(通常是一條件旗標(biāo)(conditionflag)或是一通用暫存器中的數(shù)值)及一分支條件(舉例而言,位設(shè)定、位清除、等于零或大于一定值)。條件分支指令也指定一分支目標(biāo)地址(branchtargetaddress)。微處理器根據(jù)分支條件檢查分支條件狀態(tài),用以決定分支條件狀態(tài)是否滿足被條件分支指令所指定的分支條件。若分支條件狀態(tài)滿足分支條件,微處理器開始提取分支目標(biāo)地址上的指令,而不是提取下一個(gè)循序指令。正如眾所皆知的微處理器技術(shù),現(xiàn)今的微處理器包括一個(gè)具有多個(gè)階段的管線(apipelineofstages),每一階段執(zhí)行有關(guān)程序指令的不同工作。在標(biāo)準(zhǔn)的管線式微處理器中,包括指令提取(instructionfetch)、指令解碼(instructiondecode)、運(yùn)算元提取(operandfetch)、執(zhí)行(execute)以及寫回結(jié)果(resultwrite-back)這五個(gè)階段。一程序中的條件分支指令會(huì)大大地增加微處理器執(zhí)行程序所需的時(shí)間。這是因?yàn)樵趥鹘y(tǒng)上,執(zhí)行階段(executestage)用以分析條件分支指令,即決定分支條件狀態(tài)是否滿足分支條件。其中一個(gè)原因是因?yàn)槌绦蛑械闹噶钤诔绦蝽樞?programorder)中的順序可能會(huì)比條件分支指令還要舊(older),因此,在運(yùn)算元提取階段可以提取條件分支指令的來源運(yùn)算元(sourceoperands)之前,微處理器必須等待直到執(zhí)行單元產(chǎn)生上述比較舊的指令的結(jié)果(這些比較舊的指令的結(jié)果為條件分支指令中用以構(gòu)成(constitute)分支條件狀態(tài)的來源運(yùn)算元),以便發(fā)出條件分支指令用以執(zhí)行。然而,特別是在高度管線化(deeplypipelined)及/或亂序執(zhí)行(out-of-orderexecution)微處理器中,微處理器可能已經(jīng)提取以及處理許多程度不同的下一個(gè)循序指令(位于條件分支指令之后),并且在執(zhí)行單元分析條件分支指令時(shí),這些循序指令在程序順序中的順序要比條件分支指令還要新(newer)。若執(zhí)行單元決定分支條件狀態(tài)滿足分支條件(即會(huì)發(fā)生(taken)條件分支指令),微處理器必須清除(flush)所有位于條件分支指令之后依序提取的指令,并開始提取分支目標(biāo)地址上的指令。這大大地增加了微處理器執(zhí)行程序所需的時(shí)間。為了解決此問題,現(xiàn)今的微處理器包括分支預(yù)測(cè)器(branchpredictors)用以預(yù)測(cè)方向(direction)(即分支條件狀態(tài)是否會(huì)滿足分支條件(稱為“發(fā)生(taken)”),或不滿足分支條件(稱為“不發(fā)生(nottaken)”)。然而,分支預(yù)測(cè)器可能會(huì)誤預(yù)測(cè)(mispredict)方向,在此情況下,因?yàn)槲⑻幚砥鞅仨毲宄芫€中錯(cuò)誤提取的指令,并開始提取正確地址上的指令(即根據(jù)是否發(fā)生正確的方向來決定該正確地址為下一個(gè)循序地址或分支目標(biāo)地址),所以微處理器需要承擔(dān)一分支誤預(yù)測(cè)代價(jià)(branchmispredictionpenalty)0再者,這會(huì)大大地增加程序執(zhí)行時(shí)間,特別是在程序中具有一些難以準(zhǔn)確預(yù)測(cè)的條件分支指令的情況下。因此,需要一種能夠及早正確地分析管線中的條件分支指令的方法,用以置換(override)分支預(yù)測(cè)器。舉例而言,該方法已揭露于Boseetal.所獲得的美國(guó)專利第5,805,876號(hào)“一種適用于一處理器的方法與系統(tǒng),用以減少平均分支解析時(shí)間及有影響的誤預(yù)測(cè)代價(jià)”。然而,Boseetal.所提出的微處理器有一個(gè)缺點(diǎn),就是該微處理器會(huì)選擇性地提早分析條件分支指令。換言之,該微處理器只在分支指令滿足一組特定的條件時(shí),才會(huì)提早分析條件分支指令,例如第一個(gè)偵測(cè)到的條件分支指令設(shè)置在一指令緩沖器中的第一可調(diào)度位置(dispatchableposition)中。因此,需要一種具有一改良技術(shù)的微處理器,用以允許程序條件性地分支。
發(fā)明內(nèi)容本發(fā)明提供一種管線式微處理器,包括一管線,具有多個(gè)階段,用以處理多個(gè)指令;上述管線式微處理器接收一正規(guī)條件分支指令,該正規(guī)條件分支指令包括于一程序中,其中管線式微處理器用以對(duì)正規(guī)條件分支指令進(jìn)行預(yù)測(cè),并且若預(yù)測(cè)隨后被認(rèn)定為不正確,則管線式微處理器清除多個(gè)管線指令;以及一快速條件分支指令,該快速條件分支指令包括于程序中,其中管線式微處理器一直正確地分析快速條件分支指令,并且不對(duì)快速條件分支指令進(jìn)行預(yù)測(cè)。本發(fā)明提供另一種管線式微處理器,該管線式微處理器接收包括一快速條件分支指令,該快速條件分支指令包括于一程序中,其中快速條件分支指令命令管線式微處理器正確地分析快速條件分支指令,而不需要考慮程序中比快速條件分支指令還要舊的其他指令是否更新快速條件分支指令所使用的一快速分支條件;以及一正規(guī)條件分支指令,該正規(guī)條件分支指令包括于程序中,其中正規(guī)條件分支指令通過考慮程序中比正規(guī)條件分支指令還要舊的其他指令是否更新正規(guī)條件分支指令所使用的一正規(guī)分支條件,命令管線式微處理器正確地分析正規(guī)條件分支指令。本發(fā)明提供一種執(zhí)行兩種條件分支指令的方法,應(yīng)用于具有用以處理指令的多個(gè)管線階段的一管線式微處理器,上述方法包括預(yù)測(cè)一正規(guī)條件分支指令,正規(guī)條件分支指令包括于一程序中;若預(yù)測(cè)隨后被認(rèn)定為不正確,則清除多個(gè)管線指令;以及一直正確地分析一快速條件分支指令,并且不對(duì)快速條件分支指令進(jìn)行預(yù)測(cè),其中快速條件分支指令包括于程序中。本發(fā)明提供另一種執(zhí)行兩種條件分支指令的方法,應(yīng)用于具有用以處理指令的多個(gè)管線階段的一管線式微處理器,上述方法包括不考慮一程序中比一快速條件分支指令還要舊的其他指令是否更新快速條件分支指令所使用的一快速分支條件;在不需考慮程序中比快速條件分支指令還要舊的其他指令是否更新快速條件分支指令所使用的快速分支條件的同時(shí),命令管線式微處理器正確地分析快速條件分支指令;以及通過考慮程序中比一正規(guī)條件分支指令還要舊的其他指令是否更新正規(guī)條件分支指令所使用的一正規(guī)分支條件,命令管線式微處理器正確地分析正規(guī)條件分支指令,其中正規(guī)條件分支指令包括于程序中。本發(fā)明的其中一個(gè)好處是,因?yàn)樘崛卧?或微碼單元)可在不需將快速條件分支(fastconditionalbranch;FCB)指令(在此之后簡(jiǎn)稱為FCB指令)配送至執(zhí)行管線的情況下,即可分析并引退FCB指令,因此執(zhí)行FCB指令的速度會(huì)比執(zhí)行傳統(tǒng)條件分支指令的速度還要快。此外,當(dāng)程序設(shè)計(jì)師使用一FCB指令而不是一傳統(tǒng)條件分支指令時(shí),由于提取單元正確地執(zhí)行FCB指令,因此消除了與傳統(tǒng)條件分支指令有關(guān)的誤預(yù)測(cè)與校正。另一個(gè)好處在于相較于傳統(tǒng)條件分支指令,使用微處理器中較少的資源即可分析并引退FCB指令。舉例而言,因?yàn)镕CB指令沒有被配送至執(zhí)行管線中,所以FCB指令不會(huì)占用暫存器別名表中的項(xiàng)目(entries)、保留站、執(zhí)行單元或重新排序緩沖器。圖1為本發(fā)明的一微處理器的方塊圖;圖2為本發(fā)明的圖1中的微處理器的一操作流程圖,此流程圖用以執(zhí)行一FBCSUI指令;圖3為本發(fā)明的圖1中的微處理器的一操作流程圖,此流程圖用以執(zhí)行一FCB指令;圖4為本發(fā)明的圖1中的微處理器的一操作流程圖,此流程圖用以執(zhí)行一NCB指令;圖5為本發(fā)明的另一微處理器的方塊圖;圖6為本發(fā)明的圖5中的微處理器的一操作流程圖,此流程圖用以執(zhí)行一FBCSUI指令;圖7為本發(fā)明的圖5中的微處理器的一操作流程圖,此流程圖用以執(zhí)行一FCB指令;圖8為本發(fā)明的圖5中的微處理器的一操作流程圖,此流程圖用以執(zhí)行一NCB指令。具體實(shí)施例方式為讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉出較佳實(shí)施例,并配合所附圖式,作詳細(xì)說明如下。關(guān)于上述問題,傳統(tǒng)方法有一個(gè)缺點(diǎn)就是它們依靠微處理器來決定微處理器可以提早分析管線中的一條件分支指令的情況,并且若此情況不存在,則微處理器必須要仰賴預(yù)測(cè)條件分支指令,若預(yù)測(cè)錯(cuò)誤,微處理器接著要承擔(dān)與校正(例如清除、從正確的地址中提取以及執(zhí)行)有關(guān)的代價(jià)。本發(fā)明人已注意到有些時(shí)候,寫程序的程序設(shè)計(jì)師(或用以將一高階語言程序編譯/翻譯成一機(jī)器語言(machinelanguage)程序的編譯器/翻譯器)知道或可以控制更新分支條件狀態(tài)的相關(guān)情況(circumstance),而此分支條件狀態(tài)將會(huì)被程序中的一條件分支指令所使用。本發(fā)明人利用此觀察結(jié)果將一特殊型式的條件分支指令(在這里稱為FCB指令)包括在一微處理器中的指令集內(nèi),程序設(shè)計(jì)師會(huì)將FCB指令包括在他的程序中,用以命令微處理器非選擇性地且正確地提早分析管線中的提取單元內(nèi)的FCB指令,而不是將FCB指令傳送至執(zhí)行單元中被分析,再對(duì)FCB指令進(jìn)行預(yù)測(cè)。為了回應(yīng)偵測(cè)到FCB指令,提取單元會(huì)非選擇性且正確地分析FCB指令。換言之,提取單元會(huì)一直正確地分析FCB指令,而不是在某些情況下預(yù)測(cè)FCB指令并接著將其傳送至執(zhí)行單元中被分析。這需要提取單元進(jìn)行等待直到最新的狀態(tài)更新指令已經(jīng)將分支條件狀態(tài)更新,并且此最新的狀態(tài)更新指令在程序順序中的順序比FCB指令還要新。若分支條件狀態(tài)已經(jīng)更新,則提取單元使用更新過的狀態(tài)來分析條件分支指令。然而,微處理器的指令集中的FCB指令能夠使程序設(shè)計(jì)師將狀態(tài)更新指令安排在FCB指令之前,使得提取單元遇到FCB指令時(shí),提取單元能夠立即地分析FCB指令。這將會(huì)有較大地助益,因?yàn)楸苊饬朔种д`預(yù)測(cè)的可能性以及管線式微處理器中與此相關(guān)的伴隨代價(jià)(concomitantpenalty)0FCB指令的避免誤預(yù)測(cè)的優(yōu)點(diǎn)在缺少分支預(yù)測(cè)的情況下更為顯著,例如在一低成本及/或低功耗微處理器或微控制器中或在一微處理器的一微碼(microcode)單元中的微定序器(microsequencer)中,例如根據(jù)本發(fā)明的一實(shí)施例。在程序中,F(xiàn)CB指令在一狀態(tài)更新指令之后輸入,狀態(tài)更新指令用以更新FCB指令所指定的分支條件狀態(tài)。雖然在執(zhí)行單元將分支條件狀態(tài)更新之前,提取單元要等待分析FCB指令,但FCB指令能夠使程序設(shè)計(jì)師將狀態(tài)更新指令安排在FCB指令之前,使得提取單元遇到FCB指令時(shí),執(zhí)行單元已經(jīng)將狀態(tài)更新,并且提取單元可以立即正確地分析FCB指令。在一實(shí)施例中,程序設(shè)計(jì)師將用以執(zhí)行等待函數(shù)(waitfunction)的一明確等待指令(explicitwaitinstruction)包括在程序中的狀態(tài)更新指令與FCB指令之間,在另一實(shí)施例中,提取單元在遇到FCB指令時(shí),暗中地執(zhí)行等待函數(shù)。請(qǐng)參考圖1,圖1用以顯示本發(fā)明的一微處理器100的一方塊圖。在一實(shí)施例中,微處理器100會(huì)將使用者程序儲(chǔ)存至一外部存儲(chǔ)器(圖未顯示)中。使用者程序包括操作系統(tǒng)、應(yīng)用程序、系統(tǒng)基本輸入/輸出系統(tǒng)(systemBIOS)或其他寫入/翻譯/編譯成微處理器的原生(native)指令集的程序。指令快取106會(huì)從外部存儲(chǔ)器中提取使用者程序指令。指令快取106用以暫時(shí)儲(chǔ)存最常提取的指令。在一實(shí)施例中,指令快取106設(shè)置于微處理器100中。在其他實(shí)施例中,指令快取106設(shè)置于微處理器100的外部。微處理器100中的提取單元104用以提取來自指令快取106中的指令。提取單元104包括一指令解碼器108,用以決定被提取的指令的種類。從指令快取106中提取的指令包括FCB指令以及正規(guī)指令,正規(guī)指令包括正規(guī)條件分支(normalconditionalbranch;NCB)指令(在此之后簡(jiǎn)稱NCB指令)以及快速分支條件狀態(tài)更新指令(fastbranchconditionstate-updatinginstructions;在此之后簡(jiǎn)稱FBCSUI指令)。正規(guī)指令是由微處理器100中的執(zhí)行單元所執(zhí)行的正規(guī)指令。當(dāng)微處理器100決定出條件分支指令的正確的方向與正確的目標(biāo)地址時(shí),微處理器100則可正確地分析一條件分支指令(即NCB指令或FCB指令)。由于微處理器100可能最后會(huì)決定預(yù)測(cè)錯(cuò)誤并且必須要自我校正,因此這與預(yù)測(cè)一條件分支指令的一微處理器100截然不同。FBCSUI指令用以更新快速分支條件狀態(tài)(fastbranchconditionstate;在此之后簡(jiǎn)稱FBCS指令)124,相關(guān)內(nèi)容說明如下。FCB指令在微處理器100的提取單元104中被正確地分析與引退(retired)。微處理器100中的執(zhí)行單元138用以執(zhí)行正規(guī)指令(包括NCB指令以及FBCSUI指令)。微處理器100中的引退單元144用以引退正規(guī)指令(包括NCB指令以及FBCSUI指令)。條件分支指令用以指定一分支條件與一分支目標(biāo)地址。處理器用以檢查所儲(chǔ)存的分支條件狀態(tài),以便決定該分支條件狀態(tài)是否滿足一被條件分支指令所指定的分支條件,即決定條件分支指令的方向。若分支條件狀態(tài)滿足該分支條件,則分支方向?yàn)椤鞍l(fā)生”;反之分支方向?yàn)椤安话l(fā)生”。若發(fā)生分支,分支目標(biāo)地址則用以指定下一個(gè)欲執(zhí)行的指令的地址。若沒有發(fā)生分支,下一個(gè)欲執(zhí)行的指令為位于NCB指令或FCB指令之后的下一個(gè)循序指令。關(guān)于FCB指令、NCB指令以及FBCSUI指令的處理過程,將在以下段落作更詳細(xì)的說明。在一實(shí)施例中,指令解碼器108包括一指令翻譯器,用以將微處理器100的一宏指令集(macroinstructionset)中的宏指令(例如x86指令集結(jié)構(gòu))翻譯成微處理器100的一微指令集結(jié)構(gòu)(microinstructionsetarchitecture)中的微指令。指令翻譯器可將宏指令翻譯成一FCB指令、NCB指令、FBCSUI指令或其他這里所描述的指令。指令解碼器108決定所提取的指令是否為FCB指令、NCB指令、FBCSUI指令或其他指令。若所解碼的指令為NCB指令或其他正規(guī)指令,則指令解碼器108將正規(guī)指令146傳送至多工器132。若被解碼的指令為FCB指令,則指令解碼器108在一FCB指令的查見指示(FCB指令seenindication)164上產(chǎn)生一真值(truevalue),并傳送至位于提取單元104中的FCB指令的方向分析器122。此外,指令解碼器108將FCB指令所指定的FCB指令的條件166,傳送至FCB指令的方向分析器122。舉例而言,F(xiàn)CB指令的條件166包括位開啟(biton)、位關(guān)閉(bitoff)、等于、小于、大于,并且本領(lǐng)域技術(shù)人員應(yīng)能了解,欲被估算的FBCS124中的位或欄位也被指定在FCB指令的條件166中。指令解碼器108也將FCB指令所指定的FCB指令的目標(biāo)地址162,傳送至位于提取單元104中的多工器114。FCB指令的方向分析器122用以分析提取單元104中的FCB指令的方向。FCB指令的方向分析器122根據(jù)FCB指令的查見指示164、FCB指令的條件166以及FBCS124,產(chǎn)生FCB指令的方向172至提取地址控制器126。若FBCS124滿足FCB指令的條件166,那么FCB指令的方向172為真值;反之FCB指令的方向172為假值。提取單元104—直正確地分析并引退FCB指令。因?yàn)樘崛卧?04本身就會(huì)執(zhí)行并引退所有的FCB指令,所以提取單元104不會(huì)將FCB指令配送(dispatch)至執(zhí)行單元138與引退單元144中。若被解碼的指令為FBCSUI指令,則指令解碼器108在FBCSUI指令的偵測(cè)指針160上產(chǎn)生一真值,該FBCSUI指令的偵測(cè)指針160用以設(shè)定一FBCSUI指令的擱置旗標(biāo)(FBCSUI_pendingflag)192。微處理器100將FBCSUI指令的擱置旗標(biāo)192初始化至一清除狀態(tài)。此外,當(dāng)引退單元144通過使用FBCSUI指令的結(jié)果186將FBCS124更新,用以引退FBCSUI指令時(shí),引退單元144在FBCSUI指令的分析指針182上產(chǎn)生一真值,而該FBCSUI指令的分析指針182用以清除FBCSUI指令的擱置旗標(biāo)192。再者,若微處理器100清除FBCSUI指令(例如因?yàn)檎`預(yù)測(cè)的NCB指令),則微處理器100清除FBCSUI指令的擱置旗標(biāo)192。FBCSUI指令的擱置旗標(biāo)192供應(yīng)至提取地址控制器126,提取地址控制器126使用FBCSUI指令的擱置旗標(biāo)192,用以決定是否要停止提取來自指令快取106中的指令188,如以下所述。FBCSUI指令的結(jié)果186與FBCSUI指令的分析指針182亦會(huì)被供應(yīng)至微碼單元128。通過使用FCB指令而不是NCB指令,程序設(shè)計(jì)師暗示微處理器100,F(xiàn)BCS124(或至少一部分被FCB指令指定為分支條件狀態(tài)的FBCS124)即將會(huì)被更新,若尚未準(zhǔn)備就緒,則使用FBCSUI指令,而該FBCSUI指令在程序順序中的順序要比FCB指令還要舊。被FBCSUI指令所更新的FBCS124,可能為微處理器100中許多不同的分支條件狀態(tài)中的一個(gè)。舉例而言,F(xiàn)BCSUI指令會(huì)將狀態(tài)從微處理器100中的其他部分轉(zhuǎn)移至FBCS124,例如結(jié)構(gòu)狀態(tài),像是條件程序碼暫存器(舉例而言,X86EFLAGS暫存器)或通用暫存器。此外,雖然圖1的實(shí)施例顯示FBCS124位于提取單元104中,但在其他實(shí)施例中,F(xiàn)BCS124包括處理器的結(jié)構(gòu)狀態(tài),例如條件程序碼暫存器或通用暫存器。提取單元104也包括一分支預(yù)測(cè)器118。分支預(yù)測(cè)器118根據(jù)提取單元104中的指令指位器112,產(chǎn)生一預(yù)測(cè)目標(biāo)地址156至多工器114以及產(chǎn)生一預(yù)測(cè)方向158至提取地址控制器126,其中該提取單元104中的指令指位器112用以產(chǎn)生一提取地址168至指令快取106。特別是,分支預(yù)測(cè)器118用以指示提取地址控制器126,若提取地址168指定一條事先包括有條件分支指令的快取線(cacheline),則預(yù)測(cè)目標(biāo)地址156與預(yù)測(cè)方向158為有效的。在一實(shí)施例中,分支預(yù)測(cè)器118用以預(yù)測(cè)正規(guī)條件分支指令,其中管線式微處理器在正確地分析正規(guī)條件分支指令之后,用以將一分支預(yù)測(cè)信息儲(chǔ)存至分支預(yù)測(cè)器118中,并且管線式微處理器在正確地分析快速條件分支指令之后,則不將上述分支預(yù)測(cè)信息儲(chǔ)存至分支預(yù)測(cè)器118中,上述分支預(yù)測(cè)信息包含預(yù)測(cè)目標(biāo)地址156以及預(yù)測(cè)方向158。在以下所述的一實(shí)施例中,提取單元104會(huì)禁止對(duì)FCB指令進(jìn)行分支預(yù)測(cè)。提取單元104中的提取地址控制器126產(chǎn)生一多工器選擇信號(hào)152至多工器114用以選擇提取地址168,提取地址168用以從指令快取106中提取下一個(gè)指令。提取地址控制器126根據(jù)一NCB指令的誤預(yù)測(cè)指示178,產(chǎn)生多工器選擇信號(hào)152用以選擇NCB指令的正確目標(biāo)地址(NCBcorrecttargetaddress)176。或者,提取地址控制器126根據(jù)一FCB指令的方向172(用以指示發(fā)生FCB指令),產(chǎn)生多工器選擇信號(hào)152用以選擇FCB指令的目標(biāo)地址162?;蛘?,提取地址控制器126根據(jù)一預(yù)測(cè)方向158(用以指示發(fā)生NCB指令),產(chǎn)生多工器選擇信號(hào)152用以選擇預(yù)測(cè)目標(biāo)地址156?;蛘撸崛〉刂房刂破?26產(chǎn)生多工器選擇信號(hào)152用以選擇下一個(gè)指令指位器地址(nextsequentialIPaddress,NSIP)154。下一個(gè)指令指位器地址154為指令快取106中位于提取地址168之后的下一個(gè)循序地址。每當(dāng)指令指位器112產(chǎn)生一提取地址168,一地址遞增電路116產(chǎn)生下一個(gè)指令指位器地址154。在一實(shí)施例中,分支預(yù)測(cè)器118包括一分支目標(biāo)快取(圖未顯示)。當(dāng)提取地址168擊中(hitsin)分支目標(biāo)快取時(shí),分支預(yù)測(cè)器118則會(huì)產(chǎn)生預(yù)測(cè)目標(biāo)地址156與發(fā)送至提取地址控制器126的預(yù)測(cè)方向158。微處理器100使用地址與事先執(zhí)行的條件分支指令的分析目標(biāo)地址,用以更新分支目標(biāo)快取。此外,微處理器100根據(jù)先前執(zhí)行的條件分支指令的分析方向,使用分支預(yù)測(cè)信息用以更新分支目標(biāo)快取。在一實(shí)施例中,由于提取單元104正確地分析并引退FCB指令,所以微處理器100不會(huì)根據(jù)執(zhí)行的FCB指令來更新分支目標(biāo)快取。通過一直正確地分析提取單元104中的FCB指令,微處理器100有利地避免承擔(dān)一與FCB指令處理有關(guān)的分支誤預(yù)測(cè)代價(jià)。然而,以下將描述微處理器100可能要承擔(dān)與NCB指令處理有關(guān)的分支誤預(yù)測(cè)代價(jià)。指令指位器112用以接收并儲(chǔ)存提取單元104的多工器114所選擇的地址。指令指位器112用以提供提取地址168至指令快取106,以便提取來自指令快取106中的一快取線。位于提取單元104外部的多工器132,從兩個(gè)來源接收指令并在這兩個(gè)來源之間做出選擇。第一個(gè)來源為從指令快取106中提取并由提取單元104所提供的正規(guī)指令146。第二個(gè)來源為微處理器100中的一微碼單元128所提供的正規(guī)指令148。微碼單元128包括微碼程序(microcoderoutines),舉例而言,微碼程序用以執(zhí)行復(fù)雜指令并處理某些異常條件(exceptionconditions)。實(shí)施例中可考慮不將微碼單元128包括在微處理器100中。微處理器100包括一暫存器別名表(registeraliastable;RAT)134,用以決定正規(guī)指令146或148的運(yùn)算元相依性(operandcbpendencies)。分析出運(yùn)算元相依性之后,暫存器別名表134將正規(guī)指令146或148傳送至微處理器100中的一指令排程器(instructionscheduler)136。在一實(shí)施例中,上述暫存器別名表134為一相依性檢查單元。在一實(shí)施例中,微處理器100也包括一重新排序緩沖器(re-orderbuffer;R0B),該重新排序緩沖器包括在引退單元144內(nèi),用以儲(chǔ)存微處理器100中各個(gè)未引退(imretired)指令的狀態(tài)信息。即使正規(guī)指令(146、148)在程序順序外執(zhí)行,重新排序緩沖器也能確保正規(guī)指令(146、148)在程序順序中被引退。在將指令配送至一保留站(reservationstation)之前(以下會(huì)說明),暫存器別名表134會(huì)在重新排序緩沖器中配置一項(xiàng)目(entry)給各個(gè)指令。指令排程器136用以將正規(guī)指令146或148安排至執(zhí)行單元138加以執(zhí)行。在一實(shí)施例中,微處理器100包括保留站(圖未顯示),保留站為指令隊(duì)列(instructionqueues),用以儲(chǔ)存正在等待其運(yùn)算元的指令,所以可通過指令排程器136,將這些正在等待其運(yùn)算元的指令傳送至執(zhí)行單元138(亂序執(zhí)行微處理器)。在一實(shí)施例中,微處理器100會(huì)執(zhí)行亂序指令,而指令排程器136使用暫存器別名表134所產(chǎn)生的相依性信息,用以安排適當(dāng)?shù)闹噶顖?zhí)行。在一實(shí)施例中,一發(fā)送邏輯單元(例如指令排程器136)耦接于提取單元104與執(zhí)行單元138之間,用以從提取單元104中接收不同于上述快速條件分支指令的多個(gè)指令并且發(fā)送至執(zhí)行單元138加以執(zhí)行,上述發(fā)送邏輯單元還在分析出上述指令的多個(gè)相依性之前,等待用以將不同于上述快速條件分支指令的各個(gè)上述指令發(fā)送至執(zhí)行單元138,其中提取單元104非選擇性地禁止將上述快速條件分支指令傳送至上述發(fā)送邏輯單元。在一實(shí)施例中,一發(fā)送邏輯單元(例如指令排程器136)耦接至執(zhí)行單元138,用以將不同于上述快速條件分支指令的多個(gè)指令,發(fā)送至執(zhí)行單元138加以執(zhí)行,其中上述發(fā)送邏輯單元在每一個(gè)時(shí)脈周期中包括一預(yù)定最大數(shù)量的多個(gè)發(fā)送槽,用以將不同于上述快速條件分支指令的上述指令發(fā)送至執(zhí)行單元138。由于提取單元104非選擇性且正確地分析上述快速條件分支指令,所以微處理器不需要在每一個(gè)上述時(shí)脈周期中消耗上述發(fā)送槽的任何一個(gè)。在一實(shí)施例中,一列表(例如暫存器別名表134)耦接至執(zhí)行單元138,用以儲(chǔ)存不同于上述快速條件分支指令的多個(gè)指令所相關(guān)的多個(gè)運(yùn)算元相依性信息,以便確保上述指令的正確執(zhí)行順序,其中上述指令發(fā)送至執(zhí)行單元138。由于提取單元104非選擇性且正確地分析上述快速條件分支指令,所以上述微處理器禁止將任何關(guān)于上述快速條件分支指令的上述運(yùn)算元相依性信息,儲(chǔ)存至上述列表中。在一實(shí)施例中,一個(gè)或更多個(gè)指令隊(duì)列(例如指令排程器136中的指令隊(duì)列)耦接至執(zhí)行單元138,用以儲(chǔ)存不同于上述快速條件分支指令的多個(gè)指令,其中上述指令等待被發(fā)送至執(zhí)行單元138用以執(zhí)行。由于提取單元104非選擇性且正確地分析上述快速條件分支指令,所以微處理器禁止將上述快速條件分支指令儲(chǔ)存至上述指令隊(duì)列中。在一實(shí)施例中,一相依性檢查單元用以根據(jù)程序中的其他指令,決定正規(guī)條件分支指令的多個(gè)相依性,其中管線式微處理器用以在上述相依性檢查單元根據(jù)上述程序中的11其他指令決定上述正規(guī)條件分支指令的多個(gè)正規(guī)分支條件狀態(tài)相依性之后,正確地分析上述正規(guī)條件分支指令。上述管線式微處理器正確地分析快速條件分支指令,而不需要將上述快速條件分支指令配送至上述相依性檢查單元,借此上述管線式微處理器處理上述快速條件分支指令所花費(fèi)的時(shí)脈周期小于處理上述正規(guī)條件分支指令所花費(fèi)的時(shí)脈周期。NCB指令用以根據(jù)正規(guī)分支條件狀態(tài)(normalbranchconditionstate;在此之后簡(jiǎn)稱為NBCS)142指定一分支條件。NBCS142可使用在NCB指令之前所提取的正規(guī)指令的結(jié)果來進(jìn)行更新。因此,指令排程器136等待將NCB指令傳送至執(zhí)行單元138,直到比較舊的指令(即用以更新NBCS142的指令)已經(jīng)產(chǎn)生其結(jié)果并使執(zhí)行單元138可以利用此結(jié)果。NBCS142可包括微處理器100中的結(jié)構(gòu)上可見的暫存器(architecturallyvisibleregisters),舉例而言,例如通用暫存器及/或條件程序碼暫存器,或x86EFLAGS暫存器。在一實(shí)施例中,快速條件分支指令命令管線式微處理器正確地分析快速條件分支指令,而不需要考慮程序中比快速條件分支指令還要舊的其他指令是否更新快速條件分支指令所使用的一快速分支條件;正規(guī)條件分支指令通過考慮上述程序中比正規(guī)條件分支指令還要舊的其他指令是否更新上述正規(guī)條件分支指令所使用的一正規(guī)分支條件,命令管線式微處理器正確地分析正規(guī)條件分支指令。微處理器100中的執(zhí)行單元138執(zhí)行所有的正規(guī)指令146與148,包括NCB指令。執(zhí)行單元138通過使用NBCS142來執(zhí)行NCB指令。若NBCS142滿足NCB指令中所指定的分支條件,則發(fā)生分支并且使用NCB指令所指定的分支目標(biāo)地址來提取指令。若NBCS142不滿足NCB指令中所指定的分支條件,則不發(fā)生分支,并且提取單元104從位于指令快取106中的NCB指令的地址之后的下一個(gè)循序地址中提取指令,亦或是微碼單元128從位于圖5中的微碼單元128中的微碼只讀存儲(chǔ)器506的地址之后的下一個(gè)循序地址中提取指令。執(zhí)行單元138將所有執(zhí)行的正規(guī)指令(包括NCB指令)的結(jié)果傳送至引退單元144。引退單元144持續(xù)追蹤被傳送至執(zhí)行單元138中的指令以及其執(zhí)行狀態(tài)、將執(zhí)行的指令的結(jié)果寫回,并且引退程序順序中的指令。特別是,引退單元144寫入一指令結(jié)果174,該指令用以更新NBCS142。在用以更新NBCS142的指令已經(jīng)將指令結(jié)果174寫入至NBCS142之后,引退單元144會(huì)引退NCB指令。引退單元144會(huì)產(chǎn)生一NCB指令的誤預(yù)測(cè)指示178至提取單元104中的提取地址控制器126中,用以指示分支預(yù)測(cè)器118是否誤預(yù)測(cè)NCB指令。若NCB指令是誤預(yù)測(cè),則微處理器100會(huì)清除管線中所有在程序順序中的順序比NCB指令還要新的指令;引退單元144引退NCB指令;提取地址控制器126會(huì)產(chǎn)生多工器選擇信號(hào)152用以選擇由引退單元144所提供的NCB指令的正確目標(biāo)地址176,NCB指令的正確目標(biāo)地址176事先被執(zhí)行單元138分析并被多工器114選擇用以載入至指令指位器112;而提取單元104則從指令快取106中提取指令指位器112所產(chǎn)生的提取地址168上的指令。因此,微處理器100可能要承擔(dān)一與NCB指令處理有關(guān)的分支誤預(yù)測(cè)代價(jià),但是與FCB指令無關(guān)。下表1描述了一程序中的程序碼片段(codesnippet),包括了一FCB指令與FBCSUI指令,這將有助于說明圖1中的微處理器100的運(yùn)作。表1表1中的程序的指令按照程序順序編號(hào)。程序片段中的第一行包括一FBCSUI指令。程序片段中的最后一行包括一FCB指令。第二行到第五行包括其他指令(標(biāo)記為指令1、指令2.....指令N)。亦即,F(xiàn)CB指令并非緊接在FBCSUI指令之后。程序設(shè)計(jì)師試圖在FBCSUI指令與FCB指令之間包括一些指令,使得提取單元104只在引退單元144已將FBCS124更新、清除FBCSUI指令的擱置旗標(biāo)192時(shí)提取FCB指令。在一實(shí)施例中,介于中間的指令(interveninginstructions)的數(shù)量近似于提取單元104與引退單元144之間的管線階段數(shù)量。在一實(shí)施例中,提取單元104與引退單元144之間的管線階段數(shù)量大約為10。因此,在程序設(shè)計(jì)師適當(dāng)?shù)貙CB指令安排在FBCSUI指令之后的情況下,提取單元104可能會(huì)在NCB指令被執(zhí)行單元138執(zhí)行以及被引退單元144引退的好幾個(gè)時(shí)脈周期之前,就能非選擇性且正確地執(zhí)行并引退FCB指令。此外,在分支預(yù)測(cè)器118誤預(yù)測(cè)一NCB指令的情況下,由于程序設(shè)計(jì)師在程序中所使用為一適當(dāng)安排的FCB指令(而不是誤預(yù)測(cè)的NCB指令),故可節(jié)省大量的時(shí)脈周期。請(qǐng)參考圖2,圖2顯示本發(fā)明的圖1中的微處理器100的一操作流程圖。此流程圖用以執(zhí)行一FBCSUI指令。流程從步驟202開始。在步驟202中,提取單元104會(huì)從指令快取106中提取一指令,將該指令解碼,并決定該指令為一FBCSUI指令,例如表1中的第一行中的FBCSUI指令。流程前進(jìn)至步驟204。在步驟204中,提取單元104會(huì)設(shè)置(asserts)FBCSUI指令的偵測(cè)指針160,該FBCSUI指令的偵測(cè)指針160用以設(shè)定FBCSUI指令的擱置旗標(biāo)192。流程前進(jìn)至步驟206。在步驟206中,提取單元104會(huì)將FBCSUI指令配送至執(zhí)行管線(即配送至多工器132、暫存器別名表134、指令排程器136、執(zhí)行單元138以及引退單元144)加以執(zhí)行。流程前進(jìn)至步驟208。在步驟208中,執(zhí)行單元138會(huì)執(zhí)行FBCSUI指令,而引退單元144引退FBCSUI指令。換言之,引退單元144將FBCSUI指令的結(jié)果186寫入至FBCS124,并且設(shè)置FBCSUI指令的分析指針182,用以清除FBCSUI指令的擱置旗標(biāo)192。值得注意的是,在提取單元104根據(jù)介于中間的指令(例如上述表1中的第二到第五行中的指令)的數(shù)量與混合以及微處理器100管線的組態(tài)與狀態(tài),將表1中的第六行中的FCB指令提取并解碼(如以下圖3中的步驟302所述)之前,步驟208中的動(dòng)作可能會(huì)或不會(huì)發(fā)生。流程結(jié)束于步驟208。請(qǐng)參考圖3,圖3為顯示本發(fā)明的圖1中的微處理器100的一操作流程圖。此流程圖用以執(zhí)行一FCB指令。流程從步驟302開始。在步驟302中,提取單元104會(huì)從指令快取106中提取一指令,將該指令解碼,并決定該指令為一FCB指令,例如表1中的第六行中的FCB指令。流程前進(jìn)至步驟304。在步驟304中,提取單元104會(huì)根據(jù)用以解碼一FCB指令的指令解碼器108,通過分支預(yù)測(cè)器118來禁止分支預(yù)測(cè)。流程前進(jìn)至決定步驟306。在決定步驟306中,提取地址控制器126會(huì)檢查FBCSUI指令的擱置旗標(biāo)192,并決定FBCSUI指令是否為擱置狀態(tài)。若FBCSUI指令為擱置狀態(tài),則流程前進(jìn)至步驟308;反之,流程前進(jìn)至步驟312。在步驟308中,提取地址控制器126會(huì)停止從指令快取106中提取指令,直到FBCSUI指令被分析。因此,流程回到?jīng)Q定步驟306。在步驟312中,提取單元104中的指令解碼器108會(huì)分析FCB指令的目標(biāo)地址162,F(xiàn)CB指令的方向分析器122根據(jù)FCB指令的條件166與FBCS124,用以分析FCB指令的方向172,并且若發(fā)生FCB指令的方向172,則提取地址控制器126控制多工器114選擇FCB指令的目標(biāo)地址162用以載入至指令指位器112;若未發(fā)生FCB指令的方向172,則提取地址控制器126控制多工器114選擇下一個(gè)指令指位器地址154,用以載入至指令指位器112。流程前進(jìn)至步驟314。在步驟314中,提取地址控制器126會(huì)重新開始從指令快取106中提取位于提取地址168上的指令,其中該提取地址168由指令指位器112所提供。流程前進(jìn)至步驟316。在步驟316中,提取單元104會(huì)引退FCB指令。特別是,由于提取單元104—直非選擇性地且正確地分析FCB指令,所以提取單元104不會(huì)將FCB指令配送至執(zhí)行管線加以執(zhí)行與引退。流程結(jié)束于步驟316。請(qǐng)參考圖4,圖4顯示本發(fā)明的圖1中的微處理器100的一操作流程圖。此流程圖用以執(zhí)行一NCB指令。圖4用以說明微處理器100在執(zhí)行FCB指令與NCB指令的操作的不同之處以及微處理器100的指令集結(jié)構(gòu)中具有FCB指令、NCB指令的好處。流程從步驟402開始。在步驟402中,提取單元104會(huì)從指令快取106中提取一指令,將該指令解碼,并決定該指令為一NCB指令,并將該指令配送至執(zhí)行管線中。再者,提取單元104會(huì)根據(jù)分支預(yù)測(cè)器118所產(chǎn)生的NCB指令的預(yù)測(cè),用以繼續(xù)提取指令。流程前進(jìn)至步驟404。在步驟404中,執(zhí)行單元138會(huì)分析NCB指令,并且決定該NCB指令是否正確地被分支預(yù)測(cè)器118預(yù)測(cè);換言之,執(zhí)行單元138會(huì)比較預(yù)測(cè)方向158與執(zhí)行單元138所決定的正確的方向是否一致,并且比較預(yù)測(cè)目標(biāo)地址156與執(zhí)行單元138所產(chǎn)生的正確的目標(biāo)地址是否一致。若兩者一致,引退單元144則會(huì)引退NCB指令。若兩者不一致,引退單元144則會(huì)清除微處理器100管線,并致使提取單元104開始從指令快取106中提取位于NCB指令的正確目標(biāo)地址176上的指令。流程結(jié)束于步驟404。如上所述,提取單元104會(huì)分析并引退FCB指令,而不需將FCB指令配送至執(zhí)行管線中。這將是有助益的,因?yàn)?,如上所述,?dāng)程序設(shè)計(jì)師使用一FCB指令而不是一傳統(tǒng)條件分支指令時(shí),由于消除了與傳統(tǒng)條件分支指令有關(guān)的誤預(yù)測(cè)與校正,因此可能具有更快的總執(zhí)行時(shí)間。另一個(gè)好處就是,與傳統(tǒng)條件分支指令相比,使用微處理器100中較少的資源即可分析并引退FCB指令。舉例而言,因?yàn)镕CB指令沒有被配送至執(zhí)行管線中,所以FCB指令不會(huì)占用暫存器別名表134中的項(xiàng)目、保留站、執(zhí)行單元138或重新排序緩沖器。請(qǐng)參考圖5,圖5為顯示根據(jù)本發(fā)明的另一實(shí)施例的一微處理器100的一方塊圖。圖5在許多地方與圖1相似。然而,圖5中并未顯示提取單元104的細(xì)節(jié),但顯示了微碼單元128的細(xì)節(jié)。圖5中的微碼單元128包括了許多與圖1中的提取單元104類似的元件,并且其中相同號(hào)碼的元件執(zhí)行類似的功能。其中一個(gè)不同點(diǎn)在于,微碼單元128會(huì)從一微碼只讀存儲(chǔ)器506中提取指令188,而不是從圖1中的指令快取106中提取指令188。微碼只讀存儲(chǔ)器506用以儲(chǔ)存微碼程序指令,以便處理使用者程序的指令,其中該微碼程序指令用以執(zhí)行微處理器100所需的動(dòng)作。因此從這個(gè)角度來看,儲(chǔ)存在微碼只讀存儲(chǔ)器506中的微碼程序?yàn)榉鞘褂谜叱绦?non-userprograms),因?yàn)檫@些微碼程序不屬于使用者程序本身的一部分。換言之,微處理器100的設(shè)計(jì)者開發(fā)(develop)儲(chǔ)存在微碼只讀存儲(chǔ)器506中的微碼程序,而不是微處理器100的使用者程序,其中使用者程序儲(chǔ)存在計(jì)算機(jī)系統(tǒng)中的系統(tǒng)存儲(chǔ)器及/或一非易失性儲(chǔ)存介質(zhì),例如一磁盤機(jī)。微碼程序所執(zhí)行的其中一個(gè)動(dòng)作為異常處理(exc印tionhandling)。微碼只讀存儲(chǔ)器506包括異常處理器,用以處理使用者程序指令產(chǎn)生的異常以及微處理器100所提取的微異常(micro-exc印tions),而不是處理微處理器100的宏結(jié)構(gòu)所定義的異常,其中上述微異常為微處理器100的微結(jié)構(gòu)所特有的。舉例而言,上述使用者程序指令所產(chǎn)生的異常包括無效運(yùn)算碼異常(invalidopcodeexc印tions)、除以零異常(dividebyzeroexceptions)、中If(interrupts)>^Mlti^(pagefaults)。另—ff歹ij〒,■石馬禾呈包括用以執(zhí)行微處理器100指令集中復(fù)雜且不常執(zhí)行的指令的程序碼,例如三角函數(shù)指令(trigonometricfunctioninstructions)、讀/寫特另ij模塊暫存器指令(read/writemodelspecificregistersinstructions)以及串列化指令(例如由《IA-32英特爾結(jié)構(gòu)軟件開發(fā)者手冊(cè),第3A冊(cè)系統(tǒng)程序設(shè)計(jì)導(dǎo)引,第1篇,2006年6月》中的第7.4節(jié)中的x86結(jié)構(gòu)所定義的串列化指令,該參考文獻(xiàn)全文以引用的方式并入本文中)。串列化指令可更新一控制值,而此控制值是使微處理器100進(jìn)入一新的模式或狀態(tài),例如改變分頁模式、使微處理器100進(jìn)入一保護(hù)模式、更新描述符表(descriptortables)或使快取線無效,上述例子僅作為舉例說明。因此,微碼單元128為微處理器100中的第二個(gè)提取單元,用以從微碼只讀存儲(chǔ)器506中提取微碼程序指令,將這些微碼程序指令解碼,而對(duì)于FCB指令而言,微碼單元128也是一直正確地分析并引退該FCB指令。在一實(shí)施例中,快速條件分支指令僅包括在管線式微處理器的多個(gè)微碼程序中,而不包括在被上述管線式微處理器所處理的多個(gè)使用者程序中。其中上述微碼程序包括用以執(zhí)行多個(gè)使用者程序指令的多個(gè)程序。其中上述微碼程序包括多個(gè)異常處理器用以處理多個(gè)異常,并且上述異常由上述管線式微處理器所處理的上述使用者程序所產(chǎn)生。在一實(shí)施例中,管線式微處理器通過更新與使用者程序有關(guān)的上述管線式微處理器中的一第一指令指位器,用以正確地分析正規(guī)條件分支指令,其中上述管線式微處理器通過更新與多個(gè)微碼程序有關(guān)的上述管線式微處理器中的一第二指令指位器,用以正確地分析快速條件分支指令。另一個(gè)不同點(diǎn)在于,微碼單元128不包括圖1中的分支預(yù)測(cè)器118。因此,在一般流程中(例如缺少FCB指令、誤預(yù)測(cè)NCB指令的校正、異常、誘使微碼(traptomicrocode)15執(zhí)行一使用者指令等等),微碼單元128會(huì)一直“預(yù)測(cè)”不會(huì)發(fā)生一條件分支指令,例如微碼單元128提取下一個(gè)指令指位器地址154上的指令,而不是由圖1中的分支預(yù)測(cè)器118所提供在一預(yù)測(cè)目標(biāo)地址156上的指令。然而,實(shí)施例中可考慮將一個(gè)也許更小、更簡(jiǎn)易以及更省電的分支預(yù)測(cè)器118(具有與圖1中的分支預(yù)測(cè)器118類似的功能),包括在微碼單元128中。然而,如同圖1中的提取單元104,圖5中的微碼單元128用以提取并且非選擇性地且正確地分析并引退FCB指令,以下將配合圖6至圖8作進(jìn)一步的說明。值得注意的是,在一實(shí)施例中,提取單元104與微碼單元128皆用以提取并且非選擇性地且正確地分析并引退FCB指令;而在其他實(shí)施例中,只有提取單元104與微碼單元128中之一用以提取并且非選擇性地且正確地分析并引退FCB指令。圖6至圖8的流程圖中的許多執(zhí)行步驟,與圖2至圖4的流程圖中的執(zhí)行步驟類似。然而,圖2至圖4中的提取單元104中的元件所執(zhí)行的步驟,由圖6至圖8中的微碼單元128中的對(duì)應(yīng)的元件所執(zhí)行。此外,如上所述,在一實(shí)施例中,微碼單元128不會(huì)執(zhí)行分支預(yù)測(cè);因此,圖7與圖8中不包括與分支預(yù)測(cè)有關(guān)的步驟。請(qǐng)參考圖6,圖6為顯示本發(fā)明的圖5中的微處理器100的一操作流程圖。此流程圖用以執(zhí)行一FBCSUI指令。流程從步驟602開始。在步驟602中,微碼單元128會(huì)從微碼只讀存儲(chǔ)器506中提取一指令,將該指令解碼,并決定該指令為一FBCSUI指令,例如表1中的第一行中的FBCSUI指令。流程前進(jìn)至步驟604。在步驟604中,微碼單元128會(huì)設(shè)置FBCSUI指令的偵測(cè)指針160,該FBCSUI指令的偵測(cè)指針160用以設(shè)定FBCSUI指令的擱置旗標(biāo)192。流程前進(jìn)至步驟606。在步驟606中,微碼單元128會(huì)將FBCSUI指令配送至執(zhí)行管線(即配送至多工器132、暫存器別名表134、指令排程器136、執(zhí)行單元138以及引退單元144)加以執(zhí)行。流程前進(jìn)至步驟608。在步驟608中,執(zhí)行單元138會(huì)執(zhí)行FBCSUI指令,而引退單元144會(huì)引退FBCSUI指令。換言之,引退單元144將FBCSUI指令的結(jié)果186寫入至FBCS124,并且設(shè)置FBCSUI指令的分析指針182,用以清除FBCSUI指令的擱置旗標(biāo)192。值得注意的是,在微碼單元128根據(jù)介于中間的指令(例如表1中的第二到第五行中的指令)的數(shù)量與混合以及微處理器100管線的組態(tài)與狀態(tài),將表1中的第六行中的FCB指令提取并解碼(如以下圖7中的步驟702所述)之前,步驟608中的動(dòng)作可能會(huì)或不會(huì)發(fā)生。流程結(jié)束于步驟608。請(qǐng)參考圖7,圖7為顯示本發(fā)明的圖5中的微處理器100的一操作流程圖。此流程圖用以執(zhí)行一FCB指令。流程從步驟702開始。在步驟702中,微碼單元128會(huì)從微碼只讀存儲(chǔ)器506中提取一指令,將該指令解碼,并決定該指令為FCB指令,例如表1中的第六行中的FCB指令。流程前進(jìn)至決定步驟706。在決定步驟706中,提取地址控制器126會(huì)檢查FBCSUI指令的擱置旗標(biāo)192,并決定FBCSUI指令是否為擱置狀態(tài)。若FBCSUI指令為擱置狀態(tài),則流程前進(jìn)至步驟708;反之,流程前進(jìn)至步驟712。在步驟708中,提取地址控制器126會(huì)停止從微碼只讀存儲(chǔ)器506中提取指令,直到FBCSUI指令被分析。因此,流程回到?jīng)Q定步驟706。在步驟712中,微碼單元128中的指令解碼器108會(huì)分析FCB指令的目標(biāo)地址162,而FCB指令的方向分析器122則會(huì)根據(jù)FCB指令的條件166與FBCS124,用以分析FCB指令的方向172。若發(fā)生FCB指令的方向172,則提取地址控制器126控制多工器114選擇FCB指令的目標(biāo)地址162用以載入至指令指位器112;若未發(fā)生FCB指令的方向172,則提取地址控制器126控制多工器114選擇下一個(gè)指令指位器地址154,用以載入至指令指位器112。流程前進(jìn)至步驟714。在步驟714中,提取地址控制器126會(huì)重新開始從微碼只讀存儲(chǔ)器506中提取位于指令指位器112所提供的提取地址168上的指令。流程前進(jìn)至步驟716。在步驟716中,微碼單元128會(huì)引退FCB指令。特別是,由于微碼單元128—直非選擇性地且正確地分析FCB指令,所以微碼單元128不會(huì)將FCB指令配送至執(zhí)行管線被執(zhí)行與引退。流程結(jié)束于步驟716。請(qǐng)參考圖8,圖8為顯示本發(fā)明的圖5中的微處理器100的一操作流程圖。此流程圖用以執(zhí)行一NCB指令。圖8用以說明微處理器100在執(zhí)行FCB指令與NCB指令的操作的不同之處以及微處理器100的指令集結(jié)構(gòu)中具有FCB指令、NCB指令的好處。流程從步驟802開始。在步驟802中,微碼單元128會(huì)從微碼只讀存儲(chǔ)器506中提取一指令,將該指令解碼,并決定該指令為一NCB指令,再將該指令配送至執(zhí)行管線中。再者,微碼單元128會(huì)繼續(xù)提取位于下一個(gè)指令指位器地址154上的指令。流程前進(jìn)至步驟804。在步驟804中,執(zhí)行單元138會(huì)分析NCB指令,并且決定是否未發(fā)生該NCB指令的正確方向。若未發(fā)生該NCB指令的正確方向,引退單元144則會(huì)引退NCB指令。若發(fā)生該NCB指令的正確方向,引退單元144則會(huì)清除微處理器100管線,并致使微碼單元128開始從微碼只讀存儲(chǔ)器506中提取位于NCB指令的正確目標(biāo)地址176上的指令,用以校正步驟802中的微碼單元128所提取的循序指令。流程結(jié)束于步驟804。雖然在本發(fā)明的實(shí)施例中,F(xiàn)CB指令包括用以使提取單元104或微碼單元128等待直到FBCSUI指令的擱置旗標(biāo)192清除之后再分析FCB指令的隱含等待語意(implicitwaitsemantic),但在其他實(shí)施例中,程序設(shè)計(jì)師可在狀態(tài)更新指令與FCB指令之間,包括一執(zhí)行等待函數(shù)的外顯等待指令(explicitwaitinstruction)0因此,在表1的程序碼片段中,外顯等待指令可設(shè)置于第五行中的指令與第六行中的指令之間。當(dāng)指令解碼器108解碼等待指令時(shí),指令解碼器108執(zhí)行類似于圖3的步驟306與308(或圖7的步驟706與708)中所描述的動(dòng)作。因此,在此實(shí)施例中,當(dāng)指令解碼器108解碼FCB指令時(shí),流程直接從圖3中的步驟304跳至步驟312(或從圖7中的步驟702跳至步驟712)。雖然本文描述了本發(fā)明的許多實(shí)施例,但大家應(yīng)能了解這些實(shí)施例僅作為舉例說明,并非用以限定本發(fā)明。任何計(jì)算機(jī)領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),應(yīng)當(dāng)可作些許更動(dòng)與潤(rùn)飾。舉例而言,軟件可以致能函數(shù)(function)、制造(fabrication)、模塊(modeling)、模擬(simulation)以及本文所描述的裝置與方法的描述及/或測(cè)試。此目的可通過使用一般程序語言(例如C、C++)、硬件描述語言(包括Verilog或VHDL硬件描述語言等等)或其他可用的程序來實(shí)現(xiàn)。該軟件可被設(shè)置在任何計(jì)算機(jī)可用的介質(zhì),例如半導(dǎo)體、磁盤、光盤(例如⑶-ROM、DVD-ROM等)中。本文所描述17的裝置與方法的實(shí)施例,可被包括在一半導(dǎo)體知識(shí)產(chǎn)權(quán)核(semiconductorintellectualpropertycore),例如一微處理器核心(實(shí)現(xiàn)于硬件描述語言)中,并被轉(zhuǎn)換成硬件以便實(shí)現(xiàn)集成電路生產(chǎn)。此外,本文所描述的裝置與方法可以結(jié)合硬件與軟件的方式實(shí)現(xiàn)。因此,本發(fā)明不應(yīng)該被本文中的任一實(shí)施例所限定,而是只應(yīng)該根據(jù)所附的權(quán)利要求書的保護(hù)范圍及其同等物來定義本發(fā)明。特別是本發(fā)明實(shí)現(xiàn)于一微處理器裝置中,該微處理器裝置可被使用在一通用計(jì)算機(jī)中。最后,本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),應(yīng)當(dāng)可作些許更動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍當(dāng)視所附的權(quán)利要求書所界定的范圍為準(zhǔn)。0093]附圖中符號(hào)的簡(jiǎn)單說明如下0094]100微處理器0095]104提取單元106指令快取0096]108指令解碼器112指令指位器0097]114,132多工器116地址遞增電路0098]118分支預(yù)測(cè)器122方向分析器0099]124快速分支條件狀態(tài)(FBCS)0100]126提取地址控制器128微碼單元0101]134暫存器別名表136指令排程器0102]138執(zhí)行單元0103]142正規(guī)分支條件狀態(tài)(NBCS)0104]144引退單元146、148正規(guī)指令0105]152多工器選擇信號(hào)0106]154下一個(gè)指令指位器地址0107]156預(yù)測(cè)目標(biāo)地址158預(yù)測(cè)方向0108]160偵測(cè)指針162目標(biāo)地址0109]164查見指示166條件0110]168提取地址172方向0111]174指令結(jié)果176正確目標(biāo)地址0112]178誤預(yù)測(cè)指示182分析指針0113]186結(jié)果188指令0114]192擱置旗506微碼只讀存儲(chǔ)器。權(quán)利要求一種管線式微處理器,其特征在于,包括一管線,具有多個(gè)階段,用以處理多個(gè)指令;上述管線式微處理器接收一正規(guī)條件分支指令,該正規(guī)條件分支指令包括于一程序中,其中上述管線式微處理器用以對(duì)上述正規(guī)條件分支指令進(jìn)行預(yù)測(cè),并且若上述預(yù)測(cè)隨后被認(rèn)定為不正確,則上述管線式微處理器清除多個(gè)管線指令;以及一快速條件分支指令,該快速條件分支指令包括于上述程序中,其中上述管線式微處理器一直正確地分析上述快速條件分支指令,并且不對(duì)上述快速條件分支指令進(jìn)行預(yù)測(cè)。2.根據(jù)權(quán)利要求1所述的管線式微處理器,其特征在于,還包括一分支預(yù)測(cè)器,用以預(yù)測(cè)上述正規(guī)條件分支指令,其中上述管線式微處理器在正確地分析上述正規(guī)條件分支指令之后用以將一分支預(yù)測(cè)信息儲(chǔ)存至上述分支預(yù)測(cè)器中,并且上述管線式微處理器在正確地分析上述快速條件分支指令之后則不將上述分支預(yù)測(cè)信息儲(chǔ)存至上述分支預(yù)測(cè)器中。3.根據(jù)權(quán)利要求1所述的管線式微處理器,其特征在于,上述快速條件分支指令命令上述管線式微處理器正確地分析上述快速條件分支指令,而不需要考慮上述程序中比上述快速條件分支指令還要舊的其他指令是否更新上述快速條件分支指令所使用的一快速分支條件,其中上述正規(guī)條件分支指令通過考慮上述程序中比上述正規(guī)條件分支指令還要舊的其他指令是否更新上述正規(guī)條件分支指令所使用的一正規(guī)分支條件,命令上述管線式微處理器正確地分析上述正規(guī)條件分支指令。4.根據(jù)權(quán)利要求1所述的管線式微處理器,其特征在于,上述管線式微處理器通過更新上述管線式微處理器中的一指令指位器,用以正確地分析上述正規(guī)條件分支指令與上述快速條件分支指令。5.根據(jù)權(quán)利要求1所述的管線式微處理器,其特征在于,上述管線式微處理器通過更新與使用者程序有關(guān)的上述管線式微處理器中的一第一指令指位器,用以正確地分析上述正規(guī)條件分支指令,其中上述管線式微處理器通過更新與多個(gè)微碼程序有關(guān)的上述管線式微處理器中的一第二指令指位器,用以正確地分析上述快速條件分支指令。6.一種管線式微處理器,其特征在于,接收一快速條件分支指令,該快速條件分支指令包括于一程序中,其中上述快速條件分支指令命令上述管線式微處理器正確地分析上述快速條件分支指令,而不需要考慮上述程序中比上述快速條件分支指令還要舊的其他指令是否更新上述快速條件分支指令所使用的一快速分支條件;以及一正規(guī)條件分支指令,該正規(guī)條件分支指令包括于上述程序中,其中上述正規(guī)條件分支指令通過考慮上述程序中比上述正規(guī)條件分支指令還要舊的其他指令是否更新上述正規(guī)條件分支指令所使用的一正規(guī)分支條件,命令上述管線式微處理器正確地分析上述正規(guī)條件分支指令。7.根據(jù)權(quán)利要求6所述的管線式微處理器,其特征在于,還包括一相依性檢查單元,用以根據(jù)上述程序中的其他指令,決定上述正規(guī)條件分支指令的多個(gè)相依性;其中上述管線式微處理器用以在上述相依性檢查單元根據(jù)上述程序中的其他指令決定上述正規(guī)條件分支指令的上述相依性之后,正確地分析上述正規(guī)條件分支指令;其中上述管線式微處理器用以正確地分析上述快速條件分支指令,而不需要將上述快速條件分支指令配送至上述相依性檢查單元,借此上述管線式微處理器處理上述快速條件分支指令所花費(fèi)的時(shí)脈周期小于處理上述正規(guī)條件分支指令所花費(fèi)的時(shí)脈周期。8.根據(jù)權(quán)利要求6所述的管線式微處理器,其特征在于,還包括一引退單元,用以引退一程序順序中的上述正規(guī)條件分支指令,上述程序順序有關(guān)于上述程序中的其他指令;其中上述引退單元不會(huì)引退上述快速條件分支指令。9.根據(jù)權(quán)利要求6所述的管線式微處理器,其特征在于,還包括一暫存器,用以儲(chǔ)存由上述快速條件分支指令所指定的一快速分支條件狀態(tài);以及一微碼只讀存儲(chǔ)器,用以儲(chǔ)存多個(gè)微碼程序,上述微碼程序包括至少一上述快速條件分支指令,而上述快速條件分支指令用以指定儲(chǔ)存于上述暫存器中的上述快速分支條件狀態(tài)。10.一種執(zhí)行兩種條件分支指令的方法,其特征在于,應(yīng)用于具有用以處理指令的多個(gè)管線階段的一管線式微處理器,上述執(zhí)行兩種條件分支指令的方法包括預(yù)測(cè)一正規(guī)條件分支指令,上述正規(guī)條件分支指令包括于一程序中;若上述預(yù)測(cè)隨后被認(rèn)定為不正確,則清除多個(gè)管線指令;以及一直正確地分析一快速條件分支指令,并且不對(duì)上述快速條件分支指令進(jìn)行預(yù)測(cè),其中上述快速條件分支指令包括于上述程序中。11.根據(jù)權(quán)利要求10所述的執(zhí)行兩種條件分支指令的方法,其特征在于,上述預(yù)測(cè)上述正規(guī)條件分支指令的步驟由一分支預(yù)測(cè)器所執(zhí)行,上述執(zhí)行兩種條件分支指令的方法還包括在上述分支預(yù)測(cè)器正確地分析上述正規(guī)條件分支指令之后,將一分支預(yù)測(cè)信息儲(chǔ)存至上述分支預(yù)測(cè)器中;以及在上述分支預(yù)測(cè)器正確地分析上述快速條件分支指令之后,不將上述分支預(yù)測(cè)信息儲(chǔ)存至上述分支預(yù)測(cè)器中。12.根據(jù)權(quán)利要求10所述的執(zhí)行兩種條件分支指令的方法,其特征在于,上述快速條件分支指令命令上述管線式微處理器正確地分析上述快速條件分支指令,而不需要考慮上述程序中比上述快速條件分支指令還要舊的其他指令是否更新上述快速條件分支指令所使用的一快速分支條件,其中上述正規(guī)條件分支指令則通過考慮上述程序中比上述正規(guī)條件分支指令還要舊的其他指令是否更新上述正規(guī)條件分支指令所使用的一正規(guī)分支條件,命令上述管線式微處理器正確地分析上述正規(guī)條件分支指令。13.根據(jù)權(quán)利要求10所述的執(zhí)行兩種條件分支指令的方法,其特征在于,上述正確地分析上述快速條件分支指令以及正規(guī)條件分支指令的步驟包括更新上述管線式微處理器中的一指令指位器。14.根據(jù)權(quán)利要求10所述的執(zhí)行兩種條件分支指令的方法,其特征在于,上述正確地分析上述正規(guī)條件分支指令的步驟包括更新與多個(gè)使用者程序有關(guān)的上述管線式微處理器中的一第一指令指位器,其中上述正確地分析上述快速條件分支指令的步驟包括更新與多個(gè)微碼程序有關(guān)的上述管線式微處理器中的一第二指令指位器。15.一種執(zhí)行兩種條件分支指令的方法,其特征在于,應(yīng)用于具有用以處理指令的多個(gè)管線階段的一管線式微處理器,上述執(zhí)行兩種條件分支指令的方法包括不考慮一程序中比一快速條件分支指令還要舊的其他指令是否更新上述快速條件分支指令所使用的一快速分支條件;在不需考慮上述程序中比上述快速條件分支指令還要舊的其他指令是否更新上述快速條件分支指令所使用的上述快速分支條件的同時(shí),命令上述管線式微處理器正確地分析上述快速條件分支指令;以及通過考慮上述程序中比一正規(guī)條件分支指令還要舊的其他指令是否更新上述正規(guī)條件分支指令所使用的一正規(guī)分支條件,命令上述管線式微處理器正確地分析上述正規(guī)條件分支指令,其中上述正規(guī)條件分支指令包括于上述程序中。16.根據(jù)權(quán)利要求15所述的執(zhí)行兩種條件分支指令的方法,其特征在于,還包括根據(jù)上述程序中的其他指令分析上述正規(guī)條件分支指令的多個(gè)相依性;在根據(jù)上述程序中的其他指令分析上述正規(guī)條件分支指令的上述相依性之后,正確地分析上述正規(guī)條件分支指令;正確地分析上述快速條件分支指令,而不需要將上述快速條件分支指令配送至一相依性檢查單元,借此上述管線式微處理器處理上述快速條件分支指令所花費(fèi)的時(shí)脈周期小于處理上述正規(guī)條件分支指令所花費(fèi)的時(shí)脈周期。17.根據(jù)權(quán)利要求15所述的執(zhí)行兩種條件分支指令的方法,其特征在于,還包括將上述快速條件分支指令所指定的一快速分支條件狀態(tài)儲(chǔ)存至一暫存器中;以及將多個(gè)微碼程序儲(chǔ)存至一微碼只讀存儲(chǔ)器中,其中上述微碼程序包括至少一上述快速條件分支指令,而上述快速條件分支指令用以指定儲(chǔ)存于上述暫存器中的上述快速分支條件狀態(tài)。全文摘要一種管線式微處理器及其執(zhí)行兩種條件分支指令的方法,管線式微處理器包括一管線,該管線具有多個(gè)階段,用以處理多個(gè)指令;一正規(guī)條件分支指令,該正規(guī)條件分支指令包括在一程序中,其中管線式微處理器用以對(duì)正規(guī)條件分支指令進(jìn)行預(yù)測(cè),并且若預(yù)測(cè)隨后被認(rèn)定為不正確,則管線式微處理器清除多個(gè)管線指令;以及一快速條件分支指令,該快速條件分支指令包括在程序中,其中管線式微處理器一直正確地分析快速條件分支指令,并且不對(duì)快速條件分支指令進(jìn)行預(yù)測(cè)。本發(fā)明執(zhí)行快速條件分支指令的速度比執(zhí)行傳統(tǒng)條件分支指令的速度快,且消除了與傳統(tǒng)條件分支指令有關(guān)的誤預(yù)測(cè)與校正,并使用較少的資源即可分析并引退快速條件分支指令。文檔編號(hào)G06F9/38GK101876890SQ20091024705公開日2010年11月3日申請(qǐng)日期2009年12月25日優(yōu)先權(quán)日2009年2月12日發(fā)明者G·葛蘭·亨利,布蘭特·比恩,泰瑞·派克斯申請(qǐng)人:威盛電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
门头沟区| 鸡泽县| 云龙县| 讷河市| 铁岭市| 纳雍县| 辽阳市| 紫阳县| 三亚市| 吉水县| 台中县| 钦州市| 九龙坡区| 泽库县| 承德县| 永泰县| 兴文县| 阿鲁科尔沁旗| 色达县| 怀集县| 介休市| 东兰县| 虹口区| 马公市| 侯马市| 河南省| 阿克陶县| 芦溪县| 连平县| 株洲市| 文登市| 定襄县| 雅江县| 天峨县| 射阳县| 松江区| 汪清县| 明光市| 德令哈市| 岑巩县| 阿鲁科尔沁旗|