【Interconnection Networks 互连网络】Dragonfly Topology 蜻蜓网络拓扑

文章详细介绍了Dragonfly拓扑的三层结构,包括路由器、组和网络系统,以及其关键参数如拓扑参数、基数、通道数量等。讨论了如何通过调整参数实现负载均衡和高度可扩展性,并提及了拓扑变体和封装局部性对性能的影响。

蜻蜓拓扑 Dragonfly Topology

1. 拓扑参数

Dragonfly拓扑参数:

  • N N N: 网络中终端(terminal)的总数量
  • p p p: 连接到每个路由器的终端数量
  • a a a: 每组(group)中的路由器数量
  • k k k: 路由器的基数(端口数量)
  • k ′ k' k: 组(或虚拟路由器(组内所有路由器组成))的有效基数
  • h h h: 每个路由器用于连接到其他组的通道数
  • g g g: 网络系统中的组数
  • q q q: 输出端口的队列深度
  • q v c q_{vc} qvc: 单个输出 VC 的队列深度
  • H H H: 跳数
  • O u t i Out_{i} Outi: 路由器输出端口 i i i

2. Topology Description 拓扑描述

Dragonfly 蜻蜓拓扑具有三层的分层网络,从小到大分别是路由器(router),组(group)和网络系统。

在这里插入图片描述

如图3所示。从底层的每个路由器出发,每个路由器连接到 p 个终端(terminal),连接到a − 1 个本地通道(local channel)(和组中每一个路由器相连),也拥有h个全局通道(global channel)去连接到其他组中的路由器。因此,每个路由器的基数radix(或度数degree)为 k = p + a + h − 1。

而对于中间层次组(group),每个组都通过组内路由器通过本地通道形成的组内互连网络组成(图 3(a))。每个组的路由器数量为 a ,都有到终端的 ap 个连接和到全局通道的 ah 个连接,并且组中的所有路由器共同充当基数为 k′ = a(p + h) 的虚拟路由器(virtual router)。

虚拟路由器的高基数 k′ >> k 使系统级网络(图 3(b))以非常低的全局直径实现。整个网络最多可以连接 g = ah + 1 个组(则整体网络的终端总数量为 N = ap(ah +1)),全局直径为 1。相比之下,直接使用基数 k 路由器构建的系统级网络将需要更大的全局直径。在最大尺寸 (N = ap(ah +1)) 蜻蜓中,每对组之间只有一个连接,在较小的蜻蜓中,每个群体的全局联系比其他群体更多。这些额外的全局连接分布在每对组上,每对组通过至少(\left\lfloor \frac{ah+1}{g}\right\rfloor )个通道连接。

蜻蜓参数 a、p 和 h 可以具有任意值。然而,为了平衡负载平衡流量上的信道负载,网络应该具有a=2p=2h。因为每个数据包沿其路由经过两个本地通道(全局通道的每一端各一个),一个全局通道和一个终端通道,因此这一比率保持平衡。由于全局通道价格昂贵,因此应配置更多的本地和终端通道的方式,以便使昂贵的全局通道保持充分利用。也就是说,网络平衡应使a≥2h,2p≥2h。

在确定了 p,a,h,g 四个参数之后我们就可以确定一个dragonfly的拓扑,因此一个Dragonfly的拓扑可以用 dfly(p,a,h,g) 来表示。g为网络中组的个数。

在这里插入图片描述

平衡蜻蜓的可扩展性如图 4 所示。通过增加有效基数(virtual router radix),蜻蜓拓扑具有高度可扩展性 - 使用 radix-64 路由器,拓扑可扩展到超过 256k 个节点,网络直径仅为三跳。任意网络可用于图 3 中的组内和组间网络。这两个网络一般都使用一维扁平蝶形或完全连接的拓扑。图 5 显示了一个简单的蜻蜓示例,其中 p = h = 2,a = 4,可扩展至 N = 72(最多网络中有9组,即N = 9x8 = 72),其中 k = 7 个路由器。通过使用虚拟路由器,有效基数从k=7增加到k′=16。

在这里插入图片描述

3. Topology Variations 拓扑变体

全局基数k’可以通过使用更高维的拓扑结构来进一步增加。还可以利用组内封装局部性(packaging locality)

封装局部性(packaging locality)指的是在网络拓扑结构中,相邻节点之间具有更高的通信带宽或更低的延迟。这种局部性在通信模式中是很常见的,因为许多应用程序倾向于在节点之间进行频繁的通信,并且通常是在相邻的节点之间进行。通过利用封装局部性,网络设计可以优化通信性能,从而提高整体的网络效率和吞吐量。在高性能计算系统和数据中心网络中,封装局部性的利用对于减少通信延迟和提高通信效率至关重要。

