8.2.3多处理机性能模型
当多处理机系统以峰值速度运行时,所有处理机都在做着有用的工作,没有一台处理机处于空闲状态。这种情况下,多处理机系统中的N台处理机对系统的性能都有贡献,系统的处理速度随着N的增加而增加。
实际上,峰值性能是很难达到的。引起性能下降的原因是:
(1)由于处理机之间通信而产生的延迟。
(2)一台处理机与其它处理机同步所需的开销。
(3)当没有足够多任务时,一台或多台处理机处于空闲状态。
(4)由于一台或多台处理机执行无用的工作。
(5)系统控制和操作调度所需的开销。
串行计算机的开销主要是调度和同步。下面我们研究上述因素是怎样降低多处理机性能的。
一台高性能的向量处理机是可以避免上述许多因素的,但也会损失一些性能,因为不能保证所有处理单元都处于忙状态。特别是当一个计算问题不能转化为一系列向量操作时,这个问题就尤为突出。
多处理机系统的设计者和制造者要密切注意上面提到的各种导致性能下降的因素。这些因素可能使系统的性能下降得很严重。例如,由于上述各种各样的因素使得一个系统的实际效率竟只有峰值效率的10,那么一个由10台处理机组成的多处理机系统仅仅做了相当于一台处理机所做的工作。
幸运的是,对一个处理机数目较少的系统,如果精心设计,那么性能下降的值可以较小,但是随着处理机数目的增加,性能下降会逐渐增加。存在着这么一个点,如果再增加处理机数目,系统的计算时间反而增加而不是缩短。
目前市场上可买到的多处理机系统一般是由少量几台的处理机组成,例如4,8或16台处理机,其根本原因是随着处理机数目的增加,多处理机系统的工作效率会降低。因此,目前高速的系统一般由高速的器件构成,而处理机的数目较少。
例如Cray XMP系统由4台Cray 1组成。IBM 309X系列的机器由1台至6台处理机构成。这两个系统都是通过采用非常高速的器件。采用Cache存储器和流水线技术来获得非常高的性能。
这些机器的用户一般需要比单机的功能更强的系统才能解决他们的问题。由于单机的性能受到系统结构和器件技术的限制,所以在单机上再要提高性能不太容易了。一个有效的方法是把两台或四台相同的处理机连在一起获得所要求的性能。
有些计算机系统结构设计者注意到曾在第一章讨论过的成本问题。第一章讨论表明了采用高速器件的成本要比采用低速器件的成本高。
此外,目前的情况是采用高速器件会使整个系统的成本增加很多,而能得到的性能没有这么多。因此,高速机器的单位计算能力的成本要比低速机器高。虽然这一趋势还与系统结构所采用的技术有关,并且会随时间而变化。因为低速器件技术有成本低廉的优势,所以就有可能把成千上百台低速低成本的处理机连结成一个性能价格比很好的系统。
采用低成本技术会带来成本上的好处,但是系统的效率随着处理机数目的增加而降低。如果系统由于处理机数目太多而效率降低得非常厉害,那么用上百台低速处理机构成一个系统还不如用少量几台高速处理机构成一个系统。
此外,几百台处理机构成的系统的程序设计要比单处理机或少量几台处理机构成的系统的程序设计复杂。所以,虽然用几百台低速处理机构成的系统在经济上很有吸引力,但是如果效率很低,那么这种系统结构的优点也就不存在了。
由此可见,多处理机系统的并行性没有什么特别的魅力,只有当并行性带来较高的性能时,它才产生效益。如果并行性不能被有效地发掘出来,那么它只会增加系统的成本和复杂性。出现这种情况时,只有降低并行性直到能获得效益为止。
我们将分析多处理机系统的性能和由于并行性所带来的额外开销问题.重点是介绍多处理机系统性能的几种模型。
从这一节我们可以看到,很大程度上性能依赖于R/C比值,其中R代表程序的执行时间,C代表用于通信的开销,该比值表示每一单位计算的开销。如果R/C比值很小,那么开发并行性不会得到什么好处。如果R/C比值很大,那么开发并行性会得到好处。如果把一个计算作业分解成较大的作业块,那么就能得到较大的R/C比值,但是所得到的并行性比最大可能的并行性要小得多。
R/C比值是衡量任务粒度(Task Granularity)大小的尺度。在粗粒度(Coarsegrain)并行情况下,R/C比值比较大,每个单位计算只需要少量的通信。在细粒度(Finegrain)并行情况下,R/C比值比较小,每个单位计算有很大的通信量和其它的开销。通常,细粒度并行性需要许多台处理机,而粗粒度并行性只需较少台数的处理机。细粒度并行性的基本原理是把一个程序尽可能地分解成能并行执行的小任务。在极端情况下,一个小任务只完成一个操作。通常,一个小任务包含几条指令。
程序员为了获得最高的性能,总是想方设法把一个问题分成尽可能小的粒度,以便得到最大的并行性。但是如果最大的并行性同时带来了最大的开销,那么很显然最大并行性并不一定是最佳的解决问题方法。
下面将提出一系列不同的性能模型,其主要目的在于揭示R/C比值的大小对性能好坏的影响是普遍的。下面的讨论将说明细粒度分配所产生的性能比粗粒度分配差的原因。虽然细粒度分配有较高的并行性,但不一定使系统有较高解决问题的速度。
之所以提出一系列不同的性能模型的原因,在于到目前为止还没有一种模型能完全反映所有多处理机结构和多处理机算法的特征,所以我们提出一系列不同的模型,以便能反映不同程序和不同多处理机系统结构的特征。不管哪一种模型,R/C的作用是相同的,即较低的R/C比值由于较大的额外开销而导致较低的性能;较高的R/C比值其并行性开发较低。欲获得最佳性能,有必要对并行性和额外开销进行综合考虑。模型之间唯一差别在于并行性和额外开销这两个参数达到平衡的程度不同。
下面将介绍性能模型。为了简化模型,我们忽略了系统中的同步和竞争。由于这些忽略会使预测的性能比系统实际性能好一些。在大多数情况下,可以采用增大任务粒度来弥补由于以上忽略而造成的影响。