PCIe从入门到精通之二:计算机王国中的PCIe设备
0赞0,引言
在上一篇文章我们讲解了《PCIe从入门到精通之一:综合简介》,今天我们继续接着介绍各种PCIe设备。
所有PCIe主题的文章都会收录在《深入浅出聊PCIe》合集里,欢迎评阅。
需要下载PCIe学习资料标准的朋友(pdf格式),请关注本微信公众号“硬件工程师宝典”,在对话框内回复“PCIe”,将获取标准下载链接。
一, PCIe设备的分布
在计算机王国中有很多不同的PCIe体系(PCIe Hierarchies),不同的PCIe体系可以独立地工作。我们可以把一个完整的PCIe体系想象成一个庞大的企业。这个企业只有一个总公司和若干个子公司。总公司就相当于PCIe体系中的CPU(含有Root Complex),子公司就相当于PCIe系统中的Endpoint device,有的Endpoint比较简单,就像一个公司在另外一个城市设立的办事处。一个企业只有一个总公司(拥有Root complex的CPU)用于发号施令;但可以有若干个子公司/办事处-Endpoint device与Root Complex互联。
总公司和子公司一般位于不同的城市。位于不同城市的总公司root complex和 Endpoint device需要经常通信,他们之间通信需要设立一个固定的通道,就像我们在城市之间建立的高速铁路。

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

二,PCIe链路
· 双单工模式
如上图,位于A城市的总公司Root complex与位于B城市的子公司Endpoint device之间有两个单向高速铁路轨道。从A到B和从B到B分别有两个方向的高速铁路通道,我们称之为Lane。 这些通道只能单方向的传输数据,不同方向的通道可以在同一时间工作,这就是PCIe标准所说的双单工模式dual-simplex。
· 信号速率(Data Rate)
初始化后,每条链路必须仅在所支持的信号速率中之一进行运行(木桶原理,取Root Port和Endpoint两者最小的那个速率)。对于PCIe技术,其定义的原始信号速率,是Gigabits/second/Lane/direction,就是单根lane、一个方向、每秒的速率。
· 通道的宽度(Lane Width)
从root complex到Endpoint device之间的通道,我们称之为TX transmitting通道Lane。从 Endpoint device到root complex之间的通道,我们称之为RX Receiving通道Lane。
由于有些设备之间数据传输比较繁忙,所以单个通道不能满足要求,就会组建x2,x4,x8,x16的通道Lane,如下图所示。这就像我们增加两个城市之间并行铁路轨道的数量,如下图所示。

· 对称性(Symmetry)
每条链路在每个方向上都必须支持相等数量的通道,即,一条 x16 的链路意味着每个方向上有 16 对差分信号,且速率一样。
· 传输的最小单元(Packet)
在高速铁路的通道上,两个城市之间传输的是数据包 Packet,Packet是一次数据传输的最小单元,我们会在后续章节中着重介绍它。
三,点对点传输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加速卡等。
三,PCIe设备种类
下图是一个典型的PCIe体系的topology,图中有以下三类PCIe设备:位于CPU的PCIe Root Complex(包含Host Bridge, RCiEP和Root Port), PCIe Endpoint设备和PCIe Switch。

