PCIe链路训练状态机:Gen1到Gen5速率协商流程 - 第1节

1.1 PCIe 总线架构概述

PCI Express(PCIe)是一种高速串行计算机扩展总线标准,旨在替代传统的并行 PCI 和 PCI-X 总线。其核心设计理念是采用点对点串行连接,每个设备都拥有专用的通道(Lane),从而彻底消除了共享总线带来的带宽争用和信号同步问题。

从架构角度看,PCIe 系统由以下关键组件构成:

  • 根复合体(Root Complex, RC):连接 CPU、内存和 PCIe 交换结构,是系统的核心。
  • 交换器(Switch):扩展 PCIe 端口数量,实现多设备互连,负责数据包的路由和转发。
  • 端点(Endpoint, EP):功能设备,如 GPU、NVMe SSD、网卡等。
  • 桥接器(Bridge):用于连接其他总线标准(如 PCI/PCI-X)到 PCIe 域。
关键概念: PCIe 使用“通道(Lane)”作为基本物理链路,每个 Lane 由一对差分信号对(发送+接收)组成。链路宽度可以是 x1、x4、x8、x16,通过并行绑定多个 Lane 实现更高带宽。

1.1.1 拓扑结构

PCIe 采用树形拓扑结构,以根复合体为根节点,通过交换器向下扩展。下图展示了典型的 PCIe 系统拓扑:

PCIe 系统拓扑结构图 PCIe 系统拓扑结构 根复合体 (RC) 交换器 (Switch) 端点 (EP1) 端点 (EP2) 桥接器 (Bridge) PCI 设备 说明:RC 连接 CPU/内存,Switch 扩展端口,Endpoint 实现功能,Bridge 兼容旧总线。

1.2 分层协议栈

PCIe 采用分层协议栈架构,从下到上依次为:物理层(Physical Layer)、数据链路层(Data Link Layer)和事务层(Transaction Layer)。每一层都有明确的职责,层间通过定义良好的接口进行通信。这种分层设计使得协议扩展和速率升级(如从 Gen1 到 Gen5)成为可能,而无需重写整个协议栈。

协议层 主要职责 关键单元/概念
事务层 处理 TLP(事务层包)的组装与解析,管理事务顺序与流量控制 TLP、事务描述符、VC(虚拟通道)、流量控制(FC)
数据链路层 保证 TLP 在链路中的可靠传输,处理错误检测与重传 DLLP(数据链路层包)、ACK/NAK、CRC、重放缓冲区
物理层 负责串行/解串、编码/解码、链路训练与初始化、电气特性 Lane、PMA/PCS、8b/10b(Gen1/2)、128b/130b(Gen3+)、LTSSM
核心要点: 事务层关注“做什么”(读/写/完成),数据链路层关注“是否可靠到达”,物理层关注“如何用信号传输”。链路训练状态机(LTSSM)位于物理层,负责速率协商和链路初始化。

1.2.1 分层协议栈架构图

下图展示了 PCIe 分层协议栈的内部结构以及数据包在层间的流动过程:

PCIe 分层协议栈架构图 PCIe 分层协议栈架构 事务层 (Transaction Layer) TLP 组装/解析 · 事务排序 · 流量控制 · 虚拟通道管理 事务层 ↔ 数据链路层接口 数据链路层 (Data Link Layer) DLLP 处理 · ACK/NAK 重传 · CRC 校验 · 重放缓冲区 数据链路层 ↔ 物理层接口 物理层 (Physical Layer) PCS (编码/解码) · PMA (串行/解串) · LTSSM (链路训练) 8b/10b (Gen1/2) | 128b/130b (Gen3+) 物理介质 (差分信号对 · Lane) 数据流方向:软件/核心 → 事务层 (TLP) → 数据链路层 (DLLP) → 物理层 (串行比特流) → 对端设备

1.3 各层核心概念详解

1.3.1 事务层 (Transaction Layer)

事务层是协议栈中最接近软件的一层,负责处理事务层包(TLP)。TLP 是 PCIe 通信的基本数据单元,用于执行存储器读写、I/O 读写、配置读写和消息传递等操作。

  • TLP 格式:包含起始帧、序列号、TLP 头、数据负载(可选)和 CRC(ECRC)。
  • 事务类型:Memory、I/O、Configuration、Message 四种地址空间。
  • 流量控制(Flow Control):基于信用(Credit)机制,防止接收端缓冲区溢出。
  • 虚拟通道(VC):支持多个独立的数据流,实现 QoS 管理。

1.3.2 数据链路层 (Data Link Layer)

数据链路层位于事务层和物理层之间,主要职责是确保 TLP 在链路中的可靠传输。它通过以下机制实现:

  • DLLP(数据链路层包):用于链路管理,如 ACK/NAK、电源管理、流控更新。
  • ACK/NAK 重传协议:发送端保留 TLP 副本,直到收到接收端的 ACK 确认;若收到 NAK 或超时,则重传。
  • CRC 校验:LCRC(链路 CRC)用于检测传输错误。
  • 重放缓冲区(Replay Buffer):保存已发送但未确认的 TLP,用于重传。
注意: 数据链路层只保证“链路级”的可靠传输,不保证端到端的可靠。端到端可靠性由事务层或上层软件处理(如通过 ECRC 和完成超时机制)。

1.3.3 物理层 (Physical Layer)

物理层是协议栈的最底层,直接与物理介质交互。它分为两个子层:

  • PCS(物理编码子层):负责数据的编码/解码。Gen1 和 Gen2 使用 8b/10b 编码(20% 开销),Gen3 及以上使用 128b/130b 编码(约 1.5% 开销)。
  • PMA(物理介质附加子层):负责串行化/解串行化(SerDes)、时钟恢复、电气特性驱动。
  • LTSSM(链路训练和状态状态机):物理层的核心控制逻辑,负责链路初始化、速率协商、宽度协商、电源状态转换等。这是本课程后续章节的重点。

1.3.4 各代 PCIe 速率与编码对比

PCIe 代际 单 Lane 原始速率 (GT/s) 编码方式 有效带宽 (GB/s, x16) 引入年份
Gen1 2.5 8b/10b 4.0 2003
Gen2 5.0 8b/10b 8.0 2007
Gen3 8.0 128b/130b 15.8 2010
Gen4 16.0 128b/130b 31.5 2017
Gen5 32.0 128b/130b 63.0 2019
速率计算示例: Gen5 x16 有效带宽 = 32 GT/s × 16 Lane × (128/130) 编码效率 ÷ 8 (bits/byte) ≈ 63.0 GB/s。注意:GT/s 表示每秒千兆传输次数,每次传输 1 bit 原始数据。

1.4 本章小结

本章介绍了 PCIe 总线的基本概念,包括:

  • 总线架构与拓扑:点对点串行连接,树形拓扑,由 RC、Switch、Endpoint、Bridge 组成。
  • 分层协议栈:事务层(TLP)、数据链路层(DLLP/ACK-NAK)、物理层(编码/SerDes/LTSSM)。
  • 速率演进:从 Gen1 2.5 GT/s 到 Gen5 32 GT/s,编码效率从 80% 提升至 99.2%。