并行计算机架构:内存一致性模型与硬件并行示例
1. 内存一致性模型概述
在并行计算机系统中,有两个关键问题决定了不同的内存一致性模型:
- 每个处理器的内存访问操作是否按程序顺序执行?
- 所有处理器是否以相同顺序观察到所执行的内存访问操作?
1.1 顺序一致性模型
顺序一致性模型(SC 模型)是一种流行的内存一致性模型,它是单处理器模型的直观扩展,对内存访问的执行顺序有严格限制。一个内存系统若满足以下条件,则具有顺序一致性:
- 每个处理器的内存访问按该处理器程序所描述的程序顺序执行。
- 所有处理器对所有内存访问的全局结果,呈现为相同的顺序,该顺序由不同处理器内存访问的任意交错产生。
- 内存访问必须作为原子操作执行,即每个内存操作的效果必须在任何处理器的下一个内存操作开始之前,对所有处理器全局可见。
1.1.1 程序顺序的解释
程序顺序有不同的解释方式,它可以是源程序中执行内存访问的语句顺序,也可以是优化编译器生成的机器程序中内存访问操作的顺序,编译器可能会对语句进行重新排序以提高性能。这里假设使用源程序中的顺序。
1.1.2 顺序一致性的示例
假设有三个处理器 P1、P2、P3 执行以下语句:
| 处理器 | 程序 |
| ---- | ---- |
| P1 | (1) x1 = 1; |
| P2 | (2) while(x1 == 0); (3) x2 = 1; |
| P3 | (4) while(x2 == 0); (5) print(x1); |
变量