多处理器和多计算机


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

多处理器系统互连

并行处理需要使用高效的系统互连来实现输入/输出和外围设备、多处理器和共享内存之间的快速通信。

分层总线系统

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

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

交叉开关和多端口存储器

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

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

多级和组合网络

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

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

多电脑

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

多计算机的概念模型

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

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

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

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

虚拟共享内存 (VSM)

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

共享虚拟内存 (SVM)

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

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

三代多计算机

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

过去的设计选择

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

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

现在和未来的发展

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

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

英特尔 Paragon 系统

以前,同构节点被用来制作超立方体多计算机,因为所有功能都交给主机。因此,这限制了 I/O 带宽。因此,要高效或高吞吐量地解决大规模问题,就无法使用这些计算机。英特尔 Paragon 系统就是为了克服这一困难而设计的。它将多计算机变成网络环境中具有多用户访问的应用服务器。

消息传递机制

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

消息路由方案

在采用存储转发路由方案的多计算机中,数据包是信息传输的最小单位。在虫洞路由网络中,数据包被进一步划分为 flits。数据包长度由路由方案和网络实现决定,而 flit 长度则受网络规模影响。

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

虫洞路由中,从源节点到目的节点的传输是通过一系列路由器完成的。同一数据包的所有微片以流水线方式以不可分离的顺序传输。在这种情况下,只有 header flit 知道数据包要去哪里。

死锁和虚拟通道

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

当所有通道都被消息占用并且循环中没有通道被释放时,就会出现死锁情况。为了避免这种情况,必须遵循避免死锁的方案。