确实,顺序一致性是比缓存一致性更强的属性吗?
根据
索林,丹尼尔·J;希尔,马克D;Wood,David A:关于内存一致性和缓存一致性的入门,Morgan和Claypool,2011年
顺序一致性可以描述为(非正式):
顺序一致性内存模型指定系统必须执行所有线程的加载,并以尊重每个线程程序顺序的总顺序存储到所有内存位置。每次加载将按该总顺序获取最新存储的值。
换句话说,系统是顺序一致的,如果给定每个线程的内存事件(加载和存储),我们可以对所有这些事件进行排序,使得:1)对于每个线程,其事件的顺序得以保留; 2)全局顺序为串行(任何加载都返回存储的最新值)。
现在他们继续并描述连贯性:
的定义的一致性是类似于顺序一致性的定义是一致的系统必须出现来执行所有螺纹的加载和存储到单个存储器位置在共有以便方面每个线程的程序顺序。
换句话说,系统是一致的,如果给定每个位置的每个线程的内存事件,我们可以对该位置的事件进行排序,这样:1)对于每个线程,其事件在该位置的顺序被保留,以及2)对于每个线程位置订单是连续的。
最后,他们指出了区别:
此定义突出了一致性和一致性之间的重要区别:一致性是基于每个内存位置指定的,而一致性是针对所有内存位置指定的。
因此似乎不同之处在于,对于相干系统,我们需要每个位置的所有事件的总顺序(因此,特定位置的事件之间的顺序),而对于一致的系统,应该在所有事件上定义总顺序(因此在不同位置的事件之间也进行排序)?
这是否意味着一致性不如一致性那么严格?(这似乎很有趣!)是否存在连贯但不一致的痕迹?