计算机系统结构课内实验》实验报告
班级:计算机 15 班 姓名 :高君宇 学号: 2110505112 日期: 2014.5.7
动态分支预测实验
一、实验目的及要求
了解掌握动态分支与推断执行技术对流水线性能的改进效果
了解动态分支预测的基本技术;
了解推断执行的基本过程;
比较各种分支预测技术的性能。
二、实验环境
Linux、SimpleScalar Tool Set 、SPEC测试程序
三、实验内容
利用 SimpleScalar 仿真器中的分支预测仿真程序 sim-pred 运行所提供的三 个benchmark程序,分别采用五种不同的分支预测方法,即bimod方式,two-level adaptive 方式,always taken 方式,always not taken 方式,comb方式,并对 前两种分别使用下表中两种参数配置; 分析仿真器输出的关于分支预测的统计参 数集,填写表格,并对各仿真器的能力给出相应说明。
命令格式为: ./sim-bpred {-option} executable_benchmark- argument
对于三种动态方法,分别说明如下:
bimod 是最普通的,即采用一个 2bit 宽的分支方向预测表, 按分支地址查找, 2bit 分支预测器的判断和更新与课本上的一致。 这种方式只有一个参数, 就是分 支预测表的长度。
2-level 要复杂一些,它采用两级表格式,第一级是分支历史表,存放各组分 支历史寄存器的值,第二级是全局 /局部分支模式表,(全局或局部应是由表长 相对于分支历史寄存器的长决定),它存放各分支历史模式的 2bit 预测器。在 判断时用当前分支指令对应的历史寄存器值去索引二级表得到相应预测器值。 更 新时,把当前分支的方向左移入历史寄存器,并对使用过的 2bit 预测器作更新。 它有四个参数,前三个是一级表长度,二级表长度,历史寄存器宽度,最后一个 是异或标志。如果为 1,则将历史寄存器的值与当前分支指令地址异或,用其结 果再去索引二级模式表。
comb 方式则组合了以上两种方法,它再加入了一个 meta 表,这个表类似 bimod 的预测表,只是它预测的是采取 bimod 还是 2-level ,也采用 2-bit 预测器,
被采取的预测方法被定为第一方向,未被采取的定为第二方向。更新时,如果第 一方向与第二方向不同则更新meta表,否则只更新两种方法各自的表即可。它
共有三组参数,前两组即bimod和two-level的参数,第三组是关于 meta表长 度的说明。至于BTB的更新与cache的更新方式相同。
四、实验步骤
在linux的环境下,进入到simpleScalar文件的根目录;
调整好命令的格式并运行(下面给出运行命令的的一部分内容):
./sim-bpred -bpred taken tests/bin.little/test-math
./sim-bpred -bpred nottaken tests/bin.little/test-math
./sim-bpred -bpred bimod -bpred:bimod 512 tests/bi n.little/test-math
./sim-bpred -bpred bimod -bpred:bimod 1024 tests/bin.little/test-math
./sim-bpred -bpred 2lev -bpred:2lev 1 1024 8 01 tests/bi n.little/test-math
./sim-bpred -bpred 2lev -bpred:2lev 1 64 6 1 tests/bi n.little/test-math
./sim-bpred -bpred comb -bpred:comb 1024 -bpred:2lev 1 1024 8 0
-bpred:bimod 1024 tests/bi n. little/test-math
五、实验结果
将结果总结如下表:
测试程序为test.math
、预测方
alway 去s n ot
take n
alway
s
take n
bimod
(516)
bimod (1024)
2-level
(1,1024,8
,0)
2-level (1,64,6,
1)
comb (1024) (1,1024,8
,0)
(1024)
sim_total」nsn
2136
88
2136
88
213688
213688
213668
213723
213723
sim_total_refs
5689
7
5689
7
56897
56897
56897
56900
56900
sim_ nu m_bra nc