目录
1.SISD(单指令流单数据流)
(1)特性
(2)硬件组成
2.SIMD(单指令流多数据流)
(1)特性
(2)硬件组成
3.MISD(多指令流单数据流)
4.MIMD(多指令流多数据流)
(1)特性
(2)多处理器系统
(3)多计算机系统
5.向量处理机(SIMD思想的进阶应用)
(1)特性
(2)硬件组成
6.多核处理器(multi-core)
1.SISD(单指令流单数据流)
(1)特性
各个指令只能并发、不能并行,每条指令只能处理一两个数据
机组中学习的单核CPU就是SISD,SI(单指令流):表示CPU同一时间段内只能处理一个指令序列,SD(单数据流):每个指令只能处理1~2个数据。
另外,单核处理器在一个时间段内只能处理一个进程或一个线程的指令序列,各个进程的指令序列只能并发执行,不能并行执行。
所以SISD不是数据级并行技术,因为同一时刻内只能处理1~2个数据,不能并行处理多个数据。
(2)硬件组成
由一个处理器与一个主存储器组成,在SISD系统中,若想进一步提高指令执行的效率,可以采用指令流水线,为了实现指令流水线,就需要设置多个功能部件,采用多模块交叉存储器(提升存储器的读写效率)。
若不了解多模块交叉存储器,可以看看这篇博客:http://t.csdnimg.cn/d8B6E
2.SIMD(单指令流多数据流)
(1)特性
各指令序列只能并发、不能并行(每个时刻只能有一条指令执行),但每条指令可同时处理很多个具有相同特征的数据。
如下图所示,CU将控制信号发给各个执行部件,每个执行部件都有各自的局部存储器,数据寄存器组以及地址寄存器组,这种系统可以对结构类似的大量数据进行相同处理。一条指令可以处理很多个数据。
例如:
1.某些显卡常采用SIMD,图像处理时,常对每个像素点进行完全一样的渲染(比如加个粉红色滤镜)
2.可用于优化for循环中对数组元素的重复处理
SIMD是一种数据级并行技术,指令的执行不是并行的,但是数据的处理是并行进行的。
(2)硬件组成
SIMD系统由以下部分组成:
1.一个指令控制部件(CU):负责翻译指令,并且根据指令发出相应控制信号。
2.多个处理单元/执行单元(如ALU):根据控制部件发出的信号,执行相应的操作。
3.多个局部存储器:一个执行单元会有自己的局部存储器,数据寄存器组,地址寄存器组(各个执行单元处理的数据存放的位置不同,因此需要各自独立的地址寄存器记录当前执行指令的存放位置)。
注:各个执行单元执行的是同一条指令,但是处理的是不同的数据。
4.一个主存储器
3.MISD(多指令流单数据流)
多条指令并行执行,处理同一个数据。现实中不存在这种计算机。因为只需要一条指令就可以处理这个数据,不必使用多条指令处理同一个数据。
4.MIMD(多指令流多数据流)
(1)特性
各指令序列并行执行,分别处理多个不同的数据。MIMD是一种 线程级并行(每个核可以运行各自的线程,多个线程可以并行运行)、甚至是线程级以上并行技术(进程级并行)。Intel i5,i7处理器使用的都是MIMD技术。
MIMD进一步分类可分为多处理器系统与多计算机系统:
(2)多处理器系统
•特性:
多处理系统的全称是共享内存多处理器(Share Memory multiProcessor,SMP)。各处理器之间,可以通过LOAD/STORE指令,访问同一个主存储器,可通过主存相互传送数据。
如下图所示,所有核心共享同一个物理地址,同时也共享最低一级的Cache(更高级别的Cache专属于某个特定的核)。所以核之间想相互传递数据,就可以通过最低一级的Cache进行,也可以通过主存储器进行。
•硬件组成:
对于多处理器系统,一台计算机内,包含多个处理器与一个主存储器,多个处理器共享单一的物理地址空间。
(3)多计算机系统
多计算机系统也称为消息传递系统,其与多处理系统的区别在于,各计算机之间的主存是相互独立的,不能通过LOAD/STORE指令直接访问对方的主存储器,只能通过“消息传递”相互传送数据。因此计算机之间的地址空间是相互独立的。
多个计算机组合后,可以协同工作。例如,将某一工作拆分为独立的子任务,分别交给计算机执行,那么这些子任务就可以并行地被处理,也就是指令流可以并行执行。在执行各自指令时,各个计算机处理的数据也各不相同,所以数据流也是并行的。
所以多计算机系统也可以实现MIMD(多指令流多数据流)技术。
•硬件组成:
多计算机系统由多台计算机组成,因此拥有多个处理器与多个主存储器,并且每台计算机拥有各自的私有存储器,物理地址空间相互独立。
5.向量处理机(SIMD思想的进阶应用)
(1)特性
向量处理机是用来专门处理向量的,一条指令的处理对象是“向量”。
在标量处理器中,要完成n维指令的相加,就需要进行n次的加法指令,而在向量向量处理器中,由于其处理的单元就是“向量”,所以只需要进行一次加法指令。
擅长对向量型数据并行计算、浮点数运算,常被用于超级计算机中,处理科学研究中巨大运算量。
例如:向量处理机的LOAD指令,可以将一个向量取到向量寄存器中;加法指令,可以实现两个向量相加应用于:向量计算、大量浮点数计算,空气动力学、核物理学、巨型矩阵计算问题。很多超级计算机如中国的“银河”就是向量处理器。
由于数据量大,通常主存储器需要支持多端口同时读取,这就能满足多个向量处理器大量的读取需求。同时采用多模块交叉存储器,能够提高数据的存取效率。
(2)硬件组成
由多个处理单元以及多组"向量寄存器"组成。主存储器应采用“多个端口同时读取”的交叉多模块存储器,主存储器大小限定了机器的解题规模,因此要有大容量的、集中式的主存储器。
6.多核处理器(multi-core)
多核处理器就是多处理器,只是命名角度不同而已。
多处理器系统,即共享内存多处理器强调的是各个处理器(核心)可以共享同一个主存。
并且多个处理器共享单一的地址空间,都可以通过LOAD、STORE指令访问共享的主存储器。
多核处理器强调的是,一个CPU芯片中包含多个处理器,即多个核(core),因此通常也称为 片级多处理器(Chip-LevelMultiProcessing,CMP)。意思是:一块芯片上集成了多个处理器,所有核共享一个LLC(Last-LevelCache,最低一级的Cache),并共享主存储器。