CPU的分支預(yù)測(cè)器是如何工作的?
出處:電子工程網(wǎng)那 發(fā)布于:2014-08-26 17:54:26
在CPU中的分支預(yù)測(cè)器是具體在哪個(gè)位置?形態(tài)大概是怎樣的?它是怎么起到作用的?如果預(yù)測(cè)失敗它又是怎樣繞過已經(jīng)失敗的預(yù)測(cè)從而增加重新預(yù)測(cè)的成功率的?小編綜合收集的資料一一回答這些問題。
1.位置:分支預(yù)測(cè)器位于整個(gè)CPU流水線的差不多前端部分,也就是靠近指令緩存的位置。從指令緩存里面讀取指令時(shí),需要由分支預(yù)測(cè)器來判斷從哪里讀取。
2.形態(tài):分支預(yù)測(cè)器主要由兩個(gè)大塊組成(教科書上有可能不是這樣分),其中一塊是歷史記錄表,記錄以往執(zhí)行過的分支指令的偏向情況,幫助未來的預(yù)測(cè),本質(zhì)上也是一塊高速緩存。另一塊是預(yù)測(cè)器的邏輯部分,這一部分用來維護(hù)記錄表,依據(jù)記錄表里面的記錄情況預(yù)測(cè)將來的分支走向。
3.預(yù)測(cè)方法舉例。比如說有一條分支指令,執(zhí)行了十幾次都是跳轉(zhuǎn),那么預(yù)測(cè)器就會(huì)判斷,將來碰到這條指令時(shí),它仍舊會(huì)跳轉(zhuǎn)。當(dāng)這條指令的預(yù)測(cè)結(jié)果連續(xù)兩次出錯(cuò)的時(shí)候,預(yù)測(cè)器就會(huì)調(diào)整自己的預(yù)測(cè)結(jié)果,改為判斷它不跳轉(zhuǎn)。這一預(yù)測(cè)方法是現(xiàn)今仍在沿用的2-bit計(jì)數(shù)器陣列,源于前CDC公司的JamesSmith(現(xiàn)為WISC-Madison的榮譽(yù)教授)在上世紀(jì)80年代初左右的發(fā)明,實(shí)測(cè)結(jié)果表明它的預(yù)測(cè)準(zhǔn)確率基本上能到80%甚至90%上下。
4.后記:到了九十年代初期,這個(gè)圈子里一個(gè)叫做YalePatt的教授引領(lǐng)了幾乎十年的分支預(yù)測(cè)研究浪潮,他們做的預(yù)測(cè)器比JamesSmith的先進(jìn)很多,被稱為自適應(yīng)預(yù)測(cè),可以捕捉住更多的分支歷史模式。(在Patt手下做預(yù)測(cè)的那個(gè)博士生Tse-YuYeh后來參加一個(gè)學(xué)術(shù)會(huì)議,Intel的人看到了他們做的東西,直接把人給挖走了,那個(gè)預(yù)測(cè)器用在了P6微結(jié)構(gòu)里面,后來Tse-YuYeh離開Intel到了PASemi,現(xiàn)在好像是在Apple的CPU設(shè)計(jì)團(tuán)隊(duì)。)
后來又有很多人加入進(jìn)來做分支預(yù)測(cè)的研究,做出了關(guān)聯(lián)性分支預(yù)測(cè)、返回棧預(yù)測(cè)等等非常棒的預(yù)測(cè)器,現(xiàn)在的分支預(yù)測(cè)器結(jié)構(gòu)通常是競標(biāo)賽式的復(fù)合分支預(yù)測(cè)器,比如當(dāng)關(guān)聯(lián)性分支預(yù)測(cè)器的近期準(zhǔn)確率比較高時(shí),優(yōu)先采用它,如果有其他預(yù)測(cè)器的近期準(zhǔn)確率更高,就放棄它。后來的研究越來越精細(xì),針對(duì)分支預(yù)測(cè)做了很多很多的調(diào)優(yōu),比如說如何在有限的空間里面盡可能減少大量分支指令對(duì)歷史記錄表的爭搶、嘗試對(duì)分支指令進(jìn)行分類,每一類使用專門的預(yù)測(cè)器進(jìn)行預(yù)測(cè)等等,現(xiàn)在的分支預(yù)測(cè)器非常強(qiáng)大,面對(duì)各種各樣的程序,預(yù)測(cè)準(zhǔn)確率都能非常堅(jiān)挺地保持在95%以上。
微結(jié)構(gòu)上的推測(cè)執(zhí)行技術(shù)有很多種,分支預(yù)測(cè)引領(lǐng)的控制流相關(guān)的推測(cè)執(zhí)行可能是其中成功的一種。
附:分支預(yù)測(cè)圖解,從簡單到復(fù)雜的:
1.

