Python - 系统和内存架构
在设计程序或并发系统时,需要考虑不同的系统和内存架构风格。这是非常必要的,因为一种系统和内存风格可能适合一个任务,但可能对其他任务容易出错。
支持并发的计算机系统架构
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 模型的专用版本。在这里,所有分布式主内存都转换为缓存内存。