來源知乎:CPU的分支預測器是如何工作的?
發布時間:2014-08-26 責任編輯:sherryyu
【導讀】在CPU中(zhong)的(de)分(fen)支(zhi)預(yu)測(ce)器(qi)是(shi)具(ju)體(ti)在(zai)哪(na)個(ge)位(wei)置(zhi)?形(xing)態(tai)大(da)概(gai)是(shi)怎(zen)樣(yang)的(de)?它(ta)是(shi)怎(zen)麼(me)起(qi)到(dao)作(zuo)用(yong)的(de)?如(ru)果(guo)預(yu)測(ce)失(shi)敗(bai)它(ta)又(you)是(shi)怎(zen)樣(yang)繞(rao)過(guo)已(yi)經(jing)失(shi)敗(bai)的(de)預(yu)測(ce)從(cong)而(er)增(zeng)加(jia)重(zhong)新(xin)預(yu)測(ce)的(de)成(cheng)功(gong)率(lv)的(de)?小(xiao)編(bian)綜(zong)合(he)收(shou)集(ji)的(de)資(zi)料(liao)一(yi)一(yi)回(hui)答(da)這(zhe)些(xie)問(wen)題(ti)。
1.位置:分支預測器位於整個CPU核(he)心(xin)流(liu)水(shui)線(xian)的(de)差(cha)不(bu)多(duo)最(zui)前(qian)端(duan)部(bu)分(fen),也(ye)就(jiu)是(shi)靠(kao)近(jin)一(yi)級(ji)指(zhi)令(ling)緩(huan)存(cun)的(de)位(wei)置(zhi)。從(cong)指(zhi)令(ling)緩(huan)存(cun)裏(li)麵(mian)讀(du)取(qu)指(zhi)令(ling)時(shi),需(xu)要(yao)由(you)分(fen)支(zhi)預(yu)測(ce)器(qi)來(lai)判(pan)斷(duan)從(cong)哪(na)裏(li)讀(du)取(qu)。
2.形態:分支預測器主要由兩個大塊組成(教科書上有可能不是這樣分),其(qi)中(zhong)一(yi)塊(kuai)是(shi)曆(li)史(shi)記(ji)錄(lu)表(biao),記(ji)錄(lu)以(yi)往(wang)執(zhi)行(xing)過(guo)的(de)分(fen)支(zhi)指(zhi)令(ling)的(de)偏(pian)向(xiang)情(qing)況(kuang),幫(bang)助(zhu)未(wei)來(lai)的(de)預(yu)測(ce),本(ben)質(zhi)上(shang)也(ye)是(shi)一(yi)塊(kuai)高(gao)速(su)緩(huan)存(cun)。另(ling)一(yi)塊(kuai)是(shi)預(yu)測(ce)器(qi)的(de)邏(luo)輯(ji)部(bu)分(fen),這(zhe)一(yi)部(bu)分(fen)用(yong)來(lai)維(wei)護(hu)記(ji)錄(lu)表(biao),依(yi)據(ju)記(ji)錄(lu)表(biao)裏(li)麵(mian)的(de)記(ji)錄(lu)情(qing)況(kuang)預(yu)測(ce)將(jiang)來(lai)的(de)分(fen)支(zhi)走(zou)向(xiang)。
3.預測方法舉例。比(bi)如(ru)說(shuo)有(you)一(yi)條(tiao)分(fen)支(zhi)指(zhi)令(ling),執(zhi)行(xing)了(le)十(shi)幾(ji)次(ci)都(dou)是(shi)跳(tiao)轉(zhuan),那(na)麼(me)預(yu)測(ce)器(qi)就(jiu)會(hui)判(pan)斷(duan),將(jiang)來(lai)碰(peng)到(dao)這(zhe)條(tiao)指(zhi)令(ling)時(shi),它(ta)仍(reng)舊(jiu)會(hui)跳(tiao)轉(zhuan)。當(dang)這(zhe)條(tiao)指(zhi)令(ling)的(de)預(yu)測(ce)結(jie)果(guo)連(lian)續(xu)兩(liang)次(ci)出(chu)錯(cuo)的(de)時(shi)候(hou),預(yu)測(ce)器(qi)就(jiu)會(hui)調(tiao)整(zheng)自(zi)己(ji)的(de)預(yu)測(ce)結(jie)果(guo),改(gai)為(wei)判(pan)斷(duan)它(ta)不(bu)跳(tiao)轉(zhuan)。這(zhe)一(yi)預(yu)測(ce)方(fang)法(fa)是(shi)現(xian)今(jin)仍(reng)在(zai)沿(yan)用(yong)的(de)2-bit計數器陣列,源於前CDC公司的JamesSmith(現為WISC-Madison的榮譽教授)在上世紀80年代初左右的發明,實測結果表明它的預測準確率基本上能到80%甚至90%上下。
4.後記:到了九十年代初期,這個圈子裏一個叫做YalePatt的大牌教授引領了幾乎十年的分支預測研究浪潮,他們做的預測器比JamesSmith的先進很多,被稱為自適應預測,可以捕捉住更多的分支曆史模式。(在Patt手下做預測的那個博士生Tse-YuYeh後來參加一個學術會議,Intel的人看到了他們做的東西,直接把人給挖走了,那個預測器用在了P6微結構裏麵,後來Tse-YuYeh離開Intel到了PASemi,現在好像是在Apple的CPU設計團隊。)
後來又有很多人加入進來做分支預測的研究,做出了關聯性分支預測、fanhuizhanyucedengdengfeichangbangdeyuceqi,xianzaidefenzhiyuceqijiegoutongchangshijingbiaosaishidefuhefenzhiyuceqi,birudangguanlianxingfenzhiyuceqidejinqizhunquelvbijiaogaoshi,youxiancaiyongta,ruguoyouqitayuceqidejinqizhunquelvgenggao,jiufangqita。houlaideyanjiuyuelaiyuejingxi,zhenduifenzhiyucezuolehenduohenduodetiaoyou,birushuoruhezaiyouxiandekongjianlimianjinkenengjianshaodaliangfenzhizhilingduilishijilubiaodezhengqiang、嚐(chang)試(shi)對(dui)分(fen)支(zhi)指(zhi)令(ling)進(jin)行(xing)分(fen)類(lei),每(mei)一(yi)類(lei)使(shi)用(yong)專(zhuan)門(men)的(de)預(yu)測(ce)器(qi)進(jin)行(xing)預(yu)測(ce)等(deng)等(deng),現(xian)在(zai)的(de)分(fen)支(zhi)預(yu)測(ce)器(qi)非(fei)常(chang)強(qiang)大(da),麵(mian)對(dui)各(ge)種(zhong)各(ge)樣(yang)的(de)程(cheng)序(xu),預(yu)測(ce)準(zhun)確(que)率(lv)都(dou)能(neng)非(fei)常(chang)堅(jian)挺(ting)地(di)保(bao)持(chi)在(zai)95%以上。
微結構上的推測執行技術有很多種,分支預測引領的控製流相關的推測執行可能是其中最成功的一種。
[page]
附:分支預測圖解,從簡單到最複雜的:

