HPC系统体系架构
名词解释
HPC-High Performance Computing or High Performance Clustering
COW-Cluster of Workstations
NOW-Network of Workstations
PoP-Pile of PCs
HPS-High Performance Switch
MPP-Massi vely Parallel Processing 大规模并行处理
SMP-Symmetrical MultiProcessing 对称多处理
分布式计算与并行计算
分布式计算(Distributed Computing)是一门研究分布式系统的计算机科学,一个分布式系统有多台自治的计算机通过计算机网络联网组成,网络内的计算机(也叫节点)通过协作完成一个共同的任务。分布式计算也研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。
并行计算(Parallel Computing)这个词的出现比分不是计算稍晚,其定义和分布式计算的含义基本相同,也可以把并行计算说成是分布式计算的一种。分布式计算和并行计算没有严格意义上的定义,但业界一般认为分布式系统是一种松耦合(Loosly-coupled)架构,而并行计算(Massively Parallel)系统是一种紧耦合(Tighly-coupled)架构。
HPC系统体系架构
Flynn-Johnson分类法
有很多HPC体系架构分类方法,其中Michael Flynn的分类法在1996年提出后被大家广为接受。Flynn分类法是根据计算机指令对数据的处理方式进行分类的,共4种组合,即
SISD-Single Instruction, Single Data:就是一般的单CPU计算机,老一代的大型机、微机和工作站,现在大多数的PC都是这种架构。
MISD-Multiple Instruction, Single Data:这种计算机在市面上很少看到,在工业实时控制和信号处理系统的FPGA等ASIC芯片,或许可以算是MISD架构。
SIMD-Single Instruction, Multiple Data:所有的处理单元在给定的时钟周期都执行相同的指令,每一个处理单元可以同时处理不同的数据,最合适处理高贵度的问题,如图像处理等。
MIMD-Multiple Instruction, Multiple Data:这是目前大多数通用并行计算机采用的架构,包括大多数的MPP超级计算机,网格计算机、多核SMP计算机,以及采用多核CPU的单PC。
Flynn分类表述
MIMD的进一步细分,如下图:
MIMD进一步分类法
共享内存与SMP
共享内存(Shared Memory)的机器可以根据CPU对内存的存取方式分为两大类:UMA(Uniform Memory Access)和NUMA(Non Uniform Menory Access)。UMA和NUMA的一个区别是UMA架构中的CPU和内存之间没有独立的HPS高速连接网络。
UMA体系架构一般被用在SMP(对称多处理,Symmetrical MultiProcessing)计算机中。在SMP架构中,多个处理器与同一个集中的存储器相连,运行同一个操作系统,并且共享同一台计算机的所有其他资源。很显然,SMP的缺点是可伸缩性有限,因为在存储器接口达到饱和的时候,增加处理器并不能获得的更高的性能。
非均匀存储访问NUMA,属于分布式共享存储DSM(Distributed Shared Memory)架构,NUMA的物理内存分布在不同节点上,在一个处理器存取远程节点的数据,比存取同一点的局部数据路径远一些,时间长一些,所以叫非均匀存储访问。NUMA保持了SMP架构的单一操作系统、简便的应用程序编程模式及易于管理的特点,又继承了MPP模式的可扩充性,可以有效地扩充系统的规模,这也是NUMA的优势所在。
CC-NUMA(Cache Coherent Non-Uniform Memory Access)是NUMA的一种类型。Cache Coherent是指缓存中的数据和共享内存中的数据有专门的硬件来保持一致,不需要软件来保持多个数据复制的一致性,也不需要软件来实现操作系统与应用系统的数据传输。
COMA(Cache-Only Memory Architecture)从硬件上来说不完全是一种共享内存架构,他不通过互联设备是整个内存系统保持一致性,他的架构接近NUMA,但提供UMA那样的方便性。
分布式内存与MPP
分布式内存架构基于同一个总线(Interconnect Network)把所有的及其连接起来,共享内存架构与分布式内存架构的关键区别在于,在共享内存架构中,数据一致性由硬件专门管理,而在分布式内存架构中,节点之间的数据一致性由系统软件甚至是应用程序来管理,结果是应用编程模式完全不一样。
从逻辑上来说,共享内存架构的HPC计算机,不论其中CPU数量有多少,按照前文的说法,他都是一台“单机系统”,集中在一个紧凑的机构里,从虚拟化的角度来说,他可以运行一个Hypervisor。而分布式内存架构是一个“多机系统”,可以跨地域分布,其中的单机(节点)可以包含一个或多个共享内存的HPC计算机。
一个分布式内存架构的HPC计算机具有多个节点,每个节点都有自己的存储器,他可以是一个COW那样的松耦合、开放式分布式机群系统,也可以是一个紧耦合的MPP超级计算机。MPP体系结构由于没有硬件支持共享内存或高速缓存一致性的问题,所以比较容易实现大量处理器的链接,具有“无限”的可伸缩性,这也是为什么现代的TOP 500超级计算机大部分都采用MPP分布式内存架构的原因。
机群与集群
机群与集群这两个词都翻译自英文Cluster这同一个词,Cluster在英文中的确由多重含义,最主要的是两种:
一种是COW(Cluster of Workstation)中的Cluster及超级计算TOP500中的Cluster,这样的Cluster通过多台计算机完成同一个工作,达到更高的效率,对HA(High Availability)和RAS(Reliablity, Availability, Servicability),即高可用性和高可靠性的要求不是非常高,基本上是基于MPI/调度等软件的一个多机的简单整合和简单虚拟化,翻译成中文更确切的意思应该是“机群”。
另一种是指用在商业系统中的Cluster,或叫HA Cluster,是另一类技术打造的高可用性和高可靠性系统,例如,建立一个双机内容、工作过程等完全一样的系统,如果一台死机,另一台可以继续其作用,实现Fail-Over、Fail-Safe等容错和对用户的无缝、无间断服务功能。这种Cluster翻译成中文是“集群”,打造一个HA集群非常复杂,和开发TP(Transaction Processing)系统差不多,按照美国人的说法,那“Rocket Science“(尖端科学)。
Cluster 分为通过与异构两种,再同构系统中,所有的计算机都是同类,而在异构系统中,计算机可以是不同种类。Cluster按功能和结构还可以分成以下几类。
高可用性集群(HA Cluster):一般是指当集群中有摸个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响真个集群的运行。
负载均衡集群(Load Balancing Cluster):负载均衡集群运行时,一般通过一个或者多个前端负载均衡器,将工作负载分发到后端的一组服务器上,从而达到整个系统的高性能和高可用性。这样的计算机集群优势也被称为服务器群。一般高可用性集群和负载均衡集群会使用类似的技术。
高性能计算机群(HPC Cluster):HPC机群基于MPI/调度等软件,将计算任务分配到机群的不同计算节点而提高计算能力,主要应用在科学计算领域。
网格计算(Grid Computing):网格计算或网络集群是上述Cluster技术的提升。网格与传统Cluster的主要差别是网格可以是连接一组相互并不信任的计算机,他的运作更像一个计算公共设施而不是一个独立的计算机。
MPP, SMP, HA集群, COW机群对比表: