CACHE 概念

news2024/11/17 3:23:44

CACHE 概念

CPU 读写指令或者数据,可能直接从寄存器查取,也可能经过 TLB ,经过 MMU,经过高速缓存,经过内存,经过外部存储器。这里面有一个 Cache 的概念,想多了解下了,于是有这这一篇笔记。

1 生活的例子

例如,我在商场购物时,把要买的东西先把它放到小推车中,最后统一结账。此时,把 自己想象成芯片中的 CPU,购物车是芯片中 Cache,柜台是芯片的输出口。再例如,我在图书馆看书,随手将喜欢看的书放到柜子里,这里某一些书我会反复看,不想看时把书放回书架上。此时,我是 CPU,书柜是 Cache,书架是下一级存储器。

2 Cache 基本概念

Cache 特指计算机存储子系统中的高速缓存,使用 Cache 能加速 CPU 与主存之间的交互。另外一个说法,在提交结构中为了解决慢速设备加入的一个相对快速的设备就可以是一个 Cache,此时 Cache 泛指 TLB 、MMU、高速缓存。
在这里插入图片描述

图参考源《现代操作系统:原理与实现》

为什么说 Cache 能提高 CPU 的读写速率? 其中一个原因是 Cache 读写本来就快,另一个原因是利用局部性原理(使得 CPU 访问 cache 命中率高)。例如, CPU 要加载(内存上的)数据时,一般会优先查找 Cache

  • 如果存在(命中),返回结果值
  • 如果不存在(缺失),选择从主存中加载

3 Cache 基本结构(内部)

将 cache 看作一张散列表,当前 index 宽度为 3,可以索引 2^3=8 个 Set,当前 offset 宽度为 3 ,表示一个 Cahe Line 有 2^3=8 Byte

在这里插入图片描述

图参考源《现代操作系统:原理与实现》

  • cache size: cache 的大小
  • cache line:cache 分割出的存储单元,cache line 是 cache 和主存之间数据传输的最小单位
  • offset: 用于寻址 cache line 中的某一个字节
  • index: 用于查找 cache 中的某一个 Set(然后)
  • tag: 整个地址位宽去除 index 和 offset 的部分,通过 tag 在 Set 中匹配 cache line

举一个例子
如图,此时 CPU 需要从 0x0654(11001010100) 地址读取一个字节,先通过 index 找到第2组 Cache 区域,然后对比 tag 命中是否命中某一个 Cache Line,如果命中并且该 Cache Line 有效,那么在根据 offset 读取对应的地址。如果没有命中任何 Cache Line 或者命中的 Cache Line 无效,那么缺失的数据将在从下一级的内存中寻找。

tagindexoffset
11001010100

Cache 设计模型

  • 直接映射缓存(Direct-mapped cache),也叫单路组相连缓存,Set 只有一个 Cache Line
  • 多路组相连缓存(N-way Set Associative),Set 有多个 Cache Line
  • 全相连缓存(Full associative cache),Set 包含所有 Cache Line

4 参考链接

  1. Cache的基本原理
  2. 《现代操作系统:原理与实现》

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

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

相关文章

【自定义类型】带你走进结构体、枚举、联合

欢迎来到小王学代码的博客 在字符型函数之后,我们接下来要学习的是自定义类型中的结构体、枚举、联合 目录 前言 一、结构体 1.1结构体的声明 1.2 特殊声明和结构自引用 1.4结构体的自引用 1.5结构体变量的定义和初始化 1.6 结构体内存对齐 1.7修改默认对齐…

【杂烩】Latex中的一些技巧备忘录

1. subfigure 和 minipage 环境的运用 首先是多张图组合到一起,左侧和下方备注列标题和行标题。 使用的时候需要的包: minipage不需要 \usepackage{subfigure} \usepackage{graphicx}代码1: \begin{figure*}[htbp]\centering%第一行图片展…

微信小程序怎么实现拍照功能,以及授权,拍完照保存到本地。

写微信小程序就是要不停的翻阅官方文档查阅所需要的需求。API的使用说明wx.getSetting 获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限 scope.camera相机wx.authorize 提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获…

复盘!!指针 ,地址 ,数组之间的联系

文章目录前言一、直接看题二、直接上代码总结前言 工作摸鱼 闲来无事 一、直接看题 二、直接上代码 所以,这个题目答案是5. 我来盘给你:int a[5] {1,2,3,4,5}; 1数组名本身就是表示数组首元素地址 2对数组名取地址:表示的是整个数组的地址…

Android抓包Charles入门教程

Android抓包工具有很多,有轻量的如httpCanary直接安装在手机上通过代理进行抓包,有功能强大的WireShark PC 端的抓包工具(也要设置代理啦),还有老牌抓包工具Finder和Charles以及mitmproxy 。 手机上的抓包工具远离基本差不多&…

MAC(m1)-CentOS8 Docker设置MySQL数据持久化

Docker安装部署Mysql8的过程(以作数据持久化)_docker_脚本之家 Docker安装Mysql并映射_小小小果子的博客-CSDN博客_docker mysql 映射 Docker中安装mysql并把配置等挂载在外面(开启多个mysql)_遗忘de神话的博客-CSDN博客_dock中安装了mysql,还能在外部再安装一个mysql吗 mys…

Windows实时运动控制软核(五):LOCAL高速接口测试之VC6.0

今天,正运动小助手给大家分享一下MotionRT7的安装和使用,以及使用VC6.0对MotionRT7开发的前期准备。 01 MotionRT7简介 MotionRT7是深圳市正运动技术推出的跨平台运动控制实时内核,也是国内首家完全自主自研, 自主可控的Windows…

电脑怎么录制屏幕视频,3种方法,轻松弄懂

在日常生活当中,电脑录屏的使用场景也变得越来越多了起来,网课录制,微课录制,直播录制,会议录制等等。那么问题来了,电脑怎么录制屏幕视频呢?今天小编就向大家分享3个电脑录制屏幕视频的方法&am…

osg fbo(一),生成颜色缓冲区图片

由于工作需要&#xff0c;重新捡了下shader。很明显&#xff0c;fbo是重中之重。好记性不如烂笔头&#xff0c;先记录下 1&#xff0c;生成一个颜色纹理(为了省事&#xff0c;可以将纹理宽高屏幕宽高) osg::ref_ptr<osg::Texture2D> tex createFloatRectangleTexture(…

Linux安装Docker详细教程

文章目录Docker架构环境说明安装步骤阿里云镜像加速Docker底层原理Docker架构 镜像&#xff08;image&#xff09;: Docker 镜像&#xff08;Image&#xff09;就是一个只读的模板。镜像可以用来创建 Docker 容器&#xff0c;一个镜像可以创建很多容器。 就好似 Java 中的 类和…

Day857.高性能限流器Guava RateLimiter -Java 并发编程实战

高性能限流器Guava RateLimiter Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于高性能限流器Guava RateLimiter的内容。 Guava RateLimiter 是如何解决高并发场景下的限流问题的。 Guava 是 Google 开源的 Java 类库&#xff0c;提供了一个工具类 RateLimiter。先…

2022智能制造世界与中国十大科技进展内容小结

2022智能制造世界与中国十大科技进展内容小结1. 全断面隧道掘进装备行业工业互联网平台2. 大型复杂构件机器人原位高效高质量铣削加工技术及装备3. 西门子SNC—原生数字化工厂4. 亚马逊 数字孪生服务IoT TwinMaker5. Nvidia 新一代智能移动机器人仿真平台6. 北京奔驰的基于大数…

Excel特殊符号及用法

一、公式中常用符号 &#xff1a; 表示一个单元格区域&#xff0c;如A1:B10 - * / 加减乘除运算符> 大于号> 大于等于号< 小于号< 小于等于号<> 不等于号&#xff0c;如IF(A1<>"销售部",,)^数字 乘方运算&#xff0c;如…

第二章Mybatis进阶操作学习

文章目录特殊SQL的执行模糊查询批量操作动态设置表名添加功能获取自增的主键自定义映射resultMap处理字段和属性的映射关系在SQL语句中使用别名使用核心配置文件中的驼峰对应方法使用resultMap自定义映射处理一对一映射处理级联方式处理association标签分步查询分步查询的优点&…

【网安神器篇】——Sqlmap详解

作者名&#xff1a;白昼安全主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右铭&a…

C语言 自定义类型 之 【联合体(共用体)】

文章目录前言联合体(UNION)类型的定义联合体的特点联合体大小的计算联合体使用的典型例题 — 判断机器的大小端写在最后前言 联合体&#xff08;union&#xff09;在C语言中是不常用的&#xff0c;不过存在就必然有其有用之处&#xff0c;这里不深入探讨联合体用在何处有什么用…

R语言实现牛顿插值

文章目录4 差商与牛顿插值差商牛顿插值4 差商与牛顿插值 差商 如果采取间隔不等的采样&#xff0c;差商会变得稍显复杂&#xff0c;对于x0,x1,…,xnx_0,x_1,\ldots,x_nx0​,x1​,…,xn​&#xff0c;若与y0,y1,…,yny_0,y_1,\ldots,y_ny0​,y1​,…,yn​通过映射fff一一对应&…

ASEMI整流桥KBP310电路设计注意事项

编辑-Z 型号&#xff1a;KBP310 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;1000V 最大平均正向整流输出电流&#xff08;IF&#xff09;&#xff1a;3.0A 峰值正向浪涌电流&#xff08;IFSM&#xff09;&#xff1a;60A 每个元件的典型热阻&#xff0…

MySQL LOAD VS DM8 dmfldr

MySQL LOAD VS DM8 dmfldr 背景 某业务系统从MySQL迁移至达梦后&#xff0c;有导入业务文件的功能使用MySQL的LOAD方式将csv文件导入到指定的表中。迁移到达梦后&#xff0c;该功能需要进行对应的调整&#xff08;因为达梦没有LOAD功能&#xff09;&#xff0c;但达梦提供了dm…

【自定义类型】-结构体,枚举,联合

&#x1f387;作者&#xff1a;小树苗渴望变成参天大树 &#x1f496;作者宣言&#xff1a;认真写好每一篇博客 &#x1f9e8;作者gitee:link 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; &#x1f38a;自定义类型&#x1f389;前言&a…