功耗狀態
01-01比較功耗、可否處理 I/O,以及進出狀態的延遲。
- I/O
- Input/Output,對 namespace 執行資料輸入與輸出的操作類別。
NVMe · 規格與原理
00.01.NVMe 的功耗與溫度管理是在耗電、回應延遲與工作能力之間做取捨。本篇先建立 power state 的意義,再說明主機設定、自動閒置轉移與溫度相關控制如何分工。
01-01比較功耗、可否處理 I/O,以及進出狀態的延遲。
02-01理解 Get/Set Features、APST 與背景工作的限制。
03-01分開溫度事件通知與控制器的熱管理行為。
00.02.Features 是控制器提供給主機查詢或設定的功能。支援某個功能、目前功能值,以及設定能否跨斷電保存,是不同資訊。
00.03.電源管理在功耗、恢復服務所需時間與溫度之間安排操作。先理解電源狀態有哪些能力,再看主機如何讀寫 Feature;APST 依閒置時間轉換狀態,溫度門檻與 HCTM 則依溫度處理不同問題。
00.04.通知門檻用來回報溫度事件,熱管理門檻用來控制行為,兩者不能互換。學完應能解釋選擇較省電狀態可能帶來哪些延遲,以及設定值、目前狀態和累計統計分別告訴我們什麼。
01.01.同一個 Feature 可以有目前值、預設值及保存值。主機讀取時需要用 SEL 說明想查哪一種;讀到保存值不代表它就是目前正在使用的值。支援能力查詢則另外告訴主機這個 Feature 是否可變更、可保存,以及作用對象是否與 namespace 有關。
01.02.設定流程應先確認可變更,再選擇符合控制器能力的值。是否保存是另一個選擇,不能因為 Set 成功就假設下次重設或斷電後仍會使用它。這個讀取與設定的共同流程,會被後面各個電源及溫度 Feature 使用。
來源: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/保存值。
來源: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。
來源: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 是兩種不同資料,不能混解。
來源: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。
來源: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 完成,再切換。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, 文件頁 459, PDF 頁 485
| Get Features 選擇值 | 要求讀取什麼 | 可用來做哪種判斷 |
|---|---|---|
| SEL=000b | 目前值 | 確認控制器目前採用的設定 |
| SEL=001b | 預設值 | 了解預設設定 |
| SEL=010b | 保存值 | 不等於一定曾經 save |
| SEL=011b | CHANG/NSSPEC/SVBL | 寫入前的 功能支援條件 |
02.01.讀 Power State Descriptor 的 NOPS,確認狀態屬 operational 或 non-operational。數字較大的 PS 不代表一定不能處理 I/O;分類應由描述子決定。
02.02.假設 PS0 到 PS3,PS0 的 EXLAT=0、PS3 的 ENLAT=100 μs;喚回 PS0 時,PS3 的 EXLAT=500 μs、PS0 的 ENLAT=0。這是一組說明性數值,進入與退出各使用來源狀態的 EXLAT 加目標狀態的 ENLAT。
02.03.若下一筆 I/O 很快到達,500 μs 的喚醒成本可能成為明顯等待;長時間閒置才有較多時間享受低功耗。比較時同時保留時間與功率,不能只找最小的 MP 值。
來源: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
02.05.controller 必須(shall)至少支援一個 power state,最多可(may)支援 32 個,編號從 0 連續排列。PS0 的 maximum power 最高;後續 state 的 maximum power 不得高於前一個 state。
來源: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 是不同測量情境,不能拿單次瞬間功耗互相比。
來源: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 相加。
來源: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 混成一個總分。
來源: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 關機。
來源: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 中止。
來源: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。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.3, 文件頁 669, PDF 頁 695
| 電源狀態屬性 | 描述的功耗或效能 | 比較時需要的條件 |
|---|---|---|
| MP | 持續最大功率 | 不是瞬間 sample |
| IDLP/ACTP | 閒置典型功率/工作中平均功率 | 測量條件不同 |
| ENLAT/EXLAT | 進入/離開 maximum latency | 跨 state 必須相加 |
| RRT/RRL/RWT/RWL | 相對吞吐量/相對延遲 | 只在同類 characteristic 比較 |
03.01.假設控制器目前處於 operational PS0,支援 non-operational PS3。PS0 的 entry 選 ITPS=3、ITPT=2000 ms;這份 entry 放在表格的 PS0 位置,並不是放到目標 PS3 的位置。
03.02.低 Dword=(2000<<8)|(3<<3)=0007D018h。bits 31:8 保存時間,bits 7:3 保存狀態編號。兩者相鄰但單位不同,不能把整個 Dword 轉成一個毫秒數。
03.03.APSTE=1 且在目前狀態連續閒置超過 ITPT 時,依這筆 entry 轉入 PS3。新的 I/O 到來後,先回到適用的 operational state 再處理;進出延遲因此影響這筆 I/O 的等待。
03.04.NOPPME 控制 non-operational 狀態下的背景工作行為,APSTE 控制自動轉移。允許背景工作不等於停用 APST;必須分別理解「如何進入」與「進入後可做什麼」。
來源: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
03.06.FID 0Ch 的 APSTE=1 啟用 Autonomous Power State Transition(APST);預設值是 0。啟用只表示 controller 可依 APST table 的 idle timer 自主切換,並不保證一定進入任何特定 state。
來源: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。
來源: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』。
來源: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。
來源: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。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, 文件頁 456-457, PDF 頁 482-483
| 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 限制 |
04.01.溫度門檻先要指定感測器,再選擇高溫或低溫方向。相同溫度值若套到不同感測器或比較方向,代表的事件也不同。TMPTH 使用 Kelvin;為了日常閱讀可以換算成攝氏,但編碼與比較仍要依原始單位進行。
04.02.Hysteresis 讓事件解除的溫度與觸發溫度不同,避免溫度在門檻附近小幅波動時反覆切換。以高溫門檻為例,降溫後需符合解除條件,不能只看到低於觸發值就忽略遲滯設定。通知描述的是溫度事件,並不等於 HCTM 已採取某一級熱控制。
來源: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。
來源: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 時結束。
來源: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。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.13.1.3, 文件頁 220-225, PDF 頁 246-251
| 門檻欄位 | 選擇或設定什麼 | 事件觸發與解除如何判斷 |
|---|---|---|
| TMPSEL | Composite 或 sensor 1-8 | Get 不使用 all-sensors selector |
| THSEL | over/under | 比較方向相反 |
| TMPTH | 觸發 Kelvin | log raw K 及轉換後 °C |
| TMPTHH | clear hysteresis Kelvin | 不是第二個觸發 threshold |
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。到達較高門檻時,控制器的規範義務與較低門檻不同;其實際調整功耗狀態或採用其他方式仍有實作空間。
05.03.升溫時觸發某個動作,不表示剛降回同一數字就立即恢復。回復行為涉及 hysteresis;它讓控制不會在門檻附近反覆切換。觀察曲線時要把升溫與降溫路徑分開看。
來源: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。
來源: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 決定。
來源: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。
來源: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 的完整原始行為不在目前提供來源內,不能據此自行補寫。
來源: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 解讀。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12.2, 文件頁 212, PDF 頁 238
| 熱管理欄位或統計 | 設定或觀察的內容 | 使用前需確認什麼 |
|---|---|---|
| TMT1 | 較輕度控制起點 | 目標是 minimize impact |
| TMT2 | 較強控制起點 | 溫控優先於 impact |
| MNTMT/MXTMT | 合法設定範圍 | 先做 host-side validation |
| SMART counters | transition count/time | 證明 control loop 真的動作 |
06.01.以下依概念整理規格中的圖表。每組先說明讀取順序與要判斷的問題,接著列出各圖的欄位或行為說明。可以由正文的連結跳到對應組別,也可以用這一節檢查自己能否把欄位連回完整操作。
06.02.Get Features 的 CDW10 同時含 FID 與 SEL。先以 FID 選功能,再用 SEL 選 current、default、saved 或 supported capabilities;不要把支援旗標的回傳格式當成一般設定值。
回到本節的解釋與範例06.03.FID 指功能,Get 的 SEL 指要查哪一種資訊,Set 的 SV 指是否要求保存。支援能力回覆的 bits 與功能值是不同結構。
| 一起判讀的欄位或標示 | 如何共同決定操作或結果 | 帶入情境後怎麼讀 |
|---|---|---|
| FID/UIDX/DPTR | FID 選功能,必要時 UIDX 協助選 UUID,DPTR 傳輸該功能所需的資料結構。 | 不是每個 Feature 都只靠 CQE DW0 回覆;有 buffer 的功能還需讀其資料格式。 |
| SEL=000b/001b/010b/011b | 分別要求目前值、預設值、保存值、支援能力。 | 要確認裝置現在採用什麼值,應讀目前值;保存值不等於正在使用的值。 |
| CHANG/NSSPEC/SVBL → SV | 能力分別指出可變更、是否與 namespace 有關、可否保存;SV 是主機的保存要求。 | SVBL=0 時提出保存要求可能被拒絕;Set 成功也不能一律推論跨 power cycle 保留。 |
來源: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
Base197-1Get Features 的 DPTR 是需要資料結構時的回傳位置。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 197, 文件頁 209, PDF 頁 235
Base197-2查詢一個會回傳資料 buffer 的 Feature,先準備相應大小的目的空間;不是每個 Feature 都只靠 CQE DW0 回傳全部內容。
Base198-1Get Features 的 FID 選功能,SEL 選要查目前值、預設值等資訊。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 198, 文件頁 209-210, PDF 頁 235-236
Base198-2查 current 與查 saved 可以回不同內容;兩次 FID 相同不表示查詢完全相同。
Base199-1Get Features 的 UIDX 在使用 UUID 選擇時提供索引。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 199, 文件頁 210, PDF 頁 236
Base199-2UIDX 是 UUID List 中的位置,不是把 128-bit UUID 直接塞進命令欄位;使用前先確認該索引對應誰。
Base200-1Get Features 清單列出 FID 與該功能回傳形式。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, Figure 200, 文件頁 210-211, PDF 頁 236-237
Base200-2先由想查的功能找到 FID,再看需要 CQE 結果還是資料結構;不能用上一個 Feature 的接收格式讀下一個。
Base201-1Supported Capabilities 回覆把可修改、namespace 範圍與可保存能力分開。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12.2, Figure 201, 文件頁 212, PDF 頁 238
Base201-2CHANG 表示可修改,SVBL 表示可保存;支援其中一項,不代表另一項也成立。
Base202-1Get Features 的命令專屬錯誤指出查詢目標等要求不成立。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12.2, Figure 202, 文件頁 212, PDF 頁 238
Base202-2回覆 Invalid Controller Identifier 時,應確認指定控制器識別碼,不把它解釋成 Feature 數值本身超出範圍。
Base463-1Set Features 的 DPTR 提供需要傳入的功能資料。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, Figure 463, 文件頁 456, PDF 頁 482
Base463-2設定 HMB 時傳入描述子相關資料,與單純只在 CDW11 放一個開關不同;先看該 Feature 是否使用資料 buffer。
Base464-1Set Features 的 FID 選功能,SV 表示是否要求保存。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, Figure 464, 文件頁 457, PDF 頁 483
Base464-2主機要求 SV=1 前先確認 Feature 可保存;設定成功與重設後仍保留,是需要分別核對的行為。
Base465-1Set Features 的 UIDX 用於相應 UUID 關聯的選擇。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, Figure 465, 文件頁 457, PDF 頁 483
Base465-2若使用 UUID List 的某一項,先確認索引對應與適用規則;UIDX 不是 Set Features 的新 FID。
Base466-1Set Features 的識別碼清單指引每種功能的專屬欄位。
來源: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 與命令集決定。
| 一起判讀的欄位或標示 | 如何共同決定操作或結果 | 帶入情境後怎麼讀 |
|---|---|---|
| OPC/FUSE/CID | OPC 選操作,FUSE 說明融合操作角色,CID 讓完成項目找回原命令。 | 相同的 CDW10 數值放在 Read 與 Set Features 中,可能完全不是同一種意思。 |
| PSDT → DPTR/MPTR | PSDT 決定指標依 PRP 或 SGL 等格式解讀;指標內的數值不可在未選格式時直接當成長度。 | 主機先選指標格式,再按該格式準備 buffer 描述,最後由命令語意判斷資料方向。 |
| NSID/CDW2–CDW15 | NSID 與命令專屬欄位共同決定對象、範圍及選項。 | Create 的 DPTR 指向建立參數;它不是新 namespace 的實體儲存位址。 |
| NDT/NDM/MDPTR | 廠商命令使用共同格式時,資料與 metadata 長度各有自己的欄位及指標。 | 先看廠商命令格式支援宣告,再依長度定義換算,不能把欄位上限直接加 1 後存回同寬整數。 |
來源:NVME-BASE-2.4, Rev. 2.4, §4.1.1, Figure 93, 文件頁 140-142, PDF 頁 166-168
Base93-1共通 SQE 固定各命令共用欄位的位置。
來源:NVME-BASE-2.4, Rev. 2.4, §4.1.1, Figure 93, 文件頁 140-142, PDF 頁 166-168
Base93-2同樣在 CDW10,Read 與管理命令可以有完全不同含義;先依 OPC 選命令,再查專屬欄位表。
06.05.Power State Descriptor 先看 operational 性質,再分組讀功率、進出延遲與相對效能。功率尺度和測量條件要與數值一起看,不能把典型值和最大值放在同一欄直接排名。
回到本節的解釋與範例06.06.NPSS 指出最高支援的狀態編號;PSD 描述每個狀態的性質;Power Management 命令選狀態與 workload hint。狀態編號不是功率單位。
| 一起判讀的欄位或標示 | 如何共同決定操作或結果 | 帶入情境後怎麼讀 |
|---|---|---|
| PS/NOPS/WH | PS 選狀態,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。 |
來源: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
Base468-1Power Management 的 PS 選狀態,WH 提供工作負載提示。
來源: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。
Base738-1Power Management 總覽區分主機直接選擇與自動轉換。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, Figure 738, 文件頁 666, PDF 頁 692
Base738-2工作負載降低時,主機可直接要求 state,或設定 APST 讓閒置條件觸發;兩條路徑需要不同的設定資訊。
Base739-1功耗數值與轉換延遲共同描述 power state 特性。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19, Figure 739, 文件頁 667, PDF 頁 693
Base739-2比較 PS1 與 PS2 時,較省電的狀態若離開延遲更長,下一筆 I/O 的等待成本也要納入說明。
Base740-1Workload Hint 告訴控制器預期負載,並非指定命令排程順序。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.3, Figure 740, 文件頁 669, PDF 頁 695
Base740-2WH=001b 與另一個允許值用來描述不同負載特性;不能把 WH 當成 SQ priority 或保證吞吐量。
06.07.讀 Power State Descriptor 前,先由 Identify 確認狀態數、自動轉移支援與熱管理能力;這些欄位負責告訴主機後面哪些設定有意義。
| 一起判讀的欄位或標示 | 如何共同決定操作或結果 | 帶入情境後怎麼讀 |
|---|---|---|
| NPSS/APSTA | NPSS 是支援狀態數減 1;APSTA 回報 APST 能力。 | NPSS=3 表示 PS0–PS3 共 4 個狀態,但仍要看每個描述子的 NOPS,才能知道哪些可以當 ITPS。 |
| HCTMA/MNTMT/MXTMT | HCTMA 回報 HCTM 支援,最小與最大溫度界定可設定的門檻,單位是 Kelvin。 | 設定 TMT1、TMT2 前先確認它們在此範圍內,再檢查相對順序及停用值規則。 |
| WCTEMP/溫度事件門檻 | 警告複合溫度資訊與主機設定的事件/管理門檻用途不同。 | 不要把 WCTEMP 原值直接當成全部感測器的 TMT1;先確定要控制或觀察哪一項。 |
| RTD3E/RTD3R | 分別提供進入 RTD3 與恢復所需的預估延遲資訊;不等於某個 NVMe PS 的 ENLAT/EXLAT。 | 考慮移除主要電源時,比較兩段延遲與預期閒置時間;不能把 D3cold 當成 PS3 的別名。 |
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.14.2.1, Figure 338, 文件頁 340-364, PDF 頁 366-390
Base338-1Identify Controller 先告知能力與限制,主機再決定可使用的操作。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.14.2.1, Figure 338, 文件頁 340-364, PDF 頁 366-390
Base338-2規格列出某選用命令時,先查相應支援欄位再發出要求;「命令有定義」與「這台控制器支援」是不同證據。
Base340-1Power State Descriptor 同時描述功率、性能特性及進出延遲。
來源: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 等待多久。
06.08.APST entry 圖先解讀 ITPT 與 ITPS,再連到被選 Power State Descriptor。以 2000 ms、PS3 為例,ITPT 放入 bits31:8,ITPS 放入 bits7:3;時間值移位與目標狀態編碼分開驗算。
回到本節的解釋與範例06.09.先確認 APST 支援與 APSTE,再以目前 power state 的編號找到該 entry;ITPT 給等待條件,ITPS 給目標 non-operational state。I/O 到達與背景工作另依規則處理。
| 一起判讀的欄位或標示 | 如何共同決定操作或結果 | 帶入情境後怎麼讀 |
|---|---|---|
| APSTE/32 entries/256 bytes | APSTE 控制自動轉換是否啟用;每筆 entry 8 bytes,由 power-state index 選取。 | PS0 的 entry 存在,不代表控制器只會使用第一筆;目前狀態決定適用項目。 |
| ITPT bits 31:8/ITPS bits 7:3 | ITPT 以 ms 表示閒置時間;ITPS 是狀態編號。ITPT=0 停用該 entry。 | 2000 ms、目標 PS3 的低 Dword=(2000<<8)|(3<<3)=0007D018h。 |
| NOPPME/APSTE | NOPPME 影響 non-operational 狀態內的背景工作功率行為,APSTE 影響自動進入狀態。 | 允許背景工作並不等於把 APST 關閉;要分別判斷進入條件和進入後行為。 |
| 進出延遲與目前 I/O | 恢復處理需要走回適用 operational state,並計入轉換延遲。 | 閒置時省下的功率,要與下一次 I/O 的等待成本一起評估。 |
來源: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
Base475-1APSTE 控制是否啟用自動 power state 轉換。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, Figure 475, 文件頁 468, PDF 頁 494
Base475-2主機準備好 APST 表之後才啟用 APSTE;開關本身不包含「閒置多久、轉去哪個 state」的完整策略。
Base476-1APST 表按目前 power state 索引到各自的轉換項目。
來源: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」。
Base477-1APST entry 把閒置等待時間 ITPT 與目標 state ITPS 分開編碼。
來源: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。
Base478-1APST 與 NOPPME 的互動取決於進入狀態的方式。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.7, Figure 478, 文件頁 469, PDF 頁 495
Base478-2主機直接指定非操作狀態,與 APST timer 自動進入同名狀態,可能有不同背景處理規則;按表中進入方式讀對应列。
Base483-1NOPPME 控制非操作 power state 下的相應行為許可。
來源: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 定義。
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 累計時間仍可保留;這不是欄位互相矛盾。 |
來源: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
Base470-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 數值描述兩種觸發條件。
Base213-1SMART/Health log 把溫度、健康狀態與累計統計分開回報。
來源: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 內容及事件確認是流程中的不同步驟。
| 一起判讀的欄位或標示 | 如何共同決定操作或結果 | 帶入情境後怎麼讀 |
|---|---|---|
| AET → AEI → LID | AET 選事件類別,AEI 指出該類別的事件,LID 指引相關紀錄。 | 收到 Telemetry Log Changed 時,先辨認類別與 log,再讀取紀錄;通知本身不是 payload。 |
| EVNTSP | 提供事件專屬的補充資訊,依該事件定義解讀。 | 同一個 DW1 位置在不同事件下,不保證代表相同對象。 |
| Notice enable/RAE | 前者控制相應通知,RAE 影響讀 log 時是否保留相關事件;兩者目的不同。 | 計畫分段取回同一份紀錄時,將確認事件的時機放在完整流程中決定。 |
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.6, Figure 474, 文件頁 466-468, PDF 頁 492-494
Base474-1Asynchronous Event Configuration 各 bit 選擇對應的通知類別。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.6, Figure 474, 文件頁 466-468, PDF 頁 492-494
Base474-2主機啟用本篇需要的通知時,只設定對應的事件 bit;一種通知已啟用,不會自動啟用其他通知。
06.13.將 TMT1、TMT2 放在同一條溫度軸,再用 MNTMT、MXTMT 檢查允許範圍。SMART 中的次數和時間對應控制活動的累計紀錄,不與門檻設定值混讀。
回到本節的解釋與範例Base482-1HCTM 用 TMT1 與 TMT2 指定兩個熱管理門檻。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30.1.10, Figure 482, 文件頁 472, PDF 頁 498
Base482-2先標出兩個門檻在溫度軸上的順序,再看進入與解除條件;不能把 TMT2 當成第二個感測器編號。
Base741-1熱管理圖用溫度門檻與遲滯解釋限速的進出。
來源:NVME-BASE-2.4, Rev. 2.4, §8.1.19.5, Figure 741, 文件頁 671, PDF 頁 697
Base741-2溫度剛從門檻上方降回附近時,不一定立刻解除限制;沿遲滯區間讀圖可理解為何狀態不反覆抖動。
06.14.若要求 保存值,但 controller 不支援 保存值 或尚無 保存值,controller 會以 預設值 運作。這不是『讀取成功就代表曾經儲存』。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.12, 文件頁 210, PDF 頁 236
06.15.CDW14.UIDX 只有在 controller 支援 UUID List 且該 Feature 需要 UUID 關聯時才有意義;未使用時保留為 0。
來源: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。
來源:NVME-BASE-2.4, Rev. 2.4, §5.2.30, 文件頁 457-459, PDF 頁 483-485
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
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
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
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