我在期末考试中遇到了两个案例。 第一种情况是从位置获取信息,如:0x101,0x102,0x101,0x102,0x101,0x102,0x101,0x102。
第二种情况下,内存从位置获取信息,如: 0x101,0x101,0x101,0x101,0x111,0x109,0x102,0x100。
问题在于它使用时间局部性。
这是我的观点:在第一种情况下。我认为实际上当我们访问0x101时,内存也会访问0x102进入缓存。然后在接下来的六次获取中,将不会受到惩罚。这意味着在这种情况下我们只有一个缓存未命中。在这里,我认为我们受益于时间局部性和空间局部性。 而在前四个步骤的第二个案例中,我们受益于时间局部性,但在接下来的步骤中,我们没有时间局部性。实际上,这导致比第一选择更多的高速缓存未命中。 我认为两者都是正确的,但我们只能有一个答案,所以我感到困惑。
答案 0 :(得分:0)
我投票给第二个。正如你所说,它在前4个步骤中具有明显的时间局部性。
永远不会说你的缓存有空间来容纳内存中超过1个项目。它可能只是一个只有1个寄存器的CPU。因此,第一种情况可能没有任何地方性。
问题是否提供了有关系统架构的更多详细信息?
答案 1 :(得分:0)
这绝对是第二选择。问题很清楚:你在第二种情况下明确地使用了时间局部性,因为你连续多次访问0x101。
请参阅此问题:Spatial vs. Temporal locality
时间位置意味着您将访问相同的地址 多次,时间相对紧密。
你说的第一个案例也使用了时间局部性,但是我说它会转向空间局部性,因为你在2个邻居位置之间交替,因此,由于空间局部性,缓存未命中被最小化,而不是因为时间局部性。
在第二种情况下,由于时间局部性,缓存未命中被最小化。请记住,时间局部性表示如果您现在访问位置X,您很可能会很快再次访问。这是在第二种案例中探讨的财产。