【DAC‘ 2022】Kite: A Family of Heterogeneous Interposer Topologies
- Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling
- 背景和动机
- 背景
- 动机
- 工作内容
- KITE 拓扑
- 实验方法和评估结果
- 背景和动机
Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling
通过精确互连建模实现的一系列异构中介层拓扑
Srikant Bharadwaj
Advanced Micro Devices, Inc.
Georgia Institute of Technology
背景和动机
裸片堆叠和 2.5D 芯片集成技术的最新进展引入了封装内网络异质性,这可能使互连设计变得复杂。在硅中介层上集成小芯片提供了优化中介层拓扑的新机会。然而,由于现有片上网络 (NoC) 模拟器的功能有限,基于interposer的 NoC 的全部潜力尚未得到充分利用。
我们解决了先前 NoC 设计的不足,并提出了一个名为 Kite 的新小芯片拓扑系列。 Kite 拓扑更好地利用了新有源中介层系统中存在的多样化网络和频域,并且优于之前的小芯片拓扑方案。与 Double Butterfly 和 Butter Donut(之前使用不太准确的建模开发的两个提案)相比,Kite 将合成流量延迟减少了 7%,最大吞吐量平均提高了 17%。
背景
- 2.5D 系统实现的关键技术之一是通过硅中介层或其他封装技术将多个分立芯片(通常称为小芯片)集成在一个封装内 [2, 3]。此外,小芯片还可以使用多芯片模块 SoC (MCM-SoC) 进行集成。图 1(a) 显示了 64 核单片芯片的示例,而其小芯片化 版本如图 1(b) 所示。
- 在基于中介层的系统中,小芯片以及中介层可以拥有自己的互连网络,在不同的时钟域和/或链路宽度下运行。这导致整个系统出现异构片上网络 (NoC) + 中介层网络 (NoI) 互连结构。(其他作品没有使用术语 NoI,而是将芯片和中介层网络统称为“混合 NoC”。 在这项工作中,我们使用术语 NoC 和 NoI 来分别区分各个小芯片上的网络和中介层上的小芯片之间的网络。)
- 设计 NoI 拓扑对于整体系统性能至关重要,因为中介层是小芯片间通信、片外数据传输和 I/O 的共享资源。先前的工作提出了混合 NoC + NoI 架构的新拓扑。然而,他们假设 NoC 和 NoI 以相同的频率运行,这对于商业产品来说可能不经济或不有利。对于工业设计来说,小芯片和中介层拥有自己的时钟域以发挥小芯片-中介层集成的最大潜力是相当可行的。因此,我们在更现实的假设和约束下重新审视 NoI 拓扑设计。
- 传统 NoC 模拟器缺乏的一个重要设计方面是将 NoI 与核心和内存小芯片解耦。因此,大多数现有工具假设 NoI 频率和链路宽度等于 NoC 频率和链路宽度,这种方法限制了设计者和研究人员评估拓扑设计的权衡。此外,NoC + NoI 交互的建模不足会导致大量的设计选项丢失。为了充分探索NoC + NoI设计空间,需要对异构互连进行精确建模。
- 在本文中,我们通过设计一套名为 Kite 的新拓扑,准确地重新评估和改进了先前的学术方法,该拓扑在核心到核心和核心-memory流量下均优于当前发布的最先进的拓扑。具体来说,通过将 NoI 与 NoC 频率和功率限制解耦,我们准确地评估了在 NoI 内使用较长链路的权衡。我们采用实现感知的设计时指标,称为有效跳数和有效带宽,它们考虑了不同链路长度的频率限制,并改进了拓扑设计。因此,我们的 Kite 拓扑比之前得出的结论更有效地使用更长的链路并维持更高的吞吐量。此外,我们还介绍了 HeteroGarnet,一种用于建模异构网络的模拟器,并利用它来测量 NoI 拓扑的性能。
动机
- 中介层网络已被提议用于核心到内存流量以及核心到核心一致性流量。
- 先前的工作:
- 一种简单的拓扑结构是将core路由器连接到中介层路由器,然后中介层形成简单的Mesh网络。但这种设计ubumps占用面积大,大多数链路未得到充分利用。
- 另一种替代方法是使用集中Mesh网络,多个核心路由器连接到一个中介层路由器,然后在中介层形成Mesh网络。集中网格 (CMesh) 利用高基数路由器(8 级)以较少的网络跳数连接到内存控制器。CMesh 由于二分带宽较低而提供较低的吞吐量。
- 双蝴蝶[图2©]利用较长的链路并减少平均跳数;此外,对角线链路增加了二分带宽
- 一项研究通过利用“错位”网络优化了 NoI 拓扑。未对齐的中介层网络会偏移其路由器的位置,从而使两个相邻小芯片边缘的核心共享同一路由器 [4],如图 2(d) 所示。他们进一步提出了 ButterDonut 拓扑来减少平均跳数以及芯片间一致性流量延迟,如图 2(e) 所示。 ButterDonut 增加了二等分带宽,同时保持与 CMesh 类似的路由器复杂性。我们遵循原始论文中未对齐拓扑的命名法,其中 ButterDonut(X) 指的是 X 维度的未对齐。
- 混合 NoC 探索的挑战。设计拓扑的评估应包括准确地建模工作参数,例如延迟和工作频率。此外,考虑到添加更多电线的成本相对较低[7],一个自然的方向是探索在不影响 NoC 设计参数的情况下增加 NoI 链路带宽的好处。
工作内容
KITE 拓扑
-
设计指标
- Effective Hops有效跳数,数据包在任何源目的地对之间穿越的网络延迟 (T) 定义为
𝑇 = 𝐻 × 𝑡𝑤 + 𝐻 × 𝑡𝑟 + 𝑇𝑐 + 𝑇𝑠
H 是源 - 目的地对之间的跳数,tw 是每跳线路延迟,tr 是路由器延迟,Tc 和 Ts 分别是争用延迟和串行化延迟。所有这些延迟都是循环的。 tw、tr 和 Ts 是设计时指标,而 H 和 Tc 取决于运行时的流量特征。
独立于运行时流量争用的设计时延迟代理是平均跳数 ( Havg )。 Havg 是通过对所有可能的源-目标对上的 H 进行平均来确定的。并且通常与其他指标(例如直径(最坏情况延迟的代理)和二分带宽(峰值吞吐量的代理))相结合来衡量拓扑的有效性 。减少 Havg 是拓扑设计的黄金标准,并导致了多种流行的基于片上快速链路。Havg 中的问题是,通常不考虑工作频率 f(每跳的持续时间)。例如,拓扑可以使用长快速链路来提供单跳传输,但可能受到最大可能 f 的限制。因此,tw 和 tr 值会上升,使其比具有较高 Havg 但较高 f 的拓扑更糟糕。
这在 NoC 中通常不是问题,因为 NoC 的(低)运行频率受到 CPU/GPU 核心和缓存的限制,自从 Dennard 扩展停止以来,这些频率已趋于稳定。然而,NoI 不需要耦合到核心频率,因此可以在不同的(多 GHz)工作频率下工作。这需要共同优化 Havg 和工作频率 f。为此,我们定义了一个称为有效跳数 (Heff) 的指标作为设计我们提出的 NoI 拓扑的代理。
𝐸𝑓𝑓. 𝐻𝑜𝑝 𝐶𝑜𝑢𝑛𝑡 (𝐻𝑒𝑓𝑓) = 𝐴𝑣𝑒𝑟𝑎𝑔𝑒 𝐻𝑜𝑝 𝐶𝑜𝑢𝑛𝑡 (𝐻𝑎𝑣𝑔) / 𝑂𝑝𝑒𝑟𝑎𝑡𝑖𝑛𝑔 𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦 (𝑓)
Heff 测量在网络内遍历 Havg 跳所需的有效时间。将这种实现特定的度量思想扩展到二等分带宽使我们得到一个有效的二等分带宽度量。
𝐸𝑓𝑓. 𝐵𝑖𝑠𝑒𝑐𝑡𝑖𝑜𝑛 𝐵𝑊 = 𝐵𝑖𝑠𝑒𝑐𝑡𝑖𝑜𝑛 𝐵𝑊 × 𝑂𝑝𝑒𝑟𝑎𝑡𝑖𝑛𝑔 𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦(𝑓)
具有相同 Havg 和 Bisection BW 的两种拓扑可能会导致截然不同的可操作频率(以及 Heff 和 Eff. BW)。
- Effective Hops有效跳数,数据包在任何源目的地对之间穿越的网络延迟 (T) 定义为
-
Links的分类:k-straight 和 k-m-diagonal
确定了两类链接k-straight 和 k-m-diagonal。 k-straight链路沿同一维度(水平或垂直)直接连接两个路由器,物理上跳过或绕过 k-1 个中间路由器。例如,1 条直线链路是最近邻居链路,2 条直线链路连接中间跳过一条的路由器,如图 2 中紫色线所示。 k-m 对角链路遵循相同的规则,在一个方向上有 k 跳,在另一个方向上有 m 跳。图 2 中的橙色和绿色链接分别显示 1-1 对角线和 2-1 对角线。我们假设拓扑中最长的链路类别限制并确定 NoI 的整体工作频率。 -
假设系统具有 16 个内存控制器、4 个 CPU/GPU 小芯片(每个芯片有 16 个核心)、每个路由器的集中因子为 4、最大路由器度数为 8。Kite 拓扑采用未对齐NoI 拓扑 [4] 可减少小芯片间流量所需的跳数。所有 Kite 拓扑都是通过选择 k 条直线或 k 条对角线链路之一作为最长链路来构建的,以在尽可能多的路由器之间提供连接。之后,使用较短的链路连接任何剩余的路由器和端口,直到满足最大路由器度数。出于说明目的,我们使用三种不同的链路长度(1-1 对角线、2 直线和 2-1 对角线)演示此策略,构建三种拓扑 - Kite-Small、Kite-Medium 和 Kite-Large 使用这些分别作为最长的链接。由此产生的拓扑如图 2 所示。可以通过使用更长和/或异构链路来构建其他变体。
-
技术特定评估
使用 HeteroGarnet(第 IV 节)和 DSENT 来支持路由器和链路功率建模,稍后将在第 V.B 节中详细介绍。最大工作频率由最大路由器的基数和最长导线的长度决定,如图3所示。网状拓扑具有最短的链路和低基数路由器,因此可以工作在4.0 GHz。 CMesh 可承受高达 3.6GHz 的频率。然而,具有较长链路的拓扑(即 Double Butterfly 和 ButterDonut)的时钟频率最高只能为 2.7 GHz。我们考虑使用 24mm × 36mm 有源中介层系统进行评估,该系统具有较低的 μbump 面积开销。
-
Kite 拓扑分析
表 1 总结了 Kite 拓扑与其他 NoI 拓扑在几个指标上的比较。
实验方法和评估结果
- 系统配置
- 合成流量和实际应用来进行拓扑评估。统一随机合成流量包括 50% 一致性流量(任意一对核心之间)和 50% 内存流量(核心和内存通道之间)。在每个一致性/内存流量中,一半流量是读取,一半是写入。读请求和写响应消息的长度为 8 字节,而读响应和写请求消息的长度为 72 字节。
- 路由和无死锁。为了保持比较公平,我们对所有拓扑使用最短路径路由和逃逸虚拟通道(VC)
- 技术模型
与 DSENT 结合以提取互连的功率和面积估计值。 - 实验结果
-
NoC 和 NoI 分离时钟域
评估其中 NoC 和 NoI 在不同时钟频率下运行的小芯片中介层系统。在这个实验中,我们首先使用以前作品采用的传统方法重现结果,即NoC和NoI以相同的频率运行。然后,我们应用新的方法来评估 NoI 以最大频率运行时的性能影响。这种方法将使我们能够看到设计具有更长链接的 NoI 的权衡。
- 内存流量延迟
图 4(a) 提供了当整个 NoC + NoI 工作在 1.8GHz(传统方法)时,所评估的 NoI 拓扑的负载延迟曲线。即使在低注入率下,Mesh 和 CMesh 也会遭受较高的平均延迟。 Butter Donut、Kite Medium 和 Kite Large 等拓扑利用长链路,因此能够提供低延迟。由于较高的二等分带宽,这些拓扑还能以较高的注入速率提供低延迟。总体而言,与 ButterDonut 相比,Kite Large 将延迟降低了 1%,同时将饱和负载提高了 8%。上述观察激发了 NoI 内的长链接。然而,如果忠实地建模NoC + NoI(HeteroGarnet Methodology),我们将得出不同的结论。
图 4(b) 显示了同一组拓扑的负载延迟曲线,每个拓扑都以其最大工作频率运行。我们发现,具有较短链路的拓扑可以利用较高的工作频率,从而提供更好的延迟和更高的吞吐量。Kite 拓扑对其最长链路的有效利用在低延迟和更高的内存流量饱和度限制方面都得到了回报。
2. 一致性流量延迟
一致性流量也观察到类似的趋势。尽管 Kite Medium 在我们的评估中表现最好,但根据设计和技术限制,任何 Kite 变体都可能是最佳的。 - 内存流量延迟
-
NoI 链路宽度
增加了 NoI 的链路宽度,同时保持核心级 NoC 链路宽度恒定在 16 字节。所有拓扑都以在更高注射速率下提高吞吐量的形式获得优势。
-
面积和功耗
在较高频率和链路宽度下运行任何逻辑的开销都会对面积和功耗产生影响。中介层上的区域对于维持最小活动逻辑至关重要。此外,高功耗并不能证明更高频率下的性能改进是合理的。由于系统中存在大量路由器,网状拓扑的功耗和面积成本较高。与 ButterDonut 相比,Kite 拓扑具有相似的面积和功率开销。我们性能最佳的拓扑 Kite Medium-32Byte 的面积开销仅为 3.83 mm2。这仅占中介层总几何面积的 1.3%。 -
NoI 拓扑的可扩展性
图 4(e) 显示了不同小芯片大小的数据包所经历的平均数据包延迟。将小芯片大小缩小到四个核心会增加中介层拓扑内的一致性流量,从而因争用而导致更高的延迟。16 核小芯片是最佳尺寸。
图 4(f) 显示了随着内核数量的增加,注入率为 0.03 时的平均数据包延迟。一般来说,由于跳数的增加,随着核心数量的增加,数据包所经历的延迟也会增加。 Kite 系列在所有核心数上都优于其他拓扑,即使核心数为 256,Kite Medium 的性能也更好。 -
真实应用程序
评估了 Rodinia 和 HPC 代理应用程序的子集 使用 64 CU AMD GPU 模型。图 6 显示了这些应用程序标准化为基于双蝴蝶的内插器 NoC 的总体运行时间。我们发现,在 xsbench、snapc 和 hpgmg 等内存密集型应用程序中,Kite Medium 的性能提升更为明显。总体而言,与 Double Butterfly 和 ButterDonut 拓扑相比,Kite Medium 的性能分别提高了约 12% 和 9.2%。
-
相关文章:

