gpt4 book ai didi

caching - 内层缓存可以写回包容性外层缓存吗?

转载 作者:行者123 更新时间:2023-12-02 17:19:00 26 4
gpt4 key购买 nike

我问过类似的问题:Can a lower level cache have higher associativity and still hold inclusion?

假设我们有 2 级缓存。 (L1离CPU最近(内部/下层),L2在CPU之外,离主存最近)L1缓存可以写回吗?

我的尝试)
我认为我们必须只有直写式缓存,而不能在 L1 中拥有回写式缓存。如果 L1 缓存中的 block 被替换,则必须将其写回 L2 以及主内存以保留包含内容。因此它必须是写透而不是写回。

所有这些疑问都源于下面的考题。 :P

Question) For inclusion to hold between two cache levels L1 and L2 in a multi-level cache hierarchy which of the following are necessary?

I) L1 must be write-through cache
II) L2 must be a write-through cache
III) The associativity of L2 must be greater than that of L1
IV) The L2 cache must be at least as large as the L1 cache

A) IV only
B) I and IV only
C) I, II and IV only
D) I, II, III and IV

根据我的理解,答案应该是选项(B)

最佳答案

现实生活中的反例:Intel i7 系列(自 Nehalem 以来)具有包容性的大型共享(核心之间)L3。所有级别都是回写式(包括每核私有(private) L2 和 L1d),以减少外部缓存的带宽需求。

包含仅意味着对于任何内部缓存中处于有效状态的每一行,外部缓存标记都具有除“无效”之外的状态。数据不一定也保持同步。 <强> https://en.wikipedia.org/wiki/Cache_inclusion_policy称之为“值包含”,是的,它确实需要直写(或只读)内部缓存。这是选项 B,甚至比“包容性”更强。

我对定期包含(特别是在英特尔 i7 中)的理解是,数据可能会过时,但标签始终包含在内。此外,由于这是一个多核 CPU,L3 标记会告诉您哪个核心的私有(private) L2/L1d 缓存拥有处于独占或修改状态的行(如果有)。因此,如果另一个核心想要读取或写入该行,您就知道该与哪个核心交谈。即,它充当那些多核 CPU 的窥探过滤器。

相反,如果包含的 L3 缓存中没有标签匹配,则该行肯定不会出现在芯片上的任何位置。 (因此无效消息不需要传递到每个核心。)另请参阅 Which cache mapping technique is used in intel core i7 processor?了解更多详情。

要写入一行,内部缓存必须通过外部缓存获取/RFO,这样它就有机会以这种方式保持包含,因为它处理来自 L1d/L2 写入未命中的 RFO(读取所有权)(不是处于独占或修改状态)。

显然这被称为“包含标签”;该术语可能有其他一些技术含义。我想我看到了它的使用并对它的含义做出了错误的(?)假设。 What is tag-only forced cache inclusion called?建议“包含标签”并不意味着标签,也不意味着没有数据。

<小时/>

内部缓存 (L1) 中有一行处于修改状态意味着包容性外部缓存将具有与该行匹配的标记,即使外部缓存中的实际数据已过时。 (我不确定在这种情况下通常使用什么状态缓存;根据评论中的@Hadi,它不是无效的。我认为它也不是共享的,因为它需要避免使用这个过时的数据来满足来自其他核心的读取请求。)

当数据最终从 L1 写回时,它只能在外部缓存中处于修改状态,从 L1 中逐出。

关于caching - 内层缓存可以写回包容性外层缓存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59450056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com