5.5 多处理器的基本概念
Flynn 分类法(SISD、SIMD、MISD、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 |
多核处理器
多核处理器是指把多个处理单元(核)集成到单个芯片中,每个核可以有自己的 L1 Cache,多个核通常共享 L2 或 L3 Cache 以及主存。各核可以并行执行不同的线程或进程,实现线程级并行。
与硬件多线程的区别:硬件多线程是一个核中的多个线程共享功能部件;多核是多个核各自拥有完整的功能部件,两者可以同时采用(如一个 4 核 8 线程的处理器)。
共享内存多处理器(SMP)
具有共享的单一物理地址空间的多处理器称为共享内存多处理器(SMP)。所有处理器通过存储器中的共享变量相互通信,都能通过存取指令访问任何存储单元。由于多个处理器可能同时访问同一个共享变量,需要同步机制(如加锁),且各处理器的 Cache 之间需要维护一致性。
按访存时间是否相同,SMP 又分为两类:
- 统一存储访问(UMA)多处理器:每个处理器访问任何存储单元的时间大致相同;
- 非统一存储访问(NUMA)多处理器:每个处理器有自己的本地存储器,访问本地存储器比访问其他处理器的存储器快。
即时练习
- 1下列关于 SIMD 的叙述中,正确的是( )。
- 2下列关于多处理器系统的叙述中,错误的是( )。
- 3同时多线程(SMT)技术的特点是( )。
- 4下列关于硬件多线程的叙述中,错误的是( )。
标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。