计算机组成原理之Cache模拟器的实现
- 格式:doc
- 大小:389.50 KB
- 文档页数:13
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给出的比例进行比较。
实验四 Cache控制器设计实验1.实验目的(1) 掌握Cache控制器的原理及其设计方法。
(2) 熟悉CPLD应用设计及EDA软件的使用。
2.实验设备PC机一台,TD-CMA实验系统一套。
3.实验原理本实验采用的地址变换是直接映像方式,这种变换方式简单而直接,硬件实现很简单,访问速度也比较快,但是块的冲突率比较高。
其主要原则是:主存中一块只能映像到Cache 的一个特定的块中。
假设主存的块号为B,Cache的块号为b,则它们之间的映像关系可以表示为:b = B mod Cb其中,Cb是Cache的块容量。
设主存的块容量为Mb,区容量为Me,则直接映像方法的关系如图4-1所示。
把主存按Cache的大小分成区,一般主存容量为Cache容量的整数倍,主存每一个分区内的块数与Cache的总块数相等。
直接映象方式只能把主存各个区中相对块号相同的那些块映像到Cache中同一块号的那个特定块中。
例如,主存的块0只能映像到Cache 的块0中,主存的块1只能映像到Cache的块1中,同样,主存区1中的块Cb(在区1中的相对块号是0)区0区1区M e-1主存储器图4-1 直接相联映像方式也只能映像到Cache的块0中。
根据上面给出的地址映像规则,整个Cache地址与主存地址的低位部分是完全相同的。
直接映像方式的地址变换过程如图4-2所示,主存地址中的块号B与Cache地址中的块号b是完全相同的。
同样,主存地址中的块内地址W与Cache地址中的块内地址w也是完全相同的,主存地址比Cache地址长出来的部分称为区号E。
区表存储器图4-2 直接相联地址变换在程序执行过程中,当要访问Cache 时,为了实现主存块号到Cache 块号的变换,需要有一个存放主存区号的小容量存储器,这个存储器的容量与Cache 的块数相等,字长为主存地址中区号E 的长度,另外再加一个有效位。
在主存地址到Cache 地址的变换过程中,首先用主存地址中的块号去访问区号存储器(按地址访问)。
计算机组成原理之C a c h e模拟器的实现实验一 Cache模拟器的实现一.实验目的(1)加深对Cache的基本概念、基本组织结构以及基本工作原理的理解。
(2)掌握Cache容量、相联度、块大小对Cache性能的影响。
(3)掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处。
(4)理解LRU与随机法的基本思想以及它们对Cache性能的影响。
二、实验内容和步骤1、启动Cachesim2.根据课本上的相关知识,进一步熟悉Cache的概念和工作机制。
Cache概念:高速缓冲存Cache工作机制:大容量主存一般采用DRAM,相对SRAM速度慢,而SRAM速度快,但价格高。
程序和数据具有局限性,即在一个较短的时间内,程序或数据往往集中在很小的存储器地址范围内。
因此,在主存和CPU之间可设置一个速度很快而容量相对较小的存储器,在其中存放CPU当前正在使用以及一个较短的时间内将要使用的程序和数据,这样,可大大加快CPU访问存储器的速度,提高机器的运行效率3、依次输入以下参数:Cache容量、块容量、映射方式、替换策略和写策略。
(1)Cache容量:启动CacheSim,提示请输入Cache容量,例如1、2、4、8......。
此处选择输入4。
(2)块容量:如下图所示,提示输入块容量,例如1、2、4、8......。
此处选择输入16。
(3)映射方式:如下图所示,提示输入主存储器和高速缓存之间的assoiativity方法(主存地址到Cache地址之间的映射方式),1代表直接映射(固定的映射关系)、2代表组相联映射(直接映射与全相联映射的折中)、3代表全相联映射(灵活性大的映射关系)。
此处选择全相联映射。
(4)替换策略:如下图所示,提示输入替换策略,1代表先进先出(First-In-First-Out,FIFO)算法、2代表近期最少使用(Least Recently Used,LRU)算法、3代表最不经常使用(Least Frequently Used,LFU)、4代表随机法(Random)。
计算机组成原理实验报告-Cache模拟器的实现实验内容:1、启动CacheSim。
2、根据课本上的相关知识,进一步熟悉Cache的概念和工作机制。
3、依次输入以下参数:Cache容量、块容量、映射方式、替换策略和写策略。
Cache容量块容量映射方式替换策略写策略256KB 8 Byte 直接映射------ -------64KB 32 Byte 4路组相联 LRU -------64KB 32 Byte 4路组相联随机--------8KB 64 Byte 全相联 LRU ---------4、读取cache-traces.zip中的trace文件。
5、运行程序,观察cache的访问次数、读/写次数、平均命中率、读/写命中率。
思考:1、Cache的命中率与其容量大小有何关系?2、Cache块大小对不命中率有何影响?3、替换算法和相联度大小对不命中率有何影响?实验步骤与预习:实验步骤:1、启动CacheSim。
2、根据课本上的相关知识,进一步熟悉Cache的概念和工作机制。
3、依次输入以下参数:Cache容量、块容量、映射方式、替换策略和写策略。
4、读取cache-traces.zip中的trace文件。
5、运行程序,观察cache的访问次数、读/写次数、平均命中率、读/写命中率。
预习:Cache:高速缓冲存储器高速缓冲器是存在于主存与CPU之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。
Cache的功能是用来存放那些近期需要运行的指令与数据。
目的是提高CPU对存储器的访问速度。
工作机制:主要由三大部分组成:Cache存储器:存放由主存调入的指令与数据块。
地址转换部件:建立目录表以实现主存地址到缓存地址的转换。
替换部件:在缓存已满时按照一定的策略进行数据块替换,并修改地址转换部件。
实验结果:一般而言,cache用量越大,其cpu命中率越高,当然容量也没必要太大,当cache 容量达到一定的值时,命中率不因容量的增大而有明显的提高。
计算机体系结构——Cache模拟器实验实验报告姓名崔雪莹学号12281166班级计科1202班老师董岚2015年06月07日一、阅读分析附件模拟器代码 (4)1、关键参数 (4)2、关键算法 (5)二、课后习题 (8)1、习题内容 (8)2、题目分析 (8)3、计算及结果 (9)4、模拟器上实验结果检验 (11)三、整体分析 (15)1、三种映射方式对Cache效率的的影响 (15)2、block块大小与Cache容量对Cache效率的影响 (16)3、Cache容量与相连度对Cache效率的影响 (17)4、三种失效类型影响因素 (18)四、实验思考和感受 (21)1、关于模拟器的思考 (21)2、关于整个实验的思考 (22)一、阅读分析附件模拟器代码1、关键参数(1)用户可见参数:(用户通过命令行输入参数)(2)程序内部主要参数:(代码内部重要参数)2、关键算法注:这里不粘贴代码,只是进行简单的代码算法说明(1)块地址表示:注:图是我按照自己的想法自己画的,可能有些地方并不准确,望老师指正。
图中以一个例子来解释cache模拟器中block和数据地址的关系,以及和组地址和标志位的关系。
(2)Index与tag:由上面计算:index = blockaddress % NOofset index = 16 % 8 = 2tag = blockaddress / Noofset tag = 16/8 = 2以上例,字地址16为例,写成二进制为0001 0010 B,其中组数为8,又因为2^3=8,所以字地址取后3位为:index = 010 B = 2 ,取前29位为:tag = 0…0010 B = 2 。
所以,算法与理论是一致的。
(3)Valid:有效位。
当通过上述方式寻址找到了数据存放的数据块,接下来判断有效位:有效位为1,说明数据是有效的,可以从block提取数据;有效位为0,说明块里的数据是无效的,所以不能从block提取数据,出现miss,此时判断miss类型,同时需要访问内存或下一级存储,将数据放到cache里。
实验一Cache模拟器得实现一、实验目得(1)加深对Cache得基本概念、基本组织结构以及基本工作原理得理解。
(2)掌握Cache容量、相联度、块大小对Cache性能得影响。
(3)掌握降低Cache不命中率得各种方法以及这些方法对提高Cache性能得好处。
(4)理解LRU与随机法得基本思想以及它们对Cache性能得影响.二、实验内容与步骤1、启动Cachesim2、根据课本上得相关知识,进一步熟悉Cache得概念与工作机制。
Cache概念:高速缓冲存Cache工作机制:大容量主存一般采用DRAM,相对SRAM速度慢,而SRAM速度快,但价格高。
程序与数据具有局限性,即在一个较短得时间内,程序或数据往往集中在很小得存储器地址范围内。
因此,在主存与CPU之间可设置一个速度很快而容量相对较小得存储器,在其中存放CPU当前正在使用以及一个较短得时间内将要使用得程序与数据,这样,可大大加快CPU访问存储器得速度,提高机器得运行效率3、依次输入以下参数:Cache容量、块容量、映射方式、替换策略与写策略.(1)Cache容量:启动CacheSim,提示请输入Cache容量,例如1、2、4、8、、、、、、。
此处选择输入4。
(2)块容量:如下图所示,提示输入块容量,例如1、2、4、8、、、、、、。
此处选择输入16。
(3)映射方式:如下图所示,提示输入主存储器与高速缓存之间得assoiativity方法(主存地址到Cache地址之间得映射方式),1代表直接映射(固定得映射关系)、2代表组相联映射(直接映射与全相联映射得折中)、3代表全相联映射(灵活性大得映射关系)。
此处选择全相联映射。
(4)替换策略:如下图所示,提示输入替换策略,1代表先进先出(First-In—First—Out,FIFO)算法、2代表近期最少使用(Least RecentlyUsed,LRU)算法、3代表最不经常使用(Least Frequently Used,LFU)、4代表随机法(Random)。
计组实验报告【实验名称】:基于MIPS的Cache设计与实现【实验目的】:通过设计、模拟和测试基于MIPS的Cache,理解和掌握Cache的基本原理和实现方法,加深对计算机组成原理的理解和应用。
【实验设备】:Xilinx ISE Design Suite 14.7、Verilog HDL仿真工具、Mars模拟器。
【实验原理】Cache是计算机系统中重要的存储器层次结构,它可以提高访问速度,降低访问延迟。
Cache是一种由高速存储器和控制电路组成的存储器,它的作用是缓存主存中最近使用过的指令和数据,当下一次需要使用这些指令和数据时,可以直接从Cache中获取,而不需要访问主存,从而提高访问速度。
计算机系统中的Cache存储器既可以用硬件实现,也可以用软件实现。
MIPS Cache包括指令Cache和数据Cache两个部分。
指令Cache用于存储CPU需要的指令,而数据Cache用于存储CPU需要的数据。
Cache中的每一个存储块叫做一个Cache 行,每一个Cache行包括若干字块,每一个字块包括若干字节。
Cache行的大小一般是2^n 个字节。
Cache使用一种叫做Cache命中的技术,通过判断当前CPU需要的数据是否在Cache中来确定是否需要访问主存。
如果当前CPU需要的数据在Cache中,则称为Cache命中,可以直接从Cache中获取数据;如果当前CPU需要的数据不在Cache中,则称为Cache未命中,需要从主存中获取数据。
Cache有三种常见的替换算法:随机替换算法、先进先出(FIFO)替换算法和最近最少使用(LRU)替换算法。
随机替换算法是最简单的方法,它实现起来比较简单,但是效率不高。
FIFO替换算法是一种比较简单的替换算法,它在实现的时候需要维护一个队列来保证替换最早进入Cache的数据,但是这种算法无法适应程序的访存局部性。
LRU替换算法是一种比较复杂的替换算法,它需要维护一个使用时间序列来记录各数据块被使用的时间,当需要替换时,选择使用时间最旧的数据块替换掉。
延安大学计算机学院实验报告专用纸学号1110218014074 姓名王楠班级计科18 课程名称计算机组成原理实验项目名称Cache控制器设计实验任课教师指导教师实验组别第组同组者教师评语及成绩:实验成绩:教师签字:(请按照实验报告的有关要求书写,一般必须包括:1、实验目的;2、实验内容;3、实验步骤与方法;4、实验数据与程序清单;5、出现的问题及解决方法;6、实验结果、结果分析与体会等内容。
)【1】实验目的(1)掌握Cache控制器的原理及其设计方法。
(2)熟悉CPLD应用设计及EDA软件的使用。
【2】实验原理1、采用直接映像方式的cache控制器图1直接映像方式2、采用CPU首先访问Cache,若在Cache中找不到目标地址,则从MEM单元中读入到Cache。
图2 Cache系统框图3、按区号、块号、块内地址访问目标地址,系统默认存储每个块的首地址,若同时访问同一块中的其他地址,将出现新访问的地址覆盖与之在同一块的另一块号。
【3】实验步骤(1)使用Quartus II 软件编辑实现相应的逻辑并进行编译,直到编译通过,Cache 控制器在EPM1270芯片中对应的引脚如图2-2-5所示,框外文字表示IO号,框内文字表示该引脚的含义(本实验例程见‘安装路径\Cpld \CacheCtrl\CacheCtrl.qpf’工程)(2)关闭实验系统电源,按图2-2-6连接实验电路,并检查无误,图中将用户需要连接的信号用圆圈标明(3)打开实验系统电源,将生成的POF文件下载到EMP1270中去,CPLD单元介绍见实验1.2。
(4)将时序与操作台单元的开关KK3置为‘运行’档,CLR信号由CON单元的CLR模拟给出,按动CON单元的CLR按钮,清空区表。
(5)预先往主存写入数据:联机软件提供了机器程序下载功能,以代替手动读写主存,机器程序以指定的格式写入到以TXT为后缀的文件中,机器指令的格式如下:如$P 1F 11,表示机器指令的地址为1FH,指令值为11H,本次实验只初始化00-0FH共16个单元,初始数据如下,程序中分号‘;'为注释符,分号后面的内容在下载时将被忽略掉。
cache计算机组成原理小伙伴们!今天咱们来唠唠计算机组成原理里超级有趣的一个东西——Cache(高速缓冲存储器)。
你可以把计算机想象成一个超级大的办公室。
这里面有各种各样的员工(部件)在忙忙碌碌地干活。
而Cache呢,就像是办公室里最机灵的小秘书。
为啥这么说呢?你想啊,CPU(中央处理器)这个大老板,每天都要处理好多好多的数据,就像大老板每天要做各种决策一样。
这些数据呢,原本是放在内存这个大仓库里的。
可是呀,内存离CPU有点远,每次CPU要找个数据,就像大老板要从老远的大仓库里找个文件一样,特别费时间。
这时候,Cache就闪亮登场啦。
Cache这个小秘书特别聪明,它就在CPU的身边,离得超级近。
它就像有个超能力,会提前猜一猜CPU这个大老板接下来可能会用到哪些数据。
然后呢,它就偷偷地从内存这个大仓库里把那些可能会用到的数据拿过来,放在自己这里。
当CPU说:“我要找个数据啦。
”Cache就会特别快地说:“老板,你要的是不是这个呀?”然后一下子就把数据给CPU了。
这速度,就像闪电一样快。
Cache这个小秘书呀,它的存储空间可没有内存那么大。
它就像是一个小巧精致的文件柜,虽然装不了太多东西,但是放的都是最最常用的文件。
比如说,你每天都要用到的办公软件的一些小设置之类的。
它把这些常用的数据放在身边,就为了能让CPU快速拿到。
那Cache是怎么知道哪些数据是常用的呢?这就像是小秘书有自己的小秘诀。
它会根据数据被访问的频率呀,还有一些算法来判断。
就好像小秘书会观察,哪些文件大老板经常看,哪些偶尔才看一次。
经常看的就牢牢放在自己身边的小文件柜里,不常看的就先放一边。
有时候呀,也会出点小状况。
比如说,Cache以为CPU会用到某个数据,就把它从内存里拿过来了,结果CPU要的是另外一个数据。
这就像小秘书猜错了大老板的心思。
不过没关系呀,Cache会很快调整自己的策略,再去内存里找正确的数据。
而且呢,Cache还有不同的级别。
cache映射机制与逻辑实现在计算机系统中,cache映射机制与逻辑实现是一项重要的技术,它可以有效提高系统的性能和响应速度。
cache映射机制是指如何将主存中的数据映射到cache中的方法,而逻辑实现则是指在这个过程中的具体实现细节。
一种常见的cache映射机制是直接映射。
在直接映射中,主存中的每个块只能映射到cache中的一个特定位置,这个位置是通过块地址的某些位来确定的。
当需要访问某个块时,系统会首先检查cache 中是否已经有了这个块的副本,如果有,则直接从cache中读取数据,否则需要从主存中加载这个块到cache中。
这种映射机制简单高效,但容易发生冲突,即不同块映射到同一个cache位置的情况。
为了解决冲突问题,还有一种常见的映射机制是全相联映射。
在全相联映射中,主存中的每个块可以映射到cache中的任意一个位置,系统通过比较块地址来确定要替换的位置。
这种映射机制可以减少冲突,但需要更复杂的逻辑实现,并且会增加访问延迟。
另一种常见的映射机制是组相联映射。
在组相联映射中,cache被分成多个组,每个组包含多个位置,同一个组内的位置是直接映射的,不同组之间是全相联的。
这种映射机制综合了直接映射和全相联映射的优点,既简单高效又能减少冲突。
在实际的系统中,通常会根据应用场景和性能需求选择合适的cache映射机制。
不同的映射机制会影响系统的性能、功耗和复杂度,需要在设计阶段进行权衡和选择。
除了映射机制,还有一些其他因素会影响cache的性能,比如替换策略、写策略和预取策略等。
替换策略决定了当cache已满时如何选择哪个位置替换,常见的替换策略有最近最少使用(LRU)和随机替换。
写策略决定了写操作是先写cache还是同时写主存,常见的写策略有写回和写直达。
预取策略则用于提前加载可能会被访问的数据块到cache中,以提高命中率。
cache映射机制与逻辑实现是计算机系统中重要的技术,它直接影响了系统的性能和响应速度。
cache映射机制与逻辑实现Cache映射机制与逻辑实现在计算机系统中,缓存(Cache)被广泛应用于提高数据访问的速度和效率。
而缓存的映射机制则是决定数据在缓存中存储位置的重要因素之一。
在本文中,我们将探讨缓存的映射机制以及其逻辑实现方式。
一、缓存映射机制1. 直接映射(Direct Mapping):直接映射是最简单和最常见的缓存映射方式之一。
在直接映射中,每个主存块只能映射到缓存中的一个特定位置。
具体而言,主存块的地址的某几位被用来索引缓存中的位置,另外的几位则用来标记主存块的唯一性。
这种映射方式简单直接,但容易引起冲突,即不同的主存块可能映射到同一个缓存位置上。
2. 全相联映射(Fully Associative Mapping):全相联映射是一种灵活的映射方式,其中主存块可以映射到任意一个缓存位置上。
在全相联映射中,每个缓存位置都存储了主存块的标记信息,以便在访问时进行匹配。
全相联映射方式避免了直接映射的冲突问题,但由于需要比较所有缓存位置的标记信息,访问速度相对较慢。
3. 组相联映射(Set Associative Mapping):组相联映射是直接映射和全相联映射的折中方案。
在组相联映射中,缓存被分成多个组,每个组包含多个缓存位置。
主存块被映射到一个特定的组中,然后在该组内进行查找。
这种映射方式既能减少冲突,又能提高效率。
二、逻辑实现缓存的逻辑实现是通过硬件和软件相结合来完成的。
硬件部分主要包括缓存控制器、标记比较器、替换逻辑等;而软件部分则包括缓存管理算法、写策略等。
1. 缓存控制器:缓存控制器是缓存系统的核心组件,负责缓存和主存之间的数据传输、命中检测、替换等操作。
缓存控制器的设计需要考虑到硬件成本和性能需求之间的平衡。
2. 标记比较器:标记比较器用于比较主存块的标记信息和缓存位置中存储的标记信息是否匹配。
在直接映射和组相联映射中,标记比较器起着至关重要的作用。
3. 替换逻辑:当缓存位置已经被占用,而新的主存块需要被加载到缓存中时,替换逻辑就会发挥作用。
Cache 模拟实验1、原理在计算机系统中,缓存技术无处不在。
在整个存储系统中,寄存器是高速缓存的缓存,高速缓存是内存的缓存,内存又是硬盘的缓存,而硬盘又是网络设备的缓存。
在空间上,靠近CPU 的存储器是远离CPU 的缓存,而且越靠近CPU 存储器的速度越快,容量越小,单位存储的价格越高,这些存储器构成的计算机存储系统更像一座山——存储器山,图中仅展示了3级存储,如下图:靠近CPU 方向速度高容量小单位存储价格高速度低容量大单位存储价格低远离CPU 方向当CPU 访问存储器时,是从最靠近它的存储器来查找,如果要存储的内容不在靠近它的存储器中,再从下一级存储器中读取一块,如果下一级存储器中也没有找到要存储的内容,就再在下下一级存储器中读取一块,这个过程将一直延续到最底层存储器。
当要存储的内容调入到靠近它的存储器中之后,CPU再从其中存取所需的内容。
这个过程就叫Cache。
Cache是以块为单位进行的,块的大小有上层存储的大小来决定,一般Cache用一个4元组来描述——(S,E,B,m),S是上层存储器的分组数,用s来表示S占用的位数,E是每个组中包含的行数,B是一行中真正存储数据的字节数,用b来表示B占用的位置,m是存储系统的地址线的宽度。
为了便于Cache的管理还要有一个标志位,用来标识本行数据是否有效,这个有效标志不会出现在内存地址中;除此之外,还有标志位,这个标志位是出现在内存地址中的,我们用t 来表示。
内存地址,包含t,s和b。
如下图:t bits 标志s bits 组索引上图就是Cache的一行的单独内容,整个Cache就是这样的数据结构的集合,现在举个例子来综合进行说明,假如m=8,b=2,E=1,s=2,那么t就等于m-b-s,也就是t=4。
此外E=1,也就是每一个组中包含一行。
CPU假如读取0x00地址的内容,从Cache中读取要分3步进行,首先,确定组,地址0x00的二进制表示 0000 0000B,bit2和bit3,就是组的索引,可以确定是第0组。
cache控制器设计实验课程设计一、课程目标知识目标:1. 让学生理解Cache控制器的基本原理和功能,掌握Cache的工作流程和设计要点。
2. 使学生掌握Cache映射技术和替换策略,并能分析其优缺点。
3. 帮助学生了解Cache性能评估指标,学会使用相关工具进行性能分析。
技能目标:1. 培养学生运用所学知识进行Cache控制器设计的能力,能够完成简单的Cache控制器电路搭建和调试。
2. 提高学生运用相关软件工具进行Cache性能分析和优化方案设计的能力。
情感态度价值观目标:1. 培养学生对计算机组成原理和硬件设计的兴趣,激发学生的创新意识和探索精神。
2. 培养学生良好的团队协作精神,提高沟通与表达能力。
3. 引导学生认识到Cache技术在我国计算机产业发展中的重要性,增强学生的国家使命感和责任感。
课程性质分析:本课程为计算机组成原理与设计领域的实验课程,以Cache控制器设计为主题,结合理论知识,培养学生的实践能力和创新能力。
学生特点分析:学生具备一定的计算机组成原理知识,具有一定的编程和硬件基础,但对Cache控制器设计的相关知识掌握不足,需要通过本课程进行深入学习。
教学要求:1. 结合理论知识,注重实践操作,提高学生的动手能力。
2. 引导学生主动探索,培养学生的创新思维。
3. 强化团队合作,锻炼学生的沟通与协作能力。
4. 注重过程评价,关注学生的学习成果和素质提升。
二、教学内容1. Cache基础知识回顾:介绍Cache的概念、作用,以及Cache与主存、CPU的关系。
相关教材章节:第一章 计算机系统概述2. Cache控制器设计原理:讲解Cache控制器的基本组成、工作原理,重点介绍Cache映射技术、替换策略和写策略。
相关教材章节:第三章 存储系统3. Cache控制器设计方法:介绍Cache控制器的设计流程,包括电路设计、仿真和验证等环节。
相关教材章节:第六章 数字电路设计4. Cache性能评估:讲解Cache性能指标,如命中率、缺失率等,介绍性能评估方法和工具。
MyCache模拟器使用方法
1. 启动模拟器:用鼠标双击MyCache.exe。
2. 系统会打开一个操作界面。
该界面的左边为设置模拟参数区域,右边为模拟结果显示区域。
如图所示。
3. 可以设置的参数包括:是统一Cache还是分离Cache,Cache的容量,块大小,相联度,替换算法,预取策略,写策略,写不命中时的调块策略。
可以直接从列表里选择。
4. 访问地址可以选择来自地址流文件,也可以选择手动输入。
如果是前者,则可以通过点击“浏览”按钮,从模拟器所在文件夹下面的“地址流”文件夹中选取地址流文件(.din文件),然后进行执行。
执行的方式可以是步进,也可以是一次执行到底。
如果选择手动输入,就可以在“执行控制”区域中输入块地址,然后点击“访问”按钮。
系统会在界面的右边显示访问类型、地址、块号以及块内地址。
5. 模拟结果包括:
(1)访问总次数,总的不命中次数,总的不命中率;
(2)读指令操作的次数,其不命中次数及其不命中率;
(3)读数据操作的次数,其不命中次数及其不命中率;
(4)写数据操作的次数,其不命中次数及其不命中率;
(5)手动输入单次访问的相关信息。
图MyCache模拟器的操作界面示意图。
主存由2n个可编址的字组成,每个字有惟一的n位地址。
为了与映射,将主存与缓存都分成若干块,每块内又包含若干个字,小相同(即块内的字数相同)。
这就将主存的地址分成两段:高它主要由 Cache存储体、地址映射变换机构、 Cache替换机构几大模块组成。
①Cache存储体:以块为单位与主存交换信息,为加速 Cache与主存之间的调动,主存大多采用多体结构,且 Cache访存的优先级最高。
②地址映射变换机构:是将CPU送来的主存地址转换为 Cache地址。
由于主存和 Cache的块大小相同,块内地址都是相对于块的起始地址的偏移量(即低位地址相同),因此地址变换主要是主存的块号(高位地址)与 Cache块号间的转换。
而地址变换又与主存地址以什么样的函数关系映射到 Cache中(称为地址映射)有关,这些内容可详见4.3.2节。
如果转换后的 Cache块已与CPU欲访问的主存块建立了对应关系,即已命中,则CPU可直接访问 Cache存储体。
如果转换后的 Cache块与CPU欲访问的主存块未建立对应关系,即不命中,此刻CPU在访问主存时,不仅将该图中每个主存块只与一个缓存块相对应,映射关系式为:总之,这种方式所需的逻辑电路甚多,成本较高,实际的 Cache还要采用各种措施来减少地处的比较次数。
组相联映射组相联映射是对直接映射和全相联映射的一种折中。
它把 Cache分为每组有R块,并有以下关系:i=j mod Q其中,i为援存的组号,j为主存的块号。
某一主存块按模Q将其映射到缓存的第i组内,如图4.56所示。
组相联映射的主存地址各段与直接映射(参见图4.54)相比,还是有区别的。
图4.54 Cache字块地址字段由c位变为组地址字段q位,且q=C-r,其中2c表示 Cache的总块数,2q表示 Cache的分组个数,2r表示组内包含的块数。
主存字块标记字段由t 位变为s=t+r位。
为了便于理解,假设c=5,q=4,则r=c-q=1。
实验一Cache模拟器的实现
一.实验目的
(1)加深对Cache的基本概念、基本组织结构以及基本工作原理的理解。
(2)掌握Cache容量、相联度、块大小对Cache性能的影响。
(3)掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处。
(4)理解LRU与随机法的基本思想以及它们对Cache性能的影响。
二、实验内容和步骤
1、启动Cachesim
2.根据课本上的相关知识,进一步熟悉Cache的概念和工作机制。
Cache概念:高速缓冲存
Cache工作机制:大容量主存一般采用DRAM,相对SRAM速度慢,而SRAM速度快,但价格高。
程序和数据具有局限性,即在一个较短的时间内,程序或数据往往集中在很小的存储器地址范围内。
因此,在主存和CPU之间可设置一个速度很快而容量相对较小的存储器,在其中存放CPU当前正在使用以及一个较短的时间内将要使用的程序和数据,这样,可大大加快CPU访问存储器的速度,提高机器的运行效率
3、依次输入以下参数:Cache容量、块容量、映射方式、替换策略和写策略。
(1)Cache容量:
启动CacheSim,提示请输入Cache容量,例如1、2、4、8......。
此处选择输入4。
(2)块容量:
如下图所示,提示输入块容量,例如1、2、4、8......。
此处选择输入16。
(3)映射方式:
如下图所示,提示输入主存储器和高速缓存之间的assoiativity方法(主存地址到Cache地址之间的映射方式),1代表直接映射(固定的映射关系)、2代表组相联映射(直接映射与全相联映射的折中)、3代表全相联映射(灵活性大的映射关系)。
此处选择全相联映射。
(4)替换策略:
如下图所示,提示输入替换策略,1代表先进先出(First-In-First-Out,FIFO)算法、2代表近期最少使用(Least Recently Used,LRU)算法、3代表最不经常使用(Least Frequently Used,LFU)、4代表随机法(Random)。
此处选择先进先出。
(5)写策略:
如下图所示,提示输入Cache的读写操作,1代表写直达法(存直达法)即写操作时数据既写入Cache又写入主存、2代表写回法(拷回法)即写操作时只把数据写入Cache而不写入主存,但当Cache数据被替换出去时才写回主存。
此处选写回法
4、读取cache-traces.zip中的trace文件。
如下图所示,提示输入要测试的路径及名称,此处输入Cache-trace.zip的路径,以及需要读取的trace文件名,此处选择读取mcf.trace。
5、运行程序,观察cache的访问次数、读/写次数、平均命中率、读/写命中率。
如下图所示,读取mcf.trace文件,程序运行结果如下:
访问次数读出次数写入次数平均命中率读出命中率写入命中率727230 5972 721258 74.8615% 60.6999% 74.9787%
(1)高速缓存访问次数:727230
(2)高速缓存次数:5972
(3)cache存储次数:721258
(4)平均缓存命中率:74.8615%
(5)高速缓存命中率:60.6999%
(6)缓存命中率:74.9787%
思考:1、Cache的命中率与其容量大小有何关系?
(1)当Cache块容量为8B、Cache容量为8KB时,平均命中率为1.02017%. (2)当Cache块容量为8B、Cache容量为16KB时,平均命中率为1.02334%.(3)当Cache块容量为8B、Cache容量为32KB时,平均命中率为1.03695%.
(4)当Cache块容量为8B、Cache容量为64KB时,平均命中率为1.0375%.(5)当Cache块容量为8B、Cache容量为128KB时,平均命中率为1.03791%.
当Cache块容量为8B时,不同Cache容量下的命中率如下图所示:
Cache容量8 16 32 64 128
平均命中率 1.02017% 1.02334% 1.03695% 1.0375% 1.03791% 由上述图中数据及表格数据可知,当Cache块容量一定时,Cache容量越大,其cache的命中率越高。
2、Cache块大小对不命中率有何影响?
(1)当Cache块容量为8KB、Cache容量为8B时,平均命中率为1.02017%. (2)当Cache块容量为16KB、Cache容量为8B时,平均命中率为50.4872%. (3)当Cache块容量为32KB、Cache容量为8B时,平均命中率为75.2232%.
(4)当Cache块容量为64KB、Cache容量为8B时,平均命中率为87.5903%. (5)当Cache块容量为128KB、Cache容量为8B时,平均命中率为93.768%.
当Cache容量为8kB时,不同Cache容量下的命中率如下图所示:
8 16 32 64 128 Cache块容
量
平均命中率 1.02017% 50.4872% 75.2232% 87.5903% 93.768% 由上述图中数据及表格数据可知,当Cache容量一定时,Cache块容量越大,其cache的命中率越高。
则其不命中率越低。
3、替换算法和相联度大小对不命中率有何影响?
(1)当相联度大小保持一致,均为二路组相联映射时
替换策略为先进先出算法时:
当相联度为二路组相联映射,替换策略为先进先出算法时,此时cache平均命中率为0.0912598%。
替换策略为近期最少使用算法时:
当相联度为二路组相联映射,替换策略为近期最少使用算法时,此时cache平均命中率为66.6438%。
(2)当替换算法保持一致,均为先进先出算法时:
相联度大小为二路:
当替换策略为先进先出算法时,相联度大小为二路组相联映射时,此时cache 平均命中率为0.0912598%。
相联度大小为四路:
当替换策略为先进先出算法时,相联度大小为四路组相联映射时,此时cache 平均命中率为0.0904283%。
当替换策略为近期最少使用时,相联度大小为四路组相联映射时,此时cache 平均命中率为0.0904283%
由上述数据可知,当保持相联度大小一致时,替换策略为近期最少使用算法的命中率高于先进先出算法的命中率。
当保持替换策略一致时,相联度大小为二路组相联的命中率高于四路组相联的命中率。
三.实验结果分析
根据实验内容及上述数据结果可知:
1.Cache 容量不同时它的命中率也会随之改变;
当Cache 块容量一定时,Cache 容量越大,其CPU 的平均命中率越高
2.Cache 块大小不同时对命中率也会有影响。
Cache 块容量越大,其不命中率越低
3.替换算法和相联度对命中率也有影响.
由实验数据可知,当保持相联度大小一致时,替换策略为近期最少使用算法的命中率高于先进先出算法的命中率。
当保持替换策略一致时,相联度大小为二路组相联的命中率高于四路组相联的命中率。
其中替换算法对命中率的影响比较大,而相联度大小对命中率的影响小一些,在实际工作中为了提高命中率我们应该选择合适的算法。
具体实验数据如下表所示:
(1)当输入cache 容量为8b ,cache 块容量为32kb 时出现以下数据:
(2)当Cache 块容量为8B 时,不同Cache 容量下的命中率如下图所示: Cache 容量 8 16 32 64 128 平均命中率
1.02017%
1.02334%
1.03695%
1.0375%
1.03791%
(3)当Cache 容量为8kB 时,不同Cache 容量下的命中率如下图所示:
访问次数 读出次数 写入次数 平均命中率
读出命中率 写入命中率
727230 5972 721258 74.8615%
60.6999%
74.9787%
(4)当控制相联度为2或4时,改变替换策略cache的命中率如下图:
四.实验心得
1.通过此次的实验我发现当输入的cache容量一定时,改变cache块容量的大小则cache的命中率会改变,规律是cache块容量的值越大,则cache命中率越高,反之亦然。
2.当cache块容量一定时,cache命中率因为cache容量变大而变大。
3.通过这次的试验我发现书本上的很多理论都是要自己做,这样才会对实验结果及的更加牢固。
以后要好好学习多做实验争取发现书本上没有写的东西这样才可以将这门课学好。
4.准备越充分,实验越顺利。
古人云,磨刀不误砍柴工。
前期的知识储备、文献储备、材料准备、方法准备可以避免手忙脚乱,充分的预实验使你充满信心。
一步一个脚印,就不必“从头再来”。
最不能容忍的是在开始的几步偷懒,造成后面总有一些无法排除的障碍。