news 2026/2/28 4:22:19

【每日一题】一文讲通PCIe链路L1.0/L1.1/L1.2低功耗概念

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【每日一题】一文讲通PCIe链路L1.0/L1.1/L1.2低功耗概念

我们今天简单讲讲一下PCIe 链路的L1低功耗状态,包括L1.0, L1.1, L1.2,讲解一下当初为什么引入这些,在PCIe哪个代际引入的?以及这三者的主要区别包括功耗状态。我们这个公众号的很多人都是从事SSD开发/验证/测试的,那么我们经常听说的L1.2低功耗目前的应用主要是NVMe SSD吗?还包括其它一些我们常见的消费类的应用场景吗?

最后,我们也会从底层物理层和协议层角度简单讲解一下,一个NVMe SSD如何和CPU之间没有流量交互的情况下,是如何一步一步地进入低功耗,然后如果CPU和SSD在需要沟通的情况下,包括CPU主动发起、以及SSD主动需要发起沟通两种情况下,一步一步地如何退出低功耗的。

后面,我们看有时间的话,将专门拍摄几个笔记本电脑下面PCIe M.2 SSD典型的进、出低功耗L1.2的视频,这样大家可以有非常直观针对该概念和技术的理解。同时,我们也打算拍个视频,看一下一颗M.2 SSD在Windows 10/11的L1.2低功耗下面,跟在Linux下面(没有低功耗,或者陷入L0s下面)在读写数据时候内核的差别以及效率对比。这些都将大大加深各位对于低功耗、非低功耗、OS内核针对SSD的传输有效性的理解。

针对下面我们今天涉及的内容,先上一张图。后续我们将通过视频讲解通过SerialTek PCIe协议分析仪抓取的真实L1.2的流量进行讲解。


1) L1 低功耗家族:L1.0 / L1.1 / L1.2 到底是什么

L1.0(通常就叫 L1)

  • 定位:ASPM(Active State Power Management)里的“深一点”的低功耗状态(比 L0s 深)。

  • 核心动作:链路进入Electrical Idle(电气空闲),不再传输高速信号;但参考时钟/PLL 不一定关闭(是否关闭取决于后续的 Clock Power Management / L1 Substates 能力与平台策略)。

  • 代价:退出到 L0 需要一定时间(L1 Exit Latency)。PCI-SIG FAQ 也强调:Link Capabilities 里报的 L1 Exit Latency 是L1/L1.0→L0的延迟,不包含 L1.1/L1.2 额外延迟。

L1.1 / L1.2(统称 L1 Substates)

  • 定位:对 L1 的进一步细分(更省电,但通常更慢)。

  • 来源:L1 Substates 是 PCI-SIG 通过 ECN (engineering change notice)引入的增强;业内也明确提到新增 “pseudo sub-states” L1.1 与 L1.2,用于关闭 PHY 里更多模拟电路。

  • 关键外部信号:大量平台用CLKREQ#(Clock Request)来实现参考时钟的请求/撤销;很多资料直接把 L1.2 的退出时序描述为“CLKREQ# 触发 → REFCLK 恢复”。REFCLK 概念不清楚的话可以参考Saniffer公众号之前发的文章:PCIe 里的 RefClk (Reference Clock) 到底是干什么的?以及PCIe 里的 RefClk (Reference Clock) 到底是干什么的(二)?


2) 这三者为什么被引入?各自解决什么矛盾

为什么要有 L1(L1.0)

PCIe 链路在“无数据时”也会消耗动态功耗(SerDes、均衡、CDR、PLL 等)。L1 的初衷就是让链路在空闲期进入更低功耗,而不是一直保持全速模拟电路活跃(ASPM 的总体目标就是“链路越不活跃,功耗越低”)。

为什么还要 L1.1 / L1.2

L1.0 省电仍然不够(尤其移动/客户端、SSD 这类对毫瓦级差异敏感的设备)。L1 Substates 的目标是:

  • 让 PHY 里更多“吃电”的模拟模块可以关掉;

  • 在不完全断链的前提下,把“空闲功耗”进一步压下去。

为什么 L1.2 特别重要

