TripTheWorld

PCIe总线何去何从? 实际的需求催生了技术的变革。 PCIe就像是计算机王国里的一场“交通革命”,它替代了PCI成为计算机领域主要的互联总线。那么它的发展趋势如何?让我们一步一步揭开它神秘的面纱。欢迎关注微信公众号“硬件工程师宝典”,获取更多资讯。

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

0
阅读(1544)

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需要经常通信,他们之间通信需要设立一个固定的通道,就像我们在城市之间建立的高速铁路。

4_PCIe Lane.png


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

 

3_PCIe Link.png



二,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,如下图所示。这就像我们增加两个城市之间并行铁路轨道的数量,如下图所示。

4_PCIe Link.png


·        对称性(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

7_PCIe topology.png


·        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内的集成显卡。


 18-RCiEP.png

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”,将获取标准下载连接。


15_baidu_file.png



百度网盘分享的文件