來源知乎:CPU的分支預測器是如何工作的?
發布時間:2014-08-26 責任編輯:sherryyu
【導讀】在CPUzhongdefenzhiyuceqishijutizainageweizhi?xingtaidagaishizenyangde?tashizenmeqidaozuoyongde?ruguoyuceshibaitayoushizenyangraoguoyijingshibaideyucecongerzengjiazhongxinyucedechenggonglvde?xiaobianzongheshoujideziliaoyiyihuidazhexiewenti。
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的de2-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、changshiduifenzhizhilingjinxingfenlei,meiyileishiyongzhuanmendeyuceqijinxingyucedengdeng,xianzaidefenzhiyuceqifeichangqiangda,mianduigezhonggeyangdechengxu,yucezhunquelvdounengfeichangjiantingdibaochizai95%以上。
微結構上的推測執行技術有很多種,分支預測引領的控製流相關的推測執行可能是其中最成功的一種。
[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
熱門搜索



