3.1 存储器概述
3.1.1 存储器的分类
1. 按在计算机中的作用(层次)分类
- 主存储器
- 辅助存储器
- 高速缓冲存储器(cache)
2. 按存储介质分类
- 磁表面存储器:磁盘、磁带
- 磁芯存储器
- 半导体存储器:mos型存储器、双极型存储器
- 光存储器:光盘
3. 按存取方式分类
随机存储器(RAM)
- 静态RAM(SRAM)
- 动态RAM(DRAM)
- 只读存储器(ROM)
- 串行访问存储器
4. 按信息的可保存性分类
- 易失性存储器:断电后,存储信息消失,如:RAM
- 不易失性存储器:断电后信息仍然保持,如:ROM
3.1.2 存储器的性能指标
三个主要性能指标
- 存储容量
- 单位成本
- 存储速度
- 存储容量
$存储容量=存储字数\times 字长$ - 单位成本
$位价=总成本/总容量$ 存储速度
- 存取时间:指启动一次存储器操作到完成该操作所经历的时间
- 存取周期:指存储器进行一次完整的读/写操作所需的全部时间
- 主存带宽:(数据传输速率)表示每秒从主存进出信息的最大数量,单位b/s、B/s、字/s
3.1.3 多级层次的存储系统
主要思想:上一层的存储器作为低一层存储器的高速缓存注:
- 主存和Cache之间的数据调动是由硬件自动完成的,对所有程序员均是透明的。
- 主存和辅存之间的数据调动是由硬件和操作系统共同完成的,对应用程序员是透明的,对系统程序员不透明。
3.2 主存储器
3.2.1 SRAM芯片和DRAM芯片
存储元:存放一个二进制位的物理器件,是存储器最基本的构件。
多个存储元构成一个存储单元
若干个存储单元构成一个存储体
1. SRAM的工作原理
存储元采用双稳态触发器(六晶体管MOS)来记忆信息。
优点
- 存取速度快
- 无需重写
缺点
- 集成度低
- 功耗大
- 价格昂贵
2. DRAM的工作原理
存储元采用栅极电容上的电荷来存储信息的。
优点
- 集成度高
- 位价低
- 功耗小
缺点
- 存取速度比SRAM慢
- 必须定时刷新和读后再生
3. DRAM 的刷新
DRAM 电容上的电荷一般只能维持1~2 ms,因此即使电源不断电,信息也会自动消失,所以需要根据读出内容时相应单元进行重写,也就是读后再生。对同一行进行相邻两次刷新的时间间隔称为刷新周期。
分为三种:
- 分散刷新
- 集中刷新
- 异步刷新
DRAM 刷新要注意:①刷新对 CPU 是透明的 ②DRAM 的刷新单位是行 ③刷新操作类似于读操作- 分散刷新
4. SRAM 和 DRAM 的比较
特点 | SRAM | DRAM |
---|---|---|
存储信息 | 触发器 | 电容 |
破坏性读出 | 否 | 是 |
是否需要刷新 | 不需要 | 需要 |
送行列地址 | 同时送 | 分两次送(地址、数据线复用) |
运行速度 | 快 | 慢 |
集成度 | 低 | 高 |
存储成本 | 高 | 低 |
发热量 | 大 | 小 |
易失/非易失性 | 易失 | 易失 |
主要用途 | Cache | 用作主机主存 |
3.2.2 只读存储器
1. ROM 的特点
- 结构简单
- 位密度高
- 非易失性
- 可靠性高
2. 类型
掩模式只读存储器(MROM)
- 写入后任何人都无法改变其内容
优点
- 可靠性高
- 集成度高
- 价格便宜
缺点
- 灵活性差
一次可编程只读存储器(PROM)
- 允许用户利用专门的设备写入自己的程序,一旦写入,内容就无法改变
可擦除可编程只读存储器(EPROM)
- 不仅允许用户使用编程器写入信息,也可以对其内容进行多次改写
- 虽然可读可写,但不能取代 RAM,因为编程次数有限,且写入时间过长
闪存(Flash Memory)
- 在EPROM的基础上发展而来,可以在线进行快速擦出与重写,且擦除速度重写快
固态硬盘(SSD)
- 基于闪存+控制单元构成
对比传统硬盘也具有
- 读/写速度快
- 低功耗
- 缺点就是 价格较高
3.2.3 主存储器的基本组成
3.2.4 多模块存储器
多模块存储器是一种空间并行技术,利用多个结构完全相同的存储模块的并行工作来提高存储器的吞吐率。
1. 单体多字存储器
- 每个存储单元存储 m 个字,总线宽度也为 m 个字,一次读一行
缺点:
- 若碰到转移指令,或操作数不能连续存放时,这种方法提升效果就不明显
2. 多体并行存储器

