PCIe / UCIe / CXL / CCIX 深度对比:物理状态机 · 软件配置流程 · 通信协议核心
说明:文中标"示意/简化"的流程为逻辑框架,具体状态命名与寄存器字段以各协议规范为准(UCIe 1.1/3.0、PCIe 6.0、CCIX Base 1.1、CXL 3.x)。
〇、四者的分层定位
要点(沿用 arch-notes 口径):
- PCIe:板级完整 IO 协议栈,自带 PHY,无硬件缓存一致性。
- UCIe:封装内 D2D 传输底座,只负责可靠传输,不带上层语义。
- CCIX:一致性协议层,标准形态跑在 PCIe 之上(VC1);项目口径可映射到 UCIe 传输(SCP 只配 CCIX Agent,对传输透明)。
- CXL:一致性协议,跑在 PCIe PHY 上(复用 PCIe LTSSM 训链),CPU 为主的主从一致性;本项目 S2S 用(bootflow 口径)。
一、状态机详细对比(物理层 / 链路层 / 协议层)
1.1 PCIe:LTSSM(Link Training and Status State Machine)
LTSSM 是 PCIe PHY 的链路训练状态机,11 个主状态,由硬件自动运行,软件只做"等待进入 L0 + 读链路状态寄存器"。
| 主状态 | 子阶段 | 作用 |
|---|---|---|
| Detect | Quiet / Active | 检测对端接收器,判断是否接插 |
| Polling | Active / Compliance / Configuration | 发 TS1 定位 lane,以最低速率 2.5 GT/s 起步 |
| Configuration | Linkwidth / Lanenum / Complete / Idle | 协商链路宽度、lane 编号,交换 TS2 |
| L0 | — | 正常工作,收发 TLP/DLLP |
| L0s | TX / RX | 单向空闲省电,亚微秒级唤醒 |
| L1 | Entry | 双向空闲省电,纳秒~微秒级唤醒 |
| L2 | Idle / Transmit Wake | 深度省电,唤醒需重新训练 |
| Recovery | RcvrLock / Speed / Equalization / RcvrCfg / Idle | 速率重协商、均衡 EQ、错误恢复、从省电唤醒 |
| Hot Reset | — | 对端复位(TS1 携带 hot reset 位) |
| Loopback | Entry / Active / Exit | 测试模式,RX 数据回环到 TX |
| Disable | — | 关闭 lane(TS1 携带 disable 位) |
关键机制:
- 速率协商:Polling 固定 2.5 GT/s(Gen1);Recovery.Speed 逐级升速 Gen2→…→Gen6(每代 ×2),直到最高共同速率。
- 宽度协商:Configuration 中逐条加入 lane,直至带宽最大化或对端宽度匹配;支持 lane reversal / polarity inversion。
- 均衡 Equalization:Gen3+ 必须,EQ phase(Preset / Coeff)调整收发均衡系数,软件可读 Link Equalization 状态。
- 编码演进:Gen1/2 8b/10b → Gen3/4/5 128b/130b → Gen6 PAM4 + 256B FLIT + FEC。
- 软件观察点:
Link Status(速率/宽度/训练状态,低位即 LTSSM 主状态编号)、Link Training Error、Link Equalization Request。 - 典型训练时间:毫秒级(含 EQ),有 retimer 时更长。
PCIe 数据链路层(DL)状态机 —— LTSSM(物理)之上的第二级状态机:
| DL 状态 | 说明 |
|---|---|
| DL_Down | 链路不可用(LTSSM 未进入 L0) |
| DL_Init | 初始化:交换 InitFC1/InitFC2,建立信用 |
| DL_Active | 正常收发 TLP/DLLP,ACK/NAK 重传 |
| DL_Inactive | 暂停(配合 L1/L2 省电),退出时重训 |
两级关系:LTSSM(电气训练)→ L0 → DL_Active(帧级可靠传输)。软件读
Data Link Layer Link Active位判断 DL 状态。
PCIe 电源状态机(物理层):
| 状态 | 粒度 | 唤醒 |
|---|---|---|
| L0s | 单向、每方向独立 | 亚微秒 |
| L1 | 双向 | 纳秒~微秒 |
| L2/L3 | 深度(可断电) | 需重新训练 |
1.2 UCIe:PHY 初始化 / 链路训练(简化示意)
UCIe 物理层在封装内,距离短、信道简单,因此初始化远比 PCIe LTSSM 简单:通常无复杂 EQ、无需多速率扫描(对端能力双方预知),重点是 lane 对齐与缺陷修复。
具体状态命名以 UCIe spec 为准,此处为流程示意。
补充:UCIe 内部实际有一组简化状态机,而非单一 LTSSM 等价物 —— ① PHY 训练/初始化状态机(上图);② 链路/电源状态机(Active / Idle / Deep-Sleep);③ 可靠性状态机(CRC/Replay 重传、L2L/E2E 流控、Lane Repair 切换);④ Sideband 协议状态机。这些状态机均不向 OS 暴露,仅固件经 sideband / DVSEC 观测。
要点:
- bump 微凸点,支持 16/20/32/40/64 数据 lane;40/64 配置一般带备用 lane(spec 定义)。
- Lane Repair:初始化中检测到缺陷 bump/lane 时,用备用 lane 替换以保证良率 —— 板级 PCIe 没有此机制(板级坏 lane 直接降宽度)。
- 可选 FEC:32 GT/s 高数据率可选,增强可靠性,代价是少量带宽。
- 时钟对齐:短距可简化 CDR,甚至用转发时钟;无连接器带来的额外均衡压力。
- 电源状态机:Active / Idle / Deep-Sleep(类似 PCIe L0/L1/L2);3.0 支持把 sideband 一起断电,仅留极小常开电路监听唤醒。
- Sideband:独立的低速控制通道(上电/复位/管理/调试),不参与数据通路。
- 3.0 增强:runtime recalibration(运行期重校准)、连续传输模式、紧急停机 / 快速节流、sideband 扩展至 100 mm。
- 软件观察点:UCIe 不向 OS 暴露 LTSSM;链路状态由固件(SCP/BMC)经 sideband / DVSEC 读取。
UCIe 链路/电源状态机(D2D Adapter 层):
| 状态 | 说明 | 对应 PCIe |
|---|---|---|
| Active | 正常传输 FLIT | L0 |
| Idle / L1 | 空闲省电,可快速唤醒 | L1 |
| Deep-Sleep / L2 | 深度省电;3.0 可连 sideband 一起断电,靠极小常开电路唤醒 | L2 |
UCIe 可靠性状态机:CRC 校验 → Replay 重传缓冲 → Lane Repair 切换(e-fuse 记录 repair 签名,上电自检先回放签名)—— 相当于 PCIe DL 的 ACK/NAK + 信用,但额外叠加 Lane Repair 层。
1.3 CXL:复用 PCIe LTSSM + CXL 链路初始化
CXL 不定义新 PHY,物理训练完全复用 PCIe LTSSM(1.0/2.0 基于 PCIe 5.0 PHY @32GT/s;3.0 基于 PCIe 6.0 PAM4 @64GT/s;4.0 双倍至 128GT/s)。CXL 自身的"链路初始化"发生在 LTSSM 进入 L0 之后,属于 CXL 链路/协议层:
- CXL.io:走标准 PCIe TLP(VC0),与 PCIe 枚举完全兼容。
- CXL.cache / CXL.mem:LTSSM L0 后在 VC1 上建立 FLIT 通道(1.x/2.0 用 68B FLIT;3.0 PAM4 模式用 256B FLIT),完成链路/协议协商后才可承载一致性流量。
- LTSSM 观测:与 PCIe 相同(Link Status / 训练错误),但 CXL 链路未完成 FLIT 协商时不会进入可用的业务态。
CXL 链路层状态机(LTSSM L0 之后):
| 阶段 | 说明 |
|---|---|
| LTSSM L0 | 物理链路就绪(复用 PCIe) |
| FLIT 同步 | VC1 上建立 FLIT 帧同步/锁定(68B 或 256B) |
| 链路握手 | 交换链路能力、协商角色(Host/Device) |
| 业务态 | CXL.io / CXL.cache / CXL.mem 正常复用传输 |
| 错误/重训 | 链路错误 → 回 LTSSM Recovery 重训 + FLIT 重新同步 |
CXL 电源状态:复用 PCIe L0s/L1/L2 + CXL 链路低功耗(如 L1 子状态),内存设备侧另有省电语义。
1.4 CCIX:无自有 PHY 状态机
- 标准形态(CCIX over PCIe):复用 PCIe PHY,直接沿用 PCIe LTSSM 训链(Gen3/Gen4),CCIX 不新增 PHY 状态机。
- 项目形态(CCIX over UCIe):复用 UCIe 初始化流程。
- CCIX 自身只有协议层/链路层初始化(物理链路就绪后):VC1 建立、CCIX 协议握手、一致性域协商 —— 属于协议层状态机,不是物理层。
CCIX 协议/链路层初始化状态机(物理链路就绪后):
| 阶段 | 说明 |
|---|---|
| 传输就绪 | 底层(PCIe LTSSM 或 UCIe init)进入 L0 / Data |
| VC1 建立 | 配置虚通道 1,预留一致性带宽 |
| 链路层握手 | CCIX 链路帧同步、流控/信用建立 |
| 协议层协商 | 报文类型 / 能力协商(CHI 风格) |
| 一致性域建立 | 节点加入 coherence domain,配置 Home 职责与地址映射 |
| 运行态 | Request / Response / Data / Snoop 正常流转 |
1.5 状态机详细对比表(物理层 / 链路层 / 协议层)
① 物理层状态机
| 维度 | PCIe | UCIe | CXL | CCIX |
|---|---|---|---|---|
| 自有 PHY 状态机 | ✅ LTSSM(11 主态) | ✅ 简化初始化流程 | ✅ 复用 PCIe LTSSM | ❌ 复用底层传输 |
| 复杂度 | 高(EQ / 速率扫描 / 宽度协商) | 低(短距,无连接器) | 同 PCIe(继承 LTSSM) | 无(继承底层) |
| 速率协商 | 逐级升速扫描 | 双方预知,快速确认 | 同 PCIe 逐级升速 | 继承底层 |
| 均衡 EQ | Gen3+ 必须 | 简单 / 可免 | 同 PCIe | 继承底层 |
| 缺陷处理 | 坏 lane 降宽度 | Lane Repair 备用 lane | 同 PCIe(坏 lane 降宽) | 继承底层 |
| 训练时间 | 毫秒级 | 亚毫秒级(更快) | 同 PCIe 毫秒级 | 继承底层 |
② 链路层状态机
| 维度 | PCIe | UCIe | CXL | CCIX |
|---|---|---|---|---|
| 帧级状态机 | DL_Down / Init / Active / Inactive | D2D Adapter 链路功能(CRC/Replay/L2L) | CXL.io 复用 PCIe DL + FLIT 链路 | CCIX 链路层(VC1 之上) |
| 流控建立 | InitFC1/2 信用 | L2L/E2E 信用 | FLIT 信用(.cache/.mem) | VC1 信用 |
| 重传机制 | ACK/NAK | Replay 缓冲 | FLIT CRC / 重放 | 继承底层 |
③ 协议层状态机
| 维度 | PCIe | UCIe | CXL | CCIX |
|---|---|---|---|---|
| 有无协议层状态机 | ❌ 无(事务层非状态机) | ❌ 无(底座透明) | ✅ 链路握手 → FLIT 协商 → 业务态 | ✅ VC1 → 链路握手 → 协议协商 → 一致性域 |
| 一致性协商 | — | — | Host/Device 角色 + FLIT 模式 | 一致性域 + Home 职责分配 |
④ 电源状态机
| 维度 | PCIe | UCIe | CXL | CCIX |
|---|---|---|---|---|
| 状态 | L0s / L1 / L2/L3 | Active / Idle / Deep-Sleep | 复用 PCIe + CXL 链路低功耗 | 继承底层 |
| 唤醒 | 亚微秒 ~ 重训 | 快速唤醒(可留常开监听) | 同 PCIe | 继承底层 |
⑤ 软件可见性
| 维度 | PCIe | UCIe | CXL | CCIX |
|---|---|---|---|---|
| LTSSM / DL 可读 | ✅ Link Status / DL Active | ❌(固件 sideband / DVSEC) | ✅ 同 PCIe | 继承底层 |
| 协议层状态可见 | — | — | CXL 能力 / 链路状态 | Agent CSR(SCP 侧) |
1.6 一页总结:各层状态机速查
| 层 | PCIe | UCIe | CXL | CCIX |
|---|---|---|---|---|
| 物理层 | LTSSM 11 主态:Detect→Polling→Configuration→L0(+Recovery / L0s / L1 / L2 / HotReset / Loopback / Disable) | 简化初始化:复位→校准→对齐→Lane Repair→数据 | 复用 PCIe LTSSM | 无(继承底层) |
| 链路层 | DL 4 态:Down→Init(InitFC)→Active→Inactive | D2D Adapter:CRC→Replay→L2L/E2E | CXL.io 复用 DL;.cache/.mem 走 FLIT 链路 | CCIX 链路帧(VC1) |
| 协议层 | 无(事务层非状态机) | 无(底座透明) | 链路握手→FLIT 协商→业务态 | VC1→链路握手→协议协商→一致性域 |
| 电源 | L0s / L1 / L2-L3 | Active / Idle / Deep-Sleep | 复用 PCIe + CXL 低功耗 | 继承底层 |
| 软件可见 | Link Status / DL Active | 固件 sideband / DVSEC | 同 PCIe + CXL 能力 | Agent CSR(SCP) |
读法:物理层看"谁训链",链路层看"谁保证可靠帧",协议层看"谁有建链语义",电源层看"谁省电",软件层看"谁看得见"。
一句话对比:PCIe/CXL 有完整分层状态机且软件可读;UCIe 状态机简单且仅固件可见;CCIX 无自有物理状态机,只补协议层建链。
二、软件配置流程
2.1 PCIe:枚举 → 资源分配 → 驱动
流程(由 BIOS/UEFI 或嵌入式 PCIe 枚举器执行):
- 枚举 / 发现:从 Root Complex 深度优先遍历,分配 BDF(bus:dev.fn),读 Vendor/Device ID 识别设备。
- 能力发现:遍历 Capability 链表(Express、MSI/MSI-X、AER、ACS、ATS、PRI、DOE…)及 4KB 扩展配置空间。
- 资源分配:读 BAR 大小 → 分配 Memory/IO 空间 → 写回 BAR;分配总线号。
- 使能:Memory Space Enable / Bus Master Enable / 中断(MSI/MSI-X)配置。
- 驱动绑定:OS 匹配 Vendor/Device ID → 驱动初始化设备功能。
- 运行期管理:热插拔、AER 错误上报、ASPM 电源管理(L0s/L1)。
特点:标准、成熟、全栈软件可见;x86 由 BIOS、ARM 由 UEFI/固件执行枚举。
2.2 UCIe:固件管理(OS 透明)
- 对 OS:UCIe 透明 —— 软件只看到上层设备(PCIe/CXL 设备),看不到 UCIe。
- 对固件(SCP/BMC):UCIe 可见,负责配置:
- 发现:通过承载协议的 PCIe DVSEC(Designated Vendor Specific Extended Capability)暴露 UCIe 能力(版本、lane 数、速率、sideband 能力)。
- 链路配置:lane 宽度 / 速率 / 编码、Lane Repair 状态、FEC 开关。
- Sideband 管理:上电/复位顺序、boot 镜像搬运、调试(2.0 起 manageability/DFx 标准化)。
- 3.0 增强:early firmware download(固件提前下载)、priority sideband(确定性低时延信令)、运行期重校准。
- 配置主体:BMC/SCP 固件,非 OS 驱动。
项目结合:CCD 的 UCIe D2D 由 SCP 配置;链路就绪后上层跑 CCIX,SCP 只配 CCIX Agent,不感知 UCIe 细节(arch-notes 口径)。
2.3 CXL:PCIe 枚举 → CXL.io 发现 → CXL.cache/.mem 使能
- PCIe 枚举:CXL 设备作为标准 PCIe 设备被枚举(CXL.io 提供配置/发现/中断/复位)。
- CXL 能力发现:配置空间中的 CXL DVSEC / 扩展能力暴露:设备类型(Type1/2/3)、支持子协议(.io/.cache/.mem)、FLIT 模式(68B/256B)、设备内存容量。
- 链路协商:LTSSM L0 后,VC1 上建立 CXL.cache/.mem FLIT 通道,协商 Host/Device 角色。
- 内存资源接入:Type3 内存设备把容量注册为系统内存(Linux cxl 驱动 / Windows Server 原生支持),OS 直接当普通内存使用。
- 一致性使能:Type1/2 使能 CXL.cache;Type2 按页面配置 host bias / device bias(3.0 起为增强一致性语义)。
- 运行期管理:热插拔、内存 RAS 事件、CXL Switch 拓扑管理(2.0 起)、多级 Fabric(3.0 起)。
2.4 CCIX:PCIe 枚举 → CCIX 能力 → 一致性域配置
标准形态(CCIX over PCIe):
- PCIe 枚举:CCIX 设备作为标准 PCIe 设备被发现在 VC0 上。
- CCIX 能力发现:配置空间中的 CCIX Extended Capability 暴露:协议版本、支持的传输(VC1)、节点角色(Request / Home / Slave Agent)、一致性域 ID。
- VC1 建立:配置 Virtual Channel 1 用于一致性流量(VC0 保留普通 PCIe)。
- 一致性域配置:把参与节点(CPU/加速器)加入同一 coherence domain,分配/映射地址(HPA/GPA/SVA)。
- SVM 配置:使能 ATS/PASID 做共享虚拟内存,实现零拷贝。
- 驱动:CCIX 感知驱动,注册共享内存、处理一致性域事件。
项目形态(CCIX over UCIe):第 2~6 步相同,第 1/3 步由 UCIe 传输替代;CCIX 协议层 CSR 对传输透明 —— SCP 只配 CCIX Agent 即可。
2.5 软件配置流程对比表
| 维度 | PCIe | UCIe | CXL | CCIX |
|---|---|---|---|---|
| 配置主体 | BIOS/UEFI + OS 驱动 | 固件(BMC/SCP) | 固件/BIOS 枚举 + OS(cxl 驱动 / 内存子系统) | 固件/驱动(依赖底层传输枚举) |
| 发现机制 | 标准枚举 + 配置空间 | PCIe DVSEC + Sideband | PCIe 枚举 + CXL DVSEC/能力 | PCIe 配置空间 + CCIX 能力 |
| OS 可见性 | 完全可见 | 不可见(透明) | 作为 PCIe 设备 + 系统内存可见 | 作为 PCIe/加速器设备可见 |
| 核心动作 | BDF / BAR / 中断 / 驱动 | lane / 速率 / FEC / repair / sideband | CXL.io 发现 / FLIT 协商 / 内存注册 / bias | VC1 / 一致性域 / SVM / Agent |
| 热插拔 / 管理 | 成熟(热插拔/ASPM/AER) | 2.0 起 manageability/DFx | 内存 RAS + Switch/Fabric 管理 | 无独立机制 |
三、通信协议核心
3.1 PCIe:TLP / DLLP / 流控
- 事务层 TLP:读/写/完成/配置/消息(MRd / MWr / Cpl / CfgRd / CfgWr / Msg),支持字节使能、64 位寻址、原子操作。
- 数据链路层 DLLP:ACK/NAK 重传、InitFC/UpdateFC 流控信用、电源管理;LCRC 校验。
- 流控:VC(Virtual Channel)× TC(Traffic Class);信用(credit)机制,每 VC 分头/数据信用,防对端缓冲溢出。
- 传输保障:链路级重传(TLP 缓存直到 ACK),端到端事务完成语义。
- 一致性:❌ 无;DMA + ATS/PRI 做共享虚拟内存,缓存一致性靠软件。
3.2 UCIe:FDI / RDI + FLIT + 分层流控
- D2D Adapter 层(UCIe 独有,位于协议层与 PHY 之间):
- 两个数据接口:FDI(FLIT Data Interface,跑 256B FLIT)与 RDI(Raw Data Interface,自定义流式数据)。
- 256B FLIT(与 PCIe 6.0 同尺度),含头 / CRC / FEC 字段。
- 分层流控:L2L(Link-to-Link,必选,类 PCIe 链路级)与 E2E(End-to-End,可选,端到端可靠性)。
- 可靠性:CRC + 重传 + 可选 FEC;Lane Repair 修复物理缺陷。
- 多协议承载:协议模式(CXL.io / .cache / .mem)或流模式(自定义协议)。
- 一致性:❌ 底座本身无一致性,由上层协议(CXL/CCIX)提供。
3.3 CXL:CXL.io / CXL.cache / CXL.mem 三子协议
- CXL.io:基于 PCIe 的配置 / IO / 中断 / 枚举(复用 TLP),保证与 PCIe 生态兼容。
- CXL.cache:设备一致性访问并缓存主机内存(请求/响应接口),主机为主(host 是唯一一致性主控)。
- CXL.mem:主机一致性访问设备内存(load/store),支持易失 / 持久内存。
- FLIT 通道:.cache/.mem 共用链路层,1.x/2.0 用 68B FLIT(2B ARB/MUX + 64B 数据 + 2B CRC);3.0 PAM4 用 256B FLIT(标准 / 低时延 LOpt 两种)。
- 一致性架构:CPU 为主的主从式(asymmetric)——只有主机 cache 控制器做 cache agent,设备侧复杂度低;与 CCIX 对称对等相反。
- 设备类型:Type1(.io+.cache)/ Type2(.io+.cache+.mem)/ Type3(.io+.mem)。
- 拓扑:2.0 树型 Switch(内存池化);3.0 多级 Switch + 非树拓扑(mesh/ring)+ GFAM + PBR(最多 4096 节点)。
3.4 CCIX:CHI 报文 + MOESI + 对称对等
- 双 VC 分工:VC0 跑普通 PCIe(配置/IO/兼容),VC1 跑 CCIX 一致性流量 —— 一条物理链路上"IO 与一致性共存"。
- 报文风格:基于 Arm CHI(Coherent Hub Interface)的 Request / Response / Data / Snoop 通道。
- 一致性协议:MOESI(M/O/E/S/I 状态);Home Agent 维护目录/内存,Snoop 保序。
- 对称对等:任意节点都可做 Home / Request Agent,加速器之间可直接一致性交互(不经 CPU 中转)—— 与 CXL 的"CPU 为主"相反。
- 共享虚拟内存 SVM:ATS / PASID 做地址转换,零拷贝,免软件 cache 刷新。
3.5 协议核心对比表
| 维度 | PCIe | UCIe | CXL | CCIX |
|---|---|---|---|---|
| 数据单元 | TLP(≤4KB)+ 链路 DLLP | 256B FLIT(FDI)/ RDI | CXL.io=TLP;.cache/.mem=68B/256B FLIT | CHI 风格报文(封装进底层传输) |
| 可靠性 | 链路重传 + LCRC | CRC + 重传 + 可选 FEC + Lane Repair | 继承 PCIe + FLIT CRC | 继承底层传输 |
| 流控 | VC/TC + 信用 | L2L + E2E 分层流控 | CXL.io 复用 PCIe;.cache/.mem FLIT 流控 | 继承底层 + VC1 |
| 一致性 | ❌ 无 | ❌ 无(底座) | ✅ CXL.cache/.mem(CPU 主从) | ✅ MOESI + Snoop |
| 一致性架构 | — | — | 主从式(CPU 为主) | 对称对等(任意节点可为主) |
| 多协议 | 单协议 | 协议模式 / 流模式 | 三子协议动态复用 | 在底层之上叠加 |
3.6 PCIe over UCIe:D2D Adapter 如何适配 PCIe 事务层 / 链路层
一句话结论:PCIe 的事务层被保留(TLP 语义原样带过去),而 PCIe 的数据链路层 DLL 被替代/吸收 —— 由 UCIe D2D Adapter 同时扮演"事务层打包 + 链路层可靠性"两个角色。
适配关键点:
- 接口:PCIe 事务层的 TLP 不再进 PCIe DLL,而是经 FDI(FLIT Data Interface)交给 D2D Adapter,组织成 256B UCIe FLIT;自定义 / 流式协议走 RDI。
- 事务层功能:TLP / 报文内容装入 FLIT 数据区并附 flit 头 / CRC / 可选 FEC;用 ARB/MUX 把 .io / .cache / .mem(或 PCIe + 流)动态复用;多 lane 打散分发(striping)。
- 链路层功能:PCIe DLL 的职责由 D2D Adapter 链路层功能接管 —— 无需实例化独立 PCIe DLL。
| PCIe DLL 功能 | UCIe D2D Adapter 对应 |
|---|---|
| ACK/NAK 重传 | CRC + Replay(重传缓冲) |
| 信用流控(credit) | L2L 流控(必选)+ E2E 流控(可选) |
| DLLP 管理报文 | flit 头 / sideband 承担 |
注意:“PCIe over UCIe” 实际即 CXL.io over FDI(UCIe 1.x 协议层基于 CXL,CXL.io 就是 PCIe),并非在 UCIe 里再跑一套独立 PCIe 事务层 + DLL。软件侧枚举到的仍是标准 PCIe 设备,对 OS 透明。
3.7 PCIe 在 CXL 中的转化(PCIe → CXL)
一句话结论:PCIe 的"三层"在 CXL 里走向不同 —— 事务层原样成为 CXL.io,链路层被拆成两路(CXL.io 复用 PCIe DLL / .cache+.mem 改用 FLIT 链路层),物理层完全复用。
转化关键点:
- 事务层:PCIe TLP 原样保留为 CXL.io —— 配置空间、枚举、BAR、中断全部走标准 PCIe TLP,兼容 PCIe 生态。
- 链路层(分叉):
- CXL.io 路径:直接复用 PCIe DLL(TLP 帧格式、ACK/NAK、信用流控),跑在 VC0;
- CXL.cache / CXL.mem 路径:改用 CXL 自有 FLIT 链路层(68B FLIT:2B ARB/MUX + 64B 数据 + 2B CRC),跑在 VC1;
- 两路在 ARB/MUX 处动态复用,再上 PCIe PHY —— 一条物理链路同时承载"PCIe 式 IO 帧"与"FLIT 一致性帧"。
- 物理层:完全复用 PCIe PHY / LTSSM(1.x/2.0 用 PCIe 5.0 PHY @32GT/s;3.0 用 PCIe 6.0 PAM4 @64GT/s)。
- CXL 3.0 变化:PAM4 模式下统一改为 256B FLIT,CXL.io 的 TLP 也封装进 FLIT,不再有独立 TLP 帧格式。
| PCIe 各层 | CXL 中的去向 |
|---|---|
| 事务层 TLP | → CXL.io(原样保留) |
| 数据链路层 DLL | CXL.io 路径复用;.cache/.mem 路径被 CXL FLIT 链路层替代 |
| 流控 | CXL.io 用 PCIe 信用;.cache/.mem 用 FLIT 流控 + ARB/MUX 复用 |
| 物理层 | 完全复用(LTSSM / 编码) |
注意:与 UCIe(把 PCIe DLL 整个替代)不同,CXL 是"部分复用 + 部分新增" —— PCIe 的 IO 路径原样跑,一致性路径叠加 FLIT 链路层;这也是 CXL 能"无缝兼容 PCIe 设备 / 驱动 / 枚举"的原因。
3.8 每层数据格式定义
3.8.1 PCIe 各层格式
① 事务层 TLP(Transaction Layer Packet)
┌────────────────────────────────────────────────────┐
│ 事务头 Header(3~4 DW = 12/16B) │
│ DW0: Fmt[2:0] Type[4:0] │ TC[2:0] Attr[1:0] │ Length │
│ DW1~3: Requester ID / Tag / BE / 地址 / 完成状态 … │
├────────────────────────────────────────────────────┤
│ 数据载荷 Payload(0 ~ 4096B,DW 对齐) │
├────────────────────────────────────────────────────┤
│ ECRC(可选 4B)+ LCRC(4B,必须) │
└────────────────────────────────────────────────────┘
| 字段 | 说明 |
|---|---|
| Fmt / Type | 事务类型(MRd / MWr / Cpl / Cfg…)与格式 |
| TC / Attr | 流量类别 / 属性(no-snoop、relaxed ordering…) |
| Length | 载荷长度(DW) |
| Requester ID / Tag | 请求者 BDF + 事务标签 |
| LCRC | 链路级 CRC(32b) |
② 数据链路层 DLLP(Data Link Layer Packet)
┌──────────────────────┬──────────┐
│ 类型(1B) + 保留(3B) │ CRC(4B) │
└──────────────────────┴──────────┘
类型:ACK / NAK / InitFC1 / InitFC2 / UpdateFC / PM_Enter_L1 / PM_Enter_L2 等。
③ 物理层 Ordered Set / FLIT
- Gen1~5 用 Ordered Set:TS1 / TS2(训链)、SKP(时钟补偿)、FTS(快速训练)—— 每个 16 symbols(4×COM + 12 载荷);
- PCIe 6.0 用 256B FLIT(取代 TLP/DLLP 帧格式,含 FEC)。
3.8.2 UCIe 各层格式
| 接口 / 层 | 数据格式 |
|---|---|
| FDI(FLIT Data Interface) | 256B FLIT:flit 头 + 数据 + CRC(可选 FEC) |
| RDI(Raw Data Interface) | 原始数据流,无 FLIT 帧格式 |
| 编码 | 128b/130b(高速)或 8b/10b(低速 4 GT/s) |
| 多 lane | 16/20/32/40/64 lane 打散分发(striping) |
3.8.3 CXL 各层格式
① CXL.io:与 PCIe TLP 一致(配置 / IO / 枚举)。
② CXL.cache / CXL.mem FLIT:
- 68B FLIT(1.x/2.0,PCIe 5.0 PHY):
┌──────────┬───────────────────────┬──────────┐
│ ARB/MUX │ 数据(4 × 16B slot) │ CRC(2B) │
│ (2B) │ │ │
└──────────┴───────────────────────┴──────────┘
- 256B FLIT(3.0,PAM4):
- 标准型:2B 头 + 240B 数据 + 8B CRC + 6B FEC;
- LOpt:拆成两个 128B 半,happy path 减 ~5ns 时延,数据 236B。
3.8.4 CCIX 报文格式
CCIX 报文(CHI 风格)封装在 PCIe TLP(VC1)中传输:
| 通道 | 报文内容 |
|---|---|
| Request | 事务类型(ReadShared / ReadUnique…)+ 地址 + Agent ID + 事务 ID |
| Snoop | 监听类型(SnpShared / SnpUnique…)+ 地址 + 请求方 |
| Data | 缓存行数据(64B 粒度) |
| Response | 完成 / 错误应答 |
CCIX 2.0 起支持 FLIT 传输模式(报文按 FLIT 承载)。
格式速查对比表:
| 层 | PCIe | UCIe | CXL | CCIX |
|---|---|---|---|---|
| 事务层 | TLP(≤4KB,3~4DW 头) | 协议模式承载 CXL / PCIe | CXL.io = TLP | CHI 报文(封装进 TLP / FLIT) |
| 链路层 | DLLP(8B:4B 类型 + 4B CRC) | FLIT 帧(256B) | 68B / 256B FLIT | CCIX 链路帧(VC1) |
| 物理层 | Ordered Set(Gen1~5)/ 256B FLIT(Gen6) | 128b/130b 编码 + bump | 复用 PCIe | 复用底层 |
| 流控单元 | TLP / DLLP | FLIT(FDI)/ RDI | FLIT | FLIT(2.0) |
四、一页总表
| 对比项 | PCIe | UCIe | CXL | CCIX |
|---|---|---|---|---|
| 层级 | 完整板级协议栈 | 封装内 D2D 传输底座 | 一致性协议栈(PCIe PHY 之上) | 一致性协议层(跑在传输之上) |
| 物理层状态机 | LTSSM(11 态,含 EQ) | 简化初始化 + Lane Repair | 复用 PCIe LTSSM + FLIT 协商 | 无(继承底层) |
| 链路层状态机 | DL:Down/Init/Active/Inactive | D2D Adapter:CRC/Replay/L2L | CXL.io 复用 DL + FLIT 链路 | CCIX 链路帧(VC1) |
| 协议层状态机 | 无(事务层非状态机) | 无(底座透明) | 握手→FLIT 协商→业务态 | VC1→握手→协商→一致性域 |
| 电源状态机 | L0s / L1 / L2-L3 | Active / Idle / Deep-Sleep | 复用 PCIe + CXL 低功耗 | 继承底层 |
| 状态机软件可见 | Link Status / DL Active | 固件 sideband / DVSEC | 同 PCIe + CXL 能力 | Agent CSR(SCP) |
| 软件配置 | BIOS/驱动全栈枚举 | 固件 DVSEC / Sideband 管理 | PCIe 枚举 + CXL 能力 + 内存注册 | PCIe 枚举 + CCIX 能力 + 一致性域 |
| 协议核心 | TLP / DLLP / 信用流控 | FDI / RDI / FLIT / L2L+E2E | CXL.io/.cache/.mem + 68B/256B FLIT | CHI / MOESI / 双 VC / 对称对等 |
| 缓存一致性 | ❌ 无 | ❌ 无(可承载) | ✅ CPU 主从(.cache/.mem) | ✅ 对称 MOESI |
| 典型带宽 | 5.0 x16=128GB/s;6.0=256GB/s(双向) | 1.0 最高 32GT/s;3.0 最高 64GT/s/lane | 同 PCIe(1.x/2.0=5.0;3.0=6.0;4.0=128GT/s) | 同 PCIe Gen3/4 |
| 功耗 | 高(板级 SerDes) | 极低(~0.5 pJ/bit) | 同 PCIe | 同 PCIe |
| 生态现状 | 主流事实标准 | 活跃(Chiplet 开放标准) | 活跃(一致性事实标准,S2S/内存扩展) | 已退役(2022 并入 CXL 联盟) |
五、总结
- D2D:CCD↔CCD 走 UCIe(物理状态机 = UCIe 初始化 + Lane Repair;由 SCP 配置)。
- 一致性:D2D 上跑 CCIX(SCP 配 CCIX Agent,协议层对传输透明)。
- S2S:跨 Socket 走 CXL(PCIe PHY,LTSSM 训链;CXL 链路 / FLIT 协商在 L0 后由 SCP/IOD 参与)。
- 启动顺序(对齐
bootflow_v0.2.md):POR → 复位释放 → ROM Boot → D2D/S2S 链路训练(UCIe init / LTSSM)→ CCIX/CXL 链路协商 → 全局地址编排(SAM)→ AP 释放。 - 调试观测:PCIe 看 Link Status / LTSSM 寄存器;UCIe 靠 sideband / DVSEC;CCIX 靠 Agent CSR(SCP 侧)。


被折叠的 条评论
为什么被折叠?



