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