多处理器的基本概念
SISD 单指令流丹数据流
各指令序列只能并发,不能并行,每条指令处理一两个数据
不是数据级并行技术
硬件:由一个处理器和一个主存储器组成
若采用指令流水线,需要设置多个功能部件,采用多模块交叉存储
SIMD单指令流多数据流
各指令序列只能并发,不能并行,但是每条指令可同时处理多个具有相同特征的数据
是一种数据级并行技术
硬件:一个指令控制部件(CU)多个处理单元/执行单元(比如ALU)+多个局部存储器+一个主存储器
每个执行单元由各自的寄存器组,局部存储器,地址寄存器
不通执行单元执行同一条指令,处理不同数据
这个结构常用与古早的显卡
MISD多指令流单数据流
同一时间内多个指令并行执行,处理同一个数据,现实不存在这种计算机
MIMD多指令流多数据流
各指令序列可以并行执行,分别处理多个不同的数据
是一种线程级并行,甚至是线程级以上的并行技术
进一步分类还可以分为
多处理器系统
特点:多个处理器之间,可以通过load/store指令,访问同一个主存储器,可通过主存互相传输数据
硬件:一台计算机内,包含多个处理器和一个主存储器
多个处理器共享单一的物理地址空间
多计算机系统
各计算机之间,不能通过load/store指令直接访问对方的存储器,只能通过消息传递,互相传送数据
硬件:由多台计算机组成,有多个处理器+多个主存储器
每一台计算机拥有各自的私有存储器,物理地址相互独立(计算机网络)
向量处理机(SIMD变体)
一条指令的处理对象是“向量”
擅长对向量型数据并行计算,浮点数运算,常被用于超级计算机中,处理科学研究中巨大运算量
硬件:多个处理单元,多组向量存储器
主存储器应采用多个端口同时读取的交叉多模块存储器
主存储器大小限定了机器的解题规模,因此要有大容量的集中式主存储器
多处理器系统
多处理器系统也被叫做共享内存多处理器或者多核处理器
细粒度多线程 | 粗粒度多线程 | 同时多线程 | |
---|---|---|---|
指令发射 | 各个时钟周期轮流发射多个线程的指令 | 连续几个时钟周期,都发送同一个线程的指令序列,流水线阻塞时,切换到另一个线程 | 一个时钟周期内,同时发射多个线程的指令 |
线程切换频率 | 每个时钟周期切换一次线程 | 只有流水线阻塞时才切换一次线程 | |
线程切换代价 | 低 | 高,需要重新载入流水线 | |
并行性 | 指令级并行,线程间不并行 | 指令级并行,线程间不并行 | 指令级并行,线程间并行 |