📜  多处理器和多计算机

📅  最后修改于: 2020-12-13 15:21:08             🧑  作者: Mango


在本章中,我们将讨论多处理器和多计算机。

多处理器系统互连

并行处理需要使用高效的系统互连,以便在输入/输出与外围设备,多处理器和共享内存之间进行快速通信。

分层总线系统

分层总线系统由连接计算机中各种系统和子系统/组件的总线分层结构组成。每条总线由许多信号线,控制线和电源线组成。不同的总线(例如本地总线,背板总线和I / O总线)用于执行不同的互连功能。

局部总线是在印刷电路板上实现的总线。背板总线是一种印刷电路,其上使用许多连接器插入功能板。将输入/输出设备连接到计算机系统的总线称为I / O总线。

纵横开关和多端口存储器

交换网络在输入和输出之间提供动态互连。中小型系统大多使用纵横制网络。如果可以解决增加的延迟问题,则可以将多级网络扩展到更大的系统。

纵横开关和多端口内存组织都是一个单阶段网络。虽然单级网络的构建成本较低,但是可能需要多次通过才能建立某些连接。多级网络具有一个以上的开关盒级。这些网络应该能够将任何输入连接到任何输出。

多级和组合网络

多级网络或多级互连网络是一类高速计算机网络,主要由网络一端的处理元件和另一端的存储元件组成,并通过交换元件相连。

这些网络用于构建更大的多处理器系统。其中包括Omega Network,Butterfly Network等。

多机

多计算机是分布式内存MIMD体系结构。下图显示了多计算机的概念模型-

多计算机的概念模型

多计算机是消息传递机器,它们使用分组交换方法来交换数据。在这里,每个处理器都有一个专用内存,但是没有全局地址空间,因为一个处理器只能访问自己的本地内存。因此,通信不是透明的:程序员在这里必须明确地将通信原语放入其代码中。

没有全局可访问的内存是多计算机的一个缺点。这可以通过使用以下两种方案来解决-

  • 虚拟共享内存(VSM)
  • 共享虚拟内存(SVM)

在这些方案中,应用程序员假定一个大的共享内存可以全局寻址。如果需要,可以将应用程序创建的内存引用转换为消息传递范例。

虚拟共享内存(VSM)

VSM是硬件实施。因此,操作系统的虚拟内存系统是在VSM之上透明实现的。因此,操作系统认为它正在具有共享内存的计算机上运行。

共享虚拟内存(SVM)

SVM是操作系统级别的软件实现,具有处理器内存管理单元(MMU)的硬件支持。在这里,共享单位是操作系统内存页。

如果处理器寻址到特定的内存位置,则MMU会确定与该内存访问关联的内存页是否在本地内存中。如果页面不在内存中,则在正常的计算机系统中,操作系统会从磁盘中将其换入。但是,在SVM中,操作系统从拥有该特定页面的远程节点获取该页面。

三代多计算机

在本节中,我们将讨论三代多计算机。

过去的设计选择

在选择处理器技术时,多计算机设计人员会选择低成本的中粒处理器作为构建模块。大多数并行计算机都是使用标准的现成微处理器构建的。选择分布式内存用于多台计算机而不是使用共享内存,这将限制可伸缩性。每个处理器都有自己的本地存储单元。

对于互连方案,多计算机具有消息传递点对点直接网络,而不是地址交换网络。对于控制策略,多计算机设计人员选择异步MIMD,MPMD和SMPD操作。加州理工学院的宇宙立方体(Seitz,1983年)是第一代多计算机中的第一台。

现在和将来的发展

下一代计算机使用全局共享的虚拟内存从中型多计算机演变为精细多计算机。第二代多计算机目前仍在使用。但是使用更好的处理器,例如i386,i860等,第二代计算机已经发展了很多。

第三代计算机是将使用VLSI实现的节点的下一代计算机。每个节点可以在单个芯片上集成14 MIPS处理器,20 MB / s路由通道和16 KB RAM。

英特尔Paragon系统

以前,同质节点用于制造超立方体多计算机,因为所有功能都已赋予主机。因此,这限制了I / O带宽。因此,为了有效或以高吞吐量解决大规模问题,无法使用这些计算机。英特尔Paragon系统旨在克服这一难题。它将多台计算机变成了在网络环境中具有多用户访问权限的应用程序服务器。

消息传递机制

多计算机网络中的消息传递机制需要特殊的硬件和软件支持。在本节中,我们将讨论一些方案。

消息路由方案

在具有存储和转发路由方案的多计算机中,数据包是信息传输的最小单位。在蠕虫路由网络中,数据包进一步分为碎片。数据包长度由路由方案和网络实现方式确定,而分支长度则受网络大小影响。

存储转发路由中,数据包是信息传输的基本单位。在这种情况下,每个节点都使用一个数据包缓冲区。数据包通过一系列中间节点从源节点传输到目标节点。延迟与源与目标之间的距离成正比。

蠕虫路由中,从源节点到目标节点的传输是通过一系列路由器完成的。同一数据包的所有数据块都以不可分割的顺序以流水线方式传输。在这种情况下,只有报头flit知道数据包的去向。

死锁和虚拟通道

虚拟通道是两个节点之间的逻辑链接。它由源节点和接收者节点中的flit缓冲区以及它们之间的物理通道组成。当为一对分配物理通道时,一个源缓冲区与一个接收方缓冲区配对以形成虚拟通道。

当所有通道都被消息占用并且循环中的任何一个通道都没有释放时,将发生死锁情况。为了避免这种情况,必须遵循避免死锁的方案。