计算机标准体系结构cache模拟器实验报告.doc

上传人:知*** 文档编号:97839579 上传时间:2024-07-08 格式:DOC 页数:18 大小:329.04KB
返回 下载 相关 举报
计算机标准体系结构cache模拟器实验报告.doc_第1页
第1页 / 共18页
计算机标准体系结构cache模拟器实验报告.doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《计算机标准体系结构cache模拟器实验报告.doc》由会员分享,可在线阅读,更多相关《计算机标准体系结构cache模拟器实验报告.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 计算机体系构造Cache模仿器实验实验报告 姓名 崔雪莹 学号 12281166 班级 计科1202班 教师 董岚 06月07日一、阅读分析附件模仿器代码21、核心参数22、核心算法3二、课后习题51、习题内容52、题目分析53、计算及成果64、模仿器上实验成果检查7三、整体分析81、三种映射方式对Cache效率影响82、block块大小与Cache容量对Cache效率影响83、Cache容量与相连度对Cache效率影响94、三种失效类型影响因素9四、实验思考和感受101、关于模仿器思考102、关于整个实验思考10一、 阅读分析附件模仿器代码1、核心参数(1) 顾客可见参数:(顾客通过命令行

2、输入参数)参数名含义值备注choice映像方式选项1/2/31为直接映射,2为组相连映射,3为全相连映射cachesizeCache大小16/64/128/256以字节为单位blocksizeBlock大小1/2/4以字为单位assoc相连度1/2/4/8/16assoc路组相连(n-way)accesscount祈求次数待输出等于project.txt值个数hitcount命中次数待输出成功在Cache找到次数hitrate命中率待输出HitRate= hitcount/accesscountmisscount未命中次数待输出没在Cache找到次数misscount = 1-hitcount

3、missrate未命中率待输出MissRate= misscount/accesscountc1c ,c2c ,c3c失效次数待输出分别为三种失效类型次数(2)程序内部重要参数:(代码内部重要参数)参数名含义计算备注blockinbyte块字节大小=blocksize*4每一种块占多少字节NOofblock块个数=cachesize/blockinbyteCache中多少个块NOofset组个数=NOofblock/assoc块提成了多少个组bytearray要访问数据字节地址=projec.txt中值project.txt文献数据赋给了bytearray数组wordaddress要访问数据字

4、地址=bytearrayj/4blocksize是字为单位,就是说一种block占多少个字,因此数据也规定字地址blockaddress数据块地址=wordaddress/blocksize数据在第几块index索引位(组地址)=blockaddressj%NOofset若Noofset=2m,则块地址低m位为索引位(组地址)。tag标记位(组内寻址)=blockaddressj/NOofset块地址高(32-m)位为标记位,用于拟定组内哪块数据,newarrayindexz+1中存储*valid有效位有效为1,失效为0判断该cache块数据与否有效*是由于没有真正定义,只是存储newarra

5、yindexz中lruindexz近来未被使用次数每次加1,被重写置0替代时,替代掉lruindex值最大那个块2、核心算法注:这里不粘贴代码,只是进行简朴代码算法阐明(1) 块地址表达:注:图是我按照自己想法自己画,也许有些地方并不精确,望教师指正。图中以一种例子来解释cache模仿器中block和数据地址关系,以及和组地址和标志位关系。(2) Index与tag:由上面计算:index = blockaddress % NOofsetindex = 16 % 8 = 2tag = blockaddress / Noofsettag = 16/8 = 2以上例,字地址16为例,写成二进制为0

6、001 0010 B,其中组数为8,又由于23=8,因此字地址取后3位为:index = 010 B = 2 ,取前29位为:tag = 00010 B = 2 。因此,算法与理论是一致。(3) Valid:有效位。当通过上述方式寻址找到了数据存储数据块,接下来判断有效位:有效位为1,阐明数据是有效,可以从block提取数据;有效位为0,阐明块里数据是无效,因此不能从block提取数据,浮现miss,此时判断miss类型,同步需要访问内存或下一级存储,将数据放到cache里。(4) 失效类型及判断办法:判断失效类型,函数misstype(int ba ,int nb ,int l)。Compu

7、lsory miss(强制性失效,冷启动):当第一次访问某一种块时候,数据是必定不在块中,此时浮现强制性失效,或者说是冷启动失效。Capacity miss(容量失效):所需数据不能所有调入cache中,块被替代后又被重新访问,意思就是当所有块都被占满了,这样又有数据但愿被调入缓存时,就浮现了容量失效。Conflict miss(冲突失效):在组相联或直接映像中,数据想要替代进某一组中,组内块都被占满了,但是别组块有空余,数据只能替代这一组,尽管别组有空余也不能替代。这样就浮现了冲突失效。(5) LRU算法实现替代:LRU替代算法是采用近来最久未使用块,其中Lru数组存储近来多少次未被使用,由

