3. Hot Reset 定义:触发条件、目的与作用范围

Hot Reset 是 PCIe 协议中一种带内(In-Band)复位机制,它不需要平台级复位信号(如 PERST#),而是通过链路双方在数据链路层发送特定的 TS1 有序集(Ordered Set) 来触发。Hot Reset 是链路重新训练(Retraining)的前置条件之一,也是协议状态机从非正常状态恢复到已知初始状态的关键手段。

3.1 Hot Reset 的触发条件

Hot Reset 的触发分为软件触发和硬件自动触发两类,具体条件如下表所示:

触发类型 触发源 具体条件 协议参考
软件触发 Root Complex(RC)或上游端口 配置空间 Bridge Control 寄存器中的 Secondary Bus Reset 位(Bit 6)被置 1 PCIe Base Spec r6.0 §7.5.3.10
硬件自动触发 下游端口(Downstream Port) 链路训练状态机(LTSSM)在 Recovery 状态中检测到对端发送的 TS1 有序集包含 Hot Reset 标志位 PCIe Base Spec r6.0 §4.2.6.3
硬件自动触发 任何端口 LTSSM 从 L2/L3 Ready 状态退出时,若链路未成功进入 L2,则自动发起 Hot Reset PCIe Base Spec r6.0 §4.2.6.4
关键点:软件触发 Hot Reset 时,上游端口会连续发送带有 Hot Reset 标志的 TS1 有序集,持续时间至少为 2 ms(协议规定的最小 T_HRESET 时间)。下游端口在连续收到 2 个以上带 Hot Reset 标志的 TS1 后,必须进入 Hot Reset 状态。

3.2 Hot Reset 的目的

Hot Reset 的核心目的是在不依赖平台复位信号的前提下,将指定下游端口及其下游所有设备的物理层和数据链路层状态机恢复到初始状态。具体包括:

  • 清除链路错误状态:将 LTSSM 从 Recovery、Hot Reset 或 Loopback 等非正常工作状态强制拉回 Detect 状态,重新开始链路训练。
  • 重置数据链路层状态:清空数据链路层的数据包序列号(Sequence Number)、ACK/NAK 重放缓冲区(Replay Buffer)以及流量控制(Flow Control)信用值。
  • 恢复链路宽度和速率:Hot Reset 后的链路重新训练会从最低速率(2.5 GT/s)和最小宽度(x1)开始协商,确保链路参数的一致性。
  • 隔离故障域:通过软件控制 Secondary Bus Reset 位,可以只复位某个下游端口及其子树,而不影响上游链路和其他设备。
设计提示:Hot Reset 不会复位设备的配置空间(Configuration Space)中的 Sticky Register(如 Device Control 寄存器中的 Max Payload Size 等),这些寄存器仅在 Fundamental Reset(PERST#)时才会被复位。因此,Hot Reset 后设备仍保留部分关键配置信息。

3.3 Hot Reset 的作用范围

Hot Reset 的作用范围遵循层级传播(Hierarchical Propagation)规则,具体如下:

  • 直接作用域:触发 Hot Reset 的端口(Port)所连接的下游链路上的所有设备。
  • 级联传播:如果下游设备是 Switch(交换机),则 Hot Reset 会通过 Switch 的每个下游端口继续向下传播,直到遇到 Endpoint(端点设备)或不支持级联的设备为止。
  • 边界限制:Hot Reset 不会向上游传播,即不会影响触发端口的上游链路或 Root Complex。

下图展示了 Hot Reset 在典型 PCIe 拓扑中的传播范围:

Hot Reset 作用范围示意图 Root Complex (RC) 上游链路(不受影响) Switch (Upstream Port) Downstream Port 1 Downstream Port 2 Downstream Port 3 Endpoint A Endpoint B Endpoint C Hot Reset 从 Downstream Port 1/2/3 向下传播至 Endpoint A/B/C,但不会向上影响 RC 和上游链路

3.4 Hot Reset 与 Fundamental Reset 的对比

为了更清晰地理解 Hot Reset 的定位,下表将其与 Fundamental Reset(PERST#)进行对比:

对比维度 Hot Reset Fundamental Reset (PERST#)
触发方式 带内 TS1 有序集(软件或硬件自动) 平台级硬件引脚 PERST# 拉低
复位范围 指定下游端口及其子树 整个 PCIe 子系统(所有设备)
Sticky Register 状态 保留 复位为默认值
链路状态恢复 从 Detect 状态重新训练 从 Detect 状态重新训练
应用场景 软件热复位、错误恢复、链路重新训练 系统上电、全局复位、电源管理
常见误区:Hot Reset 虽然会触发链路重新训练,但它不会复位设备的物理层 PLL(锁相环)和 SerDes(串行器/解串器)模拟电路。这些模拟电路仅在 Fundamental Reset 或电源掉电时才会复位。因此,Hot Reset 后的链路重新训练速度通常比冷启动更快。

3.5 Hot Reset 在 LTSSM 中的状态位置

在链路训练状态机(LTSSM)中,Hot Reset 是一个独立的状态(Hot Reset 状态),位于 Recovery 状态之后。当端口在 Recovery 状态中检测到对端发送的 Hot Reset 标志时,LTSSM 会从 Recovery 跳转到 Hot Reset 状态,并在该状态中持续发送带 Hot Reset 标志的 TS1 有序集,直到复位条件解除或超时。

下图展示了 Hot Reset 在 LTSSM 状态转换中的位置:

Hot Reset 在 LTSSM 中的状态转换 Detect Polling Configuration L0 Recovery Hot Reset 成功 成功 进入 L0 错误/重训练 Hot Reset 标志 复位完成 → 返回 Detect Hot Reset 状态是 Recovery 状态的一个特殊出口,复位完成后 LTSSM 跳回 Detect 重新开始训练

3.6 小结

Hot Reset 是 PCIe 协议中一种灵活、可控、带内的复位机制,它通过 TS1 有序集在链路层传播,能够在不影响系统其他部分的情况下,对指定子树进行复位和重新训练。理解 Hot Reset 的触发条件、作用范围及其与 Fundamental Reset 的区别,是掌握 PCIe 链路训练状态机(LTSSM)和错误恢复机制的基础。