机组存储系统
局部性
理论
程序执行,会不均匀访问主存,有些被频繁访问,有些很少被访问
时间局部性
被用到指令,不久可能又被用到
产生原因是大量循环操作
空间局部性
某个数据和指令被使用,附近数据也可能使用
主要原因是顺序存放,数据一般以数组,向量,表形式存储
存储分类
作用分类
主存
辅存
高速缓冲存储器(Cache),位于主存和CPU之间,现代计算机常将其放于CPU
存取方式分类
随机存储器(RAM)
存储单元可以随机存取,存取时间与存储单元物理位置无关,主要用于主存或高速缓冲器
只读存储器(ROM)
只能读不能写,断电内容不丢,存放固定不变程序,与RAM共同作为主存
广义上只读可以通过电擦除写入,写入速度比读取慢的多
ROM和RAM都是随机存取
串行访问存储器:按其物理位置先后顺序寻址,包括顺序存取存储器(磁带)和直接存取存储器(磁带,光盘)
顺序存储器只能按循序访问,存取时间长短与物理位置有关,存取速度慢
直接存取存储器是介于顺序访问和随机访问之间,先进行大区域查找,后再小区域顺序访问
按信息可保存分类
易失性存储器:RAM,断电后消失
非易失性存储器:ROM
破坏性读出:存储信息读出后,原存储信息破坏
非破坏读出
破坏性读出存储器,必须紧接一个再生操作,以便恢复破坏信息
性能指标
存储容量=存储字数*字长(如1M*8位)
存储字数表示存储器的地址空间,字长是一次存取操作数据量
单位成本:每位价格=总成本/总容量
存储速度:数据传输率=数据宽度/存取周期(存储周期)
存取时间=启动一次存储器操作到完成该操作经历时间,分为读出时间和写入时间
存取周期=读写周期或访问周期,完整读写一次的事件,即连续两次访问操作之间最小时间间隔
主存带宽:数据传输率,表示每秒从主存进出信息最大数量

多级层次存储系统

虚拟存储系统使编程可用地址远大于主存空间
主存
主存有DRAM实现,Cache由SRAM实现
DRAM价格低于SRAM,速度慢于SRAM,都是易失性
SRAM(静态随机存储器)
DRAM(动态随机存储器)
栅极电容的电荷存储
其电荷只能维持1-2ms,电源不断电,信息会自动消失,每隔一段时间需要刷新,通常取2ms,称为刷新周期
重合法地址译码
重合法将M位地址分成接近两段
一段用于水平作X地址线
一段用于垂直作y地址线
刷新一般按行刷新,为减少刷新开销,行数要少一些
三种刷新方法
1.集中刷新:利用固定时间,一次对存储器所有行逐一再生
存在“死时间”
2.分散刷新:把每行是刷新散到各个工作周期。
一个周期分为两个,前半用于读写,后半用于刷新
加长了存取时间
3.异步刷新:前两种方法结合
刷新周期除以行数,得到两次刷新时间间隔
缩短了死时间,充分利用间隔2ms
注意问题
1.刷新对CPU透明的,刷新不依赖与外部访问
2.动态RAM刷新单位为行,由芯片内部自行生成行地址
3.刷新不需要选片,整个存储器所有芯片同时刷新
DRAM读写周期

SRAM和DRAM比较
| SRAM | DRAM | |
| 存储 | 双稳态触发器 | 栅极电容 |
| 破坏性读出 | 非 | 是 |
| 需要刷新 | 不用 | 用 |
| 送行列地址 | 同时送 | 两次送(地址复用技术) |
| 运行速度 | 块 | 慢 |
| 集成度 | 低 | 高 |
| 存储成本 | 高 | 低 |
| 用途 | Cache | 内存 |
存储器芯片的内部结构
由存储体,IO读写电路,地址移码和控制电路等组成
存储体(存储矩阵):是存储单元集合,有行选择线(X)和列选择线(Y)来选择访问单元,存储器同一行和同一列上的位同时读出
地址译码器:将地址转换成输出线的高电平
IO控制电路:控制被选中的单位的读出和写入,有放大信息作用
片选控制信号:访问某个字,必须选中该存储字所在芯片,而其他芯片不被选中
读写控制信号:根据CPU读写命令进行读写

ROM(只读存储器)
非易失
随机访问
类型
掩模式只读存储器(MROM)
厂家直接写入,无法改变
一次可编程只读存储器(PROM)
用户写入,写入后无法改变
可擦除可编程只读存储器(EPROM)
可改且可写,不能作为RAM
Flash存储器(闪存)
由MOS管组成,是半导体,非易失存储器,随机访问,可代替外存
可在不加电保存信息
可读且可写,读速度快于写
固态硬盘(SSD)
控制单元和存储单元组成
长期保存信息,可改和可写
主存组成

