【408精华知识】Cache类题目解题套路大揭秘

在这里插入图片描述

有关Cache的题目,需要理解Cache的工作原理,也即给出一个地址,要知道如何在Cache中寻找或者如何将其从主存中复制入Cache,同时理解Cache中具体是如何存储的,包含三种存储方式,分别是直接映射、全相联映射、组相联映射。下面我们就此进行探讨。

先看这张图,详细展示了Cache的工作原理
在这里插入图片描述
接下来我们顺着思路来捋一捋。

CPU给出一个地址(不考虑虚实地址的转换),我们要根据这个地址在主存中找到数据,我们要直接根据这个地址在主存中找吗?当然不是,那要Cache何用,Cache的作用就是缓解CPU与主存之间的速度差异,因为CPU很快,访问主存很慢。

那么我们就先拿着这个地址去Cache中找一找,这个地址可以分为两部分——块号和块内地址(实际物理内存),关于块号页号等知识,请看我另一篇文章:【408精华知识】页、页面、页框、页帧、内存块、物理块、物理页面还傻傻分不清?,块内地址则是用于在一个块内给数据定位,毕竟一个块很大,我们要找的数据仅仅是一小部分,所以要有一个块内的具体定位。

这个块号还可以根据Cache映射方式再次进行划分,其中直接映射可以划分为标记位和块号,全相联映射的块号直接转为标记位,组相联映射可以划分为标记位和组号,为什么这样划分呢?我们知道,直接映射的块号是用原地址的块号除以总块数得到的余数,因此直接映射的块号是可以被“隐含”的,不需要再在标记位中“明示”的,组相联也是一样,其组号是是用原地址的块号除以总组数得到的余数,也是可以被“隐含”的,不需要再在标记位中“明示”的,但是全相联不一样了,全相联是用原地址中的块号去跟Cache中的块一个一个比对标记位,没有可以被“隐含”的部分。

得到标记位后,我们就可以去Cache中进行比对啦!

这里要说下Cache的存储结构,Cache中的一块包含以下几个部分:

  • 有效位:占1位,表示一个块是否在Cache中。比如当电脑开机时,Cache一定是空的,因此有效位是0;
  • 标记位:英文为Tag,来源于直接映射、全相联映射、组相联映射剔除被隐含的块号或组号的部分,是一个块的“名字”;
  • 脏位:也称一致性维护位、修改位等,用于表明这个块有没有被修改过,取决于Cache写命中时的处理策略,如果是全写法(当 CPU 对 Cache 写命中时,必须把数据同时写入 Cache 和主存。当某一块需要替换时,不必把这一块写回主存,用新调入的块直接覆盖即可),脏位为0位,如果是写回法(当 CPU 对 Cache 写命中时,只需改 Cache 的内容,而不立即写入主存,只有当此块被换出时才写回主存),每个 Cache 行必须设置一个1位的脏位,以反映此块是否被 CPU 修改过。
  • 替换控制位:采用直接映射为0位,在采用全相联映射和组相联映射方式时,从主存向 Cache 传送一个新块,当 Cache 中的空间被占满时,就需要使用替换算法置换 Cache行,其中随机替换算法的替换控制位为0位LRU的替换控制位为 log2路数 位
  • 数据:就是在主存中取到的一块中的数据;

用目标地址的标记位与Cache中行的标记位进行比对,如果命中,直接根据块内地址将这行中块内对应数据输出给数据通路;如果没有命中,则要访存,将主存中对应数据输出给数据通路。

在未命中的情况下,输出主存数据给数据通路后,还要将输出块的数据复制到Cache中,因为它可能是常用数据,要判断Cache中是否已满,如果未满,则可装进;如果满了,则要根据替换策略进行替换,将块的内容装进Cache。

写在后面

这个专栏主要是我在学习408真题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!!!

参考资料
[1]王道408教材(2025版)
[2]王道课程资料

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

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

相关文章

Android图像系统与Choreographer

Android图像系统与Choreographer 一.图像显示系统概述1.双缓存机制和VSync机制2.三缓存机制 二.Choreographer1.Choreographer的初始化2.Choreographer的使用2.1 添加任务2.1 任务执行 一.图像显示系统概述 一个基础的图像显示系统由CPU、GPU、屏幕三部分组成。CPU负责计算帧数…

基于transformers框架实践Bert系列4-文本相似度

