简介:UCIe-Rev1p0-Consortium-Feb24th-2022-Final 是面向芯片设计工程师、先进封装与高速互连方向研究者的规范原文资料,聚焦2022年2月24日发布的UCIe 1.0标准,帮助读者理解多厂商chiplet互连的协议框架与实现约束。压缩包内仅含1个PDF文件,大小约6.32MB,即规范全文,涵盖协议层、Die-to-Die适配器、物理层、单模块与多模块配置、Retimer机制及关键性能目标等章节,并展开PCIe 6.0与CXL 2.0/3.0的Flit模式细节。已有1075人学习下载,适合作为chiplet互连方案设计、接口选型与协议对照的案头参考,便于按目录快速定位协议层与物理层条款,理解互操作性要求与带宽、延迟、功耗目标之间的权衡。
1. 到底什么是 UCIe:把芯片拼乐高这件事讲明白
如果你拆开过一台电脑,会看到 CPU、内存、显卡各占一块板子,靠主板上的走线连起来。芯片行业这几年想干一件类似的事:把一颗大芯片拆成几颗小芯片,再像拼乐高一样拼回去。这些小芯片有个专门的名字叫 chiplet(芯粒),而 UCIe 就是规定它们之间怎么“对话”的那本规则手册。
UCIe 全称 Universal Chiplet Interconnect Express,中文常译作“通用芯粒互连标准”,2022 年 2 月 24 日发布的 1.0 版本是它的第一份正式规范。通俗地说,它定义了不同厂商生产的芯粒,在同一个封装里如何互相传数据、如何握手、如何省电、如何纠错。为什么值得搞懂?因为过去芯粒互连是各家自己的私房菜,A 厂的芯粒接不上 B 厂的,而 UCIe 想做的,是让芯粒之间也有一个类似 USB 的公共插口标准。
2. 为什么需要 UCIe:从“一颗大芯片”到“一桌小芯片”
2.1 单芯片越做越大,撞上了物理墙
过去几十年,芯片行业的基本打法是“把更多晶体管塞进同一块硅片”。这条路走到今天,遇到了几个绕不开的麻烦。一是芯片面积越大,制造良率越低——一整块大硅片上只要有一个小瑕疵,整颗芯片就报废;拆成几颗小芯粒,坏一颗换一颗,成本立刻降下来。二是不同功能对工艺的要求不一样,计算核心需要最先进的制程,而模拟电路、接口电路用成熟制程就够,硬把它们做在一起是浪费。
打个比方,这就像盖房子:以前是必须用一整块预制板,现在改成砖块砌墙,哪块砖坏了换哪块,还能按房间功能选不同材料。芯粒就是这个“砖块”,而 UCIe 是砖块之间的水泥配方。
2.2 UCIe 在系统里扮演什么角色
从规范的结构看,UCIe 把互连分成几层,各管一摊:
| 层次 | 职责 | 通俗理解 |
|---|---|---|
| Protocol Layer(协议层) | 定义数据包的格式和通信规则,兼容 PCIe 6.0、CXL 等协议 | 双方说什么语言 |
| Die-to-Die Adapter(D2D 适配器) | 负责链路初始化、CRC 校验、重传、功耗状态管理 | 翻译官兼质检员 |
| Physical Layer(物理层) | 规定电气特性、信号时序、引脚排布、通道规格 | 电话线和插头长什么样 |
这三层叠起来,才构成一条完整的芯粒间链路。协议层决定“传什么”,适配器决定“传得对不对”,物理层决定“电信号怎么跑”。规范里还区分了两种封装形态:标准封装(Standard Package)和先进封装(Advanced Package),前者走普通基板,后者走硅中介层之类的高密度互连,带宽和功耗表现差别很大。
2.3 关键性能目标背后的取舍
UCIe 1.0 给自己定的目标很明确:高带宽、低延迟、低功耗、可扩展。这几个词听起来像口号,落到工程上全是取舍。带宽要高,就得增加引脚数和信号速率;延迟要低,就得减少协议封装的层级;功耗要低,就得让链路在空闲时能快速进入低功耗状态。规范里专门定义了功耗管理的链路状态,以及从低功耗状态唤醒的流程,因为芯粒之间如果每次传数据都要“重新拨号”,延迟就崩了。
提示:UCIe 的性能目标不是孤立指标,而是和封装形式绑定。先进封装能提供更密的走线,所以能跑更高带宽;标准封装受基板限制,速率和引脚密度都要保守一些。
3. 协议层与适配器:芯粒之间到底怎么“说话”
3.1 协议层:不止一种语言,还能切换
UCIe 协议层最容易被误解的一点是:它自己不发明一套全新的通信语言,而是直接复用现有的成熟协议。规范里明确支持 PCIe 6.0、CXL 3.0、CXL 2.0,以及一种流式协议(Streaming protocol)。这就像一个新开的国际会议,不强制大家学新语言,而是提供同声传译,英语、中文都能用。
具体到数据格式,规范里反复出现一个词叫 Flit(Flow Control Unit,流控单元)。可以把它理解成“固定大小的数据集装箱”:PCIe 6.0 用 256 字节的 Flit,CXL 2.0 用 68 字节的 Flit,CXL 3.0 也有自己的 256 字节 Flit 模式。集装箱大小固定,收发双方才好对齐节奏、做校验和重传。
除了 Flit 模式,规范还保留了 Raw Mode(原始模式)。Raw Mode 下适配器不拆包、不重组,把上层数据原样透传,适合那些对延迟极度敏感、或者自己有完整纠错机制的场景。用一句话区分:Flit 模式是“打包快递”,Raw Mode 是“整车直送”。
3.2 D2D 适配器:链路的“黑匣子”与“后悔药”
适配器这一层干的是脏活累活。链路刚上电时,两颗芯粒互相不认识,适配器要负责初始化握手,协商双方支持什么协议、什么 Flit 格式、多少条 lane。规范里把链路初始化分成多个阶段,其中适配器初始化是承上启下的关键一步。
数据传起来之后,适配器还要做三件事:算 CRC 校验、管重传、管功耗状态。CRC 相当于给每个数据包贴一张防伪标签,收方一算对不上,就知道路上出了岔子;重传规则则规定了对不上之后怎么补发,这就是工程上的“后悔药”。规范里还提到用奇偶校验做运行时链路测试,相当于链路跑着跑着定期量个体温,早发现隐患。
链路初始化大致顺序(文字示意): 物理层训练 → 适配器协商参数 → 协议层就绪 → 进入数据传输上面这段不是代码,而是把规范里分散在各章的流程压成一条线。实际实现中,每一步失败都有对应的状态机分支,规范用状态机层级来描述这些分支,避免实现者各写各的。
3.3 多模块配置:从一对一到大合唱
UCIe 支持单模块配置和多模块配置。单模块就是两颗芯粒点对点直连,简单直接;多模块则允许多颗芯粒通过交换结构连成一张网,规范里对应有 UCIe Switch 相关的寄存器定义。这就像从“两个人打电话”升级到“开电话会议”,需要额外的寻址和路由规则。
多模块配置的意义在于系统扩展性:一颗主控芯粒可以挂多颗计算芯粒、多颗内存芯粒,按需组合。但复杂度也随之上升,链路初始化要处理多跳、重定时器(Retimer)要处理信号再生。Retimer 的作用是补偿长距离传输后的信号衰减,相当于中途设个加油站,把疲软的电信号重新整形再放行。
4. 常见误区:这几个概念最容易搅成一锅粥
4.1 误区一:UCIe 等于 PCIe 的芯粒版
易混点:看到 UCIe 协议层支持 PCIe 6.0,就以为 UCIe 是 PCIe 的简单延伸。
为什么混:两者确实共享协议格式,PCIe 6.0 的 Flit 模式被 UCIe 直接拿来用,名字都带“Express”。
怎么区分:PCIe 是板级和设备级的总线标准,管的是插卡、硬盘、网卡怎么连到主机;UCIe 是封装内的裸片到裸片互连,距离短得多、引脚密得多、功耗预算紧得多。UCIe 是“借 PCIe 的语言,说封装内的话”,不是同一条赛道。
4.2 误区二:CXL 和 UCIe 是竞争关系
易混点:两个都是近年热门的高速互连标准,都跟内存扩展、加速器有关,容易以为要二选一。
为什么混:CXL 也跑在 PCIe 物理层上,应用场景有重叠。
怎么区分:CXL 解决的是“设备之间共享内存、缓存一致性”的协议问题,它关心的是主机和加速器、内存扩展卡之间怎么高效协作;UCIe 解决的是“芯粒之间物理上怎么连”的问题,它可以把 CXL 当作上层协议之一来承载。一个是货运规则,一个是公路标准,CXL 可以跑在 UCIe 这条路上。
4.3 误区三:Raw Mode 是“低配版”
易混点:看到 Raw Mode 不做拆包重组,就以为它是功能缩水的简化模式。
为什么混:名字里的“Raw”听起来像未加工、不完整。
怎么区分:Raw Mode 是刻意设计的透传通道,目的是把适配器的处理延迟降到最低,把纠错责任交给上层。它不是能力不足,而是把选择权交出去。对延迟敏感、上层自带完整保护机制的场景,Raw Mode 反而是更优解。
4.4 误区四:有了 UCIe 就能随便混搭任何芯粒
易混点:标准号称开放互操作,就以为任意两家厂商的芯粒插上就能用。
为什么混:“互操作性”这个词容易被过度解读。
怎么区分:UCIe 保证的是接口层面的兼容,前提是双方都按同一版本规范实现、支持相同的协议和 Flit 格式、物理层参数匹配。协议层之上还有寄存器配置、软件发现流程,这些也需要对齐。标准解决的是“插头能插上”,不解决“插上之后功能一定对得上”。
4.5 误区五:物理层只是“连线”,没什么可设计
易混点:把物理层当成单纯的引脚排布,觉得协议层才是技术含量所在。
为什么混:物理层在规范目录里篇幅靠后,容易被跳过。
怎么区分:物理层规定了发送端驱动拓扑、接收端均衡、时钟方案、通道电压传输函数、lane 反转与冗余重映射。信号在封装内跑几十毫米,损耗和串扰是实打实的问题,均衡参数配错,链路直接翻车。物理层是地基,协议层是装修,地基不稳装修再漂亮也没用。
5. 什么时候用、什么时候别用:一份边界判断
5.1 适合上 UCIe 的场景
判断标准可以收敛成三条:第一,你的系统确实需要把大芯片拆成多颗芯粒,且这些芯粒来自不同设计团队或不同供应商;第二,你对封装内互连的带宽和延迟有明确要求,普通板级总线满足不了;第三,你希望未来能替换其中某颗芯粒而不推翻整个互连架构。
举个虚构的例子:某实验室做一款图像处理 Demo,主控芯粒负责调度,图像处理芯粒负责算力,内存芯粒负责缓存。三颗芯粒工艺不同、团队不同,如果各写各的私有接口,换一颗芯粒就要重做一遍联调。按 UCIe 的协议层和适配器分层来设计,接口契约固定下来,替换芯粒时只要新芯粒满足同一套 Flit 格式和物理层参数,联调工作量能压下去一大截。
5.2 不适合硬套 UCIe 的场景
反过来,如果系统只有两颗芯粒、点对点直连、协议单一、供应商也是同一家,私有接口往往更省面积、更省功耗。UCIe 的通用性是有代价的:分层带来额外逻辑,协议兼容带来配置复杂度,寄存器定义和软件发现流程也要占资源。为了“标准”而标准,属于给自己找活干。
还有一种情况要谨慎:如果你的产品对成本极度敏感,而先进封装本身就很贵,那么 UCIe 带来的互连收益可能被封装成本吃掉。规范里区分标准封装和先进封装,本身就是提醒实现者按预算选档位。
| 判断维度 | 倾向用 UCIe | 倾向不用 |
|---|---|---|
| 芯粒来源 | 多厂商、多团队 | 单一供应商、内部闭环 |
| 协议需求 | 需要兼容 PCIe/CXL 生态 | 私有协议已够用 |
| 扩展预期 | 未来要换芯粒、加芯粒 | 架构一次定型 |
| 成本结构 | 封装预算充足 | 封装成本卡得死 |
5.3 一个容易踩的坑:把规范当实现手册
UCIe 1.0 规范是一份“应该做成什么样”的契约,不是“具体怎么接线的操作指南”。规范里大量篇幅在定义状态机、寄存器、参数范围,但具体到某颗芯粒的引脚怎么排、均衡参数取多少,要靠实现者结合封装和工艺去定。我见过有团队拿着规范目录当开发计划,结果卡在物理层参数上反复返工——规范告诉你有哪些参数,不告诉你你的通道该取哪个值。
从那以后我每次碰这类互连标准,都强制自己先分清两件事:哪些是规范锁死的契约,哪些是留给我自己填的空白。契约部分照抄,空白部分必须拿实测数据说话。希望帮到你。
本文还有配套的精品资源,点击获取