NVMe Base 2.4:Power/Thermal Features 與 Power Management
00.01.NVMe 的功耗與溫度管理是在耗電、回應延遲與工作能力之間做取捨。本篇先建立 power state 的意義,再說明主機設定、自動閒置轉移與溫度相關控制如何分工。
- NVMe
- Non-Volatile Memory Express,主機與非揮發性記憶體子系統之間的介面規範家族。
這篇的主軸
功耗狀態
01-01比較功耗、可否處理 I/O,以及進出狀態的延遲。
- I/O
- Input/Output,對 namespace 執行資料輸入與輸出的操作類別。
設定與自動轉移
02-01理解 Get/Set Features、APST 與背景工作的限制。
- APST
- Autonomous Power State Transition;依設定的閒置條件自動轉換電源狀態。
溫度控制
03-01分開溫度事件通知與控制器的熱管理行為。
00.02.Features 是控制器提供給主機查詢或設定的功能。支援某個功能、目前功能值,以及設定能否跨斷電保存,是不同資訊。
把主軸連起來
00.03.電源管理在功耗、恢復服務所需時間與溫度之間安排操作。先理解電源狀態有哪些能力,再看主機如何讀寫 Feature;APST 依閒置時間轉換狀態,溫度門檻與 HCTM 則依溫度處理不同問題。
- HCTM
- Host Controlled Thermal Management;由 host 設定溫度門檻的熱管理機制。
00.04.通知門檻用來回報溫度事件,熱管理門檻用來控制行為,兩者不能互換。學完應能解釋選擇較省電狀態可能帶來哪些延遲,以及設定值、目前狀態和累計統計分別告訴我們什麼。
01 Feature 的能力、讀取與設定
01.01.Feature 不是一個單純 register。Host 要先用 SEL=011b 讀 capability,再分別讀 current/default/saved view,確認 scope 與 persistence 後才寫入。Set completion 只證明 command outcome;重新 Get 與 runtime telemetry 才能證明軟體看見的新 policy。
- Host
- 主機;執行作業系統並送出 NVMe 命令的一端。
- SEL
- Select,Get Features 用來選 current、default、saved 或 supported-capabilities view 的欄位。
01.02.Get Features 是讀取 Feature 屬性的 Admin command。工程流程不應從寫入猜測開始,而要先辨認 FID、查 capability,再取得 current/default/保存值。
- Admin
- Administrative,建立、設定、查詢或管理 controller 與 queue 的控制路徑。
- FID
- Feature Identifier;指定要讀取或設定哪一項 Feature 的編號。
來源:Base 2.4 §5.2.12
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, 文件頁 209, PDF 頁 235
| Get Features 選擇值 | 要求讀取什麼 | 可用來做哪種判斷 |
|---|---|---|
| SEL=000b | 目前值 | 確認控制器目前採用的設定 |
| SEL=001b | 預設值 | 了解預設設定 |
| SEL=010b | 保存值 | 不等於一定曾經 save |
| SEL=011b | CHANG/NSSPEC/SVBL | 寫入前的 功能支援條件 |
- NSSPEC
- Namespace Specific,指出 Feature 是否具有 per-namespace scope 的 capability bit。
- CHANG
- Changeable,指出 Feature value 是否可由 Set Features 變更的 capability bit。
- SVBL
- Saveable,supported-capabilities result 中指出 Feature 是否可保存的 bit。
02 Power State 的功率、延遲與效能
02.01.只看 state number 無法判斷是否適合 workload。每一個 PSD 要一起讀 MP、NOPS、ENLAT/EXLAT、IDLP/ACTP 與 relative performance。PS 數字增加通常降低 maximum power,但不代表所有 latency 或 throughput 一定以固定比例變差。
- ENLAT
- Entry Latency,進入該 power state 的 maximum latency,單位為 microseconds。
- EXLAT
- Exit Latency,離開該 power state 的 maximum latency,單位為 microseconds。
- ACTP
- Active Power,在指定 workload 與時間窗下描述的 average active power。
- IDLP
- Idle Power,依規格 idle 測量條件描述的 typical power。
- NOPS
- Non-Operational State,Power State Descriptor 中指出該 state 不處理 I/O commands 的 bit。
- MP
- Maximum Power,一個 power state 的 sustained maximum power。
- PS
- Power State,controller 的功耗/效能 operating point;PS0 是最高 maximum-power state。
02.02.controller 必須(shall)至少支援一個 power state,最多可(may)支援 32 個,編號從 0 連續排列。PS0 的 maximum power 最高;後續 state 的 maximum power 不得高於前一個 state。
- controller
- controller,實作 NVMe 介面、取走 command 並回報 completion 的控制實體。
來源:Base 2.4 §8.1.19
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, 文件頁 666-667, PDF 頁 692-693
| 電源狀態屬性 | 描述的功耗或效能 | 比較時需要的條件 |
|---|---|---|
| MP | 持續最大功率 | 不是瞬間 sample |
| IDLP/ACTP | 閒置典型功率/工作中平均功率 | 測量條件不同 |
| ENLAT/EXLAT | 進入/離開 maximum latency | 跨 state 必須相加 |
| RRT/RRL/RWT/RWL | 相對吞吐量/相對延遲 | 只在同類 characteristic 比較 |
03 APST 的閒置條件與自動轉換
03.01.APST 的 256-byte buffer 不是 performance table,而是 32 個『idle 多久後進哪個 non-operational state』的 rules。APSTE 決定 timer rules 是否生效;每個 ITPT=0 entry 不參與;I/O 到達又會讓 controller 回到最近 operational state。
- APSTE
- Autonomous Power State Transition Enable,啟用 APST table timer 判斷的 bit。
- ITPT
- Idle Time Prior to Transition,APST entry 的 idle threshold,單位為 milliseconds。
- Host 設定 APST entries 的閒置時間 ITPT 與目標狀態 ITPS。
- 啟用 APST 後,controller 依閒置計時判斷轉移。
- 到達適用門檻後,進入指定 non-operational power state。
- 恢復處理 I/O 前,需要計入離開該狀態的延遲。
- ITPS
- Idle Transition Power State,APST entry 選擇的目標 non-operational power state。
03.02.FID 0Ch 的 APSTE=1 啟用 Autonomous Power State Transition(APST);預設值是 0。啟用只表示 controller 可依 APST table 的 idle timer 自主切換,並不保證一定進入任何特定 state。
來源:Base 2.4 §5.2.30.1.7
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, 文件頁 468-469, PDF 頁 494-495
| APST 或背景工作設定 | 控制器如何進入或使用狀態 | 受哪些條件限制 |
|---|---|---|
| APSTE=0 | 只允許 host-directed entry | table 可存在但 timer 不驅動 |
| APSTE=1 | host 或 timer entry | ITPT 必須連續滿足 |
| NOPPME=0 | background work 不得超過 non-op limits | 可能延後 controller work |
| NOPPME=1 | background work 可暫時提高 power | 上限仍受最後 operational state 限制 |
- NOPPME
- Non-Operational Power State Permissive Mode Enable,控制 controller background work 能否暫時超過 non-operational power limit。
04 溫度門檻、感測器與通知
04.01.FID 04h 不只是一個溫度數字。TMPSEL 決定讀哪個 sensor,THSEL 決定 over 或 under,TMPTH 決定觸發點,TMPTHH 決定離開 event 的 clear point;SMART/Health.TTC 與 AEC enable 則把 controller 狀態送回 host。
- TMPSEL
- Temperature Sensor Select,選擇 Composite Temperature 或 sensor 1 到 8 的欄位。
- TMPTHH
- Temperature Threshold Hysteresis,結束 threshold event 時使用的 Kelvin hysteresis。
- THSEL
- Threshold Type Select,選擇 over-temperature 或 under-temperature threshold。
- TMPTH
- Temperature Threshold,16-bit Kelvin threshold value。
- TTC
- Temperature Threshold Critical Warning,SMART/Health Critical Warning 中的溫度 threshold bit。
04.02.FID 04h 可為 Composite Temperature 與最多八個實作的 temperature sensors 設 over/under threshold。溫度以 Kelvin 編碼;到達 over threshold 或低於等於 under threshold 時,SMART/Health 的 Temperature Threshold critical warning 可能觸發 asynchronous event。
來源:Base 2.4 §5.2.30.1.3
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.3, 文件頁 462-463, PDF 頁 488-489
| 門檻欄位 | 選擇或設定什麼 | 事件觸發與解除如何判斷 |
|---|---|---|
| TMPSEL | Composite 或 sensor 1-8 | Get 不使用 all-sensors selector |
| THSEL | over/under | 比較方向相反 |
| TMPTH | 觸發 Kelvin | log raw K 及轉換後 °C |
| TMPTHH | clear hysteresis Kelvin | 不是第二個觸發 threshold |
05 HCTM 的兩級熱管理
05.01.HCTM 的目的不是指定固定 clock 或固定 power state,而是讓 host 提供 TMT1/TMT2 兩個 temperature boundaries。controller 在 TMT1 優先降低 performance impact,在 TMT2 則必須更積極控制 temperature;實際 hysteresis 與內部動作屬 vendor implementation。
- TMT1
- Thermal Management Temperature 1,較輕度 thermal-management threshold,單位 Kelvin。
- TMT2
- Thermal Management Temperature 2,較強 thermal-management threshold,單位 Kelvin。
05.02.FID 10h 的 TMT1[31:16] 是較輕度 thermal management threshold,TMT2[15:0] 是較重度 threshold,單位都是 Kelvin;0h 分別停用對應 threshold。
來源:Base 2.4 §5.2.30.1.10
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.10, 文件頁 471-472, PDF 頁 497-498
| 熱管理欄位或統計 | 設定或觀察的內容 | 使用前需確認什麼 |
|---|---|---|
| TMT1 | 較輕度控制起點 | 目標是 minimize impact |
| TMT2 | 較強控制起點 | 溫控優先於 impact |
| MNTMT/MXTMT | 合法設定範圍 | 先做 host-side validation |
| SMART counters | transition count/time | 證明 control loop 真的動作 |
- MNTMT
- Minimum Thermal Management Temperature,HCTM 可設定的最低 Kelvin 值。
- MXTMT
- Maximum Thermal Management Temperature,HCTM 可設定的最高 Kelvin 值。
接著打開 Spec 看什麼
06.01.以下按概念列出閱讀位置。報告時先用上面的流程說明問題,再打開對應章節看欄位與完整條件。中文教學 HTML 另有本篇全部圖表的逐圖重點、案例與細節。
| 要說明的觀念 | Spec 閱讀位置 |
|---|---|
| Feature 的能力、讀取與設定 | Base 2.4 §5.2.12 · Base 2.4 §5.2.12.1 · Base 2.4 §5.2.30 |
| Power State 的功率、延遲與效能 | Base 2.4 §8.1.19 · Base 2.4 §8.1.19.1 · Base 2.4 §8.1.19.2 · Base 2.4 §5.2.30.1.2 · Base 2.4 §8.1.19.3 |
| APST 的閒置條件與自動轉換 | Base 2.4 §5.2.30.1.7 · Base 2.4 §8.1.19 · Base 2.4 §5.2.30 |
| 溫度門檻、感測器與通知 | Base 2.4 §5.2.30.1.3 · Base 2.4 §5.2.30.1.3.1 · Base 2.4 §5.2.13.1.3 |
| HCTM 的兩級熱管理 | Base 2.4 §5.2.30.1.10 · Base 2.4 §5.2.30.1.10, 8.1.19.5 · Base 2.4 §5.2.13.1.3 · Base 2.4 §5.2.30.1.11 · Base 2.4 §8.1.19.4 · Base 2.4 §5.2.12.2 |
學完後想一想
1. Supported、Current、Default、Saved 為何不能視為同一個 Feature 值?
07.01.Supported Capabilities 描述該 Feature 可如何使用;Current 是目前值,Default 是預設值,Saved 是已保存值且須符合支援條件。讀取時的選擇決定回覆意義。
來源
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, 文件頁 209-210, PDF 頁 235-236
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, 文件頁 210, PDF 頁 236
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12.1, 文件頁 211-212, PDF 頁 237-238
2. 閒置功率最低的 Power State,為何未必適合頻繁進出 I/O 的負載?
07.02.每次進出狀態都可能付出 transition latency。短暫閒置省下的電力,需要連同進入與離開延遲、工作反應時間一起評估;不能只比較 power 數字。
來源
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, 文件頁 666-668, PDF 頁 692-694
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.1, 文件頁 668-669, PDF 頁 694-695
3. APST entry 的 idle time 與 target state 各決定什麼?
07.03.Idle time 指定符合條件後等待多久才自動轉換;target 指定要轉往哪個 Power State。兩者要搭配目標狀態的能力與限制,才能形成可用的節能策略。
來源
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, 文件頁 468-469, PDF 頁 494-495
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, 文件頁 469, PDF 頁 495
4. Temperature Threshold 和 HCTM 為何需要分開設定與解讀?
07.04.Temperature Threshold 用於溫度條件與通知;HCTM 提供 host 控制的熱管理行為。得知溫度越界與要求 controller 採取熱管理不是同一動作。
來源
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.3, 文件頁 462-463, PDF 頁 488-489
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.10, 8.1.19.5, 文件頁 472, 670-671, PDF 頁 498, 696-697


Comments