计算机系统结构实验报告 西安交通大学_第1页
计算机系统结构实验报告 西安交通大学_第2页
计算机系统结构实验报告 西安交通大学_第3页
计算机系统结构实验报告 西安交通大学_第4页
计算机系统结构实验报告 西安交通大学_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机系统结构课内实验实验报告班级:计算机15班姓名:高君宇学号:2110505112日期:2014.5.7动态分支预测实验一、实验目的及要求1.了解掌握动态分支与推断执行技术对流水线性能的改进效果2.了解动态分支预测的基本技术;3.了解推断执行的基本过程;4.比较各种分支预测技术的性能。二、实验环境Linux、SimpleScalar Tool Set、SPEC 测试程序三、实验内容利用SimpleScalar仿真器中的分支预测仿真程序sim-pred运行所提供的三个benchmark程序,分别采用五种不同的分支预测方法,即bimod方式,two-level adaptive方式,alway

2、s taken方式,always not taken方式,comb方式,并对前两种分别使用下表中两种参数配置;分析仿真器输出的关于分支预测的统计参数集,填写表格,并对各仿真器的能力给出相应说明。命令格式为: ./sim-bpred -option executable_benchmark argument对于三种动态方法,分别说明如下:bimod是最普通的,即采用一个2bit宽的分支方向预测表,按分支地址查找,2bit分支预测器的判断和更新与课本上的一致。这种方式只有一个参数,就是分支预测表的长度。2-level要复杂一些,它采用两级表格式,第一级是分支历史表,存放各组分支历史寄存器的值,第二

3、级是全局/局部分支模式表,(全局或局部应是由表长相对于分支历史寄存器的长决定),它存放各分支历史模式的2bit预测器。在判断时用当前分支指令对应的历史寄存器值去索引二级表得到相应预测器值。更新时,把当前分支的方向左移入历史寄存器,并对使用过的2bit预测器作更新。它有四个参数,前三个是一级表长度,二级表长度,历史寄存器宽度,最后一个是异或标志。如果为1,则将历史寄存器的值与当前分支指令地址异或,用其结果再去索引二级模式表。comb方式则组合了以上两种方法,它再加入了一个meta表,这个表类似bimod的预测表,只是它预测的是采取bimod还是2-level,也采用2-bit预测器,被采取的预测

4、方法被定为第一方向,未被采取的定为第二方向。更新时,如果第一方向与第二方向不同则更新meta表,否则只更新两种方法各自的表即可。它共有三组参数,前两组即bimod和two-level的参数,第三组是关于meta表长度的说明。至于BTB的更新与cache的更新方式相同。四、实验步骤1.在linux的环境下,进入到simpleScalar文件的根目录;2.调整好命令的格式并运行(下面给出运行命令的的一部分内容):./sim-bpred -bpred taken tests/bin.little/test-math./sim-bpred -bpred nottaken tests/bin.littl

5、e/test-math./sim-bpred -bpred bimod -bpred:bimod 512 tests/bin.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/bin.little/test-math./sim-bpred -bpred 2lev -bpred:2lev 1 64 6 1 tests/bin.little/test-math./sim-b

6、pred -bpred comb -bpred:comb 1024 -bpred:2lev 1 1024 8 0 -bpred:bimod 1024 tests/bin.little/test-math五、实验结果将结果总结如下表:1.测试程序为test.math预测方法统计结果always nottakenalways takenbimod(516)bimod(1024)2-level(1,1024,8,0)2-level(1,64,6,1)comb(1024)(1,1024,8,0)(1024)sim_total_insn2136882136882136882136882136682137

7、23213723sim_total_refs56897568975689756897568975690056900sim_num_branches38591385913859138591385913859938599sim_elapsed_time1111111sim_inst_rate213688213688213688.0000213688.0000213688213723213723sim_IPB5.53725.53725.53725.53725.53725.5375.537bpred_bimod.lookups38591385913859138591385913859938599bpr

8、ed_bimod.updates38591385913859138591385913859938599bpred_bimod.addr_hits21938255613423734237342422796135578bpred_bimod.dir_hirts21938255613473234732342422851436018bpred_bimod.misses1665312930385938593797100852581bpred_bimod.jr_hits3543354335283528352835293529bpred_bimod.jr_seen3543354335433543354335

9、443544bpred_bimod.jr_non_ras_hits.PP354335432828282828bpred_bimod.jr_non_ras_seen.PP354335434141414141bpred_bimod.bpred_addr_rate0.56850.66490.88720.88720.88730.72440.9217bpred_bimod.bpred_dir_rate0.56850.66490.90000.90000.90160.73870.9331bpred_bimod.bpred_jr_rate110.99580.99580.99580.99580.9958bpre

10、d_bimod.bpred_jr_non_ras_rate.PP110.68290.68290.68290.68290.6829bpred_bimod.retstack_pushes1135043504350435053505bpred_bimod.retstack_pops0035023502350235033503bpred_bimod.used_ras.PP0035023502350235033503bpred_bimod.ras_hits.PP0035023500350035013501bpred_bimod.ras_rate.PP000.99940.99940.99940.99940

11、.99942.测试程序为 test.fmath预测方法统计结果always nottakenalways takenbimod(516)bimod(1024)2-level(1,1024,8,0)2-level(1,64,6,1)comb(1024)(1,1024,8,0)(1024)sim_total_insn53448534485344853448534485348253482sim_total_refs16342163421634216342163421634516345sim_num_branches10340103401034010340103401034710347sim_elap

12、sed_time1111111sim_inst_rate53448534485344853448534485348253482sim_IPB5.16915.16915.16915.16915.16915.16885.1688bpred_bimod.lookups10340103401034010340103401034710347bpred_bimod.updates10340103401034010340103401034710347bpred_bimod.addr_hits5768683988259021886075749225bpred_bimod.dir_hirts5768683991

