并行体系结构
一、并行体系结构的Flynn分类法
1. 单指令流,单数据流(SISD)
单处理器,即传统的、串行的冯·诺伊曼计算机
2. 单指令流,多数据流(SIMD)
同一条指令被多个使用不同数据流的多处理器执行,实现数据级并行
例如:向量计算机、阵列计算机
3. 多指令流,单数据流(MISD)
奇葩没有研究价值
4. 多指令流,多数据流(MIMD)
每个处理器取自己的指令并对自己的数据进行操作,实现线程级并行
例如:集群、片内多处理器(多核)
其中,MIMD计算机更加受到学术和商业上的关注,这是因为以下两点:
灵活性强:MIMD可以实现线程级并行机制,因此
(1)支持数据级并行:既可以作为单用户多处理器为单一应用程序提供高性能(为一个高负载程序提供高性能)
(2)支持任务级并行:也可以作为同时运行多个任务的多道程序多处理器系统使用(同时运行多个程序)
(3)甚至可以支持数据级和任务级两种并行的应用。
性价比高:能充分利用现有微处理器的性价比优势,多核芯片可以通过复制的方式,有效降低单处理器内核的设计成本。
二、MIMD分类
根据处理器间通信机制(传递数据所用的方法),MIMD还可以分为多处理器系统和多计算机系统
多处理器系统
多处理器系统是共享内存的计算机。多个处理器通过逻辑上共享的地址空间进行通信,换言之,CPU上运行的操作系统可以直接通过LOAD指令或者STORE指令访问其他远程CPU的内存字。
多计算机系统
多计算机系统是消息传递的计算机,多个处理器在逻辑上没有共享的地址空间,而是有多个私有的地址空间组成,这些地址空间在逻辑上是独立分散的,换言之,CPU只能通过显示发送消息并等待响应的方式与其他远程CPU进行通信。
多处理器和多计算机两种体系结构的差别
多处理器 | 多计算机 | |
---|---|---|
CPU间通信方式 | 共享内存(隐式地,通过load、store指令) | 消息传递(显式地,通过发送、接收消息的函数) |
地址空间 | 所有CPU共享一个单一的物理地址空间 | 每个CPU都有自己独立的物理地址空间 |
常见编程模型 | OpenMP编程模型 | MPI编程模型 |
三、多处理器系统
根据存储器组织方式或者说共享内存的实现方式,可以进一步把多处理器系统分为两类:集中式共享存储器系统结构和分布式存储器系统结构。
集中式共享存储器系统(Centralized Shared-Memory, CSM)
对于处理机数目较少的多处理机,各个处理机可以共享单个集中式存储器。当处理机数量很大时,由于访问冲突以及总线带宽的限制,访问延迟就会很大。
结构:多个处理器-Cache子系统共享同一个较大的物理存储器。
如何实现共享内存?因为多处理机物理上共享单个存储器,因此逻辑上的共享是自然而然的。
别称:因为只用一个单独的主存,而且这个主存对于各处理器的关系是对称的,所以各处理器访问这个主存的时间相同,所以这种结构有时被称为对称式共享存储器结构(Symmetric shared-memory MultiProcessor, SMP),或者一致性内存访问计算机(Uniform Memory Access, UMA)
ps:使用大容量Cache
对于共享存储器结构,存储器和总线的带宽往往是瓶颈,而大容量、多级Cache可以很大程度地降低对存储器和总线的带宽要求。所以共享存储器结构往往采用大容量Cache。
分布式共享存储器系统(Distributed Shared-Memory, DSM)
为了支持更多的处理机,存储器不能按照集中共享方式组织,而必须分布于各个处理机。
结构:由多个独立结构构成(称为
节点
),每个节点包含处理器、存储器、IO系统,各个节点通过互联网络连接。如何实现共享内存?物理上分开的多个存储器的地址空间组织成逻辑上共享的地址空间,即在这种机器中,两个不同处理器中相同的物理地址指向一个存储器中的相同位置。实现这一效果需要硬件支持复杂的处理器间数据通信,同时时延也更大。
别称:由于CPU对内存字的访问时间依赖于该内存字在存储器中的存放位置,所以也被称为非一致性内存访问计算机(NonUniform Memory Access, NUMA)
Aside:超节点
每个节点还可能包含较少数目(2~8)的处理器,这些处理器之间可采用另一种技术(如总线)互联形成簇,这样的节点叫做超节点。这可以视为分布式共享存储和集中式共享存储的混合。
这种将存储器分散到各个节点的结构有两个好处:
- 如果大多数的访问是针对本节点的局部存储器,可降低对存储器和互联网络的带宽要求。
- 对局部存储器的访问延迟低
但也有缺点:
- 处理器之间的通信较复杂
- 各处理器之间访问延迟较大
四、多计算机系统
多计算机系统类似于多处理器系统中的分布式共享存储器系统,只不过多处理器的地址空间并没有组织成逻辑上共享的地址空间,或许可以称为分布式非共享存储器系统,这些私有地址空间在逻辑上是分散的。即在这种机器中,两个不同处理器中相同的物理地址分别指向两个不同存储器中的不同位置。
每个节点本质上是一台独立的计算机
五、两种通信机制
前面提到,多处理器和多计算机的最主要区别就是通信机制的不同,多处理器采用共享内存通信机制,多计算机采用消息传递通信机制。
共享内存通信机制
由于共享地址空间,可利用Load和Store指令中的地址隐含地进行数据通信。
消息传递通信机制
由于有多个地址空间,数据通信要通处理器间显式地传递消息完成。
同步
异步