NVMe · 規格與原理

NVMe Base 2.4:Power/Thermal Features 與 Power Management

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 可以有目前值、預設值及保存值。主機讀取時需要用 SEL 說明想查哪一種;讀到保存值不代表它就是目前正在使用的值。支援能力查詢則另外告訴主機這個 Feature 是否可變更、可保存,以及作用對象是否與 namespace 有關。

namespace
namespace,主機透過 controller 存取的一份已格式化非揮發性容量。
SEL
Select,Get Features 用來選 current、default、saved 或 supported-capabilities view 的欄位。

01.02.設定流程應先確認可變更,再選擇符合控制器能力的值。是否保存是另一個選擇,不能因為 Set 成功就假設下次重設或斷電後仍會使用它。這個讀取與設定的共同流程,會被後面各個電源及溫度 Feature 使用。

來源:Base 2.4 §5.2.12 · Base 2.4 §5.2.12.1 · Base 2.4 §5.2.30

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, 文件頁 209, PDF 頁 235

來源: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.1, 文件頁 211-212, PDF 頁 237-238

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, 文件頁 457, PDF 頁 483

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, 文件頁 459, PDF 頁 485

把流程對回規格條件

01.03.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

01.04.CDW10.SEL 選擇 current=000b、default=001b、saved=010b 或 supported capabilities=011b;CDW10.FID 選 Feature。其餘 SEL encoding reserved。

CDW
CDW(Command Dword);命令中的 32-bit 欄位單位,例如 CDW10 的 10 是欄位 index,不是 byte offset。
來源:Base 2.4 §5.2.12

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, 文件頁 209-210, PDF 頁 235-236

01.05.SEL=011b 時,CQE.DW0 以 CHANG、NSSPEC、SVBL 回報是否可變更、是否 namespace-specific、是否可 save。這三個 capability bits 與 Feature value 是兩種不同資料,不能混解。

NSSPEC
Namespace Specific,指出 Feature 是否具有 per-namespace scope 的 capability bit。
CHANG
Changeable,指出 Feature value 是否可由 Set Features 變更的 capability bit。
SVBL
Saveable,supported-capabilities result 中指出 Feature 是否可保存的 bit。
CQE
Completion Queue Entry,CQ 中的一筆完成結果資料結構。
來源:Base 2.4 §5.2.12.1

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12.1, 文件頁 211-212, PDF 頁 237-238

01.06.CDW10.SV=1 要求把值保存為跨 reset/power cycle 可用的 保存值;若 Feature 不可 save,controller 會回 Feature Identifier Not Saveable。先讀 SVBL,再決定是否設 SV。

controller
controller,實作 NVMe 介面、取走 command 並回報 completion 的控制實體。
SV
Save,Set Features 要求 controller 同時保存所設定 value 的 bit。
來源:Base 2.4 §5.2.30

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, 文件頁 457, PDF 頁 483

01.07.Set Features 成功後,後續 commands 必須(shall)使用新設定。若軟體需要讓一批 commands 一致套用舊值或新值,host 宜(should)先讓既有 in-flight commands 完成,再切換。

Host
主機;執行作業系統並送出 NVMe 命令的一端。
來源:Base 2.4 §5.2.30

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, 文件頁 459, PDF 頁 485

Feature 的能力、讀取與設定
Get Features 選擇值要求讀取什麼可用來做哪種判斷
SEL=000b目前值確認控制器目前採用的設定
SEL=001b預設值了解預設設定
SEL=010b保存值不等於一定曾經 save
SEL=011bCHANG/NSSPEC/SVBL寫入前的 功能支援條件
閱讀相關規格圖表 → Feature 的能力、讀取與設定

02 Power State 的功率、延遲與效能

由一次閒置間隔估算省電代價

先查它能否處理 I/O

02.01.讀 Power State Descriptor 的 NOPS,確認狀態屬 operational 或 non-operational。數字較大的 PS 不代表一定不能處理 I/O;分類應由描述子決定。

NOPS
Non-Operational State,Power State Descriptor 中指出該 state 不處理 I/O commands 的 bit。
PS
Power State,controller 的功耗/效能 operating point;PS0 是最高 maximum-power state。

把進出延遲放在同一條時間線

02.02.假設 PS0 到 PS3,PS0 的 EXLAT=0、PS3 的 ENLAT=100 μs;喚回 PS0 時,PS3 的 EXLAT=500 μs、PS0 的 ENLAT=0。這是一組說明性數值,進入與退出各使用來源狀態的 EXLAT 加目標狀態的 ENLAT。

ENLAT
Entry Latency,進入該 power state 的 maximum latency,單位為 microseconds。
EXLAT
Exit Latency,離開該 power state 的 maximum latency,單位為 microseconds。

比較長閒置與短間隔

02.03.若下一筆 I/O 很快到達,500 μs 的喚醒成本可能成為明顯等待;長時間閒置才有較多時間享受低功耗。比較時同時保留時間與功率,不能只找最小的 MP 值。

MP
Maximum Power,一個 power state 的 sustained maximum power。
來源: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

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, 文件頁 666-667, PDF 頁 692-693

來源: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

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.2, 文件頁 668, PDF 頁 694

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, 文件頁 667-668, PDF 頁 693-694

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.2, 文件頁 460-461, PDF 頁 486-487

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.3, 文件頁 669, PDF 頁 695

功耗狀態轉移的時間如何計算說明性數值:PS0→PS3 的最大轉移時間是 EXLAT(PS0)+ENLAT(PS3)=0+100=100 μs;PS3→PS0 則是 500+0=500 μs。退出與進入取自不同狀態。圖中區塊寬度為排版用途,不代表時間比例;實際延遲以裝置的 Power State Descriptor 為準。PS0處理 I/O退出 PS0EXLAT = 0 μs進入 PS3ENLAT = 100 μsPS3閒置進入省電狀態:最多 100 μsPS3新 I/O 到達退出 PS3EXLAT = 500 μs進入 PS0ENLAT = 0 μsPS0處理 I/O恢復處理:轉移最多 500 μs,另加命令處理時間
說明性數值:PS0→PS3 的最大轉移時間是 EXLAT(PS0)+ENLAT(PS3)=0+100=100 μs;PS3→PS0 則是 500+0=500 μs。退出與進入取自不同狀態。圖中區塊寬度為排版用途,不代表時間比例;實際延遲以裝置的 Power State Descriptor 為準。

