Memory Consistency and Cache Coherence 定义
1. Memory Consistency(内存一致性)
-
定义:内存一致性是指多核或多处理器系统中,多个处理器对共享内存的访问顺序是否一致,以及这些访问操作是否满足特定的规则或模型。
-
关注点:内存操作的全局可见顺序,确保所有处理器对内存的读写操作按照一致的顺序进行。
-
问题背景:在多核系统中,不同处理器可能同时访问共享内存,如果没有明确的内存一致性模型,可能会导致程序行为不可预测。
-
内存一致性模型:
-
顺序一致性(Sequential Consistency):所有处理器的内存操作按照一个全局顺序执行,且每个处理器的操作顺序保持不变。
-
弱一致性模型(Weak Consistency):允许某些操作乱序执行,但需要通过同步操作(如内存屏障)来保证一致性。
-
-
示例:
-
如果两个处理器分别执行写操作和读操作,内存一致性模型定义了读操作是否能立即看到写操作的结果。
-
2. Cache Coherence(缓存一致性)
-
定义:缓存一致性是指多核或多处理器系统中,每个处理器的私有缓存与共享内存之间数据的一致性,确保所有处理器看到的数据是最新的。
-
关注点:多个缓存副本之间的数据一致性,避免脏数据或过时数据。
-
问题背景:每个处理器都有自己的缓存,如果某个处理器修改了缓存中的数据,其他处理器的缓存可能仍然保存旧值,导致数据不一致。
-
缓存一致性协议:
-
MESI协议:通过标记缓存行的状态(Modified、Exclusive、Shared、Invalid)来维护一致性。
-
写失效(Write Invalidate):当一个处理器修改数据时,使其他处理器的缓存副本失效。
-
写更新(Write Update):当一个处理器修改数据时,将新值广播给其他处理器的缓存。
-
-
示例:
-
如果处理器A修改了某个内存位置的值,处理器B的缓存中该位置的旧值必须被更新或失效。
-
3. 主要区别
特性 | Memory Consistency(内存一致性) | Cache Coherence(缓存一致性) |
---|---|---|
关注点 | 内存操作的全局顺序和可见性 | 多个缓存副本之间的数据一致性 |
范围 | 涉及所有内存操作(读/写)的顺序 | 仅涉及缓存和内存之间的数据一致性 |
问题背景 | 多个处理器对共享内存的访问顺序是否一致 | 多个处理器的缓存中数据是否一致 |
解决方案 | 内存一致性模型(如顺序一致性、弱一致性) | 缓存一致性协议(如MESI、写失效、写更新) |
4. 总结
-
Memory Consistency 关注的是多处理器系统中内存操作的全局顺序和可见性。
-
Cache Coherence 关注的是多处理器系统中缓存副本之间的数据一致性。