3. UCIe 延迟的定义与重要性

做 UCIe 测量这些年,被问得最多的一个问题就是:「到底多快的延迟才算好?」其实,回答这个问题之前,我们得先弄清楚——延迟,在 UCIe 里到底指什么。说白了,UCIe 延迟就是数据从发送端出发,经过物理层、协议层,最终到达接收端所花的时间。这时间,短到皮秒 (ps) 级,长一点到纳秒 (ns) 级。嗯,听起来很基础,但我见过不少团队因为定义没对齐,最后测量结果差出一大截。

3.1 两个核心测量指标:单向延迟 vs 往返延迟

我个人习惯,一上来就得把这两个概念掰清楚:

  • 单向延迟 (One-way Latency):数据从发送 PHY 的 TX 端到接收 PHY 的 RX 端所经历的时间。这个指标直接反映链路本身的传输时延,包括串行器/解串器、通道、时钟恢复等环节。
  • 往返延迟 (Round-trip Latency):从发送端发出一个包,到收到接收端返回的确认信号,总耗时。它包含两次单向延迟,再加上协议层的处理和回绕时间。

我记得有一次,客户的芯片死活达不到性能目标。我们查了半天,发现他们只用单向延迟来衡量协议握手阶段,忽略了协议层等待时间——实际上应该关注往返延迟。那一次之后,我要求所有测试报告必须同时标注「单向」还是「往返」,否则数据不作数。

重点区分:
  • 单向延迟 ≈ 物理介质传输 + 链路训练固定开销
  • 往返延迟 ≈ 2 × 单向延迟 + 协议处理延迟 + 回绕时间

项目初期聚焦单向延迟,确定物理层设计是否达标。系统集成阶段必须测往返延迟,才能真实评估端到端性能。

3.2 延迟的单位:为什么用 ps/ns

UCIe 链路的典型延迟是多少?我直接给你一个参考范围吧:

链路配置 典型单向延迟 (ps) 典型往返延迟 (ps) 单位换算
标准封装内 (die-to-die) 50–200 ps 120–500 ps 1 ns = 1000 ps
长距离重定时器模式 300–800 ps 800–2000 ps 2 ns 以内
重传 / 纠错场景 额外增加 200–500 ps 增加 500–1500 ps 视重传次数

你想想看,几皮秒的差别,放在高速 SerDes 里,可能就是几十个 UI(单位间隔)。为什么单位要用 ps?因为 UCIe 的时钟频率动辄 8 GT/s 以上,一个 UI 才 125 ps,如果不精确到皮秒级别,根本分不清是链路造成还是测量误差。我曾经被一个 50 ps 的测量偏差折腾了整整两周,最后发现是示波器探头校准没到位。

我的习惯做法:在测量报告里,单向延迟保留到 1 ps 精度,往返延迟保留到 10 ps 精度就够了。往返延迟本身包含更多不确定性,精度太高反而显得虚假。

3.3 延迟对系统性能的影响

延迟大了,系统性能会怎么样?咱们从三个角度去看:

  1. 影响带宽利用率:UCIe 的很多协议是流控式或基于 credit 的。发送端发出数据后,要等接收端返回 credit 才能继续发。往返延迟越长,管道内等待的 credit 越久,带宽利用率就下降。我参与过一个设计,往返延迟从 200 ps 升到 400 ps,有效带宽直接掉了 12%。
  2. 影响响应时间:特别是对延迟敏感的应用(比如缓存一致性协议、中断转发)。一次请求 + 应答的往返延迟直接决定了系统的内存访问延迟。在移动 SoC 里,存算一体结构对 UCIe 延迟极其敏感,10 ps 的劣化都可能导致帧率不稳定。
  3. 影响链路稳定性:延迟抖动 (jitter) 如果显著,接收端的时钟数据恢复 (CDR) 容易失锁,造成误码。我记得在 28 nm 节点的一个项目中,因为封装走线过长导致延迟不均匀,链路误码率一度到 10⁻⁶,后来通过调整 Equalizer 才压回去。

注意:延迟和带宽不是独立的。在 UCIe 中,带宽 = 数据宽度 × 频率 × 协议效率,而协议效率受往返延迟直接影响。你不能只顾着压单向延迟,却忽视协议层的累加延迟。

3.4 一个直观的知识结构

下面这张图把上面讲的几个概念串起来了,你可以把它当作本章的「地图」。

UCIe 延迟测量指标与影响 延迟定义 单向延迟 (One-way) 往返延迟 (Round-trip) 单位:ps / ns 单位:ps / ns 影响因素 物理层 / 协议层 / 通道 系统影响 带宽 / 响应 / 稳定性 测试时务必区分单向 / 往返,使用 ps 精度 并在报告中注明测量条件

3.5 测量时要注意的几个坑

经验和教训都得放到桌面上来。直接说几个我踩过的坑:

  • 坑一:没区分测量起点和终点。我有个同事用片上环回模式测单向延迟,结果测出来的是整个环回路径(发送→环回→接收)的一半,忽略了环回路径本身也有延迟。后来我们规定:单向延迟必须指定物理层参考点,比如 PHY TX 接口到 PHY RX 接口。
  • 坑二:忽略协议层的排队延迟。有些人只测物理层的线延迟,然后直接用这个数据说系统延迟是多少。但 UCIe 协议栈里,数据的打包、解包、信用控制都可能引入额外延迟。我曾经在调试一个 AR 芯片时,物理层只有 80 ps,但协议层排队导致端到端延迟到了 700 ps,拖慢了整个显示管线。
  • 坑三:时钟不同步导致测量偏差。测量往返延迟时,如果发送端和接收端用的是不同时钟源(哪怕标称频率一样),多次测量结果可能相差很大。我的建议是:务必使用同源的参考时钟,或者使用内置的延迟测量环路(比如 UCIe 的延迟测量寄存器)来做。

一个实用技巧:在实验室里,我会先用已知长度的校准线缆估算系统固有延迟,再用 UCIe 协议自带的延迟报告寄存器来验证。两者偏差超过 10 ps 就要排查。

好了,关于延迟的定义、指标、单位和对性能的影响,我就先讲这么多。记住一句话:别只关心数字大小,要问清楚是单向还是往返,在什么条件下测的。这点对齐了,后面谈优化才有共同语言。