把流程對回規格條件

02.05.controller 必須(shall)至少支援一個 power state,最多可(may)支援 32 個,編號從 0 連續排列。PS0 的 maximum power 最高;後續 state 的 maximum power 不得高於前一個 state。

來源:Base 2.4 §8.1.19

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, 文件頁 666-667, PDF 頁 692-693

02.06.Power State Descriptor(PSD)把 maximum power、operational/non-operational、entry/exit latency、idle/active power 與 relative performance 放在同一份描述。MP 是 sustained maximum;IDLP 與 ACTP 是不同測量情境,不能拿單次瞬間功耗互相比。

ACTP
Active Power,在指定 workload 與時間窗下描述的 average active power。
IDLP
Idle Power,依規格 idle 測量條件描述的 typical power。
來源:Base 2.4 §8.1.19

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, 文件頁 666-668, PDF 頁 692-694

02.07.從舊 state 直接切到新 state 的最大 transition time,是舊 state 的 EXLAT 加上新 state 的 ENLAT。若 controller 內部經過多個 state,則每一段 transition time 相加。

來源:Base 2.4 §8.1.19.1

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.1, 文件頁 668-669, PDF 頁 694-695

02.08.Relative Read/Write Throughput 與 Latency 都是『值越小越好』,但只可在相同 characteristic 內比較;throughput code 不能與 latency code 混成一個總分。

來源:Base 2.4 §8.1.19.2

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.2, 文件頁 668, PDF 頁 694

02.09.non-operational power state 不處理 I/O commands,但仍可能處理 property、PMR、CMB、Admin/background 或 transport-specific access。『non-operational』不是 controller 關機。

CMB
Controller Memory Buffer,controller 提供、可放置部分 queue 或資料結構的記憶體區域。
PMR
Persistent Memory Region,由 controller 暴露、具有持久性語意的記憶體區域。
來源:Base 2.4 §8.1.19

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, 文件頁 667-668, PDF 頁 693-694

02.10.FID 02h 用 CDW11.PS[4:0] 選 power state、WH[7:5] 提供 workload hint。指定的 PS 必須(shall)在 Identify Controller.NPSS 宣告範圍內;不支援的 PS 應(should)以 Invalid Field in Command 中止。

WH
Workload Hint,host 提供給 controller 的 workload category 提示,不是效能保證。
來源:Base 2.4 §5.2.30.1.2

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.2, 文件頁 460-461, PDF 頁 486-487

02.11.WH=000b 表示未知 workload;001b 對應先 idle、再做 32 筆 random 1 MiB writes、再 idle 的情境;010b 對應 80,000 筆 sequential 128 KiB writes。011b~111b reserved。

來源:Base 2.4 §8.1.19.3

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.3, 文件頁 669, PDF 頁 695

Power State 的功率、延遲與效能
電源狀態屬性描述的功耗或效能比較時需要的條件
MP持續最大功率不是瞬間 sample
IDLP/ACTP閒置典型功率/工作中平均功率測量條件不同
ENLAT/EXLAT進入/離開 maximum latency跨 state 必須相加
RRT/RRL/RWT/RWL相對吞吐量/相對延遲只在同類 characteristic 比較
閱讀相關規格圖表 → Power State 的功率、延遲與效能

03 APST 的閒置條件與自動轉換

為 PS0 設定一條可檢查的自動轉移規則

找到屬於目前狀態的 entry

03.01.假設控制器目前處於 operational PS0,支援 non-operational PS3。PS0 的 entry 選 ITPS=3、ITPT=2000 ms;這份 entry 放在表格的 PS0 位置,並不是放到目標 PS3 的位置。

ITPS
Idle Transition Power State,APST entry 選擇的目標 non-operational power state。
ITPT
Idle Time Prior to Transition,APST entry 的 idle threshold,單位為 milliseconds。

把兩個欄位各自移到正確位置

03.02.低 Dword=(2000<<8)|(3<<3)=0007D018h。bits 31:8 保存時間,bits 7:3 保存狀態編號。兩者相鄰但單位不同,不能把整個 Dword 轉成一個毫秒數。

Dword
Dword(Double word);32 bits,也就是 4 bytes。對比 word=16 bits;例如 zero-based dword count=3 代表 4 個 Dwords,也就是 16 bytes。

沿箭頭看閒置與新 I/O

03.03.APSTE=1 且在目前狀態連續閒置超過 ITPT 時,依這筆 entry 轉入 PS3。新的 I/O 到來後,先回到適用的 operational state 再處理;進出延遲因此影響這筆 I/O 的等待。

APSTE
Autonomous Power State Transition Enable,啟用 APST table timer 判斷的 bit。

分開考慮背景工作

03.04.NOPPME 控制 non-operational 狀態下的背景工作行為,APSTE 控制自動轉移。允許背景工作不等於停用 APST;必須分別理解「如何進入」與「進入後可做什麼」。

NOPPME
Non-Operational Power State Permissive Mode Enable,控制 controller background work 能否暫時超過 non-operational power limit。
來源:Base 2.4 §5.2.30.1.7 · Base 2.4 §8.1.19 · Base 2.4 §5.2.30

來源: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

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, 文件頁 668, PDF 頁 694

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, 文件頁 456-457, PDF 頁 482-483

