第3 章 特殊多处理机与多处理机实例 多处理机体系结构虽然复杂多样,但经过二十多年的研究与发展,也逐步形成了应用范 围广、体系结构相对稳定的多处理机。本章讨论了:多核处理器、机群多处理机、大规模并 行多处理机的组织结构与性能特点及其分类,多核处理器的发展缘由及其多线程超线程技 术,机群多处理机软件的组织结构及其单一系统映像,大规模并行多处理机软件的组织策 略。介绍了机群多处理机的关键技术、MPP的支持技术、各种典型多处理机的体系结构及 其节点与互连网络的组成结构。 3.1 高性能微处理器及其多线程 3.1.1 多核与多核处理器 1.多核处理器及其与多处理机的差异 多核处理器指在一个处理器中集成多个(两个或两个以上)运算核心或计算引擎,通过 任务划分来充分利用多个运算核心,并行处理多个任务。可见,核心可以认为是增强型运算 单元,核心与核心之间联系非常紧密。另外,也可以认为处理器核心是一个相对简单的单线 程微处理器或比较简单的多线程微处理器,多个微处理器就可以并行地执行程序代码,实现 线程级并行。所以,多核处理器又可以称为单芯片多处理器(chipmultiprocessors,CMP)。 最早的多核是双核,由IBM、HP、SUN 等支持RISC架构的高端服务器厂商提出。多核处 理器性能发挥的基础是多线程技术,如果运行单程序、处理单任务,在同频率时,多核处理器 与单核处理器的实际性能是一样的。 多核处理器与多处理机是不同的概念,多核处理器是一个处理器中包含多个共享多级 Cache的运算核心,一枚处理器芯片内部通过高速总线连接,使多个运算核心协同工作;多 处理机是一台处理机中包含多个处理机,处理机通过主板线路连接,使多个处理机交互 作用。 2.多核处理器的性能特点 由于多核处理器采用相对简单的微处理器作为处理器核心,使得多核处理器主要具有 以下几个显著的特点。 (1)控制简单容易实现。相对超标量结构与超长指令字结构,多核结构控制逻辑的复 杂性明显低得多,相应的多核处理器的硬件实现必然简单得多。 (2)高主频。由于多核结构的控制逻辑相对简单,包含极少的全局信号,因此线时延对 其影响比较小;在同等工艺条件下,多核处理器的硬件实现能够获得比超标量微处理器和超 98 高性能计算机体系结构 长指令字微处理器更高的工作频率。 (3)低通信时延。由于多个简单处理器集成在一枚芯片上,且共享多级Cache或主存, 多线程之间的通信时延会明显降低,当然这也对存储层次提出了更高要求。 (4)低功耗。通过动态调节电压/频率、负载优化分布等,可有效降低多核处理器功耗。 (5)设计与验证周期短。微处理器厂商一般采用现有的成熟单核处理器作为处理器核 心,从而可缩短设计和验证周期,节省研发成本,也便于扩展。 3. 多核处理器的分类 多核处理器可以按共享存储层次和处理器核是否相同来分类。 按共享存储层次来分,可以把多核处理器分为3种:共享一级Cache、共享二级Cache、 共享主存,这种分类侧重于存储层次的组织和处理器核的连接。在共享一级Cache的多核 处理器结构中,一级Cache由多个处理器核所共享,也就是处理器核在一级Cache这个层次 上相连接。在共享二级Cache的多核处理器结构中,每个处理器核拥有独立的一级Cache, 二级Cache由多个处理器核所共享,即处理器核在二级Cache这个层次上相连。在共享主 存的多核处理器结构中,每个处理器核不仅拥有独立的一级Cache,还拥有独立的二级 Cache,或存储系统中不设Cache,主存由多个处理器核所共享,即处理器核在主存这个层次 上相连接。若应用程序的通信量大时,共享一级Cache多核处理器结构的性能优于另两种 多核处理器结构;若应用程序的通信量小时,共享一级Cache多核处理器结构的性能与另两 种差不多。但共享一级Cache多核处理器结构的设计较为复杂,处理器核之间的耦合度比 较高,在处理器数目增加时可扩展性较差。 按处理器核是否相同来分,可以把多核处理器分为两种:同构的和异构的,这种分类 侧重于处理器核的结构与功能。同构多核处理器一般由通用处理器核组成,多个处理器 核执行相同或类似的任务,如Intel公司、AMD 公司推出的面向PC 的双核、4核、8核处 理器都属于同构多核处理器。异构多核处理器除含有通用处理器核作为控制、通用计算 之外,还集成DSP 、ASIC 、媒体处理器、VLIW 处理器等针对特定的应用来提高计算的 性能。 3.1.2 多核处理器产生的原因 1. 单核处理器的局限性 从2008 年开始,单核处理器基本停产,取而代之的是多核处理器。单核处理器的局限 性主要体现在以下几个方面。 (1)实现指令级的并行度有限。理想处理器指消除了所有指令级的并行约束,具有无 限发射指令的能力的处理器。当然,这种处理器是不可能出现的,也是难以实现的。指令级 并行约束是指令之间的相关性,相关性分析单靠静态编译分析是远远不够的,更多需要硬件 动态分析。用于存储被检测指令集合的窗口大小受限于存储容量、能够承受的比较次数、寄 存器的数目和有限的发射速率等,而窗口大小又直接限制了在给定时钟周期内处理指令的 数量。另外,一个时钟周期发射指令数量、功能单元及其时延时间与队列长度、寄存器文件 端口、对转移发射的限制、对存储器并行访问的限制和对指令提交的限制等都是影响指令级 并行的因素。 (2)处理器主频与主存、I/O访问速度的发展极不平衡。2007 年以前,处理器的主频每 第 3 章 特殊多处理机与多处理机实例 2年翻一番,而主存的访问速度每6年提高一倍、I/O的访问速度每8年提高一倍,这种不 平衡已经成为单核处理器性能提高的瓶颈。单纯依靠提高处理器主频来提升整机的性能已 经不可行,反而会造成效率降低,因为大部分时间CPU都在等待主存或I/O访问的返回才 能继续下一步的工作。 (3)频率已近极限、功耗大。单核处理器功耗有静态功耗与动态功耗之分,静态功耗随 晶体管的数量成比例增大,动态功耗与晶体管的切换次数与切换速率的积成正比。处理器 的频率越高,晶体管的切换次数与速率越大,动态功耗的比例越大。对于多发射处理器,相 关分析的逻辑开销增长比发射率的增长要快,发射速率峰值的增大同晶体管的切换次数成 正比。为了得到更高的性能,必然持续维持高逻辑开销和高发射速率,从而带来高动态功 耗。一般认为,当处理器主频提高到4GHz时,几乎接近目前集成电路制造工艺的极限,也 限制了超标量的宽度和超流水的深度。 (4)性价比变低。高频处理器使得设计和验证所花费的时间变得更长,设计对工艺要 求非常高、成品率较低、生产难度大,由此导致成本高,往往性价比较低。 2.多核处理器产生的基础 单核处理器的局限性是多核处理器产生的前提条件,技术发展和应用需求则是多核处 理器产生的基础和必然要求。 (1)门时延逐渐缩短,线时延不断增长。随着VLSI工艺技术的发展,晶体管特征尺寸 不断缩小,使得晶体管门时延不断减少,但互连线时延却不断变大。当芯片的制造工艺达到 18μm甚至更小时,全局连线时延已经超过门时延,成为限制电路性能提高的主要因素。 在这种情况下,由于多核处理器是分布式结构,全局信号较少,与集中式结构的超标量处理 器结构相比,克服线时延影响更具优势。 0. (2)符合Polack规则。按照Polack规则,处理器性能的提高与其复杂性的平方根成 正比。如果一个处理器的硬件逻辑提高一倍,至多能提高性能40%;而如果采用两个简单 的处理器构成一个相同硬件规模的双核处理器,则可以获得70%~80%的性能提升,同时 面积也同比缩小。 (3)有效降低功耗。随着工艺技术的发展和芯片复杂性的增加,芯片的发热现象日益 突出。多核处理器中单个核的速度较慢,处理器消耗的能量较少,产生的热量也较少。同 时,原来单核处理器中增加的晶体管可用于增加多核处理器的核。在满足性能要求的基础 上,多核处理器通过关闭(或降频)一些处理器核等低功耗技术,可以有效地降低功耗。 (4)有效降低设计成本。随着处理器结构复杂性的不断提高和人力成本的不断攀升, 处理器设计成本随时间呈线性甚至超线性地增长。多核处理器通过处理器的复用,可以极 大降低设计的成本,同时模块的验证成本也显著下降。 (5)体系结构发展的必然。超标量结构和超长指令字结构已广泛应用于高性能微处理 器,但它们都遇到了难以逾越的障碍。超标量结构使用多个功能部件并行处理多条指令,实 现指令级并行,但控制逻辑复杂、实现困难,研究表明:超标量结构的并行度一般不超过4。 超长指令字VLIW结构使用多个相同功能部件执行一条超长的指令,但也有两大问题:编 译技术支持和二进制指令代码的兼容。而多核处理器可以充分利用应用程序的指令级与线 程级并行性,从而可显著提高性能。 100 高性能计算机体系结构 3.1.3 多线程与超线程 1.线程及其与进程的区别 在一些应用程序中,蕴藏大量任务或作业等高级别并行,而开发指令级并行的方法对任 务或作业的并行无能为力。例如,在联机事务处理系统中,查询操作和更新操作常常互不相 关,可以并行处理。因此, 提出线程并行(hedlvl 便在指令并行与任务或作业并行之间, traeeparalelism,TLP )。线程指可以独立执行的顺序控制的程序段,它拥有自己的指令与数据, 且具备执行的所有条件(指令、数据、状态等)及其资源(PC 、寄存器组、堆栈等)。一个线程 可以是并行程序的一部分,也可以是一个独立的程序。 线程与进程不同,进程是整个程序或部分程序的动态执行实例,线程是进程内部的一个执 行单元,线程比进程“轻巧”得多。一个进程包含一个到多个线程,不同进程有不同数据空间, 而多个线程可以共享数据空间。线程切换时仅需要保存和设置少数寄存器内容,开销很小,仅 需要几个时钟周期甚至仅需要一个时钟周期;而进程切换一般需要成百上千个时钟周期。 2.多线程及其分类 多线程指同一程序中的多个线程并行运行,以处理不同的任务,在单核处理器中实现多 线程的技术称为多线程技术。在指令级并行过程中,由于存在相关或停顿,在数据路径上经 常会有一些空闲的功能单元。如果通过巧妙安排,使多个线程以重叠方式共享处理器中的 功能单元,从而利用由指令级并行造成空闲的功能单元。为了支持多个线程共享功能单元, 处理器必须为每个线程保持指令状态。例如,每条指令都需要有一个独立的寄存器文件副 本、一个独立的PC值及一个独立的页表;主存储器则可以通过虚拟存储机制实现共享。此 外,硬件还必须对不同线程之间的快速切换提供支持。 按线程粒度大小,多线程可分为两种:细粒度多线程和粗粒度多线程。 细粒度多线程指可以在指令之间进行线程切换,使多个线程交替处理。在某线程停顿 时,切换到其他线程去处理其中的指令,从而可以在任一时刻跳过所有停顿的线程,也就要 求处理器必须具有在任意时钟周期切换线程的能力。细粒度多线程的优点是可以隐藏由停 顿引起的吞吐量损失,缺点是降低了每个线程的处理速度(其他线程指令的插入执行使线程 不能连续执行)。 粗粒度多线程指仅遇到代价较高的停顿时(如第二级Cache不命中)才发生线程切换, 而在很大程度上避免处理器速度的降低。由于粗粒度多线程的处理器从单独线程发射指令,(从) 因此当停顿发生时,流水线必须被清空或暂停,停顿后开始处理新线程,新线程指令必须填满 流水线后,才开始有指令结束。这就使得粗粒度多线程的流水线启动开销(建立时间)较大,克 服吞吐量损失的能力有限。不过,对于较长的停顿而言,这种启动开销通常可以忽略不计。 3.超线程技术及其实现 超线程指将一个物理处理器在逻辑上当作两个处理器使用,以使处理器可以并行处理 多个线程,提高处理器的效率。超线程技术是利用特殊的硬件指令,把两个逻辑核模拟成两 个物理芯片,使单处理器都能实现线程级并行,减少处理器的空闲时间。通常把可以实现超 线程技术的处理器称为超线程处理器,其他的称为单线程处理器。 当采用超线程技术使操作系统或应用程序的多个线程运行于一个超线程处理器上时, 两个逻辑核共享物理处理器的功能单元,这样可以使得物理处理器的处理能力提高30% 。 第 3 章 特殊多处理机与多处理机实例101 单线程处理器虽然可以每秒处理成千上万条指令,但在许多时刻,仅对某个线程的一条指令 进行处理,从而导致处理器许多功能单元空闲。而超线程处理器通过并行执行多个线程,使 得处理器在任何时刻都可以并行处理多条指令,避免功能单元的空闲。超线程处理器的两 个逻辑核均可以单独进行中断响应,当第一个逻辑核跟踪处理一个线程时,第二个逻辑核则 开始跟踪处理另一个线程,且为了避免功能单元的冲突,第二个逻辑核的线程仅需要使用被 第一个逻辑核的线程闲置的功能单元。例如,第一个逻辑核的线程执行的浮点运算,使用浮 点运算单元,那么第二个逻辑核的线程可以执行的整数运算,使用整数运算单元。 超线程技术由Intel公司提出,最早出现在其2002 年推出的Pentium4 上,但由于当时 支持的应用软件缺乏,其优势无法体现,之后Intel公司推出的微处理器也未应用该技术。 直到2009 年Corei 系列处理器的诞生,超线程技术开始全面应用推广,如4核Corei7可以 支持8个线程。 4. 超线程与双核的区别 基于超线程技术的单核处理器Pentium4 与基于多核技术的双核处理器PentiumD, 在操作系统中均被识别为具有两个处理器,但有本质区别。支持超线程的Pentium4 是两 个逻辑处理器可以并行处理两个线程,但它们并没有独立的功能单元、寄存器、总线接口和 缓冲存储器等,并行处理两个线程共享资源,若两个线程同时需要同一资源,其中一个线程 必须暂停,可以认为:超线程技术通过软途径来优化利用处理器中的资源,以提高运行效 率。支持双核的PentiumD 是两个物理处理器核可以并行处理多个线程,每个物理核有独 立的功能单元、指令集等,性能比超线程Pentium4 高得多,可以认为:双核技术是通过硬 途径来提高性能的。 3.1.4 多线程实现途径及其支持技术 多线程实现有软件和硬件两条途径,即按实现途径,多线程实现可分为软件多线程和硬 件多线程两种。 1. 软件多线程及其支持技术 软件多线程指在单处理器上实现多线程,使多个线程共享同一个计算资源,由操作系统 通过动态改变线程运行优先级来调度线程。当某线程等待某些资源时,可进行线程切换,让 另一个线程运行。软件多线程通过多个线程共享Cache进行数据交换,通信开销被隐藏。 如图3-1所示为软件多线程运行状态时空图,图中由不同填充模式的条形表示线程所处的 不同状态。 图3- 1 软件多线程运行状态时空图 2. 硬件多线程及其支持技术 硬件多线程指在多核处理器或多个处理器上实现多线程,多个线程使用不同的计算资 102 高性能计算机体系结构 源,使多个线程真正并行运行,获得比单处理器高得多的性能。硬件多线程通过显式硬件通 信实现,线程之间存在通信开销。运行于不同处理器(核)的各个线程分别具有自己的优先 级,某个处理器(核)上线程的运行不受其他处理器(核)上的线程优先级的影响,从而使线程 之间的同步和互斥较复杂。如图3-2所示为硬件多线程运行状态时空图。 图3- 2 硬件多线程运行状态时空图 对于硬件多线程,处理器任务分配是资源分配的重要内容,它在区分支持多线程的处理 器核、单芯多核和多芯多处理器等硬件资源的基础上,既要充分开发程序中的并行性,使各 个处理器的负载相对平衡,又要尽量减少线程之间的通信开销。处理器任务分配即是线程 和处理器之间的一种映像,它可以由操作系统实现,也可以由应用程序员指定。操作系统的 调度算法一般尽可能将线程映像到线程先前所运行的处理器上,这样可以利用可能仍缓存 在原处理器Cache内的数据,提高Cache命中率。但操作系统仅能根据一般规律实现线程 映像,不可能根据特殊的硬件分配或特殊的应用特征进行优化。 应用程序的线程映像算法需要相应的优化工具帮助,通过设置线程映像屏蔽向量来指 定线程可以运行的处理器,从而实现针对具体应用的优化映像。线程映像屏蔽向量是它所 属的进程映像屏蔽向量的一个子集,它的每一位对应一个处理器(核), 该位为1表示可以在 对应的处理器上运行,为0则不可以。而多线程并行程序设计面临多线程可伸缩性,它是衡 量在性能更加强劲多核处理器上运行时能否有效利用更多线程的指标。例如,一个应用程 序是面向4核处理器编写的,若该程序运行于8核处理器上时,其性能是否能线性增长,可 通过该指标衡量。 另外,为了实现负载平衡,不仅需要进行资源分配,还需要进行任务分割,计算任务的分 割是资源分配的基础。在任务分割与调度过程中,必须尽量减少分割调度开销、上下文切换 开销和线程间的同步开销。 3.1.5 多核同时多线程 1. 同时多线程及其资源利用状态 同时多线程(simultaneousmultithreading,SMT)是对多线程的一种改进,它使用多发 射和动态调度机制在开发线程级并行的同时开发指令级并行,即将线程级并行转换为指令 级并行。由于现代多发射处理器的指令级并行度通常较大,单个线程已无法有效地利用这 种并行度。而采用寄存器重命名、保留指令各自的PC 值、动态调度和为来自多个线程指令 的提交提供支持等措施,来自各个独立线程的多条指令可以被同时发射,不必考虑指令间的 相关性。相关指令由动态调度来处理,因此线程级并行与指令级并行可同时开发,并且可以 在乱序流动处理器的基础上实现。 如图3-3所示为不支持多线程超标量处理器的资源利用状态,图中横向表示每个时钟 第 3 章 特殊多处理机与多处理机实例103 周期的指令发射能力(宽度即为可以并行执行的指令数亦即流水深度)、纵向表示时钟周期 序列、空白一行方格表示对应时钟周期没有指令发射、不同填充方格表示不同线程的指令。 可见,在不支持多线程的超标量处理器中,由于缺乏足够的指令并行而限制了多发射槽的利 用率,特别地在指令高速缓存不命中时还会出现严重的停顿,将导致整个处理器处于空闲。 图3- 3 不支持多线程超标量处理器的资源利用状态 如图3-4所示为支持粗粒度多线程、支持细粒度多线程、支持同时多线程的超标量处理 器的资源利用状态。对于支持粗粒度多线程的超标量处理器,通过线程切换隐藏了长时间 停顿带来的开销,提高了资源的利用率,由此减少了完全空闲的时钟周期;但由于指令并行 度有限,且仅发生停顿时才进行线程切换,新线程还需要启动时间,所以仍然存在一些完全 空闲的时钟周期。对于支持细粒度多线程的超标量处理器,线程交替执行消除了完全空闲 的时钟周期;但由于在同一时钟周期内,仅可以发射同一线程的指令,加上指令并行度有限, 使得很多时钟周期多发射槽的空闲率仍然较大。对于支持同时多线程的超标量处理器,允 许同一时钟周期内发射不同线程的指令,理想情况下,多发射槽的利用率仅受限于多个线程 对资源的需求和可用资源的不平衡。当然,实际中还受限于其他因素,如活动线程的个数、 缓冲区的大小、从多线程并行取出指令的能力、线程间哪些指令组合可以并行发射等。可 见,由于一般情况下动态超标量处理器通常采用深度流水,因此采用粗粒度实现的多线程对 性能改进不明显,只有采用细粒度或同时多线程实现才有意义。 图3- 4 3 种支持多线程超标量处理器的资源利用状态 2. 同时多线程实现的支持技术 当采用细粒度多线程时,为了避免细粒度调度对单个线程性能的影响,可以应用优先线程 的方法。优先线程指预取与发射指令具有优先权,只有优先线程停顿或无法发射的情况下,才 启动或运行其他线程。但优先线程的数量必须限制,如果有两个优先线程,那么就需要同时预 104 高性能计算机体系结构 取两个指令流,这会增加取指单元和指令Cache的复杂度。另外,采用优先线程方法时,由于 多发射的指令不能来自多个线程,所以若优先线程被停顿,处理器将会损失一些吞吐率。只有 足够多的线程混合执行,才能隐藏各种情况下的停顿,使吞吐率最大化。所以,多线程处理器 必须在单个线程性能与多个线程性能之间进行综合权衡,从而引出了同时多线程。 同时多线程通过将线程级并行转换为指令级并行,以实现多个线程的指令混合同时执行, 但这时仍然需要考虑优先线程,只有当优先线程的缓冲区填满之后,才为其他线程预取指令; 另外,为提高单个线程性能,还可以限制多线程的并发数。对于同时多线程,需要许多虚拟寄 存器用于为各线程配备更多寄存器组(每个线程均有一个独立的重命名表), 以保存线程现场。 由于寄存器重命名机制为各寄存器提供了唯一标识,使得多个线程的指令可以在数据路径上 混合执行,而不会导致线程之间的源操作数和目的操作数混乱。所以,只要为每个线程设置重 命名表、程序计数器,并为多个线程提供指令确认能力,多线程就可以乱序执行。 3. 高性能微处理器体系结构 对于指令级并行,既可以利用流水线技术实现指令并发执行,又可以利用超标量、超长 指令字或多核等技术实现指令同时执行。对于线程级并行,既可以利用多线程单核处理器 支持并发处理,又可以利用单线程多核处理器支持同时处理。目前,高性能微处理器由开发 指令级并行逐渐转向开发线程级并行,其体系结构的变化过程为单核单线程、单核多线程、 多核单线程和多核多线程,如图3-5所示。 图3- 5 高性能微处理器体系结构变化过程 特别地,在Pentium 系列微处理器中,Pentium 属于单核单线程,Pentium4 属于单核多线 程,PentiumD 属于多核单线程,PentiumEE 属于多核多线程。另外,目前的微处理器都是3 核、4核、6核和8核的,面向服务器和工作站的有10 核和12 核的,如Intel的XeonE5 。 3.1.6 典型多核微处理器———T1 1.T1 多核微处理器的组织结构 T1 是SUN 公司于2005 年推出的多核微处理器,其建构策略为:重点开发线程级并行 性,而不像大多数的处理器是开发指令级并行;主要用于桌面计算或服务器。T1 多处理器 同时采用多线程和多核技术的单发射微处理器,以全面提高吞吐率。 T1 微处理器包含8个处理器核,每个核为一条6个功能段的单发射流水线,最多支持 4个线程,且单发射流水线中有一个功能段用于线程切换,所以实际类似于5个功能段,其 体系结构如图3-6所示。T1 微处理器采用细粒度多线程,每一个时钟周期均可以切换到新 第 3 章 特殊多处理机与多处理机实例105 线程,且线程调度时可以跳过因流水线时延或Cache不命中而处于等待状态的线程,仅当4 个线程均处于等待或停顿时,才会出现空闲状态。它的load和分支指令的时延为3个时钟 周期,但它们都可以通过执行其他线程而被隐藏。特别地,由于浮点运算并不是T1 微处理 器的关注点,因此8个核共享一个浮点运算部件。 图3- 6 T1 多核微处理器的组织结构 T1 微处理器每个核中均带有第一级高速缓存,高速缓存容量为16KB 指令高速缓存和 8KB 数据高速缓存,块容量为64B,在无竞争情况下,L1 不命中开销为23 个时钟周期。8 个处理器核通过一个交叉开关与4个独立的第二级(L2)高速缓存及浮点运算部件相连,每 个L2 高速缓存容量为750KB 且和主存储器相连,块容量为64B,在无竞争情况下,L2 不命 中的开销为110 个时钟周期。L2 高速缓存采用目录表法实现高速缓存数据的一致性,且每 个L2 高速缓存块在目录表中都有对应的一项。目录表法类似于目录协议法,目录协议中 的目录表用于记录哪些高速缓存中有主存块的副本,而目录表法用于记录哪些L1 高速缓 存中有L2 高速缓存块的副本。通过把每个L2 高速缓存与一个具体的主存储器相关联,并 强制实现包含性,使得可以把目录表放在L2 级上,而不是放到主存中,有效地减少访问目 录的开销。由于L1 数据高速缓存采用写直达法,所以实现一致性仅需要写作废消息,且所 访问的数据最终都可以从L2 高速缓存中获得。 2.T1 多核微处理器的性能 利用3个面向服务器的基准测试程序:TPC-C、SPECJBB 、SPECweb99,对T1 微处理 器进行性能测试,各测试程序对应的每线程CPI 、每核CPI 及有效IPC(每个时钟周期完成 指令数)等性能指标如表3-1所示。特别地,由于SPECweb99 不能扩展到8个处理器核上 以利用32 个线程,所以是在T1 的4核版本上运行的,TPC-C和SPECJBB 都是在8核32 个线程的版本上运行的。由于T1 是一个细粒度多线程处理器,且每核可以支持4个线程, 所以在并行性足够多时,理想的每线程CPI 是4,即每个线程是每4个时钟周期完成一条指 令,每核CPI 为1。这是因为在每4个时钟周期中,4个周期平均分配给4个线程,这样每个 线程仅能执行一个时钟周期。而有效IPC=8/每核CPI 。 表3- 1 T1 微处理器的测试性能 基准测试程序每线程CPI 每核CPI 8核有效CPI 8核有效IPC TPC-C 7.2 1.80 0.225 4.4 SPECJBB 5.6 1.40 0.175 5.7 SPECweb99 6.6 1.65 0.206 4.8 106 高性能计算机体系结构 对于3个测试基准程序,T1微处理器的有效吞吐率仅有理想值的56%~71% 。似乎 不太有效,但与超标量处理器相比,已经提升很多。像Itanium2(与T1相比,晶体管更多、 功耗更高、硅面积相当) 若想持续达到每个时钟周期完成4.~7条指令, 处理器, 55.则需要 难以置信的指令吞吐率,因为4.7已经是比普遍认可的IPC高出一倍多。显然,对于 5~5. 面向整型运算的多线程的服务器,多核处理器比单核多发射超标量处理器要好得多。 3.多核微处理器的比较 在近期推出的处理器中,与采用多发射双核的Power5 、Opteron、PentiumD多核微处 理器相比,T1多核微处理器独具特色,除开发并行性级别(ILP与TLP)存在不同之外,还 存在许多差异,如表3-2所示。 表3- 2 多核微处理器的比较 属性或性能SUNT1 AMDOpteron IntelPentium D IBM Power5 核数量8 2 2 2 每核每时钟发射指令数1 3 3 4 多线程细粒度No SMT SMT Cache L1I/DKBpercore L2percore/shared L3(of-chip) 16/8 3MB shared 64/64 1MB/core 12kuops/16 1MB/core 64/32 L2:1.9MB Shared L3:36MB 存储器峰值带宽(GB/s) 34.4 8.6 4.3 17.2 峰值MIPS/MFLOPS 9600/1200 7200/4800 9600/6400 7600/7600 时钟频率/GHz 1.2 2.4 3.2 1.9 (1)对浮点运算支持的差异。Power5重点关注浮点运算及其性能,Opteron和 PentiumD也有许多浮点运算资源,但T1并不关注,所以其MFLOPS仅为1200,远小于其 他3种多核处理器。 (2)多处理器扩展能力的差异。Power5扩展能力最强,Opteron和PentiumD具有一 定的扩展支持,T1不支持扩展。 (3)存储器峰值带宽的差异。T1存储器的峰值带宽最高,Power5其次,Opteron和 PentiumD较低。 对于基于线程级并行的T1多核处理器,若由足够多的线程使其所有核均处于忙碌状 态,且所有线程的性能均可以接受,那么T1具有显著的优势。但线程级并行是否具有绝对 性还不能确定;因为在桌面计算机和服务器中,单线程性能仍然极其重要。 3.机群多处理机 2 3.2.1 机群多处理机及其性能特点 1.机群多处理机及其结构模型 由于高性能微处理器的出现和局域网带宽的不断提高,为了极大地降低多处理机的造 第 3 章 特殊多处理机与多处理机实例107 价,人们基于微处理器技术、网络通信技术和并行编程环境,于20 世纪90 年代中期便设想 利用高性能微处理器和局域网来建构多处理机,由此出现了机群(Cluster)多处理机。所谓 机群多处理机指利用高速商品化网络将若干高性能工作站或高档PC 连接在一起,并在并 行程序设计及可视化人机交互集成开发环境支持下,统一调度、协调处理,实现高效并行处 理的多处理机。机群多处理机的结构模型见第2章图2-9。 机群多处理机的节点可以同构,也可以异构;其每个节点一般是一台完整的计算机,拥 有本地磁盘和操作系统,可以作为一台单独的计算机资源供用户使用,也可以是对称多处理 机。机群中的这些计算节点以松散耦合互连,但对用户是以单一形象呈现的,作为一个单一 集中的计算资源来使用。从功能来看,机群中的节点可以分为3种类型:①用于完成计算 任务的计算节点,它具有很强的计算能力;②用于完成人机信息交换和运行操作系统的管 理节点;③用于完成I/O操作的I/O节点,它即是一台I/O设备。 机群多处理机的互连网络可以是普通商品化网络(如以太网、FDDI 、ATM 等), 也可以 是专用定制网络。当采用普通商品化网络时,机群仍不同于局域网。局域网是分布式的多 计算机,各台计算机各自独立工作,通过局域网共享资源,对用户不是以单一形象呈现的。 机群是分布式的多处理机,节点机之间采用消息传递模型进行数据通信,对用户是一个计算 资源,屏蔽了节点和网络的异构性。 2. 机群多处理机的性能特点 新型结构的机群多处理机一经问世就受到广泛关注,其原因在于它同其他多处理机相 比,具有许多明显的优势。机群多处理机最核心的优势是:随着微处理器技术、网络通信技 术和并行编程环境等的发展,其各方面的性能均可以得到改善和提高。例如,由于松散耦合 带来数据通信的瓶颈问题,因为高性能通信协议的出现而得到缓解;随着PVM 、MPI 、HPF 、 OpenMP 等并行编程模型的应用与成熟,使的并行应用程序的开发更加容易方便。机群多 处理机还有以下特点。 (1)开发周期短。由于机群多处理机采用商品化的工作站和局域网来建构,这样既不 需要研制计算节点,又不需要研制操作系统和编译软件,开发的重点仅在于数据通信软件和 并行编程环境,从而极大地减少了开发研究的时间。 (2)性价比高。作为巨型或大型计算机的多处理机,生产量不大,价格均比较贵,往往 达几百万甚至上千万美元。而机群多处理机采用商品化的节点和互连网,生产量极大,价格 很低,机群多处理机的价格比其他多处理机要低1~2个数量级。随着RISC 和通信等技术 的发展,微处理器和局域网的性能价格比不断提高,使得机群多处理机的性价比还在不断 提高 ( 。 3)可靠性高。机群多处理机的计算节点一般都是兼容的且相互独立工作,所以某计 算节点失效不仅不会影响其他节点的工作,而且其计算任务可以迁移到其他节点继续完成, 从而可以有效地避免因单节点失效带来整体运行的停顿。 (4)扩展性强。机群多处理机结构灵活,可以将不同体系结构、不同性能的工作站连在 一起组成一个整体,且还是利用商品化网络松散耦合的,所以规模容易扩充、节点便于配置 与替换,使得其还具有资源利用率高的优势。 (5)用户编程方便。机群多处理机的程序并行化只是在原有C、C++或FORTRAN 串 行程序中插入相应的通信原语,用户仍使用熟悉的编程环境。另外,其可以继承原有的软件 108 高性能计算机体系结构 资源,只需对原有的串行程序做有限修改便适用于机群多处理机。 但机群多处理机也存在不足之处。由于机群多处理机的节点是一台完整的计算机,其 维护是面向每个节点的,所以维护工作量大、费用较高。对此,目前许多机群多处理机都采 用SMP 为节点,这样便可以减少节点数量。 3.2.2 机群多处理机的分类 由于机群多处理机的分类标准很多,所以按照不同标准,机群处理机的分类方法很多。 例如,按照机群节点是否相同,机群可以分为同构的与异构的;按照机群节点是PC 还是工 作站,机群可以分为PC 机群与工作站机群。但常用分类方法是按照应用目的和构建目的 来分类。 1. 按照应用目的分类 按照应用目的,机群多处理机可以分为高可用性机群、负载均衡机群和高性能计算机群 等3( 类 1) 。 高可用性机群。高可用性机群的应用目的是在某些节点出现故障时,仍可以继续 对外提供服务。该机群采用冗余机制,当某节点由于软硬件故障而失效时,该节点上的任务 将在最短的时间内被迁移到另一个具有相同功能与结构的节点上继续执行,这样对于用户 来说,机群一直为其提供服务。高可用性机群适用于Web服务器、医学监测仪、银行POS 系统等要求持续提供服务的应用。 (2)负载均衡机群。负载均衡机群的应用目的是提供与节点数量成正比的负载能力, 可以根据各节点的负载状态实时地分配计算任务。为此,该机群专门设置一个监控节点,负 责监控每个计算节点的负载和状态,并根据监控结果将任务分派到不同的节点上。负载均 衡机群适用于大规模网络应用(如Web或FTP 服务器)、大工作量的串行或批量处理作业 (如数据分析)。 (3)高性能计算机群。高性能计算机群的应用目的是降低高性能计算的成本,实现仅 有超级计算机才能完成的计算任务。该机群通过高速的商用互连网络,将成百乃至上千台 PC 或工作站连接在一起,可以提供接近甚至超过许多并行计算机的计算能力,但其价格却 仅是许多并行计算机的几十分之一。高性能计算机群适用于计算量巨大的并行应用,如石 油矿藏定位、气象变化模拟、基因序列分析等。 当然,负载均衡机群和高性能计算机群均必须具有一定高可用性特点,以使服务提供稳 定。负载均衡机群提供的是静态数据服务,如HTTP 服务;而高可用性机群既提供静态数 据服务,又提供动态数据服务,如数据库等。由于高可用性机群各节点共享同一存储介质, 每个服务的用户数据仅一份,存放于专门的存储节点上,在任一时刻仅有一个节点可以读写 这份数据,所以它还可以进行动态数据服务。 2. 按照构建目的分类 按照构建目的,机群多处理机可以分为专用机群和企业机群两类。 (1)专用机群。专用机群为代替传统的大中型机或巨型机而构建,其吞吐率较高,响应 时间较短,通信网络频带宽时延小。该机群的特点有:装置比较紧凑,一般都装在比较小的 机架内,放在机房中使用;节点是同构的,节点中的硬件和软件配置均相同;采用集中控制, 由一个(或一组)管理员统一管理;内部通信对外界是屏蔽的,用户一般通过一台终端机来 第 3 章 特殊多处理机与多处理机实例109 访问 ( 。 2)企业机群。企业机群是为充分利用各节点的空闲资源而构建的,各节点一般通过 标准的LAN 或WAN 互连,通信开销较大、时延较长。该机群的特点有:装置比较松散,节 点分散安放,可以不在同一个房间或同一幢楼中;节点是异构的,由不同的个人拥有,节点间 的互操作极为重要;采用分散控制,机群管理者仅对各节点进行有限的管理,节点拥有者可 以随意地进行关机、重新配置或升级,且对某节点而言,其拥有者任务具有最高优先级,比企 业的其他用户均要高;内部通信对外界是暴露的,存在一定的安全隐患,需要在通信软件中 采用专门措施来避免。 3.2.3 机群多处理机的软件组织 1. 机群操作系统与单系统映像 由于机群多处理机的组织结构松散、节点独立性强、网络通信连接复杂,造成机群多处 理机资源管理不便、操作使用困难。为了实现单一形象呈现,在各节点单机操作系统之上再 建立一层操作系统,以管理和呈现所有的计算资源,这就是机群操作系统或机群中间件。可 见,软件是机群多处理机系统的重要组成部分。 机群操作系统除需要提供硬件管理、资源共享及网络通信等功能外,还必须实现单系统 映像(singlesystemimage,SSI), 使机群多处理机在使用、控制、管理和维护上如同一个单 独的计算资源,这也是机群多处理机系统的重要特征。单系统映像包含4重含义。 (1)“ 单一系统”。尽管系统包含多台可以单独使用的计算机,但用户看起来是一台计 算机 ( 。 2)“ 单一控制”。逻辑上用户(含系统用户)使用的服务均来自机群中唯一一个位置, 如用户将批量处理作业提交到一个作业集,系统管理员则通过一个唯一的控制点配置管理 机群的所有软硬件组件。 (3)“ 对称性”。用户可以从机群的任何一个节点上获得服务,即对于所有节点和所有 用户,除具有特定访问权限的服务与功能外,其他所有服务与功能都是对称的,可以通过任 何一个节点提供给用户。 (4)“ 位置透明”。用户不必了解真正提供服务的节点及其具体位置。 2. 单系统映像的功能服务 一般来说,机群操作系统中的单系统映像除提供单一地址空间、单一虚拟网络和单一用 户界面外,还至少应提供以下服务。 (1)单一登录。用户可以通过机群中的任何一个节点登录,且在整个作业处理过程中 仅需登录一次,不必因作业被分派到其他节点处理而重新登录。 (2)单一文件系统。对所有节点都相同的软件,即使执行并行作业时,要求每个节点都 可以访问到这些软件,也没有必要在每个节点上重复安装,它们在机群中应只有一个备份。 (3)单一作业管理。用户可以透明地从任一节点提交作业,但作业可以以批量处理、交 互或并行的方式被调度执行。 (4)单一进程空间。每个进程可以在同一节点或不同的节点声称自进程与任意远程节 点的其他进程交换数据信息。 另外,单系统映像至少还应具有两项功能。一是检查点设置,检查点机制使进程状态和 110 高性能计算机体系结构 中间结果得以定期保存,当节点失效是故障节点的进程时,可以在另一个正在运行的节点上 重新开始,而不会丢失计算结果。二是进程迁移,以使机群各节点的负载达到动态平衡。 3. 机群多处理机软件的结构模型 机群多处理机软件主要包含微内核操作系统、网络通信软件、机群中间件和并行编程环 境等,其结构模型如图3-7所示。微内核操作系统应具有多用户多任务和稳定性的特征,机 群中间件则由机群操作系统(含单系统映像)与机群正常工作所必需的软件组成。对于网络 通信软件,其传输协议应具有组播服务及其组管理、快速建立与拆除连接、优先级管理、快速 突发控制和选择性突发等功能,具有高吞吐率、低通信时延的特征。 图3- 7 机群多处理机软件的结构模型 并行编程模型与并行编程环境是机群多处理机系统中不可缺少的软件,用户可以通过 并行编程环境实现并行应用程序的开发,串行应用则通过机群中间件被调度到任意节点上 执行。目前比较流行的并行编程工具包括MPI 、PVM 、HPF 、OpenMP 等。MPI 是目前最 重要的一款基于消息传递的并行编程工具,它具有可移植性好、功能强大、效率高等优点,而 且有许多免费、高效、实用的版本,几乎所有的并行计算机厂商都提供对它的支持,使它成为 并行编程的事实标准。PVM 也是一款常用的基于消息传递的并行编程环境,它把工作站 网络构建成一个虚拟的并行机系统,为并行应用程序提供运行平台。HPF 是一款支持数据 并行的并行语言标准。OpenMP 是一款共享存储并行系统上的应用编程接口,规范了一系 列的编译制导、运行库例程和环境变量,并为C、C++和FORTRAN 等高级语言提供了应用 编程接口,已经应用于UNIX 、Windows等多种平台。 3.2.4 机群多处理机的关键技术 对于多处理机,人们期望其节点运算速度高,系统加速比可以随规模扩大而接近线性增 长,并行应用程序开发高效、方便。目前,机群多处理机的节点采用高性能工作站或高档 PC,节点运算速度基本可以满足期望。因此,机群多处理机研究的主要目的是提高并行效 率和操作使用方便,这便需要高效网络通信技术、负载平衡技术、并行程序设计环境、并行程 序调试技术、可扩展性技术、可用性技术等的支持。 1. 高效网络通信技术 机群多处理机一般采用TCP/TP 的通用局域网以松散耦合的方式实现互连,从而使 得通信频宽较低、协议处理开销较大、传输时延较长、额外开销较多(如多层协议缓冲复 第 3 章 特殊多处理机与多处理机实例111 杂、操作系统的额外开销), 因此需要发展高效网络通信技术,以改善提高机群多处理机 通信性能。 (1)发展新型高速局域网络。由于大规模并行计算、实时网络系统和多媒体应用对高 速网络的需求,推动了网络技术的发展,从而出现了多种新型的高速网络,如快速以太网和 光纤分布式数据接口FDDI(异步传输ATM 、Myrinet), 且快速以太网的通信频宽可达 10Gb/s。 (2)设计新通信协议。高速网络的运用,使影响通信性能的瓶颈从网络硬件转移到通 信软件上,过长的通信协议处理开销使高速网络的高性能得不到充分利用。例如,在物理链 路双向频宽为640Mb/s的Myrinet上,TCP/IP 点-点通信的频宽仅38Mb/s,说明TCP/IP 限制了高速网络的链路频宽的利用率。 2. 负载平衡技术 负载平衡性能的好坏会直接影响并行计算的性能,而有效地管理利用所有资源是实现 负载平衡的基本途径,所以负载平衡技术实质是全局资源管理利用技术。对于机群多处理 机,因节点的异构性、特殊的网络结构、交互用户的介入、后台进程的运行等导致节点性能的 动态变化,其负载平衡显得尤其重要。常用的并行编程环境对资源管理利用支持均比较弱, 仅提供统一的虚拟机,而节点操作系统是单机的,并不提供全局服务支持,同时也缺少有效 的全局共享方法。因此,必须在节点操作系统和并行编程环境之间加入中间件———机群操 作系统,以实现所有资源的分配调度和单系统映像。 负载平衡技术的核心是调度算法,即将各个小的计算任务比较均衡地分配到不同的计 算节点进行并行处理,以使各节点的利用率达到最大。但负载平衡技术还需要考虑如决策 时机、调度模式、负载平衡指标及其收集、负载调度策略等要素。负载平衡评价指标一般有 吞吐率、可扩展性和容错性3个,容错性指发生故障后任务恢复运行的能力,可扩展性指规 模增大或总负载变化时的适应能力,吞吐率指并行运行应用程序的响应时间。 负载调度策略分为静态调度和动态调度两种。 静态调度是在并行优化编译时,根据用户程序中的各种信息(如各个任务的计算量大 小、依赖关系和通信关系等)和并行资源的配置状况(如网络拓扑结构、计算节点的计算能力 等)对用户程序中的并行任务做出分配方案,在程序运行过程中,按照该分配方案实施任务 分配。理论证明,静态调度的最优分配方案是NP 完全问题,因此在实际中往往采用次优求 解算法,以降低算法复杂性。静态调度依赖于任务分配所依据的全信息,但在高度并行的多 处理机上,特别是在多用户下,节点的任务负载是动态产生的,不可能作出准确的预测。因 此,静态调度对于动态变化的任务负载的负载平衡是不准确的。 动态调度是在应用程序运行过程中,通过分析实时负载信息,对用户程序中的并行任务 做出分配,以实现负载平衡的。由于各节点上的计算任务是动态产生的,因此在用户程序运 行期间,某节点上负载可能突发性地增加或相对变少,这时重载节点应及时把多余的任务调 整到轻载节点上,或由轻载节点及时向重载节点申请任务。动态调度算法简单,可以实时控 制平衡负载,但增加了额外开销,因此减小额外开销是动态调度特别关注的问题。 3. 并行程序设计环境 开发并行应用程序要比串行程序困难得多,要涉及多个处理器之间的数据交换与同步, 还需要解决数据划分、任务分配、程序调试和性能评测等问题,这些工作需要相应的支持工 112 高性能计算机体系结构 具。广义的并行程序设计环境包括硬件平台、操作系统、并行程序设计语言、编程编译软件、 调试与性能分析工具等,一般并行程序设计环境至少应该包括并行程序设计语言、并行程序 编程编译平台等。机群多处理机的并行性具有两个特点:一是并行进程通常是节点操作系 统的进程或线程,所以一般采用调用节点操作系统来创建、消亡及激活进程;二是节点相对 独立,通信开销较大,所以批量数据传送一般采用异步通信、进程间协同采用同步通信,适用 于中粗粒度任务的并行处理。并行程序设计环境必须与机群多处理机的并行性特点相 适应。 并行程序设计语言需要提供数据发送与接收及进程同步的函数,为并行程序的数据传 递和进程同步提供支持。例如,PVM编程平台为用户提供了开发并行程序的C语言和 FORTRAN语言的并行函数库,用户开发并行程序时,仅需要在描述并行特性时加入并行 函数,在过去开发的程序中嵌入并行函数,就可以使其在机群多处理机上并行运行。 常用并行编程模型有消息传递和共享存储两种。基于消息传递模型的机群多处理机广泛 应用的并行程序编程编译平台,目前主要有PVM 、MPI 、Expres 、Linda等,其中PVM和MPI 应用最多,且均提供了统一的虚拟机、定义和描述通信与资源管理的可移植的用户编程接口。 PVM是美国OakRidge国家实验室和多所大学联合开发的并行计算工具软件,支持C、C++和 FORTRAN,MPI则是一个消息传递标准,PVM和MPI都是免费软件,均可以方便地进行再 开发。对于分布共享存储的机群多处理机,应该采用共享变量模型来进行并行编程,相应的并 行程序编程编译平台主要有ThreadMarksDSM 、MidwayDSM等。特别地,非共享机群多处理 机,也可以采用共享变量的并行编程模型,但需要虚拟共享存储技术的支持。 4.并行程序调试技术 机群多处理机实现的是线程、进程和作业的并行,高级别的并行处理存在不确定性、死 锁、消息错序、全局状态复杂和性能优化等问题。由于并行任务的派生、数据通信、进程同步 等的影响,在并行程序不同的运行中,各个进程被执行的时间可能不相同,从而导致并行程 序的行为结果(含错误出现)具有不确定性。对于基于消息传递模型的并行程序,即使数据 通信可以可靠地实现,死锁和消息错序也是不可能避免的。死锁大多是由于并行程序算法 不当造成的,消息错序是由于数据通信的异步性及其时延的随机性造成的。程序运行过程 取决于过程状态,而并行程序运行过程非常复杂,其过程的全局状态自然非常复杂,所以只 有理解并行程序运行的行为特征、控制其运行程过程,才能确定其所有状态及其相互之间转 换关系。影响程序并行性能的因素很多,但通信是最关键的,若进程因通信被阻塞,则程序 运行效率将会显著降低;合理地划分数据和安排通信进程,可避免阻塞或使阻塞时间减少, 为此必须收集每次数据通信的起止时间和通信量,分析造成通信进程等待的原因。显然,高 级别并行处理存在的问题,必须通过反复运行调试并行程序才可能得以解决,这便需要以下 并行程序调试技术及其相应的方便用户理解和操作调试工具软件的支持。 (1)记录重放技术。记录重放的目的是解决不确定性问题,保证反复调试的顺利进行, 重放方式有历史重放和执行重放。 (2)事件驱动技术。事件驱动可以对并行程序的运行自动地进行复杂性判断,并通过 设置断点来检查其行为特征。事件驱动的关键是对并行程序中的事件进行描述、过滤和识 别,但并行程序的事件模型是难以准确建立的。 (3)分析技术。分析技术的主要目的是寻找并行程序中数据通信方面存在的问题。根 第 3 章 特殊多处理机与多处理机实例113 据采用手段,分析技术可分为静态分析和动态分析;根据分析时间,动态分析又可分为在线 分析和事后分析。 (4)可视化技术。可视化技术指采用图形、图像、动画等可视化形式描述并行程序的行 为、状态、结构等。在机群多处理机中,全局状态和通信行为不仅复杂且可视性差,采用可视 化技术直观地将它们呈现出来,有利于并行程序调试。 5. 可扩展性技术 可扩展性是多处理机性能评价的主要指标之一,可以反映规模扩大对多处理机性能的 影响程度。为使机群多处理机具有可扩展性,必须遵循以下3个原则来构建其体系结构。 (1)独立性原则。独立性原则要求机群多处理机各节点的软硬件相互独立,即使难以 实现该要求,也应使节点间的关联程度尽量小且关联清晰。由此,才可能使独立扩展(增量 扩展)得以实现,使异构扩展成为可能。 (2)平衡性原则。平衡性原则要求最小化所有的性能瓶颈,因为机群多处理机任何一 个慢速部件都将会导致整体性能下降,其他部件的速度再快也是无用的。此外,应尽量避免 单点失效,一个部件的失效将可能引起整体崩溃。 (3)时延隐藏原则。时延隐藏指利用计算过程来隐藏通信时延,以保证即使在长时延 不可避免时,机群多处理机也可以达到高性能。时延隐藏基本思想之一是使计算和通信在 时间上重叠,具体的技术方法有:预取技术、分布式一致性高速缓存、非严格存储一致性模 型、多线程处理器。 6. 可用性技术 由2.2节可用性定义可知, 如 5.提高可用性的基本途径为增加MTTF 和减少MTTR, 今工作站的MTTF 可以达到几百甚至几千小时,再进一步提高MTTF 已非常困难且开销 很大。机群多处理机的MTTF 往往低于节点的MTTF,减少MTTR 不仅可以提高机群的 可用性,还可以迅速处理故障。适用于机群的可用性技术主要有3个。 (1)部件冗余且相对独立。改善设备可用性的基本方法是部件冗余,当某主部件发生 故障时,由备用部件继续提供服务。当然,主要部件和备用部件之间必须相互独立,使它们 不会因为某一原因而同时发生故障。 (2)故障接管。对于商用机群多处理机,故障接管是最重要的性能需求。某部件发生 故障时,故障部件提供的服务允许由正常部件接管继续提供。 (3)恢复。恢复指为接管故障部件的工作负载所需要的操作,且分为后向和前向两种 恢复技术。对于后向恢复,为运行进程在稳定的存储设备中周期地保存其一致状态(即检查 点)。发生故障后,通过重组来隔离故障部件,恢复前一个检查点,而后继续正常操作,整个 过程称为卷回。独立于应用程序的可移植的后向恢复较容易实现,并已被广泛运用。卷回 过程的时间开销较大,在强实时性中是不能容忍的,这时便有人提出了前向恢复技术。前向 恢复不是卷回到故障前的某个检查点,而是利用故障诊断信息去重构一个有效状态,并继续 运行下去。前向恢复依赖于应用程序且可能还需要额外的硬件设备支持。 3.2.5 典型机群多处理机实例 IBMSP2 机群多处理机 1. IBMSP2(简称SP2)是机群多处理机中的代表性产品,它既可用于科学计算,又可供商 114 高性能计算机体系结构 业应用。在1997年的“人机大战”中,战胜世界国际象棋冠军卡斯帕罗夫(Garykasparor) 的“深蓝”,就是一台采用30个RS/6000工作站(带有专门设计的480片国际象棋芯片)的 IBMSP2机群多处理机。SP2机群采用异步MIMD 、分布式存储物理结构模型,其体系结 构如图3-8所示,节点硬件和软件都可以根据不同用户应用和环境需要来进行配置,且节点 数可以为2~512个不等。由于SP2机群采用标准的工作站部件,仅在标准技术不能满足 性能要求时才使用专用软件和硬件,所以其开发周期较短。 图3- 8 SP2机群多处理机的体系结构 1)节点及其微处理器 SP2机群多处理机的节点可以有4种配置,分别是宿主节点、I/O节点、网关节点和计 算节点,它们可以重叠。例如,宿主节点可以作为计算节点,I/O节点可以作为网关节点。 宿主节点(含控制台)I 用于处理用户注册会话和交互处理,/O节点用于实现输入输出如全 局文件服务器,网关节点用于连接外部计算机(如外部服务器、附加文件服务器、网络路由 器、可视设备等),而计算节点用于计算。其中有一宿主节点为专用的控制台,它配置的是一 台RS/6000工作站,通过该控制台节点,管理人员可以对机群进行管理。特别地,每个节 点、开关和机架上均集成了一个监视板,该监视板用于对硬件部件进行环境检测、控制,管理 人员可以用于启动或切断电源和为单点置初始状态。 SP2机群的计算节点均是一台带私有存储器(M)和本地磁盘(D)的RS/6000工作站, RS/6000采用时钟频率为66.它带有一个32KB的指令高速 7MHz的POWER2微处理器, 缓存、一个256KB的数据高速缓存、两个分支转移控制部件、两个整数运算部件和两个乘加 浮点运算部件(乘加运算均可以在一个时钟周期内完成),其峰值速度可达4×66. 7= 267MFLOPS 。POWER2微处理器是6发射的超标量处理机,每个时钟周期可以执行6条 指令,包括2条读数写数指令、2条浮点乘或加指令、1条变址增量指令和1条件转移指令, 具有动态分支预测技术和寄存器重命名技术。 为了使节点配置更加灵活,SP2机群可以配置3种不同特性的节点:宽节点、细节点和 细2节点,区别在于存储器容量、数据通路宽度和I/O总线插槽数有所不同。主存容量:宽 节点可达64~2048MB,其他两种节点是64~512MB;高速缓存容量:细节点和细2节点可 以有1MB(或2MB)的二级高速缓存,宽节点的数据高速缓存为256KB;存储总线宽度:宽 节点是256位,细2节点是128位,细节点则是64位;I/O总线插槽数:宽节点的微通道 第 3 章 特殊多处理机与多处理机实例115 MC(microchannel)上有8个I/O插槽,细节点则仅有4个I/O插槽。在SP2的每个节点 中,存储器和高速缓存的容量都比较大,处理器性能亦较高,这使得SP2的处理能力能够达 到相当高的水平。 2)互连网络 SP2机群多处理机的节点之间可以通过两种网络松散耦合互连,这两种网络为标准以 太网和定制的128路高性能开关(HPS,即Ω多级开关网络),且是通过节点本身的I/O微 通道连接到网络上,而不是通过本身的存储总线。以太网用于对数据通信速度要求不高时 的并行程序开发,还可以供机群的监视、引导、加载、测试和其他管理软件使用,并行程序正 式运行时则使用HPS 。当然,以太网还具有备份的作用,当HPS出现故障时,可以通过以 太网来维持正常工作。 SP2机群的节点通过网络接口电路(NIC)连接到HPS,通过以太网适配器(E)连接到以太 网上,且将网络接口电路称为开关适配器或通信适配器。通信适配器中有一个8MB的DRAM 用来存储各种不同协议所需的大量报文,并由一台i860微处理器控制。通信适配器经微通道 接口连接到微通道上,经存储开关管理部件MSMU连接到HPS上。特别地,微通道是IBM 公司的标准I/O总线,用于把I/O设备连接到RS/6000工作站和IBMPC上。对于SP2机群, 除采用高性能开关外,有的还采用光纤分布式数据接口(e, 环连接各节点。 fiberdistributeddatainterfacFDDI) 3)系统软件 IBM的UNIX )、 SP2机群多处理机的系统软件包含标准AIX操作系统(高性能服务软 件等,其中AIX操作系统是核心,每个节点均配置AIX操作系统和高性能服务软件,系统 软件的层次结构如图3-9所示。 图3- 9 SP2机群多处理机系统软件的层次结构 SP2机群除可以运行原在RS/6000工作站基于分布式开发的软件外,利用高性能服务 软件还提供了许多高性能服务,主要有高性能通信软件、高性能文件系统、并行函数库、并行 数据库和并行I/O软件等。可用性服务软件用于指示哪些节点在活动、将节点和进程标记 归属于某特定集、将失效、停机或重启节点通告节点集成员并可随后调用恢复服务等。全局 服务软件即实现单系统映像,并提供多种可选类型。AIX并行环境(paraleloperation environment,PE)为用户提供开发和运行并行程序的平台,且包含并行操作环境、消息传输 库、可视化工具和并行调试器。 SP2机群在RS/6000工作站原有环境下开发的大部分软件均可以重用,包括1000多 种串行应用程序、数据库管理系统、联机事务处理监控程序、系统与作业管理软件、 116 高性能计算机体系结构 FORTRAN/C++编译程序、数学与工程程序库等。另外,仅添加一些可扩放并行所必需的 软件,或对现有软件进行少量修改,便可以适用于SP2机群。 2.3种不同的机群多处理机 1)BerkeleyNOW机群多处理机 BerkeleyNOW机群多处理机是由美国加州大学伯克利分校开发的、颇具影响的多处 理机,它采用了许多先进技术,涉及许多机群共性问题。它具有很多优点:采用商用千兆以 太网和主动消息通信协议;通过用户级整合机群软件GLUNIX来提供单系统映像、资源管 理和可用性服务;开发了一种新的无服务器网络文件系统xFS,以支持可扩放性和单一文件 层次的高可用性。 主动消息通信协议。主动消息是实现低开销通信的一种异步通信机制,其基本思想是 在消息头部控制信息中携带一个用户级子例程(称为消息处理程序)的地址,当消息头到达 目的节点时,调用消息处理程序通过网络获取剩下的数据,并把它们集成到正在进行的计算 中。主动消息高效灵活,以至于各种多处理机均逐渐以它作为基本的通信机制。 GLUNIX机群软件。GLUNIX是运行于工作站的标准UNIX上的一个自包含软件, 其主要思想是认为机群操作系统应该由底层和高层组成,其中底层是运行在核模式下的节 点商用操作系统,高层则是提供机群所需功能的用户级操作系统。特别地,该软件层可以提 供机群内节点的单系统映像,使得所有的处理器、存储器、网络容量和磁盘带宽均可以分配 于串行或并行的应用程序,并且以被保护的用户级操作系统库的形式实现。 无服务器文件系统xFS 。xFS是一个无服务器的分布式文件系统,它将文件服务的功 能分布到机群的所有节点上,以提供低时延高带宽的文件系统服务。xFS主要采用廉价冗 余磁盘阵列、协同文件缓存和分布式管理等技术。 2)Beowulf机群多处理机 1994年,美国国家航空航天局(nationalaeronauticsandspaceadministration,NASA) 的一个科研项目迫切需要一种工作站,要求它既具有1GFLOPS的计算处理能力和10GB 的存储容量,又不能价格过高。为了实现该要求,工作于CESDIS的ThomasSterling与 DonBecker二人便构建了一个具有16个节点的机群多处理机,其硬件使用Intel的DX4处 理器及10Mb/s的以太网,软件则主要基于刚诞生的Linux系统和GNU开发环境等软件, 并将其命名为Beowulf机群,基于COTS(commodityoftheshelf)思想的技术也迅速被 传播。 可以认为,Beowulf机群定义了构建机群的一种策略,即通过有效使用普通硬件加上 Linux操作系统、GNU开发环境及PVM/MPI共享库来实现。由此,不仅集中了那些能力 相对较弱的计算资源,以高性能价格比提供相当于大型机的性能,还可以保证软件环境的稳 定性。实际上,Beowulf并不只是具体的软件包或是一种新的网络拓扑结构,更重要的是 Beowulf机群提出了构建多处理机的基本原则,即在实现既定目标的前提下,把注意力集中 在获取高性能价格比上。虽然目前为了获取更高性能,有些Beowulf机群也使用了一些专 用或商用的软件和特殊的网络互连系统,但其基本宗旨是不变的。 3)LAMP机群多处理机 随着硬件技术的不断进步,SMP多处理机不仅成本不断下降,内部通信能力也在不断 加强,由小规模(2~8个处理器)的SMP来构建机群逐渐成为主流,且称之为CLUMP