高位交叉编址(顺序方式)
- 单纯扩容,不能提高存储器的吞吐率
低位交叉编址(交叉方式)
- 设有 m 个模块,存储周期为 T,总线周期为 r
- $m<\frac{T}{r}$ :CPU 等待 r
- $m=\frac{T}{r}$ :完美衔接
- $m>\frac{T}{r}$ :m0 闲置 r
3.3 主存储器与CPU的连接
3.3.1 连接原理
- 主存储器通过数据总线、地址总线、控制总线与 CPU 连接
- 数据总线的位数与工作频率的乘积 和数据传输速率成正比
- 地址总线的位数决定了可寻址的最大内存空间
- 控制总线(i/o)指出总线周期的类型和本次输入/输出操作完成的时刻
3.3.2 主存容量的扩展
1. 位扩展法
对字长进行扩展(增加存储字长)
2. 字扩展法
对存储字的数量进行扩展,存储字长已满足系统要求
- 片选法
- 线选法
线选法 | 译码片选法 |
---|---|
n条线->n个选片信号 | n条线->$2^n$个选片信号 |
电路简单 | 电路复杂 |
地址空间不连续 | 地址后空间可连续 |
3. 字位同时扩展法
两种方式的组合,既增加存储字的数量,又增加存储字长
3.4 外部存储器
3.4.1 磁盘存储器
1. 优缺点
优点
- 存储容量大
- 位价低
- 记录介质可重复使用
- 记录信息可长期保存而不丢失,甚至可脱机存档
- 非破坏性读出,读出时不需要再生
缺点
- 存取速度慢
- 机械结构复杂
- 对工作环境要求高
2. 磁盘存储器
由磁盘驱动器、磁盘控制器、盘片组成
3. 磁盘的性能指标
记录密度
- 盘片单位面积上记录的二进制数据量
- 通常以道密度、位密度、面密度表示
- 道密度:沿磁盘半径方向单位长度的磁道数
- 位密度:磁道单位长度上能记录的二进制代码位数
- 面密度:位密度✖️道密度
磁盘的容量
- $非格式化容量 = 记录面数\times 柱面数\times 每条磁道的磁化单元数$
- $格式化容量 = 记录面数\times 柱面数\times 每道扇区数\times 每个扇区的容量$
- 格式化后的容量比非格式化容量要小
存取时间
- $平均存取时间=寻道时间+旋转延迟时间+传输时间$
- 寻道时间:磁头移动到目的磁道
- 旋转延迟时间:磁头定位到所在扇区
- 传输时间:传输数据所花费的时间
数据传输速率
- 磁盘在单位时间内向主机传送数据的字节数
设磁盘转速 r 转/秒,每条磁道容量为 N 字节
- $速率D_r=rN$
4. 磁盘地址

5. 磁盘阵列
RAID(独立冗余磁盘阵列):将多个独立的物理磁盘组成一个独立的逻辑盘。数据在多个物理盘上分割交叉存储、并行访问,具有更好的存储性能、可靠性、安全性。
3.4.2 固态硬盘

3.5 高速缓冲存储器
3.5.1 程序访问的局部性原理
时间局部性
- 指最近的未来要用到的信息,很可能是现在正在使用的信息
- 循环结构指令、需要多次重复执行的子程序段、对数组的存储和访问操作
空间局部性
- 指最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是邻近的
- 数组元素、向量、顺序执行的代码
3.5.2 Cache的基本工作原理
为便于 Cache 与主存交换信息,Cache 和主存都被划分大小相等的块,Cache 块也称Cache 行
- CPU 欲访问的信息已在 Cache 中的比率称为 Cache 的命中率
设总命中次数为 $N_c$ ,访问主存的总次数为 $N_m$
- $命中率 H=\frac{N_c}{N_c+N_m}$
- 命中率越接近 1 越好
设 $t_c$ 为命中时的 Cache 访问时间,$t_m$ 为未命中(缺失)时的访问时间,$1-H$ 表示未命中率
先访问 Cache,若未命中再访问主存
- $平均访问时间T_a=Ht_c+(1-H)(t_c+t_m)$
同时访问 Cache和主存,若 Cache命中则立即停止访问主存
- $平均访问时间T_a=Ht_c+(1-H)t_c$
3.5.3 Cache和主存的映射方式
1. 直接映射(只能放固定位置)

2. 全相联映射(随意放)

3. 组相联映射(放到特定分组)

3.5.4 Cache中主存块的替换算法
1. 随机算法(RAND)

2. 先进先出算法(FIFO)

3. 近期最少使用算法(LRU) 重要

4. 最不常使用算法

3.5.5 Cache的一致性问题
写命中
- 写回法
- 全写法
- 写回法
写不命中
- 写分配法
- 非写分配法
- 写分配法