预测饱和计数器中的迟滞位(hysteresis bit)

迟滞位的提出则是基于以下思考:

        一直以来在大多数分支预测器的设计中默认使用 2-bit 饱和计数器进行预测。之所以选取2-bit,是因为使用2-bit预测效果比一位更好,而使用超过2-bit也并不能获得可观的改进效果。

        是否存在一个k-bit 的计数器,其中1<k<2,其预测效果不逊于2-bit计数器,例如,一个1.4-bit的计数器。当然,不可能实现一个1.4位的计数器,但如果几个计数器共享某些位,从开销上来讲二者是一致的。

        2-bit 计数器的每一位在预测中扮演着不同的角色。高位称之为方向位,即跟踪分支的方向,由该位判定预测方向;低位则提供一个迟滞,以防止发生错误预测时方向位立即改变预测方向,称该位为“迟滞位”。

迟滞位作用原理:

如果一条分支指令偏向于跳转,使用一个单个的bit作为预测位时,在一次预测不跳转时就会造成两次错误预测:第一次是由于预测位预测跳转,但实际不跳转;第二次是由于上次预测错误后预测位变化为预测不跳转,而下次很大概率是跳转,则又预测错误。使用2-bit进行预测则可以有效避免这种错误预测。只有发生两次两次连续的错误预测时才会改变预测方向。

2-bit 饱和计数器的两种FSM:

        在图(a)中,高位表示预测位,低位则没有特定含义,当低位与高位相同时表示是强预测。

        在图(b)中,高位表示预测位,低位反映了预测强度,当低位为1时表示是强预测。称这种状态机为split counter,因为即使当迟滞位与方向位分开时,状态的强度仍然可以直接从迟滞位反映。如果2-bit计数器中倾向于偏向强状态,则迟滞位可能可以由其他不同的分支共享。

        实验表明,分支预测计数器在超过90%的预测中保持在某个强预测状态。由此表明,使用2-bit计数器进行预测实际是过度的。文献【1】中测定了每个计数器使用0.44-bit迟滞位时可获得使用2-bit迟滞位时相同的效果

共享的分裂计数器(SSC)

传统的2-bit计数器方向位和迟滞位存储在同一SRAM中,在SSC中,方向位和迟滞位分别存储在不同的SRAM中,如图4所示。而当二者分开存储时,其项数就不必完全相等了。例如,当2个计数器共享一个迟滞位时,迟滞位的项数就是方向位项数的一半。

 这样做的弊端则是会产生分支别名效应。


 参考文献

【1】Exploiting Bias in the Hysteresis Bit of 2-bit Saturating Counters in Branch Predictors.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值