PCIe从入门到精通
+ -

PCIe从入门到精通之二:计算机王国中的PCIe设备

2026-04-02 1 0

0. 引言

PCIe 是硬件工程师跨不过去的坎。我刚开始工作就接触 PCIe,工作中遇到的所有产品都有 PCIe 总线。在此想把自己学习 PCIe 的一些经历和感悟,以及踩过的坑分享在这里,与大家一起进步。

所有 PCIe 主题的文章都会收录在《深入浅出聊 PCIe》合集里,每篇文章涵盖一个 PCIe 的主题,预计会有几十篇文章。

在上一篇文章我们聊到了《PCIe 从入门到精通之一:综合简介》,今天我们继续接着聊各种 PCIe 设备。

需要下载 PCIe Gen5、Gen6 和 Gen7 标准的朋友(pdf 格式),请关注本微信公众号“硬件工程师宝典”,在对话框内回复“PCIe”,将获取标准下载二维码。


1. PCIe 设备的分布

在计算机王国中有很多不同的 PCIe 体系(PCIe Hierarchies),不同的 PCIe 体系可以独立地工作。我们可以把一个完整的 PCIe 体系想象成一个庞大的企业。这个企业只有一个总公司和若干个子公司。

  • 总公司:相当于 PCIe 体系中的 CPU(含有 Root Complex),用于发号施令。
  • 子公司:相当于 PCIe 系统中的 Endpoint device。有的 Endpoint 比较简单,就像一个公司在另外一个城市设立的办事处。

一个企业只有一个总公司,但可以有若干个子公司/办事处与 Root Complex 互联。总公司和子公司一般位于不同的城市,他们之间通信需要设立一个固定的通道,就像我们在城市之间建立的高速铁路。

PCIe拓扑结构

PCIe 总线传输的数据包就像城市之间的列车,这种“城市列车”只能在固定的高速铁路轨道上运输,千万不能“出轨”。而且这种“高速轨道”是单向的,所以来向和回向一起必须至少有两个轨道。

OM13750


2. PCIe 链路

2.1 双单工模式

如上图,位于 A 城市的总公司 Root Complex 与位于 B 城市的子公司 Endpoint device 之间有两个单向高速铁路轨道。从 A 到 B 和从 B 到 A 分别有两个方向的高速铁路通道,我们称之为 Lane。这些通道只能单方向传输数据,不同方向的通道可以在同一时间工作,这就是 PCIe 标准所说的 双单工模式(dual-simplex)

2.2 信号速率(Data Rate)

初始化后,每条链路必须仅在所支持的信号速率中之一进行运行(木桶原理,取 Root Port 和 Endpoint 两者最小的那个速率)。对于 PCIe 技术,其定义的原始信号速率,是 Gigabits/second/Lane/direction,即单根 lane、一个方向、每秒的速率。

2.3 通道的宽度(Lane Width)

  • 从 Root Complex 到 Endpoint device 之间的通道,我们称之为 TX transmitting 通道 Lane
  • 从 Endpoint device 到 Root Complex 之间的通道,我们称之为 RX Receiving 通道 Lane

由于有些设备之间数据传输比较繁忙,单个通道不能满足要求,就会组建 x2、x4、x8、x16 的通道 Lane,就像增加两个城市之间并行铁路轨道的数量,如下图所示。

多通道PCIe链路

2.4 对称性(Symmetry)

每条链路在每个方向上都必须支持相等数量的通道,即一条 x16 的链路意味着每个方向上有 16 对差分信号,且速率一样。

2.5 传输的最小单元(Packet)

在高速铁路的通道上,两个城市之间传输的是 数据包(Packet),Packet 是一次数据传输的最小单元,我们会在后续章节中着重介绍它。


3. 点对点传输(Point to Point)

总公司 Root Complex 和任何一个子公司 Endpoint device 之间必须建立专有的点对点连接,不允许和其它子公司 Endpoint device 共享链路。每个 Endpoint device 必须独立运作。

  • x1、x2 lane:一般用于板载芯片的管理互联以及 M.2 SSD。
  • x4 lane:可以用于 U.2、E3.S 和 E1.S。
  • x8、x16 lane:一般用于 network adapter、GPU 卡和 AI 加速卡等。

4. PCIe 设备种类

下图是一个典型的 PCIe 体系的拓扑结构,图中有以下三类 PCIe 设备:

  • PCIe Root Complex(包含 Host Bridge、RCiEP 和 Root Port)
  • PCIe Endpoint Device
  • PCIe Switch

PCIe拓扑结构

4.1 Root Complex

PCIe Root Complex(根联合体),包含一个 Host Bridge、若干个 RCiEP 和若干个 Root Port,它就相当于常年驻守在总公司的 CEO 的秘书团队,是连接 CPU 和内存与整个 PCIe 高速公路系统的关键桥梁。

  • Host Bridge:相当于 CEO 秘书团队的秘书长,向上连接 CPU,向下连接 Root Port 和 RCiEP,常驻总公司,非常忙碌,一般不需要出差。
  • Root Port:相当于 CEO 秘书团队的形象大使,是 Endpoint 的 contact window。一个 Root Port 负责 1/2/4/8 个 Endpoint 不等。所有和 Endpoint 的事务由它全权负责直接处理,经常派小弟(数据包 packet)到对应的下属子公司(Endpoint)出差视察。
  • RCiEP(Root Complex Integrated Endpoint):集成在 Root Complex 内部的片上外设或功能模块 Endpoint,作为标准的 PCIe Endpoint 设备呈现给系统。相当于秘书办公室打扫卫生的,只负责总公司本地事务,一辈子不用出差。

