Pcie--轮询 (Polling) 状态

第1部分:Polling状态总览和子状态 Active (Polling State Overview and Substate Active)

这个图片展示了LTSSM(链路训练和状态状态机)从Detect状态进入Polling状态的流程,并详细描述了'Polling.Active'子状态。

  • 进入条件: 从Detect状态,在所有通道(Lanes)上检测到 Rx 终端。

  • Polling.Active: 此子状态的目标是让接收器在TS1 Ordered Sets(TS1序列)上进行训练,并检查通道间偏斜(Lane-to-Lane Skew)。

  • 主要操作:

    • 发送器(TX):在所有通道上发送 TS1 序列。

    • 接收器(RX):接收 TS1 序列,对齐数据,并检查偏斜。

    • 定时器: 启动 24ms 定时器。如果未在 24ms 内收到 1024 个连续 TS1,则超时。

  • 退出条件: 接收到 1024 个连续 TS1 且偏斜可接受,进入 'Polling.Configuration' 子状态。

第2部分:成功配置和链路宽度协商 (Successful Configuration and Link Width Negotiation)

这个图片专注于成功场景,展示了在'Polling.Configuration'子状态下,链路如何成功进行配置和链路宽度协商。

  • 内部流程: 详细描述了这个子状态的操作,包括 TX 发送 TS2 序列,和 RX 接收 TS2 序列、对齐数据、验证 TS2 参数,以及进行链路宽度和通道配置的协商。

  • 示例场景: 一个大的绿色箭头从'Polling.Configuration'引出,标记为:'Negotiating x8 to x4 Link' (场景:从 x8 协商到 x4 链路)。这展示了一个 device 从 8 Lanes 协商到 4 Lanes 的过程。

  • 成功退出: 标记为:'Link Parameters negotiated and accepted' (链路参数已协商并接受),进入 'Detect State' (进入 Detect 状态) 或 'Enter L0 State' (进入 L0 状态),并带有 'Configuring Link... Wait for next state' (正在配置链路... 等待进入下一个状态) 的描述。

  • 信号图: 简化的信号图展示了 TS2 序列的交换和对齐。

第3部分:超时和链路宽度协商失败 (Timeouts and Link Width Negotiation Failures)

这个图片展示了Polling状态下的两个主要失败场景:超时和链路宽度协商失败,导致链路进入Detect或Disabled状态。

  • 内部流程: 详细展示了'Polling.Active' and 'Polling.Configuration'子状态如何失败。

  • Polling.Active 失败: 标记为红色 'X',描述为:'Timeout (24ms), 1024 TS1s NO received' (超时 (24ms),未收到 1024 个 TS1)。这导致进入 'Enter Detect State' (进入 Detect 状态),描述为:'Unable to Train... Return to Detect' (无法训练... 返回 Detect)。

  • Polling.Configuration 失败: 标记为红色 'X',描述为:'Timeout (24ms), NO TS2 parameters negotiated' (超时 (24ms),未协商出 TS2 参数)。这导致进入 'Enter Disabled State' (进入 Disabled 状态),描述为:'Configuration Failure... Disable the Link' (配置失败... 禁用链路)。

  • 信号图: 简化的信号图展示了 24ms 超时的情况。

Another topic:

在 PCI Express (PCIe) 的链路训练和状态机 (LTSSM) 中,轮询 (Polling) 状态是链路初始化过程中的关键第二步。它紧接在“检测 (Detect)”状态之后,其核心目的是让链路两端的设备(例如根复体 Root Complex 和端点 Endpoint)在电气层面实现同步,并为后续的链路宽度和速度协商奠定基础。

可以把 Polling 状态想象成两个从未谋面的人在正式交谈前,互相招手、确认对方能听到自己说话并调整说话口音的过程。

以下是对 PCIe Polling 状态的详细介绍:

1. Polling 状态的核心目的