APST:閒置條件與 I/O 觸發的兩條路徑說明性情境:目前是 operational PS0,目標是已支援的 non-operational PS3;PS0 entry 設 ITPT=2000 ms、ITPS=3。APSTE 啟用且連續閒置超過門檻時轉入 PS3;有未完成 I/O 時不符合閒置定義。若進行中作業會使功率超過目標狀態宣告值,規格建議控制器不要自動轉入。新的 I/O 到達後,控制器返回最近的 operational state,本例是 PS0。箭頭代表事件與轉移,並非等比例時間。PS0 · operational可處理 I/OPS3 · non-operational先退出,才能處理 I/OAPSTE=1;連續閒置 > 2000 ms新 I/O → 返回最近的 operational statePS0 entry:(2000 << 8) | (3 << 3) = 0007D018h
說明性情境:目前是 operational PS0,目標是已支援的 non-operational PS3;PS0 entry 設 ITPT=2000 ms、ITPS=3。APSTE 啟用且連續閒置超過門檻時轉入 PS3;有未完成 I/O 時不符合閒置定義。若進行中作業會使功率超過目標狀態宣告值,規格建議控制器不要自動轉入。新的 I/O 到達後,控制器返回最近的 operational state,本例是 PS0。箭頭代表事件與轉移,並非等比例時間。

把流程對回規格條件

03.06.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

03.07.APST data structure 固定 256 bytes,共 32 個 8-byte entries。每格 ITPT[31:8] 是毫秒 idle threshold,ITPS[7:3] 是目標 non-operational state;ITPT=0 會停用該 entry。

來源:Base 2.4 §5.2.30.1.7

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, 文件頁 469, PDF 頁 495

03.08.APSTE 控制 timer-based entry,NOPPME 控制 controller-initiated background operation 是否可暫時超過 non-operational limit。兩者是兩個正交開關:不要把『可自主進 state』誤解成『可為背景工作提高 power』。

來源:Base 2.4 §5.2.30.1.7

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, 文件頁 469, PDF 頁 495

03.09.host 在手動切入 non-operational state 前宜(should)先 drain I/O。若 I/O command 到達,controller 會自主回到最近使用的 operational state,再處理 I/O。

來源:Base 2.4 §8.1.19

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, 文件頁 668, PDF 頁 694

03.10.Set Features 的 DPTR 只在所選 Feature 定義 data structure 時使用。以 PRP 指向 buffer 時,該 data buffer 不得跨越超過一個 memory page boundary,因 PRP2 不能在此指向 PRP List。

DPTR
Data Pointer,SQE 中指出 command data buffer 的欄位。
PRP
Physical Region Page,以 memory page 為單位描述 host-addressable data buffer 的 pointer 格式。
來源:Base 2.4 §5.2.30

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, 文件頁 456-457, PDF 頁 482-483

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 限制
閱讀相關規格圖表 → APST 的閒置條件與自動轉換

04 溫度門檻、感測器與通知

04.01.溫度門檻先要指定感測器,再選擇高溫或低溫方向。相同溫度值若套到不同感測器或比較方向,代表的事件也不同。TMPTH 使用 Kelvin;為了日常閱讀可以換算成攝氏,但編碼與比較仍要依原始單位進行。

TMPTH
Temperature Threshold,16-bit Kelvin threshold value。

04.02.Hysteresis 讓事件解除的溫度與觸發溫度不同,避免溫度在門檻附近小幅波動時反覆切換。以高溫門檻為例,降溫後需符合解除條件,不能只看到低於觸發值就忽略遲滯設定。通知描述的是溫度事件,並不等於 HCTM 已採取某一級熱控制。

來源: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

來源: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.3.1, 文件頁 463-464, PDF 頁 489-490

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.3, 文件頁 220-225, PDF 頁 246-251

把流程對回規格條件

04.03.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

04.04.Figure 470 的 TMPSEL 選 sensor、THSEL 選 over/under、TMPTH 是 threshold、TMPTHH 是 hysteresis。over event 在溫度降到 threshold−hysteresis 時結束;under event在溫度升到 threshold+hysteresis 時結束。

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。
來源:Base 2.4 §5.2.30.1.3.1

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.3.1, 文件頁 463-464, PDF 頁 489-490

04.05.設定完成不是驗證終點。SMART/Health 應同時觀察 Composite Temperature、TTC critical warning、warning temperature time、HCTM transition counters 與已實作 sensor readings,再對照 CQE 與 host latency。

TTC
Temperature Threshold Critical Warning,SMART/Health Critical Warning 中的溫度 threshold bit。
來源:Base 2.4 §5.2.13.1.3

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.3, 文件頁 220-225, PDF 頁 246-251

溫度門檻、感測器與通知
門檻欄位選擇或設定什麼事件觸發與解除如何判斷
TMPSELComposite 或 sensor 1-8Get 不使用 all-sensors selector
THSELover/under比較方向相反
TMPTH觸發 Kelvinlog raw K 及轉換後 °C
TMPTHHclear hysteresis Kelvin不是第二個觸發 threshold
閱讀相關規格圖表 → 溫度門檻、感測器與通知

05 HCTM 的兩級熱管理

同一個溫度,觀察、告警與控制各做什麼

先讀溫度來源及單位

05.01.SMART 的 Composite Temperature 是觀察值;Temperature Threshold 選感測來源與門檻。設定前先將 Celsius 與 Kelvin 換成同一單位,不要把常見的攝氏數字直接填入要求 Kelvin 的欄位。

再決定溫度升高時的處理

05.02.HCTM 的 TMT1 與 TMT2 描述主機的熱管理要求。例如支援範圍為 273–373 K,TMT1=343 K、TMT2=353 K,CDW11=(343<<16)|353=01570161h。到達較高門檻時,控制器的規範義務與較低門檻不同;其實際調整功耗狀態或採用其他方式仍有實作空間。

TMT1
Thermal Management Temperature 1,較輕度 thermal-management threshold,單位 Kelvin。
TMT2
Thermal Management Temperature 2,較強 thermal-management threshold,單位 Kelvin。

下降時讀回復條件

05.03.升溫時觸發某個動作,不表示剛降回同一數字就立即恢復。回復行為涉及 hysteresis;它讓控制不會在門檻附近反覆切換。觀察曲線時要把升溫與降溫路徑分開看。

