3. 网络接口与PHY层:以太网物理层基础、SerDes技术、MAC与PHY的交互、常见速率(10G/25G/100G/400G)
好,咱们今天聊聊SmartNIC里最“接地气”的一层——物理层。说白了,就是数据怎么从芯片里变成线缆上的电信号或光信号,再传出去。我做了这么多年网络芯片,每次调试PHY层都像在跟硬件“对暗号”,信号对不上,上层协议再牛也白搭。
3.1 以太网物理层基础
物理层(PHY)负责把MAC层送过来的数字比特流,编码成适合在物理介质上传输的信号。反过来,它也要把接收到的模拟信号解码成数字比特流。你想想看,一根铜线或者光纤,它本身可不懂什么“帧结构”或“IP地址”,它只认电压高低或者光的有无。
PHY的核心功能包括:
- 编码/解码:比如64B/66B编码,保证数据流中有足够的跳变沿,方便接收端恢复时钟。我个人习惯把编码看成“给数据加个同步头”,不然长串的0或1会让接收端“失锁”。
- 串行化/解串行化:把MAC的并行数据转成高速串行流,这就是SerDes的活儿。
- 链路协商:自动协商速率、双工模式、流控等参数。我记得有一次板卡插上去死活不通,最后发现是两端的自动协商没对上,一个要100G,一个只支持25G。
- 信号调理:均衡、预加重、去加重,补偿传输损耗。
核心要点:PHY不是简单的“模数转换器”,它是一套完整的信号处理链路。设计时,PHY的功耗和面积往往占整个芯片的30%以上,千万别小看它。
3.2 SerDes技术:高速串行的心脏
SerDes(Serializer/Deserializer)是PHY层最核心的模块。没有它,10G以上的速率根本没法实现。为什么?因为并行总线在高速下会面临严重的时钟偏斜和串扰,而串行传输只需要一对差分线,抗干扰能力强得多。
SerDes的关键指标:
- 速率:比如25Gbps per lane,这是当前最主流的单lane速率。
- 功耗:通常用pJ/bit来衡量,优秀的SerDes能做到2-3 pJ/bit以下。
- 抖动:包括随机抖动和确定性抖动,直接影响误码率。
- 均衡能力:CTLE、FFE、DFE等,补偿信道损耗。
我曾经在一个400G项目中,SerDes的DFE(判决反馈均衡器)参数没调好,导致长距离传输时误码率高达1e-12,虽然看起来不高,但上层协议重传直接让吞吐量掉了30%。后来花了整整两周调均衡参数,才把误码率压到1e-15以下。
实战技巧:调试SerDes时,先看眼图。眼图睁开得像“猫头鹰眼睛”一样大,基本就没问题。如果眼图闭合得像“一条线”,那就要检查PCB走线、连接器或者电源噪声了。
3.3 MAC与PHY的交互
MAC(媒体访问控制)和PHY之间通过一个标准接口通信。最常见的接口是:
- XGMII:10G MAC与PHY的接口,74根线,实际很少用,因为太占引脚。
- XFI/SFI:10G/25G的串行接口,只用一对差分线,简洁高效。
- CAUI-4/CAUI-10:100G/400G的接口,用4条或10条25G lane。
MAC和PHY之间还有一个重要的管理接口——MDIO(Management Data Input/Output)。通过MDIO,软件可以读写PHY的寄存器,配置速率、协商模式、读取链路状态等。嗯,这里要注意:MDIO的时序很慢(最高2.5MHz),千万别用它做实时控制,只适合初始化或诊断。
我建议在设计芯片时,把MAC和PHY之间的FIFO深度留足。为什么?因为MAC的时钟和PHY的时钟是异步的,FIFO就是用来吸收时钟域跨越的抖动。我曾经见过一个设计,FIFO深度只有4个条目,结果在背压场景下频繁溢出,丢包率高达5%。后来改成16条目,问题解决。
避坑指南:我曾经在调试时发现MAC和PHY的链路状态不一致——MAC显示Link Up,PHY却显示Link Down。最后查出来是MDIO读回来的寄存器值被软件误改了。所以,建议在驱动中加一个“心跳检测”,定期比对MAC和PHY的状态。
3.4 常见速率:10G/25G/100G/400G
不同速率对应不同的物理层实现,咱们用一张表来对比:
| 速率 | 单lane速率 | lane数 | 编码方式 | 典型应用 |
|---|---|---|---|---|
| 10G | 10.3125 Gbps | 1 | 64B/66B | 服务器网卡、交换机上行 |
| 25G | 25.78125 Gbps | 1 | 64B/66B | 当前数据中心主流,性价比高 |
| 100G | 25.78125 Gbps | 4 | 64B/66B | 骨干网、核心交换机 |
| 400G | 26.5625 Gbps (PAM4) | 8 | RS-FEC + 64B/66B | 超大规模数据中心、AI集群 |
注意看,400G用了PAM4调制(4级脉冲幅度调制),而不是传统的NRZ(不归零码)。PAM4每个符号传输2比特,所以同样带宽下速率翻倍。但代价是信噪比要求更高,必须搭配RS-FEC(里德-所罗门前向纠错)才能保证误码率。
我参与过一个400G SmartNIC项目,刚开始用NRZ方案,结果发现PCB走线损耗太大,眼图完全闭合。后来换成PAM4 + RS-FEC,虽然功耗增加了15%,但信号完整性终于达标了。说白了,高速设计就是“用功耗换性能”。
选型建议:如果你做的是通用SmartNIC,25G per lane是当前最稳妥的选择。如果追求极致带宽,直接上400G PAM4,但要做好FEC和信号完整性的功课。
3.5 知识体系结构图
下面这张SVG图梳理了本章的核心逻辑,从物理介质到MAC层,层层递进:
这张图从下往上看:物理介质承载信号,PHY层负责信号处理,通过标准接口与MAC层交互。速率越高,PHY层的复杂度也越高,尤其是400G引入了PAM4和RS-FEC,设计难度上了不止一个台阶。
公众号:蓝海资料掘金营,微信deep3321