我观察到 Skylake SP 在真实硬件上对干净的缓存行进行写回。
@Leeor 对这篇文章的回答对于 Intel Core i3/i7,数据从缓存集中逐出后的去向 https://stackoverflow.com/questions/19416964/where-data-goes-after-eviction-from-cache-set-in-case-of-intel-core-i3-i7指出
从 Skylake 开始,某些 CPU(服务器部分)不再具有包容性 L3,而是具有非包容性(以支持增加的 L2)。这意味着当 L2 老化时,干净的行也可能被写回,因为 L3 通常不保存它们的副本。
我不明白为什么 L3 的非包容性会使 L2 干净的缓存行被写回,有人可以向我解释一下吗?
Edit:
我终于找到了一种方法来衡量这些干净写回的数量。在 30 亿次读取中,只有 20 次通过性能计数器干净地写回 DRAM。
Performance counter stats for 'system wide':
3,697,263,307 uncore_imc_1/event=0x4,umask=0x3/ /* cas_count_read */
20 uncore_imc_1/event=0xb8,umask=0x11/ /* wr_cas_rank0 BG0 */
1826.846941108 seconds time elapsed
另一件事是我只观察到那些干净的写回双插座平台。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)