下图是一个典型的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)办公室打扫卫生的,只负责总公司本地事务,一辈子不用出差。
RCiEP为逻辑上实现的PCIe Endpoint,并不存在PCIe协议层<TL/DL/PL>内容。
RCiEP必须实现PCIe Type0配置空间。
RCiEP必须不能实现PCIe扩展能力中Link Capabilities, Link Status, Link Control, Link Capabilities 2, Link Status 2, and Link Control 2等寄存器。
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):处理音频输入和输出。
- oUSB扩展卡、SATA扩展卡:提供额外的端口功能。
- oFPGA加速卡、AI加速卡:用于特定计算任务的硬件加速。
- o板载芯片(onboard chip):BMC、各种AI chip、ASIC、PHY、Controller。
- oCXL Memory Expansion Controller(即CXL内存扩展控制器,这个是新兴的热点,以后我们在专门的章节进行详细讲解)
- oLegacy 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网络的高效、稳定和灵活运行。