這個(gè)是簡單的分支預(yù)測(cè),根據(jù)當(dāng)前指令的地址,放進(jìn)PHT中,根據(jù)右邊的這張狀態(tài)機(jī),來確定是跳轉(zhuǎn)還是不跳轉(zhuǎn)。優(yōu)勢(shì):簡單,具有相當(dāng)?shù)臏?zhǔn)確性。
2.

兩級(jí)預(yù)測(cè)
這個(gè)預(yù)測(cè)機(jī)構(gòu)比較復(fù)雜,擁有兩級(jí)分支,相比之前的方法,加入了BHT,可以根據(jù)指令地址,記錄一部分歷史記錄,然后再放進(jìn)PHT中,決定跳轉(zhuǎn)還是不跳轉(zhuǎn)。優(yōu)點(diǎn)在于可以記錄下某一些跳轉(zhuǎn)的關(guān)系,加強(qiáng)聯(lián)系。
3.

混合預(yù)測(cè),集合了上面兩個(gè)的優(yōu)點(diǎn),加上自己設(shè)定的選擇器。
可以方便的看到,基本上所有的預(yù)測(cè)機(jī)制都是通過以往的歷史記錄來加強(qiáng)或者削弱跳轉(zhuǎn)關(guān)系。種方法很直接,用一個(gè)狀態(tài)機(jī)來描述了整個(gè)機(jī)制。第二個(gè)方法甚至在個(gè)的基礎(chǔ)上記錄了N多個(gè)跳轉(zhuǎn)的記錄。
判斷出是否跳轉(zhuǎn)之后,CPU需要知道跳轉(zhuǎn)到哪里,因?yàn)椴皇敲看翁D(zhuǎn)的位置都是一樣的。所以在預(yù)測(cè)的基礎(chǔ)上又加上了BTB整個(gè)東西,這個(gè)東西記錄了之前跳轉(zhuǎn)的地址,因此CPU可以不計(jì)算跳轉(zhuǎn)的地址,直接預(yù)先load指令,如果出錯(cuò)的話,將會(huì)刷新BTB,并且flush所有指令,重新load.
BTB的結(jié)構(gòu)如下:

BTB的工作方式如下:

那么如果將這些所有的東西結(jié)合到CPU的流水線上,將會(huì)變成如下的流程:

版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 主流存儲(chǔ)技術(shù)核心特性與場(chǎng)景化應(yīng)用概述2026/1/13 11:12:42
- 主流存儲(chǔ)技術(shù)特性與場(chǎng)景化選型指南2026/1/7 10:07:41
- MES系統(tǒng)現(xiàn)場(chǎng)部署與數(shù)據(jù)對(duì)接實(shí)操指南2025/12/29 11:09:41
- eMMC 屬于閃存還是內(nèi)存?從定義到應(yīng)用講透核心區(qū)別2025/9/15 15:24:16
- ddr4和ddr5內(nèi)存接口一樣嗎?全景解析2025/9/8 17:22:03
- 高速PCB信號(hào)完整性(SI)設(shè)計(jì)核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計(jì)算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對(duì)系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計(jì)
- 連接器耐腐蝕性能測(cè)試方法
- PCB電磁兼容(EMC)設(shè)計(jì)與干擾抑制核心實(shí)操規(guī)范
- 用于相位噪聲測(cè)量的低通濾波器設(shè)計(jì)與本振凈化技術(shù)
- MOSFET在高頻開關(guān)中的EMI問題
- 電源IC在便攜式設(shè)備中的設(shè)計(jì)要點(diǎn)
- 連接器結(jié)構(gòu)設(shè)計(jì)常見問題分析









