gpt4 book ai didi

cpu-architecture - 为什么在写入分配缓存策略中从主内存中获取数据

转载 作者:行者123 更新时间:2023-12-04 08:32:47 27 4
gpt4 key购买 nike

对于高速缓存的写分配策略,当发生写未命中时,从主存中取出数据,然后用写命中进行更新。
我的问题是,假设写命中的回写策略,如果数据立即被 CPU 更新,为什么要从主内存中读取数据?我们不能直接写入缓存而不从主存中获取数据吗?

最佳答案

在命中 L1d 缓存的存储上,您不需要获取或 RFO 任何内容,因为该行已经是专有的。
通常您只存储到整行的一部分,因此您需要整行的副本以使其处于修改状态。 如果您还没有该行的有效共享副本,则需要执行 Read For Ownership (RFO)。 (您可以通过使其他副本无效来提升为 Exclusive 然后修改。MESI )。
全行存储(如 x86 AVX-512 vmovdqa [rdi], zmm0 64 字节存储)可以只是无效而不是读取所有权,并且只需等待确认没有其他内核具有该行的有效副本。 IDK 如果这真的发生在 AVX-512 商店,特别是在当前的 x86 微架构中。
在某些情况下,在某些 CPU 中,跳过读取(并且只是使任何其他副本无效)在实践中肯定会发生。例如在微码实现x86的存储协议(protocol)中rep stosrep movs ,基本上就是memset/memcpy。因此,对于大量数据,它们肯定会存储完整的行,并且避免首先读取的内存流量是值得的。请参阅我在 What setup does REP do? 中引用的 Andy Glew 的评论。 - 他在英特尔工作时设计了 P6 (Pentium Pro) 的快速字符串微码,并表示其中包含无 RFO 存储协议(protocol)。
另见 Enhanced REP MOVSB for memcpy

关于cpu-architecture - 为什么在写入分配缓存策略中从主内存中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64942523/

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