1. 程式人生 > >分支預測之方向預測

分支預測之方向預測

(1)BTB

      分支目標快取( BTB,Branch Target Buffer)技術是指使用容量有限的快取儲存最近執行過的分支指令的PC值,以及它們的跳轉目標地址。對於後續需要取指的每條PC值,將其餘BTB中儲存的各個PC值進行比較,如果出現匹配,則預測這是一條分支指令,並使用其對應儲存的跳轉目標地址作為預測的跳轉地址。

(2)RAS(Return address stack,RAS)技術是指使用容量有限的硬體堆疊來儲存呼叫函式的返回地址。以RISC-V架構為例,間接跳轉/分支可以在函式呼叫和返回。而函式的呼叫和返回在程式中往往是承兌出現的,因此可以在函式呼叫(使用分支跳轉指令)時將當前PC值加4(或者2)。即其順序執行的下一條指令的PC值壓入RAS堆疊中,等到函式返回(使用函式分支跳轉指令)時將RAS中的值彈出,這樣就可以快速的為該函式返回的分支跳轉指令預測目標。只要程式是在正常執行,其函式的呼叫和返回成對出現,那麼RAS便能夠提供較高的預測準確率。由於RAS的深度有限,如果程式中出現很多次數函式巢狀,需要不斷地壓入堆疊,造成堆疊溢位,則會影響到預測準確率,硬體需要特殊處理該情形。

(3)Indirect BTB

間接BTB(Indirect BTB)是指專門為間接跳轉、分支指令而設計的BTB,它與普通BTB類似,儲存較多歷史目標地址,但是通過高階的索引方式進行匹配(而不是簡單的PC值比較)。結合BTB和動態兩級預測器的技術,能夠提供較高跳轉目標地址測試成功率。