PCIE学习笔记0

简介

PCI Express 是一种高性能、通用的 I/O 互连技术,适用于各类未来计算与通信平台。它保留了 PCI 局部总线的核心特性,如使用模型、加载 - 存储架构及软件接口,同时以高度可扩展的全串行接口取代了 PCI 局部总线的并行总线实现方式。PCI Express 借助点对点互连、基于交换机的技术及分组协议等方面的进步,实现了更高水平的性能与功能。该技术支持的高级特性包括电源管理、服务质量(QoS)、热插拔支持、数据完整性及错误处理等。

I/O 需求

这种不断发展的 I/O 互连技术的高层需求如下:

  • 支持多市场领域及新兴应用:

  • 为桌面设备、移动设备、工作站、服务器、通信平台及嵌入式设备提供统一的 I/O 架构

  • 能够提供低成本、高容量的解决方案:

  • 系统级成本达到或低于 PCI 的成本结构

  • 支持多种平台互连用途:

  • 芯片到芯片、通过连接器或线缆实现的板到板连接

  • 多种机械形态规格:

  • [M.2]、[CEM](卡机电规格)、[U.2]、[OCuLink]

  • 与 PCI 兼容的软件模型:

  • 无需修改 PCI 系统配置软件,即可枚举和配置 PCI Express 硬件

  • 无需修改现有操作系统,即可启动运行

  • 无需修改现有 I/O 设备驱动程序,即可支持其运行

  • 采用 PCI 配置范式,能够配置 / 启用 PCI Express 的新功能

  • 性能:

  • 低开销、低延迟通信,以最大化应用有效载荷带宽和链路效率

  • 高每引脚带宽,以减少每个设备及连接器接口的引脚数量

  • 通过聚合通道和信号频率实现可扩展性能

  • 高级特性:

  • 支持不同数据类型和排序规则

  • 电源管理与功耗控制

  • 能够识别特定功能的设备的电源管理能力

  • 能够将设备或功能转换至特定电源状态

  • 能够接收设备或功能当前电源状态的通知

  • 能够在主电源关闭状态下生成唤醒请求

  • 能够对设备上电进行时序控制,以在功耗预算中实现平稳的平台策略

  • 能够支持差异化服务,即不同的(服务质量,QoS)

  • 够为每个 QoS 数据流分配专用链路资源,以提高结构效率,并在面临队头阻塞时提升有效的应用级性能

  • 能够在每个组件内配置结构 QoS 仲裁策略

  • 能够为每个数据包标记端到端 QoS

  • 能够创建端到端等时(基于时间、注入速率控制)解决方案

  • 热插拔支持

  • 能够支持现有的 PCI 热插拔解决方案

  • 能够支持原生热插拔解决方案(无需边带信号)

  • 能够支持异步移除

  • 能够为所有形态规格提供统一的软件模型

  • 数据完整性

  • 能够为所有类型的事务包和数据链路包提供链路级数据完整性支持

  • 能够为高可用性解决方案提供端到端数据完整性支持

  • 错误处理

  • 能够支持与 PCI 兼容的错误处理

  • 能够支持高级错误报告和处理,以改进故障隔离和恢复解决方案

  • 工艺技术独立性

  • 能够支持发送器和接收器采用不同的直流共模电压

  • 易于测试

  • 能够通过与测试设备的简单连接进行电气合规性测试

PCIE链路

  • 组件之间使用双单工通信。

  • 链路由两对低压差分信号组成,一对是发送信号,一对是接收信号。

图1-1 传输方式以及差分信号对

通信方式对比

术语(中文 / 英文)

核心传输特性

典型应用

效率对比

全双工通信通道
full-duplex communication channel

同一时刻双向同步传输

USB 3.0+、千兆以太网

最高(无等待时间)

双单工通信通道
dual-simplex communication channel

双向传输,但需分时进行(同一时刻仅单向)

早期 PCIe 链路、部分串行总线

中等(存在微小分时延迟)

半双工通信通道
half-duplex communication channel

双向传输,但需手动 / 自动切换方向(收发互斥)

早期以太网(10Mbps)、对讲机

最低(切换存在等待延迟)

差分信号介绍

低压差分信号(Low-Voltage Differential Signaling,简称LVDS)是一种用于高速、低功耗、长距离数据传输的物理层信号技术,核心特点是通过 “差分电压” 传输数据,而非传统的 “单端电压”(如 TTL 信号),广泛应用于工业控制、汽车电子、显示面板、高速通信等场景(例如 LCD 屏幕的 LVDS 接口、工业相机的图像传输)

