实验:分支预测命中率估计
实验目标
- 观察不同分支序列下,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%。