分支預測
分支預測
分支預測(Branch Prediction):從P5時代開始的一種先進的,解決處理分支指令(if-then-else)導致流水線失敗的數據處理方法,由CPU來判斷程序分支的進行方向,能夠加快運算速度。
當包含流水線技術的處理器處理分支指令時就會遇到一個問題,根據判定條件的真/假的不同,有可能會產生跳轉,而這會打斷流水線中指令的處理,因為處理器無法確定該指令的下一條指令,直到分支執行完畢。流水線越長,處理器等待的時間便越長,因為它必須等待分支指令處理完畢,才能確定下一條進入流水線的指令。
分支預測技術便是為解決這一問題而出現的。
分支預測技術包含編譯時進行的靜態分支預測和硬體在執行時進行的動態分支預測。
最簡單的靜態分支預測方法就是任選一條分支。這樣平均命中率為50%。更精確的辦法是根據原先運行的結果進行統計從而嘗試預測分支是否會跳轉。
任何一種分支預測策略的效果都取決於該策略本身的精確度和條件分支的頻率。
動態分支預測是近來的處理器已經嘗試採用的的技術。最簡單的動態分支預測策略是分支預測緩衝區(Branch Prediction Buff)或分支歷史表(branch history table)。