文章目录
- 一.多处理器系统
- (一)计算机体系结构分类
- 1.单指令单数据流SISD
- 2.单指令多数据流SIMD
- 3.多指令单数据流MISD
- 4.多指令多数据流MIMD
- (1)(共享内存)多处理器系统/多核处理器
- (2)多计算机系统
- (二)向量处理机
- 二.硬件多线程
- 1.细粒度多线程
- 2.粗粒度多线程
- 3.同时多线程SMT
一.多处理器系统
(一)计算机体系结构分类
基于指令流的数量和数据流的数量,将计算机体系结构分为SISD、SIMD、MISD和MIMD四类。常规的单处理器属于SISD,而常规的多处理器属于MIMD。
1.单指令单数据流SISD
Single instruction, Single data
SISD是传统的串行计算机结构,这种计算机通常仅包含一个处理器和一个存储器,处理器在一段时间内仅执行一条指令,按指令流规定的顺序串行执行指令流中的若干条指令。为了提高速度,有些SISD计算机采用流水线的方式,因此,SISD处理器有时会设置多个功能部件,并采用多模块交叉方式组织存储器。
各指令序列只能并发,不能并行,每条指令只能处理一两个数据,不支持数据级并行技术。
SISD由一个处理器和一个主存储器组成
2.单指令多数据流SIMD
Single Instruction Multiple Data
SIMD是指一个指令流同时对多个数据流进行处理,一般称为数据级并行技术。这种结构的计算机通常由一个指令控制部件、多个处理单元组成。每个处理单元虽然都执行的是同一条指令,但每个单元都有自己的地址寄存器,这样每个单元都有不同的数据地址,因此,不同处理单元执行的同一条指令所处理的数据是不同的。一个顺序应用程序编译后,可能按SISD组织并运行于串行硬件上,也可能按SIMD组织并运行于并行硬件上。
适合对结构类似的大量数据进行相同的处理。
如:将数据分块,将每块数据放入各个局部存储器处理,每个处理方式是相同的,CU只需发出相同的控制信号,使各个执行部件处理即可,通过并行的处理提高了效率。
SIMD在使用for循环处理数组时最有效。比如,一条分别对16对数据进行运算的SIMD指令,如果在16个ALU中同时运算,则仅需一次运算时间就能完成运算。SIMD在使用case或switch语句时效率最低,此时每个执行单元必须根据不同的数据执行不同的操作。
特点:各指令序列只能并发、不能并行,但每条指令可同时处理很多个具有相同特征的数据,是一种数据级并行技术。
硬件组成需要包含:一个指令控制器CU、多个处理单元/执行单元(如ALU)、多个局部存储器、一个主存储器。每个执行单元有各自的寄存器组、局部存储器、地址寄存器;不同执行单元执行同一条指令,处理不同的数据
3.多指令单数据流MISD
Multiple Instruction Single Data
MISD是指同时执行多条指令,处理同一个数据,实际上不存在这样的计算机。只是作为理论模型出现,没有投入到实际应用之中。
4.多指令多数据流MIMD
Multiple Instruction Multiple Data
MIMD是用于实现并行性的技术。在任何时钟周期内,不同的处理器可以在不同的数据片段上执行不同的指令(同时执行多个指令流),而这些指令流分别对不同数据流进行操作。
特点:各指令序列并行执行,分别处理多个不同的数据。是一种线程/进程级并行(线程级并行:每个核可以运行各自的线程,多个线程可以并行执行)
分类:
(1)(共享内存)多处理器系统/多核处理器
各处理器之间,可以通过LOAD/STORE指令,访问同一个主存储器,可通过主存相互传送数据。即多个处理器共享一个主存储器
共享内存多处理器的另一种命名方式为“多核处理器”,一个CPU芯片中包含多个处理器,即多个核。因此通常也称为片级多处理器CMP(一块芯片上集成了多个处理器)。所有核共享一个LLC(最低一级的Cache),并共享主存储器
硬件组成:多个处理器、一个主存储器。多个处理器共享单一物理地址空间
(2)多计算机系统
各计算机之间,不能通过LOAD/STORE指令直接访问对方的存储器,只能通过“消息传递”相互传送数据
硬件组成:多个计算机,即多个处理器+多个主存器。每台计算机拥有各自的私有存储器,物理地址空间相互独立。
(二)向量处理机
一条指令的处理对象是向量。擅长对向量型数据并行计算、浮点数运算,常被用于超级计算机中,处理科学研究中巨大运算量
硬件组成:多个处理单元、多组“向量寄存器”。主存储器应采用“多个端囗同时读取”的交叉多模块存储器。主存储器大小限定了机器的解题规模,因此要有大容量的、集中式的主存储器
二.硬件多线程
不支持多线程的处理器,同一时间段内,只能处理一个线程相关的代码。若有两个线程的代码需要运行,可以先将A通用寄存器和PC的值存入主存,再切换到B
支持硬件多线程的处理器。线程A放左边的寄存器组,线程B放右边的寄存器组,这样就不需要保存至主存
1.细粒度多线程
在第一个时钟周期内,将线程A的两条指令放入IR,两条指令并行运行。第二个时钟周期完成线程B的两条指令。即轮流发射各线程的指令(每个时钟周期切换一个线程)。指令级并行,线程间不并行。切换代价低。
2.粗粒度多线程
连续几个时钟周期,都发射同一线程的指令序列。流水线阻塞时,才切换另一个线程。因为需要重载流水线,所以切换代价高。同样,指令级并行,线程间不并行
3.同时多线程SMT
一个时钟周期内,同时发射多个线程的指令。指令级并行,线程级并行
总结