消息传递系统 Message-passing Systems

消息传递MIMD系统是作为克服与两个系统相关联的基本问题的方法而开发的,在该系统中,多个并行处理器通过公共共享存储区进行连接。首先,难以提供足够的内存带宽来支持大量的处理器,原则上所有这些处理器都可能争用同一内存模块。其次,在处理器试图通过公用存储器中保存的同步变量来协调其活动的情况下,由于处理器在紧密循环中空转而导致的低效率以及处理器内存网络中易受***的链接的饱和会导致性能下降。
已经尝试了针对这些问题的复杂解决方案,例如NYU Ultracomputer中的访存和添加运算符[1]以及IBM RP3设计中的组合开关[2]。然而,这些技术不可避免地引入了额外的硬件复杂性和费用。

如果要避免这些基本问题,就需要一种完全不同的MIMD处理方法,也许最自然的选择就是设计处理器不共享变量的系统。强制执行此规则的直接结果是,不需要一般可访问的共享内存,因此避免了随之而来的困难。但是,如果删除了共享变量的功能,则必须提供在进程之间传递值的其他机制。这种替代通信机制的关键是消息传递范式,它在运行于单处理器上的多处理操作系统在应用于多处理器系统之前就已经使用了很多年。

在消息传递架构中,处理器通过发送和接收消息进行通信。这样的系统中的处理器通常异步运行,因此信息的传递需要发送和接收过程进行同步。通常,要使两个进程进行通信,一个进程必须执行Send_Message操作,而另一个进程必须执行Receive_Message操作。如果启动这些操作的实际时间分别是tS和tR,则如果tS <tR,发送过程必须等待接收过程赶上,并且如果tS> tR,则接收过程必须等待。 | tS-tR |被称为与通信事件关联的等待时间,它的值显然取决于应用程序的时间行为以及消息从一个进程到另一个进程的传输速度。

在共享内存多处理器中,两个协作进程之间的链接实际上是它们进行通信的共享变量的地址。在消息传递系统中,协作过程之间的链接以Send / Message和Receive_Message操作中的命名约定的形式存在,并且在这里有两种选择。一个明显的命名约定是为每个消息传递操作明确命名该操作的伙伴进程(和/或它所在的处理器)。例如,假设存在进程P1和P2,则可以通过执行以下代码将消息从P1发送到P2。
Process.1 Process. 2
: :
Send(P2,message) Receive(P1,message)
: :
可以通过通过命名通道定向消息来实现替代的命名约定。 在这种情况下,要使两个进程进行通信,它们必须在各自的消息传递操作中都引用相同的通道标识符,如下所示。
Process.1 Process.2
: :
Send(chan_X,message) Receive(chan_X,message)
: :
从理论角度考虑消息传递系统时,通常只要考虑过程,通道和通信操作就足够了,而无需参考任何特定的实现限制。但是,实际上,这过于简单了。图中描述了消息传递多处理器系统的一般结构,从中可以看出有两个主要组成部分:处理元素(PE)和消息传输系统(MTS)。

考虑一个有n个处理器和m个应用程序进程的系统。 m> n的情况可能很多,因此每个处理器必须提供大量(但必须是有限的)虚拟处理器,这些进程可以直接映射到这些虚拟处理器。通过对每个物理处理器上的多个虚拟处理器进行多重编程,可以将每个虚拟处理器在进程间通信期间经历的等待时间与该物理处理器上的其他有用处理重叠。尽管这些技术已在单处理器系统中使用了很多年,但重要的是要解决消息传递系统中多程序的含义。例如,使用上述两种命名策略,有可能在驻留在相同或不同物理处理器上的进程(实际上是虚拟处理器)之间发生通信事件,并且MTS协议必须处理这两种情况。
消息传递系统 Message-passing Systems

1
A. Gottleib, R. Grishman, C.P. Kruskal, K.P. McAuliffe, L. Rudolph & M. Snir
"The NYU Ultracomputer - Designing a MIMD Shared Memory Parallel Machine"
IEEE Transactions on Computers, Vol. C-32, no. 2, pp 175-189, 1983
2
G.F. Pfister & V.A. Norton
"Hot-Spot Contention and Combining in Multistage Interconnection Networks"
Proc. International Conference on Parallel Processing, pp 790-795, 1985

猜你喜欢

转载自blog.51cto.com/5149102/2506368