[408] cache与主存的映射部分概念

news2024/10/6 18:30:04
涉及:
	基本理解 (防止误解映射规则
	cache 与 主存 的 "地址"构成
	主存块、cache块
	cache容量、cache的总容量
	有关计算的一些刁难名词
	
不涉及:
	cache 与 主存映射规则

基本理解:
 首先我们需要明确的是我们之后针对的位数都是针对的 地址. 与实际的存储的 (01) 二进制无关. 地址与存储的实际数据是两个不同的概念. 我们的映射规则是建立在地址上的.

 “” 的概念其实 和 按字节编址 是相似的.

设 我们能够存储 2 32 b i t 2^{32}bit 232bit 的二进制位.
 ① 如果是按 比特 编址, 那么会存在如下地址
0000   . . .   . . .   0000   0000 ⏟ 32 ∼ 1111   . . .   . . .   1111   1111 ⏟ 32 \underbrace{0000 \: ... \: ... \: 0000 \: 0000}_{32} \sim \underbrace{1111 \: ... \: ... \: 1111 \: 1111}_{32} 32 0000......0000000032 1111......11111111
 ② 如果按 字节 (one B = eight bit) 编址:
   2 32 2^{32} 232 可以分成 ( 2 32 / 2 3 ) (2^{32}/2^{3}) (232/23) 个部分, 即 ( 32 − 3 ) (32-3) (323)
0000   . . .   . . .   0000   0000 ⏟ 29 000 ⏟ 3 \underbrace{0000 \: ... \: ... \: 0000 \: 0000}_{29}\underbrace{000}_{3} 29 0000......000000003 000
  那么这 29 29 29 位就是表示 8 8 8 b i t bit bit 一组的地址了.
 
 ③ 同理 “块” 是一样的, 假设一个块的大小是 16 b i t 16 bit 16bit
0000   . . .   . . .   0000   0000 ⏟ 28 000 ⏟ 4   块内地址 \underbrace{0000 \: ... \: ... \: 0000 \: 0000}_{28}\underbrace{000}_{4 \: 块内地址} 28 0000......000000004块内地址 000
  这前 28 28 28 位就是用来划分块的了, 后 4 4 4 位就是所谓的的块内地址

注: 地址在计算机存储中是观测不到的.


cache 与 主存的 " 地址 " 构成:
 与其说是地址构成, 不如说成是 地址能分成哪些部分.
注: c a c h e cache cache 的地址是不包括 标记项. 标记项对于 c a c h e cache cache 来说更像是为了方便而方便, 而在原地址上添加的.

经过了上面关于分块的解释,我们就很容易理解地址的划分:
① 全相联映射:
在这里插入图片描述
如我们上面假设, 那么 块内地址的位数为: 4 4 4, 用来表示 "块地址"的位数为: 28 28 28.
 如果是对 c a c h e cache cache 地址结构的求解, 那么这 28 28 28 位表示的是 c a c h e cache cache 行号的位数.

② 直接映射:
在这里插入图片描述

如上面我们假设的块大小, 那么块内地址位数为: 4 4 4, 标记位 与 c a c h e cache cache 行号的位数总和为: 28.
0000   . . .   . . .   0000   0000 ⏟ 28   " 块地址 " 000 ⏟ 4 块内地址 \underbrace{0000 \: ... \: ... \: 0000 \: 0000}_{28\:"块地址"}\underbrace{000}_{4块内地址} 28"块地址" 0000......000000004块内地址 000
 在原 28 28 28 位的基础上标记位 c a c h e cache cache行号 的划分涉及到了 直接映射 的规则.  (你也可以理解为 “块地址” 是用 标记位 和 c a c h e cache cache行号 表示的.
 
假设 c a c h e cache cache 2 8 2^8 28 行, 那么将如下映射: (有关 c a c h e cache cache 行数的计算之后会涉及
2 28   %   2 8 2^{28} \: \% \: 2^{8} 228%28
二进制运算规则
0000   . . .   . . .   0000 ⏟ 20   0000   0000 ⏟ 8   余数 \underbrace{0000 \: ... \: ... \: 0000}_{20} \: \underbrace{0000 \: 0000}_{8 \: 余数} 20 0000......00008余数 00000000
所以 “块地址” 又可以划分为 “标记位” 与 “ c a c h e 行号 cache行号 cache行号”.

③ 组相连映射:
在这里插入图片描述
如果理解了 直接映射 的行号划分, 那么组号是一样的.

假设 c a c h e cache cache 8 8 8 组, 那么将如下映射: (有关 c a c h e cache cache 行数的计算之后会涉及
2 28   %   2 3 2^{28} \: \% \: 2^{3} 228%23
二进制运算规则
0000   . . .   . . .   0000 ⏟ 25   000 ⏟ 3   余数 \underbrace{0000 \: ... \: ... \: 0000}_{25} \: \underbrace{000}_{3 \: 余数} 25 0000......00003余数 000
所以 “块地址” 又可以划分为 “标记位” 与 “ c a c h e 组号 cache组号 cache组号”.

主存块、 c a c h e cache cache
 因为这两个"块"中存储的数据是一样的, 所以 主存块的大小 必然要等于 c a c h e cache cache块大小.

那假设 主存块的大小为 32 32 32 字节, 我们可以知道些什么能?
 其实我们上面已经求过了 → \rightarrow 块内地址的位数. 我们试着求一下
32 B = 2 5 B 32 B = 2^5B 32B=25B 那么 块内地址就是 5 5 5 位 ( 如果没说明按什么方式编址, 那么默认按字节编址.
解读: 存储块的大小 → \rightarrow 以多大的空间分块.

c a c h e cache cache容量、 c a c h e cache cache总容量
  c a c h e cache cache容量 = c a c h e cache cache行数 × \times × 存储块大小
 上面这个公式是不是相当的眼熟:
c a c h e 地址结构 { c a c h e 行号位 块内地址位 cache地址结构 \begin{cases} cache行号位\\ 块内地址位 \end{cases} cache地址结构{cache行号位块内地址位
那么 ① 式就可以转换成:
c a c h e 容量 = 2 行号位数 × 2 块内地址位数 × 2 编码位数 cache容量 = 2^{行号位数} \times 2^{块内地址位数} \times 2^{编码位数} cache容量=2行号位数×2块内地址位数×2编码位数注: 为什么要乘以编码位数在 基本理解 中已经求过了. 整个容量的位数去除编码位数才是地址表示的位数.

假设 c a c h e cache cache容量大小为 64 K B 64KB 64KB, 存储块大小为 32 B 32B 32B, 按字节编址 ( 3 位 ) (3位) (3).

64 K B → 2 16 ∗ 2 3 → c a c h e 64KB \rightarrow 2^{16}*2^{3} \rightarrow cache 64KB21623cache地址 ( 19 − 3 ) = 16 (19-3)=16 (193)=16
32 B → 2 5 ∗ 2 3 → 块内地址 ( 8 − 3 ) = 5 位 32B \rightarrow 2^{5}*2^{3} \rightarrow 块内地址(8-3)=5位 32B2523块内地址(83)=5

利用公式: c a c h e cache cache行数 = c a c h e 容量   /   存储块大小 cache容量 \: / \: 存储块大小 cache容量/存储块大小.
64 K B   /   32 B = 2 11 64KB \: / \: 32B = 2^{11} 64KB/32B=211 所以 c a c h e cache cache 行位数为 11 11 11.

  c a c h e cache cache总容量 = (各种标指位的位数 + + + 标记位数 + + + 地址位数) × \times × 行数
 这个就是规定. 记住就好了

有关计算的刁难名词
 ① 行长 (有时也称行大小 : 存储块大小
 ② c a c h e cache cache有效容量 : c a c h e cache cache 容量


-- over.

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

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

相关文章

C# | 对象池

对象池 文章目录 对象池前言什么是对象池对象池的优点对象池的缺点 实现思路示例代码 结束语 前言 当我们开发一个系统或者应用程序时,我们通常需要创建很多的对象,这些对象可能是线程、内存、数据库连接、文件句柄等等。在某些情况下,我们需…

CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程

使用到的工具软件与固件下载地址: https://41ws38-my.sharepoint.com/:f:/g/personal/ddf_41ws38_onmicrosoft_com/EhgM458YouBBshliWJhjcDcBAU-F5Mu6HTIU8PeKJHZnZA?eZnJZa6 不能下载,帖子下面评论。 准备工作 设备 / 硬件:CM311-1a YST 电…

C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数

凡事发生必将有益于我,高手,从来都不仅仅是具备某种思维的人,而是那些具备良好学习习惯的人,成为高手,无他,手熟尔! -----来自一位IT领域的大神 在最近的学习之中,对于格式化输出这个…

微信小程序图片裁剪功能的实现

文章目录 图片上传与处理图片尺寸适配图片显示与裁剪框裁剪框的拖动与缩放增加canvas并裁剪图片保存图片到相册总结 在之前的博文中,已经介绍了如何使用在前端开发中,实现较方便自由的图片裁剪功能,可见博文: 如何一步步实现图片…

直达CSDN——创作者创收

catalogue 🌟 写在前面🌟 关于创收线下聚会🌟 创作是最简单的变现模式🌟 知识星球是否适合你🌟 独自开-让开发变得简单🌟 税/睡后收入🌟 KOL越具价值🌟 期待创收组织的建立&#x1f…

MySQL数据库和Redis缓存一致性的更新策略

目录 专栏导读一、更新策略二、读写缓存1、同步直写策略2、异步缓写策略三、双检加锁策略四、数据库和缓存一致性的更新策略1、先更新数据库,再更新Redis2、先更新缓存,再更新数据库3、先删除缓存,再更新数据库延时双删4、先更新数据库,再删除缓存5、总结五、MySQL主从复制…

解密《永恒之塔私服》龙界要塞全貌

《永恒之塔2.0:进军龙界》将于12月29日14:00正式开放测试,全区全服29日起陆续更新,并将在元旦假期期间完成所有区服更新工作。12月27日,2.0新区抢先免费体验已经开始,凭特权激活码抢先免费体验无外挂《永恒之塔2.0》。…

Transformer通俗笔记:从Word2Vec、Seq2Seq逐步理解到GPT、BERT

前言 我在写上一篇博客《22下半年》时,有读者在文章下面评论道:“july大神,请问BERT的通俗理解还做吗?”,我当时给他发了张俊林老师的BERT文章,所以没太在意。 直到今天早上,刷到CSDN上一篇讲B…

TOGAF®10标准读书会首场活动圆满举办,精彩时刻回顾!

7月21日19:30pm,TOGAF10标准读书会线上系列活动-第一季首场活动圆满举办,读书会活动集聚了行业专家的力量,共同阅读、分享并结合自身实践,来讨论TOGAF标准第10版所阐释的内容。 首期读书会聚焦TOGAF标准第10版中的基本内容展开分享…

AI平台、AI中台架构

选择什么方式接入AI开放平台 1)公有云 形式:在开放平台注册账户,申请权限,调用对应AI能力的API服务 缺点:数据出公司域,存在数据安全 优点:价格相对低 2)私有化 形式:将AI能力以产品包的形式部署到客户的服务器上 缺点:需要后续运维支持、价格昂贵 优点:数据…

字节跳动|后端|提前批|一面+二面+三面+HR 面

一面|1h 自我介绍select、poll、epoll?epoll的两种触发模式?TCP三次握手过程,有什么状态,状态机如何变化?TCP握手的目的有哪些?什么是 TIME_WAIT 状态,为什么需要 TIME_WAIT 状态&a…

168张图,万字长文,手把手教你开发vue后台管理系统

“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击查看活动详情。” 我写这个项目的初衷一方面是为了记录自己自学 vue 的一个过程,另一方面是为了帮助小白快速掌握使用 vue 脚手架创建项目的一个完整过程。 本项目是一个…

STM32之ADC

目录 ADC介绍 ADC特性 ADC通道 ADC转换顺序 ADC触发方式 ADC转化时间 ADC转化模式 实验:使用ADC读取烟雾传感器的值 代码实现 ADC介绍 ADC 是什么? 全称: Analog-to-Digital Converter ,指模拟 / 数字转换器 ADC的性能…

OpenCV安装配置教程VS2022(超级顺利)

前言 博主最开始没打算写这篇博客,只是想简单的在网上找一下最新版的OpenCV的安装配置教程,适用于VS2022的,但是我搜了一早上,也没搜到一个能让我成功安装配置的,看了很多很多文章,根本就没有几篇有用的。…

JavaEE三层架构

一. JavaEE三层架构 客户端:发送请求【http://ip:port/工程路径/资源路径】给服务器。 服务器:处理客户端的请求,把结果响应给客户端,由以下三部分组成 1.Web层(SpringMVC)包括:①使用Servlet…

微服务架构统一异常监控Sentry

Sentry 基本介绍简单使用Java项目应用代码侵入(不建议,耦合性大)全局拦截器捕获(建议)Lockback.xml 配置(建议) 基本介绍 Sentry 是一个开源的实时错误报告工具,支持 web 前后端、移…

《从零开始读懂Web3》读后感 之 Web 3.0的前世今生

介绍什么是 Web 3.0 (Web3)?网络的演变为什么 Web 3.0 很重要?Web 3.0 将如何运作?Web 3.0 的主要功能和技术Web 3.0 用例和应用程序Web 3.0 的潜在好处是什么?Web 3.0 的潜在挑战是什么?Web 3.…

【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

在自定义数据上训练 YOLOv8 目标检测模型的步骤可以总结如下 6 步: 🌟收集数据集🌟标注数据集🌟划分数据集🌟配置训练环境🌟训练模型🌟评估模型 1. 收集数据集 随着深度学习技术在计算机视觉领…

Windows安装mysql详细步骤(通俗易懂,简单上手)

文章目录 【确认本地是否安装mysql】【下载mysql安装包】【添加配置文件并安装mysql】【修改mysql密码】【配置环境变量】【总结】 前期在windows电脑尝试安装mysql,经历诸多不顺,特把安装详细步骤以及遇见的问题记录下来,提供给有需者使用。…

Java-Web前后端交互实现登陆注册(附源码)

1.完成用户登录功能。 2.完成注册功能。 3.主体利用Maven导入java中的jar包,使用Servlet实现前后端交互,使用mybatis以及注解,mysql进行数据保存,Tomcat服务器进行开发。 效果图 项目结构 代码 mapper(相对应注解) package com.it…