Chapter 2. A simple interconnection network

  • A Simple Interconnection Network 一个简单的互连网络
    • 2.1 网络规范和约束
    • 2.2 拓扑
    • 2.3 路由
    • 2.4 流量控制
    • 2.5 路由器设计
    • 性能分析

A Simple Interconnection Network 一个简单的互连网络

我们将研究简单互连网络的架构和设计,以提供全局视图。我们将研究最简单的网络:具有下降流量控制的蝶形网络。尽管最终的网络成本高昂,但它强调了互连网络设计的许多关键方面。在后面的章节中,我们将学习如何创建更高效​​、更实用的网络。

2.1 网络规范和约束

与所有工程设计问题一样,网络设计从一组描述我们希望构建的规范和一组限制潜在解决方案范围的约束开始。

表 2.1 总结了本章示例网络的规格。这些规格包括网络的大小(64 个端口)和每个端口所需的带宽。如表中所示,峰值和平均带宽相等,这意味着输入以 0.25 GB/s 的速率连续注入消息。
在这里插入图片描述

这些规格包括网络的大小(64 个端口)和每个端口所需的带宽。如表中所示,峰值和平均带宽相等,这意味着输入以 0.25 GB/s 的速率连续注入消息。

随机流量,其中每个输入以相同的概率发送到每个输出,预计消息大小为 4 到 64 字节。

此外,服务质量和可靠性规范允许丢弃数据包。也就是说,并非每个数据包都需要成功传送到目的地。正如我们将看到的,丢弃数据包的能力将简化我们的流量控制实现。

我们的示例网络设计的约束如表 2.2 所示。这些约束指定了每个包装级别的容量和成本。我们的网络由组装在电路板上的芯片组成,电路板上又通过电缆连接。这些约束指定了可以通过每个级别的模块接口传递的信号数量1,以及每个模块的成本。对于电缆,约束还指定了在不减少电缆带宽的情况下可以通过的最长距离。

2.2 拓扑

我们的示例网络具有蝶形拓扑。从单个输入端口的角度来看,蝴蝶看起来像一棵树。 (参见图 2.1。)树的每一层都包含交换节点,与终端节点不同,交换节点不发送或接收数据包,而仅传递数据包。此外,每个通道都是单向的,如箭头所示,从输入流向输出节点(图中从左到右)。
在这里插入图片描述

我们还必须决定网络的加速,确定蝴蝶的基数,并确定如何将拓扑映射到封装级别。网络的加速比是网络总输入带宽与网络理想容量的比率。容量被定义为假设完美的路由和流量控制,网络在给定流量模式下可以实现的最佳吞吐量。加速比为 1 的设计意味着输入的需求与网络传输流量的理想能力完全匹配。提供更多的加速可以增加设计的余量,并允许实现中的非理想情况。

对于蝶形网络,将每个网络通道的大小设置为与单个输入端口具有相同的带宽,可实现 1 的加速。要看到这一点,请考虑随机流量下对任何特定通道的需求 - 将每个输入的流量比例相加通过该通道发送的请求始终等于输入端口带宽。

在设计的网络中相当于设计带宽为 0.25 GB/s 的通道。我们选择加速比为8。对加速比的选择以及封装限制决定了每个开关节点的输入和输出数量,称为蝶形基数。例如,图2.1中的蝶形设计的基数为2。每个开关节点都在单个芯片上实现,因此通道总数(输入和输出)乘以通道宽度不得超过每个芯片的信号150的限制。

为了实现 8 的加速,我们需要 8 × 0.25 = 2 Gbytes/s 的网络通道带宽,这需要 16 个信号,每个信号以 1 Gbit/s 的速度运行。考虑到 2 个额外的开销信号,通道有 18 个信号宽,我们只能在芯片上安装 150/18 ≈ 8 个通道。因此,我们选择基 4 蝶形,每个开关节点有 4 个输入通道和 4 个输出通道,总共 8 个通道。

为了将每个输入端口连接到所有 64 个输出端口,我们的蝶形需要 log4 64 = 3 级或级的开关节点。因此,我们的网络将是一个基数 4、3 级蝶形网络,或简称为 4 元 3-fly。该网络的完整拓扑如图 2.2 所示。
在这里插入图片描述

设计拓扑的最后一步是对其进行封装。我们已经做出了一项封装决定,即为每个芯片放置一个交换节点。通过选择网络基数以满足每个芯片的限制,我们知道开关节点是在我们的设计限制内封装的。这些芯片必须安装在电路板上,并且为了最小化成本,我们希望在电路板上安装尽可能多的开关芯片。