· Root Complex:
PCIe Root Complex(根联合体),包含一个Host Bridge, 若干个RCiEP和若干个Root Port,它就相当于常年驻守在总公司的CEO的秘书团队,它是连接(CPU)和公司核心记忆库(内存)与整个PCIe高速公路系统(PCIe交换结构)的关键桥梁。
CEO的秘书团队(Root Complex)非常庞大,Host Bridge相当于CEO秘书团队(Root Complex)的秘书长,它向上连接CPU,向下连接Root Port和RCiEP,常驻总公司,非常忙碌,一般不需要出差。
Root Port是相当于CEO秘书团队形象大使,是Endpoint(子公司)的contact window, 一个Root Port负责1/2/4/8个Endpoint(子公司)不等。所有和Endpoint的事务由它全权负责直接处理,经常派小弟(数据包packet)到对应的下属子公司(Endpoint)出差视察。
RCiEP全名Root Port Integrated Endpoint,就是集成在Root Complex内部的片上外设或功能模块Endpoint,作为标准的PCIe Endpoint设备呈现给系统。这意味着,即使这些功能并非独立的物理PCIe卡,操作系统和CPU也能通过PCIe总线机制来发现、配置和管理它们。它就相当于秘书(Root Complex)办公室打扫卫生的,只负责总公司本地事务,一辈子不用出差。
说了半天,大家内心深处一定有个灵魂拷问:到底哪个device是RCiEP?直接show图。打开“我的电脑”,在“设备管理器”里选“System Devices”,那些直接挂载在bus 0下的就有RCiEP。如图中的Bus0、device 1、function 0是Intel CPU内的集成显卡。

Root Complex 通常集成在CPU内部或芯片组中,它的主要作用是作为CPU和内存子系统与PCIe设备之间的接口和管理者。
以下是PCIe Root Complex 的具体作用:(这些作用我们会在后续章节中逐一介绍)
o 连接CPU与PCIe endpoint
o 设备管理与配置:包括发现与枚举、资源分配、链路管理。
o 数据传输协调
o 配置表管理
o 多端口支持
o 错误与电源管理
简而言之,Root Complex 是PCIe架构中的“指挥中心”,它协调CPU与所有PCIe设备之间的通信,管理设备的连接、配置和数据流,是现代计算机系统高效运行不可或缺的核心组件。
· PCIe Endpoint Device
PCIe Endpoint Device(端点设备) 就是连接到这条高速铁路上的各种具体的“子公司”或“外设”。它们是PCIe总线拓扑结构中的最终设备,其位于Root Complex总公司之外的另一个城市,直接执行特定的功能,并通过Root Port与CPU和内存进行数据交互。
Endpoint Device通常是指那些不具备进一步连接其他PCIe设备能力的设备。它们是PCIe链路的终点(所以称之为终点Endpoint),例如:
o 显卡 (Graphics Card或GPU):负责图像渲染和输出。
o 固态硬盘 (NVMe SSD):用于高速数据存储。
o 网卡 (Network Interface Card):提供网络连接功能。
o 声卡 (Sound Card):处理音频输入和输出。
o USB扩展卡、SATA扩展卡:提供额外的端口功能。
o FPGA加速卡、AI加速卡:用于特定计算任务的硬件加速。
o 板载芯片(onboard chip):BMC、各种AI chip、ASIC、PHY、Controller。
o CXL Memory Expansion Controller(即CXL内存扩展控制器,这个是新兴的热点,以后我们在专门的章节进行详细讲解)
o Legacy Endpoint Device:在PCIe(Peripheral Component Interconnect Express)架构中,Legacy Endpoint Device(传统端点设备)指的是那些原本为旧的PCI或PCI-X总线架构设计的设备,但为了能够在PCIe系统中工作而配备了PCIe接口的设备。
· 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网络的高效、稳定和灵活运行。
四,总结
综上所述,PCIe有三类核心设备:PCIe Root Complex, PCIe Endpoint和PCIe Switch(后面会有专门的章节详细讲解Switch)。
这三者都具有PCIe device的基本功能,其中Root Complex和Switch还承担着其它额外的功能。在下一章节,我们将围绕这三者的关系,介绍一下PCIe设备的内部组件。
五, 抛砖引玉
PCIe的三类核心设备的内部结构是什么样的?它们的内部结构之间有什么不同?
敬请关注下一篇:《PCIe从入门到精通之三:PCIe设备的内部组件》
六,参考文献:
需要以下参考文献(PCIe标准)的朋友,请关注本微信公众号“硬件工程师宝典”,在对话框内回复“PCIe”,将获取标准下载连接。

百度网盘分享的文件
