局部历史和全局分支预测的理解

本文探讨了超标量处理器设计中分支预测的重要性,对比了无分支预测与有分支预测的效率差异。重点介绍了局部历史分支预测和全局历史分支预测的原理,通过使用饱和计数器记录分支指令的历史结果来提高预测命中率。局部预测依赖于指令的PC,而全局预测则考虑所有跳转指令的全局历史,提升了预测准确性。
摘要由CSDN通过智能技术生成

在阅读了《超标量处理器设计》这本书中有关局部历史分支预测和全局历史分支预测的部分之后,刚开始对于它们之间的区别还有些疑问,后面经过查看资料和多次阅读,对它们有了一些理解,在此记录一下。

流水线中有无分支预测的比较

无分支预测
如果没有分支预测,在五级流水中,如果我们通过在DF(decode fetch)阶段添加比较器已经把分支相关指令(这里指beq)的实际执行阶段从EX(execute)阶段提前到DF阶段,这个做法就已将很好了。但当我们指令要跳转的话,那就需要浪费两个时钟周期。
有分支预测
如果一个分支指令在程序中的执行上下是有关系的,比如beq,它在一个程序中的执行可能呈现下面的结果。
在这里插入图片描述

我们可以通过一个通过分支预测,用两位的饱和计数器来记录指令beq的已经执行的结果来为即将要执行的beq做一个参考,这样就可以与上面无分支预测相比就可以提升命中概率(但是如果预测错误依然要浪费两个时钟周期)

局部历史分支预测与全局历史分支预测

局部历史分支预测:需要用指令(如beq)的PC中的k位去寻找一个n位的BHR(branch history register),其中n代表我们可以记录一个指令的n个历史结果,然后我们再根据这个历史结果,找到对应的PHT里饱和计数器的值val,根据val决定是否跳转
全局历史分支预测:与局部分支预测不同,全局历史分支预测会用GHR(Global history register)记录所有跳转指令(beq、bneq等)的结果,相当于和前面的相比就是把BHR换成GHR,其他的相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值