7.1 多处理机的概念、问题和硬件结构
7.1.1 多处理机的基本概念和要解决的问题
概念:多处理机是指有两台以上的处理机,共享I/O子系统
,机间经共享内存
或高速通信网络
通信,在统一操作系统控制下,协同求解大而复杂问题的计算机系统。
使用多处理机的目的(填空、简答)
- 第一个目的是通过多台处理机对多个
作业
、任务
进行并行执行来提高解题速度,从而提高系统的整体性能; - 第二个目的是使用
冗余
的多个处理机通过重新组织来提高系统的可靠性
、适应性
和可用性
。(一适两可)
由于应用的目的和结构不同,多处理机可以有同构型、异构型、分布型3种。
多处理机属于多指令流多数据流
(MIMD
)的系统。
和阵列处理机不同,阵列处理机是SIMD,主要针对向量、数组处理,实现向量指令操作级的并行,是开发并行性中的同时性。多处理机实现的是更高一级的作业或任务间的并行,是开发并行性中的并发性。
- 1)在
硬件
结构上,它的多个处理机要用多个指令部件分别控制,通过共享主存或机间互连网络实现异步通信; - 2)在
算法
上,不限于向量、数组处理,还要挖掘和实现更多通用算法中隐含的并行性; - 3)在
系统管理
上,要更多地依靠操作系统等软件手段,有效地解决资源分析和管理,特别是任务分配、处理机调度、进程的同步和通信等问题。
多处理机执行并发任务所需的处理机的机数是不固定的。各处理机进入或退出任务的时间及所需资源的变化比较大。必须研究如何较好地解决动态的资源分配和任务调度,让各处理机的负荷
尽可能均衡,并要防止死锁
。
结论:多处理机的结构、机间互连、并行算法、并行语言、编译、操作系统等都将会影响到系统的性能和效率
7.1.2 多处理机的硬件结构
1、 紧耦合和松耦合
1)紧耦合多处理机
紧耦合多处理机是通过共享主存
实现处理机间通信的,其通信速率受限于主存频宽。各处理机与主存经互连网络连接,处理机数受限于互连网络带宽及各处理机访主存冲突的概率。
紧耦合多处理机有两种构型:a.处理机不带专用Cache;b.处理机自带专用Cache
系统由p台处理机、m个存储器模块和d个I/O通道组成,通过处理机-存储器互连网络(PMIN)、I/O-处理机互连网络(IOPIN)和中断信号互连网络(ISIN)进行互连。
处理机-存储器互连网络实现各处理机与各存储器模块的连接,经仲裁后,每个存储器模块在一个存储周期只响应其中一台处理机的访存请求。
处理机间通过中断信号互连网络,由一台处理机向另一台处理机发出中断信号,实现处理机间的进程同步。
处理机和连接外设的I/O通道经I/O-处理机互连网络来实现通信。
在紧耦合多处理机中就各处理机而言,又有同构对称型和异构非对称型两种。
当多处理机用于并行任务时,常采用同构对称型的紧耦合多处理机。
2)松耦合多处理机
松耦合多处理机中,每台处理机都有一个容量较大的局部存储器,用于存储常用的指令和数据,以减少紧耦合系统中存在的访主存冲突。不同处理机间通过通道互连实现通信
,以共享某些外围设备;或者通过消息传送系统(MTS)
来交换信息,这时各台处理机可带有自己的外围设备。
松耦合多处理机比较适合做粗粒度的并行计算。
松耦合多处理机可分为非层次型和层次型两种构型。
2. 机间互连形式
多处理机互连一般采用总线
、环形互连
、交叉开关
、多端口存储器
或蠕虫穿洞寻径网络
等几种形式。
1)总线形式
多个处理机、存储器模块和外围设备通过接口与公共总线相连,采用分时或多路转接技术传送。
提高总线形式的系统效率:1.使用优质高频同轴电缆 2.用多总线方式来减少访总线的冲突概率。
为解决多个处理机同时访问公用总线的冲突,研制了静态优先级、固定时间片、动态优先级、先来先服务等多种总线仲裁算法。
2)环形互连形式
发送信息的处理机拥有一个唯一的令牌。
环形互连是点点连接,非常适合于有高通信带宽的光纤通信。
3)交叉开关形式
用纵横开关阵列将横向的n个处理机P及i个I/O通道与纵向的存储器模块M连接起来。
总线数=n+i+m,且m>=i+n;
4)多端口存储器形式
每个存储器有多个访问端口,将分布在交叉开关矩阵中的控制、转移和优先级仲裁逻辑分别移到相应存储器模块的接口中,就构成了多端口存储器形式的结构。
5)蠕虫穿洞寻径网络
6)开关枢纽结构形式
参照多端口存储器的思想,把互连结构的开关设置在各处理机或接口内部,组成分布式结构,称为开关枢纽结构形式。
3. 存储器的组织
多处理机的主存一般都采用由多个模块构成的并行存储器。
并行存储器设计组织应尽量减少各处理器同时访问同一存储模块引起的冲突。
为减少访问主存冲突,采用的方式一般是:并行多体交叉主存系统
。
m个模块低位交叉编址:流水、向量、阵列处理机。
m个模块高位交叉编址:多处理机。
将放置处理机i执行进程要用到的绝大多数页面的那个存储器模块i称为是处理机i的本地存储器。
7.2 紧耦合多处理机多Cache的一致性问题
7.2.1 多Cache的一致性问题的产生
7.2.2 多Cache的一致性问题的解决办法
1.解决进程迁移
引起的多Cache不一致性
- 禁止进程迁移
- 在进程挂起时,靠硬件方法将Cache中该进程改写过的信息块强制写回主存相应位置(写直法)
2. 以硬件
为基础实现多Cache的一致性
监听法:写更新、写作废
监视Cache协议法,即各个处理机中的Cache控制器随时都在监听着其他Cache的行动。
写更新(播写法):当一个处理器对某数据项进行写入时,通过广播使其他的Cache中所有对应于该数据项的副本进行更新。
写作废:在处理器对某个数据项进行写入之前,保证它拥有对该数据项的唯一的访问权。(作废其它副本)
目录法
目录表法,建立目录表,目录表中每一项记录一个数据块的使用情况,包括几个标志位分别指示这个信息块的副本在其他几个处理机的Cache中是否存在。
具体作法有3种:全映像目录表;有限目录表法;链式目录表法。
3.以软件
为基础实现多Cache的一致性
不把一些公用的可写数据存入Cache中。
7.3 多处理机的并行性和性能
并行性既存在于指令内部,也存在于指令外部。
必须利用算法、程序设计语言、编译、操作系统以及指令、硬件等多种途径来开拓。
7.3.1 并行算法
1.并行算法的定义和分类
算法规定了求解某一特定问题时的有穷的运算处理步骤。
并行算法是指可同时执行多个进程的集合,各进程可相互作用、协调和并发操作。
按运算基本对象,并行算法可分为数值型
、非数值型
;
按并行进程间的操作顺序不同,并行算法可分为同步型
、异步型
、独立型
;
按计算任务大小,并行算法可分为细粒度
、中粒度
、粗粒度
;
- 细粒度并行算法一般指
向量或循环级
的并行 - 中粒度并行算法一般指
较大的循环级
并行,并确保这种并行的好处可以补偿因并行带来的额外开销 - 粗粒度并行算法则一般是指
子任务级
的并行
按并行进程是否相同,并行算法可分为同构型
、异构型
。
2. 多处理机并行算法的研究思路
为了评价所提出的并行算法的性能效率,
用P表示可并行处理的处理机数;
用Tp表示P台处理机运算的级数,即树高;
用多处理机的加速比Sp,表示单处理机顺序运算的级数T1与P台处理机并行运算的级数Tp之比;
用Ep表示P台处理机的设备利用率(效率),Ep=Sp/P。
可见,Sp≥1时,会使Ep≤1,即运算的加速总是伴随着效率的下降。
【1704真题】由霍纳法则给定的表达式如下:E=a(bc+d(ef+g(h+ij))).利用减少树高的办法来加速运算,要求:
1.画出树形流程图
2.确定Tp、P、Sp和Ep。
答:
1)霍纳法则表达式先化成最简,题目要求减少树高
E=abc+adef+adgh+adgij
=abc+ad(ef+gh+gij)
=a(bc+def)+adg(h+ij)
2)求T1就是原始式子中数符号的个数,所以T1=9,
如上图,Tp=5,P=3,
所以Sp=T1/Tp-=9/5
Ep=Sp/P=3/5=60%
并行-霍纳法则例题
由霍纳法则给定的表达式:x=a+b(c+(d+e))+f(g(i+j)),利用减少树高来尽可能加快运算速度,要求:
1)画出在3台处理机上并行运算的树形流程图;
2)当P=3时,求运算级数Tp、加速比Sp和效率Ep。
答:
1)
霍纳法则表达式求解第一步,先把所有式子化成最简形式
x=a+bc+bd+be+fgi+fgj;
霍纳法则表达式求解第二步,尽可能凑对、尽可能提取公因式;
当P=3时,
x=[(a+bc)+b(d+e)]+fg(i+j);
根据这个式子画出并行运算的树形流程图如下:
2)当P=3时,Tp=4,
求T1就是原始式子中数符号的个数,所以T1=8,
所以Sp=T1/Tp-=8/4=2
Ep=Sp/P=2/3=66.7%
7.3.2 程序并行性的分析
任务间能否并行,除了算法外,很大程度上还取决于程序的结构。程序中各类数据相关是限制程序并行的重要因素。数据相关既可存在于指令之间,也可存在于程序段之间。
假定一个程序包含P1,P2,…、Pi,…,Pj,…,Pn等n个程序段,其书写的顺序反映了该程序正常执行的顺序。
1.数据相关
如果Pi的左部变量在Pj的右部变量集内,且Pj必须取出Pi运算的结果来作为操作数,就称Pj“数据相关”于Pi。
Pi A=B+D
Pj C=AxE
相当于流水中发生的“先写后读”相关。顺序串行运行的正确结果应当是
Pi A新=B原+D原
Pj C新=A新xE原=(B原+D原)xE原
2.数据反相关
如果Pj的左部变量在Pi的右部变量集内,且当Pi未取出其变量的值之前,是不允许被Pj所改变的,则称Pi“数据反相关”于Pj。
Pi C=A+E
Pj A=B+D
相当于流水中发生的“先读后写”相关。顺序串行运行的正确结果应当是
Pi C新=A原+E原
Pj A新=B原+D原
3.数据输出相关
如果Pi的左部变量也是Pj的左部变量,且Pj存入其算得的值必须在Pi存入之后,就称Pj“数据输出相关”于Pi。
Pi A=B+D
Pj A=C+E
结论:两个程序段之间若有先写后读
的数据相关,不能并行
,只有特殊情况
下可以交换串行
;若有先读后写
的数据反相关
,可以并行执行
,但必须保证
其写入
共享内存时的先读后写次序
,不能交换串行
;若有写-写
的数据输出相关,可以并行执行
,但同样需保证
其写入
的先后次序
,不能交换串行
;若同时有先写后读和先读后写两种相关
,以交换数据为目的时,必须并行执行
,且读、写要完全同步
,不能顺序串行和交换串行
;若没有任何相关或仅有源数据相同时,可以并行、顺序串行和交换串行。
7.3.3 并行语言与并行编译
FORK语句的形式是FORK m,其中m为新进程开始的标号,执行FORK m语句时,派生出标号为m开始的新进程;
与FORK语句相配合,作为每个并发进程的终端语句JOIN的形式为JOIN n,其中n为并发进程的个数。JOIN语句附有一个计数器,其初始值为0.每当执行JOIN n语句时,计数器的值加1,并与n比较。若比较相等,表明这是执行中的第n个并发进程经过JOIN语句,于是允许进程通过JOIN语句,将计数器清零,并在其处理机上继续执行后续语句;若比较不相等,计数器的值仍小于n,表明此进程不是并发进程的最后一个,可让现在执行JOIN语句的这个进程先结束,把它所占用的处理机释放出来,分配给正在排队等待的其他任务。如果没有排队等待的任务,就让处理机空闲。
【1604真题】有以下FORK、JOIN写成的在多处理机上并行执行的程序:1.假设现为两台处理机,除法速度最慢,加、减法速度最快,画出该程序在两台处理机上运行时的资源时间图。
10 U=A+B
FORK 30
20 V=U/B
JOIN 2
GOTO 40
30 W=AU
JOIN 2
40 FORK 60
50 X=W-V
JOIN 2
GOTO 70
60 Y=WV
JOIN 2
70 Z=X/Y
7.3.4 多处理机的性能
任务粒度(Task Granularity)的大小会显著影响多处理机的性能
和效率
。
任务粒度过小
,辅助开销大
,系统效率低
;
任务粒度过大
,并行度低
,性能不会很高
。
#7.4 多处理机的操作系统
多处理机操作系统有3类。它们是主从型
、各自独立型
及浮动型
。
#7.5 多处理机的发展
1)分布式共享存储器多处理机
2)对称多处理机
3)多向量多处理机
4)并行向量处理机
5)大规模并行处理机(MPP)
6)机群系统
计算机系统的3T性能目标:
1 TFLOPS
的计算能力、1 Tbyt
e的主存容量、1 Tbyte/s
的I/O带宽
机群系统是将多个高性能的工作站或高档微型计算机,使用高速的通信网络加以互连组成的系统。
机群系统比起传统的并行处理系统有如下明显的优点:
1)系统有高的性能价格比
;
2)系统的开发周期短
;
3)系统的可扩展性好
;
4)系统的资源利用率高
;
5)用户投资风险小
;
6)用户编程方便
。