导图社区 ③存储系统
③存储系统,介绍了存储器、主存储器与CPU的连接、外部存储器、cache、虚拟存储器、Cache行内容的知识,快来看看吧!
编辑于2023-08-16 15:42:43 广东存储系统
概述
分类
层次分类
1| 主存(内存)
存放计算机运行时的程序与数据
可以被CPU直接访问,也可以与Cache和辅存进行交换数据
容量小,速度快,价格高
2| 辅存(外存)
储存当前暂时不用的程序和数据,以及一些永久保留的数据
不可以与CPU直接交互
容量大,速度慢,价格低
3| 高速缓冲存储器(cache)
位于主存与CPU之间,缓解CPU与主存之间速度差距问题
CPU可以直接访问
容量小,速度与CPU相匹配,价格高,高档计算机将他们放在CPU中
存储介质分类
1| 磁表面存储器(磁带、磁盘)
2| 磁芯存储器半导体存储器(MOS型存储器、双极型存储器)
3| 光存储器(光盘)
存取方式分类
1| 随机存储器(RAM)
随机存取、读写、方便、使用灵活
用途:主存、高速缓冲存储器
类型:静态RAM(SRAM触发器原理)、动态RAM(DRAM电容充电原理)
2| 只读存储器(ROM)
只能读出不能写入
用途:与随机存储器RAM构成主存、存储固定不变的程序
ROM也派生出可以反复重写的类型(通过电擦出等方式进行写入) 写入速度远小于读的速度
ROM与RAM都是随机存取,广义上的只读存储器可以通过电擦出写入,写入速度慢
3| 串行访问存储器
顺序存取存储器:磁带 只能按某种顺序存取
直接存取存储器:光盘、磁盘 介于RAM与顺序存储器之间
需要按其物理位置的先后顺序寻址
4| 相联存储器
可以按照内容检索到存储位置进行读写(快表TTL)
信息可保存性
1| 易失存储器
RAM
断电后,存储信息消失
2| 非易失性存储器
ROM、磁表面存储器、光存储器
读出类型
破坏性读出:读出后需要对存储信息再生
非破坏性读出:不会对原存储信息破坏
性能指标
计算机追求目标:大容量,低成本,高速度
存储容量=存储字数×字长
存储字数:表示存储器的地址空间大小
字长:表示一次存取操作的数据量
单位成本=总成本/总容量
存储速度:数据传输率=数据的宽度/存储周期
存取时间:存储器启动到完成操作的时间,分为写入时间和读出时间
存取周期(读写周期、访问周期):存储器进行一次完整读写操作需要的时间,即连续两次独立访问存储器操作(读或写操作)之间所需的最小时间间隔
主存带宽:数据传输率,每秒主存进出信息的最大数量
存取周期一般大于存取时间(读写操作后需要内部恢复时间) 存取周期=存取时间+恢复时间
存储器层次化结构
存储系统目标:更大更快更便宜
Cache——主存层次
解决CPU和主存速度不匹配问题
数据调动是由硬件自动完成,对所有程序员均是透明的
主存———辅存层次
解决存储系统容量问题
数据调动是由硬件和操作系统共同完成,对应用程序员是透明
主存——辅存层次不断发展,衍生出虚拟存储器系统
上一层都只是下一层的副本
Cache(或主存)中的内容只是主存(或辅存)中的内容的一部分
存储器
半导体存储芯片
储存体(存储矩阵)
大量相同的存储单元阵列集合
地址译码器
将地址信号转为译码输出线上的高电平(即选通信号)
I/O控制电路
用以控制被选中单元读出或写入,具有放大信息的作用
片选控制电路
确定那个芯片被选中
读/写控制信号
决定芯片读还是写
地址线
单向输入,位数与随存储字的个数有关
数据线
双向,位数与读出或写入数据位数有关
数据线与地址线数共同反应存储芯片大小
SRAM
1| 存储元使用双稳态触发器(六晶体管MOS)记忆信息
2| 非破坏性读出,易失性存储器
3| 存取速度快,集成度低,功耗大,成本高,常用来组成Cache
4| 同时送行列地址
DRAM
1| 利用存储元电路中栅极电容上的电荷存储信息
2| 破坏性读出,易失性存储器
3| 存取速度慢,集成度高,功耗低,容量大,成本低,常用来组成主存系统
4| 分两次送行列地址
通常采用地址复用技术,行地址和列地址通过相同的引脚先后两次输入,地址线减半,引脚线减半
5| 刷新(DRAM特有,因为电容上的电荷只能维持1~2ms)
集中刷新
刷新时间固定,存在死区
读写不受刷新影响,存取速度快
死区不能访问存储器
分散刷新
将每行刷新分散到各个工作周期
没有死区
存取周期变长,降低整机速度
异步刷新
将刷新周期除以行数,得到两次刷新操作之间的时间间隔t,利用逻辑电路每隔t时间产生一次刷新请求。
集中刷新和分散刷新结合
缩短了死时间,又提高了整机速度
透明刷新
安排在译码阶段,不存在死时间
刷新对CPU是透明的,刷新的单位是行
ROM(只读存储器)
特点
随机存取,非易失性存储器,可靠性高
结构简单,位密度比可读写存储器高
类型
1| MROM(掩模式只读存储器)
可靠性高,集成度高,价格便宜
任何人无法改变其内容,灵活性差
2| PROM(一次性可编程只读存储器)
实现一次性编程,一旦写入,无法更改
3| EPROM(可擦除可编程存储器)
可以对内容进行多次改写
UVEPROM (紫外线擦除)
EEPROM (电擦除)
4| 闪速存储器(Flash Memory)
可长期保存信息,可重写
价格便宜,集成度高
擦写速度快
u盘,sd卡
5| 固态硬盘SSD
可长期保存信息,快速擦出,重写
相对于传统硬盘,读写速度快,低功耗
价格高
多模块存储器 (为了提高CPU访问存储器的速度(时间并行)
单体多字存储器
按照地址顺序读出数据,存储单元存储m个字,总线宽度也为m个字,一次性并行读出m个字
优点:增大了存储带宽,提高单体存储器工作速度
缺点:指令和数据在主存内必须是连续存放的
多体并行存储器
多个模块构成,每个模块有着相同的容量和存取速度,各模块既可以并行工作又可以交叉工作
高位交叉编址
高位地址表示体号,低位地址表示为体内地址
本质上仍然是顺序存储器
低位交叉编址
低位为体号,高位为体内地址
可以在不改变每个模块的存取周期前提下,采用流水线的方式并行存储,可以提高存储器的带宽
模块存取一个字周期为T总线传送周期为r
存储器交叉模块数应大于等于M=T/r
连续存取m个字所需的时间为t1=T+(m-1)r
双端口存储器 (为了提高CPU的访问存储器的速度(空间并行)
一个存储器有左右两个独立端口,分别具有两组相互独立的地址线,数据线,读写控制
优化多核CPU的访存速度
冲突
两个端口对同一地址单元同时写入
两个端口对于同一地址单元,一个读出,一个写入
无冲突
两个端口对于同一地址单元同时读
两个端口同时对不同的地址单元存取数据
主存储器与CPU的连接
连接原理
主存储器通过数据总线、地址总线和控制总线与CPU连接
数据总线的位数与工作频率的乘积正比于数据传输率
地址总线的位数决定了可寻址的最大内存空间
控制总线(读/写)指出总线周期的类型和本次输入/输出操作完成的时刻
主存容量扩展
位扩展法
将多个存储芯片的地址端、片选端和读写控制端相应并联,数据分别引出
例
字扩展法
增加存储器中字的数量,而位数不变。字扩展将芯片的数据线、地址线、读写控制线相应并联,由片选信号来区分各芯片的地址范围
例
字位同时扩展法
由译码器选择组别,同一组的存储器数据线需分开连
例
存储芯片的地址分配和片选
线选法
用高位地址作片选码,每次只能有一位有效,不允许同时有多位有效
需要几个片选信号,就需要几位二进制码,某位为0时,即选中该存储芯片
优点
不需要译码器,线路简单
缺点
地址空间不连续,选片的地址线必须分时为低电平(否则不能工作),不能充分利用系统的存储器空间,造成地址资源的浪费
例
0
1110
1
1101
2
1011
3
0111
译码片选法
用片内寻址外的高位地址(不是一定是地址线的最高位)线通过地址译码器芯片产生片选信号
例
0
00
概要
1
01
2
10
3
11
存储器与CPU连接
合理选择存储芯片
ROM
存放系统程序、标准子程序和各类常熟
RAM
为用户编程而设置
地址线的连接
CPU低位地址线与存储器连接,高位用来扩充存储芯片
数据线的连接
CPU与存储器数据不一时,需扩充
读写命令线的连接
片选线的连接
外部存储器
磁盘存储器
优点
存储容量大,位价格低
记录介质可重复使用
记录信息可长期保存而不丢失,甚至可脱机存档
非破坏性读出,读出时不需要再生
缺点
存取速度慢,机械结构复杂,对工作环境要求较高
组成
磁盘驱动器
磁头组件和盘片组件
温切斯特盘是一种可移动磁头固定盘片的硬盘存储器
磁盘控制器
硬盘存储器和主机的接口
IDE、SCSI、SATA
盘片
存储区域
一块硬盘含有若干记录面,每个记录面划分为若干磁道,而每条磁道又划分若干扇区,扇区(块)是最小单位,即磁盘按块存取
磁头数(Heads)
记录面数,表示硬盘有多少个磁头
磁头用于读取/写入盘片上记录面的信息,一个记录面对应一个磁头
柱面数(Cylinders)
表示磁盘每面盘片上有多少条磁道。不同记录面的相同编号(位置)的磁道构成一个圆柱面
扇区数(Sectors)
表示每条磁道上有多少个扇区
原理
磁头和磁性记录介质相对运动时,通过电磁转换完成读/写操作
磁记录方式
调频制(FM)
改进型频制
性能指标
记录密度
盘片单位面积上记录的二进制信息量,以道密度、位密度和面密度表示
道密度
沿磁盘半径方向单位长度上的磁道数
位密度
磁道单位长度上能记录的二进制代码位数
面密度
位密度和道密度的乘积
磁盘容量
非格式化容量
磁记录表面可利用的磁化单元数,由道密度和位密度计算而来
格式化容量
按照某种特定的记录格式所能存储信息的总量
格式化后的容量比非格式化容量小
平均存取时间
寻道时间
磁头移动到目的磁道的时间
旋转延迟时间
磁头定位到要读写扇区的时间
通常取平均值
传输时间
传输数据所花费的时间
数据传输率
磁盘存储器在单位时间内向主机传送数据的字节数
磁盘转数为r转/秒,每条磁道容量为N字节
Dr=rN
磁盘地址
工作过程
寻址、读盘、写盘
读写操作是串行
不可能在同一时刻既读又写,也不可能在同一时刻读两组数据或写两组数据
磁盘阵列
RAID(独立冗余磁盘阵列)
将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问,具有更好的存储性能、可靠性、安全性
RAID0
无冗余和无校验
把连续多个数据交替存放在不同的物理磁盘的扇区中
扩大了容量,提高了存取速度,但无容错能力
RAID1
镜像磁盘阵列
使两个磁盘同时进行读写,互为备份,若一个磁盘出现故障,可从另一个磁盘中读出数据
容量减少一半
RAID2
采用纠错的海明码的磁盘阵列
RAID3
位交叉奇偶校验
RAID4
块交叉奇偶校验
RAID3
无独立校验的奇偶校验磁盘阵列
固态硬盘SSD
基于闪存技术的存储器
数据以页为单位读写的
cache
程序访问的局部性原理
高速缓冲技术基于局部性原理
时间局部性
空间局部性
cache的基本工作原理
通常由SRAM构成
cache和主存都被划分为相等的块,cache为主存的副本
CPU发出请求
cache命中
直接对cache进行读操作,与主存无关
cache不命中
访问主存,并把此字所在的块一次性地从主存调入cache
整个过程由硬件实现
CPU与cache之间的数据交换以字为单位 cache与主存之间的数据交换以块为单位 某些计算机会同时进行访问cache和主存
cache和主存的映射方式
直接映射
特点
实现简单,但不灵活
空间利用率低,冲突率高,
装入,位置已有内容时,则产生块冲突,原来的块无条件被替换出去
地址结构
标记 Cache行号 块内地址
全相联映射
主存中每一块可以装入cache中的任何位置
CPU访存需要和所有cache行的标记进行比较
特点
比较灵活
冲突率低,空间利用率高,命中率高
标记的比较速度较慢
实现成本高
地址结构
标记 块内地址
组相联映射
把cache分成Q个大小相等的组,每个主存块可以装入固定组的任意一行,组间采用直接映射、而组内采用全相联映射
地址结构
标记 cache组号 块内地址
1.直接映射命中率最低,全相联映射命中率最高 2.直接映射判断时间最短,全相联判断时间长(对比标记位) 3.直接映射标记位所占额外空间最少,全相联最大
cache中主存块的替换算法
只针对于全相联映射和组相联映射,直接映射不需要考虑替换算法
随机算法(RAND)
随机确定替换的cache块
先进先出算法(FIFO)
选择最早调入的行进行替换
未依据局部性原理
近期最少使用算法(LRU)
依据局部性原理,选择近期内长久未访问过的cache行作为替换的行,是栈堆类算法
为每行设置这个计数器
变化规则
命中时
所命中行清零,比其低的计数器加1,其余不变
未命中时
有空闲行
新加入的行置0,其余加1
无空闲行
计数值为3的行的信息被淘汰,新装入的行置0,其余全加1
抖动
当集中访问的存储区超过cache组大小的时候,命中率可能会变得很低,这种现象叫抖动
最不经常使用算法(LFU)
将一段时间内被访问次数最少的存储行换出
cache写策略
写命中
全写法
当CPU对cache写命中时,必须把数据同时写入cache和主存
特点
当某一块被替换时,不需要写回主存
增加了访存次数,降低了CPU效率
写缓冲
减少全写法直接写入主存的损耗
CPU同时把数据写入cache和写缓冲,写缓冲再写入主存
写缓冲是一个FIFO队列
频繁写时,会使写缓冲饱和溢出
回写法
当CPU对cache写命中,只把数据写入cache,而不立即写入主存,只有当此块被换出时才写回主存
特点
减少了访存次数
存在不一致的隐患
修改位(脏位)
1表示被修改过,换出需回写
0表示未被修改,换出无需回写
写不命中
写分配法
加载主存中的块到cache中,然后更新这个cache块
利用程序的空间局部性
每次不命中都需要访存
非写分配法
只写入主存,不进行调块
多级cache
非写分配法与全写法合用 写分配法和回写法合用
虚拟存储器
基本概念
虚地址或逻辑地址
用户编程允许涉及
实地址或物理地址
实际的主存单元
采用全相联映射
处理一致性问题
采用回写法
页式虚拟存储器
基本单位
页
主存
实页、页框
辅存
虚页
虚拟地址
虚页号和页内地址
页表
将虚拟地址转换成物理地址
长久地保存在内存中
有效位 (转入位)
表示对应页面是否在主存
1
已调入主存,页表项为该页的物理页号
0
没有调入主存,页表项存放页的磁盘地址
脏位 (修改位)
采用回写策略,利用脏位可判断是否被修改过
引用位 (使用位)
用来配合替换策略进行设置
转换过程
从页表基址寄存器获得页表首地址
根据虚拟地址的高位部分的虚拟页号找到对应的页表项
有效位为1
取出物理地址与虚拟地址低位部分的页内地址进行拼接,形成物理地址
有效位为0
缺页,进行缺页处理
特点
优点
页面长度固定,页表简单,调入方便
缺点
程序不可能正好是页面的整数倍,最后一页的零头将无法利用而造成浪费
页不是逻辑上独立的实体
处理、保护和共享不及段式虚拟存储器
快表TLB
页表表项
TLB标记字段
全相联
页表项对应的虚页号
组相联
虚页号的高位部分
低位部分用于选择TLB组的组索引
具有TLB和Cache的多级存储器
TLB缺失
要访问的页面不在页表中
既可以用软件处理又可以用硬件处理
Cache缺失
要访问的主存块不在Cache中
硬件处理
Page缺失
要访问的页面不在主存中
软件处理,操作系统通过“缺页异常处理程序实现”
流程
故障组合
段式存储器
基本性质与页式存储器一致,将页改为段即可
特点
优点
段的分界与程序的自然分界相对应,因而具有逻辑独立性
易于编程、管理、修改和保护,便于多道程序的共享
缺点
段长度可变,分配空间不方便,容易留下碎片,造成浪费
段页式虚拟存储器
把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,程序对主存的调入、调出仍以页为基本单位
每个程序对应一个段表,每个段对应一个页表
段的长度必须是页的长度的整数倍,段的起点必须是某一页的起点
虚拟地址
段号、段内页号、页内地址
特点
优点
可以按段实现共享和保护
缺点
地址变换过程中两次查表,系统开销大
虚拟存储器与Cache的比较
相同
提高性能
依据程序的局部性原理
都有地址映射、替换算法、更新策略
都将信息划分
不同
Cache解决系统速度,虚拟存储器解决主存容量
Cache全由硬件实现,对所有程序员透明;虚拟存储器由OS和硬件实现,对系统程序不透明,对应用程序员透明
Cache是硬件存储器,虚拟存储器是逻辑上的存储器
虚拟存储器系统不命中对系统影响更大
CPU不能和辅存直接交换数据,所以虚拟存储器不命中时,需从辅存读入数据至主存,CPU再从主存读入数据 而Cache不命中时,CPU可直接从主存读入数据
Cache行内容
Tag
有效位
脏位
回写法
1
替换位
组相联映射
全相联
算法
LRU
FIFO
log2(路数或行数)
随机
直接映射
块数据
块内偏移决定
虚拟地址→物理地址→得到数据
虚拟地址拆分成虚拟页号+页内地址 虚拟页号拆分成Tlb标记比对+组号(TLB采用组相联)
根据虚拟页号中组号和Tlb标记比对找到快表中对应项,得到页框号
快表不命中,访存查页表
页框号拼接页内偏移得到物理地址
物理地址拆分成Cache比对位+块偏移量 Cache比对位拆分为组号(或行号)+Tag标记(组相联映射或直接映射)
根据标记位比对位得到数据块
Cache不命中访存