3. 跨层互连架构:物理层、数据链路层、传输层、协议层的分层模型
做Chiplet这么多年,我越来越觉得,跨层互连的分层模型是整个系统的骨架。说白了,就是把复杂的互连问题拆成几个独立的层次,每层各司其职。这个思路其实跟计算机网络里的OSI模型很像,但咱们Chiplet场景下更强调物理实现和效率。
我个人习惯把跨层互连比作一个快递系统:物理层是公路和卡车,数据链路层是交通规则,传输层是物流调度中心,协议层则是客户下单的接口。每一层只关心自己的事,上层不用管下层怎么跑。
3.1 物理层(PHY)—— 最底层的硬功夫
物理层,说白了就是芯片之间怎么传电信号。它负责把0和1变成电压或电流,在Die-to-Die的通道上跑起来。
物理层要解决的核心问题:
- 信号完整性:高速信号在微凸点、RDL、硅中介层上跑,反射、串扰、衰减都是家常便饭。我记得有个项目,信号速率跑到16Gbps时,眼图直接闭上了,最后发现是硅通孔的寄生电容没算准。
- 时钟与数据恢复(CDR):没有全局时钟,接收端得从数据流里把时钟抠出来。这玩意儿调起来很磨人,我曾经为了一个CDR的锁定时间问题,连续加班了一周。
- 均衡与预加重:高频信号衰减严重,发射端得预加重,接收端得均衡。说白了就是给信号打一针强心剂。
- 电气接口标准:比如HBM用的1024位宽接口,或者UCIe里定义的56Gbps NRZ/PAM4信号。不同的标准,功耗和面积差很多。
关键参数速查表:
| 参数 | 典型值 | 说明 |
|---|---|---|
| 单通道速率 | 16-56 Gbps | UCIe 1.0/2.0标准 |
| 通道间距 | 25-55 μm | 取决于封装工艺 |
| 误码率 | < 1e-15 | 带FEC后要求 |
| 功耗效率 | 0.5-2 pJ/bit | 先进工艺可更低 |
我的经验:物理层设计时,一定要留足余量。我曾经遇到过温度变化导致信号时序漂移,差点翻车。建议在仿真时把PVT(工艺、电压、温度)角都跑一遍,别偷懒。
3.2 数据链路层(Data Link)—— 保证不出错
物理层只管传,但传错了怎么办?数据链路层就是干这个的——它负责把物理层不可靠的比特流,变成可靠的数据帧。
数据链路层的核心职责:
- 帧同步:接收端得知道哪里是一帧的开始和结束。常用的是逗号序列(K码)或者特殊的同步头。
- 错误检测与纠正:CRC校验是标配,高级点的还会加FEC(前向纠错)。嗯,这里要注意,FEC虽然能纠错,但会引入延迟,实时性要求高的场景得权衡。
- 流量控制:发送端不能一股脑往外扔数据,得看接收端缓冲区还有没有位置。常用的有信用制(Credit-based)或者暂停帧(PAUSE frame)。
- 链路初始化与训练:上电后,物理层需要一段时间来对齐相位、校准均衡器。数据链路层要管理这个状态机。
你想想看,如果没有数据链路层,物理层传错一个bit,上层应用可能就直接崩溃了。我见过一个案例,某团队直接拿物理层裸传数据,结果偶尔出现比特翻转,排查了两个月才发现是数据链路层没做CRC。
3.3 传输层(Transport)—— 端到端的可靠传输
传输层是承上启下的关键。它不关心数据怎么在物理链路上跑,只关心从发送端到接收端,数据能不能完整、有序地到达。
传输层的主要功能:
- 数据包化:把上层的数据切成合适大小的包,加上包头(包含源地址、目的地址、序列号等)。
- 重传机制:如果数据链路层检测到错误但无法纠正,传输层会请求重传。我习惯用Go-Back-N或者选择性重传,具体选哪个看延迟容忍度。
- 多通道管理:Chiplet之间往往有多个物理通道,传输层可以把数据分发到不同通道上,实现负载均衡。
- 死锁避免:这是个大坑。如果多个数据包互相等待对方释放资源,系统就卡死了。我曾经在设计中加入虚拟通道(Virtual Channel)来解决这个问题。
避坑指南:我曾经在一个项目中,传输层的缓冲区设计得太小,导致高负载下频繁丢包重传,性能直接腰斩。后来把缓冲区从4KB扩到16KB,问题就解决了。记住,缓冲区大小要跟延迟带宽积匹配。
3.4 协议层(Protocol)—— 应用看得懂的接口
协议层是最靠近应用的一层。它定义了数据怎么组织、命令怎么编码、事务怎么完成。说白了,就是让CPU、GPU、加速器这些IP核能互相理解对方在说什么。
常见的协议层标准:
- AXI/CXS:ARM生态最常用,支持读写事务、乱序传输、原子操作。我做过一个AI加速器,就是用AXI over UCIe来跟CPU通信的。
- CHI:ARM的缓存一致性协议,适合多核Chiplet场景。但实现复杂度高,小团队慎入。
- OpenCAPI/CCIX:面向异构计算的协议,支持内存语义访问。
- 自定义协议:有些场景下,标准协议太臃肿,可以自己定义精简协议。但要注意兼容性。
协议层的设计原则是:够用就好。不要为了追求功能完整而引入不必要的开销。我见过有人把完整的PCIe协议栈搬到Chiplet内部,结果延迟和面积都爆炸了。
3.5 分层模型的核心逻辑
为了让你更直观地理解这四层的关系,我画了一张图。这张图展示了数据从协议层一路往下,经过传输层、数据链路层,最终通过物理层发送出去的过程。
这张图里,数据从协议层往下走,每层都会加上自己的控制信息(包头、校验码等),这叫封装。接收端则反向操作,逐层解封装。你想想看,如果没有这个分层模型,所有功能揉在一起,调试起来得多痛苦。
核心要点:
- 物理层管信号,数据链路层管帧,传输层管包,协议层管语义。
- 层与层之间通过标准接口交互,这样每一层可以独立升级。
- 实际项目中,UCIe标准已经把这四层都定义好了,但很多自研Chiplet还是会自己实现部分层次。
嗯,这一章的内容就到这里。分层模型是理解Chiplet互连的基础,后面我们会深入到每一层的具体实现细节。到时候再结合我踩过的坑,跟你慢慢聊。