并行计算机体系结构(Parallel Computer Architecture, PCA)是指通过同时使用多个计算资源来提高计算性能的计算机体系结构。这些计算资源可以包括多个处理器、核心、计算单元等。PCA的核心目标是通过并行处理来加快任务的执行速度。

Flynn的分类法

Flynn的分类法是根据计算机指令流和数据流的数量来对计算机系统进行分类的一种方法,包括:

  • SISD(Single Instruction, Single Data):单指令流单数据流。这是最早期的计算机架构,每次只能执行一个指令对一个数据进行操作。这种模型的代表就是传统的串行计算机。
  • SIMD(Single Instruction, Multiple Data):单指令流多数据流。在这种模型中,一条指令可以同时作用于多个数据上。这种类型主要应用于对数据并行处理需求较高的场景,如图形处理。
  • MISD(Multiple Instruction, Single Data):多指令流单数据流。这种架构在实际中很少使用,因为其概念在实际应用中难以实现。
  • MIMD(Multiple Instruction, Multiple Data):多指令流多数据流。这是目前最常见也是应用最广泛的并行计算机架构,支持多核心或多处理器同时执行不同的指令和操作不同的数据,适用于大多数并行处理任务

MIMD实现方式

按处理器划分

SMP(Symmetric Multi-Processing)

  • 在SMP体系结构中,所有的处理器共享物理内存,它们通过一个统一的内存地址空间进行交互,这些处理器通常通过一个总线或者交换机相连。SMP的优势在于编程相对简单,因为所有的处理器都有相同的访问内存的能力和视图。然而,由于所有的处理器都必须通过同一个总线或交换机访问共享内存,所以当处理器数量增多时,总线或交换机会成为瓶颈,限制了系统的扩展性。

MPP(Massive Parallel Processing)

MPP是另一种并行计算机体系结构,每个处理节点都有自己的局部内存(节点私有内存),处理器之间通过网络进行通信。这种结构的优点是可以通过增加更多节点来扩展性能,每个节点操作自己的内存,不受其他节点的干扰,因此扩展性好。然而,由于内存被分散在不同的节点上,编程变得更加复杂,程序员需要管理数据在节点间的分布和通信。

DSM(Distributed Shared Memory)

内存组织:DSM的核心思想是将内存组织成单一的地址空间。尽管物理上内存是分布在不同的计算节点上的,DSM允许在逻辑上呈现为一个统一的内存空间,这使得编程变得更加简单,因为开发者可以像处理单个系统的内存一样来处理分布在多个节点上的内存。

一致性目录(DIR):为了维持缓存一致性,DSM系统通常引入了一致性目录(Coherence Directory)的概念。这是一种机制,用于跟踪哪个节点拥有哪部分数据的最新副本,以及哪些节点的缓存需要在数据被修改时更新。这对于保持系统中所有节点的内存视图一致性至关重要。

COW(Cluster of Workstations)

  1. 与DSM的比较

    • 内存空间:COW的每个节点都有自己的私有内存,与DSM的单一逻辑内存空间形成对比。这意味着在COW中,数据共享和通信需要通过网络明确进行,而不是像在DSM中那样,可以通过单一的逻辑地址访问。

    • 适用场景:COW由于内存空间的差异,更适合于可以明确分区处理的任务,其中每个节点可以独立工作,而不需要频繁地与其他节点共享大量数据。

  2. 与MPP的比较

    • 内存和通信:COW和MPP都是由多个节点组成,每个节点都有自己的私有内存,并通过网络相互通信。两者之间的主要区别可能在于它们的设计目的和使用的硬件类型。MPP系统通常是为了高性能并行计算而专门设计和构建的,具有高速的网络接口和通信机制,而COW则是利用现有的、相对标准的工作站或服务器通过网络连接起来,目的是通过组合这些资源来提供更强的计算能力。

    • 成本和灵活性:COW因为使用的是标准的工作站或服务器,因此在成本和灵活性方面可能有优势。它允许组织使用现有的硬件资源,并且可以根据需要轻松地扩展或缩减。而MPP系统则可能需要更大的初始投资,并且在扩展时也需要考虑到系统的整体架构。​​​​​​​

按访寸模型划分

五种常见的并行计算机访存模型:

1. UMA:

UMA是一种内存访问模型,在这个模型中,每个处理器访问任意内存位置的时间都是相同的。这意味着内存是“均匀”的,无论数据实际存储在哪个物理位置,每个处理器对内存的访问速度都是一致的。这种设计简单且容易理解,但随着处理器数量的增加,内存访问的瓶颈也会随之增加。

2. NUMA:

在NUMA架构中,不同处理器访问不同内存节点的速度是不一样的。如果一个处理器访问自己节点的内存(本地访问),会比访问其他节点的内存(远程访问)更快。NUMA系统通常需要操作系统和应用程序的支持,以优化内存访问模式并提高性能。分层内存访问模型是NUMA的一种变体,其中某些内存区域(比如CPU附近的缓存)可以更快地访问。

3. COMA(Cache-Only Memory Architecture):

COMA是一种特殊类型的NUMA,其中没有传统意义上的RAM,所有的内存都被看作是缓存。在这种架构中,数据通过一个分布式高速缓存目录来访问,而且因为缺乏传统意义上的内存,所以常见的缓存一致性问题不再适用,从而简化了体系结构设计。

4. CC-NUMA(Cache Coherent Non-Uniform Memory Access):

CC-NUMA是一种具有内存一致性特性的NUMA架构。在这种系统中,虽然内存访问速度是非均匀的,但系统通过缓存一致性机制确保了内存中数据的一致性,使得多个处理器可以有效地协作。

5. NORMA(No Remote Memory Access):

在NORMA系统中,每个节点都有自己的私有内存,节点之间不直接进行内存访问,而是通过消息传递来通信。这种设计有助于避免远程内存访问带来的延迟,但要求软件开发者要更加关注数据分布和消息传递的效率。COW(Cluster of Workstations)是NORMA概念的一种实现,它将多个独立的工作站通过网络连接起来,形成一个并行计算环境。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