1

我在期末考试中遇到了两个案例。第一种情况内存从以下位置获取信息:0x101,0x102,0x101,0x102,0x101,0x102,0x101,0x102。

第二种情况内存从以下位置获取信息:0x101,0x101,0x101,0x101,0x111,0x109,0x102,0x100。

问题是在哪种情况下它使用时间局部性。

这是我的观点:在第一种情况下。我认为实际上当我们访问 0x101 时,内存也会将 0x102 访问到缓存中。然后在接下来的六次取球中,不会有任何惩罚。这意味着在这种情况下,我们只有一次缓存未命中。在这里,我认为我们受益于时间局部性和空间局部性。而在前四步的第二种情况下,我们受益于时间局部性,但在接下来的步骤中,我们没有时间局部性。实际上,这导致比第一选择更多的缓存未命中。我认为两者都是正确的,但我们只能有一个答案,所以我感到困惑。

4

2 回答 2

0

I'd vote for the 2nd one. As you said, it has a clear case of temporal locality on the first 4 steps.

It is never said that your cache has space to hold more than 1 item in memory. It could be a CPU with just 1 register or something. So it is possible that the first case does not exhibit any locality whatsoever.

Did the question provide more details on the architecture of the system?

于 2014-01-10T07:49:58.773 回答
0

这绝对是第二选择。问题很清楚:您在第二种情况下明确使用时间局部性,因为您连续多次访问 0x101 。

看到这个问题:空间与时间局部性

时间局部性意味着您将在时间上相对接近地多次访问同一地址。

您说第一种情况也使用时间局部性是对的,但我会说它面向空间局部性,因为您在 2 个相邻位置之间交替,因此,由于空间局部性而不是时​​间局部性,缓存未命中被最小化。

在第二种情况下,由于时间局部性,缓存未命中被最小化。请记住,时间局部性表明,如果您现在访问位置 X,您可能很快就会再次访问。这是在第二种情况下探索的属性。

于 2014-01-10T10:06:16.937 回答