缓存的内部级别可以写在包含的外部级别的缓存内部吗?

问题描述 投票:1回答:1

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

假设我们有2级缓存。 (L1最接近CPU(内部/较低级别),L2最接近CPU(内部/较低级别),L1高速缓存是否可以回写?

我的尝试)我认为我们必须只具有直写式高速缓存,而不能在L1中具有回写式高速缓存。如果在L1高速缓存中替换了块,则必须将其写回到L2以及主存储器中,以保持包含。因此,它必须直写而不是回写。

所有这些疑问均来自以下考试题。 :P

问题]用于包含在两个缓存级别L1和L2之间多级缓存层次结构,以下哪些是必需的?

I)L1必须是直写式缓存II)L2必须是直写式缓存III)L2的关联性必须大于L1IV)L2缓存必须至少与L1缓存一样大

A)仅IVB)仅I和IVC)仅I,II和IVD)I,II,III和IV

根据我的理解,答案必须是选项(B)

caching memory memory-management cpu-architecture cpu-cache
1个回答
2
投票

现实生活中的反例:Intel i7系列(自Nehalem起)具有较大的共享(在内核之间)L3,并且包含在内,并且当然使用回写分配策略来减少DRAM带宽需求。

我的理解是,它有点“包含标签”:是的,数据在外部缓存中是无效的,但是标签必须用于内部缓存分配的行。因此,检查外部缓存标记可以告诉您内部缓存是否肯定没有具有处于任何有效状态的行的副本。也就是说,它可以作为那些多核CPU的探听过滤器。

要写入一行,内部缓存必须通过外部缓存来获取它,因此当它处理来自写未命中的RFO(为所有权而读取)(不在独占或已修改状态)时,它有机会保持这种包含方式。 。


[内部高速缓存(L1)中的行处于“已修改”状态意味着包含的外部高速缓存将具有与该行匹配的标签,但状态绝对无效。

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

© www.soinside.com 2019 - 2024. All rights reserved.