存储一致性模型最初是针对共享存储的多处理器设计提出来的,同样也可以适用于多核处理器设计。存储一致性模型时,处理器(处理机)和处理器核在概念是可以互用的。
下面举一个存储一致性问题的例子。如表11.2所示,寄存器R1为进程P2的内部寄存器,R2和R3为P3的内部寄存器,初始值均为0;变量a,b为P1、P2和P3的共享变量,初始值均为0。
表1: 共享存储程序片段
P1 |
P2 |
P3 |
L11: STORE a, 1; |
L21: LOAD R1, a; |
L31: LOAD R2, b; |
在表1 所示的程序中,如果仅要求P1、P2及P3根据指令在程序中出现的次序来执行指令,那么这个程序的访存事件可能按如下次序发生:
- P1发出存数操作L11;
- L11到达P2,但由于网络堵塞等原因,L11未到达P3;
- P2发出取数操作L21 取回a的新值;
- P2发出存数操作L22,且其所存的b新值到达P3;
- P3发出取数操作L