系统结构实验报告二Word文件下载.doc
- 文档编号:6984572
- 上传时间:2023-05-07
- 格式:DOC
- 页数:7
- 大小:59KB
系统结构实验报告二Word文件下载.doc
《系统结构实验报告二Word文件下载.doc》由会员分享,可在线阅读,更多相关《系统结构实验报告二Word文件下载.doc(7页珍藏版)》请在冰点文库上搜索。
4.改变Cache的相联度(1路,2路,4路,8路,64路),运行程序(指明所选的测试程序),统计各种失效的次数,并分析相联度对Cache性能的影响;
5.改变Cache块大小(*2,*4,*8,*64),运行程序(指明所选的测试程序),统计各种失效的次数,并分析Cache块大小对Cache性能的影响;
6.分别采用LRU与随机法,在不同的Cache容量、不同的相联度下,运行程序(指明所选的测试程序)统计Cache总失效次数,计算失效率。
分析不同的替换算法对Cache性能的影响。
四、实验步骤
1.启动虚拟机,载入redhat操作系统
2.进入cd/roott/simplesacalar/目录
3.继续进入simplesim-3.0目录:
root@localhostsimplesacalar]#cdsimplesim-3.0/
4.在当前目录下执行如下指令:
[root@localhostsimplesim-3.0]#./sim-cache-cache:
dl1dl1:
256:
32:
2:
1./tests-pisa/bin.little/test-math
其中dl1指定cache,256表示组数,32表示块大小,2表示相联度,l表示替换算法。
组数,块大小,相联度都可以按需要进行设置。
替换算法中,l表示LRU替换算法,r表示随机替换算法,f表示先进先出替换算法。
5.改变步骤4中命令的4个参数,记录实验结果。
6.修改命令如下:
-cache:
dl1dl1:
l#l1datacacheconfig,//一级数据cache
dl2ul2:
1024:
64:
4:
l#l2datacacheconfig,//二级数据cache
il1il1:
1:
l#l1instcacheconfig,//一级指令cache
il2dl2#l2instructioncacheconfig,//二级指令cache
-tlb:
itlbitlb:
16:
4096:
l#instructionTLBconfig,//指令快表
dtlbdtlb:
l#dataTLBconfig,//数据快表
我们在实验中主要关注的是一级数据cache的性能变化,因此在以下的实验结果中,只展示出一级数据cache的相关指标。
五、实验结果
执行一次指令后的结果格式如下:
执行的指令:
root@localhostsimplesim-3.0]#./sim-cache-cache:
sim:
**simulationstatistics**
sim_num_insn213745#totalnumberofinstructionsexecuted
sim_num_refs56902#totalnumberofloadsandstoresexecutedsim_elapsed_time1#totalsimulationtimeinseconds
sim_inst_rate213745.0000#simulationspeed(ininsts/sec)
il1.accesses213745#totalnumberofaccesses
il1.hits189982#totalnumberofhits
il1.misses23763#totalnumberofmisses
il1.replacements23507#totalnumberofreplacements
il1.writebacks0#totalnumberofwritebacks
il1.invalidations0#totalnumberofinvalidations
il1.miss_rate0.1112#missrate(i.e.,misses/ref)
il1.repl_rate0.1100#replacementrate(i.e.,repls/ref)
il1.wb_rate0.0000#writebackrate(i.e.,wrbks/ref)
il1.inv_rate0.0000#invalidationrate(i.e.,invs/ref)
dl1.accesses57483#totalnumberofaccesses
dl1.hits56925#totalnumberofhits
dl1.misses558#totalnumberofmisses
dl1.replacements124#totalnumberofreplacements
dl1.writebacks113#totalnumberofwritebacks
dl1.invalidations0#totalnumberofinvalidations
dl1.miss_rate0.0097#missrate(i.e.,misses/ref)
dl1.repl_rate0.0022#replacementrate(i.e.,repls/ref)
dl1.wb_rate0.0020#writebackrate(i.e.,wrbks/ref)
dl1.inv_rate0.0000#invalidationrate(i.e.,invs/ref)
ul2.accesses24434#totalnumberofaccesses
ul2.hits23230#totalnumberofhits
ul2.misses1204#totalnumberofmisses
ul2.replacements0#totalnumberofreplacements
ul2.writebacks0#totalnumberofwritebacks
ul2.invalidations0#totalnumberofinvalidations
ul2.miss_rate0.0493#missrate(i.e.,misses/ref)
ul2.repl_rate0.0000#replacementrate(i.e.,repls/ref)
ul2.wb_rate0.0000#writebackrate(i.e.,wrbks/ref)
ul2.inv_rate0.0000#invalidationrate(i.e.,invs/ref)
itlb.accesses213745#totalnumberofaccesses
itlb.hits213722#totalnumberofhits
itlb.misses23#totalnumberofmisses
itlb.replacements0#totalnumberofreplacements
itlb.writebacks0#totalnumberofwritebacks
itlb.invalidations0#totalnumberofinvalidations
itlb.miss_rate0.0001#missrate(i.e.,misses/ref)
itlb.repl_rate0.0000#replacementrate(i.e.,repls/ref)
itlb.wb_rate0.0000#writebackrate(i.e.,wrbks/ref)
itlb.inv_rate0.0000#invalidationrate(i.e.,invs/ref)
dtlb.accesses57483#totalnumberofaccesses
dtlb.hits57473#totalnumberofhits
dtlb.misses10#totalnumberofmisses
dtlb.replacements0#totalnumberofreplacements
dtlb.writebacks0#totalnumberofwritebacks
dtlb.invalidations0#totalnumberofinvalidations
dtlb.miss_rate0.0002#missrate(i.e.,misses/ref)
dtlb.repl_rate0.0000#replacementrate(i.e.,repls/ref)
dtlb.wb_rate0.0000#writebackrate(i.e.,wrbks/ref)
dtlb.inv_rate0.0000#invalidationrate(i.e.,invs/ref)
ld_text_base0x00400000#programtext(code)segmentbase
ld_text_size91744#programtext(code)sizeinbytes
ld_data_base0x10000000#programinitializeddatasegmentbase
ld_data_size13028#programinit'
ed`.data'
anduninit'
ed`.bss'
sizeinbytes
ld_stack_base0x7fffc000#programstacksegmentbase(highestaddressinstack)
ld_stack_size16384#programinitialstacksize
ld_prog_entry0x00400140#programentrypoint(initialPC)
ld_environ_base0x7fff8000#programenvironmentbaseaddressaddress
ld_target_big_endian0#targetexecutableendian-ness,non-zeroifbigendian
mem.page_count33#totalnumberofpagesallocated
mem.page_mem132k#totalsizeofmemorypagesallocated
mem.ptab_misses34#totalfirstlevelpagetablemisses
mem.ptab_accesses1544745#totalpagetableaccesses
mem.ptab_miss_rate0.0000#firstlevelpagetablemissrate
我们主要关注上述结果中粗体及下划线的部分性能指标。
以下的性能比较即以上述指标为依据。
5.1cache容量不变,改变块大小和组数。
实验结果如下表1:
cache容量=16384,相联度为2,置换算法LRU
表1
组数
块大小
总访问数
命中数
命中率
替换率
128
57483
57021
0.9920
0.0001
256
64
57186
0.9948
512
32
56941
0.9906
1024
16
56470
0.9824
分析结果:
从表中可以看出,组数为256,块大小为64时,cache的命中率最高。
增大组数或者增大块大小后,cache的性能都有所下降。
故cache容量一定时,并不是一味地增大块大小或一味地提高组数就可以提高命中率,需要再块大小和组数这两个参数上面做个均衡。
通过实验来得出最佳搭配。
5.2块大小和组数不变,改变相联度,实验结果如下表2:
组数:
256;
块大小:
32;
置换算法:
LRU
表2
相联度
2
56925
0.9903
0.0022
4
0.0000
8
分析:
我们从理论分析上可以知道,提高相联度是可以提升cache的命中率的(降低失效率),但是会增大命中时间。
从表中的数据可以看出,相联度从2提升到4时,命中率有所提高。
但是,相联度从4继续提升到8、16时,命中率已经不再变化。
说明相联度为4,对cache性能的提高已经达到“饱和”状态。
如果一次设计cache的话,显然相联度为4即可。
在实际考虑相联度的时候,还要考虑命中时间的问题,及cache的平均访存时间。
5.3改变替换算法,实验结果如下表3:
组数:
256;
32;
相联度:
表3
替换算法
RANDOM
56919
0.9902
0.0023
FIFO
56898
0.9898
0.0038
从表中数据可以看出,LRU算法的性能和RANDOM算法的性能几乎接近。
FIFO算法的性能比较差。
RANDOM算法的性能比我们预想的要好,此外RANDOM算法的实现也很简单。
这对我们设计cache来说,是一个意外的好结果。
六、总结
通过这次实验,我对cache的性能影响因素:
组数,块大小,相联度,替换算法等有了更直观的理解。
对课堂学习的知识理论也进行了一定的验证。
更加坚定了实验才是检验知识的良方。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统 结构 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)