多处理器的基本概念

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(某些访问请求要比其他的快)