时间:2026-08-08 来源:FPGA_UCY 关于我们 0
PCIe( Peripheral Component Interconnect Express ) 是一种 高速串行点对点 通信协议, 划分为八个相互连接的模块:
① 系统角色 : 设备在系统的角色
② 协议分层: 一个请求如何变成bit
③ 配置与枚举: 系统发现并管理设备
④ 链路训练: 链路如何从上电走到L0
⑤ 速率与编码: 带宽怎么翻倍
⑥ SI与通道: 连上跑不稳
⑦ 功耗与可靠性: 省电发现错误并恢复
⑧ 测试与Debug: 快速定位问题
![]()
一、系统角色与拓扑:PCIe里“谁在和谁通信”
PCIe采用点到点连接。每一条Link连接两个Port,一个方向发送、另一个方向接收,天然支持全双工。系统里最常见的角色包括 Root Complex 、 Root Port 、 Switch 、 Endpoint 、 Bridge 和 Retimer 。
![]()
① RC : PCIe层级的起点,发起和管理事务
②RP : RC与下游PCIe设备的接口
③EP : 最终的PCIe设备
④ Retimer : 解决高损耗通道的信号重建
⑤ Switch :将一条链路扩展为多端口
⑥ Bridge : 将 PCIe连接到其他总线
1. Root Complex与Root Port
Root Complex 通常位于 CPU或SoC内部 ,是处理器、内存系统与PCIe域之间的桥梁。 Root Port 可以理解为 RC向外提供的PCIe端口 。操作系统从RC开始枚举下游设备,读取配置空间,分配Bus Number、Memory地址和中断资源。
2. Endpoint
Endpoint 是 最终提供功能的设备 ,例如GPU、NVMe SSD、网卡、加速卡、采集卡或FPGA。Endpoint可以发起或响应事务,但它不是系统枚举的起点。很多初学者把“设备能发包”等同于“设备是Root Complex”,这是错误的。是否能发起请求,与它在PCIe树中的角色不是一回事。
3. Switch
PCIe Switch 用于 扩展端口数量 。每个Switch端口都具有完整的PCIe协议栈,可以接收、解析并转发TLP。它类似网络交换机,但路由依据不是MAC地址,而是PCIe定义的地址、ID规则。
4. Retimer
Retimer是高速PCIe系统中最容易与Switch混淆的器件。Retimer终止一侧的物理链路,恢复时钟和数据,再在另一侧重新发送。它主要解决高损耗通道的信号重建问题,不处理Transaction Layer和Data Link Layer事务。 Switch “ 看得懂包并决定往哪里转发 ”, Retimer “ 看不懂业务,只负责把物理信号重新变干净 ”。
2、三层协议栈:一个请求如何变成线上信号
PCIe三层协议栈通常分为 Transaction Layer 、 Data Link Layer 和 Physical Layer 。
![]()
1. Transaction Layer:描述“要做什么”
事务层 负责 产生和解析TLP ,也就是 Transaction Layer Packet 。软件或硬件发起一次请求时,事物层会把 操作类型、地址、长度、Requester ID、Tag、属性等信息封装进TLP 。
从功能角度看,TLP可以分为请求与完成。Memory Write通常是Posted Request,发送端发出去后不等待Completion;Memory Read属于Non-Posted Request,接收端必须返回Completion with Data。是否需要完成包,会影响带宽、延迟、流控和超时行为。
2. Data Link Layer:保证相邻两端可靠传输
数据链路层 关心“ 数据有没有可靠地送到相邻端口 ”。在传统Non-FLIT模式下,它会为TLP增加序列号和LCRC,并通过ACK/NAK DLLP确认接收结果;在PCIe 6.0/7.0的FLIT模式下,可靠性保护围绕固定长度FLIT、CRC、FEC与重放机制重新组织。
这意味着PCIe链路上出现少量可恢复错误时,软件不一定立刻看到业务失败,因为Data Link Layer可能已经完成重放。但Replay数量增加会吞噬有效带宽,也可能成为通道边缘化的重要证据。因此,“业务还能跑”不等于“链路健康”。
3. Physical Layer:把包可靠送上差分线
物理层 包含逻辑物理层和电气物理层。它负责链路训练、Lane宽度协商、速率切换、编码、加扰、块同步、均衡、串并转换和差分发送接收。我们常说的LTSSM、TS1/TS2、Preset、CTLE、DFE、CDR、眼图和抖动都属于物理层范围。