- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
cachelab实验报告 Cache模拟器实验报告
导读:就爱阅读网友为您分享以下“Cache模拟器实验报告”资讯,希望对您有所帮助,感谢您对92的支持!
Cache模拟器
一、实验目标:
程序运行时,都会对内存进行相关操作,所访问的内存地址可以被记录下来,形成memory trace文件。在本实验中,你将使用benchmark程序产生的memory trace文件来测试Cache命中率,文件可以在/classes/fa07/cse240a/proj1-traces.tar.gz上获得。 每次存储器访问都包含了三个信息:
1. 访问类型,l’表示Load操作,s’表示Store操作;
2. 地址。采用32位无符号的十六进制表示;
3. 存储器访问指令之间的间隔指令数。例如第5条指令和第10条指令为存储器访问指令,且中间没有其他存储器访问指令,则间隔指令数为4。
通过写一段程序,模拟Cache模拟器的执行过程。
二、实验要求:
写一段程序模拟Cache模拟器的执行过程,并对5个trace文件进行测试,完成以下目标:
1. 请统计Load类型指令和Store类型指令在这5个trace文件中的指令比例。
2. 设Cache总容量为32KB,对以下所有参数进行组合(共有72种组合),测量相应5个文件的Cache命中率。通过对命中率的分析,可以发现什么规律。
行大小:32字节、64字节、128字节
相连度:8路相联、4路相联、2路相联、1路相联
替换策略:FIFO,随机替换,LRU
写策略:写直达、写回
3. 给出5个文件的最佳Cache命中率的参数组合。针对不同的trace文件,最佳配置是否相同。
4. 测量各种组合下Cache和主存之间的数据传输量。
5. 给出5个文件的最小数据传输量的参数组合。这个组合和第3问中得到的组合是否一致。针对不同的trace文件,最佳配置是否相同。
6. Cache缺失有三种原因:1)强制缺失;2)容量缺失;3)冲突缺失。分析这三种缺失并说明你的分析方法。
7. 请给出5个trace文件在最优Cache命中率的情况下,这三种缺失所占的比例,并和教材图C.8给出的比例进行比较。
三、程序设计与实现:
本程序我打算采用java进行编写,因为java能够很好地体现面向对象编程的优点。首先需要定义相关的数据类型。
将指令定义为一个单独的指令类,好方便操作和记录统计,其中属性包括该指令的类型,比如是Load指令还是Store指令,还包括指令的地址。
class Instruction {
String type;
String addrs;
}
将Cache定义为一个类,Cache中的字段包括Tag标识字段,用于查找到相应组后进行比较看是否命中。Dirty字段用于写回策略中判断是否数据已经被修改了,如果修改了则在置换的时候需要写回,在统计Cache与主存的数据传输量时需要用到。最后一个字段是count,该字段用于记录该Cache块最近被访问的频度,用于组相连时LRU替换策略时判断哪个块最长时间没被访问到。
class Cache { int tag; int dirty; int count;
}
最后定义一个Cache模拟器类。用一个二维数组来模拟Cache,因为二维数组可以很好地表示组相连Cache,而直接相连和全相联Cache都是组相连的特殊情况,当第一维为1时,表示全相连Cache,当第二维为1时,表示直接相连Cache。
public class CacheSimulator {
public long size;// Cache大小
public int line_size;// 块大小
public int set_associativity;// 相联度
public static long set_count;// 组数
public int[] set_indexs;// 用于FIFO中记录需替换的块号
public Cache[][] caches;
public static ArrayListlt;Instructiongt; instrs
ArrayListlt;Instructiongt;();
public static HashSetlt;Stringgt; compulsory = = new new HashSetlt;Stringgt;();// 记录强制缺失
public static long conflict;// 记录冲突缺失
public boolean write_method = false;//false表示写回,true表示写直达
public int replace_method = 0;// 0为Random,1为FIFO
您可能关注的文档
- adams car悬架教程 基于ADAMS悬架系统分析与优化设计_图文.doc
- adc芯片选型 ADC选型表,ADC常用型号.doc
- advanced accounting Advanced accounting chapter 9 answers.doc
- aeo认证一本通 AEO认证一本通相关资料介绍.doc
- ai ei ui 教学实录及评议.doc
- ACCT303Chapter8.doc
- alevel试卷 2014年Alevel 数学试卷解析(精排版).doc
- Analytical Solution for Piles Supporting Combined lateral loads_图文.doc
- AdaBoost.MH 算法 硕士毕业论文_正文.doc
- 81省道 05标段 省道20181线某段二级公路土建工程某标段(投标)施工组织设计_secret_图文.doc
文档评论(0)