Skip to content

多处理器的基本概念

考情分析

选择题偶尔考查,以概念辨析为主。Flynn 分类法的四种类型区分、硬件多线程三种方式的对比是常见考点,2022 年真题直接考过多处理器相关概念。

Flynn 分类法

根据指令流数据流的数量,Flynn 将计算机体系结构分为四类:

类型全称指令流数据流典型代表
SISD单指令流单数据流11传统单处理器
SIMD单指令流多数据流1向量处理器、GPU
MISD多指令流单数据流1理论存在,实际几乎没有
MIMD多指令流多数据流多核处理器、多处理器系统

SISD

传统的串行计算机,一个处理器 + 一个存储器,按指令流顺序逐条执行。部分 SISD 计算机采用指令流水线技术来提升性能,但本质上仍是单指令流。

SIMD

采用数据级并行技术:一个指令控制单元 + 多个处理单元,所有处理单元同时执行同一条指令,但各自操作不同的数据。

适用场景:规则、同构的数据处理(如数组运算)。一条 SIMD 指令可以在 16 个 ALU 中并行处理 16 对数据,效率极高。

局限:遇到条件分支(switch/case)时效率显著下降,因为各处理单元需要执行不同操作,难以保持同步。

向量处理器是 SIMD 的典型实现,通过专用指令直接操作向量(一维数组),以流水化方式批量处理,在数值模拟等规则计算场景中性能优势明显。

MISD

多个指令流同时处理同一数据流。理论上存在,但在通用计算机中几乎没有实际应用。

MIMD

同时执行多条指令,分别处理多个不同数据流,是目前主流的并行计算模型。MIMD 进一步分为两类:

子类型存储组织通信方式别称
多计算机系统每个节点有私有存储器,地址空间独立消息传递消息传递型 MIMD
多处理器系统共享全局地址空间共享存储(访存指令)共享存储型 MIMD

总结:SIMD 属于数据级并行,适用于规则数据处理;MIMD 支持线程级或任务级并行,并行程度更高,适用范围更广。

硬件多线程

传统 CPU 的线程切换需要保存/恢复寄存器上下文,开销很大。硬件多线程为每个线程配备独立的寄存器组和 PC,切换时只需激活对应线程的硬件状态,无须读写内存,大幅降低切换延迟。

三种实现方式:

细粒度多线程(Fine-grained)

每个时钟周期切换线程,交替执行不同线程的指令。

时钟 i  :发射线程 A 的指令 j, j+1
时钟 i+1:发射线程 B 的指令 k, k+1
时钟 i+2:发射线程 A 的指令 j+2, j+3
时钟 i+3:发射线程 B 的指令 k+2, k+3

优点:功能部件利用率高。缺点:单个线程的执行速度被拉低(每隔一个周期才轮到自己)。

粗粒度多线程(Coarse-grained)

连续执行同一线程的指令,仅当遇到长延迟事件(如 Cache 缺失)导致流水线阻塞时才切换线程。

时钟 i  :发射线程 A 的指令 j, j+1
时钟 i+1:发射线程 A 的指令 j+2, j+3 → 发现 Cache 缺失
时钟 i+2:线程调度,从 A 切换到 B
时钟 i+3:发射线程 B 的指令 k, k+1

切换时需要清空被阻塞的流水线并重新填充,切换开销大于细粒度多线程。

同时多线程(SMT / 超线程)

单个时钟周期内同时发射并执行来自多个不同线程的多条指令,既利用了指令级并行,又实现了线程级并行。

时钟 i  :发射线程 A 的指令 j, j+1 + 线程 B 的指令 k, k+1
时钟 i+1:发射线程 A 的指令 j+2 + 线程 B 的指令 k+2 + 线程 C 的指令 m

SMT 通常构建于超标量 + 乱序执行的微架构之上,通过共享执行单元和缓存,在维持高单线程性能的同时提升整体吞吐率。