來源: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

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.10, 文件頁 471-472, PDF 頁 497-498

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.10, 8.1.19.5, 文件頁 472, 670-671, PDF 頁 498, 696-697

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.3, 文件頁 220-225, PDF 頁 246-251

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.11, 文件頁 472-473, PDF 頁 498-499

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.4, 文件頁 669-670, PDF 頁 695-696

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12.2, 文件頁 212, PDF 頁 238

把流程對回規格條件

05.05.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

05.06.非零 TMT1 必須(shall)小於 TMT2,且兩者必須落在 MNTMT~MXTMT 內;否則回 Invalid Field in Command。達 TMT1 時 controller 採降低影響的動作,達 TMT2 時採更強動作;hysteresis 由 vendor 決定。

MNTMT
Minimum Thermal Management Temperature,HCTM 可設定的最低 Kelvin 值。
MXTMT
Maximum Thermal Management Temperature,HCTM 可設定的最高 Kelvin 值。
來源:Base 2.4 §5.2.30.1.10, 8.1.19.5

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.10, 8.1.19.5, 文件頁 472, 670-671, PDF 頁 498, 696-697

05.07.FID 11h 的 NOPPME=1 允許 controller-initiated background operation 暫時把 power 提高到不超過最後一個 operational state 的上限;NOPPME=0 時,這類工作不得超過目前 non-operational state limits。

來源:Base 2.4 §5.2.30.1.11

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.11, 文件頁 472-473, PDF 頁 498-499

05.08.RTD3E 與 RTD3R 分別描述進入與恢復時間,供 PCIe D3cold 使用情境評估 idle break-even;NVMe 文字明確說這不是 D3hot 的時間。PCIe D-state 的完整原始行為不在目前提供來源內,不能據此自行補寫。

RTD3E
Runtime D3 Entry Latency,controller 進入 PCIe D3cold 使用情境的預期時間。
RTD3R
Runtime D3 Resume Latency,controller 從 PCIe D3cold 使用情境恢復的預期時間。
PCIe
PCI Express,NVMe memory-based controller 使用的 transport 與裝置互連。
來源:Base 2.4 §8.1.19.4

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.4, 文件頁 669-670, PDF 頁 695-696

05.09.Get Features 指定不適用的 Controller Identifier 時,command-specific status 1Fh 表示 Invalid Controller Identifier;狀態碼需連同 SCT 解讀。

SCT
Status Code Type;指定完成狀態碼所屬類別,需與 SC 一起解讀。
來源:Base 2.4 §5.2.12.2

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12.2, 文件頁 212, PDF 頁 238

HCTM 的兩級熱管理
熱管理欄位或統計設定或觀察的內容使用前需確認什麼
TMT1較輕度控制起點目標是 minimize impact
TMT2較強控制起點溫控優先於 impact
MNTMT/MXTMT合法設定範圍先做 host-side validation
SMART counterstransition count/time證明 control loop 真的動作
閱讀相關規格圖表 → HCTM 的兩級熱管理

06 讀懂本篇的規格圖表

06.01.以下依概念整理規格中的圖表。每組先說明讀取順序與要判斷的問題,接著列出各圖的欄位或行為說明。可以由正文的連結跳到對應組別,也可以用這一節檢查自己能否把欄位連回完整操作。

圖表組 01 · Feature 的能力、讀取與設定 · 11 張圖表

06.02.Get Features 的 CDW10 同時含 FID 與 SEL。先以 FID 選功能,再用 SEL 選 current、default、saved 或 supported capabilities;不要把支援旗標的回傳格式當成一般設定值。

回到本節的解釋與範例

查能力、讀取值與寫入值的區別

06.03.FID 指功能,Get 的 SEL 指要查哪一種資訊,Set 的 SV 指是否要求保存。支援能力回覆的 bits 與功能值是不同結構。

一起判讀的欄位或標示如何共同決定操作或結果帶入情境後怎麼讀
FID/UIDX/DPTRFID 選功能,必要時 UIDX 協助選 UUID,DPTR 傳輸該功能所需的資料結構。不是每個 Feature 都只靠 CQE DW0 回覆;有 buffer 的功能還需讀其資料格式。
SEL=000b/001b/010b/011b分別要求目前值、預設值、保存值、支援能力。要確認裝置現在採用什麼值,應讀目前值;保存值不等於正在使用的值。
CHANG/NSSPEC/SVBL → SV能力分別指出可變更、是否與 namespace 有關、可否保存;SV 是主機的保存要求。SVBL=0 時提出保存要求可能被拒絕;Set 成功也不能一律推論跨 power cycle 保留。
UIDX
UUID Index,指向 UUID List 位置的 index;0 表示未指定 UUID。
UUID
Universally Unique Identifier,128-bit identifier;其實際關聯範圍仍由使用它的資料結構決定。
來源:Base 2.4 §5.2.12 · Base 2.4 §5.2.12.2 · Base 2.4 §5.2.30

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 197, 文件頁 209, PDF 頁 235

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 198, 文件頁 209-210, PDF 頁 235-236

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 199, 文件頁 210, PDF 頁 236

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 200, 文件頁 210-211, PDF 頁 236-237

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12.2, Figure 201, 文件頁 212, PDF 頁 238

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12.2, Figure 202, 文件頁 212, PDF 頁 238

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, Figure 463, 文件頁 456, PDF 頁 482

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, Figure 464, 文件頁 457, PDF 頁 483

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, Figure 465, 文件頁 457, PDF 頁 483

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, Figure 466, 文件頁 457-459, PDF 頁 483-485

Base Figure 197 · Get Features – Data Pointer

一句話重點

Base197-1Get Features 的 DPTR 是需要資料結構時的回傳位置。

來源:Base 2.4 §5.2.12

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 197, 文件頁 209, PDF 頁 235

用例子讀懂

Base197-2查詢一個會回傳資料 buffer 的 Feature,先準備相應大小的目的空間;不是每個 Feature 都只靠 CQE DW0 回傳全部內容。

Base Figure 198 · Get Features – Command Dword 10

一句話重點

Base198-1Get Features 的 FID 選功能,SEL 選要查目前值、預設值等資訊。