8、于是采用循环访问,当循环访问到这一组时,把这组所有块Lru值都加1,如果成功访问到这一块,数据能从其中取出来,就把这一块Lru值置0,退出循环。(6) 直接映射、组相联映射、全相联映射:直接映射:是特殊组相联映射,就是相联度为1组相联映射。因此采用和组相联同样程序和算法,当辨认该组第一块失效时,直接进行替代,由于有且只有一块。组相联映射:当辨认该组某块失效时,如果块都被占满,要依照Lru值大小,判断哪一块被替代掉。全相联映射:从上到下cache块存数据,则从上到下循环即可,遇到失效时,要依照Lru值大小,判断哪一块被替代掉。二、 课后习题1、 习题内容在CacheSimulator模仿器上模仿

9、如下程序运营过程:int i,j,c stride,array256 for(i=0;i10000;i+) for(j=0;j256;j=j+stride) c = arrayj+5;假设Cache总大小是256个字节,且块大小为16字节(4个字)。同步假设内存当中只有这一种程序在运营,并且整形数字长度为一种字长(字长为32位),在直接相连映射下,stribe分别等于132、131时程序运营成果,并分析因素。而当采用两路组相连时又会有什么成果并分析因素。2、 题目分析当stribe = 132/131 时,程序相称于循环访问内存偏移地址为0和地址132/131内容,循环10000次,也就是访问

10、了次存储。结合cache机制,cache大小为256个字节,块大小为16个字节,因此块个数为256/16 = 16个。若为2路组相连,则有16/2 = 8组。当第一次访问块时,一定会发生强制性失效,计一次miss。3、 计算及成果1) 直接映像时:l stride=132array0块地址为0,映射到cache块号为0:0 mod 16 = 0array132块地址为132/4 = 33,映射到cache块号为1:33 mod 16 = 1由于第一次访问cache,0和1一定会发生强制性失效,之后由于调入cache,不会发生失效。则失效次数为2,则失效率为: 2/0 = 0.01%命中次数为1

11、9998次,命中率为:19998/0 = 99.99% = 1(近似)失效类型为强制性失效,次数为2。l stride=131array0块地址为0,映射到cache块号为0:0 modulo 16 = 0array131块地址为131/4 = 32,映射到cache块号为0:32 modulo 16 = 0由于第一次访问cache,0一定会发生强制性失效,之后cache里块号为0块不断地被替代写入替代写入,此时发生冲突失效。则失效次数为0,则失效率为:0/0 = 1 = 100%命中率为0。失效类型为强制性失效次数1,冲突失效次数为19999。2) 2路组相联:l stride=132arr

12、ay0块地址为0,映像到cache组号为0:0 modulo 8 = 0array132块地址为132/4 = 33,映像到cache组号为1:33 modulo 8 = 1由于第一次访问cache,0和1一定会发生强制性失效,之后由于调入cache,不会发生失效。则失效次数为2,则失效率为:2/0 = 0.01%命中次数为19998次,命中率为:19998/0 = 99.99% = 1(近似)失效类型为强制性失效,次数为2。l stride=131array0块地址为0,映像到cache组号为:0 modulo 8 = 0array131块地址为131/4 = 32,映像到cache组号为:

13、32 modulo 8 = 0由于第一次访问cache,0和1一定会发生强制性失效,之后由于是2路组相联,array0与array131都在0组,不会发生失效,则失效次数为2,失效率为:2/0 = 0.01%命中次数为19998次,命中率为:19998/0 = 99.99% = 1(近似)失效类型为强制性失效,次数为2。4、 模仿器上实验成果检查注:由于例题循环次数为10000,为了便于实验,我将循环次数设立为100,成果参照100计算,原理是一致。由于实际131/132都是字地址,而project.txt设立是字节地址,因此将project.txt里值设立为0 和 132*4/131*4 循

14、环100次,设立cache大小为256,block大小为4,可以分别看到直接映射和2路组相连映射成果为:直接映射stride=132stride=131miss count2200miss rate0.011.00hit count1980hit rate0.990access count200200c1c(强制性失效)22c2c(容量性失效)00c3c(冲突性失效)01982路组相连映射stride=132stride=131miss count22miss rate0.010.01hit count198198hit rate0.990.99access count200200c1c(强制

15、性失效)22c2c(容量性失效)00c3c(冲突性失效)00可以看到实验成果与计算是一致(由于循环次数100,因此实验成果小数点要后移两位)。同步对习题1思考(见后)也证明是对的。(1) 直接映射:stride = 132 截图(2) 直接映射:stride = 131 截图(3) 2路组相连:stride = 132 截图(4) 2路组相连:stride = 131 截图三、 整体分析1、 三种映射方式对Cache效率影响其她相似条件:block大小为2,组相连相连度为4,project.txt为200个01000随机数。cache容量(字节)映射方式直接映射组相连全相连640.940.93

