请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】
文章目录
- Overview
- PHY Training
- PHY Link Up
- 区别与联系
- 实际案例分析
Overview
本文将介绍 PCIe PHY 中的 trainning 与 link up 的区别与联系。
在 PCIe PHY (Physical Layer) 中,Training 和 Link Up 是两个密切相关但各自独立的阶段,它们在建立和管理 PCIe 通信链路中扮演不同角色。以下是对两者的详细解释及其关系,并附带举例说明。
PHY Training
Training 是 PCIe 链路初始化过程中用于校准和参数协商的关键阶段,其目标是确保双方设备在传输物理信号时的可靠性和高效性。该过程主要发生在链路建立的早期阶段,包括以下内容:
-
均衡训练 (Equalization Training):
用于调整收发器的信号均衡参数(例如前馈均衡 (FFE)、决策反馈均衡 (DFE) 等),以适应物理信号传输的损耗和噪声特性。此过程在较高速率(例如 PCIe Gen3/4/5)时尤为重要。 -
协商速率 (Speed Negotiation):
双方协商链路支持的最大数据速率(例如 2.5 GT/s、8 GT/s 或更高)。如果高速传输失败,设备可能会回退到较低速率。 -
Lane Configuration:
确定链接使用的 Lane 数(例如 x1、x4、x16)和拓扑连接状况。 -
同步检测:
确保链路双方正确识别数据流,并校准时钟。
训练阶段并未传输实际的用户数据,而是使用专门的控制和测试模式(例如 TS1、TS2 信号),以确保链路对接正确并优化参数。
PHY Link Up
Link Up 是指 PCIe 链路在训练完成后,成功建立物理层和数据链路层之间的通信并进入正常工作状态。它标志着设备准备好进行实际的数据传输。
-
Link Training Status State Machine (LTSSM):
PCIe 标准定义了 LTSSM 状态机,其状态会从Detect
、Polling
、Configuration
等阶段逐步演进到最终的L0
(正常操作模式)。只有在 Training 成功后才能进入L0
状态。 -
数据链路层初始化:
当物理层链路建立后,数据链路层需要进行一些额外的初始化,例如序列号对齐、错误检测和流量控制的设置。 -
实际通信:
一旦链路进入L0
,设备间即可通过该链路传输 TLP(Transaction Layer Packet) 和 DLLP(Data Link Layer Packet),完成设备间的实际数据交互。
区别与联系
区别:
属性 | Training | Link Up |
---|---|---|
阶段 | 初始化链路阶段(链路建立之前) | 链路已经建立(可正常通信) |
目的 | 校准信号、速率和 Lane,确保链路稳定性 | 进入数据传输模式,允许设备进行正常数据交互 |
使用的数据 | TS1/TS2 信号用于均衡、配置 | 实际传输 TLP 和 DLLP |
角色 | 物理层优化与配置 | 数据链路层与事务层完成实际功能 |
联系:
-
Training 是 Link Up 的前提条件 :只有完成 Training,确保物理链路可用性后,才可能进入 Link Up 状态。
-
共同点 :两者均涉及链路的校准与状态管理,且都依赖 LTSSM 的状态转换。
-
失败结果 :如果 Training 失败,链路无法进入 Link Up;若 Link Up 失败,则无法完成高层数据传输。
实际案例分析
以 PCIe Gen4 x4 链路为例:
- Training 阶段:
-
初始化时,主机(Root Complex)和设备(Endpoint)发出 TS1 和 TS2 信号协商链路。
-
如果 Gen4(16 GT/s)的信号质量较差,均衡训练会尝试优化收发器的信号参数。
-
若 Gen4 训练失败,设备可能回退至 Gen3(8 GT/s)速率。
- Link Up 阶段:
-
Training 完成后,LTSSM 进入
L0
状态。 -
主机通过数据链路层发送 DLLP,检查链路健康。
-
如果确认正常,系统启动数据事务。例如,主机向 PCIe SSD 发送写命令或读取数据。
通过上述过程可以看出,Training 为链路的稳定奠定基础,Link Up 则是实际的工作阶段。