在了解了GPU为何需要“原子操作”来强制秩序后,我们再来看CPU的强内存一致性(Strong Memory Consistency),你就能很好地理解它们是在不同层面上解决类似的问题。
简单来说,强内存一致性模型(通常指顺序一致性,Sequential Consistency, SC) 就是给程序员提供一个最符合直觉的“假象”:
所有处理器核看到的内存操作顺序是一致的,并且这个顺序严格等于代码中编写的顺序。
这就像是在一个单核CPU上按顺序执行指令一样,无论你有多少个核心在并行跑,最终的结果看起来就像是所有指令排着队、一条接一条地执行。
💡 核心定义:直觉与现实的统一
计算机科学家Lamport对顺序一致性(SC)的定义非常经典:
1. 原子性(Atomic): 每一个读写操作都是一瞬间完成的,没有中间状态。
2. 顺序保持(Program Order): 每个处理器(核心)内部的操作顺序,严格保持代码中的顺序。
3. 全局一致(Global Order): 所有处理器看到的整个系统的操作顺序是唯一的。
举个例子:
假设你有两个线程在两个核上跑:
* 核A的代码: x = 1; 然后 y = 1;
* 核B的代码: while(y == 0); 然后 assert(x == 1);
在强内存一致性(SC)模型下:
* 核B只要看到 y 变成