【DAC‘ 2022】Kite: A Family of Heterogeneous Interposer Topologies
Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling 背景和动机 背景动机 工作内容 KITE 拓扑 实验方法和评估结果 Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling 通…...

数据结构—堆
什么是堆 堆是一种特殊的树形结构,其中每个节点都有一个值。堆可以分为两种类型:最大堆和最小堆。在最大堆中,每个节点的值都大于等于其子节点的值;而在最小堆中,每个节点的值都小于等于其子节点的值。这种特性使得堆…...

Kubernetes学习笔记8
Kubernetes集群客户端工具kubectl 我们已经能够部署Kubernetes了,那么我们如何使用Kubernetes集群运行企业的应用程序呢?那么,我们就需要使用命令行工具kubectl。 kubectl就是控制Kubernetes的驾驶舱,它允许你执行所有可能的Kube…...

[渗透利器]在线渗透测试工具箱?测评
前言 hxd更新完了在线工具箱,受邀写一下使用体验以及测评 使用体验 这个工具箱设计的比较轻便,以往用过的工具箱大多都是以离线打包的方式发布,该工具箱,作者自己掏钱自己买服务器,自己买带宽,先生大义。…...

rocketmq和rabbitmq总是分不清?
1. 官方解答 摘自百度搜索: 2. 通俗易懂的回答...