2.3 路由

我们简单的蝴蝶网络采用目的地标签路由destination-tag routing,其中目的地地址的位用于选择网络每一级的输出端口。在我们的 64 节点网络中,目标地址是 6 位。每级交换机使用 2 个地址位来选择 4 个交换机输出中的 1 个,将数据包定向到剩余节点的适当四分之一。例如,考虑将数据包从输入 12 路由到输出节点 35 = 100011。请注意,交换机输出选择的顺序完全独立于数据包的输入端口。例如,从节点 51 到输出 35 的路由遵循相同的选择顺序。

2.4 流量控制

网络的通道每个周期传输 16 位宽的物理数字或 phits 数据。但是,我们指定网络必须传送包含 32 到 512 位数据的整个数据包。因此,我们使用一个简单的协议,如图 2.4 所示,将 phits 组装成数据包。如图所示,每个数据包都包含一个标头 phit,后跟零个或多个有效负载 phit。标头 phit 表示新数据包的开始,并且还包含我们的路由算法使用的目标地址。有效负载 phits 保存数据包的实际数据,分为 16 位块。给定数据包的 phits 必须是连续的、无中断的。
在这里插入图片描述

该字段描述了每个16位字是标头(H)、有效载荷(P)还是空(N)字。数据包的长度可以是任意的,但始终由一个H字后跟零个或多个P字,然后依次跟随零个或多个N字组成。使用正则表达式表示,流经链接的零个或多个数据包可以描述为(H P ∗N ∗)∗。

主要的流量控制工作:为数据包分配资源。为简单起见,我们的蝴蝶网络使用丢弃流量控制。如果数据包到达交换机时所需的输出端口正在使用中,那么数据包将被丢弃(丢弃)。流量控制假定某种高级别的端到端错误控制协议最终会重新发送丢弃的数据包。丢弃数据包是最糟糕的流量控制方法之一,因为它具有较高的数据包丢失率,并且会浪费通道带宽,因为最终会丢弃这些数据包。

2.5 路由器设计

我们的蝶形网络中的每个交换节点都是一个路由器,能够在其输入上接收数据包,根据路由算法确定其目的地,然后将数据包转发到适当的输出。

单个路由器的框图如图2.5所示。路由器的数据路径由四个 18 位输入寄存器、四个 18 位 4:1 多路复用器、四个移位器(用于移位标头 phits 的路由字段)和四个 18 位输出寄存器组成。
在这里插入图片描述

Phits 在每个时钟周期到达输入寄存器,并路由到所有四个多路复用器。在每个复用器处,相关的分配器检查每个 phit 的类型和每个头 phit 的下一跳字段,并相应地设置开关。来自所选输入的Phits接下来被路由到移位器。在分配器的控制下,移位器将所有头位向左移动两位,以丢弃当前路由字段并暴露下一个路由字段。顾名思义,每个分配器将一个输出端口分配给四个输入端口之一。

分配器的第二级是一个四输入固定优先级仲裁器。仲裁器接受四个请求信号并生成四个授权信号。
我们经常使用 Verilog 寄存器传输语言(RTL)模型来描述硬件。 Verilog 模型是模块的文本描述,描述其输入、输出和内部功能。

性能分析

我们通过三个指标来衡量一个互连网络:成本、延迟和吞吐量。延迟和吞吐量都是性能指标:延迟是数据包遍历网络所需的时间,吞吐量是网络每秒从输入到输出可以传输的位数。

如图2.9所示,数据包以λ的速率注入网络。不是用每秒位数来表示 λ,而是将其标准化为 2 GB/s 的通道带宽,因此 λ = 1 对应于以通道允许的最大速率注入数据包。在数据包进入网络之前,它们会与通过网络重新发送的数据包合并。这两个速率 p0 的总和就是注入网络第一阶段的数据包的总速率。在第一阶段,可能会发生一些数据包冲突,并且一小部分数据包 p1 将通过而不被丢弃。速率 p0 - p1 的差异表示已丢弃的数据包。如果要重新发送丢弃的数据包,这些数据包将流回输入并重新注入。类似地,第二阶段p2和第三阶段p3的输出速率将由于更多的冲突和丢包而继续下降。
在这里插入图片描述

