本章出现的Coherency指Cache Coherency,Consistency指Memory Consistency。许多工程师经常混淆这两个概念,没有建立足够准确的Memory Consistency概念。Consistency与Coherency之间有一定的联系,所关注的对象并不等同。
MemoryConsistency的实现需要考虑处理器系统Cache Coherency使用的协议。除了狭义Cache之外,在处理器系统中存在的广义Cache依然会对Memory Consistency模型产生重大影响。Memory Consistency和Cache Coherency有一定的联系,但是并不对等。这两部分内容相对较为复杂,可以独立成篇。有些学者认为Cache Coherency是Memory Consistency的一部分[55],更为准确的说是Memory Coherency的一部分。
我们首先给出MemoryCoherency的定义。Memory Coherency指处理器系统保证对其存储器子系统访问Correctness。我们并不关注对处理器私有空间的存储器访问,仅考虑共享空间的这种情况,即便在这种情况下定义Correctness依然很困难。
在一个DistributedSystem中,共享存储器空间可能分布在不同的位置,由于广义和狭义Cache的存在,这些数据单元存在多个副本;在Distributed System中,不同处理器访问存储器子系统可以并发进行,使得Memory Coherency层面的Correctness并不容易保证。
我们假设在一个DistributedSystem中含有n个处理器分别为P1~Pn,Pi中有Si个存储器操作,此时从全局上看可能的存储器访问序列有(S1+S2+…+Sn)! /(S1! ×S2!×…×Sn)种组合[56]。为保证Memory Coherency的Correctness,需要按照某种规则选出合适的组合。这个规则被称为Memory Consistency Model,也决定了处理器存储器访问的Correctness<