高速缓存--直接映射

news2024/11/28 8:25:13

某高速缓存大小 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.coloradmin.cn/o/1168750.html

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

相关文章

【3D图像分割】基于Pytorch的VNet 3D图像分割5(改写数据流篇)

在这篇文章:【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割2(基础数据流篇) 的最后,我们提到了: 在采用vent模型进行3d数据的分割训练任务中,输入大小是16*96*96,这个的裁剪是放到Dataset类…

将 UniLinks 与 Flutter 集成(安卓 AppLinks + iOS UniversalLinks)

让我们使用 Flutter Mobile 和 Flutter Web 集成 UniLinks。 一步一步的指导! 我是 Pedro Dionsio,是葡萄牙 InspireIT 公司的 Flutter 开发人员,我写这个 UniLinks 教程的座右铭是: Firebase DynamicLinks 已被弃用&#xff0…

cocosCreator微信小游戏 之 分享好友和朋友圈(四)

creator版本: 3.8.0 语言: TypeScript 环境: Mac 简介 微信小游戏的分享分为两种: 被动分享 通过右上角的**…**打开,需要手动设置显示菜单才能分享好友或朋友圈主动分享 调用指定的 wx API接口即可进行分享好友 他…

[2016-2018]phpstudy的exp制作

[2016-2018]phpstudy的exp制作 用python的requests模块进行编写 修改请求数据包进行远程代码执行 import requests import base64 def remove_code_execute():try:url input("请输入要测试的网址:")cmd input("想要执行的命令:")cmd f"system({…

开源 | 30余套STM32单片机、嵌入式Linux、物联网、人工智能项目(开发板+教程+视频)

文末免费领取! 30余套综合项目案例 STM32单片机、嵌入式、物联网、人工智能 项目文档源码视频 高校教学、学生毕设、个人项目练手 嵌入式实战项目推荐 15个嵌入式LinuxQt综合应用项目,涉及家居、医疗、农业等多种应用领域,案例中使用了嵌…

【MATLAB源码-第66期】基于麻雀搜索算法(SSA)的栅格路径规划,输出做短路径图和适应度曲线。

操作环境: MATLAB 2022a 1、算法描述 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新颖的元启发式优化算法,它受到麻雀社会行为的启发。这种算法通过模拟麻雀的食物搜索行为和逃避天敌的策略来解决优化问题。SSA通过模拟…

unity 从UI上拖出3D物体,(2D转3D)

效果展示: 2D转3D视频 UI结构 UI组件挂载 UI结构 这个脚本挂载到 3D物体身上 using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine;public class DragGame : MonoBehaviour {[HideInInspector]public bool isDrag…

数据库存储引擎和锁

存储引擎: mysal当中数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制,索引技巧,锁定水平以及最终提供的不同功能和能力,这些就是我们说的存储引擎。 功能: 1、mysql将数据存储在文件系…

H5ke9

上次fetvh就一个参数url,,就是get请求 fetch还可以第二个参数对象,可以指定method:改为POST 请求头header :发送txt,servlet,json给客户端,,异步请求图片 1 这节客户端传到服务器端 2异步文件上传,两三行代码把文件传输 mouseover事件 .then()的使用 是Promise对象的一个方法…

prometheus监控告警部署(k8s内部)

一、部署prometheus 先来说明一下需要用到的组件,需要使用pv、pvc存放prometheus的数据,使用pvc存放数据即使pod挂了删除重建也不会丢失数据,使用configmap挂载prometheus的配置文件和告警规则文件,使用service开放对外访问prometheus服务的端…

高防IP的原理

高防IP,把域名解析到高防IP上(web事务只要把域名指向高防IP 即可。非web事务,把事务IP换成高防IP即可)一起在高防IP上设置转发规矩;所有公网流量都会走高防IP,通过端口协议转发的方法将用户的拜访通过高防IP转发到源站IP,一起将歹…

进程控制(三):进程替换

文章目录 进程控制(三)进程替换进程替换函数进程中的环境变量 总结 进程控制(三) 进程控制中的进程替换,下文我们学习进程替换的意义,以及进程替换的方式 进程替换 初步认识进程替换,我们先使…

Appium —— 初识移动APP自动化测试框架Appium

说到移动APP自动化测试,代表性的测试框架非Appium莫属,从今天开始我们将从APP结构解析、Appium框架学习、安卓/iOS自动化测试实战、自动遍历回归测试、自动化测试平台及持续集成,多个维度一起由浅入深的学废Appium 今天我们先来初步认识Appi…

远程设备常用工具:向日葵、Todesk

其实按理说远程工具例如向日葵、Todesk如果是计算机专业、计算机从业者是必须知道的一个东西,但是在大学期间身边知道的人是少之又少的。 向日葵、Todesk工具的优势:方便、快捷、速度快等等我就不过多阐述了 PS:现在我就是在学校用远程写这篇 很多时候…

使用Navicat访问宝塔中的MySQL数据库

首先放开数据库权限 然后放开3306端口 数据库默认端口是3306,如果改了,这里就填改的那个端口 连接数据库 复制数据库用户名和密码 填入Navicat中,主机只需要填IP即可 连接成功

动手学深度学习——残差网络ResNet(原理解释+代码详解)

残差网络ResNet 1. 函数类2. 残差块3. ResNet模型4. 训练模型 ResNet为了解决“新添加的层如何提升神经网络的性能”,它在2015年的ImageNet图像识别挑战赛夺魁 它深刻影响了后来的深度神经网络的设计,ResNet的被引用量更是达到了19万。 1. 函数类 假…

Android studio新版本多渠道打包配置

最近公司套壳app比较多 功能也都一样只有地址,和app名字还有icon不一样 签名文件也是一样的,所以就研究了多渠道打包 配置如下: 在app下build.gradle配置 因为最新版as中禁用了BuildConfig 所以我们需要手动配置一下 android { //TODO 其他省略buildFe…

网络编程套接字(二)

目录 简单的TCP网络程序服务端创建套接字服务端绑定服务端监听服务端获取连接服务端处理请求单执行流服务器的弊端 多进程版TCP网络程序捕捉SIGCHLD信号让孙子进程提供服务多线程版的TCP网络程序客户端创建套接字客户端链接服务器客户端发起请求 线程池版的TCP网络程序 简单的T…

SpringBoot整合数据库版本管理工具Liquibase,赶紧整起来!

SpringBoot整合数据库版本管理工具Liquibase 背景一、什么是数据库版本管理工具?数据库版本管理工具主要特性什么是数据库版本管理工具Flyway和Liquibase对比及选型 二、Liquibase整合步骤1.引入pom依赖2.配置application.yml3.新建master.xml(用于配置你…

使用pandas处理excel文件【Demo】

一、代码示例 import pandas as pd from pandas import Series,DataFrame from pandasql import sqldf import matplotlib.pyplotidInfos DataFrame(pd.read_excel(home_data.xlsx))print(idInfos.head(2))print(idInfos.dtypes)# print(idInfos[:][姓名]) # 自定义一个函数s…