Appearance
Cache性能分析
考情分析
Cache 性能综合计算题在 408 大题中出现频率高,常结合映射方式、替换算法、写策略一起考查,需要建立完整的分析框架。
单级 Cache 性能
基本公式回顾
同时访问模型(CPU 同时启动 Cache 和主存,命中则取消主存访问):
先访问 Cache 模型(未命中时串行访问主存):
性能加速比
表示加入 Cache 后,访存速度提高了多少倍。
例:
多级 Cache
现代 CPU 通常有 L1、L2(甚至 L3)Cache。
双级 Cache 模型
设 L1 Cache 命中率
局部命中率与全局命中率:
:全局命中率(所有访问中 L1 命中比例) :局部命中率(L1 未命中的访问中 L2 命中比例) - L2 全局命中率:
平均访问时间:
或展开:
三级存储系统(含 L1/L2/主存)
| 层次 | 访问时间 | 命中率 |
|---|---|---|
| L1 Cache | ||
| L2 Cache | ||
| 主存 | — |
例题:
综合计算题解题模板
408 中 Cache 综合题通常给出以下信息:
- 主存容量和地址位数
- Cache 容量、行数、块大小
- 映射方式(直接/全相联/组相联)
- 替换算法
- 写策略
解题步骤:
第一步:确定地址分段(tag / index / offset 各多少位)
第二步:计算 Cache 总存储容量(含标记位)
每行存储内容:
总容量 = 行数 × 每行位数
第三步:计算命中率或平均访问时间
第四步:分析地址映射关系(某个主存地址对应 Cache 的哪行/哪组)
常见例题类型
类型1:给定主存地址,判断 Cache 行号
直接映射:
类型2:计算 Cache 总容量(含标记)
这是大题中经常被忽略的部分,每行除了数据还有:
- 1 位有效位(Valid)
- tag 位(标记)
- 1 位脏位(写回策略)
类型3:计算访问主存的次数
给定访问序列和 Cache 状态,按步骤模拟,统计未命中次数。
典型综合例题
Cache 容量 32 KB,4 路组相联,块大小 32 B,主存 32 位地址(字节寻址),写回策略。
- offset =
位 - 总行数 =
行;组数 = 组 - index =
位 - tag =
位 - 每行大小 = 1(有效位)+ 1(脏位)+ 19(tag)+ 32×8(数据)= 277 位
- Cache 总存储容量 = 1024 × 277 bit = 283648 bit ≈ 34.6 KB(比数据容量 32 KB 多约 8%)
交互可视化
易混淆知识点
1. Cache 缺失和缺页是一回事吗?
不是。Cache 缺失(miss)是 CPU 访问 Cache 未命中,需要从主存调入数据块,由硬件自动处理,对程序透明,延迟约几十纳秒。缺页(page fault)是访问虚拟内存时页面不在主存中,需要从磁盘调入,由操作系统处理(触发缺页异常),延迟约几毫秒。二者层次不同,处理机制不同。
2. Cache 块大小越大越好吗?
不是。块大小增大的利:利用了空间局部性,一次调入更多相邻数据。弊:①总行数减少(Cache 容量固定),可能增加冲突缺失;②每次缺失的传输时间变长;③可能调入大量无用数据。实际设计需要在命中率和缺失代价之间权衡。
3. "同时访问"和"先 Cache 后主存"两个模型哪个更快?
同时访问模型更快——命中时等效访问时间就是
考点清单
- 同时访问模型与先访问 Cache 模型的区别,注意题目说明
- 多级 Cache:局部命中率用于逐级计算,全局命中率 = 到该级命中比例
- Cache 总容量(含标记)= 行数 × (有效位 + tag位 + 数据位 + 脏位)
- 性能加速比
,H 越高 S 越大 - 命中率从 0.9 提升到 0.99,性能提升显著,但从 0.99 提升到 0.999 边际效益递减
- Cache 缺失由硬件处理,缺页由操作系统处理