來源:Base 2.4 §5.2.12

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 198, 文件頁 209-210, PDF 頁 235-236

用例子讀懂

Base198-2查 current 與查 saved 可以回不同內容;兩次 FID 相同不表示查詢完全相同。

Base Figure 199 · Get Features – Command Dword 14

一句話重點

Base199-1Get Features 的 UIDX 在使用 UUID 選擇時提供索引。

來源:Base 2.4 §5.2.12

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 199, 文件頁 210, PDF 頁 236

用例子讀懂

Base199-2UIDX 是 UUID List 中的位置,不是把 128-bit UUID 直接塞進命令欄位;使用前先確認該索引對應誰。

Base Figure 200 · Feature Identifiers for Get Features

一句話重點

Base200-1Get Features 清單列出 FID 與該功能回傳形式。

來源:Base 2.4 §5.2.12

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 200, 文件頁 210-211, PDF 頁 236-237

用例子讀懂

Base200-2先由想查的功能找到 FID,再看需要 CQE 結果還是資料結構;不能用上一個 Feature 的接收格式讀下一個。

Base Figure 201 · Get Features – Select Supported Capabilities

一句話重點

Base201-1Supported Capabilities 回覆把可修改、namespace 範圍與可保存能力分開。

來源:Base 2.4 §5.2.12.2

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12.2, Figure 201, 文件頁 212, PDF 頁 238

用例子讀懂

Base201-2CHANG 表示可修改,SVBL 表示可保存;支援其中一項,不代表另一項也成立。

Base Figure 202 · Get Features – Command Specific Status Values

一句話重點

Base202-1Get Features 的命令專屬錯誤指出查詢目標等要求不成立。

來源:Base 2.4 §5.2.12.2

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12.2, Figure 202, 文件頁 212, PDF 頁 238

用例子讀懂

Base202-2回覆 Invalid Controller Identifier 時,應確認指定控制器識別碼,不把它解釋成 Feature 數值本身超出範圍。

Base Figure 463 · Set Features – Data Pointer

一句話重點

Base463-1Set Features 的 DPTR 提供需要傳入的功能資料。

來源:Base 2.4 §5.2.30

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, Figure 463, 文件頁 456, PDF 頁 482

用例子讀懂

Base463-2設定 HMB 時傳入描述子相關資料,與單純只在 CDW11 放一個開關不同;先看該 Feature 是否使用資料 buffer。

HMB
Host Memory Buffer,由 host 配置並在 enable 期間交由 controller 專用的 volatile memory ranges。

Base Figure 464 · Set Features – Command Dword 10

一句話重點

Base464-1Set Features 的 FID 選功能,SV 表示是否要求保存。

來源:Base 2.4 §5.2.30

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, Figure 464, 文件頁 457, PDF 頁 483

用例子讀懂

Base464-2主機要求 SV=1 前先確認 Feature 可保存;設定成功與重設後仍保留,是需要分別核對的行為。

Base Figure 465 · Set Features – Command Dword 14

一句話重點

Base465-1Set Features 的 UIDX 用於相應 UUID 關聯的選擇。

來源:Base 2.4 §5.2.30

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, Figure 465, 文件頁 457, PDF 頁 483

用例子讀懂

Base465-2若使用 UUID List 的某一項,先確認索引對應與適用規則;UIDX 不是 Set Features 的新 FID。

Base Figure 466 · Feature Identifiers for Set Features

一句話重點

Base466-1Set Features 的識別碼清單指引每種功能的專屬欄位。

來源:Base 2.4 §5.2.30

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, Figure 466, 文件頁 457-459, PDF 頁 483-485

用例子讀懂

Base466-2FID 02h 的 CDW11 是 Power Management,FID 0Ch 的相同位置是 APST;欄位位置相同不表示內容相同。

同一筆命令的身分、對象與資料方向

06.04.CDW0 先選操作與資料指標格式;NSID 選操作對象;DPTR/MPTR 再指向資料。命令專屬 Dwords 的含義由 OPC 與命令集決定。

MPTR
Metadata Pointer,SQE 中指出獨立 metadata buffer 的欄位。
NSID
Namespace Identifier,controller 用來指向 namespace 的數值 handle;identifier 不等於 namespace 物件本身。
一起判讀的欄位或標示如何共同決定操作或結果帶入情境後怎麼讀
OPC/FUSE/CIDOPC 選操作,FUSE 說明融合操作角色,CID 讓完成項目找回原命令。相同的 CDW10 數值放在 Read 與 Set Features 中,可能完全不是同一種意思。
PSDT → DPTR/MPTRPSDT 決定指標依 PRP 或 SGL 等格式解讀;指標內的數值不可在未選格式時直接當成長度。主機先選指標格式,再按該格式準備 buffer 描述,最後由命令語意判斷資料方向。
NSID/CDW2–CDW15NSID 與命令專屬欄位共同決定對象、範圍及選項。Create 的 DPTR 指向建立參數;它不是新 namespace 的實體儲存位址。
NDT/NDM/MDPTR廠商命令使用共同格式時,資料與 metadata 長度各有自己的欄位及指標。先看廠商命令格式支援宣告,再依長度定義換算,不能把欄位上限直接加 1 後存回同寬整數。
metadata
隨 logical block 儲存的附加資料,可包含資料保護資訊,也可有其他用途。
PSDT
PRP or SGL for Data Transfer,CDW0 中決定 DPTR 應按 PRP 或 SGL 解讀的欄位。
CID
Command Identifier,與 SQ identifier 合用以辨識 outstanding command。
NDM
Number of Dwords in Metadata Transfer,standard vendor-specific format 中的實際 metadata dword 數。
NDT
Number of Dwords in Data Transfer,standard vendor-specific format 中的實際 data dword 數。
SGL
Scatter Gather List,以 descriptor 與 segment 描述一段或多段 data buffer 的格式。
來源:Base 2.4 §4.1.1

來源:NVME-BASE-2.4, Rev. 2.4, §4.1.1, Figure 93, 文件頁 140-142, PDF 頁 166-168

