← 返回学习笔记

Lecture 22:知识 - 多处理器

408 学习笔记:Lecture 22:知识 - 多处理器。保留原有知识内容、公式与图示;有对应原件时提供查看和下载入口。

本页目录

描述:多处理器的判断先看“有几条指令流、处理几份数据”,再看存储器是否共享。多核属于 MIMD;向量处理器属于 SIMD;硬件多线程并不等于多核。

5.1 Flynn 分类:指令流与数据流

Flynn 分类以同时存在的指令流数和数据流数划分计算机结构。这里的“流”强调控制/处理对象的并行关系,不应把“有多条流水段”误判为多指令流。

类别 指令流 数据流 核心含义与典型场景
SISD 1 1 单处理器按顺序执行一条指令流,处理一份数据
SIMD 1 多 一条指令同时作用于许多独立数据,属数据级并行
MISD 多 1 多条指令处理同一数据,通常认为没有实际通用计算机实例
MIMD 多 多 多个处理器/线程执行各自指令序列并处理各自数据

5.1.1 SISD:单指令流、单数据流

SISD 是传统的单指令流计算机结构,通常由一个处理器控制一条程序指令流并处理一份数据流。分类依据是逻辑指令流数量,不是“芯片里同一时刻只能有一条在途指令”。

  • 为提高性能,SISD 机器仍可有多个功能部件、采用指令流水线、超标量执行,或把主存组织为多模块交叉存储;多条来自同一指令流的指令可以重叠或并行执行,这些指令级并行优化并不会自动把它变为 SIMD/MIMD。
  • 判断点:只要体系结构仍由一条逻辑指令流控制一份数据流,就归入 SISD;不能按“流水段数、功能部件数、每周期发射数”机械分类。

5.1.2 SIMD:单指令流、多数据流

SIMD 由一个指令控制部件向多个处理单元发出同一条指令。在源 PDF 的阵列处理机模型中,各处理单元可有自己的地址寄存器,因而能访问不同地址、处理不同数据;现代向量/SIMD ISA 也可通过向量寄存器、步长或掩码组织各数据元素,不要求物理上每个通道都暴露独立地址寄存器。

  • 本质是数据级并行:例如 16 个 ALU 同时对 16 对数据做加法,一条 SIMD 指令的时间内即可完成 16 路相同运算。
  • 特别适合数组 for 循环、图形渲染、向量/矩阵和大量浮点数据的同构运算。
  • case、switch 或条件分支使不同数据元素采取不同路径时,会出现分歧;若硬件以掩码分批执行各路径,部分通道会暂时闲置,效率可能明显下降。下降程度取决于数据分布、掩码和具体实现,不能写成任何分支都必然“效率最低”。
  • 一个顺序程序可以编译后在串行 SISD 硬件上运行,也可能被向量化后在 SIMD 硬件上运行;分类看运行时组织,而非源程序表面是否有循环。

5.1.3 MISD 与 MIMD

MISD 指多条指令流同时处理同一数据流。教材中通常认为不存在这样的实际通用计算机结构,考试主要用于与其余三类对照。

MIMD 指多个指令序列并行执行,分别处理多个不同数据流,属于线程级并行或更高层次的并行。

  • 多核处理器属于 MIMD:不同核心可以执行不同线程/进程的不同指令,处理不同数据。
  • 题干出现“多个处理器同时执行多条不同指令、处理多份不同数据”,直接判断为 MIMD;2022 年真题中多核处理器即按此判断。

5.2 MIMD 的存储组织:多处理器与多计算机

MIMD 还需按物理地址空间和通信方式区分共享存储与分布式存储。

系统 组成 地址空间 处理器/计算机间通信
多处理器系统 多个处理器 + 共享存储系统 单一共享物理地址空间 可用 LOAD/STORE 访问共享地址,从内存传递数据
多计算机系统(分布式系统) 多台计算机,各有处理器和主存 每台机器私有,物理地址相互独立 不能用 LOAD/STORE 直接访问对方存储器,只能消息传递

5.2.1 共享存储多处理器 SMP

