计算机系统结构——Cache性能分析

news2025/7/18 17:02:48

一、实验目的

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

二、实验平台

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

三、实验内容及步骤

首先要掌握MyCache模拟器的使用方法。

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

  1. 启动MyCache。
  2. 用鼠标点击“复位”按钮,把各参数设置为默认值。
  3. 选择一个地址流文件。方法:选择“访问地址”→“地址流文件”选项,然后点击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
  4. 选择不同的Cache容量,包括:2KB,4KB,8KB,16KB,32KB,64KB,128KB,256KB,分别执行模拟器(单击“执行到底”按钮即可执行),然后在表A.4.1中记录各种情况下的不命中率。
  5. 以容量为横坐标,画出不命中率随Cache容量变化而变化的曲线。并指明地址流文件名。
  6. 根据该模拟结果,你能得出什么结论?
  • 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、相联度对不命中率的影响

  1. 用鼠标单击“复位”按钮,把各参数设置为默认值。此时的Cache容量为64KB。
  2. 选择一个地址流文件。方法:选择“访问地址”→“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
  3. 选择不同的Cache相联度,包括:直接映象,2路,4路,8路,16路,32路,分别执行模拟器(单击“执行到底”按钮即可执行),然后在表A.4.2中记录各种情况下的不命中率。
  4. 把Cache的容量设置为256KB,重复(3)的工作,并填写表A.4.3。
  5. 以相联度为横坐标,画出在64KB和256KB的情况下不命中率随Cache相联度变化而变化的曲线。并指明地址流文件名。
  6. 根据该模拟结果,你能得出什么结论?
  • 相联度越高,不命中率越低,提高相联度可以减少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块大小对不命中率的影响

  1. 用鼠标单击“复位”按钮,把各参数设置为默认值。
  2. 选择一个地址流文件。方法:选择“访问地址”→“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
  3. 选择不同的Cache块大小,包括:16B,32B,64B,128B,256B,对于Cache的各种容量,包括:2KB,8KB,32KB,128KB,512KB,分别执行模拟器(单击“执行到底”按钮即可执行),然后在表A.4.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、替换算法对不命中率的影响

  1.  用鼠标单击“复位”按钮,把各参数设置为默认值。
  2. 选择一个地址流文件。方法:选择“访问地址”→“地址流文件”选项,然后单击“浏览”按钮,从本模拟器所在的文件夹下的“地址流”文件夹中选取。
  3. 对于不同的替换算法、Cache容量和相联度,分别执行模拟器(单击“执行到底”按钮即可执行),然后在表A.4.5中记录各种情况下的不命中率。
  4. 分析不同的替换算法对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模拟器的操作界面示意图

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

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

相关文章

GESP2023年12月认证C++八级( 第三部分编程题(2)大量的工作沟通)

参考程序&#xff1a; #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <string> #include <map> #include <iostream> #include <cmath> #include <vector> #include <qu…

015枚举之滑动窗口——算法备赛

