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

強靜態(tài)預測分支指令的優(yōu)化執(zhí)行的制作方法

文檔序號:6509530閱讀:262來源:國知局
專利名稱:強靜態(tài)預測分支指令的優(yōu)化執(zhí)行的制作方法
背景技術(shù)
I.發(fā)明領(lǐng)域本發(fā)明涉及微處理器的領(lǐng)域。特別是,本發(fā)明涉及微處理器的分支預測。
II.背景信息計算機程序通常包括大量的分支指令,使得在執(zhí)行中,指令不是按照在程序存儲器中排列的順序執(zhí)行。當執(zhí)行了一個分支指令時,或者繼續(xù)執(zhí)行存儲器中的下一條指令,或者跳轉(zhuǎn)到一條由分支目標地址指定的指令。如果程序運行調(diào)轉(zhuǎn)到分支目標地址指定的分支,則認為一個由分支指令指定的分支被“采納”,如果繼續(xù)執(zhí)行存儲器中的下一條順序指令,則認為“不采納”。
分支指令是無條件的或是有條件的。一條無條件的分支指令在每次執(zhí)行時都會被采納。一條有條件的指令是否被采納,取決于條件的判斷結(jié)果,通常是一個邏輯語句的結(jié)果。在判斷分支所依靠的條件之前,一個條件分支后面將要執(zhí)行的指令是未知的。但是,在條件判斷之前,當前技術(shù)水平的微處理器能夠進行分支預測,由此微處理器試圖猜測分支是被采納或不被采納,這樣可以取得并推測執(zhí)行隨后的指令。如果預測分支是不被采納的,微處理器獲取并推測執(zhí)行存儲器中該分支后面的一條指令。如果預測分支是被采納的,那么微處理器取得并推測執(zhí)行預測的分支目標地址上的指令。分支預測之后執(zhí)行的指令是“推測的”,因為當前微處理器還不知道預測正確與否。相應(yīng)地,任何將由推測的指令執(zhí)行的操作可能不會完整地進行。例如,如果推測執(zhí)行一個存儲器寫操作,在前面所有的分支條件被成功執(zhí)行之前,寫操作可能不會被發(fā)送到存儲器。否則一條錯誤預測的路徑中的指令可能對存儲器進行不正常的修改。
如果分支預測最后被確定是正確的,那么已被推測執(zhí)行的指令被肯定,否則就是被錯誤執(zhí)行。在存儲器寫的例子中,通過發(fā)送寫操作到存儲器系統(tǒng)來肯定并結(jié)束該指令的執(zhí)行。如果最終發(fā)現(xiàn)分支預測是錯誤的,那么跟隨錯誤分支后的任何推測執(zhí)行的指令通常被從系統(tǒng)中沖洗掉。在存儲器寫的例子中,寫操作不是被送到存儲器系統(tǒng),而是被廢棄。
為了加速分支預測,一些當前技術(shù)水平的微處理器包括一個分支預測表(BPT),提供一個大多數(shù)的最近預測分支和相應(yīng)的預測信息的高速緩沖存儲器,這些信息包括如以前運行歷史,也被稱為是動態(tài)歷史寄存器,和/或分支及其成效的預測信息。
除了動態(tài)分支歷史寄存器,預測機理還利用了編譯器提示來輔助分支預測。通常,利用運行一個具有幾個樣本數(shù)據(jù)集的程序所需的程序輪廓來確定編譯器提示。根據(jù)編譯器提示,可以知道一個分支是否可能被采納,和某一個分支如何被采納或不被采納。這一信息可能被編碼到一個指令中。但是,為了從指令中發(fā)現(xiàn)該信息,需要從指令高速緩存中讀取并解碼該指令。問題是一條指令在流程的后面被解碼。所以直到流程的幾個階段之后,才能得到指令中的編碼信息。
發(fā)明概述本發(fā)明的一個實施方案包括一個微處理器。微處理器包括一個分支預測表(BPT),具有至少一個分支條目。分支條目包括一個預測字段,表示該分支是否被預測采納。至少一個分支條目還包括一個歷史寄存器,存儲歷史信息。而且,BPT包括一個預測更新邏輯,來更新預測字段和歷史寄存器,除非一個分支是強靜態(tài)預測的。


