导图社区 存储系统
总结了《计算机组从原理》的存储系统相关知识点,将书本中零散的知识机构进行重组,帮助同学总体把握知识结构。
编辑于2022-03-19 15:52:58存储系统
基础知识
存储器分类
作用
主存
辅存
高速缓冲存储器cache
读写数据属性
破坏性读出
DRAM
非破坏性读出
SRAM、磁盘等
易失性
易失性存储器
RAM
非易失性存储器
ROM
MROM掩模式只读存储器
PROM一次可编程只读存储器
EPROM可擦出可编程只读存储器
Flash存储器、SSD
性能指标
数据宽度:存储字长
存储容量: 存储字长 × 存储字数
单位成本: 总价 ÷ 容量
存取速度(主存带宽):一次存取操作的字长:数据宽度 ÷ 存储周期
存储周期:两次存取操作之间的时间:Tm=存取时间 + 恢复时间
存取时间:启动1次存储器,到完成存取操作的时间
恢复时间:在读写操作后,要有一段时间恢复存储器的内部状态
存储系统的层次结构
设计思想:上一层存储器作为下一层存储器的高速缓存
层次结构
1.CPU
2.寄存器
3.cache
4.主存
5.磁盘
6.磁带、光盘
注意
CPU-cache数据传输以 字 为单位 主存-cache数据传输以 块 为单位 辅存-主存 数据传输以 页/段 为单位
主存
DRAM芯片实现主存
刷新
刷新时间:2ms或≥2ms
刷新方式(按行进行刷新)
集中刷新(集中一段时间进行刷新)
异步刷新(每隔时间t刷新一次【t=刷新周期 ÷ 存储单元个数】)
会形成死区 (死时间)
分散刷新(将刷新操作分散到各个工作周期中,读写结束后进行刷新
双端口SRAM芯片
支持2个CPU同时访问
可同时读/写 不同的存储单元
可同时读1个存储单元
不可以同时写(或1写1读)同一个存储单元
SRAM芯片实现cache
逻辑上cache属于储存,但是现在物理上集成在CPU中
主存的基本构成
基本元件
MOS管(作为电路开关)
电容、存储电荷(存储二进制位0/1)
存储芯片(单个)
译码驱动电路(将地址信号转换为 字选通线 的高低电平)
存储矩阵(存储体)
多个存储单元(按行列排列)
每个存储单元含有多个存储元(二进制位)
读写电路(每次读/写 1个存储字【存放在1个存储单元中的二进制数】)
引脚:
地址线(每个引脚传输1个地址二进制位)=个数a, 2^a =地址的个数=存储字个数=存储单元个数
一般分为
行地址线
列地址线
采用地址复用技术:
行、列地址信号都通过相同的地址线机进行传输(分两次)
增加 行选通、列选通
片选线不需要,也通过行、列选通实现
数据线:连接存储单元,用于读取数据的导线,个数d(代表存储字长=几位) 2^d=1个存储单元的容量
片选线CS:用于接受片选信号,激活所属芯片,而后才能进行读写操作
读写控制线WE:用于控制读或者写(可以1根、可以2根)
供电线
接地线
寻址
现代计算机一般按字节编址,一个存储单元8bit=1B,每2个相邻的地址相差1B
可以按 字、字节、半字、双字编址
主存储器基本构成
存储矩阵
多模块存储器
单体多字存储器(只有1个存储芯片)
每次连续读出m个字
总线带宽需要扩展为m个字
多体并行存储器(若干个存储体)
高位交叉编址
一个存储体内按顺序编址
一个存取周期,只能读取一个字
每个存储体,在一个读写周期内,只能读出1个存储单元的数据,读下一个单元的数据,需要等待存储体恢复后,再进行读取
地址格式:【体号;体内地址】
低位交叉编址
连续的存储单元地址,按顺序分布在多个存储体中
地址格式【体内地址;体号】
存储体个数M≥m=T/r
T(存取周期)=存取时间 + 恢复时间
r一般指总线传输周期
也可以用存取时间代替
但是两者含义不同
1个T内可以连续读取m个字
微观上,M个储存体是串行访问的,宏观上是并行访问的
存取M个字的时间t=T+(M-1)r
T(存取周期)=存取时间r + 恢复时间
地址译码器
将CPU高位地址信号(代表CPU要在哪个存储芯片进行读取),进行翻译,输出片选信号CS
主存与CPU的连接
主存容量拓展
因为CPU的数据线、地址线的数量大于单个芯片的相应引脚的数量,为了满足CPU的需求,充分利用CPU的数据线路,要对主存的容量进行拓展
位扩展
地址线、数据线,与每个芯片都相连
相当于把单个芯片的位数(存储单元的位数)进行了成倍扩展,芯片的存储单元数不变
字扩展
将芯片的地址线、数据线、读写控制线 相应的并联
芯片的位数不变,存储单元的个数成倍扩充,
需要由片选信号CS,来区分各个芯片的地址范围
线选法 (CPU的高位地址线,直接(或接反向器)与CS连接,直接选择芯片
译码片选法
将CPU高位地址线送来的片选信号,经过翻译,在传送到芯片的CS端,选择芯片
通过地址译码器
比如:74LS138译码器
字位同时扩展
想象日常中,1个内存条上有4个存储芯片,这些单个芯片的字数、位数都是有限的,不可能只用1个芯片就能充分利用、满足CPU的需要,所以需要多个芯片,通过字位同时扩展的方式,来满足CPU的需要
连接方法(颜色相同的相连)
cup
数据端
地址端
低位部分
位数确定:=主存空间地址的位数
高位部分(产生片选信号)
位数确定:=CPU地址端总数-低位部分
读写控制端WE
MREQ(产生片选请求信号)
地址译码器
使能端(输入有效值,译码器才能工作)
输入端
主存芯片
数据线
地址线
读写控制线WE
片选线
外存
磁盘
组成
磁盘控制器
(与内存的接口)
此案驱动器
磁头
盘片
地址格式
【驱动器号;柱面号;盘面号;扇区号】
新能指标
记录密度
单位面积记录的二进制信息
分类
道密度
盘面半径方向,单位长度内的磁道数
位密度
单位磁道长度内,存储的二进制代码位数
面密度
道密度×位密度
磁盘容量
非格式化容量
磁记录面可利用的磁化单元数量
格式化总量
按某种存储格式计算所能存储的信息总量
非格式化容量>格式化容量
平均存取时间
Ta=寻道时间+旋转延迟时间+传输时间
数据传输率
转速×N(每条磁道容量N字节)
SSD
高速缓冲存储器cache
工作原理
程序的局部性原理
将主存中频繁使用的数据,复制到cache中,CPU直接取用
性能指标
命中率H
CPU访问cache的次数/CPU访问cache和主存的总次数
两种访问方式
CPU先访问cache,如果没有命中,再访问主存
访问总时间Ta=H×Tc + (1-H)×(Tc+Tm)
CPU同时访问cache和主存,如果cache命中,则停止访问主存
访问总时间Ta=H×Tc + (1-H)×Tm
Tc为访问cache的时间 Tm为访问主存的时间
cache与主存的传输单位为 块
块的大小=主存块(页面)的大小
cache-主存映射方式
cache块(行)中存储的信息
数据
标记阵列
有效位
脏位(判断该cache块有没有被修改)
替换控制位
标记位
映射方式
全联映射
主存块可以放到cache中的任意位置
在cache中的地址映射【标记;块内地址】
直接映射
主存块只能放到固定的cache块中(多个主存块对应1个cache块)
在cache中的地址映射【标记;行号;块内地址】
行号=主存块号%cache行数
若cache行数=2^n
行号取主存块号低n位
组相联映射
x个cache块组成一组
主存块可以放在某一组中的任意位置
在cache中的地址映射【标记;组号;块内地址】
组号=主存块号%cache行数
若cache组数=2^n
组号取主存块号低n位
cache中主存快替换策略
随机替换
先进先出FIFO
最近最久未使用LRU
设置计数器(替换控制位),数值最大的换出
注意:当cache位组相联映射时,要先计算个页面对应的组, 各组内部采用LRU算法,各组之间互不干扰
最不经常使用
设置计数器(替换控制位),数值最小的换出
cache写策略
写命中
全写法(写直通法、write-through)
CPU修改数据时,cache和主存同时修改
使用写缓冲(内部是写队列),CPU先将数据传入写缓冲排队
回写法(write-back)
CPU只将数据写入cache,当该块从cache换出时,在写回主存,跟新数据
写不命中
写分配法
不命中时,先将相关页调入cache,而后在cache中修改
非写分配法
直接写入主存的相关数据页
多级cache
各级cache之间采用“全写法+非写分配法”
cache和主存之间采用“回写法+写分配法”
虚拟存储器
基本概念
程序运行局部性原理
主存、辅存共同构成了虚拟存储器
上一级存储器作为下一级存储器的高速缓存
程序运行的所有指令都是使用额【逻辑地址】
在编程人员看来,在编程时用的地址空间很大,但实际上计算机的内存小于程序的大小,在实际运行时,只有一部分数据在主存中运行,其它的相关数据都是在运行时动态调入、换出内存的
页式虚拟存储器
内存分页
内存中有页表
对应每一页的【装入位;逻辑页号;物理页号】
计算机中有相联存储器(快表TLB)
CPU频繁访问的页面所对应的 页表项
段式虚拟存储器
(根据程序设计)内存分段
段的大小各不相同
内存中有段表
对应每个段的【段首址;装入位;段长】
段页式虚拟存储器
内存分段、段内分页
段内必须有正数个页
主存地址结构【主存块号;块内地址】