# 多处理器系统的基本概念

# 单指令流单数据流 (SISD) 结构

SISD 是传统的串行计算机结构,这种计算机通常仅包含一个处理器和一个存储器,处理器在一段时间内仅执行一条指令,按指令流规定的顺序串行执行指令流中的若干条指令。为了提高速度,有些 SISD 计算机采用流水线的方式,因此,SISD 处理器有时会设置多个功能部件,并采用多模块交叉方式组织存储器。

特性

  • 各指令序列只能并发、不能并行,每条指令处理一个两个数据
  • 不是数据级并行技术

硬件组成

  • 一个处理器 + 一个主存储器
  • 若采用指令流水线,需设置多个功能部件,采用多模块交叉存储器

# 单指令流多数据流 (SIMD) 结构

SIMD 是指一个指令流同时对多个数据流进行处理,一般称为数据级并行技术,这种结构的计算机通常由一个指令控制部件、多个处理单元组成。每个处理单元虽然都执行的是一条指令,但每个单元都有自己的地址寄存器,这样每个单元都有不同的数据地址,因此,不同处理单元执行的同一条指令所处理的数据是不同的。一个顺序应用程序编译后,可能按 SISD 组织并运行于串行硬件上,也可能按 SIMD 组织并运行于并行硬件上。该结构适合处理 for 循环处理数组,不适合处理 case 或 switch 结构

特性

  • 各指令序列只能并发、不能并行,但每条指令可同时处理很多个数据
  • 是一种数据级并行技术

硬件组成

  • 一个指令控制部件 (CU)+ 多个处理单元 / 执行单元 (如 ALU)+ 多个局部存储器 + 一个主存储器
  • 每个执行单元有各自的寄存器组、局部存储器、地址存储器
  • 不同执行单元执行同一条指令,处理不同的数据

# 多指令流单数据流 (MISD) 结构

MISD 是指同时执行多条指令,处理同一个数据,实际上不存在这样的计算机。

# 共享存储多处理器系统 (MIMD)

SMP系统

例如:Intel i5,i7 处理器

特性

  • 各指令序列并行执行,分别处理多个不同的数据
  • 是一种线程级并行、甚至是线程级以上并行的技术

进一步分类

  • 多处理系统
    • 特性:各处理器之间,可以通过 LOAD/STORE 指令,访问一个主存储器,可通过主存相互传送数据
    • 硬件组成:
      • 一台计算机内,包含多个处理器 + 一个主存储器
      • 多个处理器共享单一的物理地址空间
  • 多计算机系统
    • 特性:各计算机之间,不能通过 LOAD/STORE 指令直接访问对方的存储器,只能通过 "消息传递" 相互传送数据
    • 硬件组成:
      • 由多台计算机组成,因此拥有多个处理器 + 多个主存储器
      • 每台计算机拥有各自的私有存储器,物理地址空间相互独立

# 向量处理机 (SIMD 思想的进阶应用)

特性

  • 一条指令的处理对象是向量
  • 擅长对向量型数据并行计算、浮点数运算,常被用于超级计算机中,处理科学研究中巨大运算量

硬件组成

  • 多个处理单元,多组 "向量寄存器"
  • 主存储器采用 "多个端口同时读取" 的交叉多模块存储器
  • 主存储器大小限定了机器的解题规模,因此要有大容量的、集中式的主存储器

# 共享内存多处理器 (SMP)

多处理器系统 (简称)

  • 多个处理器共享一个主存储器
  • 多个处理器共享单一的地址空间,都可以通过 LOAD、STORE 指令访问共享的主存储器

# 多核处理器

  • 一个 CPU 芯片中包含了多个处理器,即多个核,因此通常也称为片级多处理器
  • 所有核共享一个 LLC (Last-Level Cache),并共享主存储器

# 硬件多线程的基本概念

细粒度多线程粗粒度多线程同时多线程 (SMT)
指令发射各个时钟周期,轮流发射多个线程的指令连续几个时钟周期,都发射同一线程的指令序列、流水线阻塞时,切换另一个线程一个时钟周期内,同时发射多个线程的指令
线程切换频率每个时钟周期切换一次线程只有流水线阻塞时才切换一次线程NULL
线程切换代价高,需要重载流水线NULL
并行性指令级并行,线程间不并行指令级并行,线程间不并行指令级并行,线程级并行

三种示例