多处理器的基本概念
1. 计算机体系结构
- 分类依据:根据指令流和数据流的数量关系,计算机体系结构可分为四种类型:SISD、SIMD、MISD、MIMD。
(1)SISD 单指令流单数据流

- 定义:任意时刻计算机只能执行单一指令操作单一数据。
- 特点:
- 传统桌面计算机处理文本编辑或简单图形操作时采用。
- 指令执行过程是串行的。
- 类比:如同单个厨师按食谱单独完成整个菜肴的制作过程。
(2)SIMD 单指令流多数据流

- 定义:一条指令同时操作多个数据
- 适用场景:
- 重复相同操作(如图像处理中的像素操作)
- 现代 GPU 渲染 3D 图形时处理顶点和像素
- 实现方式:通过指令控制部件指挥多个处理单元并行操作
- 类比:单个厨师指挥多个助手同时完成食谱不同部分的食材处理
(3)MISD 多指令流单数据流

- 定义:多条指令流同时操作同一数据
- 现状:
- 类比:多个厨师对同一份食材进行不同处理(如一个切菜一个腌制)
(4)MIMD 多指令流多数据流

- 定义:多个处理器同时执行不同指令序列处理不同数据
- 应用场景:
- 大型服务器处理多用户请求
- Web 服务器和数据库服务器
- 特点:各处理器独立执行指令流处理各自数据流
- 类比:多个厨师各自独立按不同食谱做不同的菜
(5)总结
- 核心区别:
- SISD:单指令单数据(串行处理)
- SIMD:单指令多数据(向量化处理)
- MISD:多指令单数据(理论存在)
- MIMD:多指令多数据(完全并行)
- 效率对比:SIMD 相比 SISD 可并行处理相同指令,效率更高

(6)向量处理器

- 本质:SIMD 的变体,专为复杂数学运算设计
- 特点:
- 处理数据量级远大于普通 SIMD
- 使用向量寄存器同时处理大量数据
- 工作方式:一次性对向量中所有元素执行相同操作
- 类比:厨师用超大炒锅同时翻炒所有食材
2. 线程
- 定义:操作系统中的基本执行单位
- 与进程关系:
- 注意:详细区别将在操作系统课程中讲解
3. 细粒度多线程
- 实现方式:处理器每个时钟周期轮换不同线程
- 优势:避免因单个线程阻塞导致资源闲置
- 调度机制:按固定时间片轮转执行各线程指令
4. 粗粒度多线程
- 实现方式:当前线程阻塞或完成后才切换
- 切换条件:等待 I/O 操作、长时间计算等资源延迟
- 特点:相比细粒度切换频率低,上下文切换开销小
5. 同时多线程
- 实现基础:多核处理器
- 特点:多个线程指令在同一时间内并行执行
- 资源利用:通过处理器内部资源共享和复用实现
6. 多核处理器

- 定义:单个 CPU 中集成多个处理单元(核)
- 特点:
- 现代应用:当前计算机普遍采用多核架构
7. 共享内存多处理器
- 别名:对称多处理器 (SMP)
- 基本特征:
- 多个相同处理器共享主存和 I/O 设备
- 通过高速总线互联
- 共享单一操作系统
(1)统一存储访问 UMA 多处理器
- 内存访问:
- 缓存问题:需特别注意各处理器中的 cache 的一致性
(2)非统一存储访问 NUMA 多处理器
- 内存分配:主存分割给不同处理器
- 访问特点:
- 访问本地内存更快(自身附近)
- 访问远程内存较慢(远程内存)
- 适用场景:需要大规模并行处理的系统