news 2026/10/1 7:08:36

UALink Chiplet 1.0规范:加速器互连开放标准解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
UALink Chiplet 1.0规范:加速器互连开放标准解析

1. UALink Chiplet Specification 1.0 是什么,为什么值得关注

UALink(Unified Accelerator Link)Chiplet Specification 1.0,简单说,就是一套专门为“加速器芯片之间的互联”定制的开放标准。它定义的是芯片和芯片之间、尤其是小芯片(Chiplet)和外部加速卡之间如何用统一的方式高速通信。这件事在AI服务器、大规模并行计算、异构算力集群里已经成了刚需。

先说一个背景:过去几年,英伟达用NVLink把自家GPU卡死死绑定在一起,生态封闭但性能确实领先。AMD、Intel、博通、Google、Meta这些厂商合在一起推出了UALink,目的就是做一个开放、可互操作的替代方案。UALink Chiplet Specification 1.0 是UALink联盟发布的第一版面向Chiplet互连的规范,它补上了大规模AI系统里“加速器之间通信”这个短板。

它能解决什么问题?最核心的是:让不同厂商的加速器芯片——无论是GPU、DPU、AI推理芯片还是定制ASIC——能够以低延迟、高带宽、良好一致性的方式互相通信,打破单厂商绑定的局面。这个标准选定了CXL作为基础传输层,同时定义了加速器能够给对端暴露什么资源、怎么访问、消息怎么路由,甚至如何支持远程内存读写。

适合谁看?如果你是做AI基础设施、服务器硬件设计、芯片互连验证的工程师,或者你正在搭建大规模推理/训练集群,这套规范值得认真研究。我也尽量用大白话把里面的机制拆开讲,后端开发者同样能看懂核心思路,不用怕“太底层”。

这版规范发布的意义,不亚于当年CXL 1.0推出时对整个内存池化行业的影响。UALink在这次布局里,把“芯片外加速器连接”和“芯片内Chiplet连接”两个方向都覆盖了,而且是在性能和开放程度之间做了一个明确取舍。说实话,这套规范里藏了不少值得钻研的细节,我读完的体会是:它真正瞄准的是“AI算力互联”的规则制定权。

2. 核心设计思路:为什么要用CXL做地基,又给加速器单独开一条“快车道”

2.1 理解UALink之前,先看两个概念:CXL 和 Chiplet

CXL(Compute Express Link)是基于PCIe物理层的一个缓存一致性、内存扩展和设备互连协议。它最大的特点是能维护CPU和加速器之间的一致性视图,让加速器可以直接读写主机内存,不需要来回搬运拷贝。UALink选择CXL做基础传输层,意味着物理接口可以和PCIe/CXL生态复用,这在服务器主板上落地时成本低、兼容性好。

Chiplet则是把一个大型SoC拆成多个小芯片,封装在一起或用先进封装互连。这个思路和UALink有什么关系?UALink规范里专门有一章就是讲“Chiplet to Chiplet”,它规定了一个加速器内部的小芯片之间如何用轻量化、低开销的方式来通信,而不是每个Chiplet都上一套完整的高性能互联协议。这样做的直接好处是:芯片内部短距离通信能省下大量功耗和面积,同时数据面路径变得很短,延迟也低。

理解这两步之后,UALink整体架构就清晰了。它和CXL的关系不是替代,而是分工:CXL负责的是一致性域里的基本通信,UALink在其之上增加了一套适合加速器的、偏数据和内存语义的操作。可以理解成,CXL是高速公路的地基,UALink定义了在这条高速公路上专门跑“超级卡车”的车道。

2.2 UALink解决的核心矛盾:低速一致性与高速数据面需求

在AI训练和推理场景里,GPU或其他加速器之间的数据交换量非常大。比如大规模参数同步、AllReduce、张量并行,都需要极低的延迟和极高的带宽。传统PCIe路径虽然也能完成这些操作,但它的瓶颈在于:协议开销高、消息语义复杂、功耗和延迟都不理想。

