【计算机体系结构实验】Cache 性能分析

实验四 Cache 性能分析

一.实验目的:

(1) 加深对Cache的基本概念、基本组织结构以及基本工作原理的理解。
(2) 掌握Cache容量、相联度、块大小对Cache性能的影响。
(3) 掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处。
(4) 理解LRU与随机法的基本思想以及它们对Cache性能的影响。

二.实验平台:

实验平台采用Cache模拟器MyCache。

三.实验内容和步骤:

1. MyCache 模拟器的使用方法:

(1) 双击 MyCache.exe,启动模拟器。
(2) 系统打开操作界面,如下图所示:
(3) 可以设置的参数包括 Cache 的容量、 块大小、 相联度、 替换算法、 预取策略、 写策略、写不命中时的调块策略。可以直接从列表中选择。
(4)访问地址可以选择来自地址流文件, 也可以选择手动输入。 如果是前者, 则可以通过单击“浏览”按钮,从模拟器所在文件夹下的“地址流”文件夹中选取地址流文件( .din)文件,然后执行。执行得方式可以是单步,也可以选择一次执行结束。如果选择手动输入,就可以在“执行控制”区域中输入块地址,然后单击“访问”按钮。系统会在界面的右边显示访问类型、地址、块号以及块内地址。
(5) 模拟结果包括:
a) 访问总次数,总的不命中次数,总的不命中率。
b) 读指令操作的次数,其不命中次数及其不命中率。
c) 读数据操作的次数,其不命中次数及其不命中率。
d) 写数据操作的次数,其不命中次数及其不命中率。
e) 手动输入单次访问的相关信息。

2.Cache容量对不命中率的影响。

(1)启动MyCache。
(2)用鼠标单击“复位”按钮,把各参数设置为默认值。
(3)选择一个地址流文件。方法:选择“访问地址”—>“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在文件夹下的“地址流”文件夹中选取。
(4)选择不同的Cache容量,包括2KB、4KB、8KB、16KB、32KB、64KB、128KB和256KB。分别执行模拟器(单击“执行到底”按钮即可执行),然后在表4.1中记录各种情况下的不命中率。
表4.1 不容量下Cache的不命中率
Cache容量(KB) 2 4 8 16 32 64 128 256
不命中率 9.78% 7.19% 4.48% 2.65% 1.42% 0.89% 0.42% 0.40%
地址流文件名:all.din。
(5)以容量为横坐标,画出不命中率随Cache容量变化而变化的曲线,并指明地址流文件名。

(6)根据该模拟结果,你能得出什么结论?
答:_根据实验结果可以看出,Cache的不命中率随着Cache容量的增大而降低,但当容量增大到一定程度后(256KB),再增大Cache的容量变化就不明显了。

3.相联度对不命中率的影响

(1)用鼠标单击“复位”按钮,把各参数设置为默认值。此时的Cache容量为64KB。
(2)选择一个地址流文件。方法:选择“访问地址”—>“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在文件夹下的“地址流”文件夹中选取。
(3)选择不同的Cache相联度,包括2路、4路、8路、16路和32路。分别执行模拟器(单击“执行到底”按钮即可执行),然后在表4.2中记录各种情况下的不命中率。
表4.2 当容量为64KB时,不同相联度下Cache的不命中率
相联度 1 2 4 8 16 32
不命中率 0.89% 0.53% 0.47% 0.45% 0.44% 0.44%
地址流文件名:all.din。
(4)把Cache的容量设置为256KB,重复3)的工作,并填写表4.3.
表4.3 当容量为256KB时,不同相联度下Cache的不命中率
相联度 1 2 4 8 16 32
不命中率 0.49% 0.38% 0.36% 0.36% 0.35% 0.35%
(5)以相联度为横坐标,画出在64KB和256KB的情况下不命中率随Cache相联度变化而变化的曲线,并指明地址流文件名。

(6)根据该模拟结果,你能得出什么结论?
答:从图中可以看出,提高相联度可以降低Cache不命中率。但随着相联度提到到一定程度后(8路相联),再提高相联度Cache的不命中率几乎不变了。

4. Cache块大小对不命中率的影响

