L1/L2 高速缓存行能否分别高速缓存主存数据字的多个副本?
问问题
560 次
4 回答
1
主内存可能不止一次在缓存中。显然,这是真实的,并且在多处理器机器上很常见。但即使在单处理器机器上,它也可能发生。
考虑一个具有拆分 L1 指令/数据缓存的 Pentium CPU。指令仅进入 I-cache,数据仅进入 D-cache。现在,如果操作系统允许自我修改代码,则可以将相同的内存加载到 I 和 D 缓存中,一次作为数据,一次作为指令。现在,您在 L1 缓存中拥有该数据两次。因此,具有这种拆分缓存架构的 CPU 必须采用缓存一致性协议来避免竞争条件/损坏。
于 2009-05-19T16:07:19.953 回答
0
否 - 如果它已经在缓存中,MMU 将使用它而不是创建另一个副本。
于 2009-05-19T16:00:03.447 回答
0
每个缓存基本上都存储整个内存的一小部分。当 CPU 需要内存中的一个字时,它首先进入 L1,然后进入 L2 缓存,依此类推,然后再检查主存。因此,一个特定的记忆字可以同时在 L2 和 L1 中,但它不能在 L1 中存储两次,因为这不是必需的。
于 2009-05-19T16:01:40.203 回答
0
是的,它可以。L1 副本已更新,但尚未刷新到 L2。仅当 L1 和 L2 是非独占缓存时才会发生这种情况。这对于单处理器来说是显而易见的,但对于通常每个内核都有自己的 L1 缓存的多处理器来说更是如此。
这一切都取决于缓存架构——它是否能保证任何事情。
于 2009-05-20T00:38:46.093 回答