Polling 状态的主要任务不是传输实际数据,而是进行物理层(PHY)的电气和符号同步。具体包括:

  • 位同步 (Bit Lock): 接收器调整其内部时钟,以便在正确的时间点采样接收到的串行数据位流。

  • 符号同步 (Symbol Lock): 接收器在位流中识别出 8b/10b 或 128b/130b 编码的符号边界(例如识别出 COM 逗号字符),从而能正确地将位流组合成字节。

  • 信号质量调整( equalization,仅限 Gen3+): 在某些情况下(特别是从 Recovery 状态进入时),Polling 可能会包含初始的信号均衡调整,以应对高速传输带来的信号衰减。

2. Polling 状态的子状态 (Sub-states)

Polling 状态并不是单一的,它包含几个细分的子状态,按顺序执行特定的任务。在 Gen1/Gen2 速度下,流程相对简单;Gen3 及更高速度引入了 128b/130b 编码,流程有所不同。

核心子状态(以常见流程为例):
子状态名称 (常见英文)中文描述核心任务
Polling.Active轮询·激活链路两端开始发送 TS1 有序集。这是最主要的同步阶段。设备会在此状态等待,直到接收到足够数量的 TS1 或 TS2。
Polling.Compliance轮询·合规性(特殊 test 状态)。用于电气测试。设备会发送特定的测试模式(Compliance Pattern)供仪器测量信号质量。正常链路建立不会进入此状态。
Polling.Configuration轮询·配置(特殊 test 状态)。在早期 spec 中用于特定的软件配置模式,现代 spec 中其功能通常被 Configuration 状态取代。

3. Polling 状态的工作流程 (以正常建立链接为例)

当 LTSSM 从 Detect 状态转换到 Polling 时,它默认使用 Gen1 速度 (2.5 GT/s)8b/10b 编码开始工作,无论设备最高支持多少速度。

  1. 进入 Polling.Active:

    • LTSSM 的 Detect 状态确认两端在电气上已连接后,会转换到 Polling.Active 子状态。

  2. 发送训练序列 (TS1):

    • 处于 Polling.Active 的设备会在所有检测到连接的通道上连续发送 TS1 有序集 (Training Sequence 1 Ordered Sets)

    • TS1 包含 COM 字符(用于符号同步)以及设备的初步能力信息。

  3. 接收与同步:

    • 设备的接收器利用接收到的 TS1 位流来实现位同步

    • 接收器找到 TS1 中的 COM 字符来实现符号同步

    • 设备必须在所有已激活的通道上成功接收到特定数量的 TS1 或 TS2 有序集。

  4. 退出 Polling:

    • 转换到 Configuration (配置) 状态: 一旦设备成功同步,并且(通常)接收到 8 个连续的 TS1 或 TS2,同时自身至少发送了 1024 个 TS1,LTSSM 就会转换到 Configuration 状态。在 Configuration 状态中,它们会协商最终的链路宽度和速度。

    • 超时回 Detect: 如果在 Polling 状态(通常在 Polling.Active)停留时间过长(通常为 24ms),且未达成退出条件,LTSSM 将视作同步失败,转换回 Detect 状态重新开始。这通常是由于信号质量差、时钟不同步或对方设备无响应造成的。

4. 训练有序集 (Training Ordered Sets) 的作用

在 Polling 状态中,TS1TS2 训练有序集是唯一的通信语言:

  • TS1 (有序集 1): 包含 COM 字符。在 Polling.Active 阶段大量发送,用于位和符号同步。它告诉对方:“我在尝试和你建立连接,这是我的同步信号。”

  • TS2 (有序集 2): 结构与 TS1 类似。通常在 Configuration 或 Recovery 状态中用于确认 TS1 的协商结果。但在 Polling 状态中,接收到 TS2 也表明对方已同步成功。

5. Polling 状态总结

Polling 是 PCIe 链路建立过程中从电气连接到数字通信的桥梁。它不解决“我们要用多宽的通道,多快的速度”,而是解决最基础的**“我们能不能看懂对方发送的位和字节”**。只有在 Polling 状态实现了稳定、电气层面的同步后,链路才能进入下一个 Configuration 状态去完成最终的性能协商。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值