全文 - UALink_200G Rev 1.0 Specification 第 1 章 引言
第 1 章 引言译自《UALink_200 Rev 1.0 Specification》Ultra Accelerator Link Consortium Inc., 2025第 1 章。1.1 多节点加速器系统本规范的主要目的是实现加速器Accelerator之间的低延迟、高效通信。加速器数量以及分配给每个加速器的带宽可以扩展以满足 AI 应用的需求。图 1-1 展示了一个包含多个节点的示例系统其中每个节点具有一颗主机Host处理器和四个加速器。系统总共有 M 个加速器每个加速器具有 N 个端口。假定这 N 个端口是对称的流量在所有端口之间均匀分布。通常每个系统节点由单一 OS 镜像控制和管理系统节点也称为OS 域。一组 UALink 交换机Switch将各加速器连接在一起。UPLI 允许系统中多达 1024 个加速器或端点使用一个 10 位标识符进行通信。交换机使用 10 位的源加速器标识符与目的加速器标识符在发送方与接收方之间路由请求Request和响应Response。所有请求都应携带源与目的加速器标识符响应也携带源与目的加速器标识符但路由时只需要目的标识符保留源标识符是为了便于调试。图 1-1 基于 UALink 的多加速器系统如图 1-1 所示加速器 Fabric 交换机通过由 UALink 通道Lane组成的 UALink 链路Link连接 M 个加速器。一个 Lane 是一对信号一个用于发送、一个用于接收UALink Lane 可以组合成单 Lane 链路x1 链路、双 Lane 链路x2 链路和四 Lane 链路x4 链路。每台交换机的 Lane 数量以及交换机与加速器的分叉bifurcation能力决定了每台交换机可以连接多少个加速器。一个 Pod舱由通过 UALink 交换机互连的最大数量的加速器组成。交换机的定义是一个逻辑实体其端口数radix基数等于 Pod 中加速器的数量。交换机上的每个端口都应连接到一个不同的加速器。除非被分区partition否则交换机可以将交换机上的任意端口连接到交换机上的任意其他端口。交换机的数量应等于加速器上的端口数量Pod 中所有加速器应具有相同数量的端口。在这些约束条件下UALink 交换机以一种特定方式连接 Pod 中的加速器加速器上的每个端口只能与其他每个加速器上的单一端口相互通信。虚拟 PodVirtual Pod是 Pod 中一个或多个加速器组成的组组内加速器可以互相通信但不能与 Pod 中的任何其他加速器通信。可以通过将每台交换机上的端口划分为互不重叠的子集把 Pod 划分成多个虚拟 Pod。同一子集内的端口可以互相通信但不能与子集外的任何端口通信。交换机应提供配置分区的机制。Pod 中的交换机可以在硬件上用物理交换机Physical Switch实现当物理交换机的基数等于 Pod 中加速器的数量时对物理交换机的分区直接创建出虚拟 Pod。然而如果物理交换机的基数是 Pod 中加速器数量的大于 1 的整数倍则应首先把该物理交换机划分为若干个逻辑交换机然后再进一步划分这些交换机以创建虚拟 Pod。无论物理交换机如何分区、虚拟 Pod 如何划分Pod 中的所有加速器都具有唯一的加速器 ID。一个虚拟 Pod 中的所有加速器端口因此也包括所有交换机端口共享相同的安全加密/认证设置。本规范支持每 Lane 最高 200 GT/s 的数据速率和最高 4 Lane 的链路宽度。一个 UALink 站Station简称 Station定义为 4 个 UALink Lane 组成的一组。一个 UALink Station 可以分叉为连接一条 x4 UALink 链路简称 Link、两条 x2 链路或四条 x1 链路。UALink 链路应连接在两个不同设备的 UALink 端口之间在图中即加速器 ACC 上的端口与 UALink 交换机上的端口之间。每个 UALink Station 的最大带宽应为 800 吉比特每秒Gbps。信号速率通常更高212.5 GT/s以容纳以太网第 1 层为前向纠错码FEC和额外的第 1 层编码所消耗的带宽。1.2 加速器系统节点一个加速器系统节点可以由一个或多个主机处理器、一个或多个加速器以及处于单一 OS 域下的设备组成。一个加速器既可以通过直连的 UALink 链路也可以通过 UALink 交换机与另一个加速器通信。系统节点内部加速器之间的通信称为域内通信in-domain communication即在一个 OS 域之内。不同系统节点中加速器之间的通信称为跨域通信cross-domain communication。图 1-2 加速器通过直连链路和通过交换机的通信UALink 交换机应支持对最多 1024 个加速器的 scale-up纵向扩展加速器 Pod 的直接 load/store 访问模型。以太网交换网络则应支持通过以太网交换机构建的、包含成千上万个加速器的数据中心级 scale-out横向扩展集群。这可以通过连接到主机的前端front-sideNIC 实现。1.3 UALink 协议栈接口分层UALink 链路在发送方与接收方之间传送消息。UALink 是一种对称协议发送路径和接收路径支持相同的消息集合与通道集合。这些消息会穿越 UALink 协议栈的多个功能层。UALink 协议栈应由以下各层组成协议层Protocol Layer事务层Transaction Layer数据链路层Data Link Layer物理层Physical Layer图 1-3 UALink 协议栈1.3.1 协议层UALink 的协议层称为 UALink 协议级接口UALink Protocol Level InterfaceUPLI。UPLI 定义了一种逻辑信令接口和一种协议设备可通过该协议经由一组请求与响应消息来交换数据与控制信息。UALink 规范完整定义了 UPLI 协议并期望遵循该协议的实现能够与 UALink 交换机兼容。UPLI 协议内置了灵活性允许厂商为同种类加速器之间的通信创建自定义协议消息而无需对 UALink 交换机做任何修改。UALink 协议级接口是各实现方主要需要自行开发对接的接口而协议栈的其余部分通常可以采用第三方厂商提供的 IP。1.3.2 事务层事务层TL应连接两个 UPLI 接口一个来自 UPLI 发起方Originator一个来自 UPLI 完成方Completer。TL 应向 UALink DL 驱动一个 64 字节的出站发送TxFlit并应从 UALink DL 接收一个 64 字节的入站接收RxFlit。从两个 UPLI 接口驱动进入 TL 的各 UPLI 通道应被打包成 64 字节的出站发送TxFlit 并发送到 UALink DL。类似地来自 UALink DL 的 64 字节接收RxTL Flit 应被解包到两个相连 UPLI 接口的请求、读响应/数据、发起方数据Orig Data和写响应通道中。1.3.3 数据链路层数据链路层从事务层TL接收 64 字节 Flit并应在出站egress方向将这些 Flit 打包成 640 字节 Flit然后发送到物理层PL。类似地在入站ingress方向数据链路层DL应从 PL 接收 640 字节 Flit将其解包为 64 字节 Flit然后发送到事务层TL。DL 应提供控制消息服务用于协调链路状态的变更如上线/离线以及其他特性。DL 应提供一种 UART 机制使固件控制的序列能够跨越链路传递。1.3.4 物理层物理层PL基于 IEEE 802.3dj撰写本文时为 D1.4 草案。PL 应支持以下基于 200G 串行的速率200GBASE-KR1/CR1、400GBASE-KR2/CR2 和 800GBASE-KR4/CR4。PL 还应支持以下基于 100G 串行的速率100GBASE-KR1/CR1、200GBASE-KR2/CR2、400GBASE-KR4/CR4。为了在 200G 串行速率下降低延迟除标准的 4 路交织外还可选支持 1 路和 2 路码字交织code word interleave模式。为改善延迟每个 640 字节 DL Flit 应唯一地打包进单个 680 字节码字中。额外的 40 字节用于 FEC 开销和 256B/257B 线路编码。实现 DL Flit 与码字的对齐确实需要对标准以太网 PCS 做出修改涉及对齐标记alignment marker的插入与移除。链路上的对齐标记本身与 IEEE 802.3 的定义保持一致只有对齐标记的插入与移除机制发生了变化。以太网 Retimer 只要使用恢复时钟转发数据就应能兼容 UALink——这是最常见的机制。增加或移除空闲Idle码将需要进行 FEC 解码与再编码带来很大的延迟惩罚。此外这会破坏 UALink 所要求的 DL Flit 与码字的关联关系。自动协商Auto negotiation和链路训练link training与 802.3 保持一致没有变化。1.4 UALink 地址转换模型图 1-4 展示了 UALink 网络它允许数据在设备之间移动支持系统节点内部以及跨系统节点的数据传输。加速器可以使用系统物理地址System Physical AddressSPA访问本系统域内的内存并可以使用网络物理地址Network Physical AddressNPA访问另一系统域中的内存。实现也可以选择采用扁平的全局寻址模型以简化地址转换过程。本节简要概述一种跨域地址转换模型仅作说明之用。本规范将地址转换留作实现选择因为交换机使用基于标识符的路由。在该示例中源加速器使用内存管理单元MMU将来宾虚拟地址Guest Virtual AddressGVA转换为网络物理地址NPA。在目的节点使用链路 MMU 将 NPA 转换为本地的 SPA。图 1-4 UALink 跨域地址转换模型1.4.1 远程内存访问RMA跨越众多加速器的分布式应用需要安全地访问远程系统节点上内存的能力。这一过程的第一步是从目标节点导入import内存的能力。这通常通过 OpenSHMEM 或自定义的共享内存库实现该库能够在导入方与导出方之间交换指针。该库处理一个覆盖多个系统节点内存的分区全局地址空间PGAS。接收方与发送方之间交换的指针由一个地址句柄address handle和 Pod 内的物理加速器标识符组成。使用地址句柄而非实际地址可以提供更高的安全性。指针交换过程预期通过连接到主机的前端以太网网络进行。在图 1-5 中导入内存的源加速器在其加速器的内存管理单元MMU中创建一个页表项PTE其中包含地址句柄和加速器标识符。导出方即目的加速器在其链路 MMU 中创建一个新的页表项其中包含地址句柄和源加速器标识符。下面的图 1-5 展示了源加速器与目的加速器上的转换过程。运行在计算单元上的应用使用来宾虚拟地址。这些来自计算单元CU包含大量计算单元的访问经过 MMU将虚拟地址转换为物理地址。图 1-5 转换过程除地址之外PTE 还添加了一位用于标识物理地址的类型。支持的两种物理地址类型为系统物理地址SPA——用于访问系统内存的域内本地地址以及网络物理地址NPA——其中包含地址句柄和目标标识符。UALink 网络使用源标识符与目的标识符路由请求与响应。加速器在进行域内访问和跨域访问时都必须驱动这些标识符。在目的加速器处NPA 通过 UALink 链路 MMU 转换为目标系统节点的本地 SPA。1.5 UALink 一致性UALink 不支持用于在加速器之间维持硬件一致性的嗅探snoop事务。系统节点内主机处理器与加速器之间的硬件一致性应通过主机侧host side连接来处理。由于 AI/ML 工作负载通常涉及大量加速器软件一致性使应用能够高效地扩展到 scale-up Pod 和 scale-out 集群。仅仅为了在系统节点内的加速器之间实现硬件一致性而在 UALink 上增加携带嗅探消息的复杂度并没有显著收益。因此凡是在系统节点内或跨系统节点缓存了来自对端peer内存数据的加速器都应预期通过软件手段维持一致性即在正确的 kernel 边界处清除缓存。UALink 应支持具有以下语义的 I/O 一致性模型从对端内存读取时应从其系统节点内的内存或缓存中获取该数据的最新一致性副本。向对端内存写入时应使其系统节点内的所有缓存副本失效。部分写partial write应提取系统中任何已缓存的数据并与本次写入的数据合并。最新副本的数据应被写回内存。系统节点OS 域内部主机处理器与加速器之间的硬件一致性不在 UALink 的规定范围内。各实现应通过特定于实现的硬件或软件方法来处理一致性。