本系列用于Bert模型实践实际场景,分别包括分类器、命名实体识别、选择题、文本摘要等等。(关于Bert的结构和详细这里就不做讲解,但了解Bert的基本结构是做实践的基础,因此看本系列之前,最好了解一下transformers和Bert…

两数交换,数组查找奇数个数的数(位运算)

文章目录 一、异或运算:1.1 Demo1.2 面试题 一、异或运算: 1.1 Demo 0和N进行异或运算都等于N 任何一个数和自己异或运算都等于0 且异或运算满足交换率 a^b b^a eg: a 甲 , b 已 那么则有 a a^b ​ b a^b ​ a a^b 故有&am…

ACM实训第十七天

Is It A Tree? 问题 考试时应该做不出来,果断放弃 树是一种众所周知的数据结构,它要么是空的(null, void, nothing),要么是一个或的集合满足以下属性的节点之间有向边连接的节点较多。 •只有一个节点,称为根节点,它…

Skywalking快速介绍

(01)SkyWalking简介 SkyWalking专为微服务,云原生架构和基于容器(Docker,k8s,Mesos等)的架构设计的应用程序性能监控工具,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数…

Varjo XR-4功能详解:由凝视驱动的XR自动对焦相机系统

Varjo是XR市场中拥有领先技术的虚拟现实设备供应商,其将可变焦距摄像机直通系统带入到虚拟和混合现实场景中。在本篇文章中,Varjo的技术工程师维尔蒂莫宁详细介绍了这项在Varjo XR-4焦点版中投入应用的技术。 对可变焦距光学系统的需求 目前所有其他XR头…

Android 构建时:Manifest merger failed : Attribute application@name value

在AndroidStudio 构建时发现此问题&#xff1a; Manifest merger failed : Attribute applicationname value解决方案&#xff1a;在主Manifest中增加replace <applicationandroid:name".MyApp"android:allowBackup"false"tools:replace"android…

Linux:Ubuntu修改root密码

Linux&#xff1a;Ubuntu修改root密码 修改默认grub配置文件 rootshanxin:~# vim /etc/default/grub# 主要修改内容如下&#xff1a;GRUB_DEFAULT0 #GRUB_TIMEOUT_STYLEhidden 注释这一行 GRUB_TIMEOUT5 # 将这一行的时间改为5秒进行开启启动的grub文件的复写 rootshanxin:~…

不懂平面设计,这篇文章教你制作商业画册

​商业画册不仅是企业展示形象、推广产品的重要工具&#xff0c;也是设计师展现创意的平台。因此&#xff0c;制作一本高质量的画册对于企业来说至关重要。 那要怎么着手制作呢&#xff1f;以下是关于制作商业画册的步骤。 1.要制作电子杂志,首先需要选择一款适合自己的软件。…

Linux - 整理工作中常用的 Linux 命令(目录、文件、系统、进程、网络)持续更新~

目录 一、Linux 目录结构 二、Linux 中的常用指令 2.1、目录命令 cd 切换目录 pwd 打印当前所在目录 ls 展示当前目录内容 mkdir 创建目录 du 统计每个目录下的文件字节数 2.2、文件命令 which 查找 命令字 所在位置 find 查找文件 touch 创建一个空文件 cp 复制文…

设计软件有哪些?数据交换和导入导出工具篇,渲染100邀请码1a12

设计师制作的项目通常要在各种软件里导入导出&#xff0c;互相交换格式&#xff0c;这次我们介绍一些数据交换和导入导出工具。 1、OBJ OBJ&#xff08;Object File Format&#xff09;是一种常用的3D模型文件格式&#xff0c;用于存储和交换三维模型数据。它由一系列文本行组…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-18讲 高精度延时定时器GPT

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

前端 CSS 经典:元素倒影

前言&#xff1a;好看的元素倒影&#xff0c;可以通过-webkit-box-reflect 实现。但有兼容问题&#xff0c;必须是 webkit 内核的浏览器&#xff0c;不然没效果。但是好看啊。 效果图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"&g…

VUE3好看的酒网站模板源码

文章目录 1.设计来源1.1 首页界面1.2 十大名酒界面1.3 名酒新闻界面1.4 联系我们界面1.5 在线留言界面 2.效果和结构2.1 动态效果2.2 代码结构 3.VUE框架系列源码4.源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/detai…

【C++初阶】—— 类和对象 (下)

&#x1f4dd;个人主页&#x1f339;&#xff1a;EterNity_TiMe_ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 类和对象 1. 运算符重载运算符重载赋值运算符重载前置和后置重载 2. 成员函数的补充3. 初始化列…

Java中String类常用方法

写笔记记录自己的学习记录以及巩固细节 目录 1.String类的常用方法 1.1 字符串构造 1.2 String对象的比较 1.2.1 比较两个字符串是否相等 1.2.2 比较两个字符串的大小 1.3 字符串查找 1.4 字符串的转化 1.4.1 字符串转整数 1.4.2 字符串转数字 1.4.3 大小写的转换 1…

IT革命浪潮:技术革新如何改变我们的生活与工作

一、技术革新与行业应用 当前的IT行业正处于前所未有的技术革新阶段。其中&#xff0c;量子计算和虚拟现实是两项引人注目的技术。 量子计算&#xff1a;量子计算以其超越传统计算的潜力&#xff0c;正在逐步从理论走向实践。在材料科学、药物研发和气候模型等复杂计算领域&a…

利用kubeadm安装k8s集群 以及跟harbor私有仓库下载镜像

目录 环境准备 master&#xff08;2C/4G&#xff09; 192.168.88.3 docker、kubeadm、kubelet、kubectl、flannel node01&#xff08;2C/2G&#xff09; 192.168.88.4 docker、kubeadm、kubelet、kubectl、flannel node02&#xff08;…

Ansible自动化运维中的file文件模块模块应用详解

作者主页&#xff1a;点击&#xff01; Ansible专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年5月21日15点21分 &#x1f4af;趣站推荐&#x1f4af; 前些天发现了一个巨牛的&#x1f916;人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xf…

向npm发布自己写的vue组件,使用vite创建项目

向npm发布自己写的vue组件&#xff0c;使用vite创建项目 创建项目 pnpm create vite输入项目名称 由于我的组件是基于 ant-design-vue和vue的&#xff0c;需要解析.vue文件&#xff0c;我又安装了下面4个。 然后执行 pnpm i安装依赖 vite.config.ts import { defineC…