第7章 存储系统
存储系统由Cache和虚拟存储器组成,旨在解决CPU与主存之间的速度匹配问题以及主存容量不足的问题,对应用程序员透明。
7.1 存储系统的层次结构
CPU 寄存器
↑
高速缓冲存储器(Cache) ← 解决速度匹配
↑
主存储器(主存) ← 存放正在运行的程序和数据
↑
辅助存储器(磁盘/SSD) ← 解决容量问题
层次结构满足的原则:
- 一致性原则:同一信息在不同层次的值应相同
- 包含性原则:内层存储器的全部信息是其相邻外层信息的一部分的复制品
7.2 Cache高速缓冲存储器
工作原理
Cache由SRAM实现,速度接近CPU寄存器,容量较小。CPU与Cache以字为单位交换数据,Cache与主存以块为单位交换数据。
访问局部性原理:
- 时间局部性:近期被访问的存储单元很可能在未来再次被访问(循环)
- 空间局部性:近期被访问的存储单元邻近的单元很可能在未来被访问(数组、连续存储)
命中率:
h = Nc / (Nc + Nm)
Nc = Cache完成存取总次数,Nm = 主存完成存取总次数
平均访问时间:Ta = h × Tc + (1-h) × Tm
访问效率:e = Tc / Ta = 1 / (h + (1-h) × r),r = Tm / Tc
Cache地址映射
| 映射方式 | 主存地址格式 | 特点 |
|---|---|---|
| 直接映射 | [标记(s-r)] [行号(r)] [块内(w)] | i = j mod m,实现简单,冲突率高 |
| 全相联映射 | [标记(s)] [块内(w)] | 任意块→任意行,灵活,比较电路复杂 |
| 组相联映射 | [标记(s-d)] [组号(d)] [块内(w)] | 组内全相联,组间直接映射,折中方案 |
Cache替换算法
| 算法 | 说明 | 特点 |
|---|---|---|
| 随机法 | 随机选择一行替换 | 实现简单 |
| FIFO | 最先进入的行被替换 | 可能替换掉频繁使用的行 |
| LRU | 最久未使用的行被替换 | 命中率最高,需记录访问历史 |
| LFU | 使用次数最少的行被替换 | 实现复杂 |
Cache写策略
| 策略 | 写命中 | 写未命中 | 特点 |
|---|---|---|---|
| 写回法 | 只修改Cache,换出时写回主存 | 将主存块拷贝到Cache后修改 | 减少写主存次数 |
| 全写法(写通) | Cache和主存同时修改 | 直接向主存写入 | 一致性好 |
| 写一次法 | 第一次写命中时同时写入主存,之后只写Cache | 同写回法 | 写回法+第一次全写 |
7.3 虚拟存储器
虚拟存储器是主存-辅存层次,以透明方式提供比实际主存大得多的地址空间。
页式虚拟存储器
- 虚拟空间分成逻辑页,主存空间分成同样大小的物理页
- 页的大小为磁盘扇区的整数倍
- 虚存地址:[逻辑页号] [页内行地址]
- 实存地址:[物理页号] [页内行地址]
- 地址转换通过页表完成(在主存中)
页表项:包含物理页号、装入位(有效位)、修改位、访问位等。
快表(TLB):将近期最活跃的页表项存放在高速存储器中,加速地址转换。
段式虚拟存储器
- 按程序的逻辑结构划分段,各段长度因程序而异
- 虚拟地址由段号+段内地址组成
- 段表包含:段起始地址、装入位、段长
- 段内地址超过段长时 → 地址越界中断
段页式虚拟存储器
- 段式和页式的结合:按逻辑单位分段,每段再分成固定大小的页
- 程序的调入调出按页面进行,按段实现共享和保护
- 兼取页式和段式的优点,但地址映象需多次查表
- 目前大中型机普遍采用
三种方式对比
| 特征 | 页式 | 段式 | 段页式 |
|---|---|---|---|
| 划分单位 | 固定大小页 | 可变长度段 | 段+页 |
| 地址结构 | 页号+页内地址 | 段号+段内地址 | 段号+段内页号+页内地址 |
| 保护 | 页级保护困难 | 段级保护容易 | 兼具两者 |
| 共享 | 困难 | 容易 | 容易 |
| 碎片 | 内部碎片 | 外部碎片 | 内部碎片 |
7.4 相联存储器
相联存储器(CAM)按内容寻址,而非按地址寻址。用于Cache的标记比较、TLB地址查找等场景。
工作原理:将输入数据与所有存储单元的内容同时比较,输出匹配信号。可并行比较全部单元。
7.5 存储管理部件(MMU)
MMU是CPU中负责虚拟地址到物理地址转换的硬件单元,功能包括:
- 地址转换:虚拟地址→物理地址(查页表/段表)
- TLB管理:维护快表,加速地址转换
- 访问保护:检查访问权限(读/写/执行)
- Cache控制:控制Cache的使能与策略
考试重点
★★★ 第一梯队(必考)
| 考点 | 典型题型 |
|---|---|
| Cache地址映射(直接/全相联/组相联地址格式分析) | 地址格式分析 + 计算 |
| Cache替换算法(LRU执行过程) | 过程分析 |
| 页式虚拟存储器地址转换 | 计算 + 分析 |
★★☆ 第二梯队
| 考点 | 典型题型 |
|---|---|
| 命中率和平均访问时间计算 | 计算题 |
| Cache写策略对比 | 对比简答 |
| 段式/页式/段页式对比 | 对比表 + 简答 |
★☆☆ 第三梯队
| 考点 | 典型题型 |
|---|---|
| 存储层次结构 | 层次图 + 说明 |
| TLB快表的作用 | 简答 |
| MMU的功能 | 简答 |
| 相联存储器原理 | 简答 |