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的变种和进展四. 生成对抗网络的应用五. 持续挑战与未来发展方向六. 小结 前言 生…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
