# 存储系统
# 存储器的层次结构
# 存储器的分类
# 按作用分类
- 主存储器(主存、内存)
- 存放机损及运行期间所需的大量程序和数据
- cpu 可直接访问,也可以和高速缓冲存储器交换数据
- 容量较小、存取速度慢、每位价格较高
- 副助存储器(外存)
- 存放当前暂时用不到的程序和数据,永久性保存的信息
- 不能与 CPU 交换信息
- 容量极大、存取速度慢、单位成本高
- 高速缓冲存储器(Cache)
- 存放正在执行的程序段和数据
- 容量小,价格高
# 按存储介质分类
- 磁表面存储器
- 磁芯存储器半导体存储器
- 光存储器
# 按存取方式分类
- 随机存储器(RAM)
- 任何一个单元的内容可以随机存取,存取时间与存储器单元的物理位置无关
- 读写方便、使用灵活
- 用作主存或高速缓冲存储器
- 分为静态 RAM(触发器原理寄存信息)、动态 RAM(电容充电原理寄存器)
- 只读存储器(ROM)
- 存储器的内容只能随机读出而不能写入
- 信息一旦写入就固定不变
- 串行访问存储器
- 按照物理位置的先后顺序寻址(磁带、磁盘)
# 按信息的可保存性分类
- 易失性存储器(RAM)
- 非易失性存储器(ROM)
# 存储器的性能指标
- 存储容量:存储字长 x 字长
- 单位成本:每位成本 = 总成本 / 总容量
- 存储速度:数据传输率 = 数据的宽度 / 存储周期
# 存储器的层次化结构
# 多级存储系统
# 半导体随机存储器
# 半导体存储芯片
# 半导体存储芯片的基本结构
- 存储矩阵:大量相同的位存储单元组成
- 译码驱动电路:将地址总线的地址信号翻译成对应的存储单元的选通信号
- 读写电路:读写放大器 + 写入电路
- 读写控制线:决定芯片进行读 / 写操作
- 片选线:确定那个芯片被选中
- 地址线:单向输入,位数与存储字的个数有关
- 数据线:双向,位数与读出、写入的数据位数有关
# 74138 译码器
将二进制编码译码为 0~7 的十进制数值
# SRAM 和 DRAM
# SRAM 工作原理
- 双稳态触发器(六管 MOS)来记忆信息
- 只要电源被切断原来保存的信息就会丢失,属于易失性半导体存储器
- 存取速度快,集成度低,功耗大,一般用来组成高速缓冲存储器
# DRAM 工作原理
- 利用栅极电容上的电荷存储信息,分为三管式、单管式
- 采用地址复用技术,地址信号分行、列两次传送
- 容易集成、价位低、容量大、功耗低,存取速度比 SRAM 慢,组成大容量存储系统
# 刷新方式
- 集中刷新
在一个刷新周期内,利用一段固定的时间,依次对所有行进行逐一再生- 优点: 读写操作时不受刷新工作的影响,存取速度高
- 缺点:在集中刷新期间不能访问存储器
- 分散刷新
把每行的刷新分散到各个工作周期中,一个存储器的系统工作周期前半部分用于正常读、写、保持,后半部分用于刷新某一行,增加了系统的存取周期- 优点: 没有死区
- 缺点:加长了系统的存取周期,降低了整机的速度
- 异步刷新
将刷新周期除以行数,得到两次刷新之间的时间间隔 t, 利用逻辑电路每隔 t 时间产生一次刷新请求- 避免 CPU 等待过长的时间,减少刷新的次数,提高整机效率
注意:
- 刷新对 CPU 透明
- 动态 RAM 刷新单位是行,刷新操作只需要行地址
# 存储器的读写周期
# 只读存储器
# 只读存储器(ROM)的特点
- 结构简单,位密度比可读写存储器高
- 具有非易失性,可靠性高
# ROM 的类型
- 掩模式只读存储器(MROM)
可靠性高,集成度高,灵活性差 - 一次可编程只读存储器(PROM)
- 可擦除可编程只读存储器(EPROM)
编程次数有限。写入时间过长 - 闪速存储器(Flash Memory)
- 固态硬盘(SSD)
# 主存储器与 CPU 的连接
# 连接原理
- 主存储器通过数据总线、地址总线、控制总线与 CPU 连接
- 数据总线的位数与工作频率的乘积正比于数据传输率
- 地址总线的位数决定了可寻址的最大内存空间
- 控制总线(读 / 写)指出了总线的周期类型好而本次输入输出操作的 完成时刻
# 主存容量的扩展
# 位扩展法
# 字扩展法
# 字位同时扩展法
# 存储芯片的地址分配和片选
# 线选法
芯片 | ~ A_ |
---|---|
1# | 1110 |
2# | 1101 |
3# | 1011 |
4# | 0111 |
优点:不需要译码器,线路简单
缺点:地址空间不连续,不能充分利用系统的存储器空间,造成地址资源的浪费
# 译码片选法
# 高速缓冲存储器
# 程序访问的局部性原理
- 空间局部性
- 时间局部性
# Cache 基本工作原理
- 通常由 SRAM 构成
- Cache 和主存都被分成若干大小相等的块,每块由若干子街组成,块的长度称为块长(Cache 行长)
- 保留主存最活跃的若干块副本
# cache 和主存的映射方式
- cache 要为每块增加一个标记,指明是主存那一块副本
- 设置一个有效位说明标记是否有效
# 直接映射
:cache 块号
: 主存块号
:Cache 总块数
地址结构:
主存字块标记 | cache 字块地址 | 字块内地址 |
---|
# 全相联映射
把主存数据块装入 cache 的任何位置
- 优点:灵活,冲突概率低,空间利用率高
- 缺点:地址变换速度慢,实现成本高
地址结构:
主存字块标记 | 字块内地址 |
---|
# 组相联映射
: 缓存的组号
: 主存的块号
:cache 的组数
# 地址结构
主存字块标记 | 组地址 | 字块内地址 |
---|
# Cache 中主存块的替换算法
- 随机替换算法
- 先进先出算法
- 近期最少使用算法
- 最不经常使用算法
# Cache 写策略
# 写命中
- 全写法
把数据同时写入 cache 和主存- 优点: 实现简单,随时保持主存数据的正确性
- 缺点:增加了访存次数,降低了 cache 的效率
- 写回法
只有当此块被换出才写入主存- 存在不一致的隐患,必须设置一个标志位反映此块是否被 CPU 修改过
# 写不命中
- 写分配法
加载主存中的块到 cache 中,更新这个 cache 块- 缺点:每次不命中都需要从主存中读取一块
- 非写分配法
只写入主存,不进行调块