PCIe 协议概述与 TS1/TS2 的作用

各位同学,欢迎来到《TS1与TS2协议解码分析教程》。我是你们的讲师,一个在高速数字设计里摸爬滚打了十几年的工程师。咱们这门课,说白了就是要把 PCIe 链路训练中最关键的两个家伙——TS1 和 TS2 有序集,给彻底搞明白。

今天先开个头,聊聊 PCIe 协议的大致长相,以及为什么非要有链路训练这回事。我个人觉得,这部分是地基,地基不牢,后面解码 TS1/TS2 的时候,你很容易一头雾水。

为什么需要链路训练?

想象一下,你把一张显卡插到主板上。物理上,金手指确实接触上了。但是,电气上呢?

  • 时钟频率:双方该跑 2.5 GT/s 还是 5 GT/s?甚至是 16 GT/s?
  • 极性:有没有谁把差分对的 P 和 N 画反了?这种低级错误,我就在一块原型板上见过。
  • 链路宽度:插槽是 x16,但显卡可能只有 x8。怎么协商只用那 8 条通道?
  • 去加重与均衡:高速信号跑起来会衰减,两端得商量好怎么补偿。

你可以想想看,这些参数如果靠人手动去配,那是天方夜谭。所以 PCIe 协议设计了一套自动协商机制——就是链路训练。它在上电复位后,或者链路出错需要恢复时,自动把这些事情都谈妥。TS1 和 TS2 有序集,就是谈判桌上递过去的那份「提案书」。

PCIe 的体系结构

要理解 TS1/TS2,先得知道它们是在哪一层跑的。PCIe 的体系结构分三层:

层次 主要职责 和 TS1/TS2 的关系
事务层 处理读写请求、完成包等高层事务。 基本不沾边。TS1/TS2 是链路层的事。
数据链路层 保证数据可靠传输,做 CRC 校验、ACK/NAK 重传。 也不直接处理。它只负责把数据包交给物理层。
物理层 负责比特流的发送接收、串并转换、电气特性。 TS1/TS2 就住在这儿! 它们属于物理层的管理有序集。

物理层又分几块。其中有个重要的概念叫 LTSSM(链路训练和状态机)。它就是链路的交警,指挥着链路在 Detect、Polling、Configuration、L0、Recovery 这些状态之间切换。

核心观点:TS1 和 TS2 是 LTSSM 状态机渡让时使用的「信令令牌」,是物理层专属的握手消息。

TS1 与 TS2 的核心角色

简单来说,TS1 是「初次见面,请多关照」的自我介绍。TS2 是「好,基本条件达成,我们确认最终细节」的二次握手。我把它们的核心用途总结为下面这张思维导图:

TS1/TS2 有序集在链路训练中的核心角色 链路训练首要目标 传递 TS1 有序集 (Bit Lock / Symbol Lock) 协商链路宽度 (Polling -> Config) 协商数据速率 (通过 TS2 确认) 发送 TS1 有序集 -> 收到回应 -> 发送 TS2 有序集 -> 收到回应 关键点:TS1 和 TS2 都是 COM 符号引导的定长有序集 他们在物理层通过 TX 和 RX 线上传播 链路收敛后,数据才进入正常的 L0 状态传输 TLP

个人经验: 我曾在调试一个 Gen4 固态硬盘时,发现链路怎么也上不了 L0 状态。抓了协议分析仪一看,原来 TS2 里面携带的速率协商 ID 没有对齐。方向对了,数据才能跑起来!

TS1/TS2 在恢复流程中的价值

链路正常工作时,如果检测到位错误太多(通过 CRC 校验失败或者接收器溢出),LTSSM 就会进入 Recovery 状态。这时候,TS1 和 TS2 又会被派上用场。

  • Recovery.RcvrLock: 你会看到链路两端开始发送 TS1 有序集,重新寻找位锁定。
  • Recovery.Equalization: 如果速率发生了变更,这里会发送 TS2 来携带最终的协商信息。

这种情况下,TS1 扮演的是「紧急呼叫」:我们出问题了,请重新同步!而 TS2 则是「危情解除确认」:新参数已经生效,我们可以愉快地继续了。

避坑指南:别搞混 TS1 和 TS2

我曾经犯过一个错误。在分析一个 x16 链路训练失败的案例时,我盯着逻辑分析仪里的 TS1 流看了半天,始终没找到问题。后来才发现,链路宽度协商在 TS1 阶段只是「提议」,到了 TS2 阶段才是「确认」。我一直在看的 TS1 其实没问题,但在 TS2 里,有一对 lane 因为走线不等长导致信号质量差,没有回应正确的 TS2 有序集。你看,没有抓 TS2,你怎么找得到?

注意: 千万不要以为链路训练是个一蹴而就的过程。它包含多次状态迁移和重试。当你看 TS1/TS2 解码波形时,如果看到一轮又一轮的重复发送,大概率是时序或者电气特性有偏差。

小结

这一节我们盖了个帽子。PCIe 不是一根线那么简单,它内部有复杂的状态机来保证健壮性。TS1/TS2 作为物理层的信令核心,承担着链路初始化、速率协商、宽度协商以及在链路恢复阶段重新建立连接的重任。无论你是做设备研发还是故障排查,只要你遇到链路训练的问题,最终绕不开 TS1 和 TS2 的细节。

记住我说的话:没有 TS1,就没有握手;没有 TS2,就没有确认。 后面几章,我们再具体拆解它们每一个域段的含义,让你做工程师也能像做侦探一样一丝不苟!