Appearance
408 > ### 计算机组成原理 > #### CO-05-08 多处理器(SISD/SIMD/MIMD/多核/SMP)
一、定位信息
| 项目 | 内容 |
|---|---|
| 所属章节 | 第5章 中央处理器 |
| 知识单元编号 | CO-05-08 |
| 主题 | 多处理器(SISD/SIMD/MIMD/多核/SMP) |
| 考纲要求 | 了解Flynn分类法,理解多处理器系统的基本概念 |
| 历年考查频率 | 中频(选择题为主) |
| 预计分值 | 2分(选择) |
二、知识点讲解
1. Flynn分类法
Flynn分类法由Michael Flynn于1966年提出,按照指令流和数据流的数目对计算机体系结构进行分类。
两个维度:
- 指令流(Instruction Stream):机器执行的指令序列
- 数据流(Data Stream):指令流调用的数据序列
| 类型 | 全称 | 指令流 | 数据流 | 特点 | 典型代表 |
|---|---|---|---|---|---|
| SISD | 单指令流单数据流 | 1 | 1 | 传统顺序执行的单处理器 | 早期单核CPU |
| SIMD | 单指令流多数据流 | 1 | 多 | 一条指令同时对多个数据操作 | GPU、向量处理器、SSE/AVX |
| MISD | 多指令流单数据流 | 多 | 1 | 多条指令对同一数据操作 | 理论模型,实际很少见 |
| MIMD | 多指令流多数据流 | 多 | 多 | 多个处理器独立执行不同指令 | 多核CPU、多处理器系统 |
2. SISD(Single Instruction stream, Single Data stream)
SISD是最传统的计算机架构:
- 只有一个处理器
- 每个时钟周期执行一条指令
- 处理一个数据
- 采用串行方式执行指令
特点:
- 硬件结构简单
- 通过流水线技术可以提高性能
- 无法利用数据级并行
3. SIMD(Single Instruction stream, Multiple Data stream)
SIMD是一种数据级并行技术:
- 一条指令同时对多个数据元素执行相同的操作
- 适合处理数组运算、图像处理、科学计算等数据密集型任务
典型实现:
- 向量处理器:具有向量寄存器和向量ALU,一条向量指令可以处理整个向量
- GPU(图形处理器):数千个核心可以同时执行相同的指令
- SSE/AVX指令集:x86架构的SIMD扩展,一条指令可同时处理4-16个浮点数
- NEON指令集:ARM架构的SIMD扩展
SIMD的优势:
- 在相同时间内处理更多数据
- 硬件利用率高
- 特别适合规则的数据并行计算
SIMD的局限:
- 要求所有数据执行相同的操作
- 不适合分支密集的代码(不同数据可能需要不同操作)
- 需要数据对齐
4. MISD(Multiple Instruction stream, Single Data stream)
MISD是一种理论模型:
- 多个处理器对同一数据执行不同的操作
- 实际中极少有真正的MISD系统
- 某些容错系统(多处理器对同一数据做相同计算以检查错误)可视为MISD的变体
5. MIMD(Multiple Instruction stream, Multiple Data stream)
MIMD是最通用的并行计算架构:
- 多个处理器独立执行不同的指令,处理不同的数据
- 每个处理器有自己的程序计数器和寄存器组
- 处理器之间通过共享存储器或消息传递进行通信
MIMD的两种主要形式:
| 对比维度 | 共享存储多处理器(SMP) | 分布式存储多计算机 |
|---|---|---|
| 存储器组织 | 所有处理器共享统一地址空间 | 每个处理器有独立的本地存储器 |
| 通信方式 | 通过共享变量(读写共享内存) | 通过消息传递(发送/接收消息) |
| 编程难度 | 相对简单(共享内存模型) | 较复杂(需要显式消息传递) |
| 可扩展性 | 受限于总线/内存带宽 | 可扩展性好 |
| 典型代表 | 多核CPU、对称多处理器 | 集群、超级计算机 |
| 通信延迟 | 低(内存访问延迟) | 高(网络通信延迟) |
6. 多核处理器(Multi-core Processor)
定义:在一个处理器芯片上集成多个独立的处理核心(Core)。
基本结构:
- 每个核心有自己的ALU、寄存器组、L1 Cache
- 所有核心通常共享L2/L3 Cache和主存
- 核心之间通过片上互连网络(如总线、环形互联、Mesh)通信
多核与多处理器的区别:
| 对比维度 | 多核处理器 | 多处理器系统 |
|---|---|---|
| 集成位置 | 同一芯片上 | 不同芯片上 |
| 核间通信 | 片上互连,速度快 | 系统总线/网络,速度较慢 |
| 共享资源 | 通常共享L2/L3 Cache | 通常共享主存 |
| 功耗 | 较低(片上通信省电) | 较高 |
| 成本 | 较低(单芯片) | 较高(多芯片+主板) |
| 典型产品 | Intel Core i7、AMD Ryzen | 服务器双路/四路系统 |
7. 对称多处理器(SMP, Symmetric Multi-Processing)
定义:多个处理器通过共享总线连接到共享存储器,每个处理器的地位是对称的(平等的)。
SMP的关键特征:
- 对称性:每个处理器地位平等,可以平等地访问所有内存和I/O设备
- 共享内存:所有处理器共享统一的物理地址空间
- 单一操作系统:由一个操作系统统一管理所有处理器
- 通过总线通信:处理器之间通过系统总线或交叉开关连接
SMP的性能瓶颈:
- 总线带宽:多个处理器竞争总线带宽
- 内存带宽:多个处理器同时访问共享内存
- Cache一致性:多个处理器的Cache中可能有同一内存地址的不同副本,需要维护一致性
8. Cache一致性问题
在多处理器系统中,每个处理器都有自己的Cache。当一个处理器修改了Cache中的数据时,其他处理器Cache中同一地址的旧数据就变得无效。这就是Cache一致性问题。
解决方案:
(1)监听协议(Snooping Protocol)
- 每个Cache控制器监听(snoop)总线上的所有访存操作
- 当检测到其他处理器修改了自己Cache中也有的数据时,将自己Cache中的数据标记为无效
- 典型协议:MESI协议(Modified/Exclusive/Shared/Invalid)
- 适合基于总线的多处理器系统
(2)目录协议(Directory Protocol)
- 使用一个集中式的目录记录每个内存块的状态和位置
- 当修改数据时,通过目录通知所有持有该数据副本的Cache
- 适合大规模多处理器系统
MESI协议的四种状态:
| 状态 | 含义 | 说明 |
|---|---|---|
| M(Modified) | 已修改 | 数据已被修改,与主存不一致,只有本Cache有此数据 |
| E(Exclusive) | 独占 | 数据与主存一致,只有本Cache有此数据 |
| S(Shared) | 共享 | 数据与主存一致,可能有多个Cache持有此数据 |
| I(Invalid) | 无效 | 数据无效,不能使用 |
9. 硬件多线程
为了提高单个处理器核心的利用率,现代处理器通常支持硬件多线程:
| 类型 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 细粒度多线程 | 每个时钟周期轮换执行不同线程 | 能有效隐藏长延迟操作 | 单个线程执行速度慢 |
| 粗粒度多线程 | 只在长延迟事件(如Cache缺失)发生时才切换线程 | 对单线程性能影响小 | 切换开销大 |
| 同时多线程(SMT) | 在同一个时钟周期内,发射多个线程的指令 | 充分利用功能单元 | 硬件复杂度高 |
Intel的**超线程技术(Hyper-Threading)**就是同时多线程(SMT)的一种实现,一个物理核心可以同时执行两个线程。
三、记忆辅助
Flynn分类口诀:"S单M多,I指令D数据。"SISD=单指令单数据,SIMD=单指令多数据,MISD=多指令单数据,MIMD=多指令多数据。
"SIMD一条指令打一片":SIMD的核心特点是一条指令同时处理多个数据,像机关枪扫射一样。GPU、向量处理器都是SIMD。
"MISD基本不存在":在Flynn四种分类中,MISD几乎没有实际应用,考试中很少考查,但需要知道它的定义。
MESI协议四状态记忆:"M脏E独S共I无"——Modified是脏数据(已修改),Exclusive是独占,Shared是共享,Invalid是无效。
SMP三要素:"对称+共享+单OS"——处理器对称平等、共享统一内存空间、由单一操作系统管理。
四、例题精解
例题1
题目:按照Flynn分类法,GPU(图形处理器)属于( )类型。 A. SISD B. SIMD C. MISD D. MIMD
四步解题:
第一步:审题——GPU的Flynn分类。
第二步:分析——GPU包含数千个小型处理核心,这些核心通常执行相同的指令(由一个指令单元控制),但对不同的数据进行操作。这是典型的"单指令流多数据流"特征。
第三步:验证——虽然现代GPU也支持一定程度的MIMD特性(如warp内的分支发散),但按照Flynn的经典分类,GPU的核心执行模型属于SIMD。
第四步:答案——选 B(SIMD)。
例题2
题目:在MESI协议中,当处理器P1要写入一个处于S(Shared)状态的Cache行时,需要执行的操作是( )。 A. 直接修改,状态变为M B. 先在总线上发送使无效信号,使其他Cache中该行变为I状态,然后修改,状态变为M C. 先将数据写回主存,再修改 D. 直接修改,状态变为E
四步解题:
第一步:审题——MESI协议中,从S状态进行写操作的过程。
第二步:分析——S状态表示数据在多个Cache中有副本,且与主存一致。当P1要写入时,必须先通知其他Cache将该行标记为I(无效),确保只有P1拥有有效副本,然后才能修改。
第三步:验证——这个过程称为"写使无效"(Write Invalidate),是MESI协议维护Cache一致性的核心机制。写入后,P1的Cache行状态变为M(已修改,与主存不一致)。
第四步:答案——选 B。
例题3
题目:下列关于多处理器系统的叙述中,正确的是( )。 A. 多核处理器的每个核心必须执行相同的程序 B. SMP系统中每个处理器都有独立的操作系统副本 C. SIMD适合数据级并行,MIMD适合线程级并行 D. 共享存储多处理器系统不存在Cache一致性问题
四步解题:
第一步:审题——考查多处理器系统的基本概念。
第二步:分析:
- A:多核处理器的每个核心可以执行完全不同的程序,核心之间是独立的。A错误。
- B:SMP由一个操作系统统一管理所有处理器,不是每个处理器有独立的OS。B错误。
- C:SIMD是一条指令处理多个数据,属于数据级并行;MIMD是多个处理器独立执行不同指令,属于线程级(或任务级)并行。C正确。
- D:共享存储系统中,多个处理器共享内存地址空间,每个处理器的Cache中可能有同一地址的不同副本,正是Cache一致性问题的主要来源。D错误。
第三步:验证——C的描述完全正确,SIMD和MIMD的并行层次不同。
第四步:答案——选 C。
五、考情分析
| 维度 | 说明 |
|---|---|
| 考查题型 | 选择题为主(概念辨析/分类判断) |
| 考查重点 | Flynn分类法、SMP特征、Cache一致性(MESI协议)、多核与多处理器的区别 |
| 命题趋势 | 近年408考试中此部分分值较低,但概念辨析题每年都会出现 |
| 分值预估 | 选择题2分 |
| 复习建议 | 重点掌握Flynn分类和SMP/MESI协议的基本概念,不需要深入计算 |
六、易错点
SIMD ≠ 多处理器:SIMD是一个处理器内部的数据并行机制(一条指令多个数据),不是多个处理器。不要将SIMD与MIMD混淆。
GPU不完全是SIMD:虽然GPU的核心模型是SIMD,但现代GPU支持warp内的分支(通过屏蔽线程实现),具有一定的MIMD特性。408考试中通常将GPU归类为SIMD。
SMP的"对称"是指处理器地位平等:不是指存储器对称。SMP中每个处理器可以平等地访问所有内存和I/O设备,没有主从之分。
多核 ≠ 多处理器:多核是单芯片多核心,多处理器是多芯片多CPU。虽然逻辑上类似,但在通信延迟、共享资源、功耗等方面有显著区别。
Cache一致性问题只在多处理器/多核系统中出现:单处理器系统中,Cache对程序员是透明的,不存在一致性问题。一致性问题的核心是多个Cache持有同一地址的不同副本。
MESI的E状态不是M状态:E(Exclusive)表示只有本Cache有此数据副本,且与主存一致;M(Modified)表示数据已被修改,与主存不一致。区别在于数据是否被修改过。
七、来源标注
| 来源 | 说明 |
|---|---|
| 主要教材 | 唐朔飞《计算机组成原理》第3版,第5章5.8节 |
| 辅助教材 | 袁春风《计算机组成与系统结构》第3版 |
| 考纲依据 | 全国硕士研究生招生考试计算机学科专业基础综合考试大纲(408) |
| 补充参考 | Patterson & Hennessy《计算机组成与设计》第6章;《计算机体系结构:量化研究方法》第4章 |