L1.2 往往与参考时钟可被移除(Refclk Off)强绑定,因此功耗能下得更狠;但退出时延也更显著(具体值因平台而异,可能是几十 ms、也可能更长,测量方式常见就是“CLKREQ# → REFCLK valid”)。


3) L1.0/L1.1/L1.2引入的“时间/代际”

  • L1(L1.0):属于 PCIe 早期 ASPM 定义的一部分(这个能在几乎所有 PCIe 代际里看到 L0s/L1 这种 ASPM 术语)。

  • L1.1 / L1.2(L1 Substates):通过 PCI-SIG 的L1 Substates ECN引入(后续被合入更高版本 base spec 的修订中)。

小结:“L1.1/L1.2 属于 PCI-SIG 后续对 L1 的增强(L1 Substates),在 PC/移动平台与 NVMe SSD 时代被大规模启用”。


4) 三者主要区别(功耗形态/退出代价)

下面这张表抓住“工程上最关键的差异”:电气是否 Idle、PLL/Refclk 是否可关、退出路径复杂度

状态逻辑链路电气层Refclk/PLL典型特征退出到 L0
L1.0Link 仍存在Electrical Idle通常保持(或可配合 CPM)“进入 L1 省电,但不一定关时钟”相对较快;Link Capabilities 报的 L1 Exit Latency 指的是 L1/L1.0→L0
L1.1Link 仍存在Electrical Idle关更多 PHY 模拟电路,但一般保持一定偏置/共模比 L1.0 更省电,延迟更大需要更多恢复步骤(但通常比 L1.2 快)
L1.2Link 仍存在Electrical Idle可到 Refclk Off / PLL off(依平台与能力)省电最狠,退出最慢;常由 CLKREQ#/Refclk 恢复触发测量先恢复时钟/PLL,再回到 L0(可能几十 ms 量级或更高)

注:不同厂商 SSD 白皮书里会给出“功耗 vs 延迟”的量级示例(比如把 L1.2 与其它状态做对比)。


5) 这些链路低功耗只用在 NVMe SSD 吗?还有哪些场景

NVMe SSD 的确是L1.2 最典型、最常被讨论的应用(因为客户端 SSD 空闲时间长、功耗敏感)。但并不止于此:

  • Wi-Fi/BT、以太网 NIC、USB/Thunderbolt 控制器、读卡器等外设控制器:很多 PCIe 外设都支持 L1.2(我们甚至能在一些以太网芯片 datasheet 里看到 “ASPM L1.2 Supported” 等表述)。

  • 移动/笔电平台的各类 PCIe 端点:只要是“长时间 idle、偶尔突发传输”的设备,都很适合深 L1。

  • 部分低功耗加速器/桥接芯片/嵌入式模块:同理。


6) 从物理层 + 协议层视角:NVMe SSD 如何“无包交互”进入 L1.x

先给一个关键前提(很容易被忽略):

6.1 “没有 packet 交互”并不等于“什么都不发生”

进入 L1.x 往往是链路层/物理层的自动管理(ASPM):当双方都判断“链路空闲、无待发数据、无未完成事务”,会触发进入低功耗。它不需要 OS 每次发指令,但需要:

  • 设备/Root Port 支持 ASPM/L1 Substates;

  • BIOS/OS 把相应策略打开;

  • 满足进入条件(无 pending TLP/DLLP、队列空闲等)。

6.2 典型进入路径(抽象成“步骤”)

以下是我们经常在协议分析/平台调试(例如SerialTek PCIe协议分析仪)时最常用的“可观察步骤”(不同实现细节会略有差异,但逻辑一致):

进入 L1.0(L1)

  1. Traffic Idle:没有新的 TLP/DLLP,链路空闲

  2. ASPM 条件满足:双方允许进入 L1(策略/能力 OK)

  3. 进入 Electrical Idle:Tx 进入电气 Idle,链路不再传高速符号

  4. LTSSM 显示到 L1(很多工具会显示 L1 或 L1 Idle)

从 L1.0 进一步到 L1.1 / L1.2

  1. 若启用L1 Substates:PHY 继续关闭更多模拟模块

  2. 若进入L1.2且平台允许Refclk Off:参考时钟可能被移除;此时SerialTek PCIe协议分析仪往往会出现“时钟丢失/无法锁定”的现象(这与Saniffer之前写的文章和拍摄视频解释的 L1.2 trace 解码观察完全一致)


7) “需要沟通时”如何退出:CPU 发起 vs SSD 发起

这里最重要的一点是:退出低功耗需要“唤醒链路”,而唤醒链路通常先发生在物理层(恢复 Refclk/PLL/Tx),然后才回到能传 TLP 的 L0。

7.1 CPU 主动发起(Host 想读/写 SSD)

