高速缓存--直接映射

某高速缓存大小 256 字节,直接映射,块大小为 16 字节。定义 L 为数据装载命令,S 为存储,M 为数据修改。若每一数据装载(L)或存储(S)操作可引发最多 1次缓存缺失(miss);数据修改操作(M)可认为是同一地址上 1 次装载后跟 1 次存储,因此可引发 2 次缓存命中(hit)或 1 次缺失加 1 次命中外加可能的 1 次淘汰/驱逐(evict)。根据下列的访存命令序列,分析每一命令下的上述高速缓存(高速缓存最初是空的)的命中及淘汰情况。
L 10,1
M 20,1
L 22,1
S 18,1
L 110,1
L 210,1
M 12,1

说明:L 10,1 表示从地址 0x10 处加载 1 个字节数据,其它同理。


在直接映射方式下,高速缓存的每个块只能映射到唯一的一个位置。块地址的计算是为了确定一个块应该映射到高速缓存中的哪个位置。

计算块地址的公式是:块地址 = 访问地址 mod (高速缓存大小 / 块大小)

其中,访问地址是指要访问的内存地址,高速缓存大小是指高速缓存的总大小,块大小是指每个块的大小。

举个例子来说明:

假设访问地址是20,高速缓存大小为256字节,块大小为16字节。

计算块地址的过程如下:
块地址 = 20 mod (256 / 16) = 20 mod 16 = 4

所以,访问地址20对应的块地址是4。


首先,我们需要确定高速缓存的组数和每个组的块数。根据给定的高速缓存大小为256字节和块大小为16字节,可以计算出高速缓存共有256/16=16个块。

现在我们来分析每个访存命令的情况:

  1. L 10,1: 访问地址10,10是0x10,计算块地址为0x1 mod 0x10 = 1(组),将第1块映射到第1组。由于高速缓存是空的,发生缓存缺失(miss)。
  2. M 20,1: 访问地址20,计算块地址为0x2 mod 0x10 = 2(组),将第2块映射到第2组。由于高速缓存中没有该块,发生缓存缺失(miss),然后将该块加载到第2组。接下来进行数据修改,这里发生了一次缓存命中(hit)。
  3. L 22,1: 访问地址22,计算块地址为0x2 mod 0x10 = 2(组),将第2块映射到第2组。这里发生了一次缓存命中(hit)。
  4. S 18,1: 访问地址18,计算块地址为0x1 mod 0x10 = (组),将第块映射到第1组。这里发生了一次缓存命中(hit)。
  5. L 110,1: 访问地址110,计算块地址为0x11 mod 0x10 = 1(组),将第17块映射到第1组。由于高速缓存中没有该块,发生缓存缺失(miss),并且由于高速缓存已满,需要淘汰一个块。这里发生了缓存淘汰(eviction),然后将第16块加载到第0组。
  6. L 210,1: 访问地址210,计算块地址为0x21 mod 0x10 = 1(组),将第33块映射到第1组。由于高速缓存中没有该块,发生缓存缺失(miss),并且由于高速缓存已满,需要淘汰一个块。这里发生了缓存淘汰(eviction),然后将第32块加载到第1组。
  7. M 12,1: 访问地址12,计算块地址为0x1 mod 0x10 = 1(组),将第1块映射到第1组。由于高速缓存中没有该块,发生缓存缺失(miss),然后将该块加载到第1组。接下来进行数据修改,这里发生了一次缓存命中(hit)。

综上所述,每个访存命令下的高速缓存命中和淘汰情况如下:
L 10,1: 缓存缺失(miss)
M 20,1: 缓存缺失(miss)、一次缓存命中(hit)
L 22,1: 缓存缺失(miss)
S 18,1: 缓存缺失(miss)
L 110,1: 缓存缺失(miss)、缓存淘汰(eviction)
L 210,1: 缓存缺失(miss)、缓存淘汰(eviction)
M 12,1: 缓存缺失(miss)、缓存淘汰(eviction)

