RISC-V MCU中文社区

【分享】 分支预测介绍

发表于 全国大学生集成电路创新创业大赛 2023-05-26 16:25:17
0
1909
0

小组名:啊啊对对对队
报名编号:CICC2400

1、静态预测
在原始的蜂鸟E203内核中采用的是静态预测方法BTFN预测,即对带条件直接跳转指令Bxx指令,如果跳转地址小于当前分支指令的PC值小,则预测为跳转,否则预测为不跳转。这种预测方法虽然简单,但预测成功率低。
2、2 bit 饱和计数器预测技术
用2比特的状态机储存之前的分支跳转信息,预测是否进行跳转取决于状态机的最高位,为1就预测跳转,为0就预测不跳转。状态转移图如下图所示。

3、两级预测器
两级分支预测器,也被称为基于关联的分支预测器,使用一个二维的计数器表,也称为 “模式历史表”。该表的条目是两位数的计数器。如果一个if语句被执行三次,第三次执行时的决定可能取决于前两次是否被采纳。在这种情况下,两级自适应预测器比饱和计数器更有效地工作。饱和计数器不能很好地预测每隔一段时间就进行的条件性跳转或其他有规律的重复出现的模式。两级自适应预测器记住了分支最后n次出现的历史,并对可能的2n种历史模式各使用一个饱和计数器。这种方法在下图中得到说明。

4、混合预测器
Gshare预测器,对PHT中的索引函数进行随机化,使得两个分支映射到同一条目的概率降低。Gshare预测器的做法是将PC值和分支历史进行一个哈希运算。这样做更高效地利用PHT,并且包含了更多的上下文信息。

5、锦标赛预测器
如下图所示,一个锦标赛预测器使用分支地址来索引一组2位选择计数器,在本地和全局预测器之间进行选择。在这种情况下,选择器表的索引是当前分支地址。这两个表也是2位预测器,分别以全局历史和分支地址为索引。选择器的作用就像一个2位预测器,当连续发生两个错误预测时,改变分支地址的预设预测器。用于索引选择器表和本地预测器表的分支地址的位数,等于用于索引全局预测表的全局分支历史的长度。

参考文献
https://en.wikipedia.org/wiki/Branch_predictor#Loop_predictor
Hennessy J L, Patterson D A. Computer architecture: a quantitative approach[M]. Elsevier, 2011.

喜欢0
用户评论
梦游者

梦游者 实名认证

苦修e203

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板