NVMe Base 2.4:Power/Thermal Features 與 Power Management

9 minute read

English

00.01.NVMe 的功耗與溫度管理是在耗電、回應延遲與工作能力之間做取捨。本篇先建立 power state 的意義,再說明主機設定、自動閒置轉移與溫度相關控制如何分工。

NVMe
Non-Volatile Memory Express,主機與非揮發性記憶體子系統之間的介面規範家族。

這篇的主軸

01

功耗狀態

01-01比較功耗、可否處理 I/O,以及進出狀態的延遲。

I/O
Input/Output,對 namespace 執行資料輸入與輸出的操作類別。
02

設定與自動轉移

02-01理解 Get/Set Features、APST 與背景工作的限制。

APST
Autonomous Power State Transition;依設定的閒置條件自動轉換電源狀態。
03

溫度控制

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

Feature 的能力、讀取與設定
Get Features 選擇值要求讀取什麼可用來做哪種判斷
SEL=000b目前值確認控制器目前採用的設定
SEL=001b預設值了解預設設定
SEL=010b保存值不等於一定曾經 save
SEL=011bCHANG/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

Power State 的功率、延遲與效能
電源狀態屬性描述的功耗或效能比較時需要的條件
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。
閒置時間如何影響功耗狀態
  1. Host 設定 APST entries 的閒置時間 ITPT 與目標狀態 ITPS。
  2. 啟用 APST 後,controller 依閒置計時判斷轉移。
  3. 到達適用門檻後,進入指定 non-operational power state。
  4. 恢復處理 I/O 前,需要計入離開該狀態的延遲。
APST 以閒置時間換取節能,同時引入狀態轉移延遲。
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 的閒置條件與自動轉換
APST 或背景工作設定控制器如何進入或使用狀態受哪些條件限制
APSTE=0只允許 host-directed entrytable 可存在但 timer 不驅動
APSTE=1host 或 timer entryITPT 必須連續滿足
NOPPME=0background work 不得超過 non-op limits可能延後 controller work
NOPPME=1background 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

溫度門檻、感測器與通知
門檻欄位選擇或設定什麼事件觸發與解除如何判斷
TMPSELComposite 或 sensor 1-8Get 不使用 all-sensors selector
THSELover/under比較方向相反
TMPTH觸發 Kelvinlog raw K 及轉換後 °C
TMPTHHclear 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

HCTM 的兩級熱管理
熱管理欄位或統計設定或觀察的內容使用前需確認什麼
TMT1較輕度控制起點目標是 minimize impact
TMT2較強控制起點溫控優先於 impact
MNTMT/MXTMT合法設定範圍先做 host-side validation
SMART counterstransition 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

採用的規格版本

NVM Express Base Specification, Revision 2.4

Jia-Chang

Jia-Chang

Human

Comments

  Write a comment ...