第八章多处理器机结构8-1第八章多处理器机结构传统的计算机组织结构是从六十年代中期开始发生转变的,这时,速度极限已经开始对计算机操作速度的提高产生影响。…电路的操作速度最终取决于光速…而许多电路现在已经运行在纳秒级上。Bouknightetal.TheIlliacIVSystem[1972]…串行计算机正在接近计算机潜能的物理极限。这个极限就是光速…A.L.DeCegama,TheTechnologhofParallelProcessing,VolumeI[1989]…现在的计算机正随着其技术接近光速而陷入僵局。即便串行计算机可以象光速那么快,也不过是每秒执行几百万条指令而已。Mitchell,TheTransputer:TheTimeIsNow[1989]8.1引言正如本章题头引言所示,单处理器体系结构的发展正在接近极限,这一观点已被普遍接受。然而,我们看到,自从五十年代末、六十年代初出现了首台晶体管计算机以来,由于微处理器的驱动,从1985年到1995年,单处理器性能的增长一直处在其最高发展速度。尽管如此,本书作者仍然相信,并行计算机在今后会起更加重要的作用。这一观点来自三个原因。首先,微处理器仍将是主要的单处理器技术,因此,为了超越单处理器的性能,一种合乎逻辑的方法就是把多个微处理器联结在一起。这比设计同样功能的单个处理器更具价格优势;其次,从1985年开始的体系革新促成了性能的飞速增长,而这种革新是否会被永远维持下去,目前尚未明了。从第四章中我们看到,现代的多发射处理器已经是异常复杂,靠增加复杂度和硅片获得的性能增长似乎并不见长;最后,在推广使用并行机的征途上的最大障碍—软件,目前进展缓慢。然而,本书的作者十分不愿意预言:单处理器体系结构终将灭亡。事实上,我们相信,目前快速增长的势头至少可以保持到下一世纪。这一革新能否维持地更长,目前还难以预料。然而,一旦单处理器的发展速度放慢下来,多处理器体系结构将逐渐引起人们的注意。说到这里,我们还有两个问题。第一,多处理器体系结构是一个庞大繁杂的领域,这一领域的许多东西还处在婴儿阶段,各种思想来来去去,失败的比成功的更多。要想将这些体系结构一一描述清楚,恐怕需要同样厚的另一本书。况且,这样一本书必将涉及一些经不起时间考验的观点,而这正是我们极力避免的。由于这些原因,我们只把注意点放在多处理器设计的主流上:具有小到中等规模数量处理器的机器(100)。这种设计无论是在金钱亦或人力上,目前都占了统治地位。对于更大规模多处理器(100)的设计我们只略作介绍。这种机器的未来体系结构是另人如此地难以预料,以至于这个市场的生存力都成了问题。在过去,高端科技市场是由向量计算机统治的(参见附录B),而最近则开始转向小规模并行向量计算机(典型的是4到16个处理器)。其他一些与之竞争的技术今后能否存活下来,现亦未可知。并行体系结构的分类我们将给出一个分类,让您能领略到多处理器设计方法的广度,以及占统治地位的多处理器形式的第八章多处理器机结构8-2发展背景。我们简要地叙述一下这些方法及其背后的合理性;至于这些模型是如何产生(以及经常是消亡),可以在本章末的历史回顾中找到更加具体的描述。用多处理器来增加性能、提高可靠性的想法可以追溯到最早的电子计算机。大约三十年前,Flynn提出了一个计算机分类的简单模型,至今仍十分有用。他根据机器最关键部位的指令和由指令引起的数据流的并行性,把所有的计算机分为四类:1.单指令流,单数据流(SISD)—这就是一个单处理器;2.单指令流,多数据流(SIMD)—同一指令由多个处理器执行,这些处理器使用不同数据流,有各自的数据内存(因此多数据),但共享一个指令内存和控制处理器(负责存取和发送指令)。处理器通常是专用的,不要求通用性;3.多指令流,单数据流(MISD)—这种类型的商用机器目前尚未出现,今后也许有可能;4.多指令流,多数据流(MIMD)—每个处理器存取自己的指令,操作自己的数据。它们通常就是普通的微处理器。这是一个粗略的模型,因为许多机器是这些类型的混合体。然而,它对于设计空间的框架设定还是有用的。在历史回顾中谈到,许多早期的多处理器是SIMD型的,到了八十年代,这种模型又重新获得人们的注意。然而,最近几年,MIMD开始作为一种通用多处理器体系结构出现。MIMD机器的崛起源于两个因素:1.MIMD提供弹性。在合适的软硬件支持下,MIMD可以作为高性能单用户机使用,也能同时运行多个任务,或者是高性能多任务的组合;2.MIMD可由具有价格/性能比优势的微处理器建成。事实上,目前几乎所有的多处理器使用和工作站、小型单处理器服务器一样的微处理器芯片。现有的MIMD机器基于使用的处理器数目,可以分为两类,并由此决定了存储器组织和互联方案。我们将根据存储器组织来称呼这些机器,因为处理器数目多少的量度是会随时间改变的。我们把第一种类型称为“集中式共享内存体系结构”,在九十年代,这种类型使用几十个处理器。对于处理器数目不多的多处理器,处理器间通过总线互联并共享一个集中式存储器是可能的。运用大容量高速缓存,总线和存储器可以满足小数目处理器对内存的需求。由于只有一个主存储器,不同的处理器对它的存取时间相同,因此,这些机器有时被称作UMA(UniformMemoryAccess)。这种集中共享内存体系结构是目前最为流行的组织方式。图8.1给出了这种机器的形式。8.3节将具体描述这种多处理器的体系结构。第八章多处理器机结构8-3图8.1集中式共享内存多处理器的基本结构多个处理器/高速缓存子系统共享相同的物理内存,它们一般通过总线互联。第二种类型是使用分布式存储器的机器。为了使用更多的处理器,存储器必须分布到各个处理器,而不是集中管理;否则,存储器系统将无法满足大数目处理器对存储带宽的需求。随着处理器性能的提高,以及随之而来对存储带宽需求的增长,使用分布式存储器的机器的规模将继续变小(这也是不使用小规模或是大规模的另一个原因)。当然,分布式存储器组织方式会引起对高带宽互联的需求,我们在第七章中已看到了这样的例子。图8.2是这种机器的形式。图8.2分布式存储器机器的基本结构包括了互相独立的多个节点,每个节点由一个处理器,一部分内存,一部分I/O以及对连接各个节点的网络接口节点也可以由若干个处理器组成,处理器间通过局部总线或其它不同的网络互联,通常这种网络的伸缩性要比全局互联网差些。把存储器分布到各个节点有两个优点。第一,这是一种能减少对内存带宽需求的、较为经济的方式,只要绝大部分存取只在本地存储器里进行。第二,它降低了存取延时。这两个因素使得分布式存储器在小规模处理器数目时更具吸引力,因为处理器越来越快,对内存带宽要求越来越高,而内存延时却要求处理器处理器处理器处理器一级或多级高速缓存一级或多级高速缓存处理器+高速缓存内存I/O处理器+高速缓存内存I/O处理器+高速缓存内存I/O一级或多级高速缓存处理器+高速缓存内存I/O处理器+高速缓存内存I/O处理器+高速缓存内存I/O一级或多级高速缓存互联网络主存储器I/O系统第八章多处理器机结构8-4更少。分布式存储器体系结构的主要缺点是处理器间的数据通信变得更加复杂,延时更长,因为处理器不再共享一个集中式存储器。我们很快就会看到,分布式存储器的使用导致了两种不同的处理器间通信方式。通常,I/O和内存是分布到多处理器的各个节点的,而每个节点可以拥有小数量(2—8)个使用一种不同的技术互联的处理器。尽管从价格角度看,多个处理器集蔟在一个节点,共享一个存储器和网络接口的方式十分有用,这种机器的运作方式却不是最基本的,在本章中,我们将把重点放在一个处理器对应一个节点的机器上。分布式存储器机器间的主要不同点在于通信是如何进行的,以及分布式存储器的逻辑体系结构。通信模型和存储器体系结构如前所述,任何大规模多处理器必须使用多个存储器,它们在物理上是分布到各个处理器的。有两种体系结构方式,它们在处理器间进行数据通信所用的方法是不一样的。物理上分离的存储器可以通过一个共享的逻辑地址空间来寻址,即任何处理器可以对任何存储器单元寻址,只要它具有访问权限。这种机器叫做“分布式共享内存(DSM)”或“可变共享内存”体系结构。“共享内存”是指地址空间是共享的;即,由两个处理器给出的同样的内存地址对应着同一个物理内存单元。共享内存并不意味着只有一个集中式存储器。和集中式存储器机器(UMA)相反的是,DSM机器也被称作NUMA(non-uniformmemoryaccess),因为存取时间和数据在存储器的位置有关。地址空间也可以由多个私有地址空间组成,它们在逻辑上是不连续的,不能被远端处理器寻址。在这种机器上,由两个处理器给出的同样的内存地址对应着两个不同的位置,在两个不同存储器上。每个处理器/存储器模块就是一个的计算机;因此这些机器被称为multicomputer。在前一章的结论中指出,这种机器事实上可以是由局域网互联的、彼此完全独立的多台计算机。对于通信需求很少的应用而言,这种方式恐怕是最适合的了。和地址空间组织方式相应的有各自的通信机制。对于使用共享地址空间的机器,通信可以通过隐式存取操作地址空间完成,这种机器被称作“共享内存”机器。而使用多地址空间的机器就需要通过发送消息完成处理器间的通信了,所以这种机器被称作“消息传送”机器。在消息传送机器里,当要求响应或是传送数据时,通信就会发生,就象7.2节讨论的简单网络协议一样。例如,当一个处理器需要访问或是操作位于远端存储器的数据时,它就可以发送一条请求数据或是操作数据的消息。在这种情况下,消息可以被看作“远程过程调用(RPC)”。当目标处理器通过轮循或者中断接到消息后,它就替请求方执行或者存取数据,并通过响应消息把结果发送回去。这种消息响应被称作是同步的,因为发起方处理器发出消息后,一直等到结果返回才继续运行。软件系统可以封装消息的发送和接收细节,包括传送复杂的参数、返回值,提供给程序员透明的RPC功能。通信也可以直接从数据发送方发起,当产生数据的处理器知道哪些处理器需要这个数据时,这种方式尤为有效。在这种情况下,数据可以直接被发往需要数据的处理器,而不用先发出数据请求。这种消第八章多处理器机结构8-5息通常可以被异步发送,从而允许发送方继续运行。在数据到达前,如果接收方需要这个数据,就会被阻塞;在发生阻塞前,处理器会检查是否有消息等待处理。如果接收方还没处理完上一条消息,那么发送方也必须作好阻塞的准备。不同机器上提供的消息响应功能各不相同。为了程序移植方便,人们制定了标准的消息传送库(如消息传送接口MPI)。这类库以性能换得了一致的访问接口。通信机制的性能度量对于任何通信机制,下面三种性能度量都是很重要的:1.通信带宽—理想情况下,通信带宽是由处理器、存储器和互联带宽决定的,而不是通信机制的某些方面。二分带宽由互联网络决定。和二分带宽同样重要的单一节点进出带宽则既受节点内的体系结构又受通信机制影响。那么,通信机制是如何影响一个节点的带宽的呢?当通信发生时,位于节点内和通信有关的资源就被锁住或占住,阻止了其他的进出通信。当一条消息引起这种资源独占后,它就给通信带宽设定一个界限。这个界限通常比网络或存储器系统所能提供的带宽要低。资源独占也可能是由通信事件的发生引起的,如数据进出请求。在这种情况下,资源独占限制了通信速度,其对整个通信带宽的影响取决于消息的大小。2.通信延时—理想情况下,通信延时是可以尽可能的小的。正如第七章所述,通信延时等于:发送方开销+飞行时间+传输延时+接收方开销。飞行时间是确定的,传输延时由互联网络决定。发送方和接收方的软硬件开销在很大程度上取决于通信机制及其实现。为什么延时很关键?延时对性能和多处理器设计的难易都有影响。除非隐藏了延时,它将锁住处理器资源或者使处理器等待,从而影响了整体性能。开销和资源独占是紧密相关的,因为不同形式的开销都和节点的某一部分相关,从而带来了独占开销,并进一步限制了带宽。一种通信机制的主要特点可能直接影响开销和资源独占。例如,远程通信的目标地址是如何命名的,