先把命中和未命中分成两条路
Cache 的本质是让常用数据离 CPU 更近。题目给命中率时,意思是有一部分访问可以直接在 Cache 中完成,另一部分访问没有命中,需要付出更慢的主存访问代价。
所以这类题最重要的一步不是公式,而是把访问分成两种情况:命中怎么走,未命中怎么走。只要这一步清楚,后面就是加权平均。
命中部分命中率 × Cache访问时间
未命中部分未命中率 × 未命中访问代价
平均访问时间命中部分 + 未命中部分
常见写法:命中率 h,Cache 时间 Tc,主存时间 Tm
如果题目说命中时只需访问 Cache,未命中时需要访问主存,常见表达可以写成:平均访问时间 = h×Tc + (1-h)×Tm。若题目明确未命中时还要先查 Cache 再访问主存,则未命中代价可能写成 Tc+Tm。
也就是说,具体公式要看题干口径。考试不会故意让你猜,它通常会说明命中和未命中的访问过程。读题时要把这句话圈出来。
| 题干说法 | 未命中代价 | 提醒 |
|---|---|---|
| 未命中后访问主存 | Tm | 常见简化口径 |
| 先查Cache,未命中再访问主存 | Tc + Tm | 要把两段时间都算进去 |
| 给出命中率百分数 | 先转成小数 | 90% 要写成 0.9 |
| 问平均访问时间 | 加权平均 | 不是简单算术平均 |
一眼识别易错点
第一,别把命中率当成未命中率。命中率 90%,未命中率就是 10%。第二,别忘了百分数转小数。第三,题干如果写了“未命中还要访问主存”,要看是否需要包含先查 Cache 的时间。
老师一般会这样提醒:这题不是考你会不会背 Cache 定义,而是考你能不能按概率把两条访问路径合在一起。
相关题目解析
下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。
- Cache 命中率已知时平均访问时间怎么算?Cache / 命中率