计算机系统结构——Cache性能分析
一、实验目的
- 加深对Cache的基本概念、基本组织结构以及基本工作原理的理解。
- 掌握Cache容量、相联度、块大小对Cache性能的影响。
- 掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处。
- 理解LRU与随机法的基本思想以及它们对Cache性能的影响。
二、实验平台
实验平台采用Cache模拟器MyCache。
三、实验内容及步骤
首先要掌握MyCache模拟器的使用方法。
1、Cache容量对不命中率的影响
- 启动MyCache。
- 用鼠标点击“复位”按钮,把各参数设置为默认值。
- 选择一个地址流文件。方法:选择“访问地址”→“地址流文件”选项,然后点击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
- 选择不同的Cache容量,包括:2KB,4KB,8KB,16KB,32KB,64KB,128KB,256KB,分别执行模拟器(单击“执行到底”按钮即可执行),然后在表A.4.1中记录各种情况下的不命中率。
- 以容量为横坐标,画出不命中率随Cache容量变化而变化的曲线。并指明地址流文件名。
- 根据该模拟结果,你能得出什么结论?
- Cache容量越大,不命中率越低,增加Cache容量可以有效地减少Cache的不命中率。
表A.4.1 不同容量下Cache的不命中率
Cache容量(KB) | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 |
不命中率 | 9.87% | 7.19% | 4.48% | 2.65% | 1.42% | 0.89% | 0.60% | 0.49% |
地址流文件名: all.din
2、相联度对不命中率的影响
- 用鼠标单击“复位”按钮,把各参数设置为默认值。此时的Cache容量为64KB。
- 选择一个地址流文件。方法:选择“访问地址”→“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
- 选择不同的Cache相联度,包括:直接映象,2路,4路,8路,16路,32路,分别执行模拟器(单击“执行到底”按钮即可执行),然后在表A.4.2中记录各种情况下的不命中率。
- 把Cache的容量设置为256KB,重复(3)的工作,并填写表A.4.3。
- 以相联度为横坐标,画出在64KB和256KB的情况下不命中率随Cache相联度变化而变化的曲线。并指明地址流文件名。
- 根据该模拟结果,你能得出什么结论?
-
相联度越高,不命中率越低,提高相联度可以减少Cache的不命中率。
表A.4.2 当容量为64KB时,不同相联度下Cache的不命中率
相联度 | 1 | 2 | 4 | 8 | 16 | 32 |
不命中率 | 1.97% | 1.15% | 0.99% | 0.93% | 0.92% | 0.91% |
地址流文件名: cc1.din
表A.4.3 当容量为256KB时,不同相联度下Cache的不命中率
相联度 | 1 | 2 | 4 | 8 | 16 | 32 |
不命中率 | 0.98% | 0.78% | 0.74% | 0.73% | 0.71% | 0.71% |
地址流文件名: cc1.din
3、Cache块大小对不命中率的影响
- 用鼠标单击“复位”按钮,把各参数设置为默认值。
- 选择一个地址流文件。方法:选择“访问地址”→“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
- 选择不同的Cache块大小,包括:16B,32B,64B,128B,256B,对于Cache的各种容量,包括:2KB,8KB,32KB,128KB,512KB,分别执行模拟器(单击“执行到底”按钮即可执行),然后在表A.4.4中记录各种情况下的不命中率。
- 分析Cache块大小对不命中率的影响。
- 增强了空间局部性,减少了强制性不命中;减少了Cache中块的数目,所以有可能会增加冲突不命中。
表A.4.4 各种块大小情况下Cache的不命中率
块大小 (B) | Cache容量(KB) | ||||
2 | 8 | 32 | 128 | 512 | |
16 | 7.80% | 7.40% | 7.20% | 7.20% | 7.20% |
32 | 5.40% | 5.00% | 4.70% | 4.70% | 4.70% |
64 | 4.00% | 3.40% | 3.10% | 3.10% | 3.10% |
128 | 4.40% | 3.30% | 2.40% | 2.40% | 2.40% |
256 | 6.50% | 5.10% | 1.90% | 1.90% | 1.90% |
地址流文件名: eg.din
4、替换算法对不命中率的影响
- 用鼠标单击“复位”按钮,把各参数设置为默认值。
- 选择一个地址流文件。方法:选择“访问地址”→“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
- 对于不同的替换算法、Cache容量和相联度,分别执行模拟器(单击“执行到底”按钮即可执行),然后在表A.4.5中记录各种情况下的不命中率。
- 分析不同的替换算法对Cache不命中率的影响。
-
在Cache容量较小时,LRU算法的不命中率低于随机算法,当Cache容量较大时,两者差距不明显。
表A.4.5 LRU和随机替换法的不命中率的比较
Cache 容量 | 相 联 度 | |||||
2 路 | 4 路 | 8 路 | ||||
LRU | 随机算法 | LRU | 随机算法 | LRU | 随机算法 | |
16KB | 1.06% | 1.73% | 0.66% | 1.09% | 0.53% | 1.84% |
64KB | 0.25% | 0.28% | 0.22% | 0.26% | 0.22% | 0.36% |
256KB | 0.21% | 0.21% | 0.21% | 0.21% | 0.21% | 0.21% |
1MB | 0.21% | 0.21% | 0.21% | 0.21% | 0.21% | 0.21% |
地址流文件名: spice.din
四、MyCache模拟器使用方法
1. 启动模拟器:用鼠标双击MyCache.exe。
2. 系统会打开一个操作界面。该界面的左边为设置模拟参数区域,右边为模拟结果显示区域。如图A.4.1所示。
3. 可以设置的参数包括:是统一Cache还是分离Cache,Cache的容量,块大小,相联度,替换算法,预取策略,写策略,写不命中时的调块策略。可以直接从列表里选择。
4. 访问地址可以选择来自地址流文件,也可以选择手动输入。如果是前者,则可以通过点击“浏览”按钮,从模拟器所在文件夹下面的“地址流”文件夹中选取地址流文件(.din文件),然后进行执行。执行的方式可以是步进,也可以是一次执行到底。如果选择手动输入,就可以在“执行控制”区域中输入块地址,然后点击“访问”按钮。系统会在界面的右边显示访问类型、地址、块号以及块内地址。
5. 模拟结果包括:
(1)访问总次数,总的不命中次数,总的不命中率;
(2)读指令操作的次数,其不命中次数及其不命中率;
(3)读数据操作的次数,其不命中次数及其不命中率;
(4)写数据操作的次数,其不命中次数及其不命中率;
(5)手动输入单次访问的相关信息。
图A.4.1 MyCache模拟器的操作界面示意图