因此,对于网络的第i+1阶段,交换机的每个端口的输入速率为pi。由于速率已经被归一化,它们也可以解释为在任何特定周期内到达输入端口的数据包的概率。然后,离开特定输出端口的数据包的概率pi+1等于不希望该输出端口的数据包的概率的补。由于流量模式是随机的,每个输入将以pi/4的概率希望一个输出,因此没有任何输入希望到达特定输出的概率就是(1 - pi/4)^4。(2.1) 因此,第i+1阶段的输出速率pi+1为pi+1 = 1 - (1 - pi/4)^4。(2.2) 应用方程2.2 n = 3次,分别用于网络的每个阶段,并瞬时忽略重新发送的数据包(p0 = λ),我们计算得到,在输入占空比为λ = 0.125(对应于速度增益为8)的情况下,三个交换阶段的输出占空比分别为0.119、0.114和0.109。也就是说,以0.125的流量占链路容量作为网络输入,网络的接受流量或吞吐量仅为0.109。其余的0.016(12.6%的数据包)由于网络中的冲突而被丢弃。
在这里插入图片描述

图2.10绘制了我们示例网络的提供流量和吞吐量之间的关系。两个轴都归一化到网络的理想容量。我们可以看到,在负载非常低时,几乎所有的流量都通过了网络,吞吐量等于提供的流量。然而,随着提供的流量的增加,丢弃很快就成为一个主要因素,如果不重新发送数据包,网络的吞吐量将远低于提供的流量。最终,吞吐量达到饱和,达到43.2%的渐近值。无论提供给网络多少流量,我们都无法实现超过43.2%的通道容量的吞吐量,无论数据包是否被重新发送。请注意,我们可以将该网络的速度增益设置为低至2.5,从而将最大注入速率限制为0.4。然而,最初选择速度增益为8将在延迟方面带来好处,我们将在之后看到。此外,我们的网络实际上只实现了不到一半的容量,这也是为什么几乎从不在实践中使用丢弃流控制的主要原因。在第12章中,我们将看到如何构建流量控制机制,使我们能够在不饱和的情况下使网络的运行速率超过90%的通道容量。

图2.11还显示了另一个延迟曲线,它包含了队列时间的模型。随着吞吐量接近饱和,延迟增长到无穷大的形状,在互连网络中更为典型。
在这里插入图片描述

请务必记住,公式 2.3 和图 2.11 给出了数据包的平均延迟。对于许多应用程序,我们不仅对平均延迟感兴趣,而且对延迟的概率分布感兴趣。特别是,我们可能会担心最坏情况下的延迟或延迟的变化(有时称为抖动)。

对于蝶形网络来说,这是最好的情况。正如我们将看到的,对于某些流量模式(例如位反转)6,网络的性能比此处描述的要差得多。蝶形网络对不良流量模式的敏感性很大程度上是由于从网络的每个输入到每个输出只有一条路径。我们将看到具有路径多样性的网络在困难的负载下表现得更好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/766588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构初阶】之堆(C语言实现)

数据结构初阶之堆(C语言实现) 🌏 堆的概念🌏 堆的模拟实现🐓 堆的结构和方法接口🐓 堆的方法的模拟实现🙊 堆的初始化🙊 堆的构建🙊 堆的插入🙊 向上调整&…

【SysBench】OLTP 基准测试示例

前言 本文采用 MySQL 沙盒实例作为测试目标,使用 sysbench-1.20 对其做 OLTP 基准测试。 有关 MySQL 沙盒的更多信息,请参阅 玩转 MySQL Shell 沙盒实例,【MySQL Shell】6.8 AdminAPI MySQL 沙盒 。 1、部署一个 MySQL 沙盒实例 使用 mysq…

指尖论文怎么用 #经验分享#学习方法

指尖论文是一款优秀的论文写作、查重降重工具,被广泛认可为高效、可靠、方便的辅助工具。那么,如何正确地使用指尖论文呢? 首先,用户需要注册一个指尖论文的账号,并登录到平台上。注册过程非常简单,只需要输…

瑞芯微RK3576|触觉智能:开启科技新篇章

更多产品详情可关注深圳触觉智能官网! “瑞芯微,创新不止步!”——全新芯片RK3576即将震撼登场。指引科技风潮,创造未来无限可能!这款芯片在瑞芯微不断创新和突破的道路上,不仅是对过往成就的完美延续&…

V R元宇宙平台的未来方向|V R主题馆加 盟|游戏体验馆

未来,VR元宇宙平台可能会呈现出以下发展趋势和可能性: 全面融合现实与虚拟世界: VR元宇宙平台将更加无缝地融合现实世界和虚拟世界,用户可以在虚拟环境中进行各种活动,与现实世界进行互动,并且体验到更加逼…

FileZilla 链接服务器提示 20 秒连接超时