在这里插入图片描述

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

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

相关文章

半导体芯片制造行业MES系统解决方案

半导体产业作为现代电子科技的重要支柱,驱动着电子设备和通信技术的飞速发展。随着技术不断演进,半导体制造企业面临着越来越多的挑战,如高度复杂的工艺流程、全球化的竞争、质量控制的要求以及能源效率等问题。 为了应对这些挑战&#xff0…

错误页 模板

下载链接:https://ext.dcloud.net.cn/plugin?id15229 http://下载链接:https://ext.dcloud.net.cn/plugin?id15229 如有问题可添加下方名片

JVM字节码文件浅谈

文章目录 版权声明java虚拟机的组成字节码文件打开字节码文件的姿势字节码文件的组成魔数(基本信息)主副版本号(基本信息)主版本号不兼容的错误解决方法基本信息常量池方法 字节码文件的常用工具javap -v命令jclasslib插件阿里art…

JsonPath 数据快速查找和提取工具

常用语法 表达式说明$表示根元素$.key选择根元素下的指定键名的值$.*选择根元素下的所有属性值$.array[*]选择根元素中的数组的所有元素$.key[subkey]选择根元素中的键名为key,子键名为subkey的值$.key[*].subkey选择根元素中的键名为key的所有元素的子键名为subke…

4 sql语法基础

1、DISTINCT 相同值只会出现一次。它作用于所有列,也就是说所有列的值都相同才算相同。 2、LIMIT 限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。 返回前 5 行: SELECT * FROM myt…

day02_第一个Java程序

在开发第一个Java程序之前,我们必须对计算机的一些基础知识进行了解。 常用DOS命令 Java语言的初学者,学习一些DOS命令,会非常有帮助。DOS是一个早期的操作系统,现在已经被Windows系统取代,对于我们开发人员&#xf…

DC系列 DC:4

DC:4 靶机 文章目录 DC:4 靶机信息收集IP端口收集网页信息收集网站信息收集bp爆破 反弹shellnc反弹 内网信息收集收集jim用户的密码密码爆破 Charles用户密码收集 提权teehee提权 备注 信息收集 IP端口收集 用arp-scan 网段锁定ip nmap对端口服务进行详细扫描nmap -p- -sV …

数据库实验:SQL的数据定义与单表查询

目录 实验目的实验内容实验要求实验过程实验步骤实例代码结果示意 数据库的实验,对关系型数据库MySQL进行一些实际的操作 实验目的 (1) 掌握DBMS的数据定义功能 (2) 掌握SQL语言的数据定义语句 (3) 掌握RDBMS的数据单表查询功能 (4) 掌握SQL语言的数据单表查询语句…

python模块的介绍和导入

python模块的介绍和导入 概念 在Python中,每个Python代码文件都是一个模块。写程序时,我们可以将代码分散在不同的模块(文件)中,然后在一个模块中引用另一个模块的内容。 导入格式 1、在一个模块中引用(导入)另一个模块可以使用import语句…

nvm 下载 nodejs 速度慢问题解决

1、找到 nvm 的下载目录,在目录下找到 settings.txt 文件 2、打开 settings.txt 文件 ,添加以下代码: node_mirror: https://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.org/mirrors/npm/添加完成后再去下载即可。

字节测试开发面试分享,太难了...

一面 首先,自我介绍,我介绍了自己的技术栈和项目。 技术栈提到过Spring、Redis、Kafka、Docker、K8s、大数据。 项目提到过接口和UI自动化。 我有个大数据平台项目,问了比较多,聊着聊着,提到自己研究过Selenium、T…

由于找不到vcruntime140.dll无法继续执行代码

在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是“vcruntime140.dll丢失”。这个错误通常发生在运行某些程序或游戏时,它会导致程序无法正常运行。那么,如何解决vcruntime140.dll丢失的问题呢?本文将介绍…