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

3.1 实验目的

加深对Cache的基本概念及其工作原理的理解;

掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处;

理解常见替换算法(LRU与随机法)的基本思想以及它们对Cache性能的影响。

3.2 实验平台

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

3.3 实验内容

快速阅读课件“第7章 存储系统”的“7.2节 映象规则/查找算法/替换算法/ 写策略”(19-41屏),“7.3节 降低Cache不命中率”(49-56屏)。

3.3.1 Cache块访问分析

1)启动MyCache,点击“复位”,把各参数设置为默认值,选择一个地址流文件,比如all.din。查看一下地址流文件all.din中的前4行:

2  408ed4         读指令

0  10019d94       读数据

2  408ed8         读指令

1  10019d88       写数据

每行都由两个数字组成,第一个数字表示操作类型(0:读数据,1:写数据,2:读指令),第二个数字表示地址(16进制)。比如:第一行的意思就是读指令(指令地址是408ed4)。

2)按默认设置,即:统一Cache(容量64KB),块大小32B,相联度为1(即直接映像),替换策略LRU,不预取,写回法,写不命中时按写分配。

    步进执行,自己分析写出前4步操作(即前4行)每步访问的主存块号、块内地址、Cache块号,分析不命中/命中的原因。

1.  2  408ed4         读指令

因为是第一次访问该块,所以cache中没有该块,所以不命中。

地址流文件中,指令地址为408ed4,换算成十进制为4,230,868,即为模拟结果中的地址。

因为统一Cache(容量64KB),块大小32B,相联度为1(即直接映像),所以有2048块(组),索引占11位。

该块的块号为2 0476(16进制),块内地址为14,索引(组)为476。

2. 0  10019d94       读数据

因为是第一次访问该块,所以cache中没有该块,所以不命中。

地址流文件中,数据地址为10019d94,换算成十进制为268,541,332,即为模拟结果中的地址。

因为统一Cache(容量64KB),块大小32B,相联度为1(即直接映像),所以有2048块(组),索引占11位。

该块的块号为80 0CEC(16进制),块内地址为14,索引(组)为4EC。

3. 2  408ed8         读指令

地址流文件中,指令地址为408ed8,换算成十进制为4,230,872,即为模拟结果中的地址。

因为统一Cache(容量64KB),块大小32B,相联度为1(即直接映像),所以有2048块(组),索引占11位。

该块的块号为2 0476(16进制),块内地址为18,索引(组)为476。

因为是第二次访问该块,cache中有该块,所以命中。

4. 1  10019d88       写数据

地址流文件中,数据地址为10019d88,换算成十进制为268,541,320,即为模拟结果中的地址。

因为统一Cache(容量64KB),块大小32B,相联度为1(即直接映像),所以有2048块(组),索引占11位。

该块的块号为80 0CEC(16进制),块内地址为8,索引(组)为4EC。

因为是第二次访问该块,cache中有该块,所以命中。

3.3.2 Cache容量对不命中率的影响

1)点击“复位”按钮,把各参数设置为默认值。选择一个地址流文件,比如all.din。

2)选择不同的Cache容量,分别2KB、4KB、8KB、16KB、32KB、64KB、128KB、256KB。分别执行模拟器(点“执行到底”按钮),自己列表记录各种情况下的不命中率。

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

3)根据该模拟结果,写出你得出的结论。

由表可见,Cache容量越高,不命中率越低。原因是当Cache容量越高时,访问的块越有可能被保留在cache中。其中,当cache容量大于64KB时,不命中率的降低幅度大幅下降。

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

  1. 点击“复位”按钮,把各参数设置为默认值,此时的Cache容量为64KB。选择一个地址流文件,比如all.din。
  2. 选择不同的Cache相联度,分别为直接映像、2路、4路、8路、16路和32路。分别执行模拟器(点“执行到底”按钮),自己列表记录各种情况下的不命中率。
  3. 根据该模拟结果,写出你得出的结论。

Cache相联度(路)

1(直接映像)

2

4

8

16

32

不命中率(%)

0.89

0.53

0.47

0.45

0.44

0.44

由表可见,Cache相联度越高,不命中率越低。原因是因为cache相联度越高时,块存放的自由度越高,被替换出的可能性越小。其中,当Cache相联度大于8时,不命中率的降低幅度大幅下降。

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

  1. 点击“复位”按钮,把各参数设置为默认值。选择一个地址流文件,比如all.din。
  2. 对于不同的Cache容量,分别为2KB、8KB、32KB和128KB,在每种容量下选择不同的Cache块大小(分别为16B、32B、64B、128B和256B)进行实验。分别执行模拟器(点“执行到底”按钮),自己列表记录各种情况下的不命中率。
  3. 分析Cache块大小对不命中率的影响。

Cache容量(KB)/

不命中率(%)/

Cache块大小(B)

2

8

32

128

16

12.02

5.79

1.86

0.95

32

9.87

4.48

1.42

0.60

64

9.36