利用Python ARM网关仓储物流AGV小车控制器
在现代智慧物流体系中,高效的信息管理系统是物流中心实现精准跟踪货物、科学管理库存及优化配送路线的关键环节。通过采用ARM架构的工控机或网关,并结合Python的二次开发能力,可以有效集成并强化物流管理系统的数据处理与通信功能,…...

Transformer详解和知识点总结
目录 1. 注意力机制1.1 注意力评分函数1.2 多头注意力(Multi-head self-attention) 2. Layer norm3. 模型结构4. Attention在Transformer中三种形式的应用 论文:https://arxiv.org/abs/1706.03762 李沐B站视频:https://www.bilibi…...

【Ubuntu】update-alternatives 命令详解
1、查看所有候选项 sudo update-alternatives --list java 2、更换候选项 sudo update-alternatives --config java 3、自动选择优先级最高的作为默认项 sudo update-alternatives --auto java 4、删除候选项 sudo update-alternatives --rem…...

数据结构之堆练习题及PriorityQueue深入讲解!
题外话 上午学了一些JavaEE初阶知识,下午继续复习数据结构内容 正题 本篇内容把堆的练习题做一下 第一题 1.下列关键字序列为堆的是:( A ) A: 100,60,70,50,32,65 B: 60,70,65,50,32,100 C: 65,100,70,32,50,60 D: 70,65,100,32,50,60 E: 32,50,100,70,65,60 …...

