【问题标题】:L1/2 cache problemL1/2 缓存问题
【发布时间】:2010-10-27 09:11:01
【问题描述】:

L1/L2 高速缓存行能否分别高速缓存主存数据字的多个副本?

【问题讨论】:

    标签: caching hardware computer-architecture


    【解决方案1】:

    否 - 如果它已经在缓存中,MMU 将使用它而不是创建另一个副本。

    【讨论】:

    • 不一定正确。这完全取决于缓存架构。
    【解决方案2】:

    每个缓存基本上都存储整个内存的一小部分。当 CPU 需要内存中的一个字时,它是first goes to L1, then to L2 cache and so on, before the main memory is checked。 所以一个特定的记忆字可以同时在 L2 和 L1 中,但它不能在 L1 中存储两次,因为这不是必需的。

    【讨论】:

      【解决方案3】:

      主内存可能不止一次在缓存中。显然,这是真实的,并且在多处理器机器上很常见。但即使在单处理器机器上,它也可能发生。

      考虑一个具有分离 L1 指令/数据缓存的 Pentium CPU。指令仅进入 I-cache,数据仅进入 D-cache。现在,如果操作系统允许自我修改代码,则可以将相同的内存加载到 I 和 D 缓存中,一次作为数据,一次作为指令。现在,您在 L1 缓存中拥有该数据两次。因此,具有这种拆分缓存架构的 CPU 必须采用缓存一致性协议来避免竞争条件/损坏。

      【讨论】:

        【解决方案4】:

        是的,它可以。 L1 副本已更新,但尚未刷新到 L2。仅当 L1 和 L2 是非独占缓存时才会发生这种情况。这对于单处理器来说是显而易见的,但对于通常每个内核都有自己的 L1 缓存的多处理器来说更是如此。

        这完全取决于缓存架构——它是否能保证任何事情。

        【讨论】:

          猜你喜欢
          • 2021-09-30
          • 2017-08-12
          • 2014-01-22
          • 1970-01-01
          • 2015-02-07
          • 1970-01-01
          • 2019-01-05
          • 2012-07-02
          • 2013-03-26
          相关资源
          最近更新 更多