共享存储多处理器让多个处理器共享单一物理地址空间。源 PDF 将其记作 SMP(Shared Memory Multiprocessor);在更广泛的体系结构资料中,SMP 更常展开为 Symmetric Multiprocessing/Multiprocessor,还强调各处理器地位对称。408 题目若沿用课件口径,核心判断仍是处理器能否用普通 LOAD/STORE 访问共享地址空间。共享内存可由一个或多个物理内存模块组成,NUMA 机器也可能提供全局共享地址空间。

  • 优点:共享数据的编程模型直接,通信可通过读写共享变量完成。
  • 需要关注:多个处理器可能同时访问同一内存位置,因此需要同步机制;多级 Cache 下还要由硬件/协议保持缓存数据的一致性。
  • 不要把“共享物理地址空间”理解成每个处理器只有一个寄存器组;每个处理器仍有自己的执行部件、寄存器状态和可能的私有 Cache。

5.2.2 多核处理器

多核处理器是把多个处理器(核)集成在同一 CPU 芯片内,也称片级多处理器。许多设计让若干核心共享最后一级缓存 $LLC$(Last-Level Cache)并共享主存,但也可能按核心簇/芯粒设置多个 LLC,甚至采用不同的缓存拓扑;“共享同一个 LLC”不是多核的定义条件。

  • 多核是物理集成形态,不是 Flynn 分类本身;在通常能运行不同线程的意义下,它属于 MIMD。
  • SMP 可以由多个独立 CPU 构成,也可以由一个多核芯片构成;“多核”和“SMP”常相关,但概念层次不同。

5.3 向量处理器

向量处理器以向量为一条指令的处理对象,擅长向量型数据的并行计算和浮点运算,常用于科学计算与超级计算机场景。

  • 组成:多个处理单元、多组向量寄存器。
  • 为持续供给多个处理单元,存储系统需要足够带宽;多端口或交叉多模块存储器是可选的实现方式,也可由缓存、缓冲等配合供数。不能把“主存必须多端口”当成向量处理器的定义条件。
  • 向量处理器执行一条向量操作指令而作用于许多元素,故属于 SIMD;它不是“多条不同指令分别处理向量”的 MIMD。

题型:#体系结构分类与系统辨析

第一部分:解题方法

  1. 先圈出“同一条/多条指令”和“一份/多份数据”两个关键词,按 Flynn 表确定 SISD、SIMD、MISD、MIMD。
  2. 再问处理单元是否能直接通过 LOAD/STORE 访问同一主存:能则是共享存储多处理器;不能且靠消息传递则是多计算机系统。
  3. “同芯片多个核”描述的是多核;“共享单一物理地址空间”描述的是 SMP;两者不能互相替换为定义。

第二部分:典型辨析

  • 16 个 ALU 在一条指令控制下对 16 个像素加亮度:SIMD,因为指令相同、像素数据不同。
  • 4 个核心分别运行浏览器、编译器、音频线程和系统服务:MIMD,因为核心可各自取不同指令流。
  • 两台独立主机互发网络报文协作计算:分布式多计算机系统,不能以普通 LOAD/STORE 直接访问对方内存。
  • 单核支持每周期切换线程:仍可能是单核,不能仅凭“多线程”判为多核或多处理器。

5.4 硬件多线程

硬件多线程通过让一个处理器保存/切换多个硬件线程状态,提高流水线和功能部件利用率。它既能用于多核处理器,也能用于单核处理器,和“有几个核心”是两条独立维度。

类型 调度方式 目的/特点
细粒度多线程 每个时钟周期切换一次线程 用线程交替隐藏短期停顿,单周期通常只发射一个线程的指令
粗粒度多线程 连续多个周期发射同一线程;通常在较长时间的阻塞(如 Cache 未命中)时切换 降低频繁切换开销,适合较长延迟事件触发后换线程
同时多线程 SMT 多个线程的指令可在同一周期并行发射/执行 让同一核心的多个发射槽、功能部件由不同线程共同利用
  • 细粒度多线程通常在相邻周期从不同线程取指/发射,单个周期未必同时发射多个线程;SMT 才强调同一周期可从多个线程并行发射。
  • 硬件多线程主要隐藏访存等延迟,但多个线程仍会竞争 Cache、带宽和功能部件,因此并非线程数翻倍就性能翻倍。

相关知识

5.5 本节复盘

  • Flynn 分类:SISD 为单指令单数据,SIMD 为单指令多数据,MISD 为多指令单数据,MIMD 为多指令多数据。
  • 向量处理器和图形数组运算是 SIMD;多核处理器通常是 MIMD。流水线/多功能部件不自动改变 SISD 分类。
  • SMP 的多个处理器共享主存和单一物理地址空间,能用 LOAD/STORE 通信;分布式多计算机只能消息传递。
  • 多核指多个核集成在一块芯片,缓存共享拓扑依实现而定;硬件多线程可发生在单核或多核,分细粒度、粗粒度和 SMT。