MySQL——Linux安装包
一、下载安装包 MySQL下载路径: MySQL :: MySQL Downloads //默认下载的企业版MySQL 下载社区版MySQL MySQL :: MySQL Community Downloads 1、源码下载 2、仓库配置 3、二进制安装包 基于官方仓库安装 清华centos 软件仓库: Index of /cen…...

MySQL学习笔记(数据类型, DDL, DML, DQL, DCL)
Learning note 1、前言2、数据类型2.1、数值类型2.2、字符串类型2.3、日期类型 3、DDL总览数据库/表切换数据库查看表内容创建数据库/表删除数据库/表添加字段删除字段表的重命名修改字段名(以及对应的数据类型) 4、DML往字段里写入具体内容修改字段内容…...

Asible管理变量与事实——管理变量(1)
Ansible简介 Ansible支持利用变量来储存值,并在Ansible项目的所有文件中重复使用这些值。这可以简化项目的创建和维护,并减少错误的数量。 通过变量,您可以轻松地在Ansible项目中管理给定环境的动态值。例如,变量可能包含下面这些…...

【微服务】------微服务架构技术栈
目前微服务早已火遍大江南北,对于开发来说,我们时刻关注着技术的迭代更新,而项目采用什么技术栈选型落地是开发、产品都需要关注的事情,该篇博客主要分享一些目前普遍公司都在用的技术栈,快来分享一下你当前所在用的技…...

