多处理器的基本概念
SISD、SIMD、SIMD、MIMD 的基本概念
- 基于指令流的数量和数据流的数量,将计算机体系结构分为 SISD,SIMD,MISD 和 MIMD
- 常规的单处理机属于 SSID,常规的多处理机属于 MIMD
单指令流单数据流结构 (SISD)
- 串行计算机结构
- 通常只包含一个处理器和一个存储器
- 有些使用流水线的方式,所以有时会设置多个功能部件,并采用多模块交叉方式组织存储器
单指令流多数据流结构(SIMD)
- 一个指令流同时对多个数据流进行处理,称为数据级并行技术
- 由一个指令控制部件、多个处理单元组成
- 每个处理单元虽然执行的都是同一条指令, 但每个单元都有自己的地址寄存器,就有了不同的数据地址
- 一个顺序应用程序被编译之后, 可能按照 SISD 组织并运行于串行硬件上,也可能按 SIMD 组织并运行于并行硬件上
- for 循环效率高,但 switch 或 case 时效率低
- 向量处理器也是 SIMD 的变体,是一种实现了直接操作一维数组(向量)指令集的 CPU
多指令流单数据流结构(MISD)
- 同时执行多条指令,处理同一个数据
- 实际上不存在这样的计算机
多指令流多数据流结构(MIMD)
- 同时执行多条指令,处理多个不同的数据
- 分为多计算机系统和多处理器系统
- 多计算机系统:
- 每个计算机节点都具有各自的私有存储器,并且具有独立的主存地址空间
- 不能通过存取指令来访问不同节点的私有存储器
- 而要通过消息传递进行数据传送,也称为消息传递 MIMD
- 多处理器系统:
- 共享存储多处理器(SMP)系统的简称
- 它具有共享的单一地址空间,通过访存指令来访问系统中的所有存储器,也称共享存储 MIMD
联系与区别
- SIMD 和 MIMD 是两种并行计算模式(多数据就是并行)
- SIMD 是一种数据级并行模式【数据级别】
- MIMD 是一种并行程度更高的线程级并行或线程级以上并行计算模式【线程级别】
硬件多线程
- 引入硬件多线程的目的:为了减少开销
- 硬件多线程中必须为每个线程提供单独的通用寄存器组、单独的程序计数器等
- 线程的激活只需要激活选中的寄存器,从而省略了与存储器数据交换的环节,节省了开销


细粒度多线程
- 多个线程之间轮流交叉执行指令,多个线程之间的指令是互不相关的
- 可以乱序并行执行
- 该方式下,处理器能在每个时钟周期切换线程
- 实现指令级并行
粗粒度多线程
- 连续几个时钟周期都执行同一线程的指令序列
- 仅在一个线程出现较大开销的阻塞时,才切换线程;如 Cache 缺失
- 当发生流水线阻塞的时候,必须清除被阻塞的流水线
- 新线程的指令开始执行前需要重载流水线,开销较上一种较大
- 实现指令级并行
同时多线程(SMT)
- 又叫做超线程技术 HT
- 在实现指令级并行的同时,实现线程级并行
多核处理器
- 将多个处理单元集成到单个 CPU 中,每个处理单元称为一个核(core)
- 每个核可以有自己的 Cache,也可以共享一个 Cache
- 所有核一般都是对称的,并且共享主存,因此多核属于共享存储的对称多处理器
- 在多核计算机系统中,若要充分发挥硬件的性能,必须采用多线程执行,使每个核在同一时刻都有线程在执行,这是真正的并行执行
共享内存处理器(SMP)
- 定义:具有共享的单一物理地址空间的多处理器
- 处理器通过存储器中的共享变量相互通信,所有处理器都能通过存取指令访存任何存储器的位置
- 即使这些系统共享同一个物理地址空间,它们仍然可以在自己的虚拟地址空间中单独地运行程序
- 单一地址空间的多处理器分类
- 统一存储访问(UMA)多处理器:
- 根据处理器与共享存储器之间的连接方式
- 分为基于总线、基于交叉开关网络和基于多级交换网络连接等几种处理器
- 每个处理器对所有存储单元的访问时间都是大致相同的
- 非统一存储访问(NUMA)多处理器:
- 某些存储器的访存速度较快,具体取决于哪个处理器退出访问请求及访问哪个字【由于主存被分割给了不同的处理器】
- 处理器中不带高速缓存时,被称为 NC-NUMA
- 处理器中带有一致性高速缓存时,被称为 CC-NUMA(某些访问请求要比其他的快)