05《存储器层次结构与接口》计算机组成与体系结构 系列课

目录
存储器层次结构概述
层次结构的定义
存储器的排名
存储器接口
处理器与存储器的速度匹配
存储器接口的定义
存储器访问命中率
两种接口
第1种方式:并行
命中率的计算
存储器访问时间
第2种方式:逐级
结语
大家好,欢迎回来。上一节课,我们学习了:04《计算机的内部存储》计算机组成与体系结构 系列课。在本次课程中,我们将学习关于存储器层次结构的知识,并且简要介绍不同的存储单元是如何与处理器进行接口连接的。那么,让我们开始学习吧!
存储器层次结构概述
层次结构的定义
简单来说,“层次结构”这个词意味着 排名。排名可以根据不同的参数来进行。

例如,如果我们根据上映日期来考虑诺兰的《黑暗骑士》三部曲,首先是《蝙蝠侠:侠影之谜》,然后是《黑暗骑士》,最后是《黑暗骑士崛起》。

但如果我们根据烂番茄网站的评分来看,以94%的新鲜度位居榜首的是《黑暗骑士》,因为老实说希斯·莱杰的表现实在是太出色了,其次是《黑暗骑士崛起》,最后是《蝙蝠侠:侠影之谜》。如果考虑Metacritic的评分,这个排名也是相同的。

存储器的排名
同样地,基于不同的方面,存储器存储也可以进行排名。如果我们考虑访问时间和大小,我们可以这样对存储单元进行排名:寄存器由触发器组成,并且嵌入在处理器内部,因此访问它们的时间是最少的。接下来是SRAM缓存,然后是DRAM主存储器。最后,是二级存储器。然而,在成本和使用频率方面,这个层次结构是相反的。

我的意思是,随着我们在层次结构中向上移动,成本和使用频率会增加。
存储器接口
处理器与存储器的速度匹配
在我们之前的讨论中,我们已经了解到处理器非常快,而拥有存储器层次结构的唯一目的就是:以合理的成本弥补快速处理器和慢速存储器之间的速度不匹配。
存储器接口的定义
现在,让我们来谈谈存储器接口,它是计算机组织的一部分,涉及将不同级别的存储单元,特别是与处理器以及I/O外围设备连接的方式。通常,处理器的速度是以MIPS为单位来计算的。有些人称之为MIPS,它代表每秒百万条指令,我们的目标是:以更快且成本效益高的方式,从存储器中向处理器提供那么多的指令。

存储器访问命中率
让我们尝试理解存储器的不同级别。如果我说,第n级别的信息是第(n+1)级别的信息的一个子集,这意味着如果处理器在第n级别存储器中查找某物,无论是任何指令或数据,如果只在该级别找到,我们称之为“命中”。否则,它被称为“未命中”,然后处理器会去第(n+1)级别,即下一个级别查找相同的信息。

所以,在未命中的情况下,在第n级别和第n+1级别查找信息所花费的时间因该被考虑到。
然而,情况并非总是这这样。实际上,这取决于接口的连接方式。让我深入的来看看。通常情况下,接口有两种方式。下面这个插图将帮助我们来进行理解。
两种接口
第1种方式:并行
所以不容的存储级别,都同时连接到处理器,每当处理器想要一些信息时,他可以在所有不同级别的存储器中并行查找,如图所示,就是处理器连接到了三个不同级别的存储单元。我们暂且叫他们分为是M1,M2,M3。而访问他们的时间分别是T1,T2,T3。同时,T1<T2<T3。

命中率的计算
现在,我们假设对于一个程序或一组指令,M1和M2的命中率分别为H1和H2。ok,你一定会再想,到底什么是命中率啊?怎么计算呢?

我们已经知道,在执行过程中,指令集从非易失性二级存储中被带入主存储器。同时,频繁访问的部分存储在缓存中。

假设一个程序中有100条指令,它们永久存储在存储器层次结构的最后一级,即二级存储器中。假设这100条指令中有80条被带入主存储器。在这种情况下,命中率将是80除以100,即0.8或80%。

这意味着:在执行过程中,处理器有80%的机会在主存储器中获得所需的指令。
由于最后一级是永久存储,命中率自然是100%。所以,我们并不真正需要担心这一级,因为如果程序不在这里,处理器就无法执行它。就像如果我们没有音频文件,我们怎么播放它呢?
存储器访问时间
所以,回到我们的图示,有了所有这些信息,如果我们现在尝试找出在这个组织中,平均需要多少时间来找到一条指令,这也就是人们常说的有效或平均存储器访问时间,公式如下。
让我们理解一下这个公式,这样我们就不需要再去专门记住它了。

