PCIe LTSSM状态机与链路训练全流程解析 - 第1节

1.1 PCIe 总线的发展历史

PCI Express(PCIe)自 2003 年由 Intel 提出以来,经历了多代演进,每次迭代都实现了带宽翻倍。下表总结了各代 PCIe 的关键参数:

代际 发布年份 单通道速率 (GT/s) 编码方式 x16 单向带宽 (GB/s)
PCIe 1.0 2003 2.5 8b/10b 4.0
PCIe 2.0 2007 5.0 8b/10b 8.0
PCIe 3.0 2010 8.0 128b/130b 15.8
PCIe 4.0 2017 16.0 128b/130b 31.5
PCIe 5.0 2019 32.0 128b/130b 63.0
PCIe 6.0 2022 64.0 PAM-4 + FLIT 126.0
关键里程碑:PCIe 3.0 将编码效率从 8b/10b(80%)提升至 128b/130b(≈98.5%),大幅降低了协议开销。PCIe 6.0 首次引入 PAM-4 信令和前向纠错(FEC),标志着从 NRZ 向多电平调制的转变。
PCIe 代际带宽演进(x16 单向) PCIe 1.0 4 GB/s PCIe 2.0 8 GB/s PCIe 3.0 15.8 GB/s PCIe 4.0 31.5 GB/s PCIe 5.0 63 GB/s PCIe 6.0 126 GB/s 注:PCIe 6.0 采用 PAM-4 编码,有效带宽翻倍但信噪比要求更高

1.2 PCIe 与 PCI / PCI-X 的区别

PCIe 并非 PCI 的简单升级,而是从并行共享总线彻底转向了串行点对点互连架构。以下是核心差异对比:

特性 PCI / PCI-X PCI Express
总线架构 并行共享总线 串行点对点差分对
拓扑 多设备共享同一总线 交换式(Switch)星型拓扑
信号线 32/64 位并行数据 + 控制 差分 TX/RX 对(LVDS)
时钟 同步共享时钟 内嵌时钟(8b/10b 或 128b/130b)
带宽扩展 提高频率(受限于并行信号 skew) 增加 Lane 宽度(x1/x2/x4/x8/x16/x32)
热插拔 不支持(需特殊实现) 原生支持(Native Hot Plug)
软件兼容 配置空间、I/O、内存映射 向后兼容 PCI 配置模型
软件透明性:PCIe 在软件层面保持了与 PCI 的兼容性,操作系统无需修改即可枚举 PCIe 设备。这是 PCIe 能够快速替代 PCI 的关键原因之一。
PCI 共享总线 vs PCIe 点对点交换 PCI 共享总线 Host Bridge 共享 PCI 总线 Device A Device B Device C → PCIe 点对点交换 Root Complex Switch EP A EP B EP C PCI 总线上所有设备共享带宽;PCIe 中每个设备通过独立 Lane 与 Switch 连接,带宽独享

1.3 PCIe 拓扑结构

PCIe 拓扑由三种基本组件构成:Root Complex(RC)、Switch 和 Endpoint(EP)。此外还包括 PCIe Bridge 用于桥接传统 PCI 设备。

1.3.1 核心组件定义

  • Root Complex(RC):CPU 与 PCIe 层次结构的接口。负责生成事务层包(TLP)、处理配置请求、管理中断和错误。通常集成在 CPU 或芯片组中。
  • Switch:由上游端口(Upstream Port)和多个下游端口(Downstream Port)组成,负责在多个 Endpoint 之间路由 TLP。Switch 对软件透明,枚举时表现为两个逻辑设备:上游桥和下游桥。
  • Endpoint(EP):功能设备,如 GPU、NVMe SSD、网卡。EP 可以是 Type 0 配置头(传统 EP)或 Type 1(桥设备)。
  • PCIe Bridge:用于将 PCI/PCI-X 总线连接到 PCIe 域,实现向后兼容。
注意:Switch 内部不进行数据缓存或协议转换,它只是基于地址的路由转发。所有 Endpoint 共享 RC 到主存的带宽,但彼此之间的通信可以通过 Switch 直接转发(Peer-to-Peer),无需经过 RC。

1.3.2 典型拓扑结构图

PCIe 典型拓扑结构 CPU Root Complex (RC) Memory Controller Switch GPU (EP) NVMe SSD (EP) NIC (EP) Switch 2 EP D EP E Switch 支持层级扩展,允许构建复杂的树形拓扑;每个 Endpoint 拥有独立的配置空间

1.3.3 拓扑关键规则

  1. 单根树形结构:一个系统中只有一个 Root Complex,所有设备通过 Switch 或直接连接到 RC,形成以 RC 为根的树。
  2. 配置空间枚举:系统软件通过深度优先遍历(DFS)枚举总线树,为每个设备分配总线号、设备号和功能号(BDF)。
  3. 点对点通信:同一 Switch 下的两个 Endpoint 可以直接交换数据,无需经过 RC,但需要 Switch 支持地址路由。
  4. Lane 宽度协商:每个链路在训练阶段自动协商 Lane 宽度(x1/x2/x4/x8/x16/x32)和速率(Gen1/Gen2/Gen3/...),无需软件干预。
实际案例:在典型桌面平台中,CPU 内部集成 Root Complex 和内存控制器,第一个 PCIe x16 插槽直接连接 RC(用于 GPU),其余插槽通过 PCH(Platform Controller Hub)内部的 Switch 连接。服务器平台则可能使用独立的 PCIe Switch 芯片扩展出数十个端口。

1.3.4 组件类型与配置空间

组件类型 配置头类型 典型功能 端口方向
Root Complex Type 1(虚拟桥) CPU 接口、内存映射、中断路由 仅下游端口
Switch 上游端口 Type 1 连接 RC 或上游 Switch 上游
Switch 下游端口 Type 1 连接 Endpoint 或下游 Switch 下游
Endpoint Type 0 功能设备(存储、网络、显示) 仅上游端口
PCIe Bridge Type 1 桥接传统 PCI 总线 上游/下游

配置空间类型决定了设备在枚举过程中的行为:Type 0 头包含 6 个 Base Address Register(BAR),用于声明设备需要的内存或 I/O 地址空间;Type 1 头包含总线号寄存器和桥内存/ I/O 限制,用于描述下游子总线的地址范围。