從后面的詳細描述、附加的權(quán)利要求和附圖中,可以更明確地了解本發(fā)明的特征、狀況和優(yōu)點,附圖中圖1是依照本發(fā)明的一個微處理器的簡化實施方案的模塊圖;圖2是依照本發(fā)明的一個具有一個記錄的分支預測表,和其它形式的分支預測表的模塊圖;圖3為一個與依照本發(fā)明的分配一個分支的方法的實施方案相關(guān)的流程圖。
發(fā)明詳述在下面的描述中,闡明了大量的特定細節(jié),提供一個對本發(fā)明的透徹理解。但是,應(yīng)該理解,本領(lǐng)域的一般技術(shù)人員可以在沒有這些特定細節(jié)的前提下實施本發(fā)明。為了避免混淆,在有些例子中,對一些眾所周知的電路、結(jié)構(gòu)和技術(shù)沒有進行說明。
本發(fā)明的一個實施方案包括一個微處理器。該微處理器具有一個分支預測表(BPT),該表具有至少一個分支條目。分支條目包括一個預測字段,表示該分支是否被預測采納。至少一個分支條目還包括一個歷史寄存器,存儲歷史信息。BPT還進一步包括一個預測更新邏輯,來更新預測字段和歷史寄存器,除非一個分支是靜態(tài)預測的。
微處理器進一步包括一個編譯器提示寄存器,具有一個第一字段,當該字段被確認時,表示分支為靜態(tài)強預測的。編譯器提示寄存器還包括一個第二字段,該字段被確認時表示預測一個分支是否被采納。至少一個分支條目進一步包括一個字段(后面被稱為“強預測/無條件”(SP/U)字段)。如果發(fā)現(xiàn)一個分支是無條件的,SP/U字段被置“1”,也可以在一個插入到分支條目中的條件分支具有強預測編譯器提示時,將SP/U字段置“1”。當被確認時,SP/U字段表示一個分支是強預測的或表示一個分支是無條件分支。
預測字段與編譯器提示寄存器的第二字段和預測更新邏輯相連接。預測字段可以從編譯器提示或從一個采用預測更新邏輯的動態(tài)分支預測器接收表示一個分支是否被預測采納的信息。當SP/U被確認時,被設(shè)置為防止更新歷史寄存器,或者歷史寄存器和預測字段都被禁止更新。確認SP/U字段的結(jié)果是禁止動態(tài)預測器更改編譯器預測,或既禁止更改編譯器預測也禁止更改歷史信息。
已經(jīng)發(fā)現(xiàn)如果使用編譯器提示通常減少了錯誤預測。本發(fā)明的微處理器的實施方案在編譯器非??隙ㄒ粋€分支結(jié)果,即強預測分支時,允許表示一個分支是否是強預測的編譯器提示寄存器不去理會在芯片上實現(xiàn)的動態(tài)預測算法。根據(jù)上面的描述和BPT種的SP/U字段,采用一個分配算法可以提高預測精度。此外,由于解碼要占用指令一個較長的時間,所以通過在BPT中存儲編譯器預測信息,可以提早獲得該信息,而不是在分支解碼之后才能得到。因此,本發(fā)明的微處理器的實施方案允許確定是使用本地芯片內(nèi)的動態(tài)預測,還是在指令解碼之前在用編譯器靜態(tài)提示來替代本地芯片內(nèi)的動態(tài)預測。
圖1用模塊圖的形式說明依照本發(fā)明的一個微處理器100的簡化實施方案。微處理器100包括多個流程階段,對其中的流程階段102、104和106進行了說明。流程階段102,也被稱為是指令指針發(fā)生的流程階段,產(chǎn)生指向指令高速緩存108中的一條指令的指令指針。在下一個流程階段104中,即取指令流程階段中,根據(jù)前面的流程階段中產(chǎn)生的指令指針從指令高速緩存108中取得一條指令。在接下來的一個流程階段中,即循環(huán)流程階段106中,取出一條指令并將其解碼。如果沒有本發(fā)明的裝置和方法,當一條指令在循環(huán)流程階段106中被解碼之前,編譯器預測提示是不能用的。在依照本發(fā)明的微處理器的實施方案中,如果在分支分支預測表(BPT)140中分配了分支,則可以在取指令流程階段104中使編譯器預測提示有效。
BPT140提供了一個高速緩存,存儲大多數(shù)近期預測的分支以及相應(yīng)的預測信息,如該分支及其成效的以前的運行和/或預測的一個簡要歷史寄存器。例如,BPT140的一個分支條目可以包含一個預測字段(沒有顯示),表示一個分支是否應(yīng)該被采納。此外,BPT的一個分支條目包括一個分支類型字段,表示一個分支是否是一個調(diào)用、返回、順序分支等。微處理器100有一個指令指針發(fā)生器(IPG)103,產(chǎn)生一個指令指針(IP)。該IP為BPT140和存儲指令的指令高速緩存(IC)108指定一條新指令。在多種管道化微處理器的實現(xiàn)中,BPT140可以利用一個在指令指針中提供的標識值來存取,IC108利用相應(yīng)的標識值識別其中的高速緩存線路。
除了為BPT140和IC108提供指令指針外,IPG103還為目標地址高速緩存(TAC)110提供指令指針。TAC110包括目標指令的地址,其中一個分支可能被采納。如果一個分支被確定采納,TAC110傳送一個目標指令的地址,即目標地址給IPG103。通過TAC110傳送給IPG103的目標地址被解碼,然后被用作一個常規(guī)的指令指針,用來IC108獲取一個相應(yīng)的目標指令。這樣,一個可能包含IC108的取指令單元重新開始從新的目標地址獲取指令。在本發(fā)明的一個實施方案中,BPT140和TAC110可以被組合到一個結(jié)構(gòu)中,其中BPT的每一個記錄還包含該分支的一個目標地址。
微處理器110還包括一個預測電路112、一個返回堆棧緩沖器(RSB)124和一個連接到TAC110、RSB123和預測電路112的選擇裝置120。預測電路112具有一個輸入端口,由此連接到TAC110,從中接收一個HIT/MISS信號。預測電路112的第二個輸入端口被連接到BPT140,從中接收關(guān)于一個分支是被采納還是不被采納的信息。這一信息被存儲到上面討論的一個BPT記錄的預測字段中。預測電路112還有一個第三輸入端口,連接到BPT140,從中接收關(guān)于在BPT中是否有一個選中或失誤的信息。而且,電路112還有一個連接到BPT140的第四端口,從中接收關(guān)于分支類型的信息。分支類型表明一個分支是返回類型,還是其它與返回類型不同的類型,如調(diào)用或一般類型。
基于輸入端口接收到的信息,預測電路為選擇裝置120產(chǎn)生一個控制(選擇)信號。根據(jù)該信號的邏輯狀態(tài),選擇裝置120選擇一個由TAC110和RSB124提供的目標地址。例如,在BPT140和TAC110中選中一個分支,該分支被預測為采納的且不是一個返回類型。預測電路為選擇裝置120產(chǎn)生一個選擇信號,導致從TAC110中選擇目標地址。選擇裝置120為IPG103的選擇裝置150的輸入端口提供目標地址。
選擇裝置150具有連接到增量器152的另一個端口,將指令指針增加一個預定的值,如“1”。增加的指針被送回到選擇裝置150,在需要取得下一個順序指令時,被用作一個新的指令指針。而且,選擇裝置150還有兩個輸入端口,接收EXCEPTION TRAP(例外捕獲)和BRANCHMISPREDICTION(BMISP)(分支錯誤預測)信號。
選擇裝置150還有多個接收多個選擇信號的選擇輸入端口。其中一選擇信號是來自于BPT140的采納/不采納(T/N)信號。其它的信號包括一個“位于”流程遠處的流程階段中的有效例外信號(VALIDEXCEPTION)和一個有效分支錯誤預測信號(VALID BMISP)。選擇裝置150可以根據(jù)一個方案劃分輸入的指令地址信號的優(yōu)先順序,其中(1)賦予從微處理器后端傳送來的指令地址信號EXCEPTION/TRAP最高的優(yōu)先權(quán);(2)第二優(yōu)先權(quán)賦予也是從微處理器后端傳送來的分支錯誤預測(BMISP)指令地址信號;(3)第三優(yōu)先權(quán)賦予從選擇裝置120傳送到選擇裝置150的一個目標指令地址信號;和(4)第四優(yōu)先權(quán)賦予由增加器150產(chǎn)生的增加的指令指針信號。根據(jù)這一優(yōu)先級方案,如果選擇信號VALID BMISP和VALID EXCEPTION不是被確認的,而且分支被預測為采納的,那么選擇裝置150在一個輸出端口選擇從選擇裝置120接收到的目標地址。
一個預測算法按照下面的方式控制預測。當BPT140表示一個失誤,TAC110表示一個選中時,一個分支被預測為采納,由選擇裝置120選擇TAC110中的目標地址,送給指令指針發(fā)生器103。如果有一個BPT失誤和一個TAC失誤,那么可以確定沒有分支條目。指令指針發(fā)生器103增加當前的指針,將增加的當前指針送回給選擇裝置150。如果BPT中有一個命中而TAC中有一個失誤,而且BPT表示指令為RETURN類型,則預測電路112向選擇裝置120發(fā)送一個選擇信號,從RSB124中選擇一個相應(yīng)的返回地址。但是,如果BPT140和TAC110中都有一個命中,而且分支被預測為采納的,那么預測電路112從TAC中產(chǎn)生一個將被選擇裝置120選擇的目標地址。
在BPT140和TAC110中都有一個命中,但分支被預測為不采納的情況下,通過根據(jù)增加后的指針產(chǎn)生一個新的指針,微處理器繼續(xù)獲取高速緩存108中的下一條順序指令。當BPT140中有一個命中,而TAC中有一個失誤,并且指令是一般類型時,可以在指令解碼后根據(jù)指令計算目標地址。
這里描述的本發(fā)明的微處理器實施方案中,編譯器配置為將“編譯器提示”解碼到一個兩位的預測信息的指令中。根據(jù)一個分支被預測為采納和不采納的可能性,設(shè)置這兩個用于解碼編譯器提示的位。這兩個位解碼四種不同的分支預測類型的可能性可能不被采納、可能被采納、強不采納和強采納的預測。在下面的描述中,強采納和強不采納的分支分別被稱為“靜態(tài)采納”和“靜態(tài)不采納”分支,因為多半是采用編譯器提供的靜態(tài)提示預測分支??赡鼙徊杉{和可能不被采納的分支分別被稱為“動態(tài)采納”和“動態(tài)不采納”,因為多半是使用一個動態(tài)預測器來預測。在下面的描述中,交替使用“靜態(tài)”和“強烈”、“動態(tài)”和“可能”來說明。
編譯器使用通過樣本數(shù)據(jù)集和分支結(jié)果統(tǒng)計集運行的程序的程序輪廓來確定一個“采納率”?!安杉{率”可以從0到百分之百。當“采納率”介于0和某一個百分數(shù)“X”之間時,如10%左右,該分支很可能是“不被采納的”,上述的兩個位將預測解碼為“靜態(tài)不采納”。當“采納率”介于約10%和某個百分數(shù)“Y”時,如50%左右,預測可能為“動態(tài)不采納”。當“采納率”介于約50%和某個百分數(shù)“Z”時,如90%左右,預測可能為“動態(tài)采納”。當“采納率”介于“Z”和100%時,預測很可能為“靜態(tài)采納”。
百分數(shù)X、Y和Z是基于與微處理器中實現(xiàn)的動態(tài)分支預測器的精度的比較來建立的。例如,一個動態(tài)分支預測器通常有90%的預測精度。如果編譯器具有一個大于90%的精度,那么可用編譯器提示替代動態(tài)預測器。所以,當一個分支很可能是“被采納”時,可使用兩個解碼位,而不管BPT動態(tài)預測器表示的是什么,因為編譯器具有很好的把握,表明一個分支將被采納。
當遇到一個“靜態(tài)不采納”分支時,通常指令流沒有改變。所以,不需在BPT中緩存該分支。當一條指令中的解碼的信息表明有一個可能被采納或可能不被采納的預測,那么編譯器不是非??隙ㄔ摲种?yīng)該被采納還是不被采納。在這種情況下,使用BPT140來動態(tài)預測分支的行為。動態(tài)預測利用記錄在BPT中的一個分支的歷史寄存器,來預測即將發(fā)生的分支的結(jié)果。如果實現(xiàn)這里所描述的本發(fā)明實施方案的微處理器具有BPT預測-即可采用的動態(tài)預測,則可利用BPT預測來確定一個分支是被采納還是不被采納。如果BPT預測是不可用的,或者微處理器無視BPT的預測,那么微處理器可能使用兩位編譯器提示的采納/不采納字段來確定一個分支應(yīng)該被采納還是不被采納。在本發(fā)明的一個實施方案中,這兩個解碼位是一個41位指令的一部分,通過編譯器寫入指令,但是本發(fā)明并不限于41位的指令。一條指令的長度是這樣的在每條指令中,至少有兩位用于解碼編譯器提示。
通常,存儲在BPT中的分支是可能引起指令流變化的分支。典型地,這些分支既緩存在BPT中,也緩存在TAC中。在一個后面描述的分配過程之后,在BPT中失誤的分支被缺省預測為不采納,直到根據(jù)解碼指令使得編譯器預測提示可用。與“靜態(tài)不采納”分支指令不同,“動態(tài)不采納”分支指令更可能遲早在某點上被采納。所以關(guān)于“動態(tài)采納”或“動態(tài)不采納”分支的信息被存入BPT。
對于順序條件分支,可以在TAC中插入目標地址,而不是插入到BPT中。對于很可能被采納的分支,如一個“靜態(tài)采納”分支,不管分支的歷史紀錄是否在BPT中,或者BPT中不是該分支的歷史紀錄,只要目標地址在TAC中,預測不采用該歷史紀錄。在本發(fā)明的微處理器實施方案中,當一個地址在TAC中選中而在BPT中為失誤時,該分支被自動預測為采納,具有TAC選中記錄的目標地址。但是,具有“靜態(tài)采納”提示的CALL和RETURN指令被寫入到BPT中,因為這兩種分支類型可能影響返回堆棧緩沖器(BSB)124。所以CALL和RETURN指令可以被寫入到BPT140,這樣BPT140可以在分支被解碼之前提供CALL/RETURN類型。
圖2顯示了一個分支預測表(BPT)200的梗概。對于每一個分支指令,BPT200具有一個分支條目260。分支條目260包括幾個字段,包括一個有效位字段240、一個強預測/無條件(SP/U)字段242、一個預測字段244、一個分支類型字段(CALL/RETURN/REGULAR)261和一個歷史寄存器字段246。在一個實施方案中,每個SP/U和預測字段242及244分別包括一個位,而歷史寄存器246包含4個位。應(yīng)當清楚,上面所提的字段在長度上不限于特定的位數(shù),而是可以采用不同的位數(shù)來實現(xiàn)。后面,SP/U和預測字段242及244將被稱為“SP/U位242”和“預測位244”。有效位240表示記錄260中的分支是否有效。SP/U位242表示一個分支是有條件的還是無條件的,或者一個分式是否強預測的。一個順序條件分支包括無返回和無調(diào)用的分支類型。通常,對于一個條件分支,根據(jù)執(zhí)行的歷史,可以及時改變預測。
預測位244和歷史寄存器246被連接到一個預測更新邏輯電路248。預測更新邏輯電路248被連接到模式歷史表250。預測更新邏輯電路248可以實現(xiàn)二級預測算法,如“Tse-Yu Yeh二級預測算法”。關(guān)于算法的更多的信息,參見“1992年5月,國際計算機結(jié)構(gòu)研討會論文集第124-134頁,T-Y Yeh和Y.N.Patt的“二級適用分支預測的實現(xiàn)方法””。
通常,通過預測更新邏輯電路248來更新預測位244和歷史寄存器246。但是,對于一個無條件分支或靜態(tài)采納和靜態(tài)不采納分支,預測是不會更改的-預測始終為采納或不采納。為了避免在這些情況下更改預測,配置SP/U位242,來防止通過預測更新邏輯電路248更新預測位244和歷史紀錄246。
SP/U位242通過一個轉(zhuǎn)換器262連接到分別用來控制向預測位244和歷史紀錄246寫入的三態(tài)緩沖器270和272。當設(shè)置SP/U位242時,放置預測更新邏輯電路248更新預測位244和歷史寄存器246,因為三態(tài)緩沖器270和272是有三種狀態(tài)的。轉(zhuǎn)換器262根據(jù)SP/U位242轉(zhuǎn)換邏輯信號,產(chǎn)生一個邏輯“0”,啟用三態(tài)緩沖器270和272。一旦SP/U位242被置位,那么用計算機提示記錄247的第二字段(T/N)280寫入預測字段244的預測位。但是,當SP/U位242沒有斷定為“0”時,三態(tài)緩沖器270和272允許根據(jù)上面提到的二級預測算法,通過預測更新邏輯電路248來更新預測位244和歷史紀錄246。
在依照本發(fā)明的微處理器的實施方案中,當一個分支是“靜態(tài)采納”時,歷史紀錄被設(shè)置位“1111”。當歷史寄存器的所有的位都被設(shè)置為“1”時,一個分支被預測為采納。當歷史寄存器內(nèi)容為“1111”時,模式歷史表250具有記錄290,相當于“1111”硬接線到“1”,來表示被采納。這說明一個分支總是被采納的。當一個分支時“靜態(tài)不采納”時,歷史寄存器被設(shè)置為“0000”。當歷史寄存器內(nèi)容為“0000”時,模式歷史表具有記錄292,相當于記錄“0000”硬接線到“0”,表示“不采納”。與模式歷史表250中的記錄了解執(zhí)行歷史并依此修改預測的情況相比,把記錄“0000”和“1111”分別硬接線到“0”和“1”,表示不改變預測。
所以,對于“靜態(tài)采納”分支,置位SP/U位242,只要該分支還存在于BPT中,歷史寄存器就會維持初始的值“1111”。對于“靜態(tài)不采納”分支,置位SP/U位242,歷史寄存器維持為初始值“0000”。如果編譯器提示表示有一個“動態(tài)采納”或“動態(tài)不采納”預測,則SP/U位242被清除,利用預測位244采用順序動態(tài)預測,利用預測更新248更新分支歷史寄存器246。
圖3說明與依照本發(fā)明的一個實施方案的分配一個分支的過程相關(guān)的流程圖。該過程起始于模塊301,由此進入到?jīng)Q策模塊302。在決策模塊302中,根據(jù)編譯器提示,既兩個解碼位,來確定一個分支是否是靜態(tài)的。如果分支不是靜態(tài)的,而是動態(tài)的,在過程進入到模塊304。在模塊304中,BPT和TAC被更新。通常更新包括將一個上次使用的目標地址寫入到TAC中,將分支信息寫入到BPT中。SP/U位242被設(shè)置為“0”,允許預測邏輯更新電路更新歷史紀錄和預測位。此后開始使用動態(tài)預測。如果分支被預測為采納,則歷史紀錄被初始化為1111(或者某種可能產(chǎn)生采納預測的模式)。如果分支被預測為不采納,則歷史紀錄被初始化為0000(或者某種可能產(chǎn)生不采納預測的模式)。
但是,如果在決策模塊302中,確定分支是靜態(tài)的,則過程從決策模塊302轉(zhuǎn)入決策模塊306,于此確定該分支是“采納”還是“不采納”。如果分支是“不采納”,即該分支為“靜態(tài)不采納”,那么過程進入到模塊308。沒有進入BPT的分配。當一個分支被提示為強不采納,那么該分支的信息不被插入到預測表中,因為缺省分支預測已經(jīng)是“不采納”了。但是,如果分支被采納,過程進入到?jīng)Q策模塊301,其中確定分支是“CALL”還是“RETURN”類型。如果該分支不屬于“CALL”或“RETURN”類型,則過程進入到模塊311,其中TAC被更新。這樣以便當一個分支非??赡鼙徊杉{時,如“靜態(tài)采納”的情況,不需浪費BPT的空間來存儲歷史紀錄。
如果分支是CALL或RETURN類型,過程轉(zhuǎn)入決策模塊313,其中確定該分之是否是一個CALL類型。如果分支是CALL類型,則過程轉(zhuǎn)入到模塊312,其中BPT和TAC都被更新。歷史寄存器信息被初始化為“1111”,SP/U位242被設(shè)置為1。更新BPT,根據(jù)分支類型如CALL、RETURN和一般類型,來記錄信息。分支類型信息被用于更新其它的分支預測結(jié)構(gòu)。例如,在預測之后,可以用“類型”信息更新返回堆棧緩沖器(RSB)。如果是一個“CALL”類型,返回地址被壓入RSB。如果是“RETURN”類型,彈出棧頂數(shù)據(jù)。
但是,如果在決策模塊313中,確定了模塊是一個RETURN類型,那么過程進入到模塊314,其中進行與模塊312相同的操作,但有一個例外。TAC不被更新,因為采用RSB替代TAC來預測RETURN地址。
在上面的詳細描述中,參考特定的實施方案對本發(fā)明進行了闡述。但很顯然,如權(quán)利要求中所提出的,在不背離本發(fā)明的初衷和范圍的前提下,可以對本發(fā)明進行不同的修正和改動。相應(yīng)地,其中的規(guī)范和附圖,是用來說明本發(fā)明但并不局限于此。
權(quán)利要求
1.一種微處理器,包括一個分支預測表,分支預測表包括至少一個分支條目,包括一個用來表示一個分支是否被預測為采納的預測字段,和一個用來存儲歷史寄存器信息的歷史寄存器,和一個預測更新邏輯,用來更新上述的預測字段和歷史寄存器,除非當一個分支為強靜態(tài)預測的。
2.權(quán)利要求1的微處理器,進一步包括一個具有一個第一字段的編譯器提示,當該字段被確認時,表示一個分支是強靜態(tài)預測的。
3.權(quán)利要求2的微處理器,編譯器提示進一步包括一個第二字段,當被確認時,表示一個分支被預測為采納。
4.權(quán)利要求1的微處理器,進一步包括一個與上述預測更新邏輯相連的模式歷史表。
5.權(quán)利要求2的微處理器,所述的至少一個分支條目包括一個強預測/無條件字段,表示一個分支是否是一個強預測分支和一個無條件分支。
6.權(quán)利要求5的微處理器,所述強預測/無條件字段242連接到所述的編譯器提示分支的第一字段。
7.權(quán)利要求1的微處理器,所述預測字段連接到上述編譯器提示的第二字段。
8.權(quán)利要求1的微處理器,所述至少一個分支條目包括一個有效字段,表示所述分支條目是否有效。
9.權(quán)利要求1的微處理器,所述至少一個分支條目包括一個表示該分支是否屬于CALL、RETURN和一般類型。
10.權(quán)利要求9的微處理器,當所述分支被確認為強預測采納,并且既不是CALL類型也不是RETURN類型時,更新目標地址高速緩存。
11.權(quán)利要求10的微處理器,當上述分支被確定為強預測采納并屬于CALL類型時,更新上述的分支預測表和一個目標地址緩存,歷史寄存器被初始化為一個采納類型,該預測和SP/U字段被確認。
12.權(quán)利要求10的微處理器,當上述分支被確定為強預測采納并屬于RETURN類型時,更新上述的分支預測表,歷史寄存器被初始化為一個采納類型,該預測和SP/U字段被確認,而不更新TAC。
13.權(quán)利要求1的微處理器,當上述分支被預測為動態(tài)采納時,更新分支預測表和目標地址緩存(TAC),解除對SP/U字段的確認,歷史寄存器被初始化為一個采納類型。
14.權(quán)利要求1的微處理器,當上述分支被預測為動態(tài)不采納時,更新分支預測表和目標地址緩存(TAC),解除對SP/U字段的確認,歷史寄存器被初始化為一個不采納類型。
15.在微處理器中,一種分配一個分支的方法,該方法包括通過檢查一個編譯器提示,確定一個分支是強預測采納;和如果該分支為強預測采納并屬于CALL類型,則更新一個分支預測表(BPT)和目標地址緩存(TAC),初始化一個歷史寄存器為采納類型,和確認一個預測字段和一個強預測/無條件(SP/U)字段。
16.權(quán)利要求15的方法,進一步包括,當上述分支為強預測采納并屬于一個RETURN類型時,更新分支預測表;初始化一個歷史寄存器為采納類型,和確認一個預測字段和一個強預測/無條件(SP/U)字段。
17.權(quán)利要求15的方法,當上述分支被確定為強預測采納并且既不屬于一個CALL類型也不屬于一個RETURN類型時,進一步更新TAC。
18.權(quán)利要求15的方法,當上述分支為動態(tài)預測采納時,更新分支預測表和TAC;解除對SP/U字段的確認,初始化一個歷史寄存器為采納。
19.權(quán)利要求15的方法,進一步包括,如果上述分支為動態(tài)預測不采納,更新分支預測表和TAC;初始化一個歷史寄存器為不采納,和解除對SP/U字段的確認。
20.一個微處理器,包括一個編譯器提示記錄,包括一個第一字段,表示一個分支是否是強預測,和一個第二字段,表示一個分支是否被預測為采納;和一個分支預測表,包括,一個預測更新邏輯;至少一個分支條目,包括一個預測字段,表示一個分支是否被預測為采納,和一個存儲歷史信息的歷史紀錄,和一個預測更新邏輯,除非當一個分支被強靜態(tài)預測時,用來更新預測字段和歷史寄存器。
全文摘要
公開一個微處理器。該微處理器包括一個具有至少一個分支條目的分支預測表(BPT)。分支條目包括一個預測字段,表明一個分支是否被預測為采納。分支條目還包括一個存儲歷史信息的歷史寄存器。而且,分支預測表包括一個預測更新邏輯,除非當一個分支為強靜態(tài)預測時,更新預測字段和歷史寄存器。
文檔編號G06F9/38GK1359488SQ00809872
公開日2002年7月17日 申請日期2000年5月1日 優(yōu)先權(quán)日1999年5月3日
發(fā)明者T·Y·耶, M·A·波普林赫, M·拉曼 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
辽源市| 巴彦县| 区。| 尉氏县| 杭锦旗| 拜泉县| 洛浦县| 溆浦县| 祁阳县| 谢通门县| 阿拉善盟| 庆阳市| 万山特区| 民和| 新兴县| 电白县| 元江| 平罗县| 房产| 宜黄县| 家居| 岳普湖县| 无为县| 南雄市| 从江县| 和政县| 梓潼县| 丹寨县| 确山县| 天长市| 若羌县| 盐津县| 南汇区| 镇坪县| 金沙县| 库尔勒市| 黄大仙区| 平舆县| 赞皇县| 当雄县| 亳州市|