gpt4 book ai didi

caching - 争用内存中的读取共享数据?

转载 作者:行者123 更新时间:2023-12-01 11:14:14 25 4
gpt4 key购买 nike

我目前正在研究 Hennessy 和 Patterson 的计算机体系结构:一种定量方法,在第 5 章(线程级并行)中,他们讨论了多处理的缓存一致性和复制。他们要求我们通过设置用例来做出以下假设:

在我教科书的前几页,他们告诉读者做出以下假设:

  1. 处理器 A 写入内存位置 X
  2. 处理器 A 写入内存位置 Y
  3. 处理器 C 从内存位置 Y 读取将看到正确的值 - 这意味着 处理器 C 也将看到内存的正确值位置X

合乎逻辑的结论是

These restrictions allow processors to reorder reads, but forces the processor to finish a write in program order.

然而,几段之后,当讨论将复制作为一种加强一致性的方案时,他们说

Replication reduces both latency of access and contention for a read shared data item.

我的解释是,将数据复制到本地缓存允许多核处理器减少延迟(由于数据局部性 - 数据离处理器更近)。我同意那部分。但是,我不清楚为什么存在读取共享数据项的争用。这似乎暗示着 RAR(Read after Read) 数据危害,我知道这并不存在。

除非处理器尝试写入共享内存位置,否则为什么在读取共享数据项时会出现任何类型的争用?

编辑:StackOverflow 上有很多关于线程争用的帖子,包括What is thread contention? .但是这些几乎独占使用锁为例。我的理解是,锁是一种用于增强一致性的更高级别的应用程序模式。此外,我作为答案看到的所有示例都涉及对目标数据项的某种修改(写入)。

最佳答案

任何内存结构都有有限数量的访问或读取端口,它们代表允许您读取或写入数据的物理线路。如果只有一个读端口,但多个代理可能同时从内存中读取,那么它们将争用该端口,因为一次只有其中一个可以使用它。减少争用和提高整体带宽的方法之一是通过单独的访问端口在单独的物理结构中复制数据。例如,每个核心可能有自己的私有(private)缓存,其中可能存在同一缓存行的多个副本。在这样的设计中,每个核心都能够独立访问其缓存行的副本。

关于caching - 争用内存中的读取共享数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54960999/

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