1.7.2 层次化存储
📝 学习目标
- 理解为什么需要层次化存储:速度/容量/成本无法同时最优
- 掌握“越靠近 CPU 越快、越小、越贵”的规律
- 牢记局部性原理的两种形式,并能读懂真题描述
- 知道虚拟存储由哪两级结构组成
🎯 知识点
1) 层次化存储的核心矛盾
- CPU 很快
- 主存(RAM)速度和容量有限
- 外存(磁盘/SSD)容量大但更慢
解决思路:分层,把“常用/最近要用”的数据放到更快的层。
2) 三要素对比规律(必背)
从 CPU 向外:寄存器 → Cache → 主存 → 外存
- 速度:越来越慢
- 容量:越来越大
- 单位成本:越来越低
3) 局部性原理(层次化存储的理论支撑)
- 时间局部性(Temporal locality):刚访问过的数据/指令,很快可能再次访问(例如循环)
- 空间局部性(Spatial locality):访问某地址后,相邻地址很可能被访问(例如顺序访问数组)
真题常用描述:
- “被访问数据聚集在较小连续区域,相邻单元可能被访问” → 空间局部性
- “刚被访问的内容不久又被访问” → 时间局部性
4) 虚拟存储(Virtual Memory)
当主存不够时,用外存作为后备,把部分数据换入换出,使得“看起来像更大的主存”。
软设常考:虚拟存储由哪两级结构组成?
- 主存 + 外存
🧠 难点与易错点
- 易错1:把空间局部性说成“重复访问同一内容”(那是时间局部性)
- 易错2:把虚拟存储说成“Cache + 主存”(那是高速缓存层次,不是虚拟存储)
🔑 关键词解释
- 后备存储(backing store):外存作为虚拟存储的后备。
- 换入/换出(swap in/out):数据在主存与外存之间调入/调出。
🔍 联想扩展
- Cache 解决的是“CPU-主存速度不匹配”,依赖局部性。
- 虚拟存储解决的是“主存容量不够”。
🧪 例题(按难度)
简单(3题)
关于层次化存储的“三要素”规律,正确的是:
“刚访问过的指令/数据很快又会被再次访问”体现的是:
关于 Cache 与虚拟存储的作用,正确的是:
中级(3题)
例题1(局部性判断)
“CPU 访问存储器时,被访问数据一般会聚集在一个较小的连续存储区域中;若一个存储单元已被访问,那么相邻的存储单元很有可能被访问。”
该描述体现的是:
选择正确概念:
例题2(虚拟存储的组成)
虚拟存储体系通常由哪两级存储结构组成?
选择正确组成:
从“单位成本(每 bit 价格)”角度看,典型层次结构从高到低的顺序是:
困难(1题)
考虑如下代码片段(概念题,不必纠结语言细节):
c
for (int i = 0; i < n; i++) sum += a[i]; // 顺序访问数组
for (int t = 0; t < 100; t++) do_work(); // 循环反复执行上述场景分别体现了哪些局部性原理?(可多选)
📚 本课小结
- 层次化存储:速度/容量/成本的权衡
- 局部性原理:时间局部性、空间局部性
- 虚拟存储:主存 + 外存