PCIE学习(一)——PCIe概述

一、PCIE特性

PCIE(PCI Express),是全双工的点对点协议,具有独立的发送端和接收端;

Lane是发送端与接收端之间的一个传输回路。由两组差分信号组成,如下图所示:

扩展:

之所以采用差分对而非传统的单端信号,主要有以下几个核心原因:

每条 Lane 由两对差分信号线(共 4 根线)组成:一对用于发送(TX+/TX-),一对用于接收(RX+/RX-)。

1、抗共模噪声

差分信号通过比较两根线之间的电压差 来判断逻辑"1"或"0",而不是像单端信号那样以地线为参考判断绝对电压。当外部电磁干扰(如内存刷新、邻近信号串扰)作用到差分对上时,干扰会同时、等量地耦合到两根线上,两根线的电压差几乎不变,干扰被天然抵消。

2、支持更高的工作频率

传统 PCI 并行总线使用单端信号,当频率提升到一定程度时,线间的时钟偏移(Skew) 和信号完整性问题会变得无法克服,频率被锁死在 133MHz 以内。而差分信号由于抗干扰能力强,配合内嵌时钟(通过 8b/10b 或 128b/130b 编码从数据流中恢复时钟),可以工作在 GHz 级别。PCIe Gen1 就达到了 2.5 GT/s,Gen6 更是达到了 64 GT/s。

3、更低的电压摆幅与功耗

差分信号的电压摆幅通常只有 0.4V~0.8V 左右,远低于传统单端信号的 3.3V 或 5V。更低的电压摆幅意味着更快的信号切换速度和更低的功耗。

两个设备之间的传输通道,称为Link,由1,2,4,8,16,32个Lane组成。lane的数目代表Link的传输宽度(x1,x2,x4,x8,x16,x32);

基于Packet的形式发送协议;

二、PCIE的体系结构
1、拓扑结构

Root Complex:PCIe 拓扑的绝对根节点,集成在 CPU 或芯片组(Chipset)内部。

  • 将 CPU 的内存地址空间、I/O 空间和中断控制器映射到 PCIe 域。
  • 生成和解析 TLP(事务层数据包),负责设备枚举、链路初始化和资源分配。
  • 统一管理 PCIe 配置空间,操作系统通过 RC 访问下游设备的 BAR 寄存器、MMIO 内存映射空间。

Endpoint: 拓扑树上的末端功能实体。

  • 响应来自 RC 的总线请求。
  • 支持 DMA 主控传输和 P2P(Peer-to-Peer)设备直连。
  • 高端设备支持 SR-IOV 虚拟化,可拆分为多个虚拟功能(VF)。
  • 常见设备:独立显卡(GPU)、NVMe SSD、高速网卡、AI 加速卡、FPGA 等。

Switch: 用于扩展端口数量。

Bridge: 实现 PCIe 与传统 PCI/PCI-X 总线的协议转换。

2、协议分层

PCIe是一种封装分层协议,主要包括事务层、数据链路层和物理层。在PCIe体系结构中,数据报文首先在设备的核心层中产生,然后再经过该设备的事务层、数据链路层和物理层,最终发送出去。而接收端的数据也需要通过物理层、数据链路和事务层,并最终到达Device Core。

事务层:生成、解析和路由 TLP(事务层数据包)。

数据链路层:确保两个直连设备之间的可靠传输

物理层:处理电信号的生成、接收、编解码和链路训练。

三、PCIE数据吞吐量的计算
1、PCIe 吞吐量计算公式:

单向吞吐量 (GB/s)=传输速率 (GT/s)×Lane 数量×编码效率8单向吞吐量 (GB/s)=8传输速率 (GT/s)×Lane 数量×编码效率​

双向吞吐量 (GB/s)=单向吞吐量×2双向吞吐量 (GB/s)=单向吞吐量×2

其中:

  • 传输速率:每条 Lane 的原始信号速率,如 2.5 GT/s、8 GT/s、64 GT/s 等。
  • Lane 数量:链路宽度,如 x1、x4、x8、x16。
  • 编码效率:有效数据位 / 总传输位数。
  • 除以 8:将比特(bit)转换为字节(Byte)

在计算之前,需要先厘清几个容易混淆的单位:

  • GT/s(Giga Transfers per second):千兆传输/秒,描述物理层每秒传输的符号(Symbol)次数,是原始信号速率。

  • Gbps(Giga Bits per second):千兆位/秒,描述每秒传输的有效数据位数。

  • GB/s(Giga Bytes per second):千兆字节/秒,描述每秒传输的有效数据字节数(1 Byte = 8 bits)。

关键区别:GT/s ≠ Gbps。因为编码方案会引入开销位,实际有效数据速率(Gbps)总是低于原始传输速率(GT/s)。

2、各版本吞吐量速查表(单向)
版本 速率 x1 x4 x8 x16
PCIe 1.0 2.5 GT/s 250 MB/s 1 GB/s 2 GB/s 4 GB/s
PCIe 2.0 5.0 GT/s 500 MB/s 2 GB/s 4 GB/s 8 GB/s
PCIe 3.0 8.0 GT/s 985 MB/s 3.94 GB/s 7.88 GB/s 15.75 GB/s
PCIe 4.0 16 GT/s 1.97 GB/s 7.88 GB/s 15.75 GB/s 31.51 GB/s
PCIe 5.0 32 GT/s 3.94 GB/s 15.75 GB/s 31.51 GB/s 63.02 GB/s
PCIe 6.0 64 GT/s 7.88 GB/s 31.51 GB/s 63.02 GB/s 126.04 GB/s