分支预测策略分为静态分支预测和动态分支预测,静态分支预测通过检查程序行为和利用程序早期执行收集到的信息预测分支;动态分支预测使用程序执行时的执行历史进行预测。
饱和计数器预测器
两级自适应预测器
PAg(基于local history),GAg(基于global history),gshare [1](基于global history)
第一级历史存储在branch history register(BHR),记录最近执行分支的结果;第二层存储在pattern history table(PHT),每个表项目是一个2-bits的饱和计数器,存储分支最可能的方向。如果每个分支有一个BHR,这种预测器称为per-address predictor(PAg);如果只有一个记录所有分支的BHR,这种预测器称为 global predictor(GAg)。
gshare predictor:把全局分支历史和分支地址进行异或,共同索引PHT。
LGshare branch predictor
inter-branch correlation:不同分支间的相关性
intra-branch correlation:同一分支历史间的相关性
LGshare包括一个n-bits 全局历史BHR,每个分支一个m-bits局部历史BHR,每次预测时将索引得到的局部历史项和全局历史项相连接,与分支地址异或索引PHT。
参考文献
[1] M C FARLING, S.: ‘Combining branch predictors’. Technical Report TN-36, Digital Western Research Laboratory, June 1993