LVDS 通过 “两根紧密耦合的差分线(通常标记为 P 正线和 N 负线)” 传输:

  • 数据表示:不依赖地线参考,而是通过 “两根线的电压差” 判断逻辑 —— 当 P 线电压比 N 线高 200mV±100mV 时,表示 “1”;当 N 线电压比 P 线高 200mV±100mV 时,表示 “0”(标准 LVDS 的差分电压摆幅为 350mV max,典型值 250mV);

  • 供电电压:“低压” 体现在供电端 —— 通常为 3.3V 或 2.5V(早期为 5V,现已淘汰),部分低功耗版本支持 1.8V,大幅降低芯片功耗。

PCIE链路属性

  • Ÿ 基础链路 ——链路由两条单向差分链路构成,具体实现为一对发送信号和一对接收信号。通过编码方案嵌入数据时钟,以实现极高的数据速率。后续会介绍具体的实现方案。

  • Ÿ信号传输方式 ——实际有效数据速率取决于调制方式、编码方式与数据速率的组合。这部分后续会有更为详尽的介绍

Data Rate

Modulation

Encoding

Effective Data Rate

2.5 GT/s

NRZ

8b/10b

2 Gbit/s

5.0 GT/s

NRZ

8b/10b

4 Gbit/s

8.0 GT/s

NRZ

128b/130b

~8 Gbit/s

16.0 GT/s

NRZ

128b/130b

~16 Gbit/s

32.0 GT/s

NRZ

128b/130b

~32 Gbit/s

64.0 GT/s

PMA4

1b/1b

64 Gbit/s

  • Ÿ通道(Lanes)—— 每条链路必须至少支持 1 条通道,每条通道包含一组差分信号对(一对用于发送,一对用于接收)。为扩展带宽,链路可聚合多条通道,以 xN 表示(其中 N 为支持的链路宽度)。例如,工作在 2.5 GT/s 数据速率下的 x8 链路,每个方向的原始聚合带宽为 20 Gbps(千兆比特每秒)。

  • Ÿ初始化 —— 硬件初始化阶段,PCI Express 链路的两端设备会协商通道宽度和工作频率,完成链路建立。此过程无需固件或操作系统软件参与。后续会介绍这部分如何实现。

  • Ÿ对称性 —— 每条链路在两个方向上必须支持对称的通道数量,例如,x16 链路表示每个方向均有 16 对差分信号。

PCIE拓扑图

PCIE拓扑图里面会涉及到根复合体(root complex),端点(endpoint)和交换机(switch)。PCIE里面会对根复合体,端点和交换机有一些具体的要求和各部分负责的内容。这部分后续也会有介绍,此处只作为一个简单的介绍。不会具体去列举出来所有的内容。

图 1-2 Example PCI Express Topology

PCIE软硬件模型的发现、配置和操作

PCI/PCIe 硬件 / 软件模型包含实现 “发现、配置及使用功能(Function)” 所需的架构组件,且无需掌握该功能的专属信息。其核心要素包括:

  • Ÿ 配置模型:为系统软件提供发现系统中可用硬件功能(Function)的手段;

  • Ÿ 资源分配机制:用于为可寻址资源(如内存空间、中断)执行基础资源分配;

  • Ÿ 使能 / 禁用控制:控制功能(Function)是否响应接收到的请求(Request),以及是否发起请求(Request);

  • Ÿ 明确的排序与流量控制模型:支持硬件 / 软件接口的一致性与稳健性实现。

PCI Express 配置模型支持两种机制:

  • ŸPCI 兼容配置机制:该机制支持与 “识别传统 PCI(Conventional PCI)的操作系统” 及其对应的总线枚举、配置软件实现 100% 二进制兼容;

  • ŸPCI Express 增强型配置机制:提供该机制的目的是增大可用配置空间(Configuration Space)的容量,并优化访问机制。

每条 PCI Express 链路均通过虚拟 PCI 到 PCI 桥接器(virtual PCI-to-PCI Bridge)结构进行映射,且关联一条逻辑总线(Logical Bus)。该虚拟 PCI 到 PCI 桥接器结构可属于以下组件:PCI Express 根复合体端口(Root Complex Port)、交换机上行端口(Switch Upstream Port)或交换机下行端口(Switch Downstream Port)。根端口(Root Port)是一种虚拟 PCI 到 PCI 桥接器结构,可从 PCI Express 根复合体(Root Complex)发起一个 PCI Express 层次结构域(hierarchy domain)。设备会被映射到配置空间(Configuration Space)中,且每个设备仅响应特定的设备编号(Device Number)。

PCIE层级介绍

