欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:24199218       资源大小:187.21KB        全文页数:18页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、计算机体系结构cache模拟器实验报告 计算机体系结构Cache模拟器实验实验报告 姓名 崔雪莹 学号 22816 班级 计科122班 老师 董岚 2015年 06月0日一、 阅读分析附件模拟器代码 22、关键算法3二、 课后习题5、习题内容 52、题目分析53、计算及结果64、模拟器上实验结果检验 7三、 整体分析 、三种映射方式对Cache效率的的影响8、blc块大小与Cace容量对che效率的影响3、Cc容量与相连度对Cahe效率的影响 91、关于模拟器的思考 102、关于整个实验的思考1一、阅读分析附件模拟器代码1、关键参数(1)用户可见参数:(用户通过命令行输入参数)参数名含义值备注

    2、chice映像方式选项1/2/1为直接映射,2为组相连映射,3为全相连映射cacesizeCach大小16/18256以字节为单位lckszock大小1/24以字为单位assoc相连度1/2/16ssoc路组相连(-way)accescount请求次数待输出等于projt.txt的值个数hicnt命中次数待输出成功在Cache找到次数hrate命中率待输出itae= hicount/accesscountmiso未命中次数待输出没在Cach找到次数misscot= 1hitcountmissrate未命中率待输出MsRate= mcon/aesscounc1c ,cc ,3c失效次数待输出分别

    3、为三种失效类型的次数(2)程序内部主要参数:(代码内部重要参数)参数名含义计算备注blockinbe块的字节大小=lockze*4每一个块占多少字节NOofloc块个数=chsiz/bocinbytach中多少个块NOofet组个数=Oofblok/asoc块分成了多少个组byearray要访问的数据的字节地址projectx中的值poject.x文件数据赋给了ytearay数组wodress要访问的数据的字地址=ytarray/4blkize是字为单位的,就是说一个block占多少个字,所以数据也要求字地址lcadres数据的块地址wordaddress/bloksize数据在第几块inde

    4、x索引位(组地址)=bckadrsj%Ooset若Nooet=2m,则块地址低m位为索引位(组地址)。tg标识位(组内寻址)blokaddress/NOoset块地址高(3-m)位为标识位,用于确定组内哪块数据,narandez1中存放alid有效位有效为,失效为0判断该ce块数据是否有效*是因为没有真正定义,只是存放nerayind中lridexz最近未被使用次数每次加,被重写置0替换时,替换掉lridex值最大的那个块、关键算法注:这里不粘贴代码,只是进行简单的代码算法说明(1)块地址表示:注:图是我按照自己的想法自己画的,可能有些地方并不准确,望老师指正。图中以一个例子来解释cae模拟器

    5、中block和数据地址的关系,以及和组地址和标志位的关系。 (2)Ie与tg:由上面计算:inde blocdress % NOofseidx = 16 % 8 = 2tag blockddre / Noofset ag= 6/8 2以上例,字地址为例,写成二进制为010010B,其中组数为8,又因为3=8,所以字地址取后3位为:inex= 01 =2 ,取前2位为:a = 000B = 2 。所以,算法与理论是一致的。(3)Vid:有效位。当通过上述方式寻址找到了数据存放的数据块,接下来判断有效位:有效位为1,说明数据是有效的,可以从bock提取数据;有效位为0,说明块里的数据是无效的,所以

    6、不能从block提取数据,出现mss,此时判断is类型,同时需要访问内存或下一级存储,将数据放到cache里。(4)失效类型及判断方法:判断失效类型,函数misstype(nt ba,int n ,int )。Comulo ms(强制性失效,冷启动):当第一次访问某一个块的时候,数据是肯定不在块中的,此时出现强制性失效,或者说是冷启动失效。Cpciy mis(容量失效):所需的数据不能全部调入cach中,块被替换后又被重新访问,意思就是当所有的块都被占满了,这样又有数据希望被调入缓存时,就出现了容量失效。Confictss(冲突失效):在组相联或直接映像中,数据想要替换进某一组中,组内的块都被

    7、占满了,但是别的组的块有空余,数据只能替换这一组,尽管别的组有空余也不能替换。这样就出现了冲突失效。(5)LRU算法实现替换:LR替换算法是采用最近最久未使用的块,其中ru数组存放最近多少次未被使用,因为是采用循环访问,当循环访问到这一组时,把这组所有的块的Lru值都加1,如果成功访问到这一块,数据能从其中取出来,就把这一块的ru值置0,退出循环。(6)直接映射、组相联映射、全相联映射:直接映射:是特殊的组相联映射,就是相联度为1的组相联映射。所以采取和组相联一样的程序和算法,当识别该组第一块失效时,直接进行替换,因为有且只有一块。组相联映射:当识别该组某块失效时,如果块都被占满,要根据Lu值

    8、的大小,判断哪一块被替换掉。全相联映射:从上到下che块存数据,则从上到下循环即可,遇到失效时,要根据ru值的大小,判断哪一块被替换掉。二、课后习题1、习题内容在CachSulato模拟器上模拟如下程序的运行过程:nt,,cstrid,aray256 o(i0;i1000;+) for(=0;j256;j=jstid) c = arraj5;假设Cac总大小是56个字节,且块大小为1字节(4个字)。同时假设内存当中只有这一个程序在运行,而且整形数字的长度为一个字长(字长为3位),在直接相连映射下,stribe分别等于13、11时程序的运行结果,并分析原因。而当采用两路组相连时又会有什么结果并分

    9、析原因。2、题目分析当strie = 13/31时,程序相当于循环访问内存偏移地址为和地址32/3的内容,循环100次,也就是访问了次存储。结合che机制,cche大小为256个字节,块大小为16个字节,所以块的个数为25/16 = 16个。若为2路组相连,则有16/2 8组。当第一次访问块时,一定会发生强制性失效,计一次miss。3、计算及结果1)直接映像时:stri=132ar0的块地址为0,映射到che的块号为0:0 mod 16=0ra13的块地址为124 = 33,映射到che的块号为:3mod16 = 1因为第一次访问cache,和1一定会发生强制性失效,之后因为调入ahe,不会发

    10、生失效。则失效次数为2,则失效率为: /2000 0.01% 命中次数为19998次,命中率为: 199/2000=99.9% 1(近似)失效类型为强制性失效,次数为2。strde=13array0的块地址为0,映射到ache的块号为0:0 dulo1 0ray13的块地址为131/ 3,映射到ch的块号为0:32 modulo 6 = 0因为第一次访问cache,0一定会发生强制性失效,之后cch里块号为的块不断地被替换写入替换写入,此时发生冲突失效。则失效次数为200,则失效率为: 20/000 = 1= 100%命中率为0。失效类型为强制性失效次数1,冲突失效次数为199。2)2路组相联

    11、:strid=1arry0的块地址为,映像到ach的组号为0:0dulo8 = 0aa132的块地址为13/4 = 3,映像到cache组号为1:33 odulo8 = 1因为第一次访问cache,0和1一定会发生强制性失效,之后因为调入cah,不会发生失效。则失效次数为2,则失效率为:2/000 = %命中次数为19998次,命中率为: 199982000=99.9 = 1(近似) 失效类型为强制性失效,次数为2。ride131ara0的块地址为0,映像到ache组号为:0 modl 0array3的块地址为131/4 = 3,映像到cache组号为:3 modulo = 因为第一次访问ca

    12、he,0和1一定会发生强制性失效,之后因为是2路组相联,array0与array131都在0组,不会发生失效,则失效次数为2,失效率为:/200 = 0.01%命中次数为199次,命中率为: 999820000 999%=1(近似)失效类型为强制性失效,次数为2。4、模拟器上实验结果检验注:因为例题的循环次数为000,为了便于实验,我将循环次数设置为00,结果参照100的计算,原理是一致的。因为实际11/13都是字地址,而roect.tx设置的是字节地址,所以将oject.tt里值设置为 和2*4/13*4循环次,设置cche大小为26,lck大小为4,可以分别看到直接映射和2路组相连映射的结

    13、果为:直接映射tride2std=131s count2 200miss ra 0.0 .00htcount18 0hit rae 0.990accesscoun 200 200c1(强制性失效) 2c(容量性失效) 0 0c3c(冲突性失效)0 12路组相连映射srie=13tri=1miss unt2 2mis rte.0101htcunt8198hit ate 09 0.99accesscunt20200c1c(强制性失效) 22c2c(容量性失效)00c3c(冲突性失效) 可以看到实验结果与计算是一致的(因为循环次数10,所以实验结果小数点要后移两位)。同时对习题1的思考(见后)也证明

    14、是正确的。(1)直接映射:tide 32 截图(2)直接映射:tide 13 截图(3)2路组相连:stide = 132 截图(4)2路组相连:strde3 截图三、整体分析1、三种映射方式对ache效率的的影响其他相同条件:bloc大小为,组相连相连度为4,prec.tt为00个0100的随机数。ce容量(字节)映射方式直接映射组相连全相连640.940.930.25180.870.8750.65256070.790.7855120.0.630.611024.0000.50 生成图表:此时可以看到:1.直接映射的失效率高,组相连失效率中等,全相连失效率最低2.随着ahe容量的增加,失效率越

    15、小。3.当cache容量为14时,因为数据取值的原因,三种方式失效率相等,说明当cche容量足够大,三种方式失效率是一样的。2、loc块大小与ac容量对Cache效率的影响其他相同条件:直接映射,相连度为1,project.txt为200个00的随机数。块大小(字)Cach容量(字节)6412825652024.940.8850.30.770.6920.40.870.79.60.504.95.9050.800.635.3.95.890.7850.750.5 生成图表:此时可以看到:1.对于给定的cach容量如64字节,当块大小增加时,失效率先是下降,后来反而上升了。2.Cach容量越大,使其失

    16、效率达到最低的块的大小就越大。3.因为取得数据样本是随机的,不是连续的,实验数据并不是十分准确,比如ce容量8时,块大小出现两次失效率3、Cache容量与相连度对che效率的影响其他相同条件:组相连,块大小,roct.tt为200个0100的随机数。Cace容量(字节)相连度/路1480.940.930.9150.90512885.87.860.256.850.6508007820.645060.670.660205350.5.5350.535生成图表:此时可以看到:1.提高相连度会使失效率下降。2.因为取得数据样本是随机的,不是连续的,实验数据并不是十分准确。3.当容量为124时,也就是cc

    17、一定大时,失效率没什么区别。4、三种失效类型影响因素(1)相连度对三种失效类型影响:其他相同条件:cche大小为56,bloc大小为2,组相连,proecttx为200个0000的随机数。相连度(路)总失效率总失效次数失效类型强制性失效容量失效冲突失效10.71561011080101074134.765151074580.7857107455.5157107464 可以看出:1.强制性失效,即冷启动,不受相连度的影响。2.容量失效基本不受相连度影响,但因为数据偶然性,出现增大趋势。3.冲突失效随着相连度的增加而降低。(2)Cach容量对三种失效类型影响:其他相同条件:lock大小为2,组相连

    18、度为,projectxt为20个000的随机数。ache容量(字节)总失效率总失效次数失效类型(相对百分比)强制性失效容量失效冲突失效40.1861081128.8717417625075151415510.62810713810240535110700可以看出:1.容量越大,失效率越小。2.强制性失效不受容量大小的影响。3.容量失效随着容量的增加而大大减小。4.冲突失效不受容量大小的影响。四、实验思考和感受1、关于模拟器的思考 Cche大小可选为/6428/256,因为代码写了,但是没有增加选项。但是,我考虑因为6实在太小了,没什么意义。打开文件名字为projt.xt,修改文件名。 个人感觉

    19、有地方不太合适,因为直接映像就是特殊的组相联映射,所以相联度一定为1,但是代码中并没有设计这一点,当一个完全不懂得人使用时,很有可能设置相联度大于1,造成错误。另外我觉得可以把三种方式各封装在一个自己的函数里,这样代码更加清晰。 有困惑我的问题,我是通过阅读代码才比较清晰的理解cache实现的,但是模拟器给出的地址映射的方法是将数据字节地址转换为字地址,又将字地址转换为块地址,对块地址进行取模运算。而习题1是直接对字地址进行取模运算,方法明显不一致。通过我重新阅读习题的题目,发现实际习题1的132/31是字地址,因为定义的 rray数组定义的是整数字长,所以13/指的是地址为字地址,例如两个地

    20、址之间是一个整数字长。、关于整个实验的思考这次实验是我大学做的最用心的一次实验,没有之一。我在仔细的阅读实验代码后,知道了内存的物理地址是怎样转换为cach的块号或组号的。我根据自己的理解,画了一个模拟寻址图,更加清晰的知道原理,理顺清楚到底是怎么一回事,收获很大。在做整体分析时,我采用图表折线图的方式,更加直观的看出数据的走势。但是我最初的设想采样样本是像一条平滑的曲线一样,自动的生成一组相对连续的数据,但是我只会生成随机数。而随机数是离散的,所以,以后有机会,我希望采用连续数据的样本,重新得出更加准确的结果。总体来说,实验还是相对简单的,但是注重理解。理论与实践结合起来,加深了我对che部分学习的理解,同时,也锻炼了我自主思考,自主学习的能力。比如,整体分析部分,采用不同变量结果比较方法等等。希望在今后的学习当中,继续保持,继续进步。


    注意事项

    本文(计算机体系结构cache模拟器实验报告.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开