计算机体系结构||Cache性能分析(4)

news2024/9/22 0:56:03

实验4 Cache性能分析

4.1实验目的

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

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

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

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

4.2实验平台

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

4.3实验原理

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

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

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

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

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

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

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

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

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

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

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

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

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

1)随机法(RAND法)

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

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

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

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

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

4.4实验内容和实验截图

4.4.1 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

不命中率

3.43%

2.72%

0.58%

0.39%

0.23%

0.18%

0.18%

0.16%

地址流文件名:tex.din

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

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

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

4.4.2相联度对不命中率的影响

(1)单击“复位“按钮,把各参数设置为默认值。此时Cache容量为64KB。

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

(3)选择不同的Cache相联度,包括直接映像、2路、4路、8路、16路、32路,分别执行模拟器,在下表记录各种情况的不命中率。

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

相联度

1

2

4

8

16

32

不命中率

0.40%

0.25%

0.22%

0.22%

0.21%

0.21%

地址流文件名:spice.din

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

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

相联度

1

2

4

8

16

32

不命中率

0.30%

0.21%

0.21%

0.21%

0.21%

0.21%

地址流文件名:spice.din

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

  1. 根据该模拟结果,你能得出什么结论?

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

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

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

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

  1. 选择不同的Cache块大小,包括16B、32B、64B、128B、256B,对于Cache的各种容量,包括2KB、8KB、32KB、128KB、512KB,分别执行模拟器(单击“执行到底”按钮即可执行),记录各种情况下的不命中率。

表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%

2.30%

1.90%

1.90%

地址流文件名:eg.din

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

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

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

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

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

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

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

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

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

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

Cache容量

相联度

2路

4路

8路

LRU

随机算法

LRU

随机算法

LRU

随机算法

16KB

3.62%

4.62%

2.96%

4.64%

2.74%

6.36%

64KB

1.15%

1.60%

0.99%

1.52%

0.93%

1.53%

256KB

0.78%

0.82%

0.74%

0.76%

0.73%

0.72%

1MB

0.71%

0.71%

0.70%

0.70%

0.70%

0.70%

地址流文件名:cc1.din

(4)分析不同替换算法对Cache不命中率的影响。

无论相联度是多大,在Cache容量比较小时,LRU法的不命中率低于随机法,但当Cache容量增加到一定程度之后(256KB),LRU法和随机法几乎差不多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1938907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识网络基础知识

关于网络的一些核心概念 局域网 局域网(Local Area Network,简称LAN)是一种计算机网络,覆盖的范围通常是相对较小的地理区域,比如一个办公室、一栋大楼或一个校园。 局域网的组成通常包括以下部分: 网络…

Docker Desktop Windows 目录介绍

