问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

PCIe LTSSM详解:链路训练与状态管理机制

创作时间:
作者:
@小白创作中心

PCIe LTSSM详解:链路训练与状态管理机制

引用
CSDN
1.
https://m.blog.csdn.net/dongdongnihao_/article/details/145358992

链路训练和状况状态机LTSSM(Link Training and Status State Machine)是整个链路训练和运行中状态的状态转换逻辑关系图,总共有11个状态。

LTSSM:

包括检测(Detect),轮询(poling),配置(configration),L0,L0s,L1,L2,恢复(Recovery),环回(Loopback),热复位(Hot Reset),禁用(Disable);L0是链路正常运行的状态,从配置到L0(即图中的绿色箭头)即是链路训练的过程。

整个LTSSM状态很多,且多个状态可以互相的转换,初步看上去很复杂,我们简单归纳一下,分成几类:

训练状态类:包括Detect,polling,configuration。

  • Detect:当PCIe链路被复位或者通过填写某些寄存器,将进入该状态,开始侦测对端设备是否存在,PCIe如何发现链路的另外一端有设备存在呢,其实是一个充电时间侦测,发送端拉高D+和D-信号的电压到600mv,如果没有接受端存在或者接受端没上电,发送端电压很快上升到600mv,但如果有接收端存在,因为有AC电容的存在,会经过一个充电时间后才上升到600mv;
  • polling:侦测到对端设备后,进入该状态,向对端发送TS1/TS2序列,并接收对端发送过来的TS1/TS2序列,以确定Bit/Symbol Lock,lane的极性,并进行Loopback测试。
  • Configration:进入该状态将确定链路的宽度,link number,lane reversal,polarity inversion和lane-lane的延时,至此链路两端还是2.5GT/S的速度。

工作状态:L0,PCIe链路的正常工作状态;

重新训练类:Revovery,链路有异常时,可能需要重新训练,会进入Recovery,从L0s,L1返回到L0,也需要先进入到Recovery。

  • Recvery:PCIe链路需要重新协商链路状态时,进入该状态;

电源管理状态类:L0s,L1,L2,如果设备进入了低功耗如D1/D2等,链路则相应进入L1,L2状态;

  • L0s,L1,L2都是低功耗状态,L0s功耗最高,L2功耗最低。

ASPM类:L0s和L1,ASPM即活动电源管理,负责链路的低功耗状态,如IDLE状态;

其他类:Loopback,Hot Reset,Disabled,环路通常用作链路端口的自检,Hot Reset则是由带内发起的复位;

  • Disable:系统软件可以进入此状态,对端设备拔出也进入此状态;
  • Loopback:进入该状态,接收端口的数据被转发到发送端口,以利于测试用途;
  • Hot reset:系统启动该状态,先进入Recovery状态,在进入Hot reset状态,链路重新初始化

需要注意的是:在从Detect到L0之前,链路肯定是link down的,其中configuration可能是UP,也可能是down,在L0之后,L1,L2,L0s,recovery状态下链路均是Link up的,特殊的几个模式:Loopback,Hot Reset和disable则是linkdown的,up/down在图中用绿色/黑色的椭圆外形表示;
在一致性测试中,进行测试的原理是使设备进入Polling状态下的polling Cmpliance状态,该状态基本是一个故障状态,PCIe发送端会不发送测试pattern出来,从而可以进行眼图测试;

关于TS1,TS2的详细解释有助于理解链路的link up过程:

TS1 和 TS2 分别在什么状态下发送的

在 PCIe (Peripheral Component Interconnect Express) 链路训练过程中,TS1 (Training Sequence 1) 和 TS2 (Training Sequence 2) 训练序列的发送与链路训练状态机(LTSSM, Link Training and Status State Machine)的状态密切相关。以下是 TS1 和 TS2 在不同状态下的发送规则:

1. Detect 状态

行为

  • EP 和 RC 检测物理链路是否存在。
  • 通过发送 Electrical Idle 信号来检测对端设备。

TS1/TS2 发送

  • 在 Detect 状态下,不发送 TS1 或 TS2。

2. Polling 状态

行为

  • EP 和 RC 开始链路训练,协商链路参数(如速率、宽度等)。
  • 双方通过发送 TS1 序列来交换信息。

TS1/TS2 发送

  • TS1:在 Polling 状态下,EP 和 RC 持续发送 TS1 序列。
  • TS2:在 Polling 状态下,不发送 TS2。