FileZilla 有个默认设置是如果 20 秒没有数据的话会自动中断链接。 Command: Pass: **************** Error: Connection timed out after 20 seconds of inactivity Error: Could not connect to server修改配置 这个配置是可以修改的,修改的步骤为: …

数据可视化-ECharts Html项目实战(5)

在之前的文章中,我们学习了如何设置滚动图例,工具箱设置和插入图片。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢 数据可视化-ECharts…

Vue3 + Django 前后端分离项目实现密码认证登录

1、功能需求 通常中小型前后端项目,对安全要求不高,也可以采用密码认证方案。如果只用django来实现非常简单。采用 Vue3 前后端分离架构,实现起来稍繁琐一点,好处是可以利用各种前端技术栈,如element-plus UI库来渲染…

Git Commit 提交规范,变更日志、版本发布自动化和 Emoji 提交标准

前言 Git Commit 是开发的日常操作, 一个优秀的 Commit Message 不仅有助于他人 Review, 还可以有效的输出 CHANGELOG, 对项目的管理实际至关重要, 但是实际工作中却常常被大家忽略,希望通过本文,能够帮助大家规范 Git Commit,并且展示相关 …

Mongodb入门到入土,安装到实战,外包半年学习的成果

这是我参与「第四届青训营 」笔记创作活动的的第27天,今天主要记录前端进阶必须掌握内容Mongodb数据库,从搭建环境到运行数据库,然后使用MongodB; 一、文章内容 数据库基础知识关系型数据库和非关系型数据库为什么学习Mongodb数据库环境搭建及运行MongodbMongodb命…

【进程概念】启动进程 | 查看进程 | 创建进程

目录 启动进程 查看进程 方法1:/proc 方法2:查看脚本 ​方法3:系统调用获取进程标示符❗❗ 终止进程 创建进程(主fork) 🙂查看父子进程的pid 🙂进程创建/执行/终止 🙂多次重新启动进…

STM32 CAN的工作模式

STM32 CAN的工作模式 正常模式 正常模式下就是一个正常的CAN节点,可以向总线发送数据和接收数据。 静默模式 静默模式下,它自己的输出端的逻辑0数据会直接传输到它自己的输入端,逻辑1可以被发送到总线,所以它不能向总线发送显性…

鸿蒙开发实战:网络请求库【axios】

简介 [Axios] ,是一个基于 promise 的网络请求库,可以运行 node.js 和浏览器中。本库基于[Axios]原库v1.3.4版本进行适配,使其可以运行在 OpenHarmony,并沿用其现有用法和特性。 http 请求Promise APIrequest 和 response 拦截器…

Stable Diffusion实现光影字效果

昨天下午有人在群里发光影图片,大家都觉得很酷,我没怎么在意。直到早上我在小红书看到有人发同款图片,只是一晚上的时间点赞就超过了8000,而且评论数也很高,也可以做文字定制变现。研究了一下发现这个效果不难实现&…

数据结构/C++:哈希表

数据结构/C:哈希表 哈希表概念哈希函数直接定址法除留余数法 哈希冲突闭散列 - 开放定址法基本结构查找插入删除总代码展示 开散列 - 哈希桶基本结构查找插入删除代码展示 哈希表概念 在顺序表中,查找一个数据的时间复杂度为O(N);在平衡树这…

宋仕强论道之华强北科技创新说

宋仕强论道之华强北科技创新说,“创新”是深圳市和华强北灵魂,创新再加上敢想敢干永不言败,造就了深圳市经济奇迹和华强北财富神话!首次在深圳市落槌的“土地拍卖”,华强北“一米柜台”赋予独立经营权,把最…

通过jsDelivr实现Github的图床CDN加速

最近小伙伴们是否发现访问我的个人博客http://xiejava.ishareread.com/图片显示特别快了? 我的博客的图片是放在github上的,众所周知的原因,github访问不是很快,尤其是hexo博客用github做图床经常图片刷不出来。一直想换图床&…

提面 | 面试抽题

学习到更新日期面试抽题-1.2案例分析的思维本质2024-3-23 1提面抽屉论述问题的分类 1.1案例分析占总论 1.2案例分析的思维本质

rabbitmq 3.9.29 docker mac 管理员页面无法打开

SyntaxError: Unexpected token ‘catch’ SyntaxError: Unexpected token ‘catch’ at EJS.Compiler.compile (http://127.0.0.1:15672/js/ejs-1.0.min.js:1:6659) at new EJS (http://127.0.0.1:15672/js/ejs-1.0.min.js:1:1625) at format (http://127.0.0.1:15672/js/main…

【docker系列】深入理解 Docker 容器管理与清理

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…