我理解顺序一致性的定义,但我对下面的例子感到困惑。
p1:W(x)a p2:W(x)b p3:R(x)b R(x)a p4: R(x)b R(x)a
这个系统是顺序一致的 但下面的情况并不是因为 p3 和 p4 以不同的顺序看到 x 的值 p1:W(x)a p2:W(x)b p3:R(x)a R(x)b p4: R(x)b R(x)a
所以我怀疑系统 SC p3 和 p4 应该一致并且看到相同的 x 值,这就是处理器一致性的定义。 那么PC和SC有何不同?
在第一个示例中,内存操作有一个总顺序,因为每个读者都以相同的顺序看到写入(他们并不反对)。
SC的定义:
第一个例子满足这些条件,因此它是 SC。该示例是一个蹩脚的 SC 示例,因为只涉及一个地址。这实际上是一致性的一个例子。一致性可以看作是单个地址的 SC。
以下示例:
p1: W(x)a p2: W(x)b p3: R(x)a R(x)b p4: R(x)b R(x)a
由于 p3 和 p4 在顺序上不一致,因此不存在全序,因此我们违反了 SC 的第一个条件。
该示例也不是 PC。对于 PC,可以以不同的顺序看到不同进程发出的对不同地址的写入(查找 IRIW 试金石测试);因此,所有负载和存储都没有总顺序(所以显然不是 SC)。但PC仍然需要一致性。