【SCI绘图】【小提琴系列1 python】绘制按分类变量分组的垂直小提琴图
SCI,CCF,EI及核心期刊绘图宝典,爆款持续更新,助力科研! 本期分享: 【SCI绘图】【小提琴系列1 python】绘制按分类变量分组的垂直小提琴图,文末附完整代码 小提琴图是一种常用的数据可视化工具…...

docker------docker入门
🎈个人主页:靓仔很忙i 💻B 站主页:👉B站👈 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:Linux 🤝希望本文对您有所裨益,如有不足之处&#…...

终极数据传输隐秘通道
SOCKS5代理作为网络请求中介的高级形态,提供了一种方法,通过它,数据包在传达其最终目的地前,首先经过一个第三方服务器。这种代理的先进之处在于其对各种协议的支持,包括HTTP、FTP和SMTP,以及它的认证机制&…...

Qt中的事件与事件处理
Qt框架中的事件处理机制是其GUI编程的核心部分,它确保了用户与应用程序之间的交互能够得到正确的响应。以下是对Qt事件处理机制的详细讲解以及提供一些基本示例。 1. 事件与事件处理简介 事件:在Qt中,所有的事件都是从QEvent基类派生出来的&…...

中间件漏洞攻防学习总结
前言 面试常问的一些中间件,学习总结一下。以下环境分别使用vulhub和vulfocus复现。 Apache apache 文件上传 (CVE-2017-15715) 描述: Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨…...