存储单元(存储0或1记忆单元)构成的存储矩阵(存储体)是存储器的核心部分
记忆单元是具有两种稳态的表示0或1的物理器件
为了获取存储器信息,需要对存储单元编号
指令执行过程
1.访问主存时,CPU把访问单元的地址送到MAR
2.通过地址线将主存地址送到地址寄存器,以便地址译码器进行译码选中单元
3.同时CPU将读写信号通过控制线送到主存的读写控制电路
如果是写操作,CPU将写的信息送到MDR,在读写控制电路控制下,经数据线将信号写入选定单元
如果是读操作,主存读出选中单元数据送到MDR
地址线与MAR宽度相同,数据线和MAR宽度相同
DMAR芯片容量大,地址位数多,行地址和列地址通过相同引脚先后两次输入,地址引脚数可减少一半
RAM和ROM区别
| ROM | RAM | |
| 易失性 | 非易失 | 易失 |
| 访问 | 随机访问 | 随机访问 |
| 位置 | 主存 | Cache |
| 存取 | 只读 | 存取 |
例题


读写控制线也可以是一根
多模块存储器
单体多字存储器
多体并行存储器
高位交叉编址(顺序方式)

低位交叉编址(交叉方式)

主存与CPU连接
连接原理

主存通过数据总线,地址总线,控制总线与CPU连接
数据总线位数与工作频率乘积正比于数据传输率
地址总线位数决定可寻址最大内存空间
芯片扩展技术

多个芯片集成到内存条
主存容量的扩展
位扩展法

字扩展法
字位同时扩展法

画法

外存
硬盘设备(随机访问)组成
硬盘存储器
由磁盘驱动器,磁盘控制器和盘片组成
存储区域
一个硬盘由若干记录面,每个记录面有若干个磁道,磁道又划分成若干扇区
扇区(块)是磁盘读写最小单位,磁盘按块存取
磁头数:记录面数,表示硬盘有多少个磁头
柱面数:每面盘面有多少磁道
扇区数:每条磁道有多少扇区
位密度
单位长度磁道能记录二进制位数
在磁盘各磁道记录信息量相同,固位密度从外向内地址,所以最内磁道位密度最大
一般泛指位密度,指最内圈磁道位密度
磁记录原理
原理:磁头和磁性记录介质相对运动,通过电磁转换完成读写操作
磁记录方式:调频制(FM)和改进型调频制(MFM)记录方式
磁盘地址

磁盘阵列
RAID是将多个独立物理磁盘组成逻辑磁盘

固态硬盘(SSD)
基于闪存技术
随机读写不需要机械操作,速度明显高于磁盘,随机写比较慢
由一个或多个闪存芯片和闪存翻译器组成
容易磨损
访问一个扇区平均存取时间
访问一个扇区的平均延迟时间(旋转半周的时间=1/转速/2)
+传输时间(1/转速/磁道包含扇区数)
+寻道时间(一般题目给出)
(+磁盘延迟器延迟)
rpm为转/分,一般要除以60用转/秒计算
高速缓冲存储器(Cache)
高速缓冲存储器利用局部性原理,把程序中正在使用的部分数据存放在Cache中,使CPU访存操作大多针对Cache
与CPU和主存数据交换
CPU和Cache以字为单位进行数据交换
Cache和主存用块为单位进行数据交换
基本工作原理
CPU访问主存,Cache硬件判断是否命中Cache(组相联)
Cache发出访问请求,访问主存组地址对应的Cache,然后比较Tag(标记)
若匹配且有效位为1,将地址转换成Cache地址,与主存无关
否则,则访问主存,并把块全部从主存调入Cache
若Cache已满,就用替换算法进行替换
Cache和主存之间地址映射
Cache有一个有效位
直接映射
主存的每一块只能装入Cache的唯一位置,若该位置有内容,产生块冲突,原先的块无条件替换出去(无须使用替换算法)


如果相等,且有效位为1,则访问Cache命中
如果不相等或有效位为0,则不命中,从主存取一块送到对应Cache行中,并将有效位置1,并将标记设置为地址高t位,同时将地址内容送到CPU
全相联映射

组相联映射