13、289315917178889474bpred_bimod.misses457235011212102511692459873bpred_bimod.jr_hits832832815815815816816bpred_bimod.jr_seen832832832832832833833bpred_bimod.jr_non_ras_hits.PP83283244444bpred_bimod.jr_non_ras_seen.PP8328321919191919bpred_bimod.bpred_addr_rate0.55780.66140.85350.87240.85690.73200.8916b

14、pred_bimod.bpred_dir_rate0.55780.66140.88280.90090.88690.76230.9156bpred_bimod.bpred_jr_rate110.97960.97960.21050.97960.9796bpred_bimod.bpred_jr_non_ras_rate.PP110.21050.21050.21050.21050.2105bpred_bimod.retstack_pushes00815815815816816bpred_bimod.retstack_pops00813813813814814bpred_bimod.used_ras.P

15、P00813813813814814bpred_bimod.ras_hits.PP00811811811812812bpred_bimod.ras_rate.PP000.99750.99750.99750.99750.99753.测试程序为 test.printf预测方法统计结果always nottakenalways takenbimod(516)bimod(1024)2-level(1,1024,8,0)2-level(1,64,6,1)comb(1024)(1,1024,8,0)(1024)sim_total_insn1813877181387718138771813877181387

16、718139141813914sim_total_refs516941516941516941516941516941516947516947sim_num_branches401609401609401609401609401609401623401623sim_elapsed_time1111111sim_inst_rate1813877181387718138771813877181387718139141813914sim_IPB4.51654.51654.51654.51654.51654.51654.5165bpred_bimod.lookups401609401609401609

17、401609401609401623401623bpred_bimod.updates401609401609401609401609401609401623401623bpred_bimod.addr_hits233361261363372591377458373619317099384169bpred_bimod.dir_hirts233361261363374901379761375930319444386404bpred_bimod.misses1682481402462670821848256798217915219bpred_bimod.jr_hits319983199830152

18、30152301523015330153bpred_bimod.jr_seen31998319983199831998319983199931999bpred_bimod.jr_non_ras_hits.PP3199831998363363363363363bpred_bimod.jr_non_ras_seen.PP319983199821982198219821982198bpred_bimod.bpred_addr_rate0.58110.65080.92770.93990.93030.78650.9565bpred_bimod.bpred_dir_rate0.58110.65080.93

19、350.94560.93610.79540.9621bpred_bimod.bpred_jr_rate110.94230.94230.94230.94230.9423bpred_bimod.bpred_jr_non_ras_rate.PP110.16520.16520.16520.16520.1652bpred_bimod.retstack_pushes002980229802298022980329803bpred_bimod.retstack_pops002980029800298002980129801bpred_bimod.used_ras.PP00298002980029800298

20、0129801bpred_bimod.ras_hits.PP002978929789297892979029790bpred_bimod.ras_rate.PP000.99960.99960.9960.99960.9996六、总结所谓的动态分支处理方法,是指利用程序执行期间的信息,进行处理,所以这儿很明显带来的是硬件开销,因为程序执行期间是不可能由软件协助的,否则性能影响也就太大了吧。相对的,静态分支处理,其实是利用编译器实现的。这次实验我最大的感受就是计算机就像董老师说的一样,是在玩平衡。体系结构设计的核心是平衡,以最快的速度获取指令,需要较少的时钟周期,但带来的是预测准确率的下降;如果希望

21、提高准确率,则是较慢的速度;三种分支预测方式实现难度各不相同,在性能方面也各有优劣,一级分支预测追求的是快,二级分支预测追求的是准确率,这都是在玩平衡。通过实验,我更加熟悉了动态分支预测的方法,学以致用才是硬道理,计算机的这个“平衡“还得好好玩下去。七、附录(源程序清单)使用的是程序自带的源代码test.math,test.fmath, test.printf故在此不单独列出。基本流水线和Tomasulo算法实验一、实验目的及要求1. 掌握DLXview模拟器的使用方法;2. 进一步理解指令动态调度的基本思想,了解指令动态调度的基本过程与方法;3. 理解记分牌算法和Tomasulo算法的基本思

22、想,了解它们的基本结构、运行过程;4. 比较分析基本流水线与记分牌算法和Tomasulo算法的性能及优缺点。二、实验环境DLXview模拟器三、实验内容1、用DLX汇编语言编写代码文件*.s(程序中应包括指令的数据相关、控制相关以及结构相关),以及相关的初始化寄存器文件*.i和数据文件*.d;2、观察程序中出现的数据相关、控制相关、结构相关,并指出三种相关的指令组合;3、将自己编写的程序*.s、*.i、*.d装载到DLXview模拟器上, 4、分别用基本流水线和Tomasulo算法模拟,针对每一种模拟做如下分析: (1)统计程序的执行周期数和流水线中的暂停时钟周期数; (2)改变功能部件数目重

23、新模拟,观察并记录性能的改变 (3)改变功能部件延迟重新模拟,观察并记录性能的改变;5、记录运行Tomasulo算法时的指令状态表和保留站信息;四、实验步骤用DLX汇编语言编写代码文件*.s(程序中应包括指令的数据相关、控制相关以及结构相关),以及相关的初始化寄存器文件*.i和数据文件*.d;将自己编写的程序*.s、*.i、*.d装载到DLXview模拟器上;用DLXview模拟器进行模拟。五、实验结果(一)普通流水线: 实验参数设置实验结果显示该段程序运行了11个时钟周期。改变部件数目: 增加了一个除法器部件根据实验结果依然运行了11个时钟周期。所以对该f305程序增加除法器部件数目,不影响执行效率。 增加了一个加法器部件实验结果显示依然运行了11个时钟周期。所以该

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论