HarmonyOS开发实例:【分布式数据管理】
介绍 本示例展示了在eTS中分布式数据管理的使用,包括KVManager对象实例的创建和KVStore数据流转的使用。 通过设备管理接口[ohos.distributedDeviceManager],实现设备之间的kvStore对象的数据传输交互,该对象拥有以下能力 ; 1、注册和解除注…...

蓝桥杯——运动会
题目 n 个运动员参加一个由 m 项运动组成的运动会,要求每个运动员参加每个项目。每个运动员在每个项目都有一个成绩,成绩越大排名越靠前。每个项目,不同运功员的成绩不会相 同,因此排名不会相同。(但是不同项目可能成绩会相同) 每…...

如何搭建APP分发平台分发平台搭建教程
搭建一个APP分发平台可以帮助开发者更好地分发和管理他们的应用程序。下面是一个简要的教程,介绍如何搭建一个APP分发平台。 1.确定需求和功能:首先,确定你的APP分发平台的需求和功能。考虑以下几个方面: 用户注册和登录ÿ…...

【计算机专业必看】详细说明文件打开模式r,w,a,r+,w+,a+的区别和联系
文章目录 1、联系2、区别r(只读)w(只写)a(追加)r(读写,文件必须存在)w(读写,文件不存在则创建,存在则清空)a(读…...

Db2数据库稳定性解决方案
常见的数据库查询或写入慢,一般有以下情况 1、数据库经常有删除或有大量查询,(导致磁盘碎裂,数据库缓存堆积) 2、数据量大,导致在查询或写入时,由于负载高,导致系统慢 3、业务代码…...

如何用Python编写简单的网络爬虫(页面代码简单分析过程)
一、什么是网络爬虫 在当今信息爆炸的时代,网络上蕴藏着大量宝贵的信息,如何高效地从中获取所需信息成为了一个重要课题。网络爬虫(Web crawler)作为一种自动化工具,可以帮助我们实现这一目标,用于数据分析…...

【随笔】Git 高级篇 -- 最近标签距离查询 git describe(二十一)
💌 所属专栏:【Git】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…...

【leetcode面试经典150题】7.买卖股票的最佳时机(C++)
【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…...

个人求职简历(精选8篇)
HR浏览一份简历也就25秒左右,如果你连「好简历」都没有,怎么能找到好工作呢? 如果你不懂得如何在简历上展示自己,或者觉得怎么改简历都不出彩,那请你一定仔细读完。 互联网运营个人简历范文> 男 22 本科 AI简历…...

Ubuntu22.04安装Anaconda
一、下载安装包 下载地址:https://www.anaconda.com/download#Downloads 参考:Ubuntu下安装Anaconda的步骤(带图) - 知乎 下载Linux 64-Bit (x86) installer 二、安装 在当前路径下,执行命令: bash Ana…...

后端nginx使用set_real_ip_from获取用户真实IP
随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户的真实IP地址. 前言:Nginx ngx_http_realip_module…...

python使用leveldb
LevelDB 是由 Google 开发的一个快速的键值存储库,提供了一个持久化的有序映射,非常适合用作简单的高性能数据库。 安装 Plyvel 首先,使用 pip3 来安装 plyvel pip3 install plyvel基本用法 接下来,介绍使用 plyvel 来操作 Le…...