本文档从三个独立的逻辑层角度定义 PCI Express 架构,分别是事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer)。这里面涉及到很多的技术后续会在文档中逐一介绍。

层级图

PCI Express 采用数据包(packet)在组件间传递信息。数据包在事务层(Transaction Layer)和数据链路层(Data Link Layer)中构建,用于将信息从发送端组件传输到接收端组件。当发送的数据包流经其他层级时,会被添加该层级处理数据包所需的额外信息。在接收端则进行反向处理:数据包从物理层(Physical Layer)格式转换为数据链路层格式,最终(对于事务层数据包(TLPs)而言)转换为可被接收端设备的事务层处理的格式。事务级数据包信息在各层级间的概念性流转过程,如下图所示。

数据包传输

传输层

架构的上层是事务层(Transaction Layer)。事务层的主要职责是事务层数据包(TLPs)的组装与拆解。TLPs 用于传递事务(如读写操作)以及特定类型的事件。事务层还负责管理基于信用(credit-based)的 TLP 流量控制。

所有需要响应包的请求包均通过拆分事务(Split Transaction)实现。每个数据包都有唯一标识符,确保响应包能被定向到正确的发起方。数据包格式支持多种寻址方式,具体取决于事务类型(内存(Memory)、I/O、配置(Configuration)和消息(Message))。数据包还可包含一些属性,如非窥探(No Snoop)、松弛排序(Relaxed Ordering)和基于 ID 的排序(ID-Based Ordering, IDO)。

事务层支持四个地址空间:包括 PCI 的三个传统地址空间(内存、I/O 和配置空间),并新增了消息空间(Message Space)。本规范通过消息空间将所有原有的边带信号(如中断、电源管理请求等)转换为带内消息事务(in-band Message transactions)。可以将 PCI Express 消息事务理解为 “虚拟线路(virtual wires)”,因为它们的作用是消除平台实现中目前使用的大量边带信号。

事务层(Transaction Layer)在生成和接收事务层数据包(TLPs)的过程中,会与链路(Link)另一端的对等事务层交换流量控制(Flow Control)信息。它还负责支持由软件和硬件发起的电源管理(power management)。

初始化与配置功能要求事务层:

  • Ÿ 存储由处理器或管理设备生成的链路配置信息;

  • Ÿ 存储由物理层(Physical Layer)硬件通过宽度和工作频率协商生成的链路能力信息。

事务层的数据包生成与处理服务要求其:

  • 根据设备核心(device core)的请求(Requests)生成 TLPs;

  • Ÿ 根据设备核心(device core)的请求(Requests)生成事务层数据包(TLPs);

  • Ÿ 将接收到的请求事务层数据包(Request TLPs)转换为设备核心(device core)可处理的请求(Requests)

  • Ÿ 将接收到的完成数据包(Completion Packets)转换为可交付给设备核心的有效载荷(payload)或状态信息;

  • Ÿ 检测不支持的 TLPs,并调用适当的机制进行处理;

  • Ÿ 若支持端到端数据完整性(end-to-end data integrity),则生成端到端数据完整性循环冗余校验(CRC),并相应地更新 TLP 头部。

流量控制服务:

  • Ÿ 事务层跟踪链路上 TLPs 的流量控制信用(Flow Control credits);

  • Ÿ 事务信用状态通过数据链路层(Data Link Layer)的传输服务定期发送至远端事务层;

  • Ÿ 远端流量控制信息用于调节 TLP 的传输(防止发送过量导致缓冲区溢出)。

排序规则:

  • Ÿ 兼容 PCI/PCI-X 的生产者 / 消费者(producer/consumer)排序模型;

  • Ÿ 扩展支持松弛排序(Relaxed Ordering);

  • Ÿ 扩展支持基于 ID 的排序(ID-Based Ordering)。

电源管理服务(Power management services)

  • Ÿ 软件控制的电源管理:通过系统软件(system software)规定的机制实现。

  • Ÿ 硬件控制的自主电源管理:在设备处于全功率开启状态(full-on power states)时,将功耗降至最低。

虚拟通道与流量类别(Virtual Channels and Traffic Class):

  • Ÿ 虚拟通道(Virtual Channel)机制与流量类别(Traffic Class)标识相结合,旨在为特定类型的应用提供差异化服务(differentiated services)和服务质量(QoS,Quality of Service)支持。

  • Ÿ 虚拟通道(Virtual Channels):虚拟通道提供了一种在链路(Link)的特定公共物理资源上支持多个独立逻辑数据流的方式。从概念上讲,这一机制是将不同的数据流复用到同一条物理链路上。

  • Ÿ 流量类别(Traffic Class):流量类别是事务层数据包(Transaction Layer Packet)的一个标签,在整个架构(fabric)中端到端传输时保持原样(不被修改)。在架构内的每个服务点(如交换机(Switch)),流量类别标签用于应用相应的服务策略。每个流量类别标签定义一个唯一的排序域(ordering domain)—— 对于包含不同流量类别标签的数据包,不提供排序保证。

