计算机组成与结构第10章 多处理机技术

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

以软件为基础解决Cache一致性的作法,主要优点是可以 减少硬件的复杂性,降低对互连网络通信量的要求, 因而性能 价格比可以较高,比较适用于处理机数多的多处理机。 但应当 指出的是, 现在以软件为基础的办法虽已提出了好几种方案, 但由于可靠性及编译程序的编写困难, 都还没有真正在商品化 多处理机上使用,只在某些试验性系统上使用,如伊利诺大学 的Cedar机。
10.2 多处理机的硬件结构
10.2.1 紧耦合和松耦合
1. 紧耦合多处理机
紧耦合多处理机是通过共享主存来实现处理机间通信的, 其通信速率受限于主存的频宽。但是,由于各处理机与主存 经互连网络连接,系统中处理机数就受限于互连网络带宽及 多台处理机同时访问主存发生冲突的概率。
图 10.1 紧耦合多处理机的结构
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, 展开如下:
在多处理机上求解这个线性递归普遍式,可以采取下面的 方法。
第一种方法称为列扫算法,
第一步,先算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写成下列形式:
10.3 程 序 并 行 性
10.3.1 并行算法
1. 算术表达式的并行运算 算法必须适应具体的计算机结构。串行处理机上习惯采 用的循环和迭代算法往往不适合于多处理机,而采用直接解 法有时反倒能揭示更多的并行性。 例如,E1=a+bx+cx2+dx3 利用霍纳(Horner)
E1=a+x(b+x(c+x(d)))
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 …
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表示向量转置。
计算机组成与结构第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多处理机采用 的就是单总线方式。
10.2.3 存贮器组织
1. 并行主存贮器的构成
图 10.12 m个模块的低位交叉编址
图 10.13 m个模块的高位交叉编址
图 7.14 本地存贮器的概念
图 10.15 多处理机的二维并行存贮器构形
2. 多Cache的一致性问题
为解决多个Cache之间的不一致。主要有两类做法。一类 是以硬件为基础的做法,另一类则主要是以软件为基础的做 法。
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
指令之间都是相关的,需 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 这可归结为下列递归关系:
以硬件为基础实现Cache一致性的办法有多个。 最普遍采 用的办法叫监视Cache协议(Snoopy Protocal)法,各个处理机中 的Cache控制器随时都在监视着其他Cache的行动。对于采用 总线互连共享主存的多处理机, 可利用总线的播送来实现。
目录表的具体作法又可分 3 种。一种是全映象目录表法。 表中每项有N个标志位对应于多处理机中全部N台处理机的 Cache。 系统中全部Cache均可同时存有同一个信息块的副本。 不过, 这样的目录表很庞大, 硬件及控制均较复杂。 另一种 是有限目录表法。 表中每项的标志位少于N个。因此,限制了 一个数据块在各Cache中能存放的副本数目。这两种目录表都 是集中地存入在共享的主存之中,因此需要由主存向各处理机 广播。第三种是链式目录表法。它把目录分散存放在各个 Cache中,主存只存有一个指针,指向一台处理机。 要查找所 有放有同一个信息块的Cache时,先找到一台处理机的Cache, 然后顺链逐台查找, 直到找到目录表中的指针为空时为止。
式中 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即使表面上 没有数据相关,也可能通过它们之间的其他语句形成间接的数 据相关关系 .
图 10.16 不同算法影响树高的例子
首先从算术表达式的最直接形式出发,利用交换律把相 同的运算集中在一起。再利用结合律把参加这些运算的操作 数(称原子)配对,尽可能并行运算,从而组成树高最小的子 树。最后,再把这些子树结合起来。例如,给定表达式
E2=a+b(c+def+g)+h 需 7 级运算,如图 7.17(a)所示。利用交换律和结合律改写为
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 相当于流水中发生的“先读后写”相关。 顺序串行运行
E2=(a+h)+b((c+g)+def)
图 10.17 利用交换律和结合律降低树高
Fra Baidu bibliotek
利用分配律进一步降低树高,在恰当平衡各子树的级数的 情况下, 往往能收到较好的效果。例如上式,计算(c+g)的子 树时只用一级,而计算def的子树要用 2 级,相加乘b需再增加 2 级。如果把b写进括号内,则计算bdef仍用 2 级已够,却省去 了后来的一次乘b,使总级数由 5 减为 4。因此,将上式改写 成
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相加时的进位, 可利用下列递归关系:
Pi
C新=A原+E原
Pj
A新=B原+D原
可以看出,当Pi与Pj并行时,只要硬件上能保证Pi对相关单元 A先读出,就能得到正确的结果。然而若将Pi和Pj交换串行,
有两种办法可以用来提高总线形式的系统效率。一种办 法是,采用优质高频同轴电缆来提高总线的传输速率;进一 步使用光纤通信, 其信息速率可达109~1010 b/s。另一种办法 是,采用多总线方式来减少访问总线的冲突概率。如美国的 Tandem-16 和Pluribus就采用双总线方式来提供一定的总线冗 余和增大系统总的信息传送率。日本的实验多处理机EPOS 采用的是四总线方式。德国西门子公司的结构式多处理机 SMS采用的是八总线方式。 而上节介绍的Cm*多微处理机则 采用分级的多总线方式。
2. 环形互连形式 图10.6 机间采用环形互连的多处理机
3. 交叉开关形式 图 10.7 交叉开关形式
图 10.8 交叉开关中结点开关的结构
图 10.9 用 4×4 16×16 的两级交叉开关网络
4. 多端口存贮器形式 图 10.10 四端口存贮器形式的结构
5. 开关枢纽结构形式 图 10.11 X-TREE多处理机结构框图
例如,当n=4 时,式中右边括号内的值只有 4 种是不同 的,需用 4 个处理机经 2 步同时算出,再用 2 个处理机经 3 步算出x3、x4的最后结果。总计起来,比上一算法少用了一步 的时间,但多用了一个处理机。当n较大时,这个算法与上面 的算法相比,快速性会更为明显,但处理机的数目也会增加 较多。
(3) 如何选择分割任务和子任务的大小, 即任务的粒度大 小, 使并行度高, 而辅助开销小。
(4) 如何协调好多处理机中各并行执行的任务和进程间的 同步问题。
(5) 如何将各个任务分配到一个或多个处理机上, 解决好 处理机调度、任务调度和资源分配问题, 防止死锁。
(6) 一旦某个处理机发生故障,如何对系统进行重新组织 而不使其瘫痪。
(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服从交换律时,
相关文档
最新文档