分支預測(Branch Prediction)

來源:互聯網
上載者:User

分支預測(Branch Prediction):

  從P5時代開始的一種先進的,解決處理分支指令(if-then-else)導致流水線失敗的資料處理方法,由CPU來判斷程式分支的進行方向,能夠加快運算速度。

當包含流水線技術的處理器處理分支指令時就會遇到一個問題,根據判定條件的真/假的不同,有可能會產生轉跳,而這會打斷流水線中指令的處理,因為處理器無法確定該指令的下一條指令,直到分支執行完畢。流水線越長,處理器等待的時間便越長,因為它必須等待分支指令處理完畢,才能確定下一條進入流水線的指令。

  分支預測技術便是為解決這一問題而出現的。

  分支預測技術包含編譯時間進行的靜態分支預測和硬體在執行時進行的動態分支預測。

靜態分支預測

  最簡單的靜態分支預測方法就是任選一條分支。這樣平均命中率為50%。更精確的辦法是根據原先啟動並執行結果進行統計從而嘗試預測分支是否會跳轉。

  任何一種分支預測策略的效果都取決於該策略本身的精確度和條件分支的頻率。

動態分支預測

  動態分支預測是近來的處理器已經嘗試採用的的技術。最簡單的動態分支預測策略是分支預測緩衝區(Branch Prediction Buff)或分支曆史表(branch history table)。

 1.分支指令預測
在程式中一般都包含有分支轉移指令,據統計,平均每七條指令中就有一條是分支轉移指令.在指令流水線結構中,對於分支轉移指令相當敏感。假設在80486 的指令流水線中的第一條指令已進入到解碼階段,而第二條指令已進入到提取階段(準備進入解碼器),如果發現第一條指令是分支指令(如跳轉到某個地址),則指令預取隊列中下一條及下下條等指令預取無效。這時(確切地說,等到第一條指令執行期間形成了分支的目標地址),需從目標地址中現取指令,並交付執行,同時應立即清除指令預取隊列,再將目標地址後面的指令預取過來填到隊列中。這表明,一遇到分支指令,整個指令流水線就被打亂一次,稍後才能恢複到正常。顯然,這影響了機器的運行速度。為此,在Pentium處理器中使用了分支目標緩衝器(Branch Target Buffer,BTB)來預測分支指令。
BTB實際是一個能存若干(通常為256或512)條目的地址儲存組件。當一條分支指令導致程式分支時,BTB就記下這條指令的目標地址,並用這條資訊預測這一指令再次引起分支時的路徑,預先從該處預取。下面看一下BTB在迴圈程式中應用。迴圈程式在程式設計中使用得十分普遍。在指令級目標程式中構成迴圈程式需要用轉移指令(條件轉移指令或無條件轉移指令)。看下例:
MOV CX.100
LOOP: ……
……
DEC CX
JNZ LOOP
……
在第一次執行到JNZ指令時,預測的轉移地址是存在BTB中的前面一條JNZ指令的目標地址,不是LOOP,這一次預測是錯誤的。但執行後目標地址 LOOP便存入到BTB中。等到下一次執行到JNZ指令,就按BTB中的內容來預測,轉移到LOOP,這是正確的。如此,一直到cx的值變為0之前,也都是對的。當再迴圈一次CX的值變為0時,JNZ指令因條件不成立而不實行轉移,而預測仍是LOOP,預取仍按該預測進行,這是第二次預取錯誤。可見,該例中100次迴圈,有98次預測,確切地說,有98次預測指導下的預取是正確的。同理,對於1000次迴圈,就會有998次的預取是正確的。即迴圈次數越多,BTB帶來的效益就越高。

2.推測執行與動態分支預測
推測執行技術又稱預測執行技術。它的基本思想是:在取指階段,在局部範圍內預先判斷下一條待取指令最有可能的位置,即在取指組件就具有部分執行功能,以便取指的分支預測,保證取指組件所取的指令是按照指令代碼的執行順序取入,而不是完全按照程式指令在儲存空間中的存放順序取入。
動態分支預測是推測執行的一種具體做法,它是相對靜態分支預測而言的。靜態分支預測在指令到了解碼器,進行解碼時,利用BTB中目標地址資訊預測分支指令的目標地址(如Pentium處理器那樣);而動態分支預測的預測發生在解碼之前,即對指令緩衝器(與8086、80386的指令預取隊列基本相同,但有區別。)中尚未進入解碼器中的那部分標明每條指令的起始和結尾,並根據BTB中的資訊進行預測,這樣發現分支指令要早。因此,對動態分支預測,一旦預測有誤,已進入到流水線中需要清除的指令比靜態分支預測時要少,從而提高了CPU的運行效率

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.