退出条件

  • 当双方接收到足够数量的 TS1 序列并确认链路参数后,进入 Configuration 状态。

3. Configuration 状态

行为

  • EP 和 RC 确认链路参数(如 Lane 映射、极性、速率等)。
  • 完成 Lane 的同步和对齐。

TS1/TS2 发送

  • TS1:在 Configuration 状态的早期阶段(Configuration.LanenumWait 和 Configuration.LanenumAccept),EP 和 RC 继续发送 TS1 序列。
  • TS2:在 Configuration 状态的后期阶段(Configuration.Complete),EP 和 RC 开始发送 TS2 序列,以确认链路参数。

退出条件

  • 当双方接收到足够数量的 TS2 序列并确认链路参数后,进入 L0 状态(正常工作状态)。

4. Recovery 状态

行为

  • 当链路需要重新训练时(例如速率切换或错误恢复),进入 Recovery 状态。
  • 重新协商链路参数。

TS1/TS2 发送

  • TS1:在 Recovery 状态下,EP 和 RC 发送 TS1 序列,重新协商链路参数。
  • TS2:在 Recovery 状态下,EP 和 RC 也可能发送 TS2 序列,以确认重新协商的参数。

退出条件

  • 当链路重新训练成功后,返回 L0 状态。

5. L0 状态

行为

  • 链路正常工作状态,EP 和 RC 可以进行数据传输。

TS1/TS2 发送

  • 在 L0 状态下,不发送 TS1 或 TS2。
  • 如果需要重新训练链路(例如速率切换或错误恢复),会进入 Recovery 状态。

6. 其他状态

L0s/L1/L2 状态

  • 这些是低功耗状态,链路处于休眠或关闭状态。
  • 在退出低功耗状态时,可能会发送 TS1 序列以重新同步链路。

Hot Reset 状态

  • 在热复位过程中,EP 和 RC 会发送带有 Hot Reset 标志的 TS1 序列。

7. 总结

TS1

  • 主要在 Polling 状态和 Configuration 状态的早期阶段发送。
  • 用于链路参数的初始协商和同步。
  • 在 Recovery 状态中也会发送,用于重新训练链路。

TS2

  • 主要在 Configuration 状态的后期阶段发送。
  • 用于确认链路参数。
  • 在 Recovery 状态中也可能发送,用于确认重新协商的参数。

通过 TS1 和 TS2 的发送和接收,PCIe 设备能够完成链路的初始化、参数协商和错误恢复,最终建立稳定的通信链路。

TS1 和 TS2 的通用结构

TS1 和 TS2 训练序列都是 16 字节的固定格式数据包,包含以下字段:

  1. Symbol 0: COM (Comma Symbol)
  • 用于标识训练序列的开始。
  • 固定值为 K28.5(10b 编码为 1100000101)。
  1. Symbol 1: Lane Number
  • 表示当前 Lane 的编号。
  • 在 Polling 和 Configuration 状态中,Lane Number 可能被设置为 PAD(未分配)。
  1. Symbol 2: Link Number
  • 表示当前 Link 的编号。
  • 在 Polling 和 Configuration 状态中,Link Number 可能被设置为 PAD。
  1. Symbol 3: N_FTS (Number of Fast Training Sequences)
  • 表示从 L0s 低功耗状态恢复到 L0 状态所需的 TS1 序列数量。
  • 用于电源管理。
  1. Symbol 4: Data Rate Identifier
  • 表示支持的链路速率。
  • 例如:
  • 0001:2.5 GT/s(Gen1)
  • 0010:5.0 GT/s(Gen2)
  • 0100:8.0 GT/s(Gen3)
  • 1000:16.0 GT/s(Gen4)
  • EP 和 RC 通过该字段协商链路速率。
  1. Symbol 5: Training Control
  • 包含控制信息,如:
  • Hot Reset:指示是否发起热复位。
  • Disable Link:指示是否禁用链路。
  • Loopback:指示是否进入环回模式。
  1. Symbol 6-13: Lane and Link Specific Information
  • 包含 Lane 和 Link 的特定信息,如:
  • Lane 极性(Polarity)。
  • Lane 反转(Lane Reversal)。
  • Lane 映射(Lane Mapping)。
  1. Symbol 14: CRC (Cyclic Redundancy Check)
  • 用于错误检测的 CRC 校验值。
  1. Symbol 15: End of Training Sequence (EOS)
  • 标识训练序列的结束。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号