151 lines
5.8 KiB
Markdown
151 lines
5.8 KiB
Markdown
|
|
---
|
|||
|
|
tags:
|
|||
|
|
- 计算机系统结构
|
|||
|
|
- 重点复习
|
|||
|
|
- 并行处理
|
|||
|
|
- 多处理机
|
|||
|
|
create time: 2026-06-16 21:21
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 小题 10 — 并行计算机系统结构的分类
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
本题考查并行计算机系统结构的两大类型:**集中式共享存储结构**(Centralized Shared-Memory)和**分布式存储器多处理机**(Distributed-Memory Multiprocessor)的特点、区别及代表架构。
|
|||
|
|
|
|||
|
|
> [!tip] 考试重点
|
|||
|
|
> 重点掌握两种架构的**存储访问方式**、**可扩展性**和**典型代表**。SMP vs NUMA vs MPP vs Cluster 的对比是高频考点。
|
|||
|
|
|
|||
|
|
## 正文
|
|||
|
|
|
|||
|
|
### 一、并行计算机系统的基本分类
|
|||
|
|
|
|||
|
|
按照**存储器的组织方式**和**处理器间的通信方式**,并行计算机系统可分为两大类:
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TD
|
|||
|
|
ROOT["Parallel Computer Systems"] --> CS["Centralized Shared Memory"]
|
|||
|
|
ROOT --> DD["Distributed Memory"]
|
|||
|
|
|
|||
|
|
CS --> SMP["SMP: Symmetric Multiprocessor"]
|
|||
|
|
CS --> NUMA["NUMA: Non-Uniform Memory Access"]
|
|||
|
|
|
|||
|
|
DD --> MPP["MPP: Massively Parallel Processor"]
|
|||
|
|
DD --> Cluster["Cluster / MPP"]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 二、集中式共享存储结构
|
|||
|
|
|
|||
|
|
**核心特征**:所有处理器共享**一个统一的物理内存**,通过系统总线或交叉开关连接。
|
|||
|
|
|
|||
|
|
#### 2.1 SMP(对称多处理器)
|
|||
|
|
|
|||
|
|
| 特征 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| 存储视图 | 所有处理器看到**统一的地址空间**,访问任何内存单元的延迟**相同** |
|
|||
|
|
| 通信方式 | 通过 Load/Store 指令直接读写共享变量 |
|
|||
|
|
| 处理器数量 | 通常 **2~8 个**(受总线带宽限制) |
|
|||
|
|
| 一致性维护 | **监听协议**(Snooping Protocol),如 MSI、MESI |
|
|||
|
|
| 缓存一致性 | 硬件自动维护,程序员无感 |
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TD
|
|||
|
|
P1["CPU 1 + Cache"] --> BUS["System Bus"]
|
|||
|
|
P2["CPU 2 + Cache"] --> BUS
|
|||
|
|
P3["CPU 3 + Cache"] --> BUS
|
|||
|
|
P4["CPU 4 + Cache"] --> BUS
|
|||
|
|
BUS --> MEM["Shared Memory"]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 2.2 NUMA(非统一内存访问)
|
|||
|
|
|
|||
|
|
| 特征 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| 存储视图 | 统一地址空间,但**本地内存访问快,远程内存访问慢** |
|
|||
|
|
| 通信方式 | 同样通过 Load/Store,但远程访问延迟更高 |
|
|||
|
|
| 处理器数量 | 可扩展到 **数十个** |
|
|||
|
|
| 一致性维护 | 目录协议(Directory Protocol)或增强型监听协议 |
|
|||
|
|
| 拓扑结构 | 每个处理器有**本地内存**,通过互连网络连接 |
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph LR
|
|||
|
|
subgraph Node1["Node 1"]
|
|||
|
|
CPU1["CPU"] --- LM1["Local Memory"]
|
|||
|
|
end
|
|||
|
|
subgraph Node2["Node 2"]
|
|||
|
|
CPU2["CPU"] --- LM2["Local Memory"]
|
|||
|
|
end
|
|||
|
|
subgraph Node3["Node 3"]
|
|||
|
|
CPU3["CPU"] --- LM3["Local Memory"]
|
|||
|
|
end
|
|||
|
|
Node1 <-->|"Interconnect"| Node2
|
|||
|
|
Node2 <-->|"Interconnect"| Node3
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
> [!question] SMP 和 NUMA 都是共享内存,区别是什么?
|
|||
|
|
> SMP 中所有内存的访问延迟**完全相同**(Uniform),适合小规模系统。NUMA 中本地内存访问快、远程访问慢(Non-Uniform),适合更大规模系统。NUMA 是 SMP 的扩展——当处理器数量增加到总线无法承载时,就需要将内存分布到各处理器附近。
|
|||
|
|
|
|||
|
|
### 三、分布式存储器多处理机
|
|||
|
|
|
|||
|
|
**核心特征**:每个处理器有**独立的本地内存**,处理器之间通过**消息传递**(Message Passing)通信。
|
|||
|
|
|
|||
|
|
#### 3.1 MPP(大规模并行处理器)
|
|||
|
|
|
|||
|
|
| 特征 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| 存储视图 | 每个节点有**独立的地址空间** |
|
|||
|
|
| 通信方式 | 通过 **MPI** 等消息传递库发送/接收数据 |
|
|||
|
|
| 处理器数量 | **数千到数万** |
|
|||
|
|
| 一致性维护 | **无需**——程序员显式管理数据分布和一致性 |
|
|||
|
|
| 典型代表 | 超级计算机(如 Summit、Fugaku) |
|
|||
|
|
|
|||
|
|
#### 3.2 Cluster(集群)
|
|||
|
|
|
|||
|
|
| 特征 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| 存储视图 | 每个节点是独立的计算机,有独立的 OS |
|
|||
|
|
| 通信方式 | 通过**高速网络**(如 InfiniBand)和消息传递 |
|
|||
|
|
| 处理器数量 | **数千到数万** |
|
|||
|
|
| 一致性维护 | **无需**——完全由程序员管理 |
|
|||
|
|
| 典型代表 | Google 集群、HPC 集群 |
|
|||
|
|
|
|||
|
|
### 四、两种架构的全面对比
|
|||
|
|
|
|||
|
|
> [!abstract]- 答案
|
|||
|
|
>
|
|||
|
|
> | 对比维度 | 集中式共享存储 | 分布式存储器多处理机 |
|
|||
|
|
> |----------|:--------------:|:--------------------:|
|
|||
|
|
> | **存储视图** | 统一地址空间 | 独立地址空间 |
|
|||
|
|
> | **通信方式** | Load/Store(隐式) | 消息传递 MPI(显式) |
|
|||
|
|
> | **一致性** | 硬件维护(监听/目录协议) | 程序员管理 |
|
|||
|
|
> | **可扩展性** | 差(< 64 处理器) | 好(数千处理器) |
|
|||
|
|
> | **编程难度** | 低(共享变量编程) | 高(需显式通信) |
|
|||
|
|
> | **典型规模** | 2~64 处理器 | 数百~数万处理器 |
|
|||
|
|
> | **代表架构** | SMP、NUMA | MPP、Cluster |
|
|||
|
|
|
|||
|
|
| 对比维度 | 集中式共享存储 | 分布式存储器多处理机 |
|
|||
|
|
|:--------:|:--------------:|:--------------------:|
|
|||
|
|
| 数据访问 | 透明——直接访问内存地址 | 非透明——需 Send/Receive |
|
|||
|
|
| 网络延迟 | 低(总线/交叉开关) | 高(需经过多级互连) |
|
|||
|
|
| 硬件成本 | 低~中 | 高(需高速互连网络) |
|
|||
|
|
| 适用场景 | 通用服务器、小型数据中心 | 超算、大规模数据分析 |
|
|||
|
|
|
|||
|
|
### 五、设计权衡
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
graph TD
|
|||
|
|
SCALABILITY["Scalability"] -->|"SMP/NUMA"| SHARED["Shared Memory: Easy to Program"]
|
|||
|
|
SCALABILITY -->|"MPP/Cluster"| DISTRIBUTED["Distributed: Scales Better"]
|
|||
|
|
|
|||
|
|
SHARED --> SHARED_COST["Cost: Cache Coherence Hardware"]
|
|||
|
|
DISTRIBUTED --> DIST_COST["Cost: Programmer Effort"]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
> [!question] 未来的趋势是什么?
|
|||
|
|
> 现代超算普遍采用**混合架构**:节点内是 NUMA(共享内存),节点间是消息传递(分布式)。这样既利用了共享内存的编程便利性,又利用了分布式架构的可扩展性。
|
|||
|
|
|
|||
|
|
## 关联笔记
|
|||
|
|
- [[计算机系统结构/复习文档/多处理器与并行处理]]
|
|||
|
|
- [[小题1-冯氏分类法与并行度]]
|
|||
|
|
- [[总线与IO系统]]
|