Base Figure 93 · Common Command Format

一句話重點

Base93-1共通 SQE 固定各命令共用欄位的位置。

SQE
Submission Queue Entry,SQ 中的一筆命令資料結構。
來源:Base 2.4 §4.1.1

來源:NVME-BASE-2.4, Rev. 2.4, §4.1.1, Figure 93, 文件頁 140-142, PDF 頁 166-168

用例子讀懂

Base93-2同樣在 CDW10,Read 與管理命令可以有完全不同含義;先依 OPC 選命令,再查專屬欄位表。

圖表組 02 · Power State 的功率、延遲與效能 · 6 張圖表

06.05.Power State Descriptor 先看 operational 性質,再分組讀功率、進出延遲與相對效能。功率尺度和測量條件要與數值一起看,不能把典型值和最大值放在同一欄直接排名。

回到本節的解釋與範例

先確認狀態用途,再比較功率與延遲

06.06.NPSS 指出最高支援的狀態編號;PSD 描述每個狀態的性質;Power Management 命令選狀態與 workload hint。狀態編號不是功率單位。

一起判讀的欄位或標示如何共同決定操作或結果帶入情境後怎麼讀
PS/NOPS/WHPS 選狀態,NOPS 指出是否 non-operational,WH 給工作負載提示。WH 不直接指定 IOPS;選 non-operational 狀態後,恢復服務需依狀態轉換規則。
MP/MPS;IDLP/IPS;ACTP/APS/APW功率數值需搭配比例及測量條件;最大功率、典型閒置功率與平均活動功率不可混比。原始值相同但比例不同時,實際功率不同;先換成相同單位再比較。
ENLAT/EXLAT以微秒描述進入與離開該狀態的延遲界限。由 A 直接到 B 時,先考慮 A 的 EXLAT 與 B 的 ENLAT,而不是把 B 的兩個數字相加。
RRT/RRL/RWT/RWL各自提供相對讀寫吞吐與延遲指標;同類數值之間才有可比性。不能把相對效能值 3 解釋成 3 微秒或 3 倍 IOPS。
IOPS
Input/Output Operations Per Second;每秒 I/O 操作數,與每秒傳輸 bytes 的頻寬不同。
MPS
Memory Page Size,controller 使用的 memory page 大小設定;影響 queue address 與 PRP 對齊。
來源:Base 2.4 §5.2.30.1.2 · Base 2.4 §8.1.19 · Base 2.4 §8.1.19.3 · Base 2.4 §5.2.14.2.2

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.2, Figure 468, 文件頁 461, PDF 頁 487

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, Figure 738, 文件頁 666, PDF 頁 692

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, Figure 739, 文件頁 667, PDF 頁 693

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.3, Figure 740, 文件頁 669, PDF 頁 695

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.14.2.2, Figure 340, 文件頁 383-386, PDF 頁 409-412

Base Figure 468 · Power Management – Command Dword 11

一句話重點

Base468-1Power Management 的 PS 選狀態,WH 提供工作負載提示。

來源:Base 2.4 §5.2.30.1.2

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.2, Figure 468, 文件頁 461, PDF 頁 487

用例子讀懂

Base468-2選 PS 3 前先確認該 power state 存在;WH 描述負載特性,不會替控制器新增一個 PS 3。

Base Figure 738 · Power Management Overview

一句話重點

Base738-1Power Management 總覽區分主機直接選擇與自動轉換。

來源:Base 2.4 §8.1.19

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, Figure 738, 文件頁 666, PDF 頁 692

用例子讀懂

Base738-2工作負載降低時,主機可直接要求 state,或設定 APST 讓閒置條件觸發;兩條路徑需要不同的設定資訊。

Base Figure 739 · Power State Characteristics

一句話重點

Base739-1功耗數值與轉換延遲共同描述 power state 特性。

來源:Base 2.4 §8.1.19

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, Figure 739, 文件頁 667, PDF 頁 693

用例子讀懂

Base739-2比較 PS1 與 PS2 時,較省電的狀態若離開延遲更長,下一筆 I/O 的等待成本也要納入說明。

Base Figure 740 · Workload Hints

一句話重點

Base740-1Workload Hint 告訴控制器預期負載,並非指定命令排程順序。

來源:Base 2.4 §8.1.19.3

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.3, Figure 740, 文件頁 669, PDF 頁 695

用例子讀懂

Base740-2WH=001b 與另一個允許值用來描述不同負載特性;不能把 WH 當成 SQ priority 或保證吞吐量。

SQ
Submission Queue,主機放入命令的提交佇列。

從可選狀態數到可設定的熱管理範圍

06.07.讀 Power State Descriptor 前,先由 Identify 確認狀態數、自動轉移支援與熱管理能力;這些欄位負責告訴主機後面哪些設定有意義。

一起判讀的欄位或標示如何共同決定操作或結果帶入情境後怎麼讀
NPSS/APSTANPSS 是支援狀態數減 1;APSTA 回報 APST 能力。NPSS=3 表示 PS0–PS3 共 4 個狀態,但仍要看每個描述子的 NOPS,才能知道哪些可以當 ITPS。
HCTMA/MNTMT/MXTMTHCTMA 回報 HCTM 支援,最小與最大溫度界定可設定的門檻,單位是 Kelvin。設定 TMT1、TMT2 前先確認它們在此範圍內,再檢查相對順序及停用值規則。
WCTEMP/溫度事件門檻警告複合溫度資訊與主機設定的事件/管理門檻用途不同。不要把 WCTEMP 原值直接當成全部感測器的 TMT1;先確定要控制或觀察哪一項。
RTD3E/RTD3R分別提供進入 RTD3 與恢復所需的預估延遲資訊;不等於某個 NVMe PS 的 ENLAT/EXLAT。考慮移除主要電源時,比較兩段延遲與預期閒置時間;不能把 D3cold 當成 PS3 的別名。
WCTEMP
Warning Composite Temperature Threshold,Identify Controller 回報的 composite warning threshold。
來源:Base 2.4 §5.2.14.2.1

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.14.2.1, Figure 338, 文件頁 340-364, PDF 頁 366-390

