教材参考计算机组织与结构——性能设计(第九版)第14章
并行处理机分为四类:
- SISD Single Instruction Single Data stream
- SIMD Single Instruction Multiple Data stream
- MISD Multiple Instruction Single Data stream
- MIMD Multiple Instruction Multiple Data stream
一、SISD 单指令单一数据流
虽然只有一个处理器,但是可以使用流水线技术来提高并发程度。
只拥有一个处理器,单一的指令流,数据存储在单一内存中。
二、SIMD 单指令多数据流
可以读取多块局部的数据,虽然只有一条指令,但是该指令可以同时对多块的数据进行同时的处理。
可以想到这种处理器多用来做向量和矩阵的运算。
三、MISD 多指令单数据流
这种处理器只是理论上的,没有实际被使用过,可以不考虑。
四、MIMD 多指令多数据流
同时有多个指令在执行,并且处理不同的数据,需要多个处理器。
MIMD又可以分成两类:
-
紧耦合的共享内存,如SMP(对称多处理机)和NUMA(非统一内存访问)
-
松耦合的分布式内存,如Cluster(集群)
17.1 对称多处理机 symmetric multiprocessor
SMP的架构如下图所示:
SMP中包含了多个处理机,都拥有自己的cache,但是这些处理机是共享内存的,而内存共享的方式就是通过一个共享的总线,同时,也共享了IO。
之所以叫做对称,是因为这些处理机的性能都差不多,都有着相同的功能。
整个系统是被一个集成的操作系统所控制的,所以多个处理机之间能够很好地协作。
优点:
- 性能更好
- 容错能力:一个坏了不会使系统宕机
- 可以通过增加处理机来提高性能
- 灵活性好,可以根据需要来确定处理机个数
- 多个处理机对于用户而言是透明的。
缺点:
- 共享总线限制了系统的性能
- 要解决总线带来的性能降低,就要使用多级cache,减少从总线读数据的次数,但是会带来cache一致性问题
当然,也可以使用多端口内存(multiport)
共享内存的方式:
-
时分复用总线
- 优点:简单、灵活(扩展起来方便)、可靠
- 缺点:性能降低,要等待正在使用的用完,所以需要cache,但是带来了cache一致性问题
-
多端口内存
- 优点:性能更好,能够同时多个读取,可以配置某个端口只被一个处理器使用
- 缺点:控制复杂,cache一致性问题,需要写直达
多处理机的OS设计问题:
- 并发的处理机
- 调度
- 同步
- 内存管理
- 可靠性和容错
17.2 集群 Cluster
多个完整的计算机系统连接在一起,被看作是一个系统,这种就叫做集群,其中的每一个计算机系统都被称为一个节点。
集群的优点:
- 完全的可扩展,每一个节点都可以是多处理机系统
- 扩展起来容易,增加节点即可
- 可靠,容错率高
- 性能高且价格低
被动备份passive standby和活跃式的备份active secondary:被动备份也就是一个节点只用来做备份使用,周期性地进行备份,而活跃式的也进行任务的处理。
在集群的轻量级应用中,采用活跃式的,两台机器承担对等的工作。
集群OS设计问题:
- 出错管理
- 负载均衡(load balancing)
- 并行计算
17.3 非统一内存访问 NUMA
非统一的意思就是内存访问时间取决于处理器的内存位置。对于SMP而言,多个处理机访问内存的时间基本是相同的;对于Cluster而言,内存是非统一编址的,而NUMA是统一编址的。
由于需要访问非本地的内存,因此和内存位置就有关系了。
举个例子,比如2-3这个处理机需要访问789这个内存,那么就会去查目录,知道这个地址不在本地,而是在节点1的目录,这时候就发出一个请求,然后节点1接收到之后就应答,并把数据放到总线上传输,这样节点2就得到了数据,将数据放到总线上,然后处理机再拿数据。
CC-NUMA:cache coherent NUMA,有cache一致性的NUMA系统。
为什么需要NUMA?
- 对比SMP,SMP会受到总线的限制,导致处理机个数有限。
- 对比Cluster,集群的每个节点无法看到一个全局的内存,因此性能受限。
优点:
- 并行度更高
- 访问远端不会太频繁
缺点:
- 需要一个新的操作系统支持
- 可用性 依赖于具体的实现