Skip to content
难度中等(★★)
建议时长60分钟
本课难点
  • 时间局部性 vs 空间局部性的题干关键词识别
  • “Cache层次”与“虚拟存储(主存+外存)”的概念区分
  • 三要素规律:越靠近CPU越快越小越贵(速度/容量/成本方向)

1.7.2 层次化存储

本课核心知识点手绘速记(SVG)

📝 学习目标

  • 理解为什么需要层次化存储:速度/容量/成本无法同时最优
  • 掌握“越靠近 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();  // 循环反复执行

上述场景分别体现了哪些局部性原理?(可多选)

📚 本课小结

  • 层次化存储:速度/容量/成本的权衡
  • 局部性原理:时间局部性、空间局部性
  • 虚拟存储:主存 + 外存