Skip to content

存储层次结构综述

考情分析

存储层次结构的综合分析是 408 大题素材。常以"给定各级参数,计算整体平均访问时间"的形式出现,也会考查两个层次的对比与联系。

层次结构的核心矛盾

计算机对存储系统有三个互相矛盾的需求:

速度快容量大成本低

没有任何单一存储技术能同时满足这三点。SRAM 快但贵且小,DRAM 便宜但慢,磁盘容量大但更慢。

层次结构的解决方案:利用程序的局部性原理,将不同速度-容量-成本的存储器组成多级体系,让 CPU"看到"的是一个速度接近最快层、容量接近最大层、成本接近最低层的存储系统。

两个核心层次

整个存储体系可以拆分为两个独立的"缓存"层次:

Cache-主存层次

项目说明
目的弥补 CPU 与主存的速度差距
上层Cache(SRAM)
下层主存(DRAM)
管理方式硬件自动管理,对所有软件透明
传输单位Cache 行/块(通常 64 B)
缺失处理硬件自动从主存调入
典型命中率95%~99%

主存-辅存层次

项目说明
目的弥补主存容量不足
上层主存(DRAM)
下层辅存(磁盘/SSD)
管理方式**操作系统(软件)**管理,硬件提供支持(MMU、TLB)
传输单位页(通常 4 KB)
缺失处理缺页中断,OS 从磁盘调入页面
典型命中率99.9%+

两个层次的统一对比

对比项Cache-主存主存-辅存
速度比约 10:1105:1
传输单位块(64 B)页(4 KB)
管理者硬件OS(软件+硬件)
替换算法LRU/FIFO(硬件实现)LRU 近似(软件实现)
写策略写直达/写回类似写回(修改页在替换时写回磁盘)
缺失代价几十~百 ns几 ms
对程序员完全透明虚拟地址空间

两个层次遵循相同的原理(局部性 + 缓存),区别在于管理者和参数规模。

全局平均访问时间

将 TLB、Cache、主存、辅存串联分析时,实际计算通常简化为两级:

Cache-主存级别(忽略缺页):

t1=Hctc+(1Hc)tm

加入缺页因素

t2=Hmt1+(1Hm)td

其中 Hc 是 Cache 命中率,Hm 是主存命中率(不缺页的概率),td 是磁盘访问时间。

由于 Hm 极高(>99.9%),缺页对平均时间影响看似很小,但一旦缺页,代价极大(ms 级),对整体性能的拖累不可忽视。

局部性原理与层次结构的对应

局部性类型利用方式对应机制
时间局部性刚访问的数据保留在快速层Cache 保留最近使用的块
空间局部性以块/页为单位调入,包含周围数据Cache Line 64 B、页 4 KB

块大小和页大小的选取本质上是在平衡空间局部性的利用程度和缺失代价。Cache 块较小(64 B)因为缺失代价低;页较大(4 KB)因为磁盘访问的延迟主要是寻道和旋转,多传一些数据的边际成本低。

存储系统设计的权衡

Cache 设计参数

参数增大的好处增大的代价
容量命中率提高成本增加、访问延迟增大
块大小空间局部性利用好冲突增加、缺失代价增大
相联度冲突缺失减少比较器增多、延迟增大

页大小的权衡

页大小好处代价
页表小、TLB 覆盖范围大、磁盘传输效率高内部碎片大
内部碎片小页表大、TLB 缺失率高

综合解题框架

408 存储系统综合题的一般解题步骤:

  1. 画出地址结构:虚拟地址(VPN + offset)、物理地址(PFN + offset)、Cache 地址(tag + index + block offset)
  2. 计算各字段位数:offset 由块大小/页大小决定,index 由行数/组数决定,tag 为剩余位
  3. 走完访问链路:TLB 查找 -> 页表查找 -> Cache 查找 -> 主存访问
  4. 统计访存次数和时间:根据各级命中情况计算

例题

例1:两级存储系统综合计算

Cache 命中率 Hc=0.95tc=2 ns,tm=50 ns(同时访问模型)。主存命中率 Hm=0.9998,缺页处理时间 td=5 ms。

Cache-主存级:

t1=0.95×2+0.05×50=1.9+2.5=4.4 ns

加入缺页:

t2=0.9998×4.4+0.0002×5×106=4.3991+1000=1004.4 ns

即使缺页率只有万分之二,磁盘访问的巨大代价仍然将平均时间拉高到微秒级。缺页率的控制至关重要。

例2:去掉 Cache 的影响

去掉 Cache 后,CPU 每次访问都直接访问主存(50 ns)。原来平均 4.4 ns,去掉后性能下降为 4.4/508.8%,慢了约 11 倍。Cache 的存在使 CPU 大部分时间以接近 SRAM 的速度获取数据。

例3:TLB + Cache 联合访存次数

32 位虚拟地址,4 KB 页,直接映射 Cache 1024 行,块大小 16 B,16 位物理地址。

虚拟地址字段:VPN = 20 位,offset = 12 位。

物理地址字段:block offset = 4 位,Cache index = 10 位,tag = 16 - 10 - 4 = 2 位。

情况TLBCache访主存次数
最好HitHit0
HitMiss1(取数据块)
MissHit1(取页表项)
最坏MissMiss2(页表+数据)

两级页表 TLB Miss 时访主存次数变为 2(查两级页表)+ 1(取数据)= 3。

考点清单

  • Cache-主存层次由硬件管理,主存-辅存层次由 OS 管理
  • 两个层次都利用局部性原理,传输单位不同(块 vs 页)
  • Cache 缺失代价小(百 ns),缺页代价大(ms 级)
  • 缺页率虽低(0.01%~0.02%),但对平均访问时间影响显著
  • 块大小和页大小的选取是空间局部性利用与缺失代价之间的权衡
  • 存储层次结构的目标:速度接近 Cache,容量接近磁盘,成本接近磁盘
  • 综合题解题:先画地址结构,再走完 TLB -> 页表 -> Cache -> 主存的完整链路

真题练习

相关真题(2题)

2024Q16选择题2分

Cache-主存与主存-外存层次结构对比

2010Q17选择题2分

TLB、Cache、Page三级命中/缺失的逻辑关系