系统和内存架构
在设计程序或并发系统时需要考虑不同的系统和内存架构风格。这是非常有必要的,因为一种系统和内存风格可能适合一项任务,但对于其他任务可能容易出错。
支持并发的计算机系统体系结构
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 架构,我们可以在单个加法操作中添加 then 。
SIMD的优点
SIMD架构的优点如下:
仅使用一条指令即可对多个元素执行相同的操作。
系统的吞吐量可以通过增加处理器的核心数量来增加。
处理速度高于SISD架构。
SIMD 的缺点
SIMD 架构的缺点如下:
- 处理器的多个核心之间存在复杂的通信。
- 成本比SISD架构高。
多指令单数据 (MISD) 流
具有 MISD 流的系统具有多个处理单元,通过对同一数据集执行不同的指令来执行不同的操作。以下是 MISD 的架构 -
MISD架构的代表尚未在商业上存在。
多指令多数据 (MIMD) 流
在采用MIMD架构的系统中,多处理器系统中的每个处理器可以对不同的数据集独立地并行执行不同的指令集。它与 SIMD 架构相反,在 SIMD 架构中,单个操作在多个数据集上执行。以下是 MIMD 的架构 -
普通的多处理器使用 MIMD 架构。这些架构基本上应用于计算机辅助设计/计算机辅助制造、仿真、建模、通信交换机等多个应用领域。
支持并发的内存架构
在使用并发和并行性等概念时,始终需要加快程序速度。计算机设计者发现的一种解决方案是创建共享内存多计算机,即具有单个物理地址空间的计算机,该空间由处理器具有的所有内核访问。在这种情况下,可以有多种不同的架构风格,但以下是三种重要的架构风格 -
UMA(统一内存访问)
在该模型中,所有处理器统一共享物理内存。所有处理器对所有存储器字具有相同的访问时间。每个处理器可以有一个私有高速缓冲存储器。外围设备遵循一组规则。
当所有处理器对所有外围设备具有平等的访问权限时,系统称为对称多处理器。当只有一个或几个处理器可以访问外围设备时,系统称为非对称多处理器。
非一致内存访问 (NUMA)
在 NUMA 多处理器模型中,访问时间随内存字的位置而变化。这里,共享内存物理上分布在所有处理器之间,称为本地内存。所有本地存储器的集合形成一个可以被所有处理器访问的全局地址空间。
仅高速缓存内存架构 (COMA)
COMA 模型是 NUMA 模型的专门版本。这里,所有分布式主存储器都被转换为高速缓冲存储器。