所以,有H1%的机会在M1中找到指令。这是访问M1所花费的时间。现在,(1-H1)%的机会是处理器可能在M1中找不到所需的指令,这被称为M1的未命中率或未命中比率。对于这些情况,处理器将查看下一个级别,即M2,它有H2%的机会拥有这些指令。同时,访问M2所花费的时间是T2,因此是(1-H1)乘以H2和T2。

所以,最终呢,有(1-H2)%的几率是处理器可能在M2中找不到所需的指令,所以,M2的未命中率或未命中比率就是(1-H2)。因此(1-H2)(1-H2)T3的意思就是考虑到了所有找不到所需指令的情况,无论是在M1还是在M2上,这种情况下,我们就不得不在M3上进行查找了,也就是最后一级。访问M3的所需时间是T3,所以公式就是:(1-H2)(1-H2)T3。

请记住,这些不同级别的存储器都与处理器直接相连,而它们各自的访问时间差异,正是实现并行操作的关键所在。
第2种方式:逐级
第二种方式是逐级接口存储单元,这意味着,如果所需的指令在M1中找不到,那么处理器将去下一个级别,即M2中查找。如果它甚至不在那里,寻找过程将继续到下一个级别。

所以,在这种情况下,公式将变成这样。

因为在这里,处理器并不是同时连接到所有存储单元。同时,如果处理器在第(n+1)级别寻找指令,这意味着它已经在第n级别或前一个级别寻找过它,并且没有找到。这就是为什么要同时考虑了两个访问时间(T1+T2)。
结语
好了,这就是关于存储器层次结构以及存储器接口不同方式的所有内容。
在下一堂课中,我们将尝试解决一些与这个概念相关的数值问题,以便有一个清晰的理解。
所以,我希望在下一堂课中见到你们。谢谢大家的阅读。
相关文章:
05《存储器层次结构与接口》计算机组成与体系结构 系列课
目录 存储器层次结构概述 层次结构的定义 存储器的排名 存储器接口 处理器与存储器的速度匹配 存储器接口的定义 存储器访问命中率 两种接口 第1种方式:并行 命中率的计算 存储器访问时间 第2种方式:逐级 结语 大家好,欢迎回来。…...
elasticsearch报错fully-formed single-node cluster with cluster UUID
1.问题描述 k8s集群内部署的es中间件起不来,查看日志发现如下警告,节点发现功能开启,但是目前我是单节点服务,所以尝试编辑sts将节点发现功能去掉或者在部署时将你的sts的yaml文件和chart文件修改重新部署以去掉该功能 {"t…...
Milvus×Florence:一文读懂如何构建多任务视觉模型
近两年来多任务学习(Multi-task learning)正取代传统的单任务学习(single-task learning),逐渐成为人工智能领域的主流研究方向。其原因在于,多任务学习可以让我们以最少的人力投入,获得尽可能多…...
DAPP
02-DAPP 1 啥是 DApp? DApp,部署在链上的去中心化的应用。 DApp 是开放源代码,能运行在分布式网络上,通过网络中不同对等节点相互通信进行去中心化操作的应用。 DAPP 开放源代码,才能获得人的信任。如比特币ÿ…...
生产环境中,nginx 最多可以代理多少台服务器,这个应该考虑哪些参数 ?怎么计算呢
生产环境中,nginx 最多可以代理多少台服务器,这个应该考虑哪些参数 ?怎么计算呢 关键参数计算方法评估步骤总结 在生产环境中,Nginx最多可以代理的服务器数量并没有一个固定的限制,它取决于多个因素,包括Ng…...
【深度学习|目标跟踪】StrongSORT 详解(以及StrongSORT++)
StrongSort详解 1、论文及源码2、DeepSORT回顾3、StrongSORT的EMA4、StrongSORT的NSA Kalman5、StrongSORT的MC6、StrongSORT的BOT特征提取器7、StrongSORT的AFLink8、StrongSORT的GSI模块 1、论文及源码 论文地址:https://arxiv.org/pdf/2202.13514 源码地址&#…...
23种设计模式-原型(Prototype)设计模式
文章目录 一.什么是原型设计模式?二.原型模式的特点三.原型模式的结构四.原型模式的优缺点五.原型模式的 C 实现六.原型模式的 Java 实现七. 代码解析八.总结 类图: 原型设计模式类图 一.什么是原型设计模式? 原型模式(Prototype…...
Qt—QLineEdit 使用总结
文章参考:Qt—QLineEdit 使用总结 一、简述 QLineEdit是一个单行文本编辑控件。 使用者可以通过很多函数,输入和编辑单行文本,比如撤销、恢复、剪切、粘贴以及拖放等。 通过改变 QLineEdit 的 echoMode() ,可以设置其属性,比如以密码的形式输入。 文本的长度可以由 m…...
go-zero使用自定义模板实现统一格式的 body 响应
前提 go环境的配置、goctl的安装、go-zero的基本使用默认都会 需求 go-zero框架中,默认使用goctl命令生成的代码并没有统一响应格式,现在使用自定义模板实现统一响应格式: {"code": 0,"msg": "OK","d…...
BUGKU printf
整体思路 实现循环-->获取libc版本和system函数地址->将strcpy的got表项修改为system并获得shell 第一步:实现循环 从汇编语句可以看出,在每次循环结束时若0x201700处的值是否大于1则会继续循环。 encode1会将编码后的结果保存至0x2015c0处&am…...
深度学习:梯度下降法
损失函数 L:衡量单一训练样例的效果。 成本函数 J:用于衡量 w 和 b 的效果。 如何使用梯度下降法来训练或学习训练集上的参数w和b ? 成本函数J是参数w和b的函数,它被定义为平均值; 损失函数L可以衡量你的算法效果&a…...
`console.log`调试完全指南
大家好,这里是 Geek技术前线。 今天我们来探讨 Console.log() 的一些优点。并分析一些基本概念和实践,这些可以让我们的调试工作变得更加高效。 理解前端 log 与后端 log 的区别 前端 log 与后端 log 有着显著的不同,理解这一点至关重要。…...
ROS VSCode调试方法
VSCode 调试 Ros文档 1.编译参数设置 cd catkin_ws catkin_make -DCMAKE_BUILD_TYPEDebug2.vscode 调试插件安装 可在扩展中安装(Ctrl Shift X): 1.ROS 2.C/C 3.C Intelliense 4.Msg Language Support 5.Txt Syntax 3.导入已有或者新建ROS工作空间 3.1 导入工作…...
16 —— Webpack多页面打包
需求:把 黑马头条登陆页面-内容页面 一起引入打包使用 步骤: 准备源码(html、css、js)放入相应位置,并改用模块化语法导出 原始content.html代码 <!DOCTYPE html> <html lang"en"><head&…...
微服务即时通讯系统的实现(服务端)----(3)
目录 1. 消息存储子服务的实现1.1 功能设计1.2 模块划分1.3 模块功能示意图1.4 数据管理1.4.1 数据库消息管理1.4.2 ES文本消息管理 1.5 接口的实现1.5.1 消息存储子服务所用到的protobuf接口实现1.5.2 最近N条消息获取接口实现1.5.3 指定时间段消息搜索接口实现1.5.4 关键字消…...
.net6.0 mvc 传递 model 实体参数(无法对 null 引用执行运行时绑定)
说一下情况: 代码没问题,能成功从数据库里查到数据,能将数据丢给ViewBag.XXXX, 在View页面也能获取到 ViewBag.XXXX的值,但是发布到线上后报这个错: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 无法对 …...
VUE 入门级教程:开启 Vue.js 编程之旅
一、Vue.js 简介 Vue.js 是一套构建用户界面的渐进式 JavaScript 框架。它专注于视图层的开发,能够轻松地与其他库或现有项目进行整合。Vue.js 的核心库只关注视图层,通过简洁的 API 实现数据绑定和 DOM 操作的响应式更新,让开发者可以高效地…...
Ubantu系统docker运行成功拉取失败【成功解决】
解决docker运行成功拉取失败 失败报错 skysky-Legion-Y7000-IRX9:~$ docker run hello-world docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head “http://%2Fvar%2Frun%2Fdocker.sock/_ping”: dial uni…...
mvn-mac操作小记
1.安装brew 如果报错,Warning: /opt/homebrew/bin is not in your PATH. vim ~/.zshrc,最后一行追加 export PATH“/opt/homebrew/bin:$PATH” source ~/.zshrc 2.安装brew install maven mvn -version查看路径 Maven home: /opt/homebrew/Cellar/mav…...
机器学习——生成对抗网络(GANs):原理、进展与应用前景分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一. 生成对抗网络的基本原理二. 使用步骤2.1 对抗性训练2.2 损失函数 三. GAN的变种和进展四. 生成对抗网络的应用五. 持续挑战与未来发展方向六. 小结 前言 生…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...
密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...
