2014-03-05 16 views
-2

我对这个问题的措辞可能不够具体,但这里有更多的上下文......是否需要在目标集中的所有高速缓存行中设置有效位以访问目标行,或仅设置目标行的有效位?

当在缓存中查找块时,控制器首先选择该组。然后执行 1)测试选定集合中的所有有效位,如果任何有效位未设置为1,则返回高速缓存未命中 或 2)找到具有匹配标签位的行,然后检查有效位就是这条线。

我了解与此过程相关的所有其他内容。我对第一个问题感到困惑,找到了一条线或者测试了有效位。提前致谢!

+0

可能有一些实现,或者甚至可能并行检查它们......它真的很重要吗? – twalberg

+0

我认为它会,例如,如果你正在寻找一个特定的块,并且同一组中一行的有效位是0,但是你的块的行的有效位是1,你会看到一个缓存缺失如果只有特定的目标行必须是有效的,则两者必须有效或缓存命中 – williamsonc

+0

为什么您对某一行不感兴趣的一个有效位为0? – twalberg

回答

0

一个实现可以1)找到正确的行,然后检查它是否有效,或2)找到所有有效的行并查看其中是否有正确的行,或者3)找到所有有效行和右行并行看看这两个结果是否相交。甚至可能还有其他方法,比如考虑有效位是标签中的额外位,并搜索该增强标签......最终结果将是相同的,实现者所做的具体选择通常不记录在公开可用的文档,但如果可以说服他们揭示它,可以在设计文档中找到。

相关问题