例如,图6(a)中显示了一个二维扁平蝴蝶结构,它与图5中显示的组具有相同的 k’,但通过利用封装局部性为本地路由器提供更多带宽。图6(b)中使用了一个三维扁平蝴蝶结构,增加了组内的路由器数量 a,将有效基数从 k’=16 增加到 k’=32——允许使用与图3中相同的 k=7 路由器扩展到 N=272(17x16)。

为了增加高基数网络(如Dragonfly结构)的终端带宽,可以采用通道切片(channel slicing)。与其使通道变宽(这会减少路由器基数),不如将多个网络并联连接以增加容量。类似地,Dragonfly结构也可以利用并联网络来增加网络容量。此外,到目前为止描述的Dragonfly网络假设网络中所有节点具有统一带宽。然而,如果不需要这种统一带宽,可以通过移除某些组之间的组间通道来实现带宽递减。

在这里插入图片描述

References:
[1] W. J. Dally, “Performance analysis of k-ary n-cube interconnection networks,” IEEE Trans. Comput., vol. 39, no. 6, pp. 775–785, Jun. 1990, doi: 10.1109/12.53599.
[2] http://blog.sysu.tech/%E7%BD%91%E7%BB%9C/Dragonfly%E6%8B%93%E6%89%91%E7%AE%80%E4%BB%8B/

在计算架构中,互连网络Interconnection Networks)是用于连接多个处理单元、存储单元以及I/O设备的核心通信基础设施。其主要功能是实现不同组件之间的高效数据传输与交换[^1]。互连拓扑Interconnection Topology)作为互连网络的关键组成部分,决定了节点之间的连接方式和通信路径,直接影响系统的性能、可扩展性和可靠性。 ### 互连拓扑的基本分类 常见的互连拓扑包括: - **总线型结构**:所有节点共享一条通信总线,适用于小规模系统,但存在带宽瓶颈。 - **星型结构**:所有节点通过中央交换节点连接,便于管理但依赖中心节点。 - **环形结构**:节点按环状连接,通信效率较高但容错性较差。 - **网状结构(Mesh)**:每个节点与其他部分或全部节点直接相连,具有高可靠性和低延迟,但成本较高。 - **超立方体(Hypercube)**:适合大规模并行处理系统,具有良好的扩展性。 - **树状结构**:支持分层通信,常用于广播和多播应用。 这些拓扑结构的选择将影响封装(Packaging)设计中的物理布局、信号完整性、功耗管理等方面。 ### 封装映射原理 在封装设计中,互连拓扑需要被映射到物理芯片或模块的布局上。这种映射过程涉及以下几个关键方面: 1. **物理布线约束**:拓扑结构中的每条边对应封装中的物理连线,需考虑长度、延迟和串扰等问题。 2. **热管理**:节点之间的通信会产生热量,合理的拓扑映射有助于均衡热分布,提升系统稳定性。 3. **功耗优化**:短距离通信通常能耗较低,因此映射时应尽量缩短高频通信节点之间的物理距离。 4. **可制造性与可测试性**:复杂的互连结构可能增加封装难度,影响良率和后期测试的可行性。 例如,在多核处理器中,若采用Mesh拓扑,封装时可以将相邻核心物理上靠近排列,以减少互连延迟和功耗。而在GPU等大规模并行系统中,可能采用3D封装技术来实现更高效的拓扑映射[^1]。 ### 互连网络拓扑对封装的影响 互连网络的设计目标包括高带宽、低延迟、可扩展性等。拓扑结构直接影响这些性能指标,并进一步决定封装设计的复杂度和实现方式。例如: - 在Chiplet架构中,多个小芯片通过先进封装(如硅通孔TSV、微凸块)进行互联,此时拓扑结构的选择会显著影响芯片间的通信效率和封装成本。 - 在异构计算系统中,CPU、GPU、FPGA等不同类型的计算单元之间需要高效互连,拓扑结构的合理设计与封装映射至关重要。 ### 示例代码:拓扑建模与通信延迟分析 以下是一个简单的Python示例,展示如何模拟不同拓扑结构下的通信延迟: ```python import networkx as nx import matplotlib.pyplot as plt # 创建一个5x5 Mesh拓扑 mesh = nx.grid_2d_graph(5, 5) # 计算平均最短路径长度(近似通信延迟) avg_path_length = nx.average_shortest_path_length(mesh) print(f"Average shortest path length in Mesh topology: {avg_path_length:.2f}") # 可视化拓扑 nx.draw(mesh, with_labels=True, node_size=100) plt.show() ``` 该代码使用`networkx`库创建了一个二维网格拓扑(Mesh),并计算了其平均最短路径长度,用于评估通信延迟特性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在輸入......

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值