UALink的取舍是:把“一致性维护”和“数据搬运”分成两级。一致性操作走CXL的路径,对速度不算极致敏感的可以复用;但真正的张量数据搬运、远程内存访问,UALink单独定义了一套简化操作,尽可能减少协议栈层次,让数据贴近硬件通道飞行。这种设计背后其实是工程上的常见思路:不做全场景通用协议,而是为特定工作负载做优化。

2.3 Chiplet场景下的低开销互连需求

在Chiplet内部,小芯片之间距离极近,驱动功耗低、信号质量好,完全可以直接用极简的互连协议。UALink对这块的规范比对外部卡间通信更轻量:它甚至允许厂商在满足功能子集的前提下自行实现部分机制,目的是降低内部设计门槛。

这个细节非常值得关注,因为它直接影响芯片功耗指标。很多团队设计AI芯片时,最大的痛点不是算力不够,而是数据进出芯片的功耗和延迟下不来。UALink在Chiplet层面给出的答案是:用跨芯片的UAI(Unified Accelerator Interface)接口来处理大头,Chiplet内部只做一件事——尽量快速地把数据推到这个接口上。这样一来,整个系统的通信瓶颈非常清晰,也方便做顶层规划。

2.4 为什么不做成私有协议:开放性带来的互操作价值

私有协议的最大问题是生态绑定和验证成本高。UALink联盟拉了一堆头部厂商,核心目的就是让互连协议变成行业公共标准。对下游用户来说,这意味着未来服务器里的加速卡可以混插不同厂家的产品,不再被单一家垄断。

我做硬件方案选型时,最怕的是“用了一个私有协议以后改不出去”。UALink的开放性至少在接口规范层面解决了这个担忧:只要你的加速器支持UALink,无论是哪家芯片,都遵循同一套内存语义和消息格式。后续运维、替换、扩容都轻松很多。

3. 架构拆解:UALink协议栈里有哪几层,每一层在干什么

3.1 物理层、链路层、事务层和消息层

UALink协议栈整体分为四层,和常见网络协议分层思路类似,但每一层的职责定义得更贴合硬件实现:

  • 物理层(PHY):负责比特流传输、时钟恢复、信号完整性。
  • 链路层(Link Layer):负责链路建立的握手、错误检测、流控。
  • 事务层(Transaction Layer):负责定义不同事务类型,比如读、写、消息传递、原子操作。
  • 消息层(Message Layer):对应的是上层加速器软件通过读/写/原子操作等接口发起的语义化请求。

这个分层好处很明显:如果需要替换底层物理介质——比如未来从PCIe换到光电混合——上层无需改动;上层要加新的事务类型也相对灵活。

3.2 UALink的传输介质选择:PCIe/CXL作为基础物理层

我们先明确一点:UALink 1.0的传输层并不像NVLink那样自带一套物理层,它复用了CXL/PCIe的物理层。这么做有几个实际好处:

  • 主板生态成熟,几乎所有服务器平台都支持PCIe/CXL信号。
  • 信号完整性设计有现成规范参考,风险低。
  • 可以复用现有的SerDes、Retimer、Switch等硬件组件。

当然,代价也是存在的:物理层本身是“通用通道”,不是为AI专门优化的,所以在极高带宽的极限场景里,PHY本身的效率可能不够极致。但这在1.0版本里是一个理智的取舍。

3.3 关键机制一:链路建立和拓扑发现流程

UALink对加速器拓扑的管理很有特色。它支持CPU、加速器、Switch共同组成一个加速器结构(fabric),并且允许拓扑动态发现。

链路通电后,底层链路层先完成握手和速率协商,然后事务层会发送一个“设备信息请求”,获得对端设备的拓扑ID、能力集和缓存状态。这个过程类似于PCIe的枚举,但UALink把它扩展到了加速器间的互连关系上。这样做的好处是:系统软件可以自动感知加速器拓扑,无需硬编码地址和路由表。

3.4 关键机制二:地址空间与内存语义

UALink给每个加速器分配独立地址空间,并定义了“全局地址映射”机制。通俗讲,一个加速卡可以把自己的某段内存映射成全局可见,另一个加速卡可以直接发起对这段地址的读/写访问,不需要CPU介入。

