lab2 Report
|Last edited: 2024-12-5

参数设置

根据对于gem5内Bi-mode分支预测器代码的阅读,Choice Table,Taken Table,Not Taken Table的entry数均为8192,饱和计数器为2比特,估算其占用内存约为:
故我根据论文内进行性能比较表的8KB一级进行了Perceptron预测器的实现:即历史长度为34,这样反推Perceptron表的Entry数约为
其中35为权重数(w0-w34),为权重所需比特数。
为了整齐,我选取Entry数为256。
 

使用CPU为o3,内存为DDR4,运行结果如下:

 
各个分支预测器在SPFA和Shell_Sort程序下的分支预测错误数如下表:
程序\预测器种类
Perceptron
LocalBP
Bimode
Tournament
Simple
SPFA
1074265
1267591
1199199
1197690
2557950
Shell_Sort
1575588
2261076
1637986
1638295
6477466
SPFA的总分支预测数为:5668869;Shell_Sort的总分支预测数为:11442215
计算预测准确率后结果如下图:
notion image
 
各个分支预测器在SPFA和Shell_Sort程序下的IPC如图:
程序\预测器种类
Perceptron
LocalBP
Bimode
Tournament
Simple
SPFA
0.045850
0.043034
0.045364
0.045334
0.031101
Shell_Sort
0.050763
0.048646
0.049497
0.049331
0.040382
绘制图像:
notion image
可以看到分支预测准确率和IPC是自洽的:因为当分支预测失败时会导致流水线执行flush,浪费若干个时钟周期,所以分支预测准确率高的分支预测器对应的IPC也高。
 
Loading...