【问题标题】:Some problems about temporal locality and spatial locality关于时间局部性和空间局部性的一些问题
【发布时间】:2014-01-29 02:14:10
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: computer-science spatial computer-architecture temporal


    【解决方案1】:

    我会投票给第二个。正如你所说,它在前 4 个步骤中具有明显的时间局部性。

    从来没有说过你的缓存有空间在内存中保存超过 1 个项目。它可能是一个只有 1 个寄存器或其他东西的 CPU。因此,第一种情况可能没有表现出任何局部性。

    问题是否提供了有关系统架构的更多详细信息?

    【讨论】:

    • 此问题未提供更多详细信息。不知这次考试我选错了答案,太可惜了……
    【解决方案2】:

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

    看到这个问题:Spatial vs. Temporal locality

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

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

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

    【讨论】:

    • 但是“很快”是什么意思。我怀疑在两个或三个系统时钟也很快被调用。
    • @user3180776 2 或 3 个系统时钟不算什么。 100 个系统时钟仍然很快。这取决于上下文,但请记住 CPU 周期非常快。鉴于您问题中的选项,我会选择 2,因为时间局部性在那里非常明显。
    • @user3180776,很快是一个主观定义 - 如果您在同一行仍驻留在缓存中时访问它,则应该尽快考虑(实际距离将根据缓存大小/关联性而有所不同,访问模式等。)
    猜你喜欢
    • 2011-12-09
    • 2011-12-16
    • 2011-11-08
    • 2016-02-03
    • 2017-04-03
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 2021-08-08
    相关资源
    最近更新 更多