计算机组成与结构第10章 多处理机技术
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.2 多处理机的硬件结构
10.2.1 紧耦合和松耦合
1. 紧耦合多处理机
紧耦合多处理机是通过共享主存来实现处理机间通信的, 其通信速率受限于主存的频宽。但是,由于各处理机与主存 经互连网络连接,系统中处理机数就受限于互连网络带宽及 多台处理机同时访问主存发生冲突的概率。
图 10.1 紧耦合多处理机的结构
例如,当n=4 时,式中右边括号内的值只有 4 种是不同 的,需用 4 个处理机经 2 步同时算出,再用 2 个处理机经 3 步算出x3、x4的最后结果。总计起来,比上一算法少用了一步 的时间,但多用了一个处理机。当n较大时,这个算法与上面 的算法相比,快速性会更为明显,但处理机的数目也会增加 较多。
式中 x0=D(0) x2i-1=B(i) x2i=D(i) c2i-1=Q(i) c2i=E(i) 1≤i≤N
图10.19 线性递归程序数据相关图的例子
10.3.2 程序并行性的分析
假定一个程序包含P1、P2、…、Pi、 …、Pj、 …、Pn等n个程 序段,其书写的顺序反映了该程序正常执行的顺序。为了便于 分析,设Pi和Pj程序段都是一条语句,Pi在Pj之前执行,且只讨 论Pi和Pj之间数据的直接相关关系。实际上,Pi和Pj即使表面上 没有数据相关,也可能通过它们之间的其他语句形成间接的数 据相关关系 .
DO 4 I=1, N
1 E(I)=3*F(I)+SIN(P(I))
2 B(I)=D(I-1)+Q(I)
3 D(I)=E(I)+B(I)
4 CONTIUE 这个程序段的数据相关图示于图 7.19 中。实际上,语句 1 只是 为语句 3 提供数据E(I),而且可在进入循环前全部算出,故可 认为是一个单独的数组运算。真正构成闭合循环的只是语句 2 和语句 3, 展开如下:
图 10.16 不同算法影响树高的例子
首先从算术表达式的最直接形式出发,利用交换律把相 同的运算集中在一起。再利用结合律把参加这些运算的操作 数(称原子)配对,尽可能并行运算,从而组成树高最小的子 树。最后,再把这些子树结合起来。例如,给定表达式
E2=a+b(c+def+g)+h 需 7 级运算,如图 7.17(a)所示。利用交换律和结合律改写为
2. 环形互连形式 图10.6 机间采用环形互连的多处理机
3. 交叉开关形式 图 10.7 交叉开关形式
图 10.8 交叉开关中结点开关的结构
图 10.9 用 4×4 16×16 的两级交叉开关网络
4. 多端口存贮器形式 图 10.10 四端口存贮器形式的结构
5. 开关枢纽结构形式 图 10.11 X-TREE多处理机结构框图
c0=0 ci=ai∧bi∨(ai∨bi)∧ci-1, 1≤i≤n
以上这些线性递归的例子,可以归纳为下列线性递归普遍式:
xi=0,
i≤0
i1
xi ci aijxj,1in
jin1
也可用矩阵形式表示为
或
X=C+AX
式中,C=(c1…cn)t称为常数向量;A是一个严格下三角矩阵, 称为系数矩阵;X=(x1…xn)t,称为结果向量;t表示向量转置。
有两种办法可以用来提高总线形式的系统效率。一种办 法是,采用优质高频同轴电缆来提高总线的传输速率;进一 步使用光纤通信, 其信息速率可达109~1010 b/s。另一种办法 是,采用多总线方式来减少访问总线的冲突概率。如美国的 Tandem-16 和Pluribus就采用双总线方式来提供一定的总线冗 余和增大系统总的信息传送率。日本的实验多处理机EPOS 采用的是四总线方式。德国西门子公司的结构式多处理机 SMS采用的是八总线方式。 而上节介绍的Cm*多微处理机则 采用分级的多总线方式。
2 B(1)=D(0)+Q(1) 3 D(1)=B(1)+E(1) 2 B(2)=D(1)+Q(2) 3 D(2)=B(2)+E(2) 2 B(3)=D(2)+Q(3) 3 D(3)=B(3)+E(3) …
这样,就把原来的循环程序变成了包含2 N 个语句的线性
x1=x0+c1 x2=x1+c2 x3=x2+c3 x4=x3+c4 x5=x4+c5 x6=x5+c6 …
在多处理机上求解这个线性递归普遍式,可以采取下面的 方法。
第一种方法称为列扫算法,
第一步,先算x1=c1, 并将x1播送到其余各式,用(n-1)个处理 机计算a21x1, a31x1, …,an1x1
第 二步 , 用 (n-1) 个 处理 机计 算 x2=c2+a21x1, c3+a31x1, … , cn+an1x1;
第 三 步 , 把 x2 播 送 到 其 余 各 式 , 用 (n-2) 个 处 理 机 计 算 a32x2,a42x2, …, an2x2;
第 四 步 , 用 (n-2) 个 处 理 机 计 算 x3=c3+a31x1+a32x2, …, cn+an1x1+an2x2
……
第二种较快的并行算法称为乘 积形式递归算法,它是根据严格下 三角系数矩阵A的性质把线性递归 普遍式X=C+AX写成下列形式:
指令之间都是相关的,需 5 级运算。如采用并行编译 算法,
1*AB 2/ CD 3* 12 4+ EF 5+ 34 6= 5Z 分配给两个处理机, 只需 3 级运算。
2. 递归程பைடு நூலகம்的并行性
(1) A=(a1, a2, …, an) B=(b1, b2, …, bn)
A·B=a1b1+a2b2+…+anbn 这可归结为下列递归关系:
10.2.3 存贮器组织
1. 并行主存贮器的构成
图 10.12 m个模块的低位交叉编址
图 10.13 m个模块的高位交叉编址
图 7.14 本地存贮器的概念
图 10.15 多处理机的二维并行存贮器构形
2. 多Cache的一致性问题
为解决多个Cache之间的不一致。主要有两类做法。一类 是以硬件为基础的做法,另一类则主要是以软件为基础的做 法。
Pi A=2*A
Pj A=3*A
虽不能并行执行,却允许它们交换串行。最终A新为6*A原, 和 顺序串行的结果一致。
(2)
如果Pj的左部变量在Pi的右部变量集内,且当Pi未取用其 变量的值之前,是不允许被Pj所改变的,就称Pi“数据反相关” 于Pj。
Pi C=A+E
Pj A=B+D 相当于流水中发生的“先读后写”相关。 顺序串行运行
(1) 如果Pi的左部变量在Pj的右部变量集内,且Pj必须取出Pi 运算的结果来作为操作数,就称Pj“数据相关”于Pi。 Pi A=B+D Pj C=A*E 相当于流水中发生的“先写后读”相关。 顺序串行运行
Pi A新=B原+D原 Pj C新=A新*E原=(B原+D原)*E原
如果让Pi和Pj并行,Pj的C新成了A原*E原,显然不是应有的结果, 因此Pi和Pj是不能并行的。如果将Pi和Pj执行顺序颠倒,交换串 行,即先执行Pj, 而后再执行Pi,很明显同样也会得不到应有的 正确结果。如果能够交换串行就可以让空闲处理机先去执行Pj, 从而有利于宏观上提高多个程序段间的并行,加快作业执行的 速度,改进系统的运行效率。然而,有一种特殊情形,即当Pi 和Pj服从交换律时,
10.3 程 序 并 行 性
10.3.1 并行算法
1. 算术表达式的并行运算 算法必须适应具体的计算机结构。串行处理机上习惯采 用的循环和迭代算法往往不适合于多处理机,而采用直接解 法有时反倒能揭示更多的并行性。 例如,E1=a+bx+cx2+dx3 利用霍纳(Horner)
E1=a+x(b+x(c+x(d)))
Pi
C新=A原+E原
Pj
A新=B原+D原
可以看出,当Pi与Pj并行时,只要硬件上能保证Pi对相关单元 A先读出,就能得到正确的结果。然而若将Pi和Pj交换串行,
E2=(a+h)+(bc+bg)+bdef
图 10.18 利用交换律、结合律和分配律降低树高
表达式运算并行性的识别,除了依靠算法以外,还可以 依靠编译程序。有一些编译算法可以经过或不经过逆波兰后 缀表达式直接从给定的算术表达式产生能并行执行的机器指 令。
例如,
Z=E+A*B*C/D+F
利用普通的串行编译算法, 1 *A B 2*1C 3/2D 4+3E 5+4F 6=5Z
环形互连形式图106机间采用环形互连的多处理机交叉开关形式图107交叉开关形式图108交叉开关中结点开关的结构图109的交叉开关模块构成1616的两级交叉开关网络多端口存贮器形式图1010四端口存贮器形式的结构图1011xtree多处理机结构框图开关枢纽结构形式1023存贮器组织并行主存贮器的构成图1012m个模块的低位交叉编址图1013m个模块的高位交叉编址图714本地存贮器的概念图1015多处理机的二维并行存贮器构形多cache的一致性问题为解决多个cache之间的不一致
以软件为基础解决Cache一致性的作法,主要优点是可以 减少硬件的复杂性,降低对互连网络通信量的要求, 因而性能 价格比可以较高,比较适用于处理机数多的多处理机。 但应当 指出的是, 现在以软件为基础的办法虽已提出了好几种方案, 但由于可靠性及编译程序的编写困难, 都还没有真正在商品化 多处理机上使用,只在某些试验性系统上使用,如伊利诺大学 的Cedar机。
E2=(a+h)+b((c+g)+def)
图 10.17 利用交换律和结合律降低树高
利用分配律进一步降低树高,在恰当平衡各子树的级数的 情况下, 往往能收到较好的效果。例如上式,计算(c+g)的子 树时只用一级,而计算def的子树要用 2 级,相加乘b需再增加 2 级。如果把b写进括号内,则计算bdef仍用 2 级已够,却省去 了后来的一次乘b,使总级数由 5 减为 4。因此,将上式改写 成
以硬件为基础实现Cache一致性的办法有多个。 最普遍采 用的办法叫监视Cache协议(Snoopy Protocal)法,各个处理机中 的Cache控制器随时都在监视着其他Cache的行动。对于采用 总线互连共享主存的多处理机, 可利用总线的播送来实现。
目录表的具体作法又可分 3 种。一种是全映象目录表法。 表中每项有N个标志位对应于多处理机中全部N台处理机的 Cache。 系统中全部Cache均可同时存有同一个信息块的副本。 不过, 这样的目录表很庞大, 硬件及控制均较复杂。 另一种 是有限目录表法。 表中每项的标志位少于N个。因此,限制了 一个数据块在各Cache中能存放的副本数目。这两种目录表都 是集中地存入在共享的主存之中,因此需要由主存向各处理机 广播。第三种是链式目录表法。它把目录分散存放在各个 Cache中,主存只存有一个指针,指向一台处理机。 要查找所 有放有同一个信息块的Cache时,先找到一台处理机的Cache, 然后顺链逐台查找, 直到找到目录表中的指针为空时为止。
x0 0
xi xi1 aibi,1i n
(2) pn=a0xn+a1xn-1+…+an-1x+an 写成霍纳法则形式,归结为下列递归关系:
p0 a0
pi ai xpi1,1i n
(3) 计算菲波纳西(Fibonacci)数列,可用下列递归关系:
f1 f2 1
fi fi1 fi2,3i n
(4) 计算n位二进制数a=an…a1和b=bn…b1相加时的进位, 可利用下列递归关系:
计算机组成与结构第10章 多处理机 技术
10.1 多处理机的特点及主要技术问题
1) 2) 程序并行性 3) 4) 进程同步 5) 资源分配和任务调度
(1) 硬件结构上如何解决好处理机、 存贮器模块及I/O子 系统之间的互连。
(2) 如何最大限度地开发系统的并行性, 以实现多处理机 各级的全面并行。
图 107.2 带非对称I/O子系统的多处理机
图 10.3 采用冗余连接的非对称I/O子系统
2. 松耦合多处理机 图 10.4 通过消息传送系统连接的松耦合多处理机结构
图 10.5 Cm*多处理机结构
10.2.2 机间互连形式
1. 总线形式
多个处理机、存贮器模块和外围设备通过接口与公用总线 相连,采用分时或多路转接技术传送。其中,单总线方式结构 简单、成本低, 系统上增减模块方便,但对总线的失效敏感。 而且,处理机数增加会增大访问总线冲突的概率而导致系统效 率急剧下降。虽然可以在处理机中设置局部存贮器和专用外围 设备来减少访问总线的冲突,但这种单总线形式也只适用于处 理机数较少的场合。IBM Stretch和UNIVAC Larg多处理机采用 的就是单总线方式。
(3) 如何选择分割任务和子任务的大小, 即任务的粒度大 小, 使并行度高, 而辅助开销小。
(4) 如何协调好多处理机中各并行执行的任务和进程间的 同步问题。
(5) 如何将各个任务分配到一个或多个处理机上, 解决好 处理机调度、任务调度和资源分配问题, 防止死锁。
(6) 一旦某个处理机发生故障,如何对系统进行重新组织 而不使其瘫痪。