计算机系统结构(第二版)尹朝庆主编-第6章_多处理机.ppt
《计算机系统结构(第二版)尹朝庆主编-第6章_多处理机.ppt》由会员分享,可在线阅读,更多相关《计算机系统结构(第二版)尹朝庆主编-第6章_多处理机.ppt(105页珍藏版)》请在三一办公上搜索。
1、1,第6章 多处理机,6.1 多处理机的结构与特点6.2 多处理机的Cache一致性6.3 多处理机的软件6.4 多处理机的性能6.5 MIMD并行机结构模型,2,多处理机具有两台以上处理机,每台处理机可以带有本地Cache、本地存储器、甚至I/O设备,它们都能独立执行各自的程序。多台处理机之间通过总线、纵横交叉开关、多级互连网络或高速的商品化网络实现互连。多处理机可以通过共享存储器,也可以通过消息传送系统来实现处理机间的通信。多台处理机在操作系统的控制下,实现资源的统一分配与调度。,3,6.1多处理机的结构与特点,6.1.1 多处理机的结构多处理机在系统结构上可分为两类:紧耦合多处理机松耦合
2、多处理机,4,紧耦合多处理机紧耦合多处理机是通过共享主存来实现处理机间的通信的。各处理机与主存之间通过一个互连网络连接。它的典型结构如图6.1所示。,5,在紧耦合多处理机系统中,为了减少处理机访问主存的冲突而采取的措施有:多处理机的主存采用多模块交叉存取。模块数越多,发生访主存冲突的概率将越低,但必须解决好数据在各存储器模块中的定位和分配。让每台处理机拥有一个小容量的本地存储器,用来存放频繁使用的核心代码等,以减少对主存的访问。让每台处理机都有一个Cache,以减少对主存的访问。但要解决好Cache与主存之间以及各个Cache之间的数据一致性问题。,6,紧耦合多处理机按所用处理机类型是否相同可
3、分为同构型和异构型两种。而按其对称性又可分为对称式多处理机和非对称式多处理机。如果紧耦合多处理机中的每台处理机在访问任意一个存储器模块或I/O用设备时,都具有同等的能力,那么这个系统就具有对称性。反之,表示多处理机是非对称的。一个多处理机要成为对称式多处理机必须满足两个条件:首先存储器必须是集中共享的,其次系统所用的互连网络也必须是对称的。,7,具有非对称I/O子系统的多处理机如图6.2所示。,8,采用冗余连接非对称I/O子系统的多处理机如图6.3所示,9,在紧耦合多处理机中,常见的组合是同构对称式多处理机及异构非对称式多处理机。1)同构对称式多处理机 Sequent公司生产的Balance多
4、处理机就是同构对称式的,它的结构如图6.4所示。,10,11,2)异构非对称式多处理机异构非对称式多处理机的一般结构如图6.5所示。,12,2.松耦合多处理机松耦合多处理机是通过消息传送方式来实现处理机间的相互通信的。每台处理机是由一个独立性较强的计算机模块组成,该模块由处理器、较大容量的本地存储器(在运算时所需的绝大部分的指令和数据均取自本地存储器)、I/O设备以及网络接口电路组成。各模块之间通过消息传送系统(MTS)相连接。当不同模块上运行的进程间需要通信时,通过网络接口电路及消息传送系统进行信息交换。由于这种相互间的耦合程度是很松散的,因此称之为松耦合多处理机。,13,松耦合多处理机可分
5、为层次式和非层次式两种结构。1)松耦合非层次式多处理机图6.6所示是一个典型的通过消息传送系统进行互连的松耦合非层次式多处理机。,14,2)松耦合层次式多处理机松耦合层次式多处理机采用多级总线实现层次连接。图6.7所示为卡内基梅隆大学研制的Cm*松耦合层次式多处理机。,15,6.1.2 多处理机的特点灵活性和通用性强 高层次的并行性等级 并行任务派生 进程同步 资源分配和任务调度,16,6.2 多处理机的Cache一致性,Cache作为提高系统性能的一种技术手段在计算机系统中得到普遍的使用。在共享存储器的多处理机中,每台处理机都有自己的局部Cache。这类多处理机在运行一个具有多个进程的程序时
6、,各处理机可能会使用到共享存储器中的同一数据块,为维持多处理机的高速运行,这些共享数据块将被调入各处理机的局部Cache中。由于多个处理机是异步地独立操作,可能使共享存储器中同一数据块的不同Cache拷贝出现不一致,就可能危及系统的正常运行,这就是Cache的一致性问题。,17,6.2.1 出现Cache一致性问题的原因出现Cache一致性问题的原因主要有3个:共享可写的数据进程迁移I/O传输,18,1共享可写数据引起的不一致 假设在写操作之前,Cache的初始状态如图6.8(a)所示。处理机P1和P2的局部高速缓冲存储器Cache1和Cache2中分别有共享存储器的某个数据x的副本。,19,
7、若采用写直达法,如图6.8(b)所示,当处理机P1改写Cache1中的数据为x时,共享存储器中的相应数据也立即更新为x,这将导致Cache1中的数据与Cache2中所缓存的数据不一致。,20,若采用写回法,如图6.8(c)所示,当处理机P1改写Cache1中的数据为x时,Cache1的变化不会引起Cache2和共享存储器的变化,这将导致Cache1中的数据与共享存储器和Cache2中所缓存的数据不一致。,21,2进程迁移引起的不一致 在多处理机上,有时为了提高系统的效率而允许进程迁移,将一个尚未执行完而被挂起的进程调度到另一个空闲的处理机上去执行,使系统中各处理机的负荷保持均衡。但这样做可能会
8、造成Cache一致性问题。假设在迁移前Cache的初始状态仍如图6.9(a)所示,处理机P1的Cache1中有共享存储器中数据x的拷贝,而处理机P2的Cache2中没有该数据。,22,若采用写直达法,如图6.9(b)所示,当某进程从P1迁移到P2后,处理机P2在执行此进程时需要使用数据x时,会将x所在块由共享存储器调入Cache2。假设进程运行时将Cache2的数据x改写为x,在共享存储器中的相应数据也立即更新为x,这将导致共享存储器和Cache2中的数据与处理机P1中Cache1所缓存的数据的不一致。,23,若采用写回法,如图6.9(c)所示,当处理机P1修改Cache1中的数据成x时Cac
9、he1的变化不会引起共享存储器的变化。当某进程从P1迁移到P2后,处理机P2在执行此进程时需要使用数据x时,会将x所在块由共享存储器调入Cache2。此时调入的数据x并非是已经修改过的x,这将导致共享存储器及Cache2与处理机P1中Cache1所缓存的数据的不一致。,24,3I/O操作引起的不一致 假设在执行I/O操作之前,Cache的初始状态如图6.10(a)所示。处理机P1和P2的局部Cache中分别有共享存储器的某个数据x的拷贝。,25,若采用写直达法,当I/O处理机执行输入操作,直接将共享存储器中的数据x改写成x时,将导致Cache1和Cache2中的数据与共享存储器数据的不一致,如
10、图6.10(b)所示。,26,若采用写回法,当处理机P1将Cache1中的数据x改写为x时,由于Cache1数据的修改不会立即引起共享存储器中数据x的更新,此时若此数据恰好被I/O处理机输出,就会造成输出错误,如图6.10(c)所示。,27,解决多处理器维护Cache一致性的协议称为Cache一致性协议。实现Cache一致性协议的关键是跟踪共享数据块的状态。目前有两类协议,它们采用了不同的共享数据状态跟踪技术,分别适合于不同的系统结构。(1)监听:每个Cache除了包含物理存储器中块的数据拷贝之外,也保存着各个块的共享状态信息。这是一种基于总线的一致性协议,各处理机通过监听总线上处理机与存储器
11、之间的Cache操作事件,对各自局部Cache中的数据采取保持一致性的措施。(2)目录:物理存储器中共享数据块的状态及相关信息均被保存在一个称为目录的地方。共享数据块的变化通过此数据块所在的各目录项,将一致性命令发给所有存放该数据块拷贝的Cache。,28,6.2.2 监听一致性协议 在基于总线互连结构的系统中,各处理机的Cache都连接到公共总线。一般都采用监听协议,通过总线监听机制实现高速缓存和共享存储器之间的数据一致性。监听协议有两种策略来保持Cache一致性:写无效策略写更新策略,29,1.写无效策略 写无效策略是指在某局部Cache数据被修改后,使所有其它Cache中的相应数据拷贝都
12、无效。假设在写操作之前,Cache的初始状态如图6.11(a)所示。处理机P1和P2的局部Cache中都存有共享存储器中数据x的拷贝,图中数据x加虚线框表示数据x所在的数据块。当处理机P1要进行写操作时,它必须首先获得对x的唯一访问权,然后更新数据为x并使Cache2中的相应数据块拷贝失效(标志为I)。,30,若采用写直达法,则共享存储器中的数据x将会立即更新为x,如图6.11(b)所示。当处理机P2访问已修改的数据x时,会发生Cache2失效并从共享存储器中读取新值x,同时将x所在数据块调入Cache2。,31,若采用写回法,则共享存储器中数据x所在的数据块也将被设置为无效,如图6.11(c
13、)所示。当处理机P2访问已修改的数据x时,会发生Cache2失效并从处理机P1的Cache1读取新值x,同时将x所在数据块调入Cache2并且更新共享存储器中的相应数据块。,32,2.写更新策略 写更新策略是指在某局部Cache数据被修改后,通过总线广播修改后的数据使所有含有相应数据拷贝的其他Cache进行更新。假设在写操作之前,Cache的初始状态如图6.12(a)所示。处理机P1和P2的局部Cache中都存有共享存储器中数据x的拷贝。,33,若采用写直达法,则共享存储器中数据x所在的数据块将会立即更新,如图6.12(b)所示。若采用写回法,则共享存储器中数据x所在的数据块将会被设置为无效,
14、如图6.12(c)所示。,34,写更新和写无效策略性能上的差别来自三个方面:对同一数据的多个写而中间无读操作的情况,写更新策略需进行多次写广播操作,而在写无效策略下只需一次置无效操作。对同一块中多个字进行写操作,写更新策略对每个字的写均要进行一次广播,而在写无效策略下仅在对该块第一次写时进行置无效操作即可。写无效是针对Cache块进行操作,而写更新则是针对字(或字节)进行操作。从一个处理机写到另一个处理机读之间的延迟通常在写更新模式中较低,因为它写数据时马上更新了相应的其他Cache中的内容(假设读的处理器Cache中有此数据)。而在写无效策略中,需要读一个新的拷贝。,35,6.2.3 基于目
15、录的协议 在监听协议中,每当Cache被修改时,要与所有的Cache进行通信,包括对于可能共享的数据的写操作,这可能导致总线的流量大大增加。基于目录的协议的基本思想是:使用Cache目录来记录可以进入Cache的每个数据块的访问状态、该块在各个处理机的共享状态以及是否修改过等信息。把一致性命令只发给存有相应数据块拷贝的Cache,从而支持Cache的一致性。各种目录协议的主要差别是目录存放什么信息以及如何维护信息。,36,根据目录的结构特点,基于目录的协议可分为三类:全映射目录(full-map directory)有限目录(limited directory)链式目录(chained dir
16、ectory),37,1.全映射目录协议 全映射目录协议规定共享存储器中的每个数据块都有一个目录项,每个目录项中有N个处理机位和一个重写位,其中N为处理机的台数,目录项结构如图6.13所示。,38,下面以三个处理机的系统为例,说明全映射目录的三种状态以及全映射目录协议保持Cache一致性的原理。(1)处理机Cache中没有包含单元x的数据块副本 全映射目录的第一种状态。此时,包含单元x的数据块Bd目录项中的三个处理机位均为“0”,表示整个系统所有Cache中都没有数据块Bd的副本;重写位为未写(C)状态,表示没有一台处理机允许写入该数据块。,39,(2)处理机从共享存储器读入数据块到Cache
17、 当三台处理机都有过读x的请求之后,全映射目录出现第二种状态。目录项中的三个处理机位被置“1”,表示这些Cache中已有数据块Bd的拷贝;重写位仍为未写状态,不允许处理机写Cache块Bd。此时,三个Cache中Bd的Cache块状态位均为有效位1,允许写位0,与Cache目录的状态位一致。,40,(3)处理机写Cache块 如果处理机P3向Cache3发出写x(或Bd中其它单元)的请求,全映射目录将从第二种状态转换到第三种状态,此时的Cache全映射目录呈现第三种状态。目录项中Cache1和Cache2的处理机位被置“0”,表示这些Cache中数据块Bd的拷贝已失效;Cache3的处理机位为
18、“1”,同时重写位为重写状态,表示允许处理机P3写Cache块Bd,且Cache3中的Bd块已被修改为Bd。,41,2.有限目录协议 有限目录协议与全映射目录协议十分相似,都有一位重写位,但有限目录的目录项中的指针(处理机位)实际上是数目固定的若干个处理机编号。若共有N台处理机,则每个处理机指针为log2N位。有I个指针域的目录项最多只能允许该数据块装入I个Cache中,有限目录协议使用IN个指针,可以缓解目录过大的问题。,42,如图6.15所示,假设多处理机系统中共有三台处理机,目录项中只有两个指针域。当P1和P2的Cache中都有单元x所在数据块Bd的拷贝时,该数据块对应的目录项中的两个指
19、针分别指向处理机P1和P2。,43,3.链式目录协议 链式目录通过将目录信息分布到多个小规模的本地目录中来模拟全映射机制。其主要思想是通过维护一个目录指针链来跟踪共享数据块的拷贝。要想得到某个数据块在所有Cache中的共享情况,必须搜索整个Cache目录链。链式目录的优点在于既不限制共享数据块的拷贝数目,又保持了可扩展性。链式目录有两种实现方法,单向链和双向链。若采用比较简单的单向链,则目录项中除一位重写位之外,只需要一个指针域。,44,采用单向链的链式目录如图6.16所示。,45,6.3 多处理机的软件,6.3.1并行算法算法对于并行性的开发至关重要。算法必须适应具体的计算机结构。对表达式E
20、1abxcx2dx3,顺序算法与并行算法比较如图6.17所示。将运算过程用树形流程图来表示的方法。运算的级数,就是树的高度,用Tp代表;P为所需处理机数目;Sp为加速比,SpTl/Tp;Ep为效率,EpSp/P,46,对树进行变换来降低树高,减少运算级数,即可提高运算的并行性。树形结构可以用交换律、结合律、分配律来变换。先从算术表达式的最直接形式出发,利用交换律把相同的运算集中在一起;再利用结合律把参加运算的操作数(称原子)配对,尽可能并行运算,组成树高最小的子树;最后利用分配律,平衡各分支运算的级数,把这些子树结合起来,使总级数减至最少。,47,例如:某表达式E2ab(cdefg)h,需7级
21、运算,如图6.18(a)所示。利用交换律和结合律改写为E2(ah)b(cg)def,则需5级运算,如图6.18(b)所示。,48,再利用分配律,将上式改写为E2(ah)(bcbg)bdef则用3个处理机,仅需4级运算。如图6.18(c)所示。,49,6.3.2 程序并行性分析除算法以外,任务间能否并行在很大程度还取决于程序的结构形式。假设一个程序包含P1、P2、Pi、Pj、Pn等n个程序段,其书写的顺序反映了该程序正常执行的顺序。为了便于分析,设Pi和Pj程序段都是一条语句,Pi在Pj之前执行,且只讨论Pi和Pj之间的直接数据相关关系。,50,程序段之间会出现类似的3种数据相关。如果Pi的左部
22、变量在Pj的右部变量集内,且Pj要从Pi取得运算结果来作为操作数,则称Pj“数据相关”于Pi。如Pi A=B+DPj C=A*EPj必须取Pi算得的A值作为操作数,相当于流水中发生的“先写后读”相关。,51,如果Pj的左部变量在Pi的右部变量集内,且当Pi未取用其变量的值之前,不允许被Pj所改变,则称Pi“数据反相关”于Pj。如Pi C=A*EPj A=B+D在A的值未被Pi取用之前不能被Pj所改变,相当于流水中发生的“先读后写”相关。如果Pi的左部变量也是Pj的左部变量,且Pj存入其算得的值必须在Pi存入之后。则称Pj“数据输出相关”于Pi。如Pi A=B+DPj A=C+E Pj存入其算得
23、的A值必须在Pi存入其结果A之后,相当于流水中发生的“写写”相关。,52,对程序并行性的影响表现为下列几种可能的执行次序。写读串行次序读写次序可并行次序必并行次序,53,1.写读串行次序如果程序必须保持前面的语句先写,后面的语句后读的次序,则允许上述任意一种数据相关存在。一般情况下,执行的次序不可并行,也不可颠倒。这是通常遇到的典型串行程序。但有一种特殊情况,即当Pi和Pj服从交换律时,虽仍需串行执行,但允许Pi和Pj的执行次序交换,这称为可交换串行。如Pi A=2*APj A=3*A为可交换串行,但Pi A=B+1Pj B=A+1就不是可交换串行的。,54,2.读写次序如果两个程序段之间只包
24、含第2种数据相关,则只须保持前面的语句先读,后面的语句后写的次序,便允许它们既可串行执行,也可并行执行,但不可交换串行。如Pi A=B+DPj B=C+E二者同时执行,能保证Pi先读B,Pj后写B的次序。又如Pi A=3*C/BPj B=C*5Pk C=7+E 三者同时执行虽属可能,但由于处理时间上Pi费时最长,Pj次之,Pk最短,如果不采取特别的同步措施,就不能保证必要的先读后写次序。,55,3.可并行次序如果两程序段之间不存在任何一种数据相关,即无共同变量,或共同变量仅为右部变量,而不作为左部变量出现,则它们可以无条件地并行执行。当然,也可以串行执行,而且是可交换串行的。如Pi A=B*C
25、Pj D=B+E,56,4.必并行次序如果两程序段的输入变量互为输出变量,同时具有“先写后读”和“先读后写”两种相关,以交换数据为目的,则二者必须并行执行,既不能顺序串行,也不能交换串行。如Pi A=BPj B=A两语句的左右变量互相交换,必须并行执行,且需保证读写完全同步。,57,综上所述:两个程序段之间若有先写后读的数据相关,不能并行,只在特殊情况下可以交换串行;若有先读后写的数据反相关,可以并行执行,但必须保证其写入共享主存时的先读后写次序,不能交换串行;若有写写的数据输出相关,可以并行执行 但同样需保证其写入的先后次序,不能交换串行;若同时有先写后读和先读后写两种相关,以交换数据为目的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构 第二 尹朝庆 主编 处理机
链接地址:https://www.31ppt.com/p-2826719.html