这种“远程内存直接访问”模式在AI工作负载里极其常见,比如把一个GPU的中间激活值直接写到另一个GPU的显存里。没有这个能力,就得靠PCIe DMA或者主机内存转存,延迟和带宽损耗都大得多。

3.5 关键机制三:消息传递与原子操作支持

除了内存读写,UALink还支持消息传递和原子操作。消息传递用于控制面通讯,比如同步屏障、状态通知;原子操作则用于多卡之间做无锁更新,比如计数器累加、锁状态设置。

这种能力在分布式训练中非常关键。比如全局学习率统计、梯度累积计数器,如果每次都走主机内存,延迟可能达到微秒级别;而UALink的原子操作可以把延迟压缩到几百纳秒,对大规模集群来说是实打实的性能提升。

4. 实操视角:如何理解UALink的配置空间、链路建连与验证步骤

4.1 设备能力集与配置空间怎么看

UALink的每个设备都有一个标准配置空间,里面记录了设备类型、版本、支持的链路宽度、内存访问能力等。这个配置空间在系统软件层可以直接读取。

我建议工程师在起步阶段,先用软件工具把两个支持UALink的加速卡的配置空间拉开,查看能力字段是否匹配——很多互连异常其实是能力协商不匹配导致的,而不是物理链路问题。

4.2 链路初始化握手的关键参数

UALink链路建立过程有几个关键参数需要关注:工作的PHY速率、链路宽度(比如x8、x16)、支持的缓存模式(比如Full Cache or No Cache)、地址路由模式。

初始化时,两端必须协商一致的参数,否则链路无法进入Active状态。具体流程可以分为:检测信号、训练均衡器、发送IDLE码流、交换能力集、进入Link-Up、加载路由表。每一步都有对应的状态机,调试时最常用的工具就是读取链路状态寄存器。

4.3 从软件角度看UALink:驱动需要额外适配什么

如果你的操作系统已经有CXL支持,那么UALink的部分资源可以通过类似Generic CXL设备的方式来访问。但UALink有自己的IOCTL接口和内存映射规范,驱动需要做额外适配。

最直观的差异是:CXL设备的摘要/配置空间是标准化的,而UALink设备会出现额外的“加速器能力”字段,包含内存池信息、拓扑角色、原子操作支持列表。驱动开发时,建议提前核实这些字段,避免枚举阶段漏掉关键的设备头信息。

4.4 验证UALink链路的一个最小实验流程

我整理了一个快速上手验证流程,适合刚拿到支持UALink的硬件板卡的团队:

  • 第一步,物理连好加速卡,确认Power Good和Refclk;
  • 第二步,扫描PCIe/CXL总线,确认设备能被枚举到,捕获VID/DID;
  • 第三步,读取UALink配置空间里的能力字段,检查版本和链路宽度;
  • 第四步,让设备进入Link Training状态,监测状态寄存器,观察是否出现Training Error;
  • 第五步,加载基础驱动,映射设备BAR空间,尝试发起一次远程内存读操作,验证返回的数据是否符合预期。

这里最容易踩的坑是:在某些平台上,CXL/UALink链路需要BIOS先开启CXL相关选项,否则枚举根本见不到设备。调试时别一上来就怀疑硬件,先确认BIOS开关和平台支持列表。

5. 常见问题与排查技巧实录

5.1 链路无法Link-Up,最常见的原因是什么

做链路调试时,我遇到过好几次“PHY信号OK但Link-Up失败”的情况。排查步骤优先从这三个方向看:

  • 能力协商不匹配(链路宽度、速率、缓存模式不一致);
  • BIOS里CXL开关没打开或者PCIe链路被配置成非CXL模式;
  • 两端设备固件版本不一致,事务层行为不同。

记住一个经验:调试通信问题,先看配置空间和能力集,别看波形。很多链路无法建立的问题,根本不是物理层信号,而是上层协商没通过。

5.2 为什么远程内存访问延迟异常高

如果你发现UALink的读延迟远高于规范预期,先检查是不是每次都走了CPU转发路径。UALink的直连访问要求在对端设备地址映射表中配置直达路由,如果没有配置直连映射,硬件会退化为从主机内存转发的“慢路径”,延迟自然爆炸。

