LRU缓存算法命中问题咨询:为何18和22应判定为命中?
缓存命中/缺失逻辑疑问:无重复地址为何出现命中?
我已经为这个问题研究了数周,只差理解最后这部分逻辑就能完成。
我有一个包含以下内容的文件:
10 20 22 18 E10 210 12
运行的命令为:
./lrucache -m 64 -s 4 -e 0 -b 4 -i address01 -r lru
其中各参数含义如下:
m:位大小2^s:组数量2^e:行数量2^b:块大小
我需要用LRU(最近最少使用)算法统计缓存的命中/缺失情况,预期18和22应该是命中。但目前我的实现得到的全是缺失——在我看来这是合理的,因为文件里没有重复值,每次新增地址都会通过LRU淘汰旧项,所以应该全是缺失。我测试过在文件末尾添加另一个210,此时会出现命中,说明程序基本功能正常,但肯定缺了关键逻辑。
我没附上代码,因为我觉得自己可能对缓存的某部分原理存在认知盲区。难道需要先预缓存一次不统计命中/缺失,再进行正式统计?我实在想不通无重复值的情况下为何会出现命中。有没有人能解释为什么18和22应该被判定为命中?
内容的提问来源于stack exchange,提问作者tristan
相关产品推荐
相关产品推荐

