gpt4 book ai didi

language-agnostic - 冗余写入时的缓存行为

转载 作者:行者123 更新时间:2023-12-02 00:49:50 27 4
gpt4 key购买 nike

编辑 - 我想我问的问题太长了,所以我把它说得非常具体。

问题:如果内存位置位于 L1 缓存中且未标记为脏。假设它的值是 X。如果您尝试将 X 写入同一位置会发生什么?是否有 CPU 会发现这样的写入是多余的并跳过它?

例如,是否有一种优化可以比较两个值并丢弃对主内存的冗余写回?具体来说主流处理器是如何处理这个问题的呢?当值是像 0 这样的特殊值时怎么办?如果即使对于像 0 这样的特殊值也没有这样的优化,有什么原因吗?

动机:我们有一个可以轻松放入缓存的缓冲区。多个线程可以通过在它们之间回收来潜在地使用它。每次使用都涉及写入缓冲区中的n 个位置(不一定是连续的)。回收仅仅意味着将所有值设置为 0。每次我们回收时,size-n 位置已经是 0。对我来说(直观地),避免如此多的冗余写回将使回收过程更快,并且这就是问题所在。

在代码中执行此操作没有意义,因为分支指令本身可能会导致不必要的缓存未命中(if (buf[i]) {...} )

最佳答案

我不知道有任何处理器可以进行您所描述的优化 - 消除对干净缓存行的写入不会改变值 - 但这是一个好问题,一个好主意,英雄所见略同等等。

我写了一个很大的回复,然后我想起来:这在文献中被称为“沉默的商店”。参见“免费的无声商店”,K. Lepak 和 M Lipasti,UWisc,MICRO-33,2000。

无论如何,在我的回复中我描述了一些实现问题。

顺便说一句,类似这样的话题经常在 USEnet 新闻组 comp.arch 中讨论。

我还在我的维基上写了关于它们的文章,http://comp-arch.net

关于language-agnostic - 冗余写入时的缓存行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3315604/

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