Skip to content
难度中等(★★)
建议时长90分钟
本课难点
  • 平均存取时间的加权平均公式(命中率/未命中率)
  • 三种映射方式的冲突率与电路复杂度排序(两条排序都要记)
  • 映射由硬件完成(与OS/程序员无关)的高频概念题

1.7.3 Cache(高速缓存)

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

📝 学习目标

  • 理解 Cache 的作用:解决 CPU 与主存速度/容量不匹配
  • 掌握“命中/未命中”与命中率的概念
  • 会算平均存取时间(加权平均)
  • 掌握三种映射方式:直接映射、全相联、组相联
  • 记住排序:冲突率与电路复杂度

🎯 知识点

1) Cache 的基本概念

  • Cache(高速缓存)位于 CPU 与主存之间
  • Cache 中的数据来自主存的复制
  • CPU 访问数据时:
    • 若在 Cache 中找到 → 命中(hit)
    • 否则 → 未命中(miss),需要访问主存并可能替换 Cache 内容

课堂提到:Cache 命中率通常很高(如 90%+),性能提升显著。

2) 平均存取时间(加权平均,软设常考计算)

设:

  • Cache 访问时间 Tc
  • 主存访问时间 Tm
  • 命中率 h,未命中率 1-h

平均存取时间:

Tavg = h * Tc + (1 - h) * Tm

课堂原话提炼:这就是“概率 × 时间”的加权平均。

3) 地址映射(地址映像)

主存块如何放入 Cache 的哪个位置?这就是映射问题。

重要结论(课堂强调、软设反复考):

  • 主存与 Cache 的地址映射由硬件自动完成
  • 与程序员无关,也不是操作系统的软件完成

4) 三种映射方式(只需掌握特点对比)

映射方式规则直观描述冲突率电路复杂度
直接映射(Direct-mapped)主存块只能映射到 Cache 的固定行(“0对0,1对1”)低(简单)
全相联(Fully associative)主存块可装入 Cache 任意行高(复杂)
组相联(Set associative)先按组固定映射,再在组内任意放折中折中

排序(必背):

  • 冲突率:直接映射 > 组相联 > 全相联
  • 电路复杂度:全相联 > 组相联 > 直接映射

🧠 难点与易错点

  • 易错1:把“Cache 扩大了主存容量”当成对(Cache 不等于主存扩容)
  • 易错2:映射由操作系统完成(错,硬件完成)
  • 易错3:把“全相联=电路简单”说反

🔑 关键词解释

  • 冲突(conflict):多个主存块争用同一 Cache 位置。
  • 替换算法(replacement policy):未命中时决定淘汰哪一块(命中率会受影响)。

🔍 联想扩展(软设常见考法)

  • “任意一块装入 Cache 任意位置” → 全相联
  • “零号块只能到零号行” → 直接映射
  • “硬件自动完成映射” → 记死

🧪 例题(按难度)

简单(3题)

单选
在 Cache 题中,h 通常表示:
单选
在三种映射方式中,“冲突率通常最高、实现最简单”的是:
单选
在三种映射方式中,“硬件比较逻辑最复杂”的通常是:

中级(3题)

例题1(平均存取时间:课堂例)

某系统 Cache 访问时间为 1ms,主存访问时间为 100ms,命中率为 90%。平均存取时间约为:

单选
选择平均存取时间:

例题2(映射由谁完成)

程序执行过程中,主存与 Cache 之间的地址映射通常由谁完成?

单选
选择正确选项:

例题3(任意装入任意位置)

主存与 Cache 的地址映射方式中,能实现“任意主存块装入 Cache 任意位置”的是:

单选
选择正确映射方式:

困难(1题)

填空
某系统 Cache 访问时间为 1ms,主存访问时间为 101ms,命中率为 80%。平均存取时间约为:

📚 本课小结

  • Cache:复制主存一部分以提速
  • Tavg = h*Tc + (1-h)*Tm
  • 映射由硬件完成
  • 直接/全相联/组相联:冲突率与复杂度一高一低,组相联折中