典型流程(尤其涉及 L1.2):

  1. Host 侧产生事务需求(例如要发 NVMe SQ Doorbell 的 MMIO write,或要做一次 DMA 相关操作)

  2. 触发 Exit:Host/Root Port 通过平台机制发起退出(常见就是把CLKREQ# 拉到有效状态以请求时钟恢复)

  3. REFCLK 恢复:参考时钟恢复、PLL/CDR 重新锁定(这段时间就是我们测到的几十 ms 量级“黑洞期”之一,具体由平台/器件决定)

  4. 链路回到可传输状态:LTSSM 从 L1.x → Recovery(可能)→ L0

  5. Host 发送 TLP:包括 doorbell 的 MemWr、或其它 MMIO/配置访问等

  6. SSD 响应/开始 DMA:后续就进入正常数据通道

7.2 SSD 主动发起(Device 需要“叫醒”Host)

SSD 主动唤醒的常见原因:

  • 异步事件(AER/PME 等电源管理相关事件)

  • 需要上报状态变化(如温度、错误、热管理相关)

  • 设备内部需要恢复/通知

典型流程:

  1. SSD 侧检测到需要唤醒链路/Host

  2. 通过 CLKREQ#(或等效机制)请求时钟/退出 L1.2(很多资料明确:退出序列可由任一端发起,并使用 CLKREQ# 作为关键握手信号)

  3. REFCLK 恢复、链路回到 L0

  4. SSD 才能发出相应的 TLP/Message/中断(MSI/MSI-X)等,Host 侧接收处理

直觉化总结:L1.2 像“把路灯/电闸也关了”,要先把电闸拉上(时钟/PLL 恢复),路上才能走车(TLP)。


8) 做 NVMe / 主板调试时碰到L1.2低功耗最该盯的“验证点”

  1. 配置空间能力位:Root Port 与 Endpoint 是否都宣称支持 ASPM L1 与 L1 Substates

  2. OS/BIOS 策略是否开启:很多平台默认会因兼容性把 ASPM 关掉

  3. CLKREQ# / REFCLK 行为:退出 L1.2 的关键证据(Quarch公司PAM - Power Analysis Module + SerialTek PCIe协议分析联动最有效)

  4. 退出延迟:关注 L1.2→L0 的“额外延迟”,因为 PCI-SIG FAQ 说 Link Capabilities 的 L1 Exit Latency 不含这部分额外延迟

  5. 业务是否导致频繁进出:例如系统轻载时出现频繁唤醒,会影响时延与体验(我们之前文章视频讲解 trace 里看到的“短周期唤醒”就是典型)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/22 6:58:36

智谱清言AutoGLM实战指南(99%工程师忽略的配置细节)

第一章:智谱清言Open-AutoGLM使用秘诀环境准备与依赖安装 在使用 Open-AutoGLM 前,需确保本地已配置 Python 3.8 环境,并安装必要的依赖库。推荐使用虚拟环境以避免版本冲突。创建虚拟环境:python -m venv autoglm-env激活环境&am…

作者头像 李华
网站建设 2026/2/27 22:49:20

【大模型开发者必看】:Open-AutoGLM开源地址曝光与使用技巧全公开

第一章:智谱开源Open-AutoGLM模型网址 智谱AI推出的Open-AutoGLM是一款面向自动化图学习任务的开源模型,旨在简化图神经网络在复杂场景中的应用流程。该模型支持自动特征工程、图结构优化与超参调优,适用于金融风控、知识图谱推理和社交网络分…

作者头像 李华
网站建设 2026/2/25 13:44:48

揭秘Open-AutoGLM开源内幕:如何快速上手智谱最新大模型?

第一章:揭秘Open-AutoGLM开源背景与技术定位Open-AutoGLM 是近年来在自动化自然语言处理领域崭露头角的开源项目,致力于构建一个可扩展、模块化且高度集成的通用语言模型自动化框架。该项目由国内高校联合多家科研机构共同发起,旨在降低大模型…

作者头像 李华
网站建设 2026/2/21 18:37:28

【紧急通知】智谱AutoGLM开源首曝:仅限本周的极简安装通道即将关闭

第一章:智谱Open-AutoGLM开源如何安装智谱推出的 Open-AutoGLM 是一个面向自动化文本生成任务的开源框架,基于 GLM 大模型架构,支持低代码配置与自定义扩展。该工具适用于智能问答、内容生成和自动化报告等场景,开发者可通过以下步…

作者头像 李华