Base Figure 338 · Identify Controller Data Structure

一句話重點

Base338-1Identify Controller 先告知能力與限制,主機再決定可使用的操作。

來源:Base 2.4 §5.2.14.2.1

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.14.2.1, Figure 338, 文件頁 340-364, PDF 頁 366-390

用例子讀懂

Base338-2規格列出某選用命令時,先查相應支援欄位再發出要求;「命令有定義」與「這台控制器支援」是不同證據。

Base Figure 340 · Power State Descriptor Data Structure

一句話重點

Base340-1Power State Descriptor 同時描述功率、性能特性及進出延遲。

來源:Base 2.4 §5.2.14.2.2

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.14.2.2, Figure 340, 文件頁 383-386, PDF 頁 409-412

用例子讀懂

Base340-2低功率狀態可能有較長 EXLAT;挑選省電狀態時,不能只比較 MP 而忽略下一次 I/O 等待多久。

圖表組 03 · APST 的閒置條件與自動轉換 · 5 張圖表

06.08.APST entry 圖先解讀 ITPT 與 ITPS,再連到被選 Power State Descriptor。以 2000 ms、PS3 為例,ITPT 放入 bits31:8,ITPS 放入 bits7:3;時間值移位與目標狀態編碼分開驗算。

回到本節的解釋與範例

一個 APST entry 對應目前狀態的閒置規則

06.09.先確認 APST 支援與 APSTE,再以目前 power state 的編號找到該 entry;ITPT 給等待條件,ITPS 給目標 non-operational state。I/O 到達與背景工作另依規則處理。

一起判讀的欄位或標示如何共同決定操作或結果帶入情境後怎麼讀
APSTE/32 entries/256 bytesAPSTE 控制自動轉換是否啟用;每筆 entry 8 bytes,由 power-state index 選取。PS0 的 entry 存在,不代表控制器只會使用第一筆;目前狀態決定適用項目。
ITPT bits 31:8/ITPS bits 7:3ITPT 以 ms 表示閒置時間;ITPS 是狀態編號。ITPT=0 停用該 entry。2000 ms、目標 PS3 的低 Dword=(2000<<8)|(3<<3)=0007D018h。
NOPPME/APSTENOPPME 影響 non-operational 狀態內的背景工作功率行為,APSTE 影響自動進入狀態。允許背景工作並不等於把 APST 關閉;要分別判斷進入條件和進入後行為。
進出延遲與目前 I/O恢復處理需要走回適用 operational state,並計入轉換延遲。閒置時省下的功率,要與下一次 I/O 的等待成本一起評估。
index
index;用來選取清單中的項目或格式。它回答「選哪一項」,不是「離起點多遠」。
來源:Base 2.4 §5.2.30.1.7 · Base 2.4 §5.2.30.1.11

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, Figure 475, 文件頁 468, PDF 頁 494

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, Figure 476, 文件頁 469, PDF 頁 495

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, Figure 477, 文件頁 469, PDF 頁 495

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, Figure 478, 文件頁 469, PDF 頁 495

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.11, Figure 483, 文件頁 472-473, PDF 頁 498-499

Base Figure 475 · Autonomous Power State Transition – Command Dword 11

一句話重點

Base475-1APSTE 控制是否啟用自動 power state 轉換。

來源:Base 2.4 §5.2.30.1.7

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, Figure 475, 文件頁 468, PDF 頁 494

用例子讀懂

Base475-2主機準備好 APST 表之後才啟用 APSTE;開關本身不包含「閒置多久、轉去哪個 state」的完整策略。

Base Figure 476 · Autonomous Power State Transition Data Structure

一句話重點

Base476-1APST 表按目前 power state 索引到各自的轉換項目。

來源:Base 2.4 §5.2.30.1.7

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, Figure 476, 文件頁 469, PDF 頁 495

用例子讀懂

Base476-2有 32 個 entries、每個 8 bytes,共 256 bytes;第 3 個 state 的 entry 不等於「下一個一定轉去 state 3」。

Base Figure 477 · Autonomous Power State Transition Entry

一句話重點

Base477-1APST entry 把閒置等待時間 ITPT 與目標 state ITPS 分開編碼。

來源:Base 2.4 §5.2.30.1.7

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, Figure 477, 文件頁 469, PDF 頁 495

用例子讀懂

Base477-2ITPT=2000 ms、ITPS=3 時,低 Dword 為 (2000<<8)+(3<<3)=0007D018h;時間在 bits 31:8,state 在 bits 7:3。

Base Figure 478 · APST and NOPPME Interaction

一句話重點

Base478-1APST 與 NOPPME 的互動取決於進入狀態的方式。

來源:Base 2.4 §5.2.30.1.7

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, Figure 478, 文件頁 469, PDF 頁 495

用例子讀懂

Base478-2主機直接指定非操作狀態,與 APST timer 自動進入同名狀態,可能有不同背景處理規則;按表中進入方式讀對应列。

Base Figure 483 · Non-Operational Power State Configuration – Command Dword 11

一句話重點

Base483-1NOPPME 控制非操作 power state 下的相應行為許可。

來源:Base 2.4 §5.2.30.1.11

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.11, Figure 483, 文件頁 472-473, PDF 頁 498-499

用例子讀懂

Base483-2允許某些背景行為,不代表該狀態因此變成一般可處理 I/O 的操作狀態;仍要看 power state 定義。

圖表組 04 · 溫度門檻、感測器與通知 · 3 張圖表

06.10.先看 TMPSEL 與 THSEL,再配對 TMPTH、TMPTHH。在溫度軸上分別標出觸發和解除位置,用規格的比較符號確認邊界,並與 SMART 的感測器讀值對照。

回到本節的解釋與範例

溫度觀察、事件門檻與熱管理控制

06.11.SMART 提供觀察值與累計資訊,Temperature Threshold 決定事件判斷,HCTM 決定主機設定的熱管理門檻。溫度相同,不表示這三種資料都代表相同狀態。

