The YAGS Branch Prediction Scheme(1998)

YAGS:Yet Another Global Scheme

在PHT中引入了 tags ,在不牺牲关键分支结果信息的前提下减少混叠。

两级自适应的全局预测策略对整数程序效果最好,因为整数程序中由大量的 if-else 指令,而这些if-else指令通常高度相关。

限制上述策略预测率的主要问题是通过历史和地址位映射到PHT中同一项,即混叠。本文中将混叠分为如下两种:

  • 中性混叠:具有相同信息但结果不同的分支发生混叠。
  • 破坏性混叠:具有不同信息且结果不同的分支发生混叠。

1  之前的工作中降低混叠的方法

  • Gshare:将地址和分支历史异或索引PHT,但几乎没什么用。
  • The Agree Predictor[1]:对于每个分支,在写入BTB前,根据分支方向在BTB中设置要给偏置位。相应的,PHT信息由“taken/not taken”变为是否“agree/disagree”偏置位的预测。其思想是绝大多数分支的跳转具有很强的偏向性,(假设)当第一次某分支历史写入BTB是就是其偏向的结果时,PHT中大多数项都将为“agree”,从而即使发生混叠也不会导致错误预测。但并非所有分支第一次的方向就是其偏向,且若分支不在BTB则无法预测。
  • The Bi-Mode Predictor[2]:将PHT分为若干部分,一部分是选择PHT,这部分只是一个双模态预测器;另外两部分是方向PHT:一个”taken“ 方向PHT,一个”not taken“方向PHT。对于每个分支,先根据其地址索引选择PHT,再根据选择PHT的指示索引”taken“方向PHT或”not taken“方向PHT,这部分索引则是通过地址和分支历史异或生成。其中,方向PHT由地址和分支历史异或索引。更新策略:只有选择PHT所选择的方向PHT被更新。选择PHT通常也会更新,但如果它给出的预测与分支结果相矛盾,并且PHT选择的方向PHT给出了正确的预测,则不会更新(例如:选择了taken的方向PHT,但该PHT项计数器预测为not taken,这种情况下,虽然选择的方向与最终执行方向不同,但最终得到的预测结果时正确的,因此无需更新选择PHT)。在这种策略下,具有”taken“或”not taken“偏向性的分支的预测信息分别存储在两个方向PHT中,从而存储在两个方向PHT中的信息总是”taken/not taken“,即使发生混叠大多数情况下也不是破坏性混叠。

 

  •  The Skewed Branch Predictor[3]:基于“精确冲突与映射函数紧密相关”的观察结果。最好的减少冲突混叠的方法是在PHT中设置tag保证一致性,但这样做并不划算,因此在Skewed Branch Predictor中通过一个特别的倾斜函数来模拟实现一致性。基本原理:使用3个预测bank,通过相同的分支信息向量 V,采用不同的哈希函数计算索引,由投票器选出最终的预测方向。由于每个bank使用不同的哈希函数进行索引,则若信息向量 V 和 W 在一个bank中发生混叠,则二者同时在其余bank发生混叠的概率较低,则最终获得的总体预测可能仍是正确的。更新策略:如果预测错误,则更新所有bank;如果预测正确,则只更新做出正确预测的bank。

  • The Filter Mechanism[4]:核心思想是减少PHT中存储的冗余信息。基本原理:将具有高度偏置性的分支从PHT中分离出去,在BTB中设置一个1-bit的偏置位和一个饱和计数器。当一个分支信息引入BTB时,偏置位被设为分支方向并初始化计数器(初始化为最大值,这样过滤机制会立刻开始工作)。对于每个分支实例,如果其实际方向与偏置位相同,则计数器加1,否则计数器归0,并切换偏置位。当计数器未饱和,通过PHT预测分支,当计数器饱和,则采用偏置位作为预测结果。当计数器饱和时,不再更新PHT,从而将分支从PHT中过滤出去。该机制会错误预测具有高度偏置型的分支的非偏置实例。

 2  YAGS

结合上述四种预测器的优点:将PHT分为几部分、考虑具有偏置性的分支中的非偏置实例、减少PHT中的冗余信息。

思路:对于每个分支,除了保存其偏置方向,还要保存其非偏置实例。

结构:使用一个双模态预测器来存储偏置方向,在方向PHT上存储分支中不符合偏置的实例。从而减少了方向PHT上存储的信息量。为了在方向PHT中识别这些实例,在每项中添加tag(分支地址某几位)。

预测:对于每个分支指令,访问选择PHT,如果选择PHT指示”taken“(以此为例),则需访问”not taken“方向PHT以检查当前是否为一个不符合偏置的特殊实例。如果在”not taken“方向PHT中未命中,则选择PHT的预测结果就是最终的预测结果(即taken);如果命中,则由”not taken“方向PHT提供预测。

更新:当某方向PHT的预测被使用,或未被使用但预测错误时,对其进行更新。

 

 参考文献

【1】AgreePredictor.pdf (cpb-us-w2.wpmucdn.com)

【2】1997.12.The-bi-mode-branch-predictor.pdf (umich.edu)

【3】michaud97trading.pdf (rit.edu)

【4】download;jsessionid=C105495176326F5AE24D6174E4053917 (psu.edu)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值