每组Cache行数量越大,发生块冲突概率越低
三种映射之间关系
直接映射
块冲突概率高,空间利用率最低
不断替换,降低命中率
全相联映射
块冲突概率低,空间利用率高,命中率高
地址变换速度慢,实现成本高
组相联映射
组间用直接映射,组内用全相联映射
命中率高,电路简单
Cache主存块的替换算法
采用全相联和组相联映射方法,从主存向Cache传送新块,当Cache满了,用替换算法置换行
随机算法
先进先出算法
近期最少适应算法(LRU)
与局部性原理有关
Cache映射需要添加一个LRU位来作为附加位
最不经常使用算法
Cache写策略
因为Cache内容是主存块副本,对Cache内容进行更新时,需选用写操作使Cache和主存内容保持一致
全写法
CPU对Cache命中时,必须将Cache和主存同时写入,某一块需要替换,不必把这一块写回主存,用新调入块直接覆盖即可
回写法
CPU对Cache命中时,只把数据写入Cache,而不立即写入主存,只有此块被换出时才写入主存
Cache需要添加脏位
脏位有两个状态
清:表示未修改过
浊:表示修改过
与内存不一致时,将Cache块写会主存并设置脏位为“清”
虚拟存储器
主存和辅存共同构成虚拟存储器,二者在硬件和系统软件共同管理下工作
对于应用程序员,虚拟存储器是透明的,由主存的速度和辅存容量
对于系统程序员,虚拟存储器不透明
基本概念
将主存和辅存地址空间同一编址,形成庞大地址空间,在该空间,用户可以自由编程,不必在乎实际内存容量和程序位置
用户编程涉及地址为虚地址或逻辑地址
虚地址对应虚拟空间或程序空间
实际主存单元地址称为实地址或物理地址
虚地址比实地址大得多

CPU使用虚地址时,用辅助硬件找出虚地址和实地址关系,并判断该虚地址是否已装入主存
若在主存中,通过地址变换,CPU可直接访问内存指示的实际单元
不在,则把包括这个字的一页或一段调入主存后由CPU访问。若主存已满,进行替换
虚拟存储器也采用Cache类似技术,将辅存常访问的数据副本存放到主存
虚拟存储记住采用全相联映射,每个虚页面可以存放到对应主存区域任何空闲页位置
进行写操作时,不能每次写操作都同时写回磁盘
处理一致性问题,要写回写法
页式虚拟存储器
以页为基本单位
虚拟空间和内存空间被划分成同样大小页,主存页称为实页,页框,虚存页为虚页
虚拟地址:虚页号和页内地址
页表(慢表)

脏位来表示是否被修改过(回写法)
引用位来配合页面替换策略使用
快表和慢表
快表速度来源于硬件本身
慢表速度来源于查找算法
快表和慢表命中率之间没有联系
快表式慢表部分拷贝,不能够得到比慢表更多结果
具有TLB(全相联映射方式)和Cache的多级存储系统
TLB由组相联存储器组成,也可以由SRAM组成

Cache机构根据映射方式将物理地址划分成多个字段
根据映射规则找到对应Cache行中的标记与物理地址高位比较
若相等且有效位为1,则Cache命中,并将块内地址送CPU
比较器位数=Tag
查找过程
进行查找时,快表和慢表可以同时进行
若快表有虚页号,找到,则将慢表查找作废


