一、PCIe 概述:从并行到串行的通信革命

大家好,我是你们的讲师。

今天我们聊聊 PCIe。说白了,它就是计算机内部用来连接各种高速设备的一条“高速公路”。你想想看,CPU、显卡、NVMe 硬盘、网卡……这些东西要互相传数据,总得有个高效的通路吧?PCIe 就是干这个的。

1.1 发展历史:为什么会有 PCIe?

我刚开始做硬件那会儿,用的还是 PCI 总线。32 位宽、33MHz 频率,峰值带宽只有 133 MB/s。那时候觉得够用了。但随着图形界面、千兆网卡的出现,PCI 很快就不够用了。

后来出现了 AGP,专门给显卡用。但它只是一个临时方案。真正的变革发生在 2003 年左右——PCI-SIG 组织发布了 PCIe 1.0 规范。

为什么叫“革命”?因为它的思路完全变了:

  • 从并行到串行:PCI 是并行总线,所有设备共享一条 32 位或 64 位的宽马路。PCIe 改成了串行,用一对差分线(TX+ / TX-)收发数据。你可能会问:串行比并行慢吧?其实不然。并行总线有严重的信号同步问题,频率一高就翻车。串行反而能把频率拉得很高。
  • 从共享到点对点:PCI 总线上挂多个设备,大家抢带宽。PCIe 每个设备和根设备之间是独立的物理链路,独享带宽。

我记的有一个项目,老平台用 PCI 总线挂四块千兆网卡,跑满时 CPU 占用率直接飙升到 80%。换成 PCIe 后,同样的负载,CPU 占用降到 20% 以下。

标准 发布时间 单 Lane 速率 x16 总带宽 编码方式
PCI 2.32002—1.06 GB/s—
PCIe 1.020032.5 GT/s8 GB/s8b/10b
PCIe 2.020075 GT/s16 GB/s8b/10b
PCIe 3.020108 GT/s31.5 GB/s128b/130b
PCIe 4.0201716 GT/s63 GB/s128b/130b
PCIe 5.0201932 GT/s126 GB/s128b/130b
PCIe 6.0202264 GT/s~ 256 GB/sPAM-4 + FLIT

嗯,这里要注意——从 PCIe 3.0 开始,编码效率从 8b/10b 的 80% 提升到 128b/130b 的 ~98.4%。这意味同样物理速率下,有效带宽直接多了 20% 以上。我在做 3.0 控制器验证时,第一眼看到这个编码方式就觉得:这才是真正的大招。

⚠️ 避坑提醒: 我曾经在 GEN5 信号质量调试中踩过坑——传输线损耗在 32 GT/s 下变得极其敏感。哪怕多一个过孔、多 2 厘米走线,眼图都会闭合。所以做高速 PCB 时,PCIe 链路长度、过孔数量、AC 耦合电容位置,每一项都要提前算好。

1.2 应用场景:PCIe 用在哪?

PCIe 的应用范围很广。但核心场景其实就三个方向:

1.2.1 服务器 / 数据中心

  • GPU 加速卡(AI 训练、推理)—— 需要 x16 甚至 x32 链路
  • NVMe SSD(高并发存储)—— 单盘 x4,通过 PCIe Switch 扩展
  • 智能网卡 / DPU(数据处理器)—— PCIe 是主板与加速器之间的标配连接
  • FPGA 加速卡(金融、高频交易)—— 低延迟是刚需

说白了,服务器就是要带宽大、延迟低、能接多设备。PCIe 的分层架构和链路扩展能力正好满足这些需求。

1.2.2 存储

我做了几年存储系统,这类场景对 PCIe 的依赖尤其深:

  • NVMe 协议直接跑在 PCIe 上,天然低延迟
  • 全闪存阵列通过 PCIe Switch 连接几十甚至上百块 NVMe SSD
  • NVMe over Fabrics(RDMA),把 PCIe 域扩展到网络

你想想看,SATA SSD 的延迟在 100μs 级别,而 NVMe + PCIe 可以做到 10μs 以下。这个差距对数据库、HPC 来说,完全是两个世界。