Intel 的超线程(Hyper-Threading) 就是 SMT 的典型实现:一个物理核心维护两套线程状态部件(寄存器组、PC),而缓存和 ALU 等执行资源由两个逻辑核心共享,实际性能提升约 10%~30%。

三种方式对比

特性细粒度多线程粗粒度多线程同时多线程(SMT)
切换时机每个时钟周期长延迟事件(如 Cache 缺失)不切换,同时执行
同一周期执行的线程数11多个
切换开销极小较大(需清空流水线)无切换开销
并行层次线程级(时间交错)线程级(时间交错)指令级 + 线程级

多核处理器

多个独立处理核心集成在同一芯片上,也称片上多处理器(CMP)。

典型的 Cache 层次结构:

  • 每个核拥有私有的 L1 Cache(有时也包括 L2)
  • 多个核共享更高层级的 Cache(如 L3)
  • 所有核通过互连网络共享主存储器

多核 vs 单核多线程的本质区别:多核架构下,每个核独立运行一个线程,实现物理上的真正并行。而单核的细粒度/粗粒度多线程只是时间交错执行,任一时刻仅有一个线程在运行(SMT 除外)。

一个直观的类比:搬 4 块石头到马路对面(每块 1 分钟)。串行处理器需要 4 分钟;双核处理器相当于两个人同时搬,2 分钟;向量处理器(SIMD)相当于用长木板同时推 4 块,1 分钟。多核靠增加处理单元实现任务级并行,向量处理器靠单指令多数据实现数据级并行。

共享内存多处理器(SMP)

多个处理器共享统一的物理地址空间,任意 CPU 可通过普通访存指令访问内存中的任意位置,通过读/写共享变量进行通信。

根据内存访问延迟的特性分为两类:

UMA(统一存储访问)

所有 CPU 访问任意内存单元的延迟基本相同,与发起请求的 CPU 及目标地址无关。

NUMA(非统一存储访问)

内存访问延迟取决于请求 CPU 与目标内存的物理位置关系。主存被划分为多个区域,分别连接到不同的 CPU。

特性UMANUMA
内存控制器位置集中式(早期北桥架构)分布式(集成到各 CPU 内部)
访问延迟均匀本地内存快,远程内存慢
互连方式前端总线(FSB)高速互连总线(如 Intel QPI)
瓶颈总线争用数据布局敏感
可扩展性较差较好

NUMA 的出现是为了解决多核/多处理器系统中前端总线争用的性能瓶颈:把内存控制器集成到 CPU 内部,每个 CPU 直接连接一部分物理内存(本地内存),CPU 之间通过高速互连总线访问远程内存。

SMP 中的同步与一致性

多个 CPU 可能同时访问同一共享变量,必须引入同步机制保证原子性和数据一致性,常用方法是互斥锁

SMP 系统的 Cache 一致性问题比单处理器更严格:多个 CPU 的 Cache 可能同时缓存同一物理地址的副本,任意时刻所有副本必须保持一致。这由硬件一致性协议保障,通过传播写操作或无效化其他 CPU 中的副本来维护全局一致性。

考点清单

  • Flynn 分类法四种类型的区分:指令流数量 x 数据流数量
  • SISD 是传统单处理器,MIMD 是主流多处理器
  • SIMD 适合规则数据处理(向量处理器、GPU),遇条件分支效率下降
  • MISD 理论存在,实际几乎没有
  • MIMD 分为消息传递型(多计算机)和共享存储型(多处理器)
  • 硬件多线程三种方式:细粒度(每周期切换)、粗粒度(长延迟切换)、SMT(同时执行多线程)
  • 细粒度和粗粒度同一时刻只执行一个线程的指令,SMT 可同时执行多个线程的指令
  • Intel 超线程 = SMT,两套线程状态 + 共享执行资源,提升约 10%~30%
  • 多核处理器:私有 L1 Cache + 共享 L2/L3 Cache
  • UMA 访问延迟均匀,NUMA 本地快远程慢
  • SMP 中 Cache 一致性由硬件协议保障

真题练习