计算机系统结构——Cache性能分析
选择不同的Cache块大小,包括:16B,32B,64B,128B,256B,对于Cache的各种容量,包括:2KB,8KB,32KB,128KB,512KB,分别执行模拟器(单击“执行到底”按钮即可执行),然后在表A.4.4中记录各种情况下的不命中率。3. 可以设置的参数包括:是统一Cache还是分离Cache,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模拟器的操作界面示意图
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)