Root Complex 通常集成在 CPU 内部或芯片组中,它的主要作用是作为 CPU 和内存子系统与 PCIe 设备之间的接口和管理者。以下是 PCIe Root Complex 的具体作用(将在后续章节中逐一介绍):

  • 连接 CPU 与 PCIe Endpoint
  • 设备管理与配置:包括发现与枚举、资源分配、链路管理
  • 数据传输协调
  • 配置表管理
  • 多端口支持
  • 错误与电源管理

简而言之,Root Complex 是 PCIe 架构中的“指挥中心”,它协调 CPU 与所有 PCIe 设备之间的通信,管理设备的连接、配置和数据流,是现代计算机系统高效运行不可或缺的核心组件。

4.2 PCIe Endpoint Device

PCIe Endpoint Device(端点设备)就是连接到这条高速铁路上的各种具体的“子公司”或“外设”。它们是 PCIe 总线拓扑结构中的最终设备,位于 Root Complex 总公司之外的另一个城市,直接执行特定的功能,并通过 Root Port 与 CPU 和内存进行数据交互。

Endpoint Device 通常是指那些不具备进一步连接其他 PCIe 设备能力的设备。它们是 PCIe 链路的终点(所以称之为终点 Endpoint),例如:

  • 显卡(Graphics Card 或 GPU):负责图像渲染和输出
  • 固态硬盘(NVMe SSD):用于高速数据存储
  • 网卡(Network Interface Card):提供网络连接功能
  • 声卡(Sound Card):处理音频输入和输出
  • USB 扩展卡、SATA 扩展卡:提供额外的端口功能
  • FPGA 加速卡、AI 加速卡:用于特定计算任务的硬件加速
  • 板载芯片(onboard chip):BMC、各种 AI chip、ASIC、PHY、Controller
  • CXL 内存扩展控制器(新兴热点,以后在专门的章节详细讲解)
  • Legacy Endpoint Device:在 PCIe 架构中,指的是那些原本为旧的 PCI 或 PCI-X 总线架构设计的设备,但为了能够在 PCIe 系统中工作而配备了 PCIe 接口的设备。

4.3 PCIe Switch

有些子公司(Endpoint Device)比较偏远,直接从总公司(Root Complex)分别对这些子公司修建高速铁路轨道太奢侈了。因此我们可以设置一个交通枢纽站:

先将长距离铁路修到这个交通枢纽站,再从交通枢纽站分别修建一些短距离的铁路到这些偏远的子公司。

因此,PCIe Switch(PCIe 交换机) 就相当于这个交通网络中的“交通枢纽”或“分流器”,是总公司常驻偏远地区的区域总公司。它的主要作用是扩展 PCIe 总线的连接能力,并高效地路由数据流量。Switch 的功能比 Endpoint 要多得多,我们后面专门用一篇文章来聊 Switch。

PCIe Switch 的应用场景:

  • 服务器和数据中心:在需要连接大量 GPU、NVMe SSD、网卡等高性能设备的服务器中,PCIe Switch 是必不可少的,用于构建高带宽、低延迟的互联网络。
  • 工作站:高性能工作站可能需要连接多个显卡或加速卡,Switch 可以提供所需的扩展能力。
  • 外部扩展箱(Expansion Chassis):许多外部 PCIe 扩展箱内部都包含 Switch,以便通过一个 PCIe 电缆连接到主机,但能提供多个 PCIe 插槽。
  • 嵌入式系统:在一些复杂的嵌入式应用中,也可能使用 PCIe Switch 来连接多个专用功能模块。

总而言之,PCIe Switch 在 PCIe 架构中扮演着“交通指挥官”的角色,它不仅扩展了 PCIe 的连接能力,更重要的是,它通过智能路由和流量管理,确保了整个 PCIe 网络的高效、稳定和灵活运行。


5. 总结

综上所述,PCIe 有三类核心组件:PCIe Root ComplexPCIe EndpointPCIe Switch(后面会有专门的章节详细讲解 Switch)。这三者都具有 PCIe device 的基本功能,其中 Root Complex 和 Switch 还承担着其它额外的功能。

在下一章节,我们将围绕这三者的关系,介绍一下 PCIe 设备的内部组件。


这篇文章就聊到这里,敬请关注下一篇:
《PCIe 从入门到精通之三:PCIe 设备的内部组件》


参考文献

  1. PCI Express® Base Specification Revision 5.0 Version 1.0
  2. PCI Express® Base Specification Revision 6.4
  3. PCI Express® Base Specification Revision 7.0
    通过网盘分享的文件:
    链接: https://pan.baidu.com/s/1R1TSlAdYqeZu5_5hZQrqhQ?pwd=x5ed
原文转自:https://pcisig.cn/forum.php?mod=viewthread&tid=21&extra=page%3D1

0 篇笔记 写笔记

关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!