并行处理系统概述
- 并行处理的主要技术问题:
- 互连:如何实现将多个计算模块和多个存储模块进行互连,并通过控制这些模块的并行工作来提高处理速度
- 数据一致性:为加快数据处理的速度,通常利用程序访问的局部性特性,在不同计算模块中设置高速缓存,且这些不同的计算模块还可能设置共享的高速缓存和共享的主存储器。因此在并行处理系统中存在复杂的数据一致性问题
- 同步控制:需要对各个计算模块进行同步控制
- 任务划分
- 并行程序设计:需说明哪些处理逻辑段可以并行执行,哪些处理逻辑段之间有先后顺序关系等
- 资源调度和管理
- 容错性和安全性
- 并行处理系统的分类
- 按指令和数据的处理方式划分
- 按主存地址空间的访问方式划分
- 多计算机系统:具有多个私有地址空间的并行处理系统。每个计算节点具有各自私有的存储器,并各自有独立的主存地址空间
- 多处理器系统:即共享存储多处理器系统。每个处理器都可以通过load和store指令访问系统中的存储器,也称为共享存储系统
- 按存储访问时间是否一致划分
- 一致性内存访问(UMA)结构
- 非一致性内存访问(NUMA)结构:处理器对不同存储单元的访问时间可能不一致,访问时间与存储单元的位置有关(若是本地存储器访问时间就短,若是其他处理器所连接的存储器则访问时间就长)
- 按处理单元的位置及其互连方式划分
- 多核芯片(片级多处理器CMP):一个CPU芯片中包含多个处理单元(多个核),通常多核CPU芯片的核数为2、4、8等几种
- 众核芯片:在一个面向三维图形、视频和可视化处理的GPU芯片中,包含几百上千个简单核。众核GPU芯片着力于在众多的简单核上有效执行众多的并行线程,并在线程组之间对数据的并行处理进行优化
- 对称多处理器(SMP):将多个同类型的CPU通过总线互连,并等同地位地共享系统所有资源。即多个CPU对称工作,无主次或从属关系,是一种UMA结构处理器(因为每个CPU访问内存中的任何地址所需时间相同)。多核处理器系统、高档微机、工作站或服务器多用SMP结构
- 大规模并行处理机(MPP):以专用内联网络连接数量众多处理单元而构成的一种并行计算系统。如可通过专用互连网络将几百上千个对称多处理器连接成大规模并行处理机,众多SMP服务器协同工作,完成相同的任务,每个SMP服务器称为节点,每个节点只能直接访问自己的本地资源(内存、磁盘等)。
- 集群:指通过高性能网卡将若干普通PC或SMP服务器或工作站连接而成的并行处理系统。集群中的每个计算节点(PC、SMP或工作站)都有各自的内存储器和磁盘,主存地址空间都是计算节点各自私有的。因此集群是一种典型的紧密耦合的同构多计算机系统
- 网格:是指用因特网等广域网络连接起来的远距离分布的一组异构计算机系统构成的分布式并行处理系统。是一种松散耦合的异构多计算机系统。云计算服务器就是由网格发展而来的
即共享存储多处理器系统。每个处理器都访问一个全局的主存储器,因而每个处理器在执行指令时所产生的物理地址都属于同一个物理地址空间。
多处理器系统的硬件结构有三种:一致性内存访问UMA、非一致性内存访问NUMA和高速缓存一致的非一致性内存访问CC-NUMA
- UMA
- NUMA
- CC-NUMA
- 多核处理器:
- 基本思路:在一个CPU芯片中设计多个简单的处理器核,通过多个核的并行计算来提高计算性能。因此基于一个CPU芯片可以实现一个多处理器系统,基于多核芯片的处理器被称为片级多处理器CMP
- 硬件多线程技术:是一种共享单个处理器核内功能部件的技术。每个线程相当于一个指令序列,用于指令执行的功能部件和高速缓存在每个核内仅有一套。为了支持多线程并发执行,必须为每个线程提供单独的通用寄存器组和程序计数器等用于存放现场信息的资源,并提供快速的线程切换机制
有三种多线程实现方式:
- 细粒度多线程:处理器核能在每个时钟周期切换线程
- 粗粒度多线程:仅在某个线程出现较大开销的阻塞时才切换线程(如cache不命中)
- 同时多线程SMT:能在同一个时钟周期中,在不同的发射槽中发射不同线程中的指令。超线程(Intel)即为同时多线程
- 使用多核处理器或硬件多线程可能会带来新的性能干扰问题。同一个核心上的多个硬件线程之间会共享超标量处理 器中包括发射队列、ROB、访存队列、分支预测器核L1 cache等资源。当处理器核或线程的负载较高时,会在这些资源上产生竞争现象,竞争不到资源的处理器核或线程就会被阻塞而性能下降。
如对性能稳定性要求较高的场合,如双11,阿里在线购物的数据中心会面临巨大交易负载,为保证用户的交易体验,系统管理员都会提前制定严格的任务调度策略,避免将多个交易线程调度到同一个处理器核上从而带来干扰。