数据链路层

架构栈中的中间层是数据链路层(Data Link Layer),它充当事务层(Transaction Layer)与物理层(Physical Layer)之间的中间环节。数据链路层的主要职责包括链路管理(Link management)和数据完整性保障,具体涵盖错误检测与错误纠正。

数据链路层的发送端会接收由事务层组装完成的事务层数据包(TLPs),计算并添加数据保护码(data protection code)与 TLP 序列号(sequence number),随后将其提交至物理层,以通过链路(Link)传输。数据链路层的接收端负责校验所接收 TLP 的完整性,并将校验通过的 TLP 提交至事务层进行后续处理。若检测到 TLP 错误,该层需请求重新传输 TLP,直至信息被正确接收,或判定链路已失效。

数据链路层还会生成并消费用于链路管理功能的数据包。为将此类数据包与事务层使用的数据包(TLP)区分开,对于在数据链路层生成并消费的数据包,将使用术语 “数据链路层数据包(DLLP,Data Link Layer Packet)” 进行指代。

数据链路层(Data Link Layer)负责与链路(Link)另一端的对等数据链路层实现信息的可靠交换。

初始化与电源管理服务(Initialization and power management services):

  • Ÿ 接收来自事务层(Transaction Layer)的电源状态请求(power state Requests),并将其传递给物理层(Physical Layer);

  • Ÿ 向事务层传递链路的活跃(active)、复位(reset)、断开(disconnected)及电源管理(power managed)状态。

数据保护、错误检查与重传服务(Data protection, error checking, and retry services):

  • Ÿ 生成循环冗余校验码(CRC,Cyclic Redundancy Check),用于校验数据完整性;

  • Ÿ 存储已发送的事务层数据包(TLP),为数据链路层级别的重传(retry)提供支持;

  • Ÿ 执行错误检查,识别传输过程中出现的数据包错误;

  • Ÿ 发送事务层数据包的确认信息(acknowledgement)及重传消息(retry Messages);

  • Ÿ 提供错误指示(error indication),为错误报告与日志记录(error reporting and logging)提供依据。

物理层

物理层(Physical Layer)包含接口运行所需的全部电路,具体包括驱动电路与输入缓冲器、并串转换(parallel-to-serial conversion)与串并转换(serial-to-parallel conversion)电路、锁相环(PLL (s))以及阻抗匹配电路。此外,物理层还包含与接口初始化及维护相关的逻辑功能。物理层以 “依赖具体实现的格式” 与数据链路层(Data Link Layer)交换信息,其核心职责是将从数据链路层接收的信息转换为合适的串行格式,并以 “与链路另一端组件兼容的频率和位宽”,通过 PCI Express 链路(Link)进行传输。

PCI Express 架构预留了 “扩展接口(hooks)”,可通过速率升级与高级编码技术支持未来的性能提升。未来的速率标准、编码技术或传输介质变更,可能仅会影响物理层的定义(而无需修改事务层、数据链路层的核心架构)。

接口初始化、维护控制与状态跟踪(Interface initialization, maintenance control, and status tracking):

  • Ÿ 复位(Reset)/ 热插拔(Hot-Plug)的控制与状态管理;

  • Ÿ 互连(Interconnect)的电源管理;

  • Ÿ 链路宽度(Width)与通道映射(Lane mapping)的协商;

  • Ÿ 通道极性反转(Lane polarity inversion)的处理。

符号与特殊有序集生成(Symbol and special Ordered Set generation)

  • Ÿ 8 位 / 10 位(8b/10b)的编码与解码。

  • Ÿ 嵌入式时钟调谐与对齐(Embedded clock tuning and alignment):通过调整时钟信号参数,确保发送端与接收端的时钟同步,保障数据传输时序准确性。

块与特殊有序集生成(Block and special Ordered Set generation)

  • Ÿ 128 位 / 130 位(128b/130b)编码与解码:PCIe 4.0 及以上版本采用的高效编码技术,在 128 位数据基础上添加 2 位校验信息,兼顾传输效率与数据完整性;

  • Ÿ 1 位 / 1 位(1b/1b)编码与解码:简化的编码方式,适用于特定控制信号或低带宽场景,直接对单比特信号进行编码传输;

  • Ÿ 链路均衡(Link Equalization):通过调整信号放大增益、补偿链路损耗等方式,优化高速传输下的信号质量,减少信号衰减与失真。