1.2.3 嵌入式 / 消费电子

  • 工业相机(高速图像采集)—— 需要 x4 或 x8 链路
  • 汽车 ADAS(雷达 / 摄像头信号汇聚)—— 使用 PCIe Switch 做数据交换
  • 笔记本扩展坞—— 通过 Thunderbolt(底层是 PCIe + DisplayPort)外接显卡、网卡、存储

其实嵌入式的 PCIe 设计和服务器不太一样。嵌入式更关注功耗、PCB 层数、BOM 成本。我做过一个手持设备,只能给 PCIe 分配 4 层板,结果信号质量堪忧。后来硬生生把走线从 8 英寸缩短到 4 英寸,并用上了低损耗板材。

1.3 与其他总线的对比

经常有同学问我:“PCIe 和 SATA、USB、Ethernet 比,到底强在哪?” 我会答:它们就不该放在一起比。为什么?

  • PCIe 是芯片级互连(板内 / 系统内)
  • SATA / USB / Ethernet 是外设互连(盒到盒或板到外设)

PCIe 的长板在于 低延迟(亚微秒级)、高带宽(单 Lane 可达 64 GT/s)、原生支持 DMA 和 IO 虚拟化。不过凡事都有代价,PCIe 对 PCB 走线要求高,不能像 USB 那样随便插根线拉 3 米。

总线 典型带宽 延迟 协议类型 应用场景
PCIe 4.0 x16~ 64 GB/s< 1 μs点对点串行GPU / SSD / 网卡
SATA 3.0~ 600 MB/s~ 100 μsAHCI 指令通道机械硬盘 / 光驱
USB 3.2 Gen2x2~ 2 GB/s~ 10 μs主机控制 + 轮询外设 / 存储 / 视频采集
Ethernet 25GbE~ 3.1 GB/s~ 5-50 μs多层网络协议栈数据中心

我个人习惯在选型时先判断:设备是要接在主板内部,还是通过线缆延伸到机箱外? 内部首选 PCIe,外部才考虑 USB / 以太网。有些场合会把 PCIe 通过线缆拉出——例如 Thunderbolt、PCIe over Cable——但那毕竟是少数。

💡 个人小经验: 如果你在做 SSD 控制器选型,别只看峰值速率。注意事务层开销。PCIe 的优势不是跑满带宽,而是在低队列深度下做到个位数的微秒延迟。

1.4 PCIe 架构总览(一张图理解全貌)

下面这张图,我画了很多次。它是后面每一章的基础。你看懂它,也就看懂了 PCIe 的核心逻辑。

PCIe 系统层次结构图 PCIe 系统核心架构 CPU / 内存 Root Complex(根复合体) PCIe Switch / 交换芯片 每端口独立链路,数据包路由转发 Endpoint A(GPU) Endpoint B(NVMe SSD) Endpoint C(万兆网卡) 每个 Endpoint 独享 Lane 带宽

这张图展示了最典型的 PCIe 系统。CPU 通过 Root Complex 连接一个或多个 PCIe Switch,每个 Switch 再挂载若干 Endpoint。注意这个结构是全双工的。

1.5 写在开头的话

好,第一章就讲到这里。

这一章里我们聊了 PCIe 的发展脉络,对比了它与传统总线的差异,也扫了一遍主要应用场景。别小看这些背景知识——我见过不少工程师上来就研究事务层包格式,结果连什么是 Lane 都没搞清。到头来还是得回头补课。

后面的章节,我们会深入每一层的细节,包括物理层的电气特性、数据链路层的重传机制、事务层的 TLP 格式,还有配置空间的枚举过程。嗯,那些才是 PCIe 真正硬核的部分。

核心要点(本章必记):
  • PCIe 是串行点对点互连,不是并行共享总线。
  • 每一代速率翻倍(2.5 → 5 → 8 → 16 → 32 → 64 GT/s)。
  • 编码效率从 8b/10b 到 128b/130b,再到 PAM-4 调制。
  • 分三层:事务层 → 数据链路层 → 物理层。
  • 应用覆盖服务器、存储、嵌入式三大领域。