亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

通過循環(huán)結(jié)束分支來抑制分支歷史寄存器的更新的制作方法

文檔序號:6510996閱讀:142來源:國知局
通過循環(huán)結(jié)束分支來抑制分支歷史寄存器的更新的制作方法
【專利摘要】本發(fā)明涉及通過循環(huán)結(jié)束分支來抑制分支歷史寄存器的更新。檢測終止代碼循環(huán)的條件分支指令,且防止分支歷史寄存器(BHR)更新以存儲循環(huán)結(jié)束分支評估。這防止實(shí)施循環(huán)迭代的分支從所述BHR中取代其它分支評估歷史。可通過編譯器使用特定類型分支指令或在循環(huán)結(jié)束分支指令的操作碼中插入指示位來靜態(tài)地檢測所述循環(huán)結(jié)束分支。循環(huán)結(jié)束分支指令可被動態(tài)地檢測為任何后向分支,或者通過在更新所述BHR時存儲最后一個或若干個分支指令的PC并對照最后分支PC(LBPC)寄存器檢驗(yàn)分支指令的所述PC而動態(tài)地檢測。如果所述分支PC匹配,那么抑制對所述BHR的更新。將循環(huán)迭代分支保持在所述BHR之外會改進(jìn)分支預(yù)測訓(xùn)練時間和準(zhǔn)確性。
【專利說明】通過循環(huán)結(jié)束分支來抑制分支歷史寄存器的更新
[0001]分案申請的相關(guān)信息
[0002]本案是分案申請。該分案的母案是申請日為2006年2月24日、申請?zhí)枮?00680012619.8、發(fā)明名稱為“通過循環(huán)結(jié)束分支來抑制分支歷史寄存器的更新”的發(fā)明專
利申請案。
【技術(shù)領(lǐng)域】
[0003]本發(fā)明大體上涉及處理器領(lǐng)域,且更確切地說涉及一種通過用循環(huán)結(jié)束分支指令抑制對分支歷史寄存器的更新而改進(jìn)分支預(yù)測的方法。
【背景技術(shù)】
[0004]微處理器在廣泛的應(yīng)用中執(zhí)行計算任務(wù)。幾乎始終需要改進(jìn)的處理器性能以允許通過軟件變化來實(shí)現(xiàn)較快的操作和/或增加的功能性。在許多嵌入式應(yīng)用(例如,便攜式電子裝置)中,節(jié)省功率也是處理器設(shè)計和實(shí)施的一個目標(biāo)。
[0005]許多現(xiàn)代處理器使用管線結(jié)構(gòu),其中連續(xù)的指令(各具有多個執(zhí)行步驟)在執(zhí)行時重疊。為了實(shí)現(xiàn)改進(jìn)的性能,指令應(yīng)當(dāng)連續(xù)流動穿過管線。任何導(dǎo)致指令在管線中停滯的情形均可對性能造成不利影響。如果從管線中沖洗(flush)指令并隨后重新取得指令,那么性能和功率消耗均會受到損害。
[0006]大多數(shù)程序包含條件分支指令,直到在管線深處評估指令時才會知道其實(shí)際分支行為。為了避免因等待對分支指令的實(shí)際評估而產(chǎn)生的停滯,現(xiàn)代處理器可采用某種形式的分支預(yù)測,借此在管線中早期預(yù)測條件分支指令的分支行為?;陬A(yù)測出的分支評估,處理器以推測方式從預(yù)測出的地址取得(預(yù)取)并執(zhí)行指令,所述預(yù)測出的地址是分支目標(biāo)地址(如果預(yù)測會采用分支)或分支指令之后的下一順序地址(如果預(yù)測不會采用分支)。當(dāng)確定了實(shí)際分支行為時,如果分支被錯誤預(yù)測,那么必須從管線中沖洗以推測方式取得的指令,并從下一正確地址取得新的指令。響應(yīng)于錯誤的分支預(yù)測而預(yù)取指令可對處理器性能和功率消耗造成不利影響。因此,改進(jìn)分支預(yù)測的準(zhǔn)確性是一個重要的設(shè)計目標(biāo)。
[0007]已知的分支預(yù)測技術(shù)包含靜態(tài)和動態(tài)兩種預(yù)測??赏ㄟ^編程器和/或編譯器來靜態(tài)地預(yù)測一些分支指令的可能行為。分支預(yù)測的一個實(shí)例是錯誤檢驗(yàn)例行程序。代碼通常會正確執(zhí)行,且錯誤是罕見的。因此,實(shí)施“遇錯誤分支(branch on error) ”的分支指令將在非常高的百分比的時間中評估“不采用”。此種指令可在操作碼中包含靜態(tài)分支預(yù)測位,所述預(yù)測位是由編程器或編譯器在知道分支條件的最可能結(jié)果的情況下設(shè)定的。
[0008]動態(tài)預(yù)測一般基于正被預(yù)測的分支指令和/或同一代碼中的其它分支指令的分支評估歷史(且在一些情況下是分支預(yù)測準(zhǔn)確性歷史)。對實(shí)際代碼的廣泛分析指示,最近過去的分支評估模式可能是對未來分支指令的評估的良好指示。
[0009]圖1中描繪的一種已知形式的動態(tài)分支預(yù)測利用分支歷史寄存器(BHR) 100來存儲過去η個分支評估。在簡單的實(shí)施方案中,BHR30包括移位寄存器。將最近的分支評估結(jié)果移入(例如,I指示采用分支且O指示不采用分支),而寄存器中的最早過去的評估被取代。處理器可針對每個分支指令維持局部BHRlOO?;蛘?或另外),BHR100可含有對所有條件分支指令的最近過去的評估,其有時在此項(xiàng)技術(shù)中稱為全局BHR或GHR。如本文所使用,BHR指代局部和全局分支歷史寄存器兩者。
[0010]如圖1中所描繪,BHR100可將分支預(yù)測器表(BPT) 102編索引,所述BPT102同樣可以是局部的或全局的。BHR100可直接將BPT102編索引,或者可在BPT索引邏輯104中與例如分支指令的程序計數(shù)器(PC)的其它信息組合。另外可利用對BPT索引邏輯104的其它輸入。BPT索引邏輯104可將輸入鏈接在一起(此項(xiàng)技術(shù)中通常稱為gselect),對輸入進(jìn)行異或運(yùn)算(gshare),執(zhí)行散列函數(shù),或以多種方式組合或轉(zhuǎn)換輸入。
[0011]在一個實(shí)例中,BPT102可包括多個飽和計數(shù)器,其MSB充當(dāng)雙模態(tài)分支預(yù)測器。舉例來說,每個表?xiàng)l目可包括2位計數(shù)器,所述計數(shù)器采用四種狀態(tài)中的一種,所述四種狀態(tài)中的每一者被指派有加權(quán)預(yù)測值,例如:
[0012]11-強(qiáng)力預(yù)測采用
[0013]10-弱預(yù)測采用
[0014]01-弱預(yù)測不采用
[0015]00-強(qiáng)力預(yù)測不采用
[0016]每當(dāng)相應(yīng)的分支指令評估“采用”時,所述計數(shù)器遞增,且每當(dāng)指令評估“不采用”時,所述計數(shù)器遞減。計數(shù)器的MSB是雙模態(tài)分支預(yù)測器,其將預(yù)測一個分支是采用還是不采用,而不管基礎(chǔ)預(yù)測的強(qiáng)度或權(quán)重如何。飽和計數(shù)器減少不頻繁的分支評估的預(yù)測錯誤。始終單向評估的分支將使計數(shù)器飽和。相反地不頻繁評估將改變計數(shù)器值(以及預(yù)測的強(qiáng)度),但不是雙模態(tài)預(yù)測值。因此,不頻繁的評估將只錯誤預(yù)測一次而不是兩次。飽和計數(shù)器的表只是說明性實(shí)例,一般來說,BHT可將含有多種分支預(yù)測機(jī)制的表編索引。
[0017]不論在BPT102中采用哪種分支預(yù)測機(jī)制,BHR100 (單獨(dú)的或與例如分支指令PC的其它信息組合)將BPT102編索引以獲得分支預(yù)測。通過在BHR100中存儲先前分支評估并在分支預(yù)測中使用所述評估,使正被預(yù)測的分支指令與過去的分支行為相關(guān)——在局部BHR100的情況下為其自身的過去行為而在全局BHR100的情況下為其它分支指令的行為。這種相關(guān)至少在高度重復(fù)的代碼的情況下可能是準(zhǔn)確的分支預(yù)測的關(guān)鍵。
[0018]請注意,圖1描繪存儲在BHR100中的分支評估,即對條件分支指令的實(shí)際評估,其可能只有在管線深處(例如在執(zhí)行管級中)才被了解。雖然這是最終結(jié)果,但在實(shí)踐中,許多高性能處理器將來自BPT102的預(yù)測出的分支評估存儲在BHR100中,并之后在證實(shí)預(yù)測錯誤時作為錯誤預(yù)測恢復(fù)操作的一部分而對BHR100進(jìn)行校正。為了清晰起見,附圖未反映這種實(shí)施特征。
[0019]可能會降低采用BHR100的分支預(yù)測器的功效的一種常用代碼結(jié)構(gòu)是循環(huán)。循環(huán)以測試循環(huán)結(jié)束條件的條件分支指令結(jié)束,所述循環(huán)結(jié)束條件例如為每次通過循環(huán)時遞增的索引變量是否已達(dá)到循環(huán)結(jié)束值。如果沒有,那么執(zhí)行形成分支回到循環(huán)的開始處以進(jìn)行另一次迭代和另一次循環(huán)結(jié)束條件分支評估。相對于η位BHR100,存在關(guān)于循環(huán)的三種相關(guān)情況:循環(huán)不執(zhí)行;循環(huán)通過m次迭代執(zhí)行(其中m < η);和循環(huán)執(zhí)行m次(其中m >
=η) ο
[0020]如果循環(huán)不執(zhí)行,那么循環(huán)開始處的前向分支在循環(huán)主體上形成分支,從而產(chǎn)生一個采用的分支評估。這對BHR100具有最小影響,因?yàn)锽HR100中的過去分支評估歷史只由一個分支評估取代(實(shí)際上,預(yù)測準(zhǔn)確性可通過與這個分支評估的相關(guān)來改進(jìn))。
[0021]如果循環(huán)通過m次迭代來執(zhí)行(其中m > =n),那么循環(huán)結(jié)束分支指令的“采用”后向分支使BHR100飽和。也就是說,在循環(huán)結(jié)束時,η位BHR將始終含有恰好η_1個一且后面跟著單個零,這對應(yīng)于由循環(huán)迭代產(chǎn)生的較長系列的采用的評估,且在循環(huán)終止時以單個未采用評估結(jié)束。這實(shí)際上損害BHR100的功效,因?yàn)榕c先前分支評估(對于局部或全局BHR100)的所有相關(guān)全部丟失。在此情況下,BHR100將很可能映射到相同的BPT102條目以獲取給定的分支指令(視對BPT索引邏輯104的其它輸入而定),而不是映射到含有反映分支指令與先前分支評估的相關(guān)的分支預(yù)測的條目。
[0022]此外,飽和的BHR100可增加BPT102中的混淆。也就是說,如果BHR100直接將BPT102編索引,那么具有許多迭代的循環(huán)之后的所有分支指令將映射到相同的BPT102條目。即使在BHR100與其它信息組合的情況下,混淆的可能性也會增加。這不但對于循環(huán)之后的分支指令而且對于混淆到其在BPT102中的條目的所有分支指令,均會不利地影響預(yù)測準(zhǔn)確性。
[0023]如果循環(huán)通過m次迭代執(zhí)行(其中m < η),那么BHR100不飽和且保持某一先前分支評估歷史。然而,代表先前分支評估歷史的位被m個位位置取代。特別在m變化的情況下,這對分支預(yù)測具有兩個有害影響。首先,分支指令將映射到BPT102中的更大數(shù)目的條目,以俘獲與先前分支評估的相同相關(guān),從而與沒有循環(huán)結(jié)束分支影響B(tài)HR30的情況下將需要的BPT102相比,對于相同數(shù)目的分支指令需要更大的BPT102來支持相同的準(zhǔn)確性。第二,BPT102中的分支預(yù)測器將花費(fèi)較長時間來“訓(xùn)練”,從而增加了在BPT102開始提供準(zhǔn)確的分支預(yù)測之前必須執(zhí)行的代碼量。
[0024]舉例來說,考慮8位BHR100和一代碼段,其具有分支指令A(yù)_H,接著是循環(huán),且接下來是分支指令X。分支X與分支G和H的評估歷史強(qiáng)力相關(guān)。插入的循環(huán)的各種迭代將在預(yù)測X時產(chǎn)生下表1中呈現(xiàn)的BHR結(jié)果。
`[0025]
【權(quán)利要求】
1.一種計算機(jī),其包括: 編譯器或匯編器,其可操作以響應(yīng)于程序代碼而產(chǎn)生指令;以及 循環(huán)結(jié)束分支指令標(biāo)記功能,其可操作以指示終止代碼循環(huán)的條件分支指令。
2.根據(jù)權(quán)利要求1所述的計算機(jī),其中所述循環(huán)結(jié)束分支指令標(biāo)記功能可操作以產(chǎn)生唯一類型的分支指令來結(jié)束每一循環(huán)。
3.根據(jù)權(quán)利要求1所述的計算機(jī),其中所述循環(huán)結(jié)束分支指令標(biāo)記功能可操作以在結(jié)束循環(huán)的每一條件分支指令中插入循環(huán)結(jié)束指示符。
4.根據(jù)權(quán)利要求3所述的計算機(jī),其中所述循環(huán)結(jié)束指示符包括在所述條件分支指令操作碼中的一個或一個以上位。
5.一種編譯程序代碼的方法,其包括: 產(chǎn)生指令以響應(yīng)程序代碼;以及 標(biāo)記循環(huán)結(jié)束分支指令,以指示終止代碼循環(huán)的條件分支指令。
6.根據(jù)權(quán)利要求5所述的方法,其中所述循環(huán)結(jié)束分支指令標(biāo)記是用于結(jié)束每一循環(huán)的唯一類型的分支指令。
7.根據(jù)權(quán)利要求5所述的方法,其中所述循環(huán)結(jié)束分支指令標(biāo)記是在結(jié)束循環(huán)的每一條件分支指令中的循環(huán)結(jié)束指示符。
8.根據(jù)權(quán)利要求7所述的方法,其中所述循環(huán)結(jié)束指示符是在所述條件分支指令中的預(yù)定字段中的一個或一個以上位。
9.一種處理器,其包括: 分支預(yù)測器,其可操作以預(yù)測對條件分支指令的評估; 指令執(zhí)行管線,其可操作以基于來自所述分支預(yù)測器的預(yù)測以推測方式取得并執(zhí)行指令; 分支歷史寄存器(BHR),其經(jīng)配置以存儲所述對條件分支指令采用或不采用的評估;以及 控制電路,其在條件分支的分支目標(biāo)地址確定后,可操作以響應(yīng)于所述分支指令的性質(zhì)而抑制存儲所述對所述條件分支的評估。
10.根據(jù)權(quán)利要求9所述的處理器,其進(jìn)一步包括最后分支PC(LBPC)寄存器,所述LBPC寄存器可操作以存儲更新所述BHR的分支指令的PC,且其中所述控制電路可操作以在所述分支指令的PC與所述LBPC寄存器的內(nèi)容匹配時抑制存儲所述對條件分支指令的評估。
11.根據(jù)權(quán)利要求10所述的處理器,其進(jìn)一步包括多個LBPC寄存器,所述多個LBPC寄存器可操作以存儲更新所述BHR的多個分支指令的PC,且其中所述控制電路可操作以在所述分支指令的PC與任何LBPC寄存器的內(nèi)容匹配時抑制存儲所述對條件分支指令的評估。
12.根據(jù)權(quán)利要求9所述的處理器,其中所述控制電路可操作以在所述分支指令包含其為循環(huán)結(jié)束指令的指示時抑制存儲所述對條件分支指令的評估。
13.根據(jù)權(quán)利要求12所述的處理器,其中所述分支指令為循環(huán)結(jié)束指令的所述指示為指令類型 。
14.根據(jù)權(quán)利要求9所述的處理器,其中所述控制電路可操作以在分支指令目標(biāo)地址小于所述分支指令PC時抑制存儲所述對條件分支指令的評估。
15.—種設(shè)備,其包括: 硬件處理器,其可操作以響應(yīng)于程序代碼而產(chǎn)生指令;以及 其中所述代碼包括循環(huán)結(jié)束分支指令標(biāo)記功能,其可操作以指示終止代碼循環(huán)的條件分支指令,以此使用指示來阻止分支歷史寄存器(BHR)的更新,所述分支歷史寄存器(BHR)經(jīng)配置以存儲所述對條件分支指令采用或不采用的評估。
16.根據(jù)權(quán)利要求15所述的設(shè)備,其中所述循環(huán)結(jié)束分支指令標(biāo)記功能可操作以產(chǎn)生唯一類型的分支指令來結(jié)束每一循環(huán)。
17.根據(jù)權(quán)利要求15所述的設(shè)備,其中所述循環(huán)結(jié)束分支指令標(biāo)記功能可操作以在結(jié)束循環(huán)的每一條件分支指令中插入循環(huán)結(jié)束指示符。
18.根據(jù)權(quán)利要求17所述的設(shè)備,其中所述循環(huán)結(jié)束指示符包括在所述條件分支指令操作碼中的一個或一個以上位。
【文檔編號】G06F9/38GK103488463SQ201310409847
【公開日】2014年1月1日 申請日期:2006年2月24日 優(yōu)先權(quán)日:2005年2月24日
【發(fā)明者】博胡斯拉夫·雷赫利克 申請人:高通股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1