错误处理 - 🔋 第 8.15 节 电源管理 Power Management(续) (第401页)
NVME2.0协议解读 1 min read

错误处理 - 🔋 第 8.15 节 电源管理 Power Management(续) (第401页)

Blog Author

我们继续对 NVMe Base Specification 2.0b 第 8.15 节 Power Management(电源管理) 进行中文深入解析,并结合 图 452、图 453、功耗描述符表结构,讲清楚 NVMe 如何支持静态与动态电源状态切换与能耗调控。


🔋 第 8.15 节 电源管理 Power Management(续)

📊 图 452:动态电源管理示意(Dynamic Power Management)

虽然标准文中并未给出图 452 的图像,但它的内容旨在展示如下 电源状态动态切换模型

  • 主机通过 Set Features 命令选择目标电源状态(Power State);
  • 控制器会根据主机请求,尝试进入该状态;
  • 电源状态具有等级编号:Power State ID 从 0 开始,数值越大,表示功耗越低,性能越弱;
  • 控制器可选择在后台使用自主管理方式降低功耗;
  • 电源状态切换是延迟敏感的 —— 有 进入延迟(Entry Latency)退出延迟(Exit Latency)

📋 电源状态控制器支持能力:NPSS 字段

  • 字段 NPSS (Number of Power States Supported) 定义在 Identify Controller 数据结构中(图 276);
  • 控制器必须至少支持一个电源状态(即 Power State 0);
  • 最多支持 32 个电源状态(ID = 0 ~ 31)
  • 编号必须连续,并且保证:
  • 电源状态 n 的最大功耗 ≤ n−1 的最大功耗
  • Power State 0 表示系统运行下能达到的最大功耗(性能最高)

📈 图 453:Power State Descriptor 示例

此表用于说明电源状态的关键参数,表格简化为如下形式:

Power State MP (最大功耗) ENLAT (进入延迟) EXLAT (退出延迟) RRT RRL RWT RWL
0 25 W 5 µs 5 µs 0 0 0 0
1 18 W 5 µs 7 µs 0 0 1 0
2 18 W 5 µs 8 µs 1 0 0 0
3 15 W 20 µs 15 µs 2 0 2 0
4 10 W 20 µs 30 µs 1 1 3 0
5 8 W 50 µs 50 µs 2 2 4 0
6 5 W 20 µs 5,000 µs 4 3 5 1

字段释义

字段 含义
MP (Maximum Power) 最大功耗,单位非规定(一般为 mW 或 W)
ENLAT 从当前状态切换至该状态的延迟时间(Entry Latency)
EXLAT 从该状态切换到其他状态的延迟时间(Exit Latency)
RRT / RRL 相对读取吞吐量 / 延迟(0 代表最佳)
RWT / RWL 相对写入吞吐量 / 延迟(值越大表示性能越差)

🧠 注:虽然 RRT/RRL/RWT/RWL 是相对数值,但值为 0 表示当前状态性能最佳


💤 空闲功耗(Idle Power, IDLP)

  • 表示在 电源状态保持空闲(无命令/后台任务)时,30 秒内的平均功耗;
  • 测量方法:
  • 控制器空闲 10 秒后;
  • 在接下来的 30 秒中测量平均功耗;
  • 这个字段反映了设备处于空闲状态时的节能能力

⚡ 活跃功耗(Active Power, ACTP)

  • 表示该状态下在工作负载运行时的最大平均功耗(10 秒窗口)
  • 测量方式:
  • 第一个命令提交开始
  • 最后一个命令完成为止
  • 在该期间选取 10 秒窗口,报告最大平均值;
  • 若负载小于 10 秒,则取实际负载时长的平均功耗;
  • 对于非运行状态(non-operational),这些字段(ACTP、ACTP Scale 等)应全部为 0h;

⚙️ 电源状态控制与应用

  • 主机通过 Set Features – Power Management 命令设置 PS 字段,指定当前使用的电源状态;
  • 控制器应依据请求切换电源状态,但切换涉及 ENLAT/EXLAT 延迟;
  • 控制器也可以在后台基于自身管理策略在不同功耗状态间切换(如温度上升自动降频);
  • 电源状态切换属于性能与功耗之间的权衡策略。

✅ 本节重点总结

关键点 说明
Power State 数量 由 NPSS 定义,最大支持 32 个,Power State 0 表示最大性能、最大功耗
功耗结构表 每个状态有 MP、ENLAT、EXLAT、读写性能指标
Idle Power 空闲 10 秒后测量 30 秒内的功耗
Active Power 执行负载时,取最大 10 秒平均功耗
状态切换 Set Features 命令控制电源状态,注意延迟
动态管理 主机可动态切换状态,也可由控制器后台策略自动切换

如果你希望我继续讲解 8.15.1:非运行电源状态 Non-Operational Power States 或深入剖析 Identify Controller 中的 Power State Descriptor 结构字段,我可以无缝衔接。你想继续深入哪一部分?