4.03

1.20

0.43

128

10.49

4.60

1.08

0.35

256

13.45

5.35

1.19

0.34

由表可见,当Cache容量一定时,随着Cache块大小增加,不命中率下降后又上升。这是因为增加块大小会产生双重作用:(1)块存放的自由度增高,减少了强制性不命中;(2)Cache中可存放的块的数目减少,增加了不命中率。当块比较小时,第(1)种作用起主要效果,使不命中率下降;当块比较大时,第(2)种作用效果超过第一种作用,使不命中率上升。

-------------------------------------------------------------------------------------------------------

最后一点碎碎念:如果各位有发现本文有哪处有误或理解不当的地方,敬请指正。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity自带的NavMesh寻路组件

最近看了一下Unity自带的NavMesh寻路组件,先说一下基本的使用: 首先先把AI Navgation的package包给安装上。 给场景地图添加上NavMeshSurface组件,然后进行烘焙,烘焙出对应的场景地图文件。 给移动物体添加对应的Nav MeshAgent组…

PlatEMO 源码执行的具体过程

ALGORITHM 类 Algorithm类定义在Algorithms文件夹下。在这个目录中,算法根据分类分成了三种: 多目标算法:Multi-objecitve optimization单目标算法:Single-objective optimization工具算法:Utility functions 工具算法…

如何使用 NFTScan NFT API 在 Base 网络上开发 Web3 应用

Base 是 Coinbase 使用 OP Stack 开发的最新以太坊第 2 层(L2)网络,用于解决以太坊等主要区块链面临的可扩展性和成本挑战。Coinbase 将其描述为“安全、低成本、对开发人员友好的以太坊 L2,旨在将下一个 10 亿用户带入 Web3”。B…

Linux---优先级+并发+进程调度队列

目录 一、优先级 二、并发 三、Linux2.6内核进程调度队列 一、优先级 我们发现操作系统中有很多等待队列,也就是说进程需要排队,而排队的本质就是确认优先级,优先级高的排在前面,低的排在后面 为什么要有优先级? 本…

Go 代码检查工具 golangci-lint

一、介绍 golangci-lint 是一个代码检查工具的集合,聚集了多种 Go 代码检查工具,如 golint、go vet 等。 优点: 运行速度快可以集成到 vscode、goland 等开发工具中包含了非常多种代码检查器可以集成到 CI 中这是包含的代码检查器列表&…

泰克TDS3054B示波器 2 或 4 条通道

产品特点 500 MHz 、300 MHz 、100 MHz 三种带宽 取样速率高达 5 GS/s TDS3054B 数字示波器带宽500MHZ TDS3054B TDS3054B 数字示波器带宽500MHZ TDS3054B 2 或 4 条通道 全 VGA 彩色 LCD 显示 25 种自动测量功能 9 位垂直分辨率 TDS3054B 数字示波器带宽500MHZ TDS3054B TDS…

java练习题之多态练习

1:关于多态描述错误的是(D) A. 父类型的引用指向不同的子类对象 B. 用引用调用方法,只能调用引用中声明的方法 C. 如果子类覆盖了父类中方法,则调用子类覆盖后的方法 D. 子类对象类型会随着引用类型的改变而改变 2:class Super{ public void m1(){}…

16 寻找特定高度的地点

搜索二维数组 #include <iostream> using namespace::std; using std::cout; using std::cin; int main() {int n,m,target;cin >> n >> m;int matrix[n][m];for(int i0; i<n; i){for(int j0; j<m; j){cin >> matrix[i][j];}}cin >> tar…

C# WPF上位机开发(QT vs WPF)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 最近经常收到朋友们的私信&#xff0c;他们对C# WPF开发很感兴趣&#xff0c;但是呢&#xff0c;正当准备学习的时候&#xff0c;又有人告诉他们应…

核心订单链路兜底方案之限流熔断降级实战

需求场景 对于很多电商系统而言&#xff0c;在诸如双十一这样的大流量的迅猛冲击下&#xff0c;都曾经或多或少发生过宕机的情况。当一个系统面临持续的大流量时&#xff0c;它其实很难单靠自身调整来恢复状态&#xff0c;你必须等待流量自然下降或者人为地把流量切走才行&…

芯片到底是怎么访问外设

微型计算机的组成&#xff1a;CPURAM硬盘等 什么是FLASH&#xff1f; FLASH存储器又称闪存&#xff0c;它结合了ROM和RAM的长处&#xff0c;不仅具备电子可擦除可编程&#xff08;EEPROM&#xff09;的性能&#xff0c;还不会断电丢失数据同时可以快速读取数据&#xff08;NV…

Codeforces Round 862 (Div. 2)

Problem - A - Codeforces AC代码: #include<bits/stdc.h> #define endl \n //#define int long long using namespace std; const int N1e310; int a[N]; int n; void solve() {cin>>n;int ans0;for(int i1;i<n;i) cin>>a[i],ans^a[i];if(n%21){for(in…