实验:分支预测命中率估计

实验目标

  • 观察不同分支序列下,1 位/2 位饱和计数器的预测命中率差异。

实验思路

  • 生成两类分支序列:规律性(如循环 9 次取、1 次不取)与随机序列。
  • 用 Python/C 实现两种预测器,统计命中率。
// 2 位饱和计数器(00 强不取、01 弱不取、10 弱取、11 强取)
int predict_update(int state, int taken) {
    int prediction = state >= 2; // 10/11 预测取
    if (taken) state = state == 3 ? 3 : state + 1;
    else state = state == 0 ? 0 : state - 1;
    return (prediction == taken);
}

结果分析

  • 规律性序列上,2 位计数器明显优于 1 位;
  • 强相关随机序列,简单预测器仍可获得一定命中率;完全随机则接近 50%。