作业的一部分我正在尝试实现一个非常简单的缓存模拟器,但我的程序返回错误的结果。我无法弄清楚问题是否与我如何计算命中/未命中或某些编码错误的逻辑有关。我怀疑它是我计算命中和未命中的方式。我将写出我如何计算命中/错过/驱逐的逻辑,如果有人发现错误请指出。
指令是加载(L) - >如果发现命中++,如果没有找到错过++(但现在我们必须存储它,所以如果行为空,存储在空行中,如果没有空行,找到最近最少使用的行数据并逐出它,增加驱逐++)
指令是修改(M) - >如果找到命中+ = 2,(导致一个用于加载另一个用于存储),如果没有找到错过++,(现在因为它找不到空行找到空行,空行找到命中++,空行找不到驱逐++,搜索最近最少使用行,发现,存储该行中的内容命中++)
指令是Store(S) - >如果空行找到了++,如果没有空行驱逐++,用一个LRU标志驱逐一个,那里存储数据,点击++