检查方式很简单:读路径选择寄存器(Path Select Register),确认Routing Mode是PeerDirect而不是HostForward。

5.3 UALink 1.0和CXL 2.0/3.0的区别,会不会重复

这个问题被问得最多。我简单整理一下:

方面UALink 1.0CXL 2.0/3.0
设计目标加速器间高性能数据面通信内存扩展、缓存一致性、设备通信
物理层基于PCIe/CXL基于PCIe
一致性部分可配置,弱一致性为主强一致性支持
典型场景AI大规模训练、多卡推理内存池化、分层内存、加速器连接
生态定位开放标准,面向多厂商加速器PCI-SIG体系下的开放标准

两者一定会有部分的形态重叠,但UALink把重心放在“高性能数据面”,一致性不是优先追求的目标;CXL则更偏通用内存语义。未来两者会共存,互不替代。

5.4 如何正确选择链路宽度与速率配置

链路宽度选择要结合系统功耗和带宽需求。对AI场景,建议直接使用最大链路宽度,比如x16;但如果板卡功耗是硬约束,可以采用x8并降低速率档位。实测下来,x8@32GT/s 的带宽大约相当于 x16@16GT/s,这时候应该优先保链路宽度,速率次之——因为宽链路的传输效率更高,而高速率往往带来更大的功耗和信号完整性挑战。

6. 未来方向与个人实操体会

UALink 1.0作为第一个公开版本,已经把这个领域最核心的框架搭出来了。我最大的体会是:它让“加速器之间直接通信”终于有了开放、可互操作的统一基线。过去各厂商在互联协议上各自为政的时代,确实要被这类开放标准慢慢重构。

对于芯片团队,一个建议是尽早按UALink的配置空间和能力集定义,去规划自己的加速器IP。对于系统集成团队,则尽量在样板阶段就验证链路状态检查和拓扑发现功能,不要等到量产后才去处理兼容性问题。

当前版本在物理层还依赖PCIe/CXL的基础设施,但后续如果出现更高效的物理层方案,整个数据面还有进一步提升空间。至少从1.0架构来看,上层协议与物理层解耦得相当干净,以后要换代,不需要推翻重来。

如果你正在做AI硬件架构,或者想入局下一代加速器互连设计,认真读一遍UALink 1.0的规范,再对照自己系统的数据通路思考一下,一定会有不少收获。我准备继续关注的,是它在真实芯片上的落地功耗和带宽效率,毕竟标准写得好,还要硬件跑得稳才算数。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 7:07:55

MCP协议手机控制入门:用TaoToken统一Key让AI助手直接操作手机

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 7:06:12

去车载测试培训机构试听需要关注哪些问题?

试听不是去听课听老师讲得漂不漂亮,是去验货的。老师讲得再热血,也比不上设备能不能上手摸、学完能不能带着项目经验出门。很多人试听就是干坐着听了一节课,回来还是不知道这家机构能不能报。今天整理出一份试听清单,你带着它去现场,这样一家机构半小时就能看出成色。 第一问:实…

作者头像 李华
网站建设 2026/10/1 7:04:38

云代理商视角:Hermes Agent v0.12.0 智能体架构革新与 Kanban 协作实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 7:04:00

RAG分块策略:告别盲调参数,掌握文档检索核心!

RAG 里的分块,看起来像是在调分块大小等参数,或者选择一个分割器。 但它真正影响的是后续的检索效果,因为分块涉及一个更根本的问题: 你准备让什么样的一段内容,成为检索系统里的基本知识单元? 这才是分块真…

作者头像 李华
网站建设 2026/10/1 7:03:57

数控机床的工业控制计算机:从选型部署到智能改造实战

数控机床上那台负责“指挥”的电脑,大概是整个车间里最不受待见的角色。它不够性感,不如主轴电机那样有力量感,也没有刀具那样锋利的存在感,但只要它一闹脾气,整条产线都得停下来。干过机加工的兄弟应该都懂&#xff1…

作者头像 李华