gpt4 book ai didi

multithreading - 线程访问相同的缓存行

转载 作者:行者123 更新时间:2023-12-04 23:49:17 26 4
gpt4 key购买 nike

我遇到了一个关于线程不要访问相同缓存行的建议,我真的不明白为什么,而且在搜索该主题时,我遇到了以下问题:
Multiple threads and CPU cache
其中一个答案建议:

you just want to avoid two threads from simultaneously trying to access data that is located on the same cache line



在我看来,缓存存储内存页面以便从进程快速访问,正如这里所说: http://en.wikipedia.org/wiki/Thread_%28computing%29#How_threads_differ_from_processes

threads share their address space



两个线程访问相同的缓存行应该不成问题,因为如果页面在缓存中并且尝试访问内存的线程将获得缓存命中,而不管其他线程如何。

我听说过关于避免线程在几个不同的场合访问相同的缓存行的争论,所以这不是一个神话。我在这里缺少什么?

最佳答案

在大多数(可能是所有但我没有详尽的硬件知识)多核 CPU 中,当一个内核尝试写入相应的内存时,缓存将锁定当前访问的行。因此,尝试访问相同缓存行的其他内核将处于等待状态。

你可以在线程之间共享相同的数据,只要它是只读的(或不经常更新),但是如果你继续写入它,隐藏访问序列化将产生相当于在同一个核心上运行所有线程的性能(实际上有点糟糕,因为缓存锁定延迟)。

关于multithreading - 线程访问相同的缓存行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26675766/

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