体系结构笔记------动态分支预测
静态分支预测
这种方法是直接固定选取分支中的一支,有50%的平均命中率,精度不高适应性几乎没有,但是实现简单。
动态分支预测
在程序运行时,根据分支指令过去的表现来预测其将来的行为。
如果分支行为发生了变化,预测结果也跟着改变;以保证有更好的预测准确度和适应性;
分支预测的有效性取决于:预测的准确性,预测正确和不正确两种情况下的分支开销;
决定分支开销的因素:流水线的结构,预测的方法,预测错误时的恢复策略等。
动态分支预测技术的目的:预测分支是否成功,尽快找到分支目标地址(或指令),避免控制相关造成流水线停顿。
在预测错误时,要作废已经预取和分析的指令,恢复现场,并从另一条分支路径重新取指令
分支历史表BHT
最简单的动态分支预测方法;
用BHT来记录分支指令最近一次或几次的执行情况(成功或不成功),并据此进行预测;
1位预测位
只记录最近一次的分支运行情况,BHT中只需要1位二进制位(最简单)。
2位预测位
两位预测位可以记录分支的运行情况,还可以记录预测的情况。其状态转换图如下: