通过访存地址获取主存数据的过程

news2024/10/1 23:34:09

目录

1.根据访存地址在Cache中查找数据

2.如果在Cache中命中

3.如果没有命中

4.数据送CPU

5.做几道题:


主要厘清思路,中间细节需自行补充!

1.根据访存地址在Cache中查找数据

 ① 访存地址的结构会根据Cache和主存之间的映射方式不同而改变。映射方式有三种:直接映射,全相联映射和组相联映射(这里不细讲,还不清楚的可以到主页搜关键词或者回看书)。

注意

第一点:

Cache只是保存了主存的一部分副本,主存会将某些主存块复制到Cache中,也就是Cache行中。也就是Cache行的大小等于主存块的大小。所以不能把Cache行想象为一行一行的结构,因为里面包含很多个存储单元。

第二点:

直接映射中,有下面的关系图,可能会有人误解,Cache是由Cache行号和块内地址组成的,不是这样的。

这里这样画的原因:

Cache的块数(行数)比主存块数小很多,所以表示Cache块的位数肯定比表示内存块的位数小。这里的位数差就可以反映Cache和主存的容量差。(例如,主存块为16块(2^4),Cache块为4块(2^2),那么2^4/2^2=4,主存容量就是Cache容量的4倍)。

假设主存块号为13,Cache总行数为4(也就是只拷贝了主存的4个主存块)。那么其Cache行号=13%4=1。主存块号用二进制表示出来是1101。这里的01,和上面作余求出来的结果是一样的。所以用主存块号的低位就可以计算出Cache的行号,具体用低几位?

那就要看Cache的总行数,例如上面Cache行为4,那么用2位(2^2)就可以表示Cache行号了。

那么主存块号的高位用来作什么呢?主存块号的高位,我们称之为"标记位"。在Cache行中也有相应的标记位。将主存地址的高位的标记位与Cache中的标记位进行匹配。如果匹配成功,且Cache的有效位置"1"。那么就表示"命中"。也就是CPU想要的数据可以在Cache中找到,不需要访存了。

所以Cache数据区的容量比主存小很多,小多少可以看两者位数的差值(差的位数),而两者的差值正好对应tag的位数。例如:根据主存容量是 Cache 容量(当然是数据部分Cache)的 4096 倍。那么tag位就有12(2^12)位。

结论:tag位数=log2(主存大小/Cache数据区大小)

第三点:

那么Cache的真正结构是什么呢?

上面反复提到了Cache的数据区。首先我们要明白,我们常说的Cache块的大小和主存块大小相同实际指的是数据Cache(Cache的数据部分)。例如下图,主存块大小为64B,那么Cache的数据部分就是64B。

相对于主存块,Cache还有额外的标记项,上面的标记项忽略了脏位和替换控制位,实际的Cache行标记项:

在组相联映射中将每组各行的标记项排成一行,将各组从上到下排列,构成一个二维的标记阵列。查找 Cache时就是查找标记阵列的标记项是否符合要求。二路组相联的标记阵列如图 

2.如果在Cache中命中

以直接映射为例,首先会根据访存地址的主存块号的低位找到相应的Cache行,接着对比这个Cache行对应的标记位,如果标记位相同,且有效位为"1",则命中。这时根据访存地址的块内地址,在Cache行中存取信息即可。

3.如果没有命中

则需要到主存中找读数据,这就需要将逻辑地址转换为物理地址(涉及操作系统--内存管理内容),并且根据物理地址,在主存中查找相应的数据。

以页式存储管理为例:

拿个题举例:

一分页存储管理系统中,逻辑地址长度为16位,页面大小为4k,现有一逻辑地址为2F6AH(十六进制),页号对应块号如下表,求逻辑地址2F6AH对应的物理地址。

① 将十进制转换为二进制为0010 1111 0110 1010  页号 页内地址

② 由于页面大小(内存块大小)为4K,那么页内地址位数:4K=2^2*2^10=2^12。那么页号位数就是16-12=4位。页号(0010)=2,对应块号是7(0111)。

③ 物理地址:

块号+页内地址:0111 1111 0110 1010  块号 页内地址

④ 最后将这个地址写为16进制就行。

其他的,具有快表的地址变换机构,以及其他的内存管理方式(段式存储管理,段页式存储管理)可以看这篇:(计算机组成原理和操作系统这两部分一定要结合起来学)

http://t.csdnimg.cn/C6fw7
 

4.数据送CPU

在主存中找到相应数据后,还需要将数据送到Cache行中。将标记设为地址的高位,有效位置"1"

同时将该地址的内容送CPU。

直接映射:对于直接映射,主存中的每一块只能装入Cache的对应行(主存块号%Cache总行数)。所以将数据送到对应Cache行中即可。

全相联映射:将数据送到Cache的任意空闲行中。

组相联映射:送到相应的Cache组内的任意空闲行中。

注意:即使CPU要找到数据对应存在于主存的某个存储单元中,但是CPU还是会读出这个存储单元所在的内存块的一整块信息送到对应的Cache行中。

5.做几道题:

地址映射表,即标记阵列,指的是Cache的标记项(有效位,脏位,替换控制位,标记位),由于这里忽略了脏位和替换控制位,所以只需要考虑有效位(1位)和标记位:

标记位有多少位呢?

根据主存容量是 Cache 容量的 4096 倍。那么tag位就是12位(2^12)。所以标记项就是12+1=13位。

又因为Cache有64块,所以地址映射表大小:64*13bit

这里的有效容量指的就是Cache的数据部分,每块16B,那么Cache行大小=主存块大小=16B=2^4。

① Cache中总共有多少Cache块:2^7*2^10=2^17        2^17/2^4(16B)=2^13

② 总共有多少cache组:2^13/2^3(8路组相联)=2^10

③ 主存地址:标记(剩余部分)+组号(10位)+块内地址(4位)

1234567H=0001 0010 0011 01 00 0101 0110 0111

00010010001101转化为16进制,答案C。

直接映射方式:主存地址:标记+行号+块内地址

① 主存容量(2^20)是Cache容量(2^4*2^10=2^14)的2^6倍,所以标记位为6位。

② 每字32位,块内地址为5位(2^5)

③ 主存地址:0011 0101 0011 0000 0001

010011000换算为十进制:152

组相联映射中,主存地址的组成:标记+组号+块内地址

主存块大小和Cache块大小都增加一倍,那么块内地址位数+1(自己想一下2^2=4是2^1=2的一倍)。

n路组相联表示每组中包含n个Cache行,Cache的总容量不变,Cache的大小增加一倍,那么Cache行数减少一倍,组数自然减少一倍(试想一下,8行2路,则有4组,现在4行2路,则只有2组)。块内地址和组号一增一减,tag位数不变。

直接带选项,拿B选项举例:

直接映射:

① 主存按字节编址,块大小是16B,所以先要计算主存单元在哪个主存块中:

由于主存单元从0开始编号,则48号主存单元,其实是第49个主存单元:49/16=3.065。则存放在第4个主存块中,主存块号是3

② 主存块号是3,再余Cache行数,3%16=3。则存放在3号Cache行。

另一个同理,308/16=19        19%16=3。

组相联映射:

48号存储单元主存块号是3,余Cache组号(8组):3%8=3。

另一个同理:19%8=3。

都存放在3号Cache组中,所以可能发生冲突。

采用全相联映射,主存地址:标记+块内地址

主存块大小为1个字(32位)=4B,所以用2位表示即可。剩余30(32-2)位为标记

Cache容量=存储容量+标记阵列容量

① 题目中已经告知存储容量为32K字数据:2^5*2^10*2^5=2^20

② 题目中采用回写法(脏位1)随机替换策略(不需要替换控制位)。所以每个Cache行的标记项组成:

有效位(1)+脏位(1)+标记位(30)=32

③ Cache块可以存放32K字数据,主存块大小=Cache块大小=1个字。所以Cache块数为

2^15(32K=2^5*2^10)

④ 所以Cache容量:2^20+(1+1+30)*2^15=2^10(1024+1024)=2048K

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

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

相关文章

【MySql】 mysql的组从复制

mysql的组从复制 配置mastesr [rootmysql-node10 ~]# vim /etc/my.cnf [mysqld] datadir/data/mysql socket/data/mysql/mysql.sock symbolic-links0 log-binmysql-bin server-id1 [rootmysql-node10 ~]# /etc/init.d/mysqld restart #进入数据库配置用户权限 [rootmysql-nod…

方差稳定变换(Variance Stabilizing Transformation)介绍,专业生物学领域统计

介绍 方差稳定变换(Variance Stabilizing Transformation,VST)是一种统计方法,用于将一个具有异方差性的随机变量(即方差随着均值的变化而变化的变量)转换为方差相对稳定的变量。这种转换在数据分析和建模…

【网络】TCP协议详解(下)

上文介绍了TCP传输控制协议的报头,并且渗透了TCP保证可靠性的策略:如流量控制、按序到达、确认应答机制以及超时重传。本文继续讲解TCP剩下的协议,剩下俩个大话题,难度都比较麻烦。 本文将介绍TCP协议最常见的三次握手和四次挥手…

腾讯地图SDK Android版开发 7 覆盖物示例1

腾讯地图SDK Android版开发 7 覆盖物示例1 前言界面布局MapMarker类常量成员变量初始值Marker点击事件Marker拖拽事件创建覆盖物移除覆盖物设置属性 MapMarkerActivity类控件响应事件 运行效果图 前言 文本介绍Marker的常用属性、交互和碰撞示例。 示例功能如下: …

【计算机网络】认识端口号 认识传输层协议 认识网络字节序 认识socket套接字

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

收银系统源码—千呼新零售【硬件篇】

连锁店收银系统源码—多商户平台入驻商城已上线-CSDN博客文章浏览阅读1k次。零售行业连锁店收银管理系统多商户入驻本地生活即时零售平台商城https://blog.csdn.net/V15850290240/article/details/141310629 详细介绍请查看上方文章↑↑↑ 详细介绍请查看上方文章↑↑↑ 详细…

[大模型]配置文件-Langchain-Chatchat-V0.3 (1)

文章目录 简述本地配置配置文件model_settings.yaml使用Ollama配置模型配置 使用Xinference配置模型配置修改默认使用的模型 对话基础对话知识库对话 简述 针对Langchain-Chatchat-V0.3版本,对配置文件与模型使用说明,本文建议使用Ollama配合Chatchat使…

用Python实现9大回归算法详解——09. 决策树回归算法

1. 决策树回归的基本概念 决策树回归(Decision Tree Regression)是一种树状结构的回归模型,通过对数据集进行递归分割,将数据分成更小的子集,并在每个子集上进行简单的线性回归。决策树的核心思想是通过选择特征及其阈…

centos7.9系统安装cloudpods并使用ceph存储(二)

1.ceph安装 1.1 环境准备 配置hosts: $ vim /etc/hosts 10.121.x.x node01设置ssh无密码登录: # ssh-keygen -t rsa # ssh-copy-id -i /root/.ssh/id_rsa node01关闭selinux、firewalld # setenforce 0 # sed -i "s#SELINUXenforcing#SELINUXd…

国自然研究热点、“C位出圈”的类器官研究离不开细胞因子

前 言: 目前,类器官已从基础研究发展至药物开发和精准治疗。在疾病建模、药物开发、肿瘤研究、再生医学、精准医学等领域发展迅速。类器官与体内器官在功能和结构上的高度相似,使其广泛用于发育生物学和疾病建模。传统的2D细胞模型和模式动物…

k8s之Pod对象多种调度方式

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

Redis数据库一文入门

Redis 是一个用于存储和管理数据的开源内存数据结构存储系统。它以其高性能和丰富的数据结构支持而闻名,是构建高效、可扩展应用程序的理想选择。本文将带你入门 Redis,并探讨其基本概念、安装步骤和一些常见的使用场景。 什么是 Redis? Re…

疯感工牌的风还是吹到了L4级无人驾驶

俗话说得好,打工人哪有不疯的? 最近你是不是也被“发疯工牌梗”刷屏了 一张张看似情绪稳定的工牌 以独特的方式展现了属于打工人自己的个性 这不,疯感工牌的风也吹到了无人驾驶 无人车也有了属于自己的时尚单品 看看它们都是如何介绍自己的&a…

Wot Design Uni:一个高颜值、轻量化的uni-app组件库,uni-app生态的新宠

一、介绍 wot-design-uni组件库基于vue3Typescript构建,参照wot design的设计规范进行开发,提供70高质量组件,支持暗黑模式、国际化和自定义主题,旨在给开发者提供统一的UI交互,同时提高研发的开发效率。 特性&#x…

新的网络钓鱼方法针对 Android 和 iPhone 用户

关注公众号网络研究观获取更多内容。 ESET 研究人员发现了一种针对 Android 和 iPhone 用户的不常见网络钓鱼活动。 他们分析了一起针对捷克某知名银行客户的网络钓鱼案例。 网络钓鱼流程 这种技术值得注意,因为它会从第三方网站安装钓鱼应用程序,而无…

数据可视化大屏模板-美化图表

Axure作为一款强大的原型设计软件,不仅擅长构建交互式界面,更在数据可视化方面展现出了非凡的创意与实用性。今天,就让我们一起探索Axure设计的几款精美数据可视化大屏模板,感受数据之美。 立体图表的视觉冲击力 Axure的数据可视…

【大模型理论篇】基于3D可视化视角理解GPT

1. 背景介绍 先前我们通过多篇技术文章来分析大模型的原理,包括: 《Transformer原理及关键模块深入浅出》《GPT系列预训练模型原理讲解》、《大模型时代下Bert去哪啦》、《关于LLaMA 3.1 405B以及小模型的崛起》、《LLaMA3结构关键模块分析》、《强化学习…

JS基础进阶2-操作元素

目录 1.操作元素-修改DOM(文档对象模型)元素 1. 修改元素的文本内容 2. 修改元素的样式 3. 修改元素的属性 4. 修改元素的类名 5.修改body元素 2.修改自定义属性 2.1H5中设置自定义属性、 2.2使用JavaScript修改自定义属性 3.节点操作 3.1节点概…

不懂就问,换毛季猫咪疯狂掉毛怎么办?宠物浮毛该如何清理?

最近天气变热了,每天都30度以上,我家猫狂掉毛,床上、地板上堆积了不少。第一次养猫的我没见过这种阵仗,以为它生病了,连忙带它去看医生。医生告诉我,这是正常的猫咪换毛现象,我才放下心来。原来…

Python代码加密打包发布

本博客主要介绍: 1. 将python代码编译为so(win环境是pyd) 2.打包生成wheel文件,可以使用pip 进行安装 1. 项目结构 注意,__init__.py文件是必须的,内容可为空 2. example.py 里面是自己写的一些方法&am…