lab2 Report
参数设置
根据对于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
计算预测准确率后结果如下图:
各个分支预测器在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 |
绘制图像:
可以看到分支预测准确率和IPC是自洽的:因为当分支预测失败时会导致流水线执行flush,浪费若干个时钟周期,所以分支预测准确率高的分支预测器对应的IPC也高。