系统与内存架构
在设计程序或并发系统时,需要考虑不同的系统和内存架构风格。这非常必要,因为一种系统和内存风格可能适用于一项任务,但对另一项任务却可能容易出错。
支持并发的计算机系统架构
Michael Flynn 在 1972 年提出了对不同风格的计算机系统架构进行分类的分类法。该分类法定义了四种不同的风格:
- 单指令流单数据流 (SISD)
- 单指令流多数据流 (SIMD)
- 多指令流单数据流 (MISD)
- 多指令流多数据流 (MIMD)。
单指令流单数据流 (SISD)
顾名思义,这种系统将拥有一个顺序的输入数据流和一个执行该数据流的单个处理单元。它们就像具有并行计算架构的单处理器系统。以下是 SISD 的架构:
SISD 的优点
SISD 架构的优点如下:
- 它需要的功率较低。
- 不存在多个核心之间复杂通信协议的问题。
SISD 的缺点
SISD 架构的缺点如下:
- SISD 架构的速度受到限制,就像单核处理器一样。
- 它不适合大型应用程序。
单指令流多数据流 (SIMD)
顾名思义,这种系统将拥有多个输入数据流和多个处理单元,这些单元可以在任何给定时间对单个指令进行操作。它们就像具有并行计算架构的多处理器系统。以下是 SIMD 的架构:
SIMD 的最佳示例是显卡。这些卡具有数百个独立的处理单元。如果我们谈论 SISD 和 SIMD 之间的计算差异,那么对于添加数组[5, 15, 20]和[15, 25, 10],SISD 架构必须执行三个不同的加法运算。另一方面,使用 SIMD 架构,我们可以在单个加法运算中添加它们。
SIMD 的优点
SIMD 架构的优点如下:
可以使用单个指令对多个元素执行相同的操作。
可以通过增加处理器内核数量来提高系统的吞吐量。
处理速度高于 SISD 架构。
SIMD 的缺点
SIMD 架构的缺点如下:
- 处理器多个内核之间存在复杂的通信。
- 成本高于 SISD 架构。
多指令单数据 (MISD) 流
具有 MISD 流的系统拥有多个处理单元,它们通过对同一数据集执行不同的指令来执行不同的操作。以下是 MISD 的架构:
目前尚无 MISD 架构的商业化代表。
多指令多数据 (MIMD) 流
在使用 MIMD 架构的系统中,多处理器系统中的每个处理器都可以独立地对不同数据集的不同指令集进行并行执行。这与 SIMD 架构相反,在 SIMD 架构中,对多个数据集执行单个操作。以下是 MIMD 的架构:
普通的多处理器使用 MIMD 架构。这些架构主要用于许多应用领域,例如计算机辅助设计/计算机辅助制造、仿真、建模、通信交换机等。
支持并发的内存架构
在处理并发和并行等概念时,始终需要加快程序速度。计算机设计师找到的一个解决方案是创建共享内存多计算机,即具有单个物理地址空间的计算机,该地址空间由处理器拥有的所有内核访问。在这种情况下,可能存在许多不同的架构风格,但以下三种重要的架构风格:
UMA(统一内存访问)
在此模型中,所有处理器都统一共享物理内存。所有处理器对所有内存字的访问时间相同。每个处理器可能都有一个私有缓存内存。外围设备遵循一组规则。
当所有处理器都能平等地访问所有外围设备时,该系统称为对称多处理器。当只有一个或几个处理器可以访问外围设备时,该系统称为非对称多处理器。
非统一内存访问 (NUMA)
在 NUMA 多处理器模型中,访问时间随内存字的位置而变化。在这里,共享内存在所有处理器之间物理分布,称为本地内存。所有本地内存的集合构成一个全局地址空间,所有处理器都可以访问该空间。
仅缓存内存架构 (COMA)
COMA 模型是 NUMA 模型的特殊版本。在这里,所有分布式主内存都被转换为缓存内存。