16、50.9251280.870.8750.8652560.790.790.7855120.680.630.6110240.500.500.50 生成图表:此时可以看到:1. 直接映射失效率高,组相连失效率中档,全相连失效率最低2. 随着cache容量增长,失效率越小。3. 当cache容量为1024时,由于数据取值因素,三种方式失效率相等,阐明当cache容量足够大,三种方式失效率是同样。2、 block块大小与Cache容量对Cache效率影响其她相似条件:直接映射,相连度为1,project.txt为200个01000随机数。块大小(字)Cache容量(字节)6412825651210241

17、0.940.8850.830.770.6920.940.870.790.680.5040.950.9050.800.6350.3080.9450.890.7850.5750.155生成图表:此时可以看到:1. 对于给定cache容量如64字节,当块大小增长时,失效率先是下降,日后反而上升了。2. Cache容量越大,使其失效率达到最低块大小就越大。3. 由于获得数据样本是随机,不是持续,实验数据并不是十分精确,例如cache容量128时,块大小浮现两次失效率3、 Cache容量与相连度对Cache效率影响其她相似条件:组相连,块大小2,project.txt为200个01000随机数。Cach

18、e容量(字节)相连度/路1248640.940.930.9150.9051280.8750.870.860.872560.7850.7650.800.785120.6450.640.670.6610240.5350.5350.5350.535生成图表:此时可以看到:1. 提高相连度会使失效率下降。2. 由于获得数据样本是随机,不是持续,实验数据并不是十分精确。3. 当容量为1024时,也就是cache一定大时,失效率没什么区别。4、 三种失效类型影响因素(1)相连度对三种失效类型影响:其她相似条件:cache大小为256,block大小为2,组相连,project.txt为200个01000随

19、机数。相连度(路)总失效率总失效次数失效类型强制性失效容量失效冲突失效10.78156107381120.80160107401340.76515310741580.785157107455160.785157107464 可以看出:1. 强制性失效,即冷启动,不受相连度影响。2. 容量失效基本不受相连度影响,但由于数据偶尔性,浮现增大趋势。3. 冲突失效随着相连度增长而减少。(2)Cache容量对三种失效类型影响:其她相似条件:block大小为2,组相连度为4,project.txt为200个01000随机数。cache容量(字节)总失效率总失效次数失效类型(相对比例)强制性失效容量失效冲突

20、失效640.931861077811280.871741076522560.7651531074155120.6412810713810240.53510710700可以看出:1. 容量越大,失效率越小。2. 强制性失效不受容量大小影响。3. 容量失效随着容量增长而大大减小。4. 冲突失效不受容量大小影响。四、 实验思考和感受1、关于模仿器思考 Cache大小可选为16/64/128/256,由于代码写了,但是没有增长选项。但是,我考虑由于16实在太小了,没什么意义。 打开文献 名字为project.txt,修改文献名。 个人感觉有地方不太适当,由于直接映像就是特殊组相联映射,因此相联度一定为

21、1,但是代码中并没有设计这一点,当一种完全不懂得人使用时,很有也许设立相联度不不大于1,导致错误。此外我觉得可以把三种方式各封装在一种自己函数里,这样代码更加清晰。 有困惑我问题,我是通过阅读代码才比较清晰理解cache实现,但是模仿器给出地址映射办法是将数据字节地址转换为字地址,又将字地址转换为块地址,对块地址进行取模运算。而习题1是直接对字地址进行取模运算,办法明显不一致。通过我重新阅读习题1题目,发现实际习题1132/131是字地址,由于定义int array数组定义是整数字长,因此132/131指是地址为字地址,例如两个地址之间是一种整数字长。2、关于整个实验思考这次实验是我大学做最专

22、心一次实验,没有之一。我在仔细阅读实验代码后,懂得了内存物理地址是如何转换为cache块号或组号。我依照自己理解,画了一种模仿寻址图,更加清晰懂得原理,理顺清晰究竟是怎么一回事,收获很大。在做整体分析时,我采用图表折线图方式,更加直观看出数据走势。但是我最初设想采样样本是像一条平滑曲线同样,自动生成一组相对持续数据,但是我只会生成随机数。而随机数是离散,因此,后来有机会,我但愿采用持续数据样本,重新得出更加精确成果。总体来说,实验还是相对简朴,但是注重理解。理论与实践结合起来,加深了我对cache某些学习理解,同步,也锻炼了我自主思考,自主学习能力。例如,整体分析某些,采用不同变量成果比较办法等等。但愿在此后学习当中,继续保持,继续进步。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