這個是最簡單的分支預測,根據當前指令的地址,放進PHT中,根據右邊的這張狀態機,來確定是跳轉還是不跳轉。優勢:簡單,具有相當的準確性。

兩級預測
這個預測機構比較複雜,擁有兩級分支,相比之前的方法,加入了BHT,可以根據指令地址,記錄一部分曆史記錄,然後再放進PHT中,決定跳轉還是不跳轉。優點在於可以記錄下某一些跳轉的關係,加強聯係。

混合預測,集合了上麵兩個的優點,加上自己設定的選擇器。
keyifangbiandekandao,jibenshangsuoyoudeyucejizhidoushitongguoyiwangdelishijilulaijiaqianghuozhexueruotiaozhuanguanxi。diyizhongfangfahenzhijie,yongyigezhuangtaijilaimiaoshulezhenggejizhi。diergefangfashenzhizaidiyigedejichushangjiluleN多個跳轉的記錄。
判斷出是否跳轉之後,CPU需要知道跳轉到哪裏,因為不是每次跳轉的位置都是一樣的。所以在預測的基礎上又加上了BTB整個東西,這個東西記錄了之前跳轉的地址,因此CPU可以不計算跳轉的地址,直接預先load指令,如果出錯的話,將會刷新BTB,並且flush所有指令,重新load。
BTB的結構如下:

BTB的工作方式如下:

那麼如果將這些所有的東西結合到CPU的流水線上,將會變成如下的流程:

特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 算力爆發遇上電源革新,大聯大世平集團攜手晶豐明源線上研討會解鎖應用落地
- 築基AI4S:摩爾線程全功能GPU加速中國生命科學自主生態
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
微波功率管
微波開關
微波連接器
微波器件
微波三極管
微波振蕩器
微電機
微調電容
微動開關
微蜂窩
位置傳感器
溫度保險絲
溫度傳感器
溫控開關
溫控可控矽
聞泰
穩壓電源
穩壓二極管
穩壓管
無焊端子
無線充電
無線監控
無源濾波器
五金工具
物聯網
顯示模塊
顯微鏡結構
線圈
線繞電位器
線繞電阻



