3 Rocket处理器分支预测机制分析
3.1 分支预测机制设计分析
Rocket处理器除了实现BTB、BHT,还实现了RAS,都在BTB Module中实现,BTB Module的接口以及与Rocket Core的连接如图3所示。
Rocket处理器主要在流水线的取指、访存两个阶段使用到BTB Module。
3.1.1 取指阶段
将取指阶段的指令地址通过Req送到BTB Module,后者进行如下判断:
(1)查询BTB,是否有对应的指令地址,如果有,那么进行下一步骤;
(2)如果是返回指令,那么将RAS堆栈顶部的数据返回,作为目标地址;反之,进行下一步骤;
(3)如果是jal、jalr这两条绝对转移指令,那么设置taken为true,表示转移发生,目标地址是BTB查询的结果;反之,进行下一步骤;
(4)按照图1进行查询,依据BHT的查询结果,判断是否发生转移,如果转移,那么设置taken为true,转移目标地址为BTB查询的结果,反之,设置taken为false。无论是否转移,均更新BHT中的BHSR。
(5)将上述判断结果通过resp返回给Rocket Core,后者据此决定下一条指令的地址。
上述处理过程如图4所示。