相关文章:
机组存储系统
局部性 理论 程序执行,会不均匀访问主存,有些被频繁访问,有些很少被访问 时间局部性 被用到指令,不久可能又被用到 产生原因是大量循环操作 空间局部性 某个数据和指令被使用,附近数据也可能使用 主要原因是顺序存…...
【基础工程搭建】内存访问异常问题分析
前言 汽车电子嵌入式开始更新全新的AUTOSAR项目实战专栏内容,从0到1搭建一个AUTOSAR工程,内容会覆盖AUTOSAR通信协议栈、存储协议栈、诊断协议栈、MCAL、系统服务、标定、Bootloader、复杂驱动、功能安全等所有常见功能和模块,全网同步更新开发设计文档(后期也会更新视频内…...
Mysql 和 navicat 的使用
初识navicat 点开navicat,然后点击连接选择mysql连接,输入密码(一般都是123456)即可进行连接mysql 可以看见mysql中有如下已经建立好的数据库,是我之前已经建立过的数据库,其中test就是我之前建立的数据库…...
计算机网络(五)运输层
5.1、运输层概述 概念 进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时…...
托宾效应和托宾q理论。简单解释
托宾效应和托宾q理论 托宾效应(Tobin Effect)和托宾q理论(Tobins q Theory)都是由美国经济学家詹姆斯托宾(James Tobin)提出的,它们在宏观经济学和金融经济学中占有重要地位。 托宾效应 托宾…...
大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建二
本篇安装软件版本 mysql5.6 spark3.2.1-hadoop3.2 presto0.272 zeppelin0.11.2 kafka_2.13_3.7.2 mysql 安装步骤见-》 https://blog.csdn.net/dudadudadd/article/details/110874570 spark 安装步骤见-》https://blog.csdn.net/dudadudadd/article/details/109719624 安装…...
ClickHouse vs StarRocks 选型对比
一、面向列存的 DBMS 新的选择 Hadoop 从诞生已经十三年了,Hadoop 的供应商争先恐后的为 Hadoop 贡献各种开源插件,发明各种的解决方案技术栈,一方面确实帮助很多用户解决了问题,但另一方面因为繁杂的技术栈与高昂的维护成本&…...
04.计算机体系三层结构与优化(操作系统、计算机网络、)
3.计算机体系三层结构与优化(day04) 3.1 操作系统 内容概要: 操作系统的发展史:批处理系统》分时操作系统》unix>linux多道技术》(进程、线程)并发进程与线程相关概念任务运行的三种状态:…...
UML系列之Rational Rose笔记八:类图
一、新建类图 首先依旧是新建要绘制的类图;选择class diagram; 修改命名; 二、工作台介绍 正常主要就是使用到class还有直接关联箭头就行; 如果不要求规范,直接新建一些需要的类,然后写好关系即可&#…...
Pycharm 使用教程
一、基本配置 1. 切换Python解释器 pycharm切换解释器版本 2. pycharm虚拟环境配置 虚拟环境的目的:创建适用于该项目的环境,与系统环境隔离,防止污染系统环境(包括需要的库)虚拟环境配置存放在项目根目录下的 ven…...
pycharm+pyside6+desinger实现查询汉字笔顺GIF动图
一、引言 这学期儿子语文期末考试有一道这样的题目: 这道题答案是B,儿子做错了选了C。我告诉他“车字旁”和“车”的笔顺是不一样的,因为二者有一个笔画是不一样的,“车字旁”下边那笔是“提”,而“车”字是“横”&am…...
vue3学习-day5
provide $ inject 跨层传递普通数据 跨层传递响应式数据 跨层传递方法 需求解决思考 总结 Vue3.3新特性-defineOptions Vue3.3新特性-defineModel...
SpringData-Redis缓存之RedisTemplate
一、概述 大多数用户可能会使用RedisTemplate及其相应的包org.springframework.data.redis.core或其反应式变体ReactiveRedisTemplate。由于其丰富的功能集,该模板实际上是Redis模块的中心类。该模板为Redis交互提供了高级抽象。虽然[Reactive]RedisConnection提供…...
第423场周赛:检测相邻递增子数组 Ⅰ、检测相邻递增子数组 Ⅱ、好子序列的元素之和、统计小于 N 的 K 可约简整数
Q1、检测相邻递增子数组 Ⅰ 1、题目描述 给你一个由 n 个整数组成的数组 nums 和一个整数 k,请你确定是否存在 两个 相邻 且长度为 k 的 严格递增 子数组。具体来说,需要检查是否存在从下标 a 和 b (a < b) 开始的 两个 子数组,并满足下…...
hive知识体系
hive知识体系 hive知识体系 链接: 1Hive概览 链接: 2Hive表类型 链接: 3Hive数据抽样 链接: 4Hive计算引擎 链接: 5Hive存储与压缩 链接: 6Hive Sql 大全 链接: 6Hive Sql 大全-Hive 函数 链接: 6Hive Sql 大全-窗口函数 链接: 7Hive执行计划 链接: 8Hive SQL底层执行原理 链接…...
第三篇 Avaya IP Office的架构及其服务组成
所谓的架构,其实就是Solution,解决方案。一般就是如下几套: IPO primary IPO secondaryIPO primary IP500v2IPO primary IPO secondary IP500v2IPO primary IPO secondary IP500v2 Expansion Server(IP500v2,扩展)IPO primaryIPO 500v2 简单的解释…...
AUTOSAR EcuM(ECU状态管理器)
EcuM管理的ECU状态特指ECU的上下电状态。EcuM有两种EcuMFixed和EcuMFlex,其中EcuMFlex是在 AUTOSAR4.x 之后新增的规范文件,相应地原来的 EcuM 改称为 EcuMFixed。EcuMFlex主要是为了适应不同应用场景的各种不同需求,实现更加灵活的处理。所以…...
【PyQt】如何在mainwindow中添加菜单栏
[toc]如何在mainwindow中添加菜单栏 如何在mainwindow中添加菜单栏 主要有两种方法: 1.直接创建mainwindow进行添加 2.使用ui文件加载添加 第二种方法更为常见,可以应用到实际 1.直接创建mainwindow进行添加 import sysfrom PyQt5.QtWidgets import …...
浅谈云计算01 | 云计算服务的特点
在当今数字化时代,云计算作为一种强大的技术解决方案,正逐渐改变着企业和个人对信息技术的使用方式。本文将详细探讨云计算的五个主要特点,包括按需自助服务、广泛的网络接入、资源池化、快速弹性伸缩以及可计量服务。 一、按需自助服务 云…...
【开题报告】基于springboot的煤矿安全监测系统的设计与实现
【开题报告】基于springboot的煤矿安全监测系统的设计与实现 1.选题背景、研究目的及意义 1.1选题背景 煤炭是我国能源行业的重要组成部分,对国民经济具有支撑和推动作用。在煤炭生产过程中存在较高的安全风险,煤矿事故频发,这不仅对人员生…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

