学习目标

  • 理解全局历史
  • 实现 GShare 预测器
  • 提升预测准确率

6.1 思考:分支之间有关联吗?

if (a > 0) {      // 分支 1
    if (b > 0) {  // 分支 2:依赖分支 1
        ...
    }
}

分支 2 的行为与分支 1 相关!

6.2 全局历史寄存器

reg [7:0] ghr;  // 记录最近 8 个分支结果

always @(posedge clk) begin
    if (branch_commit)
        ghr <= {ghr[6:0], taken};
end

6.3 GShare 预测器

wire [7:0] index = pc[9:2] ^ ghr;
wire predict = pht[index][1];

用 PC 和全局历史异或作为索引!

思考:为什么要异或?

6.4 效果

准确率可达 ~90%!

下一步

第 7 章:BTB 和 RAS

更新时间: