RISC-V是加州大学伯克利分校(University of California at Berkeley,以下简称UCB)设计并发布的一种开源精简指令集架构,其目标是成为指令集架构领域的Linux,应用覆盖IoT(Internet of Things)设备、桌面计算机、高性能计算机等众多领域[1]。RISC-V自2014年正式发布以来,受到了包括谷歌、IBM、Oracle等在内的众多企业以及包括剑桥大学、苏黎世联邦理工大学、印度理工学院、中国科学院在内的众多知名学府与研究机构的关注和参与,围绕RISC-V的生态环境逐渐完善,并涌现了众多开源处理器及SoC采用RISC-V架构。Rocket就是采用RISC-V指令集的开源处理器,本文研究分析了Rocket处理器中分支预测机制的实现原理,并对其性能进行了测试评估。
将分支指令的地址取出n bit,与分支历史移位寄存器(BHSR:Branch History Shift Register)的n bit进行异或运算,运算结果作为索引,查询模式历史表(PHT:Pattern History Table),PHT中使用的是2bit饱和计数器,其状态变化如图2所示。如果查询的结果是00或者01,那么预测分支不发生,如果查询的结果是10或者11,那么预测分支发生。根据分支指令实际运行结果更新BHSR、PHT的相关内容。