news 2026/2/3 0:20:04

【每日一题】一文讲通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/2 16:42:33

揭秘Open-AutoGLM连接技术:5大核心步骤让AI集成效率提升300%

第一章:智普开源Open-AutoGLM连接Open-AutoGLM 是智普AI推出的一款面向自动化图学习任务的开源框架,旨在降低图神经网络在实际场景中的应用门槛。通过该框架,开发者能够快速构建、训练并部署图结构数据上的机器学习模型,适用于社交…

作者头像 李华
网站建设 2026/2/2 6:04:26

Open-AutoGLM智能体模型技术内幕(20年架构师亲述)

第一章:Open-AutoGLM智能体模型技术内幕(20年架构师亲述)架构设计理念 Open-AutoGLM 的核心在于“感知-决策-执行”闭环系统。该模型采用多智能体协同架构,每个子模块均为轻量化推理引擎,支持动态加载与热更新。设计上…

作者头像 李华
网站建设 2026/2/2 16:42:30

Open-AutoGLM集成全攻略(工业级部署 secrets 公开)

第一章:Open-AutoGLM集成全貌与工业级部署概览Open-AutoGLM 是一个面向企业级应用的大语言模型自动化推理与生成框架,融合了多模态输入解析、动态上下文调度与低延迟响应机制。其核心架构支持模块化插件扩展,适用于金融、制造、医疗等高要求场…

作者头像 李华
网站建设 2026/2/2 16:42:28

Open-AutoGLM响应延迟高达数秒?立即检查这4个关键性能开关

第一章:Open-AutoGLM运行的慢在部署和使用 Open-AutoGLM 模型时,部分用户反馈其推理速度较慢,影响了实际应用场景中的响应效率。性能瓶颈可能来源于模型加载、上下文长度处理或硬件资源未充分调用等多个方面。检查模型加载方式 默认情况下&am…

作者头像 李华
网站建设 2026/2/2 16:42:26

自动化生成测试脚本,点点点搞定性能测试

性能测试基于jmeter引擎,目前版本暂时没有设计存储于数据库,因此测试过程和结果数据都是属于实时一次性的,需要手动监控和保存数据。环境需要安装jdk1.8版本,当前jmeter版本是5.6.2,把文件以及包含的报告汉化包放到Aut…

作者头像 李华
网站建设 2026/2/2 16:42:24

探索性测试: 工具和方法的综合应用

1、前言 探索性测试是软件测试中一项重要的活动,旨在发现软件中的缺陷、异常行为和潜在问题。本文将介绍一些常用的工具和方法,以帮助测试人员在进行探索性测试时更加高效和有效。 2、工具的使用 1、测试管理工具 测试管理工具如JIRA、TestRail或qTe…

作者头像 李华