Skip to content

Cache性能分析

考情分析

Cache 性能综合计算题在 408 大题中出现频率高,常结合映射方式、替换算法、写策略一起考查,需要建立完整的分析框架。

单级 Cache 性能

基本公式回顾

同时访问模型(CPU 同时启动 Cache 和主存,命中则取消主存访问):

ta=Htc+(1H)tm

先访问 Cache 模型(未命中时串行访问主存):

ta=tc+(1H)tm

性能加速比

S=tmta

表示加入 Cache 后,访存速度提高了多少倍。

tc=5 ns,tm=100 ns,H=0.98(同时访问模型):

ta=0.98×5+0.02×100=4.9+2=6.9 nsS=1006.914.5

多级 Cache

现代 CPU 通常有 L1、L2(甚至 L3)Cache。

双级 Cache 模型

设 L1 Cache 命中率 H1,L2 Cache 命中率 H2(指在 L1 未命中的情况下,L2 的命中率),主存访问时间 tm

局部命中率与全局命中率

  • H1:全局命中率(所有访问中 L1 命中比例)
  • H2:局部命中率(L1 未命中的访问中 L2 命中比例)
  • L2 全局命中率:(1H1)H2

平均访问时间

ta=H1tc1+(1H1)[H2tc2+(1H2)tm]

或展开:

ta=H1tc1+(1H1)H2tc2+(1H1)(1H2)tm

三级存储系统(含 L1/L2/主存)

层次访问时间命中率
L1 Cachet1(~1 ns)H1(~0.9)
L2 Cachet2(~5 ns)H2(~0.9,局部)
主存tm(~100 ns)

例题t1=2 ns,t2=10 ns,tm=200 ns,H1=0.9H2=0.8

ta=0.9×2+0.1×(0.8×10+0.2×200)=1.8+0.1×(8+40)=1.8+4.8=6.6 ns

综合计算题解题模板

408 中 Cache 综合题通常给出以下信息:

  1. 主存容量和地址位数
  2. Cache 容量、行数、块大小
  3. 映射方式(直接/全相联/组相联)
  4. 替换算法
  5. 写策略

解题步骤:

第一步:确定地址分段(tag / index / offset 各多少位)

offset=log2(块大小(字节))index={log2(行数)直接映射log2(组数)k路组相联0全相联tag=主存地址位数indexoffset

第二步:计算 Cache 总存储容量(含标记位)

每行存储内容:

有效位(1位)+tag 位数+数据(块大小 × 8位)+脏位(写回策略1位)

总容量 = 行数 × 每行位数

第三步:计算命中率或平均访问时间

第四步:分析地址映射关系(某个主存地址对应 Cache 的哪行/哪组)

常见例题类型

类型1:给定主存地址,判断 Cache 行号

直接映射:

Cache 行号=主存地址块大小modN

类型2:计算 Cache 总容量(含标记)

这是大题中经常被忽略的部分,每行除了数据还有:

  • 1 位有效位(Valid)
  • tag 位(标记)
  • 1 位脏位(写回策略)

类型3:计算访问主存的次数

给定访问序列和 Cache 状态,按步骤模拟,统计未命中次数。

典型综合例题

Cache 容量 32 KB,4 路组相联,块大小 32 B,主存 32 位地址(字节寻址),写回策略。

  1. offset = log232=5
  2. 总行数 = 32KB/32B=1024 行;组数 = 1024/4=256
  3. index = log2256=8
  4. tag = 3285=19
  5. 每行大小 = 1(有效位)+ 1(脏位)+ 19(tag)+ 32×8(数据)= 277 位
  6. 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 后主存"两个模型哪个更快?

同时访问模型更快——命中时等效访问时间就是 tc,不命中时等效为 tm(因为主存访问已经同步启动)。但硬件代价更高。先 Cache 后主存模型更简单,但不命中时延迟为 tc+tm。做题时注意题目是哪种模型。

考点清单

  • 同时访问模型与先访问 Cache 模型的区别,注意题目说明
  • 多级 Cache:局部命中率用于逐级计算,全局命中率 = 到该级命中比例
  • Cache 总容量(含标记)= 行数 × (有效位 + tag位 + 数据位 + 脏位)
  • 性能加速比 S=tm/ta,H 越高 S 越大
  • 命中率从 0.9 提升到 0.99,性能提升显著,但从 0.99 提升到 0.999 边际效益递减
  • Cache 缺失由硬件处理,缺页由操作系统处理

真题练习

相关真题(9题)

2025Q18选择题2分

CPI与时钟周期的关系及Cache对CPI的影响

2025Q43综合题12分

Cache组相联映射与性能分析综合题

2023Q43综合题14分

Cache组相联映射与数组访问缺失率分析

2017Q14选择题2分

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

2016Q15选择题2分

直接映射Cache缺失率计算

2015Q16选择题2分

TLB+Cache命中情况下的主存访问次数

2013Q43综合题9分

多体交叉存储与总线突发传送综合题

2012Q43综合题10分

Cache缺失损失与总线传输综合题

2009Q21选择题2分

Cache命中率计算