5.5 多处理器的基本概念

Flynn 分类法(SISD、SIMD、MISD、MIMD)与向量处理器;硬件多线程(细粒度、粗粒度、同时多线程);多核处理器;共享内存多处理器 SMP 与 UMA/NUMA。

考查要求 ★★☆ 理解 SISD/SIMD/MIMD向量处理器细粒度/粗粒度/同时多线程多核处理器SMP 与 UMA/NUMA

Flynn 分类法

Flynn 按照指令流和数据流的多倍性,把计算机体系结构分为四类:

类型含义特点与例子
SISD单指令流单数据流传统的串行单处理器。一个处理器、一个主存;可以采用指令流水线、超标量等技术提高速度
SIMD单指令流多数据流一个指令控制部件,多个处理单元。各处理单元在同一条指令控制下,对不同的数据执行相同的操作,实现数据级并行。适合数组、向量运算等循环处理;如向量处理器、x86 的 SSE/AVX 指令
MISD多指令流单数据流多条指令同时对同一个数据流进行处理,实际上不存在这样的计算机
MIMD多指令流多数据流多个处理器各自执行不同的指令、处理不同的数据,实现线程级或更高级别的并行。分为多处理器系统(共享存储,通过共享变量通信)和多计算机系统(各有私有存储,通过消息传递通信)

向量处理器

向量处理器是 SIMD 的变体,是一种实现了直接操作一维数组(向量)指令集的 CPU。一条向量指令可以对一组数据执行相同的操作,例如一条指令完成两个 64 元素向量的逐元素相加。向量处理器设有多个向量寄存器,并采用流水化的向量功能部件;它省去了标量循环中大量的取指、译码和转移操作,访存也更有规律。

硬件多线程

在传统 CPU 中,线程切换要由操作系统保存和恢复上下文,开销很大。硬件多线程在一个处理器核中为每个线程提供独立的寄存器堆和 PC,线程切换由硬件完成,开销很小。这样,当一个线程因 Cache 缺失等原因阻塞时,处理器可以执行其他线程的指令,减少功能部件的空闲。

类型切换方式特点
细粒度多线程多个线程轮流交叉执行指令,每个时钟周期切换一次能隐藏短的和长的阻塞,但单个线程的执行被拖慢
粗粒度多线程仅在一个线程出现较大开销的阻塞(如 L2 Cache 缺失)时才切换单线程不会被拖慢;但切换时要排空流水线,不能隐藏短阻塞
同时多线程(SMT)在同一个时钟周期内发射多个不同线程的指令是超标量与多线程的结合,功能部件的利用率最高。Intel 的超线程(Hyper-Threading)技术就是 SMT
超标量(单线程)发射槽利用率 35%粗粒度多线程发射槽利用率 38%细粒度多线程发射槽利用率 48%同时多线程(SMT)发射槽利用率 90%线程 A线程 B线程 C空闲槽
4 发射处理器在 10 个时钟周期内的发射槽(横向:同一周期的 4 个发射槽;纵向:时间)

多核处理器

多核处理器是指把多个处理单元(核)集成到单个芯片中,每个核可以有自己的 L1 Cache,多个核通常共享 L2 或 L3 Cache 以及主存。各核可以并行执行不同的线程或进程,实现线程级并行。

与硬件多线程的区别:硬件多线程是一个核中的多个线程共享功能部件;多核是多个核各自拥有完整的功能部件,两者可以同时采用(如一个 4 核 8 线程的处理器)。

共享内存多处理器(SMP)

具有共享的单一物理地址空间的多处理器称为共享内存多处理器(SMP)。所有处理器通过存储器中的共享变量相互通信,都能通过存取指令访问任何存储单元。由于多个处理器可能同时访问同一个共享变量,需要同步机制(如加锁),且各处理器的 Cache 之间需要维护一致性。

按访存时间是否相同,SMP 又分为两类:

  • 统一存储访问(UMA)多处理器:每个处理器访问任何存储单元的时间大致相同;
  • 非统一存储访问(NUMA)多处理器:每个处理器有自己的本地存储器,访问本地存储器比访问其他处理器的存储器快。

即时练习

即时练习4 题
点击选项即可作答
  1. 1
    下列关于 SIMD 的叙述中,正确的是( )。
  2. 2
    下列关于多处理器系统的叙述中,错误的是( )。
  3. 3
    同时多线程(SMT)技术的特点是( )。
  4. 4
    下列关于硬件多线程的叙述中,错误的是( )。
学完了吗?

标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。