符号传输与对齐(Symbol transmission and alignment)

  • Ÿ 发送电路(Transmission circuits):负责将编码后的符号转换为电信号,通过链路发送至接收端;

  • Ÿ 接收电路(Reception circuits):接收来自链路的电信号,将其转换为数字符号并传递至后续解码环节;

  • Ÿ 接收端弹性缓冲器(Elastic buffer at receiving side):缓解发送端与接收端的时钟偏差,避免因时序微小差异导致的数据丢失;

  • Ÿ 接收端多通道去偏移(Multi-Lane de-skew,适用于宽度>x1 的链路):当链路包含多条通道(如 x4、x8)时,消除不同通道间的信号传输延迟差异,确保多通道数据同步接收。

系统可测试性(DFT)支持特性(System Design For Testability (DFT) support features)

  • Ÿ 合规性测试图案(Compliance Pattern):用于验证设备是否符合 PCIe 规范要求的标准测试信号图案);

  • Ÿ 修改版合规性测试图案(Modified Compliance Pattern):在标准合规图案基础上调整的测试信号,适用于特定场景下的合规性验证;

  • Ÿ 抖动测量图案(Jitter Measurement Pattern):用于检测信号抖动(时序偏差)的专用测试图案,辅助评估链路传输稳定性;

  • Ÿ 帧错误注入(Flit Error Injection):主动向传输数据中注入错误,用于测试系统对错误的检测、处理与恢复能力,验证错误机制有效性。

事务层到数据链路层的接口(Transaction to Data Link interface)

该接口提供以下信息与机制:

  • Ÿ 待通过链路(Link)发送的字节级或多字节级数据;

本地事务层数据包(TLP)传输握手机制(Local TLP-transfer handshake mechanism):确保事务层发送的 TLP 能被数据链路层正确接收,避免数据丢失或重复;

事务层数据包边界信息(TLP boundary information):标识单个 TLP 的起始与结束位置,帮助数据链路层准确拆分连续传输的数据流,避免 TLP 拼接或截断。

  • Ÿ 链路所需的电源状态(Requested power state for the Link):由事务层发起对链路电源状态的请求(如进入低功耗状态),传递给数据链路层以协调后续状态切换。

数据链路层到事务层的接口(Data Link to Transaction interface)

该接口提供以下信息:

  • Ÿ 从 PCI Express 链路接收的字节级或多字节级数据;

  • Ÿ 接收字节对应的事务层数据包成帧信息(TLP framing information):标注接收数据属于哪个 TLP、在 TLP 中的位置等,帮助事务层正确重组 TLP;

  • Ÿ 链路的实际电源状态(Actual power state for the Link):反馈链路当前的真实电源状态(可能与事务层请求状态一致或存在差异),供事务层调整后续操作;

  • Ÿ 链路状态信息(Link status information):包括链路连接状态、错误状态、同步状态等,为事务层判断链路可用性、触发错误处理提供依据。

数据链路层到物理层的接口(Data Link to Physical interface)提供:

  • Ÿ 待通过链路(Link)发送的字节级或多字节级宽度的数据。

数据传输握手机制(Data transfer handshake mechanism):确保数据链路层发送的数据能被物理层正确接收的交互机制,避免传输冲突或数据丢失;

字节对应的事务层数据包(TLP)与数据链路层数据包(DLLP)边界信息:标识连续字节流中单个 TLP 或 DLLP 的起始与结束,帮助物理层准确区分不同类型的数据包并按规范处理。

  • Ÿ 链路所需的电源状态(Requested power state for the Link):数据链路层将从事务层接收的电源状态请求传递给物理层,以协调链路的电源状态切换。

物理层到数据链路层的接口(Physical to Data Link interface)提供:

  • Ÿ 从 PCI Express 链路接收的字节级或多字节级宽度的数据;

  • Ÿ 数据对应的 TLP 与 DLLP 成帧信息:标注接收数据属于哪个数据包(TLP 或 DLLP)、在数据包中的位置等,帮助数据链路层正确重组数据包;

  • Ÿ 物理层检测到的错误指示:包括信号完整性错误、编码错误等物理层级别的错误信息,供数据链路层触发相应的错误处理(如重传请求);

  • Ÿ 链路的实际电源状态:反馈链路当前的真实电源状态,确保数据链路层与物理层的状态同步;

  • 连接状态信息:包括链路是否建立连接、通道同步状态等,为数据链路层判断链路可用性提供依据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值