第 6 章:全局历史预测
学习目标
- 理解全局历史
- 实现 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%!