网页素材.docx
《网页素材.docx》由会员分享,可在线阅读,更多相关《网页素材.docx(35页珍藏版)》请在冰豆网上搜索。
网页素材
多处理机
两个或两个以上处理机(包括PU和CU),通过高速互连网络连接起来,在统一的操作系统管理下,实现指令以上级(任务级、作业级)并行。
按照佛林Flynn分类法,多处理机系统属于MIMD计算机系统。
1多处理机结构
2多处理机性能模型
3多处理机的Cache一致性
4多处理机实例
5多处理机并行算法
1多处理机结构
1.1松散偶合多处理机
1.2紧密偶合多处理机
1.3多处理机系统的特点
多处理机系统由多个独立的处理机组成,每个处理机都能够独立执行自己的程序。
它有多种分类方法:
按照处理机之间的连接程度:
紧密偶合多处理机和松散偶合多处理机。
按照是否共享主存储器:
共享主存多处理机和分布主存多处理机。
按照处理机是否相同:
同构型多处理机和异构型多处理机。
按照处理机的个数:
大规模并行处理机MPP和对称多处理机SMP。
按照PE与IOP之间互连方式:
对称型:
每个IOP能够连接到所有PE上
非对称型:
每个IOP只与一个PE连接。
冗余对称型:
一个PE与多个IOP连接。
按照存储器的访问方式:
均均存储器,简称UMA模型
非均均存储器,简称NUMA模型
只有Cache存储器,简称COMA模型
另外,多向量处理机,机群(Cluster)系统等也称为多处理机系统。
以下用松散偶合和紧密偶合两种类型说明多处理机的基本结构。
1.1松散偶合多处理机
处理机之间的连接频带比较低,一般通过输入输出接口连接。
处理机之间互为外围设备进行连接。
例如,IBM公司的机器,都可以通过通道到通道的连接器CTC(ChannelToChannel)把两个不同计算机系统的IOP连接起来。
可以通过并行口或串行口把多台计算机连接起来。
例如,用串行口加一个MODEL拨号上网,也可以直接连接;多台计算机之间的连接需要有多个接口。
Ethernet通过网络接口连接多台计算机。
速度达10Mb,100Mb,1Gb。
Mynet已经达到1.28Gb和2.56Gb。
当通信速度要求更高时,可以通过一个通道和仲裁开关CAS(ChannelandArbiterSwitch)直接载存储器总线之间建立连接。
CAS中有一个高速的通信缓冲存储器。
1.2紧密偶合多处理机
处理机之间共享主存储器,通过高速总线或高速开关连接。
主存储器有多个独立的存储模块。
每个CPU能够访问任意一个存储器模块,需要通过映象部件MAP把全局逻辑地址变换成局部物理地址。
通过互连网络寻找合适的路径,并分解访问存储器的冲突。
多个输入输出处理机IOP也连接载互连网络上,输入输出设备与CPU共享主存储器。
处理机个数不能太多,一般几个到十几个。
紧密偶合方式要求有很高通信频带。
可以采用如下措施:
1、采用高速互连网络
2、增加存储器模块个数,一般nm,取1~2倍之间。
3、每个存储器模块再分成多个小模块,并采用流水线方式工作。
4、每个CPU都有自己的局部存储器LM。
5、每个CPU设置一个Cache。
1.3多处理机系统的特点
多处理机实现任务一级的并行,有如下特点。
1、结构灵活
并行处理机:
专用,PE数很多(几万个),固定有限的通信
多处理机:
通用,几十个,高速灵活的通信
2、程序并行性
并行处理机的并行性存在于指令内部,识别比较容易。
多处理机的并行性存在于指令外部,在多个任务之间,识别难度较大。
一个简单的例子:
Y=A+B*C*D/E+F。
用两个处理机。
CPU1:
B*C,A+F,A+B*C*D/E+F
CPU2:
D/E,B*C*D/E,
3、并行任务派生
并行处理机把同种操作集中在一起,由指令直接启动各PE同时工作。
多处理机采用专门的指令来表示并发关系,一个任务开始执行时能够派生出与它并行执行的另一些任务。
如果任务数多于处理机数,多余的任务进入排队器等待。
4、进程同步
并行处理机仅一个CU,自然是同步的。
多处理机执行不同的指令,工作进度不会也不必保持相同。
先做完的要停下来等待。
有数据相关和控制相关也要停下来等待。
要采取特殊的同步措施来保持程序所要求的正确顺序。
5、资源分配和进程调度
并行处理机的PE是固定的,采用屏蔽手段改变实际参加操作的PE数目。
多处理机执行并发任务,需用处理机的数目不固定,各个处理机进入或退出任务的时刻不相同,所需共享资源的品种、数量又随时变化。
因此提出了资源分配和进程调度问题,它对整个系统的效率有很大的影响。
2多处理机性能模型
引起峰值性能下降的原因是:
(1)由于处理机之间通信而产生的延迟。
(2)一台处理机与其它处理机同步所需的开销。
(3)当没有足够多任务时,一台或多台处理机处于空闲状态。
(4)由于一台或多台处理机执行无用的工作。
(5)系统控制和操作调度所需的开销。
研究多处理机的目的:
提前5年得到速度高10倍的机器。
或用1/10的价格获得一台高性能的机器。
如果设计得好,在某些适合进行并行处理得应用领域,可以达到:
提前10年得到速度高100倍的机器。
或用1/100的价格获得一台高性能的机器。
并行性在很大程度上依赖于R/C比值,
其中:
R代表程序执行时间,C代表通信开销。
通常:
R/C比值小,并行性低。
R/C比值大,并行性高。
如果把作业分解成较大的块,就能得到较大的R/C比值,但是所得到的并行性比最大可能的并行性要小得多。
R/C比值是衡量任务粒度(TaskGranularity)大小的尺度。
在粗粒度(Coarsegrain)并行情况下,R/C比值比较大,通信开销小。
在细粒度(Finegrain)并行情况下,R/C比值比较小,通信开销大。
细粒度并行性需要的处理机多,粗粒度并行性需要的处理机少。
细粒度并行性的基本原理是把一个程序尽可能地分解成能并行执行的小任务。
在极端情况下,一个小任务只完成一个操作。
2.1基本模型
一个由M个任务组成的应用程序,在N台处理机组成的系统上运行,求最快的执行速度。
为了简单起见,基本模型仅考虑由两台处理机组成的系统。
总处理时间=Rmax(M-K,K)+C(M-K)K
其中:
R是每个任务的执行时间,
C为通信所需的额外开销,
K是任务分配参数。
直观看:
当通信时间比较小时,把M个任务平均分给两台处理机,
当通信时间很大时,把M个任务分配给一台处理机。
从图中看:
通信时间:
C(M-K)K是一个开口向下的二次函数,
任务执行时间是两根相交的直线。
当通信时间比较大时,总时间的最小值发生的两个端点,
当通信时间比较小时,总时间的最小值发生的中点。
结论:
(1)总时间的最小值只可能出现在中点或两个端点,
(2)如果总时间的最小值发生在中点(即M个任务平均分给两台处理机),必须满足:
MR>RM/2+CM/2M/2
R/C>M/2
总时间最短的结论是:
当R/C<M/2时,把所有任务分配给同一台处理机,K=0;
当R/C>M/2时,把任务平均地分配给两台处理机,K=M/2。
2.2N台处理机系统的基本模型
现在讨论:
M个任务分配给N台处理机,求总处理时间的最小值。
实际的最小值发生在极端分配情况下,或者将所有的任务集中在一台处理机上,或者将任务平均分配给所有处理机。
先讨论平均分配方法:
4个任务平均分给3台处理机(P):
方案
P1
P2
P3
执行时间
通信时间
总处理时间
一
2
1
1
2R
5C
2R+5C
二
2
2
0
2R
4C
2R+4C
11个任务平均分给5台处理机(P):
方案
P1
P2
P3
P4
P5
执行时间
通信时间
总处理时间
一
3
2
2
2
2
3R
48C
3R+48C
二
3
3
2
2
1
3R
47C
3R+47C
三
3
3
3
2
0
3R
45C
3R+45C
M个任务平均分配给N台处理机的最佳分配方法:
有
台处理机,每台分给
个任务;
如果M/N≠0,则:
另有1台处理机分得剩下的
个任务;
剩下的
台处理机不分配任何任务。
例如:
101个任务平均分给50台处理机:
有33台处理机,每台分给3个任务;
另有1台处理机分给2个任务;
剩下的16台处理机不分配任务。
假设Ki个任务分给了第i台处理机:
第一项求出N台处理机中最大执行时间;
第二项计算出Ki与(M-Ki)任务之间两两通信的开销时间;
第二项是关于Ki的二次函数。
其中,Ki最多有3个取值:
、
、0
当M是N的倍数时,有:
当R/C>M/2时采用平均分配方法,
当R/C<M/2时采用集中分配方法。
多处理机系统的加速比:
一个计算问题在一台处理机上运行时间与在多处理机系统上运行时间的比值称为多处理机系统的加速比,计算如下:
当M是N的倍数时,有:
如果M和N较小,R/C较大,即分母中的第一项远大于第二项,则加速比与处理机台数N成正比。
当处理机台数N很大,加速比≈
,即加速比趋近于一个常数。
这时如果再增加处理机,性能的提高很小,与所增加的成本相比是不值得的。
2.3通信开销为线性函数的模型
每个任务要和其它所有任务通信,而通信的内容相同。
实际上只需向每台处理机发送一次信息就可以了,当该信息到达某一台处理机后,在这一台处理机中的任务之间的信息传递就不必花费通信代价了。
把M个任务分配给N台处理机时,总执行时间为:
当M是N的倍数时,总处理时间=RM/N+CN
很明显,这个函数有一个极小值。
(RM/N+CN)N‘=0
解得:
因此得到最小的总处理时间:
这种模型的加速比为:
当M是N的倍数时,该多处理机系统的最大加速比为:
2.4通信与计算完全重叠的模型
由于通信与计算可以在两个独立的功能部件中进行,因此,能够采用重叠或流水线方式并行进行。
下面给出一个理想的模型,它的通信与计算完全重叠。
对于两台处理机的系统,当R/C<M/2时,执行时间与通信时间的交点就是总处理时间的最小值;当R/C>M/2时,采用平均分配方法,在这一点运行时间足够长,完全能够屏蔽通信时间。
直线与二次曲线的交点是关键点:
R(M-K)=C(M-K)K
即:
K=R/C(其中:
1≤K≤M/2)
总处理时间=R(M-R/C)
两台处理机系统的加速比在1与2之间;
当R/C=M/2,即把任务平均分配给两台处理机时,加速比最大;当R/C逐渐减为1时,加速比也逐渐减为1,最优分配变得越来越不均衡了。
至于N台处理机的系统:
当N比较大时,近似为:
处理机数目N由下面一个关于R/C和M的函数式给出:
2.5具有多条通信链的模型
允许通信链路随N的增加而增加,让每台处理机与别的任何一台处理机都有专门的链路相连。
每台处理机或者在进行计算,或者在传送信息,或者是空闲。
当任务数M是处理机数N的倍数时,尽可能平分任务可以使总处理时间达到最小:
把处理机台数N作为自变量,这个函数有一个极大值。
由于分母大于1,因此总处理时间的极大值出现在N<2的时候,即
当N>=2时,随着处理机台数N增加,总处理时间肯定减小。
为了验证N台处理机是否比一台处理机效果更佳:
相等点在:
在相等点参数R/C与N成反比例,N越大,允许的粒度越小;N台处理机的总性能等价于一台处理机,因此肯定不会在相等点使用多处理机系统。
另外,随着处理机台数增加和互连网络复杂,它所获得的性能改善与所付出的代价相比,可能是不合算的。
总结上面几个模型,可以得出如下结论:
(1)多处理机系统结构所需的额外开销,包括调度,对共享资源的竞争,同步,处理机之间通信等。
(2)当处理机台数增加时,额外开销时间也增加;实际上,额外开销的增加可能比处理机数目的线性增加更快。
(3)R/C比值越大,越有利于计算过程。
如果采用粗粒度,能够获得较大的R/C比值;但是并行程度将大为降低。
(4)为了使系统的价格和性能都比较合理,处理机数目实际上存在一个极大值,这个值主要依赖于机器的系统结构、基本技术(尤其是通信技术)和具体的应用问题。
3多处理机的Cache一致性
在并行处理机和多处理机系统中,采用局部Cache会引起Cache与共享存储器之间的一致性问题。
3.1问题由来
3.2监听协议
3.3基于目录的协议
3.1问题由来
出现不一致性问题的原因有三个:
共享可写的数据
进程迁移
I/O传输。
1、写共享数据引起的不一致性
使用多个局部Cache时,可能发生Cache不一致性问题:
共享可写数据引起的Cache不一致性
当P1把X的值写为X’之后,如果P1采用写通过方式,内存中的内容也变为X’,但是P2处理机Cache中的内容还是X。
如果P1采用写回策法,内存中的内容还是X,当P2处理机要读X时,读到的是X而不是X’。
2、进程迁移引起的数据不一致性
P1和P2中都有共享数据X的拷贝,P2修改了X,并采用写通过方式,所以内存中的X修改成了X’。
如果该进程迁移到P1上,这时,P1的Cache中仍然是X。
P1中有共享数据X的拷贝,而P2中没有该共享数据,P1进程对X进行了修改,如果采用了写回方式,暂时没有对内存中的数据进行修改。
如果该进程迁移到了P2上,P2运行时从内存中读到是X。
3、I/O造成数据不一致性
如果P1和P2在各自的局部Cache中都有X的拷贝,当I/O将一个新数据X’写入存储器时就导致了存储器和Cache之间的数据不一致性。
如果两个局部Cache中都有X的拷贝,并采用写回方式,当P1把X修改成X’之后,输出部件读X,存储器就把X传给了输出部件。
一种解决I/O操作引起数据不一致性的方法是把I/O处理机分别连接到各自的局部Cache上。
这样,I/O处理机就能和CPU共享Cache。
只要能够保证各Cache之间以及Cache和内存之间的数据一致性,就能够保证I/O操作的一致性。
I/O传输引起的Cache不一致性
有两类解决Cache不一致性问题的协议:
监听协议和基于目录的协议。
3.2监听协议
在总线互连的多处理机系统中,解决Cache不一致性通常采用监听协议。
在其他多处理机系统中,解决Cache不一致性通常采用基于目录协议。
1、两种监听协议
使用监听协议,有两种方法:
方法一:
写无效(WriteInvalidate)策略,在本地Cache的数据块修改时使远程数据块都无效。
方法二:
写更新(WriteUpdate)策略,在本地Cache数据块修改时通过总线把新的数据块广播给含该数据块的所有其他Cache。
采用写无效或写更新策略与Cache采用写回方式(WriteBack)还是写通过方式(WriteThrough)无关。
如果Cache采用的写通过方式,在使远程数据块
无效或更新其他Cache的同时,还要同时修改共享存储器中的内容。
Cache采用写通过方式时的写无效策略和写更新策略
由于写更新策略在本地Cache修改时需要通过总线把修改过的数据块广播给所有含该数据块的其他Cache,增加了总线的负担。
大部分多处理机系统使用写无效策略。
2、采用写通过方式的Cache
数据块有两种状态:
有效和无效。
有效表示该数据块内容正确,这两种状态的转换如下图:
采用写通过方式的Cache状态图
RL、WL表示本地处理机对Cache的读操作和写操作,
RR、WR表示远程处理机对Cache中相同内容数据的读操作和写操作。
3、采用写回方式的Cache
只读状态表示整个系统中有多个数据块拷贝是正确的,
读写状态表示数据块至少被修改过一次,存储器中相应数据块还没有修改,即在整个系统中只有一个数据块拷贝是正确的。
对于只读的数据块,本地的和远程的读操作都是安全的,本地的写操作将使状态转移为读写,远程的写操作将使之变为无效。
对于读写状态的数据块,本地的读、写操作都是安全的,而远程的读操作将数据块传递给远程处理机的Cache,使两个Cache都转移至只读状态,远程写操作使远程处理机Cache转移至读写状态,而本地Cache转移至无效状态。
对于无效状态,本地读操作,使状态转移至只读;本地写操作,使状态转移至读写,同时使其他Cache中相应数据块的状态转移为无效状态;其他操作不会引起从无效状态向其他状态的转移
4、写一次(Write-Once)协议
1983年JamesGoodman提出写一次Cache一致性协议。
方法:
第一次写Cache采用写通过方式,以后采用写回方式。
整个系统中只有一份正确的拷贝。
为了区分第一次写,把“读写”状态分为:
“保留(Reserved)”和“重写(Dirty)”。
共有4种状态
(1)有效(Valid,相当于写回方式中的只读):
从存储器读入的并与存储器一致的Cache数据块。
(2)无效(Invalid):
在Cache中找不到或Cache中的数据块已作废。
(3)保留(Reserved):
数据从存储器读入Cache后只被写过一次,Cache和存储器中的拷贝都是正确。
(4)重写(Dirty):
Cache中的数据块被写过多次,而且是唯一正确的数据块,此时存储器中的数据块也不是正确的。
写一次协议的状态图
图中,Rl、Rr、Wl、Wr分别表示本地读、远程读、本地写、远程写。
●CPU读Cache:
有两种可能性。
(1)数据块在Cache中存在(包括有效、保留或重写),
CPU直接读取数据,Cache状态不变。
(2)Cache中的数据块处于无效状态。
如果存在处于有效、保留或重写状态的相应数据块,则将其调入本地Cache;在相应数据块处于重写状态时,还要同时禁止存储器操作。
如果不存在处于有效、保留或重写状态的相应数据块,则直接从存储器中读入(只有存储器中是唯一正确的饿拷贝)。
把读入Cache中的相应数据块置为“有效”状态。
●CPU写Cache:
也有两种可能。
(1)写命中,当Cache处于“有效”状态时,采用写通过方式,把写入Cache的内容同时写入存储器,将Cache的状态转移为“保留”,将其他Cache的相应数据块状态置为“无效”;
当Cache处于“保留”或“重写”态时,使用写回方式,Cache的状态转移至“重写”,其他的存有相同内容的Cache处于“无效”态。
(2)写不命中,将数据块调入Cache,采用写通过方式,同时写存储器;将本地Cache的状态置为“保留”,同时将其他Cache的状态置为“无效”。
●写一次协议的主要优缺点:
优点:
减少大量的无效操作,提高了总线效率。
缺点:
当主存储器的内容无效时,读缺失引起的总线读操作必须禁止访问主存储器,而大多数总线不支持这种操作。
IEEEFuturebus+总线支持该操作。
3.3基于目录的协议
在非总线结构的多处理机系统中,采用基于目录的Cache一致性协议。
1、Cache目录结构
Cache目录中存放的内容是大量的指针,用以指明块拷贝的地址,每个目录项还有一个重写位,指明是否有一个Cache允许写入数据。
根据Cache目录的存放形式,有集中式和分布式两种。
根据目录的结构,目录协议分成三类:
全映射(Full-Map)目录:
存放全局存储器中每个块的有关数据。
有限(Limited)目录:
每个目录项的指针数固定。
链式(Chained)目录:
把目录分布到所有Cache中。
目录的使用规则:
当一个CPU对Cache进行写操作时,要根据Cache目录中的内容将所有其他存有相同内容的Cache拷贝无效,并置重写位。
在CPU对Cache进行读操作时,如果读命中,直接读Cache即可。
如果重写位为“0”,则从主存或其他Cache中读入该块,并修改目录。
2、全映射目录
目录项中有N个处理机位和一个重写位。
处理机位表示相应处理机对应的Cache块的状态。
重写位为“1”,且只有一个处理机位为“1”,则该处理机可以对该块进行写操作。
Cache的每个数据块有两个状态位。
一位表示数据块是否有效,另一位表示有效块是否允许写。
全映射目录的三种状态
图(a)表示全系统中所有Cache中都没有X的拷贝。
图(b)表示三个处理机都对X有过读请求。
图(b)表示P3处理机获得对X的写权之后的状态。
从第二种状态转移至第三种状态的过程如下:
(1)Cache3发现包含X单元的块是有效的,但是不允许写。
(2)Cache3向包含X单元的存储器模块发写请求,并暂停P3的工作。
(3)该存储器模块发无效请求至Cache1和Cache2。
(4)Cache1和Cache2接到无效请求后,将对应块置为无效态,并发回答信号给存储器模块。
(5)存储器模块接到Cache1和Cache2的回答信号后,置重写位为“1”,清除指向Cache1和Cache2的指针,发允许写信号到Cache3。
(6)Cache3接到允许写信号,更新Cache状态,并激活P3。
全映射目录协议的效率比较高。
但开销与处理机数目的平方成正比,不具有扩展性。
3、有限目录
当处理机数目为N时,限制目录大小为O(Nlog2N)。
目录指针需要对N进行二进制编码,每个指针占log2N位,目录所占的总存储空间与(Nlog2N)成正比。
当Cache1和Cache2中都有X的拷贝时,若P3请求X,则必须在Cache1和Cache2中选择一个使之无效,这种替换过程称为驱逐。
有限目录的驱逐需要一种驱逐策略,驱逐策略的好坏对系统的性能具有很大的影响。
驱逐策略与Cache替换策略在很多方面是相同的。
4链式目录
通过维护一个目录指针链来跟踪共享数据拷贝。
当P1读X时,存储器送X到Cache1,同时写Cache1的一个链结束指针CT,在存储器中也保存一个指向Cache1的指针。
当P2读X时,存储器送X给Cache2,同时给Cache2一个指向Cache1的指针,存储器则保存一个指向Cache2的指针。
当某一个处理机需要写X时,它必须沿整个目录链发送一个数据无效信息。
在收到所有相关处理机的回答信号之后,存储器才给该处理机写允许权。
当Cache中的数据块需要替换时,要把该Cache从目录链中删除。
有如下解决办法:
(1)把Cachei+1的指针指向Cachei-1。
在Cachei中可以存放别的数据块。
(2)使Cachei及在链中位于其后的所有Cache中的单元X无效。
(3)使用双向链。
在替换时不再需要遍历整个链。
但指针增加了一倍,一致性协议也更加复杂。
优点:
不限制共享数据块的拷贝数目,又保持了可扩展性。
指针的长度以处理机数目的对数关系增长,Cache的每个数据块的指针数目与处理机数目无关。
缺点:
链式目录的复杂程度超过了前两种目录。
4多处理机实例
多处理机系统主要有四大类:
(1)多向量处理机系统:
如:
CRAYYMP-90,NECSX-3和FUJITSUVP-2000
(2)SMP(SymmetryMultiProcessors)对称多处理机
SMP(SharedMemorymulptiProcessors)共享存储多处理机
如:
SGI