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

这篇具有很好参考价值的文章主要介绍了【计算机体系结构】Cache性能分析实验报告。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文档下载:https://download.csdn.net/download/weixin_56213139/87384692

一、 实验目的

(1)加深对Cache基本概念、基本组织结构以及工作原理的理解。

(2)掌握Cache容量、相关度、块大小对Cache性能的影响

(3)掌握降低Cache不命中率的各种方法以及它们对提高Cache性能的好处

(4)理解LRU与随机法的基本思想以及对Cache性能的影响。

二、 实验设备

PC、Cache模拟器

三、 实验原理

Cache有三种不同类型的不命中,分别为:

1、强制不命中:第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache。

2、容量不命中:程序执行时所需的块不能全部调入Cache中,则当某些块被替换后,若又重新被访问,就会发生不命中。

3、冲突不命中:在组相联或直接映象Cache中,若太多的块映象到同一组(块)中,则该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情况。

想要提高Cache的性能就得提高其命中率,其中有如下规则:

1、相联度越高,冲突不命中就越少

2、强制性不命中和容量不命中不受相联度的影响

3、强制性不命中不受Cache容量的影响,但容量不命中却随着容量的增加而减少。

对应每种类型的不命中分别有如下解决方案:

1、强制性不命中:增加块大小,预取

2、容量不命中:增加容量

3、冲突不命中:提高相联度

不同替换算法对不命中率的影响:

(1) 随机法(RAND法)

随机替换算法就是用随机数发生器产生一个要替换的块号,将该块替换出去,此算法简单、易于实现,而且它不考虑Cache块过去、现在及将来的使用情况,但是没有利用上层存储器使用的“历史信息”、没有根据访存的局部性原理,故不能提高Cache的命中率,命中率较低。

(2) 先进先出法(Firs-In-First-Out,FIFO法)

就是将最先进入Cache的信息块替换出去。FIFO算法按调入Cache的先后决定淘汰的顺序,选择最早调入Cache的字块进行替换,它不需要记录各字块的使用情况,比较容易实现,系统开销小,其缺点是可能会把一些需要经常使用的程序块(如循环程序)也作为最早进入Cache的块替换掉,而且没有根据访存的局部性原理,故不能提高Cache的命中率。因为最早调入的信息可能以后还要用到,或者经常要用到,如循环程序。此法简单、方便,利用了主存的“历史信息”,但并不能说最先进入的就不经常使用,其缺点是不能正常反映程序局部性原理,命中率不高,可能出现一种异常现象。

(3) 近期最少适用法(LeastRecently Used,LRU法)

这种方法是将近期最少使用的Cache中的信息块替换出去。该算法较先进先出算法要好一些。但此法也不能保证过去不常用将来也不常用。LRU法是依据各块使用的情况,总是选择那个最近最少使用的块被替换。这种方法虽然比较好地反映了程序局部性规律,但是这种替换方法需要随时记录Cache中各块的使用情况,以便确定哪个块是近期最少使用的块。LRU算法相对合理,但实现起来比较复杂,系统开销较大。通常需要对每一块设置一个称为计数器的硬件或软件模块,用以记录其被使用的情况。

四、 实验操作及运行结果

1、Cache容量对不命中率的影响

(1)启动MyCache

(2)单击“复位”按钮,把各参数设置为默认值。

(3)选择地址流文件all.din。方法:选择“访问地址”→“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。

(4)选择不同的Cache容量,分别执行模拟器(单击“执行到底”),在表1.1中记录各种情况下的不命中率。

表1.1 不同容量下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%

(5)以容量为横坐标,画出不命中率随Cache容量变化的曲线。

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

(6)根据该模拟结果,你能得出什么结论?

Cache的不命中率随着Cache容量的增大而降低,但当容量增大到一定程度后如128KB,再增大Cache的容量变化就不会那么显著。

2、相联度对不命中率的影响

(1)单击“复位“按钮,把各参数设置为默认值。

(2)选择地址流文件all.din。

(3)选择不同的Cache相联度,分别执行模拟器,在下表记录各种情况的不命中率。

表1.2 当Cache容量为64KB时,不同相联度下Cache的不命中率

相联度

1

2

4

8

16

32

不命中率

0.89%

0.53%

0.47%

0.45%

0.44%

0.44%

(4)把Cache容量改为256KB,重复(3)中工作,并填表1.3

表1.3 当Cache容量为256KB时,不同相联度下Cache的不命中率

相联度

1

2

4

8

16

32

不命中率

0.49%

0.38%

0.36%

0.36%

0.35%

0.35%

(5)以容量为横坐标,画出在容量为64KB和256KB情况下,不命中率随Cache相联度变化的曲线。

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

(6)根据该模拟结果,你能得出什么结论?

在Cache容量大小相同的情况下,提高相联度可以降低Cache不命中率,且Cache的容量越小,提升效果越显著。但随着相联度提到到一定程度后(8路相联),再提高相联度Cache的不命中率就不显著。

3、Cache块大小对不命中率的影响

(1)单击复位按钮,把参数设置为默认值。

(2)选择地址流文件all.din。

(3)选择不同的Cache块大小,不同的Cache容量,分别执行模拟器,记录各种情况下的不命中率。

表1.4 各种情况下Cache的不命中率

块大小(B)

Cache容量(KB)

2

8

32

64

128

512

16

12.02%

5.79%

1.86%

1.26%

0.95%

0.71%

32

9.87%

4.48%

1.42%

0.89%

0.60%

0.42%

64

9.36%

4.03%

1.20%

0.71%

0.43%

0.27%

128

10.49%

4.60%

1.08%

0.64%

0.35%

0.20%

256

13.45%

5.35%

1.19%

0.67%

0.34%

0.16%

(4)分析Cache块大小对不命中率的影响。

当Cache容量一定的时候且容量小于等于64KB,若增大Cache块大小,Cache的不命中率先是下降,然后反升。而大于64KB后增加块大小会让不命中率一直下降。这是因为增加块大小会产生双重作用:

(1)增加了空间局部性,减少了强制性不命中

(2)另一方面,由于增加块大小会减少Cache中块的数目所以有可能会增加冲突不命中。

当Cache容量比较大时,第(1)种作用会超过(2)种作用,使不命中率持续下降:而当容量比较小时,第(2)种作用效果会超过第(1)种作用,反而使不命中率上升。

4、替换算法对Cache不命中率的影响

(1)单击复位按钮,把参数设置为默认值。

(2)选择地址流文件all.din。

(3)对于不同的替换算法、Cache容量和相联度,分别执行模拟器,记录各种情况下的的不命中率。

表1.5 LRU和随机替换算法的不命中率比较

Cache

容量

相联度

2路

4路

8路

LRU

随机算法

LRU

随机算法

LRU

随机算法

16KB

1.71%

2.30%

1.33%

2.37%

1.21%

2.81%

64KB

0.53%

0.78%

0.47%

0.82%

0.45%

0.91%

256KB

0.38%

0.41%

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法和随机法几乎差不多。

五、 实验中出现的问题和解决方法

出现的问题:实验较为简单没有碰到问题。文章来源地址https://www.toymoban.com/news/detail-439187.html

到了这里,关于【计算机体系结构】Cache性能分析实验报告的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】—— 详解计算机体系结构

    前言: 在之前,我们已经对Linux环境开发的基本工具进行了详细的学习。接下来,我们将要学习的第一大块便是关于计算机体系结构的知识!! 目录 前言 (一)冯诺依曼体系结构 基本介绍 木桶原理 数据流动过程 (二)操作系统 1、概念 2、感性理解 总结 在我写的《操作系

    2024年02月09日
    浏览(35)
  • 计算机体系结构(复习资料)

    1.存储程序计算机 (冯诺依曼):4部分                 运算器(用于完成数值运算)                 存储器(用于存储程序和数据)                 输入输出设备(用于完成计算机与外部信息交互)                 控制器(根据程序形成控

    2024年02月02日
    浏览(41)
  • 第一章、计算机组成与体系结构

    第一节.数据的表示   二进制转十进制:权值相加。即一个二进制数为1010.1,转为十进制为: $$ 小数点左边从0开始幂,小数点右边就是-1   十六进制转十进制:同样的,权值相加。即一个十六进制为100121,转为十进制为: $$ 十进制转二进制:整数位用短除法,除二取余,直到

    2024年02月03日
    浏览(32)
  • 【计算机组成原理与体系结构】指令系统

    目录 一、指令概述 二、指令分类 三、扩展操作码 四、指令寻址 五、数据寻址 六、x86汇编指令 计算机指令 :指示计算机硬件进行某种操作的命令 机器指令 :使用二进制编码来表示的计算机指令 能被计算机硬件系统识别并执行的特殊的0/1代码串(机器码) 指定了计算机硬

    2024年02月08日
    浏览(47)
  • 【计算机体系结构】什么是流水线?

    👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容  目录 参考资料 前言 流水线 提高流水线效率的技术 超级流水线 超标量 分支预测 乱序执行 (21条消息) 流水线、超流水线、超标量(superscalar)技术对比(转)_沉迷科研刘

    2024年02月03日
    浏览(47)
  • 计算机网络第一章——计算机体系结构(上)

    提示:剑未佩妥,出门已是江湖;酒尚余温,入口不识乾坤,愿历尽千帆,归来仍是少年。 电信网络就是通过电话线连接起来的一个网络,有线电视网络通过电缆或者光缆将已经录制好的电视节目发给千家万户,计算机网络是通过各个结点,这个结点包括终端的电脑,手机,

    2024年02月06日
    浏览(47)
  • 【计算机组成原理与体系结构】控制器

    目录 一、CPU的功能与基本结构 二、指令周期的数据流 三、数据通路 四、时序控制 CPU的功能: 指令控制 :完成取指令、分析指令和执行指令的操作,即程序的顺序控制。 操作控制 :一条指令的功能往往是由若干操作信号的组合来实现的,CPU管理并产生由内存取出的每条指

    2024年02月08日
    浏览(32)
  • 中级软件设计师备考---计算机组成与体系结构3

    计算题 概念题 计算可靠度 码距:是指两个码字之间的不同位数。例如,1010和1111之间的码距是2,因为它们在第二位和第三位上不同。在信息传输中,码距越大,就越容易检测和纠正错误。 在一个码组内为了检测e个误码,要求最小码距d应满足:d=e+1 在一个码组内为了纠正

    2023年04月15日
    浏览(33)
  • 计算机体系结构实验三——流水线中的相关

    答:在WinDLX中执行程序段1,这里要声明的是文件需要以S文件的形式保存,TXT文件winDLX好像读不进去。 导入之后,程序段顺利运行,可以通过statistics查看执行周期数,由下图可知,执行周期数为130个周期。 分析程序中出现的暂停: 程序中出现的第一个暂停是数据相关,因为

    2023年04月08日
    浏览(38)
  • 中级软件设计师备考---计算机组成与体系结构1

    对于n位二进制数,原码、反码和补码的表示范围如下: 原码:用最高位表示符号位,0表示正数,1表示负数。n位二进制数的原码表示范围为:-(2 n-1 -1) ~ 2 n-1 -1。 反码:正数的反码与原码相同,负数的反码是将原码中除符号位外的所有位取反。n位二进制数的反码表示范围

    2023年04月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包