4. L1SS 关键参数:Common Mode保持、PLL关闭、Reference Clock关闭、Rx Detect等参数对功耗和延迟的影响

L1 Substates(L1SS)的功耗优化并非简单地“进入更深睡眠”,而是通过一系列精细的硬件参数控制,在功耗节省与链路恢复延迟之间进行权衡。本章将深入剖析 Common Mode保持、PLL关闭、Reference Clock关闭 以及 Rx Detect 这四个核心参数,揭示它们如何影响功耗和退出延迟。

核心原则: 每个参数的“关闭”或“保持”状态,都对应着一次功耗的降低,但同时也增加了链路重新激活所需的时间。配置的关键在于找到满足系统延迟要求的“最省电”组合。
L1SS 关键参数对功耗与延迟的影响总览 L1 Substates Common Mode 保持 PLL 关闭 Refclk 关闭 Rx Detect 影响维度 功耗节省 ↑ ⇔ 退出延迟 ↑ ⇔ 链路恢复复杂度 ↑

4.1 Common Mode 保持(Common Mode Keep)

在 L1 状态下,链路进入电气空闲。Common Mode 保持参数决定了发送端(Tx)是否维持其输出驱动器的共模电压。

  • 保持(Keep): Tx 维持共模电压,接收端(Rx)的耦合电容无需重新充电。退出 L1 时,链路可以快速建立电气连接,延迟极低(通常 < 1μs)。但 Tx 的模拟前端仍需消耗少量静态功耗。
  • 不保持(No Keep): Tx 关闭共模电压,进一步降低静态功耗。退出时,Rx 需要重新检测共模电压并稳定,增加了退出延迟(通常增加 1-2μs)。
配置功耗节省退出延迟影响适用场景
Common Mode Keep低低(~0.5μs)延迟敏感型,如 NVMe SSD
Common Mode No Keep中中(~2μs)允许稍长延迟,追求更低功耗
配置建议: 对于大多数客户端设备,建议保持 Common Mode 开启,以换取更快的响应速度。仅在电池供电且对延迟不敏感的物联网设备中考虑关闭。

4.2 PLL 关闭(PLL Off)

锁相环(PLL)为高速 SerDes 提供稳定的时钟。PLL 关闭是 L1SS 中功耗节省最显著的手段之一。

  • PLL On: PLL 持续锁定,消耗大量模拟功耗(通常为 mW 级)。退出时,时钟立即可用,延迟极短。
  • PLL Off: PLL 完全断电,功耗降至接近零。退出时,PLL 需要重新锁定,这通常需要 10μs 到 100μs 的时间,具体取决于 PLL 设计。
PLL 状态对比:功耗 vs 退出延迟 PLL On 功耗:高(~5mW) 退出延迟:极低(< 1μs) PLL Off 功耗:极低(~0mW) 退出延迟:高(10-100μs) 功耗↓ 延迟↑
关键权衡: PLL Off 是 L1SS 中最大的功耗节省来源,但也是最大的延迟贡献者。如果系统无法容忍 10μs 以上的退出延迟(例如,某些实时数据流),则必须保持 PLL On。

4.3 Reference Clock 关闭(Refclk Off)

参考时钟(Refclk)是 PLL 的基准源。关闭 Refclk 可以进一步节省时钟树上的功耗。

  • Refclk On: 时钟缓冲器和分配网络持续工作,消耗一定功耗。
  • Refclk Off: 完全切断参考时钟。退出时,不仅 PLL 需要重新锁定,Refclk 本身也需要重新稳定,这通常需要额外的 几百纳秒到几微秒。

通常,Refclk Off 与 PLL Off 配合使用,以实现最大程度的功耗节省。但需要注意的是,某些平台设计可能要求 Refclk 保持开启以支持其他功能(如带外管理)。

4.4 Rx Detect

Rx Detect 参数控制接收端是否定期检测链路上是否有有效的终端(Termination)存在。这在 L1SS 中用于确保链路完整性,但也会消耗功耗。

  • Rx Detect 开启: Rx 定期发送检测信号,确认对端设备仍在。这增加了功耗,但可以快速发现链路断开或热插拔事件。
  • Rx Detect 关闭: 停止检测,节省功耗。退出时,Rx 需要重新进行初始检测,增加了延迟。
参数功耗节省潜力退出延迟增加典型配置值
Common Mode No Keep~0.5mW~1-2μs0 (Keep) / 1 (No Keep)
PLL Off~5mW~10-100μs0 (On) / 1 (Off)
Refclk Off~1mW~1-5μs0 (On) / 1 (Off)
Rx Detect Off~0.2mW~0.5-2μs0 (On) / 1 (Off)
综合配置策略: 在实际产品中,这些参数通常通过 L1 Substates Control 1 和 L1 Substates Control 2 寄存器进行配置。建议按照以下优先级进行权衡:
1. 首先确定系统允许的最大退出延迟(例如,10μs)。
2. 如果延迟预算紧张,优先保持 PLL On 和 Common Mode Keep。
3. 如果延迟预算充裕,可以逐步关闭 PLL、Refclk 和 Common Mode,以最大化功耗节省。
4. Rx Detect 通常建议保持开启,除非对功耗有极致要求且链路环境非常稳定。
L1SS 参数配置决策流程 开始配置 L1SS 延迟预算 > 10μs? 是 否 深度睡眠模式 PLL Off, Refclk Off 快速唤醒模式 PLL On, Common Mode Keep 写入寄存器生效

4.5 综合影响与寄存器配置示例

所有参数最终通过 PCIe 配置空间中的寄存器进行控制。以下是一个典型的寄存器位定义示例:

// L1 Substates Control 1 Register (Offset 0x204)
// Bit 0: Common Mode Keep (1 = Keep, 0 = No Keep)
// Bit 1: PLL Off (1 = Off, 0 = On)
// Bit 2: Refclk Off (1 = Off, 0 = On)
// Bit 3: Rx Detect (1 = On, 0 = Off)

// 示例:配置为深度睡眠模式(PLL Off, Refclk Off, No Keep, Rx Detect Off)
// 二进制: 1110 = 0xE
// 注意:此配置退出延迟可能超过 50μs
#define L1SS_DEEP_SLEEP  0xE

// 示例:配置为快速唤醒模式(PLL On, Refclk On, Keep, Rx Detect On)
// 二进制: 1001 = 0x9
// 退出延迟通常 < 2μs
#define L1SS_FAST_WAKE   0x9

// 写入配置空间
pci_write_config_word(dev, 0x204, L1SS_FAST_WAKE);
平台验证: 上述寄存器地址和位定义可能因 PCIe IP 供应商(如 Synopsys、Cadence)和具体芯片实现而异。在实际开发中,务必参考芯片的 Datasheet 或 Reference Manual 进行配置,并在硬件上通过示波器测量退出延迟来验证配置效果。