D:\docker\DockerDesktopWSL\main\ext4.vhdx 和 D:\docker\DockerDesktopWSL\data\ext4.vhdx 是 Docker Desktop 在 Windows Subsystem for Linux(WSL)中使用的虚拟硬盘文件,它们有不同的用途和作用。 虚拟硬盘文件(VHDX&#xf…

生成式多模态之AE DAE/MAE VAE VQ-VAE/VQ-VAE2

目录 1. AE2. DAE/MAE3. VAE4. VQ-VAE/VQ-VAE2生成式多模态发展主要历程 年份1月2月3月4月5月6月7月8月9月10月11月2020DETRDDPMDDIM、VisionTransformer2021CLIP、DALLESwin Transformer2022BLIPDALLE 2StableDiffusion、BEiT-3、Midjourney V32023BLIP2VisualChatGPT、Midjou…

linux内核中list的基本用法

内核链表 1 list_head 结构 为了使用链表机制&#xff0c;驱动程序需要包含<linux/types.h>头文件&#xff0c;该文件定义了如下结构体实现双向链&#xff1a; struct list_head {struct list_head *next, *prev; };2 链表的初始化 2.1 链表宏定义和初始化 可使用以…

AES算法概述

文章目录 一、AES 概述二、AES 加密算法的特点三、秘钥类型四、填充方式五、加密方式 一、AES 概述 二、AES 加密算法的特点 AES加密的数据块长度为128&#xff08;16字节&#xff09;&#xff0c;长度不足需要填充。密码长度可以为16,24,32字节。 三、秘钥类型 AES加密按秘…

【科大讯飞笔试题汇总】2024-07-20-科大讯飞秋招提前批(算法岗)-三语言题解(Cpp/Java/Python)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f4e7; 清隆这边最…

基于java+springboot+vue实现的企业OA管理系统(文末源码+Lw)131

基于SpringBootVue的实现的企业OA管理系统&#xff08;源码数据库万字Lun文流程图ER图结构图演示视频软件包&#xff09; 系统功能&#xff1a; 企业OA管理系统有管理员和用户。 管理员功能有个人中心&#xff0c;用户管理&#xff0c;公告信息管理&#xff0c;客户关系管理&…

【nnUNet V2系列】nnUNet V2在Ubuntu下安装调试篇

安装之前网上很多教程&#xff0c;很多是nnUNet V1的安装过程&#xff0c;有的V1和V2混在一起讲解&#xff0c;导致V1的转化指令用到V2中&#xff0c;产生不少误解。这篇是针对V2整理出来的安装过程&#xff0c;有什么不妥之处请指出会及时修改。 1. 创建虚拟环境 conda crea…

某4G区域终端有时驻留弱信号小区分析

这些区域其实是长时间处于连接态的电信卡4G终端更容易出现。 出现问题时都是band1 100频点下发了针对弱信号的1650频点的连接态A4测量事件配置&#xff08;其阈值为-106&#xff09;。而这个条件很容易满足&#xff0c;一旦下发就会切到band3 1650频点。 而1650频点虽然下发ban…

Visual Studio 2022美化

说明&#xff1a; VS版本&#xff1a;Visual Studio Community 2022 背景美化 【扩展】【管理扩展】搜索“ClaudiaIDE”&#xff0c;【下载】&#xff0c;安装完扩展要重启VS 在wallhaven下载壁纸图片作为文本编辑器区域背景图片 【工具】【选项】搜索ClaudiaIDE&#xff…

手机数据恢复技巧:适用于 Android 的恢复应用程序

发现自己意外删除了 Android 设备上的照片&#xff0c;这让人很痛苦。这些照片可能是值得纪念的文件&#xff0c;会让您想起一些难忘的回忆。删除它们后&#xff0c;您知道如何恢复它们。在这种情况下&#xff0c;您需要使用 Android 的照片恢复应用程序。 无论您需要直接从 A…

git跨库合并

1、背景 A为开发环境的代码仓库&#xff0c;B为生产环境的代码仓库。A和B之间不能通信。开发人员的本地电脑可以和A、B通信。 目的 上线时&#xff0c;需要将A代码合并B代码。 2、实现 2.1 添加远程仓库 2.1.1 代码方式 在B代码仓库中,将A添加为远程仓库。 git remote …

腾讯会议产品策划的成长之路:从万字文档到功能落地的实战经验

腾讯会议产品策划的成长之路&#xff1a;从万字文档到功能落地的实战经验 在腾讯会议的产品团队中&#xff0c;有这样一位产品策划&#xff0c;他以其出色的逻辑思维、全局观念以及扎实的执行力&#xff0c;在团队中发挥着举足轻重的作用。他就是林陪同&#xff0c;一个自称“会…

抽奖算法的设计与实现

更多内容欢迎访问我的个人博客网站&#xff1a;www.zpf0000.com 在数据库中准备好以下数据表 lottery表 sql代码解读复制代码 DROP TABLE IF EXISTS lottery; CREATE TABLE lottery (id int NOT NULL AUTO_INCREMENT,user_id int NOT NULL DEFAULT 0 COMMENT 发起抽奖用户ID,n…

【MySQL】:对库和表的基本操作方法

数据库使用的介绍 什么是SQL 学习数据库的使用——>基于 SQL编程语言 来对数据库进行操作 重点表述的是“需求”&#xff0c;期望得到什么结果。&#xff08;至于结果是如何得到的&#xff0c;并不关键&#xff0c;都是数据库服务器在背后做好了&#xff09; 重点表述的是…

DEGAS:将临床属性转移到细胞

DEGAS&#xff08;单细胞诊断证据量表&#xff0c;Diagnostic Evidence GAuge of Single cells&#xff09;是一种迁移学习框架&#xff0c;用于将疾病信息从患者转移到细胞。作者将这种可转移信息称为“印象-impressions”&#xff0c;它允许单细胞与疾病属性相关联&#xff0…

【Python】使用库 -- 详解

库就是别人已经写好了的代码&#xff0c;可以让我们直接拿来用。 一个编程语言能不能流行起来&#xff0c;一方面取决于语法是否简单方便容易学习&#xff0c;一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库&#xff0c;来应对各种各样的场景。在…

动态路由协议 —— EIGRP 与 OSPF 的区别

EIGRP&#xff08;增强内部网关路由协议&#xff09;和 OSPF&#xff08;开放式最短路径优先&#xff09;是两种最常见的动态路由协议&#xff0c;主要是用来指定路由器或交换机之间如何通信。将其应用于不同的情况下&#xff0c;可提高速率、延迟等方面的性能。那么它们之间到…

【Python系列】Python 缓存机制

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【排序数组】python刷题记录

润到排序算法了。 顺便复习一下排序算法 easy work class Solution:def sortArray(self, nums: List[int]) -> List[int]:nums.sort()return nums 11种排序算法 # 选择排序 def selectsort(s):for i in range(0,len(s)-1):curmininfcuridx-1for j in range(i,len(s)):if …