多处理器和多计算机
我们将在本章中讨论多处理器和多计算机。
多处理器系统互连
并行处理需要使用高效的系统互连,以便在输入/输出和外围设备、多处理器和共享内存之间实现快速通信。
分层总线系统
分层总线系统由连接计算机中各种系统和子系统/组件的总线层次组成。每条总线由多条信号、控制和电源线组成。不同的总线(如本地总线、背板总线和 I/O 总线)用于执行不同的互连功能。
本地总线是在印刷电路板上实现的总线。背板总线是一种印刷电路,其上有许多连接器用于插入功能板。将输入/输出设备连接到计算机系统的总线称为 I/O 总线。
交叉开关和多端口存储器
交换网络在输入和输出之间提供动态互连。小型或中型系统大多使用交叉网络。如果可以解决增加的延迟问题,则可以将多级网络扩展到更大的系统。
交叉开关和多端口存储器组织都是单级网络。虽然单级网络的构建成本较低,但可能需要多次传递才能建立某些连接。多级网络具有多级开关盒。这些网络应该能够将任何输入连接到任何输出。
多级和组合网络
多级网络或多级互连网络是一类高速计算机网络,主要由网络一端的处理元件和另一端的存储器元件组成,并通过交换元件连接。
这些网络用于构建更大的多处理器系统。其中包括 Omega 网络、Butterfly 网络等。
多计算机
多计算机是分布式内存 MIMD 架构。下图显示了多计算机的概念模型 −
多计算机是采用分组交换方法交换数据的消息传递机器。在这里,每个处理器都有一个私有内存,但没有全局地址空间,因为处理器只能访问自己的本地内存。因此,通信不透明:程序员必须明确地将通信原语放入他们的代码中。
没有全局可访问的内存是多计算机的一个缺点。这可以通过使用以下两种方案 − 来解决。
- 虚拟共享内存 (VSM)
- 共享虚拟内存 (SVM)
在这些方案中,应用程序程序员假设一个全局可寻址的大共享内存。如果需要,应用程序所做的内存引用将被转换为消息传递范例。
虚拟共享内存 (VSM)
VSM 是一种硬件实现。因此,操作系统的虚拟内存系统透明地在 VSM 之上实现。因此,操作系统认为它正在具有共享内存的机器上运行。
共享虚拟内存 (SVM)
SVM 是操作系统级别的软件实现,由处理器的内存管理单元 (MMU) 提供硬件支持。在这里,共享的单元是操作系统内存页面。
如果处理器寻址特定的内存位置,MMU 将确定与内存访问相关的内存页面是否在本地内存中。如果页面不在内存中,则在正常的计算机系统中,操作系统会将其从磁盘换入。但在 SVM 中,操作系统从拥有该特定页面的远程节点获取页面。
三代多计算机
在本节中,我们将讨论三代多计算机。
过去的设计选择
在选择处理器技术时,多计算机设计人员选择低成本的中粒度处理器作为构建模块。大多数并行计算机都是用标准的现成微处理器构建的。多计算机选择分布式内存,而不是使用共享内存,因为共享内存会限制可扩展性。每个处理器都有自己的本地内存单元。
对于互连方案,多计算机具有消息传递、点对点直接网络,而不是地址交换网络。对于控制策略,多计算机设计人员选择异步 MIMD、MPMD 和 SMPD 操作。加州理工学院的宇宙立方体 (Seitz, 1983) 是第一代多计算机中的第一个。
现在和未来的发展
下一代计算机从使用全局共享虚拟内存的中粒度多计算机发展到细粒度多计算机。第二代多计算机目前仍在使用。但是使用更好的处理器,如 i386、i860 等,第二代计算机已经得到了很大的发展。
第三代计算机是下一代计算机,其中将使用 VLSI 实现的节点。每个节点可能有一个 14-MIPS 处理器、20-Mbytes/s 路由通道和 16 KB RAM 集成在单个芯片上。
英特尔 Paragon 系统
以前,同质节点用于制造超立方体多计算机,因为所有功能都交给了主机。因此,这限制了 I/O 带宽。因此,为了高效或高吞吐量地解决大规模问题,这些计算机无法使用。英特尔 Paragon 系统旨在克服这一困难。它将多计算机变成了网络环境中具有多用户访问的应用程序服务器。
消息传递机制
多计算机网络中的消息传递机制需要特殊的硬件和软件支持。在本节中,我们将讨论一些方案。
消息路由方案
在具有存储和转发路由方案的多计算机中,数据包是信息传输的最小单位。在虫洞路由网络中,数据包进一步划分为 flit。数据包长度由路由方案和网络实现决定,而 flit 长度受网络大小影响。
在存储和转发路由中,数据包是信息传输的基本单位。在这种情况下,每个节点都使用一个数据包缓冲区。数据包通过一系列中间节点从源节点传输到目标节点。延迟与源和目标之间的距离成正比。
在虫洞路由中,从源节点到目标节点的传输是通过一系列路由器完成的。同一数据包的所有 flit 以流水线方式以不可分割的顺序传输。在这种情况下,只有 header flit 知道数据包要去哪里。
死锁和虚拟通道
虚拟通道是两个节点之间的逻辑链接。它由源节点和接收节点中的 flit 缓冲区以及它们之间的物理通道组成。当为一个对分配物理通道时,一个源缓冲区与一个接收缓冲区配对以形成虚拟通道。
当所有通道都被消息占用并且循环中没有一个通道被释放时,就会发生死锁情况。为了避免这种情况,必须遵循死锁避免方案。