滑动窗口 最大子数组和 题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 原题链接 思路分析 见代码注解 代码 int maxSubArray(vector<int>& num…

新型深度神经网络架构:ENet模型

语义分割技术能够为图像中的每个像素分配一个类别标签&#xff0c;这对于理解图像内容和在复杂场景中找到目标对象至关重要。在自动驾驶和增强现实等应用中&#xff0c;实时性是一个硬性要求&#xff0c;因此设计能够快速运行的卷积神经网络非常关键。 尽管深度卷积神经网络&am…

【免杀】C2免杀技术(三)shellcode加密

前言 shellcode加密是shellcode混淆的一种手段。shellcode混淆手段有多种&#xff1a;加密&#xff08;编码&#xff09;、偏移量混淆、UUID混淆、IPv4混淆、MAC混淆等。 随着杀毒软件的不断进化&#xff0c;其检测方式早已超越传统的静态特征分析。现代杀软往往会在受控的虚…

WPF之集合绑定深入

文章目录 引言ObservableCollection<T>基础什么是ObservableCollectionObservableCollection的工作原理基本用法示例ObservableCollection与MVVM模式ObservableCollection的局限性 INotifyCollectionChanged接口深入接口定义与作用NotifyCollectionChangedEventArgs详解自…

(C语言)超市管理系统(测试2版)(指针)(数据结构)(清屏操作)

目录 前言&#xff1a; 源代码&#xff1a; product.h product.c fileio.h fileio.c main.c 代码解析&#xff1a; 一、程序结构概述 二、product.c 函数详解 1. 初始化商品列表 Init_products 2. 添加商品 add_product 3. 显示商品 display_products 4. 修改商品 mo…

编译openssl源码

openssl版本 1.1.1c windows 安装环境 perl 先安装perl&#xff0c;生成makefile需要 https://strawberryperl.com/releases.html nasm nasm 也是生成makefile需要 https://www.nasm.us/ 安装完perl输入一下nasm&#xff0c;看看能不能找到&#xff0c;找不到的话需要配…

OpenCV实现数字水印的相关函数和示例代码

OpenCV计算机视觉开发实践&#xff1a;基于Qt C - 商品搜索 - 京东 实现数字水印的相关函数 用OpenCV来实现数字水印功能&#xff0c;需要使用一些位操作函数&#xff0c;我们需要先了解一下这些函数。 1. bitwise_and函数 bitwise_and函数是OpenCV中的位运算函数之一&…

坐席业绩数据分析

豆包提示词&#xff1a; 使用papaparse.js&#xff0c;chart.js&#xff0c;tailwindcss和font-awesome&#xff0c;生成一个可以交互的简洁且可以运行的HTML代码&#xff0c;不要输出无关内容。 具体要求如下&#xff1a; 1、按坐席姓名输出业绩折线图。 2、系统导航区域&…

怎样将MM模块常用报表设置为ALV默认格式(MB52、MB5B、ME2M、ME1M等)

【SAP系统研究】 对SAP系统中的报表,最方便的格式就是ALV了,可排序、可导出,非常友好。 但有些常见报表却不是默认ALV界面的,譬如MB52: 是不是有点别扭?但其实是可以后台配置进行调整的。 现将一些常用报表修改为默认ALV的方法进行总结,便于大家使用。 一、MB52、MB5…

Arduino使用红外收发模块

目录 Arduino UNO连接红外发射模块&#xff1a; Arduino D1连接红外接收模块&#xff1a; 有一个Arduini UNO板子和一个Arduino D1板子&#xff0c;我想通过红外发射模块和红外接收模块让他们进行通信。 先看结果&#xff1a; Arduino UNO连接红外发射模块&#xff1a; 发射模…

机器学习 Day16 聚类算法 ,数据降维

聚类算法 1.简介 1.1 聚类概念 无监督学习&#xff1a;聚类是一种无监督学习算法&#xff0c;不需要预先标记的训练数据 相似性分组&#xff1a;根据样本之间的相似性自动将样本归到不同类别 相似度度量&#xff1a;常用欧式距离作为相似度计算方法 1.2 聚类vs分类 聚类&…

软件测试——面试八股文(入门篇)

今天给大家分享软件测试面试题入门篇&#xff0c;看看大家能答对几题 一、 请你说一说测试用例的边界 参考回答&#xff1a; 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充&#xff0c;这种情况下&#xff…

Yolov8的详解与实战-深度学习目标检测

Yolov8的详解与实战- 文章目录 摘要 模型详解 C2F模块 Loss head部分 模型实战 训练COCO数据集 下载数据集 COCO转yolo格式数据集&#xff08;适用V4&#xff0c;V5&#xff0c;V6&#xff0c;V7&#xff0c;V8&#xff09; 配置yolov8环境 训练 测试 训练自定义数据集 Labelme…

Python(1) 做一个随机数的游戏

有关变量的&#xff0c;其实就是 可以直接打印对应变量。 并且最后倒数第二行就是可以让两个数进行交换。 Py快捷键“ALTP 就是显示上一句的代码。 —————————————————————————————— 字符串 用 双引号或者单引号 。 然后 保证成双出现即可 要是…

【Bootstrap V4系列】学习入门教程之 组件-导航条(Navbar)

Bootstrap V4系列 学习入门教程之 组件-导航条&#xff08;Navbar&#xff09; 导航条&#xff08;Navbar&#xff09;一、How it works二、Supported content 支持的内容2.1 Brand 品牌2.2 Nav 导航2.3 Forms 表格 三、Color schemes 配色方案四、Containers 容器五、Placemen…

[Java实战]Spring Security 添加验证码(二十三)

[Java实战]Spring Security 添加验证码&#xff08;二十三&#xff09; 在现代的 Web 应用中&#xff0c;验证码是防止恶意攻击&#xff08;如暴力破解、自动注册等&#xff09;的重要手段之一。Spring Security 是一个功能强大的安全框架&#xff0c;提供了用户认证、授权等功…

万文c++继承

1、继承的概念与定义 1.1继承的概念 继承&#xff1a;是c代码复用的手段&#xff0c;允许在原有的基础上扩展&#xff0c;在此之前都是函数层次的复用&#xff0c;继承是类设计层次的复用。 下面有两个类Student和Teacher都有姓名/地址/电话/年龄等成员变量。都有identity身…

Linux grep -r 查找依赖包是否存在依赖类 Class

方法一&#xff1a;通过 Linux &#xff0c;grep -r ClassPath 命令 grep -f org.apache.kafka.connect.source.SourceRecord在 jar 包所在 lib 或者 lib/plugins 目录下执行&#xff0c;grep -r&#xff0c; flink-sql-connector-sqlserver-cdc-3.3.0.jar 中此 kafka Source…

41:像素坐标与实际坐标转化

采用上面的算子 将像素坐标点转换为实际坐标 image_points_to_world_plane(CamParam, Worldpose, Row, Column, m, X, Y) 第一个参数&#xff1a;标定得到的内参--根据标定助手得到的 第二个参数&#xff1a;标定得到的外参--根据标定助手得到的 第三个参数&#xff1a;计算…