gpt4 book ai didi

x86 - "memory ordering obeys causality"的含义?

转载 作者:行者123 更新时间:2023-12-05 01:01:54 24 4
gpt4 key购买 nike

我对多处理器编程很陌生。

article关于 x86 内存模型。

In a multiprocessor system, memory ordering obeys causality (memory ordering respects transitive visibility).



请帮忙

最佳答案

服从因果关系意味着如果事情A导致另一件事B,并且如果您观察到B发生了,那么您也会观察到A发生了。考虑以下代码:

x = 0
y = 0

thread 1 thread 2

x = 10 r1 = y // #1
y = 25 r2 = x // #2

假设所有的读取和写入都是单独正确的(即在指令级别是原子的,没有撕裂,例如通过在 C++ 中使用松弛原子),考虑线程 2 在点 #1 处对世界的看法。 .
  • 如果 r1为零,那么我们一无所知。线程 1 的执行可以在任何地方;它可能尚未开始,或者可能已经完成,但更改尚不可见。
  • 但是,如果 r1是 25,那么通过因果关系我们知道 r2必须读作 10,因为唯一的方法是 r1如果线程 1 已经执行了这两个语句,并且 x86 的强内存排序保证先前(因果之前)存储的效果是可见的,则可能读取 25。

  • 请注意,这不是所有硬件的通用功能。在流行的当代内存模型(如 C++11、C11、Java 和 Go 的模型)中,我们会说在上述操作中,存储 y = 25具有“发布顺序”和负载 r1 = y有“获取排序”,两个操作“同步”。

    关于x86 - "memory ordering obeys causality"的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27374538/

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