Appearance
Cache基本概念与工作原理
考情分析
Cache 是 408 存储系统中的绝对重点,几乎每年都有涉及。命中率公式、平均访问时间计算、映射方式是三大核心出题点。
CPU 与主存的速度鸿沟
CPU 速度(GHz 级)与主存速度(百 ns 级)之间存在巨大差距。如果 CPU 每次都直接访问主存,绝大多数时间都在等待。Cache 利用程序的局部性,将频繁访问的数据放在 SRAM 中,大幅降低平均访问时间。
局部性原理
时间局部性
刚被访问的数据,近期很可能再次被访问。
例:循环体内的变量、计数器、累加器。
空间局部性
刚被访问的数据,其周围地址的数据近期也很可能被访问。
例:顺序执行的指令、数组的连续元素。
这两种局部性决定了 Cache 的有效性:将刚访问的数据(时间局部性)及其周围的数据块(空间局部性)一并放入 Cache,后续访问大概率命中。
Cache 工作流程
CPU 发出地址
↓
查找 Cache(按 tag 比较)
↓
命中?
是 → 从 Cache 读取数据(快)
否 → 从主存读取数据块,装入 Cache,再向 CPU 提供数据(慢)Cache 对程序员透明,由硬件自动管理。程序不需要显式操作 Cache。
命中率
其中
平均访问时间
先访问 Cache,未命中再访问主存
化简:
其中
同时访问 Cache 和主存(命中则取消主存访问)
两种模型的区别:第一种未命中时,访问 Cache 的时间已经浪费;第二种未命中时,主存访问同时启动,未命中惩罚不包含 Cache 时间。408 题目通常明确说明用哪种模型,常见的是第二种(同时访问)。
效率
命中率越高,平均访问时间越接近 Cache 时间,效率越高。
数据块(Cache 行)
Cache 与主存之间以块为单位传输,不是以字节为单位。一个 Cache 行(Cache Line)通常 64 字节。
好处:利用空间局部性,一次传输一整块,后续对该块内其他地址的访问直接命中。
交互可视化
例题
例1:平均访问时间计算
Cache 访问时间
同时访问模型:
先访问 Cache 模型:
例2:由命中率反推访问次数
设 CPU 共访问存储器 1000 次,其中访问主存 50 次,则:
考点清单
- Cache 利用局部性原理工作,时间局部性和空间局部性都很重要
- Cache 由硬件自动管理,对程序员透明
- 命中率公式:
- 平均访问时间(同时访问):
- 平均访问时间(先访 Cache):
- Cache 与主存以块为单位传输数据(利用空间局部性)
- 命中率通常要求在 90% 以上,才能有效提升系统性能