Skip to content

Cache基本概念与工作原理

考情分析

Cache 是 408 存储系统中的绝对重点,几乎每年都有涉及。命中率公式、平均访问时间计算、映射方式是三大核心出题点。

CPU 与主存的速度鸿沟

CPU 速度(GHz 级)与主存速度(百 ns 级)之间存在巨大差距。如果 CPU 每次都直接访问主存,绝大多数时间都在等待。Cache 利用程序的局部性,将频繁访问的数据放在 SRAM 中,大幅降低平均访问时间。

局部性原理

时间局部性

刚被访问的数据,近期很可能再次被访问。

例:循环体内的变量、计数器、累加器。

空间局部性

刚被访问的数据,其周围地址的数据近期也很可能被访问。

例:顺序执行的指令、数组的连续元素。

这两种局部性决定了 Cache 的有效性:将刚访问的数据(时间局部性)及其周围的数据块(空间局部性)一并放入 Cache,后续访问大概率命中。

Cache 工作流程

CPU 发出地址

查找 Cache(按 tag 比较)

命中?
 是 → 从 Cache 读取数据(快)
 否 → 从主存读取数据块,装入 Cache,再向 CPU 提供数据(慢)

Cache 对程序员透明,由硬件自动管理。程序不需要显式操作 Cache。

命中率

H=NcNc+Nm

其中 NcCache 命中的次数Nm 是未命中(需要访问主存)的次数,Nc+Nm 为总访问次数。H 通常在 0.9 以上。

平均访问时间

先访问 Cache,未命中再访问主存

ta=Htc+(1H)(tc+tm)

化简:

ta=tc+(1H)tm

其中 tc 是 Cache 访问时间,tm 是主存访问时间。

同时访问 Cache 和主存(命中则取消主存访问)

ta=Htc+(1H)tm

两种模型的区别:第一种未命中时,访问 Cache 的时间已经浪费;第二种未命中时,主存访问同时启动,未命中惩罚不包含 Cache 时间。408 题目通常明确说明用哪种模型,常见的是第二种(同时访问)。

效率

e=tcta

命中率越高,平均访问时间越接近 Cache 时间,效率越高。

数据块(Cache 行)

Cache 与主存之间以为单位传输,不是以字节为单位。一个 Cache 行(Cache Line)通常 64 字节。

好处:利用空间局部性,一次传输一整块,后续对该块内其他地址的访问直接命中。

交互可视化

加载可视化中...

例题

例1:平均访问时间计算

Cache 访问时间 tc=10 ns,主存访问时间 tm=100 ns,命中率 H=0.95

同时访问模型:

ta=0.95×10+0.05×100=9.5+5=14.5 ns

先访问 Cache 模型:

ta=10+0.05×100=10+5=15 ns

例2:由命中率反推访问次数

设 CPU 共访问存储器 1000 次,其中访问主存 50 次,则:

Nc=950,Nm=50H=9501000=0.95

考点清单

  • Cache 利用局部性原理工作,时间局部性和空间局部性都很重要
  • Cache 由硬件自动管理,对程序员透明
  • 命中率公式:H=Nc/(Nc+Nm)
  • 平均访问时间(同时访问):ta=Htc+(1H)tm
  • 平均访问时间(先访 Cache):ta=tc+(1H)tm
  • Cache 与主存以块为单位传输数据(利用空间局部性)
  • 命中率通常要求在 90% 以上,才能有效提升系统性能

真题练习

相关真题(6题)

2024Q16选择题2分

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

2024Q18选择题2分

MMU地址转换过程中检测的事件类型

2020Q15选择题2分

TLB与Cache的实现与特性对比

2017Q14选择题2分

循环访问数组的时间局部性与空间局部性

2014Q16选择题2分

指令Cache与数据Cache分离的原因

2010Q17选择题2分

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