(1)用鼠标单击“复位”按钮,把各参数设置为默认值。
(2)选择一个地址流文件。方法:选择“访问地址”—>“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在文件夹下的“地址流”文件夹中选取。
(3)选择不同的Cache块大小,包括16B、32B、64B、128B和256B。对于 Cache的各种容量,包括2KB、8KB、32KB、64KB、128KB和512KB。分别执行模拟器(单击“执行到底”按钮即可执行),然后在表4.4中记录各种情况下的不命中率。
表4.4 各种块大小情况下Cache的不命中率
块大小
(B) Cache容量(KB)
2 8 32 128 512
16 12.02% 5.79% 1.86% 0.95% 0.71%
32 9.38% 4.48% 1.42% 0.60% 0.42%
64 9.36% 4.03% 1.20% 0.43% 0.27%
128 10.49% 4.60% 1.08% 0.35% 0.20%
256 13.45% 5.35% 1.19% 0.34% 0.16%
地址流文件名:all.din。
(4)分析Cache块大小对不命中率的影响。
答:从上图可以看出,当Cache容量一定的时候,若增大Cache块大小,Cache的不命中率先是下降,然后反升。这是因为增加块大小会产生双重作用: (1)增加了空间局部性,减少了强制性不命中;(2)减少了Cache中块的数目,所以有可能增加冲突不命中。当块比较小时,第(1)种作用会超过(2)种作用,使不命中率下降:当块比较大时,第(2)种作用超过第(1)种作用,反而使不命中率上上升。

5. 替换算法对不命中率的影响

(1)用鼠标单击“复位”按钮,把各参数设置为默认值。
(2)选择地址流文件all. din。方法:选择“访问地址”—>“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在文件夹下的“地址流”文件夹中选取。
(3)对于不同的替换算法、Cache容量和相联度,分别执行模拟器(单击“执行到底”按钮即可执行),然后在表4.5中记录各种情况下的不命中率。
表4.5 LRU和随机替换法的不命中率的比较
Cache容量 相联度
2路 4路 8路
LRU 随机算法 LRU 随机算法 LRU 随机算法
16KB 1.71% 2.13% 1.33% 1.92% 1.21% 2.10%
64KB 0.53% 0.65% 0.47% 0.63% 0.45% 0.61%
256KB 0.38% 0.39% 0.36% 0.37% 0.36% 0.36%
1MB 0.35% 0.35% 0.35% 0.35% 0.35% 0.35%
(4)分析不同的替换算法对Cache不命中率的影响。
答:从上表数据和图示曲线可以看出,无论相联度是多大,在Cache容量比较小时,LRU法的不命中率低于随机法,但当Cache容量增加到一定程度之后(256KB), LRU法和随机法已经没有太大的差别了。

  • 23
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
缓存是现代计算机系统中的重要组成部分,主要作用是提高计算机处理数据时的效率。缓存的原理是将计算机处理数据时经常用到的数据存储在靠近处理器的高速缓存中,以提高数据的访问速度和处理效率。 缓存的性能主要取决于其大小和命中率。缓存的大小是指缓存可以存储多少数据,通常以字节为单位进行计算。缓存的命中率是指程序访问的数据中,有多少数据被存储在缓存中。当程序访问数据时,如果数据已经存储在缓存中,则称为“命中”,否则称为“未命中”。 为了评估缓存的性能,我们可以进行一系列实验。我们可以编写一个简单的程序,在程序中模拟数据访问的过程,然后使用valgrind工具来监测程序的内存使用情况和cache的使用情况。通过分析实验结果,我们可以得出缓存的性能表现,并确定如何优化缓存性能。 例如,我们可以测试程序在没有使用缓存的情况下的性能,这样可以确定程序的基准性能。接下来,我们可以测试程序在使用缓存的情况下的性能,这样可以确定缓存对程序性能的影响。我们可以测试不同缓存大小的情况下程序的性能,这样可以确定缓存大小对程序性能的影响。最后,我们可以测试不同缓存大小的情况下,cache命中率的变化,这样可以确定缓存大小和命中率之间的关系。 总之,通过对缓存性能实验分析,可以帮助我们了解缓存的工作原理和性能特征,进而优化程序的性能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值