关联缓存

时间:2012-05-01 00:28:44

标签: java

我已经完成了一项任务,我需要使用Java模拟关联缓存。 我们给出了一组字节地址,我们需要查找每个地址是命中还是未命中。 缓存由32个块组成,每个块为8个字节

所以该计划如下:

  • 从地址计算组地址(组地址是地址除以缓存中每个块的大小。例如地址950的组地址将是950/8)
  • 使用整个群组地址作为标记
  • 扫描整个缓存并查看该标记是否已在缓存中
  • 如果找到了标签,请记录一下
  • 如果找不到标记,请记录未命中,并将标记存储在第一个可用块
  • 如果没有可用空格,请从缓存中删除最近使用的(LRU)块
  • 更新缓存以便存储新标记(如果有未命中)并记住此块是最近使用的MOST。
  • 将有效位设置为true,将标记存储在块中,记住最初使用的地址。

我遇到的问题是执行最近最少使用位。我们要求实现LRU的方法是将块保持从最近使用到最近最少使用的顺序,当我们需要替换块时,我们从最后删除旧块并将新的添加到开头。然后,当我们得到一个命中时,我们将命中移动到缓存的开头。

1 个答案:

答案 0 :(得分:0)

您可以使用链接列表实现此目的。当然,您需要考虑一种快速查找列表的方法......