一起判讀的欄位或標示如何共同決定操作或結果帶入情境後怎麼讀
TMPSEL/THSEL/TMPTH/TMPTHH先選感測來源及超過或低於門檻的類型,再解讀門檻值及 hysteresis 值。比較前統一溫度單位,不能把 Celsius 直接填入要求 Kelvin 的欄位。
TMT1/TMT2/hysteresis兩個熱管理門檻須符合支援範圍與順序;回復行為還需配合控制器定義。溫度下降後的恢復點不一定等於升溫時開始限制的那個點。
Composite Temperature/Sensors/累計時間與次數即時溫度、各感測器讀值與過去累計統計回答不同問題。目前溫度已下降,歷史 throttling 累計時間仍可保留;這不是欄位互相矛盾。
來源:Base 2.4 §5.2.30.1.3.1 · Base 2.4 §5.2.30.1.10 · Base 2.4 §8.1.19.5 · Base 2.4 §5.2.13.1.3

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.3.1, Figure 470, 文件頁 463-464, PDF 頁 489-490

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.10, Figure 482, 文件頁 472, PDF 頁 498

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.5, Figure 741, 文件頁 671, PDF 頁 697

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.3, Figure 213, 文件頁 220-225, PDF 頁 246-251

Base Figure 470 · Temperature Threshold – Command Dword 11

一句話重點

Base470-1溫度門檻要同時指定感測器、方向、門檻值與遲滯。

來源:Base 2.4 §5.2.30.1.3.1

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.3.1, Figure 470, 文件頁 463-464, PDF 頁 489-490

用例子讀懂

Base470-2對同一感測器設定高溫門檻與低溫門檻時,THSEL 不同;不能只用一個 TMPTH 數值描述兩種觸發條件。

Base Figure 213 · SMART / Health Information Log

一句話重點

Base213-1SMART/Health log 把溫度、健康狀態與累計統計分開回報。

來源:Base 2.4 §5.2.13.1.3

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.3, Figure 213, 文件頁 220-225, PDF 頁 246-251

用例子讀懂

Base213-2Composite Temperature 與個別感測器溫度不同,HCTM 累計計數又是另一種單位;不能把整張表全部當成即時溫度。

事件通知指出要重新讀哪份狀態

06.12.先依功能設定允許的事件通知,再由 AER 完成項目辨認事件類型、資訊與相應 log。通知、log 內容及事件確認是流程中的不同步驟。

AER
Advanced Error Reporting,PCIe 用來分類、遮罩與記錄 link/transaction error 的 capability。
一起判讀的欄位或標示如何共同決定操作或結果帶入情境後怎麼讀
AET → AEI → LIDAET 選事件類別,AEI 指出該類別的事件,LID 指引相關紀錄。收到 Telemetry Log Changed 時,先辨認類別與 log,再讀取紀錄;通知本身不是 payload。
EVNTSP提供事件專屬的補充資訊,依該事件定義解讀。同一個 DW1 位置在不同事件下,不保證代表相同對象。
Notice enable/RAE前者控制相應通知,RAE 影響讀 log 時是否保留相關事件;兩者目的不同。計畫分段取回同一份紀錄時,將確認事件的時機放在完整流程中決定。
LID
Log Page Identifier;指定要讀取哪一種 log page 的編號。
RAE
Retain Asynchronous Event,Get Log Page 是否保留相關 asynchronous event 的 selector。
來源:Base 2.4 §5.2.30.1.6

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.6, Figure 474, 文件頁 466-468, PDF 頁 492-494

Base Figure 474 · Asynchronous Event Configuration – Command Dword 11

一句話重點

Base474-1Asynchronous Event Configuration 各 bit 選擇對應的通知類別。

來源:Base 2.4 §5.2.30.1.6

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.6, Figure 474, 文件頁 466-468, PDF 頁 492-494

用例子讀懂

Base474-2主機啟用本篇需要的通知時,只設定對應的事件 bit;一種通知已啟用,不會自動啟用其他通知。

圖表組 05 · HCTM 的兩級熱管理 · 2 張圖表

06.13.將 TMT1、TMT2 放在同一條溫度軸,再用 MNTMT、MXTMT 檢查允許範圍。SMART 中的次數和時間對應控制活動的累計紀錄,不與門檻設定值混讀。

回到本節的解釋與範例

Base Figure 482 · Host Controlled Thermal Management – Command Dword 11

一句話重點

Base482-1HCTM 用 TMT1 與 TMT2 指定兩個熱管理門檻。

來源:Base 2.4 §5.2.30.1.10

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.10, Figure 482, 文件頁 472, PDF 頁 498

用例子讀懂

Base482-2先標出兩個門檻在溫度軸上的順序,再看進入與解除條件;不能把 TMT2 當成第二個感測器編號。

Base Figure 741 · Host Controlled Thermal Management

一句話重點

Base741-1熱管理圖用溫度門檻與遲滯解釋限速的進出。

來源:Base 2.4 §8.1.19.5

來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.5, Figure 741, 文件頁 671, PDF 頁 697

用例子讀懂

Base741-2溫度剛從門檻上方降回附近時,不一定立刻解除限制;沿遲滯區間讀圖可理解為何狀態不反覆抖動。

06.14.若要求 保存值,但 controller 不支援 保存值 或尚無 保存值,controller 會以 預設值 運作。這不是『讀取成功就代表曾經儲存』。

來源:Base 2.4 §5.2.12

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, 文件頁 210, PDF 頁 236

06.15.CDW14.UIDX 只有在 controller 支援 UUID List 且該 Feature 需要 UUID 關聯時才有意義;未使用時保留為 0。

來源:Base 2.4 §5.2.12

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, 文件頁 210, PDF 頁 236

06.16.本報告五個 FID 的 scope 都是 Controller。FID 02h、04h、0Ch、11h 不支援 save;FID 10h 支援 save。只有 FID 0Ch 需要 256-byte data structure。

來源:Base 2.4 §5.2.30

來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, 文件頁 457-459, PDF 頁 483-485

學完後想一想

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