软考计算题 · Cache · 平均访问时间

Cache 命中率和平均访问时间怎么算?

Cache 题看起来像硬件知识,其实常常是一个加权平均题。命中时走 Cache,未命中时要访问主存,所以不要把命中时间和主存时间简单相加。

计算题专题 软考题库编辑部 持续更新

先把命中和未命中分成两条路

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 定义,而是考你能不能按概率把两条访问路径合在一起。

相关题目解析

下面这些题目和本专题的判断方法关联较强,适合读完概念后回到具体题干里校验理解。