实现cache模拟器
(Ver. 1.0 2016/5/30 by wangxp@fudan.edu.cn )
1、 实验目的
1)加深对cache的基本概念、基本组织结构以及基本工作原理的理解;
2)掌握cache容量、相联度、块大小对cache性能的影响;
3)掌握降低cache不命中率的各种方法以及这些方法对提高cache性能的好处;
4)理解LRU与随机法的基本思想以及它们对Cache性能的影响。
2、 实验材料
实验提供一个MyCache模拟器(在目录mycache下),包括功能说明、完整的实现以及运行的输入文件;同时,提供java版本的框架程序:界面的框架,实际的功能没有完成。
3、 实验的内容
设计并实现cache模拟器,能模拟处理器中cache的行为。处理器访存有三种类型:读指令、读数据和写数据,给出访存的地址和类型,我们的 cache的模拟器能够进行模拟这种带有 cache的访存行为,并能给出统计信息,如访存次数、cache命中次数、命中率等。
1)基本要求
能够设置cache总的大小;
能够设置cache块的大小;
能够设置cache的映射机制:直接映射、n路组相联;
能够设置cache的替换策略:LRU、FIFI、随机法…;
能够设置cache的写策略:写回发和写直达法;
2)较高要求
能够将cache分为数据cache和指令cache;
能够设置预取策略;
能够设置写不命中的调块策略;
有友好的操作界面,操作和界面如同给定的Mycache模拟器;
3)使用你的模拟器分析问题
cache容量对不命中率的影响;
cache采取的映射机制对不命中率的影响;
cache块大小对不命中率的影响;
cache替换算法对不命中率的影响;
4、 实验提交的内容
4.1 实验报告
在实验报告中,需要添加图,图上表示出:
1) cache容量对不命中率的影响;
2) cache采取的映射机制对不命中率的影响;
3) cache块大小对不命中率的影响;
4) cache替换算法对不命中率的影响
4.2 源代码
程序编写可以使用c/c++,java,c#,Python等编写。需要提交:
1) 实验源代码;
2) 实验最终可单独执行的执行文件;
3)不管使用哪种语言,在实验报告中需要说明程序的编译、运行环境。