根据小红书博主 tanTan 的笔记,10年、20年和23年的大题都考察了命中率,我做了这三题,比较吃力
2010 真题:
- 出题人真的是很会制造歧义,说什么行大小是 64B,这样我何不直接用这个行大小乘以行数,就得到总容量了,还算个麻花的 tag 位数。实际上这里的行大小指的是Cache行中数据区的大小,但这真的很让人血压飙升,烦得很!!!
- 计算数组元素对应的 Cache 行号,方法就是用地址号除以块大小,得到块号,再对行数取模
- 数组元素命中率的计算:看一个 Cache 行能放下多少个相邻元素,例如放下 16个元素,则每16次访问 miss 一次(第一个 miss ,后续命中),则命中率为 15/16 ,若相邻元素都不在同一个 Cache 行,则无法命中,命中率为 0