- [Introduction to Interconnection Networks 互连网络简介](#Introduction to Interconnection Networks 互连网络简介)
Introduction to Interconnection Networks 互连网络简介
数字系统在现代社会中无处不在。数字计算机用于执行从模拟物理系统到管理大型数据库再到准备文档等任务。数字通信系统中继电话呼叫、视频信号和互联网数据。音频和视频娱乐越来越多地以数字形式提供和处理。最后,从汽车到家电,几乎所有产品都是数字化控制的。数字系统由三个基本构建块组成:逻辑、存储器和通信。逻辑转换和组合数据------例如,通过执行算术运算或做出决策。内存存储数据以供以后检索,并及时移动它。通信将数据从一个位置移动到另一个位置。本书涉及数字系统的通信组件。具体来说,它探讨了用于在数字系统的子系统之间传输数据的互连网络。
当今大多数数字系统的性能受到其通信或互连的限制,而不是其逻辑或内存的限制。在高端系统中,大部分功率用于驱动线路,并且大部分时钟周期花费在线路延迟上,而不是门延迟(gate delay)上。随着技术的进步,存储器和处理器变得更小、更快、更便宜。然而,光速保持不变。控制系统组件之间互连的引脚密度和布线密度的扩展速度比组件本身要慢。此外,组件之间的通信频率远远落后于现代处理器的时钟速率。这些因素结合在一起,使互连成为未来数字系统成功的关键因素。
随着设计人员努力更有效地利用稀缺的互连带宽,互连网络正在成为现代数字系统系统级通信问题的近乎通用的解决方案。最初为了满足多处理器的高要求通信需求而开发的互连网络,正逐渐取代总线成为标准的系统级互连。设计者们也发现,与布线相比,路由数据包既更快速又更经济,因此在特定系统中,互连网络也正在取代专用布线。
1.关于互连网络的三个问题
在进一步讨论之前,我们先回答一些关于互连网络的基本问题: 什么是互连网络?你在哪里找到它们?为什么它们很重要?
- 什么是互联网络?
如图1.1所示,互连网络是在终端之间传输数据的可编程系统。
该图显示了连接到网络的六个终端(T1 到 T6)。当终端T3希望与终端T5传送某些数据时,它向网络发送包含该数据的消息,并且网络将该消息传递给T5。该网络是可编程的,因为它可以在不同的时间点建立不同的连接。图中的网络可以在一个周期内将消息从T3传递到T5,然后在下一周期使用相同的资源将消息从T3传递到T1。网络是一个系统,因为它由许多组件组成:缓冲区、通道、交换机和控制器,它们一起工作以传输数据。满足这一广泛定义的网络存在于多种规模。片上网络可以在单个处理器内的存储器阵列、寄存器和算术单元之间传送数据。板级和系统级网络将处理器连接到存储器,或者将输入端口连接到输出端口。最后,局域网和广域网将企业内或全球范围内的不同系统连接在一起。在本书中,我们将注意力限制在较小的范围上:从芯片级到系统级。许多优秀的文本已经存在,涉及更大规模的网络。然而,系统级及以下的问题,即通道较短且数据速率非常高,与大规模问题有根本不同,需要不同的解决方案。
- 在哪里可以找到互连网络?
它们几乎用于所有足够大、可以连接两个组件的数字系统。互连网络最常见的应用是计算机系统和通信交换机。在计算机系统中,它们将处理器连接到存储器,将输入/输出 (I/O) 设备连接到 I/O 控制器。它们将通信交换机和网络路由器中的输入端口连接到输出端口。它们还将传感器和执行器连接到控制系统中的处理器。在系统的两个组件之间传输比特的任何地方,都可能会发现互连网络。
就在 20 世纪 80 年代末,大多数此类应用都由非常简单的互连网络提供服务:多点总线。如果这本书是当时写的,它可能是一本关于公交车设计的书。我们将第 22 章专门讨论总线,因为它们在许多应用中仍然很重要。然而如今,所有高性能互连都是通过点对点互连网络而不是总线来执行的,并且每年都有更多历史上基于总线的系统切换到网络。这种趋势是由于性能扩展不均匀造成的。对互连性能的需求随着处理器性能(每年增长 50%)和网络带宽的增加而增加。另一方面,电线并没有变得更快。更好的半导体技术并不会提高光速和 24-gauge copper wire 的衰减。结果,总线已经无法满足带宽需求,而运行速度比总线更快并且提供并发性的点对点互连网络正在迅速取代。
- 为什么互连网络很重要?
因为它们是许多系统性能的限制因素。处理器和内存之间的互连网络在很大程度上决定了计算机系统中的两个关键性能因素,即内存延迟和内存带宽。在通信交换机中,互连网络(有时在此上下文中称为网络结构)的性能很大程度上决定了交换机的容量(数据速率和端口数量)。由于对互连的需求增长速度比基础电线的能力快得多,互连已成为大多数系统中的关键瓶颈。互连网络是专用布线(dedicated wiring)的一个吸引人的替代方案,因为它们允许稀缺的布线资源被几个低占空比信号共享。在图1.1中,假设每个终端每100个周期需要与其他终端通信一个字。我们可以为每对终端提供一个专用的字宽通道,需要总共30个单向通道。然而,每个通道的空闲时间将达到99%。相反,如果我们将6个终端连接成一个环,只需要6个通道。(T1连接到T2,T2连接到T3,以此类推,最后是从T6到T1的连接。)通过环形网络,通道数量减少了五倍,通道占用比从1%增加到12.5%。
2.互连网络的使用
为了了解互连网络设计的要求,检查它们在数字系统中的使用方式是很有用的。在本节中,我们将研究互连网络的三种常见用途,并了解这些应用程序如何驱动网络需求。具体来说,对于每个应用程序,我们将检查应用程序如何确定以下网络参数:
- 终端数量
- 每个终端的峰值带宽
- 每个终端的平均带宽
- 所需的延迟
- 消息大小或消息大小的分布
- 预期的流量模式
- 所需的服务质量
- 互连网络所需的可靠性和可用性
网络中终端或端口的数量对应于必须连接到网络的组件数量。除了了解终端的数量之外,设计人员还需要了解终端如何与网络交互。每个终端都需要一定量的网络带宽,通常以比特每秒(bit/s)表示。除非另有说明,我们假设终端带宽是对称的,即终端的输入和输出带宽相等。峰值带宽是终端在短时间内向网络请求的最大数据速率,而平均带宽是终端需要的平均数据速率。正如以下有关处理器-内存互连设计的部分所示,在尝试最小化互连网络的实施成本时,了解峰值和平均带宽变得很重要。除了网络必须接受和传送消息的速率之外,还为网络指定传送单个消息所需的时间,即消息延迟。虽然理想的网络同时支持高带宽和低延迟,但这两个参数之间通常存在权衡。例如,支持高带宽的网络往往会使网络资源保持繁忙,常常导致资源争用。当两个或多个消息想要使用网络中的同一共享资源时,就会发生争用。除其中一条消息外,所有消息都必须等待该资源释放,从而增加了消息的延迟。相反,如果通过减少带宽需求来降低资源利用率,那么延迟也会降低。
消息大小,即消息长度(以位计),是另一个重要的设计考虑因素。如果消息很小,网络中的开销对性能的影响可能比在开销可以分摊在更大消息的长度上的情况下更大。在许多系统中,存在几种可能的消息大小。每个终端的消息如何分布到所有可能的目标终端上定义了网络的流量模式。例如,每个终端可能以相等的概率向所有其他终端发送消息。这是随机流量模式。相反,如果终端倾向于仅向其他附近的终端发送消息,则底层网络可以利用这种空间局部性来降低成本。然而,在其他网络中,对任意流量模式的规范很重要。一些网络还将需要服务质量(QoS)。粗略地说,QoS涉及根据某些服务政策公平分配资源。例如,当多个消息争夺网络中的同一资源时,可以通过多种方式解决这种竞争。消息可以按照它们在等待所需资源的时间长短的先来先服务顺序进行服务。另一种方法是优先考虑在网络中存在时间最长的消息。在这些和其他分配策略之间的选择基于网络所需的服务。最后,对互连网络所需的可靠性和可用性也会影响设计决策。可靠性是网络正确执行消息传递任务的频率的度量。在大多数情况下,消息需要在没有丢失的情况下100%的时间被传递。实现100%可靠的网络可以通过添加专用硬件来检测和纠正错误,使用更高级的软件协议,或者使用这些方法的混合来完成。此外,在包交换结构的下一节中,网络可能会丢弃一小部分消息。网络的可用性是它可用并且正常运行的时间分数。在Internet路由器中,通常规定可用性为99.999% ------每年总共不到五分钟的停机时间。提供这种级别的可用性的挑战在于,用于实现网络的组件通常会每分钟多次故障。因此,网络必须设计为在继续运行的同时检测并快速恢复这些故障。
- 处理器-内存互连
图 1.2 说明了使用互连网络将处理器连接到存储器的两种方法。图 1.2(a) 显示了一个舞厅架构(这种安排被称为舞厅架构,因为处理器排列在网络一侧,内存库排列在另一侧,就像男人和女人排列在旧时舞厅的两侧。),其中 P 个处理器通过互连网络连接到 M 个存储体。大多数现代机器都使用图 1.2(b) 所示的集成节点配置,其中处理器和存储器组合在一个集成节点中。通过这种布置,每个处理器可以通过通信交换机C访问其本地存储器,而不需要使用网络。
处理器端口的数量可能达到数千个,例如最大配置的Cray T3E具有2,176个处理器端口,或者对于单个处理器为1。在高端服务器中,具有64到128个处理器的配置是普遍的,并且这个数量随着时间的推移而增加。对于组合节点配置,这些处理器端口中的每一个也是一个内存端口。另一方面,对于舞厅配置,内存端口的数量通常比处理器端口的数量大得多。例如,一个高端向量处理器具有32个处理器端口向4,096个内存bank发出请求。这种较大的比率最大化了内存带宽,并降低了bank冲突的概率,即两个处理器同时需要访问相同的内存bank的情况。
一颗现代微处理器每秒执行约10^9条指令,每条指令可以需要从内存中获取两个64位字(一个用于指令本身,一个用于数据)。如果其中一个引用在缓存中未命中,通常会从内存中获取一个8字的块。如果我们确实需要每个周期从内存中获取2个字,这将需要16 GB/s的带宽。幸运的是,大约三分之一的指令引用内存中的数据,并且缓存工作得很好,以减少实际上必须引用内存bank的引用数量。通过典型的缓存未命中比率,平均带宽要低一个数量级 ------约为400 MB/s。然而,为了避免由于串行化而增加内存延迟,大多数处理器仍然需要能够从内存系统每个指令的速率获取一个字。如果我们过度限制这种峰值带宽,内存请求的突发量将迅速堵塞处理器的网络端口。将这种高带宽突发请求通过低带宽网络端口挤压的过程,类似于堵塞的水槽慢慢排水,称为串行化,并增加了消息延迟。为了避免在请求突发时发生串行化,我们需要8 GB/s的峰值带宽。
处理器性能对内存延迟非常敏感,因此对于内存请求和回复所传输的互连网络的延迟也很敏感。在表1.1中,我们列出了100纳秒的延迟要求,因为这是一个典型的没有网络的内存系统的基本延迟。如果我们的网络增加了额外的100纳秒的延迟,我们将使有效的内存延迟翻倍。当处理器的加载和存储指令未命中缓存(并且不是针对集成节点配置中的本地内存)时,它们会被转换为读请求和写请求数据包,并通过网络转发到相应的内存bank。每个读请求数据包包含要读取的内存地址,每个写请求数据包包含要写入的内存地址和一个字或缓存行。在适当的内存bank收到请求数据包后,它执行所请求的操作并发送相应的读回复或写回复数据包。请注意,我们已经开始区分网络中的消息和数据包。消息是从网络的客户端(在本例中是处理器和内存)到网络的传输单位。在网络接口处,单个消息可以创建一个或多个数据包。这种区分允许简化底层网络,因为大消息可以被分成几个较小的数据包,或者不等长的消息可以被拆分成固定长度的数据包。由于在这种处理器-内存互连中创建的消息相对较小,我们假设消息和数据包之间存在一对一的对应关系。读请求和写回复数据包不包含任何数据,但存储一个地址。这个地址加上一些由网络使用的头部和数据包类型信息可以舒适地放在64位中。读回复和写请求数据包包含相同的64位头部和地址信息以及512位缓存行的内容,从而产生576位的数据包。
这两种数据包格式如图1.3所示。与处理器-内存互连一样,我们不需要任何特定的服务质量。这是因为网络在本质上是自我调节的。也就是说,如果网络变得拥塞,内存请求将需要更长的时间才能被满足。由于处理器只能拥有有限数量的未完成请求,它们将开始空闲,等待回复。因为处理器在空闲时不会创建新的请求,所以网络的拥塞减少了。这种稳定行为被称为自我调节(inherently self-throttling.)。大多数服务质量保证仅在网络拥塞时生效,但自我调节倾向于避免拥塞,因此在处理器-内存互连中,服务质量不太有用。此应用需要一个固有可靠的网络,没有数据包丢失。内存请求和回复数据包不能被丢弃。一个丢失的请求数据包将导致内存操作永远挂起。至少,这将导致用户程序由于超时而崩溃。在最坏的情况下,它可能会导致整个系统崩溃。可靠性可以在不可靠的网络上进行分层 ------ 例如,通过使每个网络接口保留每个发送的数据包的副本,直到它被确认,并在数据包丢失时重新传输。然而,这种方法通常会导致处理器-内存互连的不可接受的延迟。根据应用程序的不同,处理器-内存互连需要从三个九(99.9%)到五个九(99.999%)的可用性。
- IO 互连
互连网络还用于计算机系统中以将I/O设备(例如磁盘驱动器、显示器和网络接口)连接到处理器和/或存储器。图 1.4 显示了一个典型的 I/O 网络示例,用于将磁盘驱动器阵列(沿着图的底部)连接到一组主机适配器。该网络的运行方式与处理器-内存互连相同,但粒度和时序不同。
- 分组交换结构 Packet Switching Fabric
互连网络已经取代总线和交叉开关作为通信网络交换机和路由器的交换结构。在此应用中,互连网络充当大规模网络(局域网或广域)的路由器的一个元件。图 1.5 显示了该应用程序的示例。
3.网络基础
为了满足特定应用的性能规范(如上所述),网络设计人员必须在技术限制内实现网络的拓扑、路由和流量控制。正如我们在前几节中所说,互连网络效率的关键来自于通信资源的共享。互连网络不是在每个终端对之间创建专用通道,而是通过通过共享通道连接的共享路由器节点的集合来实现。
这些节点的连接模式定义了网络的拓扑。然后,通过在共享通道和节点上从源终端到目的地终端进行数跳,在终端之间传递消息。良好的拓扑利用网络封装技术的特性,例如芯片封装上的引脚数量或可以在单独机柜之间连接的电缆数量,以最大化网络带宽。一旦选择了拓扑,消息就可以通过许多可能的路径(节点和通道的序列)通过网络到达其目的地。
路由决定消息实际采用这些可能路径中的哪一条。良好的路径选择可以最大限度地减少其长度(通常以访问的节点或通道的数量来衡量),同时平衡对网络共享资源的需求。路径的长度显然会影响消息通过网络的延迟,而资源的需求或负载是衡量该资源使用频率的指标。如果一种资源被过度利用,而另一种资源闲置(称为负载不平衡),则网络传递的消息的总带宽就会减少。
流量控制规定哪些消息随着时间的推移可以访问特定的网络资源。随着资源利用率的增加,流量控制的这种影响变得更加重要,良好的流量控制可以以最小的延迟转发数据包,并避免高负载下的资源空闲。
- 拓扑
互连网络由一组共享的路由器节点和通道组成,网络的拓扑结构是指这些节点和通道的排列方式。互连网络的拓扑类似于路线图。通道(如道路)将数据包(如汽车)从一个路由器节点(交叉口)传送到另一个路由器节点。
例如,图1.6中显示的网络由16个节点组成,每个节点连接到8个通道,分别连接到每个相邻节点以及来自每个相邻节点的通道。这种特定的网络具有环面拓扑结构。在图中,节点用圆圈表示,每对通道用连接两个节点的线表示。该拓扑也是一个直接网络,其中一个终端与该拓扑的 16 个节点中的每一个关联。良好的拓扑利用可用封装技术的特性,以最低的成本满足应用程序的带宽和延迟要求。
为了最大化带宽,拓扑结构应该饱和二分带宽,即系统中点的带宽,由底层封装技术提供。例如,图1.7显示了图1.6中的网络可能如何封装。四个节点组被放置在垂直印刷电路板上。然后,使用背板电路板连接四个电路板,就像PCI卡可能被插入PC的主板一样。对于这个系统,二分带宽是可以跨越这个背板传输的最大带宽。对于这个系统,二分带宽是可以跨越这个背板传输的最大带宽。假设背板足够宽,可以包含256个信号,每个信号的数据速率为1 Gbit/s,则总二分带宽为256 Gbit/s
相反,请考虑图 1.8 所示的 16 节点环形网络。每个节点有 4 个通道连接,因此引脚限制将通道宽度限制为 128/4 = 32 个信号。四个通道穿过二等分,因此我们希望将这些通道设计为 256/4 = 64 个信号宽以使二等分饱和,但引脚将通道宽度限制为仅为其一半。因此,在相同的技术限制下,环形拓扑仅提供torus拓扑的一半带宽。然而,高带宽并不是衡量拓扑性能的唯一标准,也需要尽可能小的延迟。
为了实现低延迟,拓扑必须平衡节点之间较小的平均距离与低序列化延迟的需求。节点之间的距离(称为跳数)是通过消息平均必须经过的通道和节点数来衡量才能到达目的地。减少这个距离需要增加节点度(进入和离开每个节点的通道数量)。然而,由于每个节点都受到固定引脚限制,因此增加通道数量会导致通道宽度变窄。通过狭窄的通道挤压大数据包会导致序列化延迟。
为了量化由跳数引起的延迟,需要假设一个流量模式。为简单起见,我们使用随机流量,其中每个节点以相等的概率发送到每个其他节点。在随机流量下,平均跳数就是节点之间的平均距离。对于我们的环面拓扑结构,平均距离为2,对于环形拓扑结构,平均距离为4。在典型的网络中,每跳的延迟可能为20纳秒,对应环面的总跳延迟为40纳秒,环形的总跳延迟为80纳秒。然而,环形的宽通道使得其串行化延迟要低得多。要通过一个32信号的通道发送一个4,096位的数据包,需要4,096/32 = 128个通道周期。我们的信号速率为1 GHz,对应周期为1纳秒,因此环形的串行化延迟为128纳秒。如果我们的网络设计高效,我们只需支付一次这个串行化时间,这给了环形每个数据包的平均延迟为80 + 128 = 208纳秒。对于环面的类似计算得到串行化延迟为256纳秒,总延迟为296纳秒。尽管环形的平均跳数更多,但物理封装的限制使其对于这些长数据包具有较低的延迟 。正如我们在这里看到的,没有一种拓扑结构适用于所有应用。不同的拓扑结构适用于不同的约束和要求。拓扑结构将在第3章到第7章中更详细地讨论。
- 路由
网络采用的路由方法确定分组从源终端节点到目的地终端节点所采取的路径。
当有许多路径时,良好的路由算法会在通道之间均匀地平衡负载,而不管提供的流量模式如何。
图 1.9 显示了图 1.6 网络中从节点 01 到节点 22 的两条不同路由。在图 1.9(a) 中,数据包采用维度顺序路由,首先在 x 维度路由到达节点 21,然后在 y 维度路由到达目标节点 22。该路由是最小路由,因为它是以下之一:从 01 到 22 的最短路径。(有 6 个。)图 1.9(b) 显示了从 00 到 22 的替代路由。该路由是非最小路径,需要 5 跳而不是最少的 3 跳。
虽然维度顺序路由简单且最小,但它可能会对某些流量模式产生严重的负载不平衡。例如,考虑在图 1.9(a) 中添加另一个从节点 11 到节点 20 的维度顺序路由。该路由还使用从节点11到节点21的通道,其负载增加了一倍。通道的负载是终端节点尝试通过其发送的平均带宽量。将负载归一化为终端可以将数据注入网络的最大速率,该通道的负载为 2。在这种情况下,更好的路由算法可以将归一化通道负载减少到 1。由于维度顺序路由在该单个通道上放置了两倍的必要负载,因此在此流量模式下产生的网络带宽将仅为其最大值的一半。
更一般地,所有在每个源-目的地对之间选择单个固定路径的路由算法(称为deterministic确定性路由算法)特别容易由于负载不平衡而受到低带宽的影响。
- 流量控制
流量控制管理数据包沿路径传输时的资源分配。大多数互连网络中的关键资源是通道和缓冲区。我们已经了解了通道在节点之间传输数据包中的作用。缓冲区是在节点内实现的存储,例如寄存器或存储器,并允许数据包临时保存在节点处。
拓扑决定路线图,路线方法引导汽车,流量控制控制交通灯,决定汽车何时可以驶过下一段道路(通道)或何时必须停车进入停车场停车场(缓冲区)以允许其他车辆通过。
为了实现拓扑结构和路由方法的性能潜力,流量控制策略必须避免资源冲突,以防止通道闲置。
一个好的流量控制策略是公平的,并且避免死锁。一个不公平的流量控制策略可能会导致数据包无限期地等待。死锁是一个情况,当一系列数据包互相等待释放资源时发生,并因此无限期地被阻塞。我们经常通过使用类似于图1.10所示的时空图来描述流量控制方法。图中显示了(a)存储转发流量控制和(b)切换流量控制的时空图。
使用存储-转发流量控制store-and-forward flow control,一个数据包(本例中包含5个flit)在完全通过一个通道传输之后,才开始通过下一个通道传输。使用切换流量控制cut-through flow control,数据包在通道上的传输被流水线化,每个flit一旦到达,就立即开始通过下一个通道传输。
- 路由器体系结构
图 1.11 显示了图 1.6 网络中 16 个节点之一的内部结构的简化视图。一个缓冲区与四个输入通道中的每一个相关联,这些缓冲区保存到达的flit,直到可以为它们分配出发所需的资源。一旦flit可以确保在其路径上的下游路由器(即下一个路由器)的缓冲区中获得空间,它就可以开始竞争访问交叉开关crossbar switch。
交叉开关可以配置为将路由器的任何输入缓冲区连接到任何输出通道,但在每个输入最多连接到一个输出以及每个输出最多连接到一个输入的约束下。解决交叉开关和路由器的其他共享资源的所有潜在请求的任务落在分配器上。为了进入下一个路由器,一个输入缓冲区中的flit必须在其路径上的下一个节点上被分配空间,被分配带宽以及必须赢得穿越交叉开关的分配。
- 互连网络的性能
互连网络的性能主要通过延迟与提供的流量曲线来描述,如图 1.12 所示。
互连网络的延迟与所提供的流量之间的曲线。在低流量情况下,延迟趋近于零负载延迟 ( T_0 )。在饱和吞吐量 ( \lambda_s ) 处,延迟趋近于无穷大。饱和吞吐量受到拓扑限制 ( \frac{2B_c}{N} ) 和路由限制 ( R ) 的约束。
图中显示了数据包的平均延迟,即数据包从源终端到目的终端最后一位到达的时间,作为所提供的流量的函数,即网络每个源终端生成的平均流量(位/秒)。为了绘制特定的延迟与所提供的流量曲线,还必须指定流量模式(例如,随机流量)。零负载延迟给出了数据包通过网络的平均延迟的下界。零负载假设是数据包永远不会与其他数据包竞争网络资源。在此假设下,数据包的平均延迟是其串行化延迟加上其跳延迟。
对于我们的随机流量示例,一半流量必须穿过网络的二等分线。对分由 16 个通道组成,总带宽为 Bc = 256 Gbits/s。因此,每个节点的流量不能超过 2Bc/N 或 32 Gbits/s。因此,特定的路由算法 R 不能超过此界限,并且如果发生负载不平衡( R ≤ 2Bc/N ),则考虑到路由算法 R 的吞吐量实际上可能会更低。最后,如果我们的流量控制由于资源依赖性而导致通道空闲,则网络的饱和吞吐量 λs 可能会显着小于 R 的界限。
采用这种渐进的性能方法(由于拓扑、路由和流控制而逐渐得出更严格的界限)使我们能够探索我们考虑的每个设计决策如何影响性能,而不会使我们的分析因不必要的细节而变得复杂。
4.历史
互连网络有着长达数十年的丰富历史。网络至少沿着三个并行线程发展:电话交换网络、处理器间通信和处理器内存互连。自从电话出现以来,电话交换网络就已经存在了。早期的电话网络是由机电交叉开关或机电步进交换机构建的。直到 20 世纪 80 年代,大多数本地电话交换机仍然由机电继电器构建,尽管那时收费(长途)交换机已完全电子化和数字化。
电话交换的主要发展包括 1953 年的无阻塞、多级 Clos 网络 [37] 和 1962 年的 Beneˇ s 网络 [17]。如今,许多大型电话交换机仍然是基于 Clos 或类似 Clos 的网络构建的。第一个处理器间互连网络是以二维阵列连接的相邻处理器的寄存器之间的连接。
1962 年所罗门机 [172] 是此类处理器阵列的一个示例。这些早期网络不执行路由。因此,处理器必须明确地将通信中继到非邻居,从而导致性能不佳和编程复杂性相当高。到 20 世纪 80 年代中期,诸如环面路由芯片 [56] 之类的路由器芯片被开发出来,可以通过中间节点转发消息,而无需处理器干预。
多年来,处理器间互连网络经历了一系列拓扑时尚------很大程度上是受封装和其他技术限制的推动。早期的机器,如 Solomon [172]、Illiac [13] 和 MPP,由于其物理规律性而基于简单的二维网格或环面网络。从 20 世纪 70 年代末开始,二元 n 立方体或超立方体网络因其直径小而变得流行。许多围绕超立方网络设计的机器出现了,例如 Ametek S14、Cosmic Cube [163]、nCUBE 计算机 [134, 140] 和 Intel iPSC 系列 [38, 155]。
在 20 世纪 80 年代中期,研究表明,在实际封装限制下,低维网络的性能优于超立方体 [2, 46],并且大多数机器返回到 2-D 或 3-D 网格或环面网络。因此,过去十年制造的大多数机器都回到了这些网络,包括 J-machine [138]、Cray T3D [95] 和 T3E [162]、Intel DELTA [117] 和 Alpha 21364 [131],等等一些。如今,路由器芯片相对于消息长度的高引脚带宽促使人们使用节点度更高的网络,例如蝶式网络和 Clos 网络。我们预计在未来十年内将转向此类网络。
处理器-内存互连网络出现于 20 世纪 60 年代末,当时并行处理器系统合并了对齐网络,允许任何处理器访问任何内存组,而不会给其他处理器带来负担 [110]。为此目的,最小的机器采用crossbar switch,而较大的机器则在舞厅布置中使用具有蝶形(或等效)拓扑的网络。这个主题的变体在 20 世纪 80 年代被用于许多共享内存并行处理器。互连网络演进的三个线索最近合并了。自 20 世纪 90 年代初以来,处理器内存和处理器间互连网络的设计几乎没有什么区别。事实上,两者都使用了相同的路由器芯片。 Clos 和 Beneˇ s 电话网络的一种变体也以胖树拓扑的形式出现在多处理器网络中 [113]。我们对历史的讨论主要集中在拓扑上,因为它是网络最明显的属性。当然,路由和流量控制方法与拓扑并行发展。早期的路由芯片采用简单的确定性路由以及电路交换或存储转发数据包交换。后来的路由器采用了具有复杂的死锁避免方案和虚拟通道流量控制的自适应路由。