NVM Express Base 2.4NVM Command Set 1.3NVMe over PCIe Transport 1.4

反覆查詢 · 欄位判讀 · 原文定位

NVMe 圖表判讀與情境練習 05 · Features、電源、效能與資源

先分辨支援能力、目前值、預設值與保存值,再查各 Feature。電源延遲、排程權重、佇列數與回收資源各有單位,不能互相替代。

先跟著一個情境讀規格

以下回傳資料均為教學假設。先看需求與已知條件,再沿閱讀路線找到相關欄位,接著一起判讀結果。完整解說直接顯示,來源細節可另外展開。

練習 01Get Features 成功,為什麼還不知道目前值?

程式讀到 DW0=5,便把某功能的「目前設定」顯示為 5。請檢查它解錯了哪一層。

模擬回傳與已知條件

  • 這是支援 Save/Select 的 controller;命令 SEL=3,目標 FID 合法,CQE success、DW0=00000005h。
  • 目前值、預設值與已保存值都尚未讀取。

這個情境要連起哪些規格圖表?

下面是閱讀規格的順序;實際操作的先後與等待條件,會在情境解說中另外交代。

  1. 先看請求中的選擇欄位

    Get Features 的 FID 選功能,SEL 選回覆種類。先保留這兩個值,才能選對 DW0 的格式。

    Base 2.4 · Figure 198
  2. SEL=3 時讀能力格式

    這張圖專門解釋 SEL=3 的 DW0:CHANG、NSSPEC 與 SVBL。先按此格式解讀 00000005h。

    Base 2.4 · Figure 201
  3. 再接到功能自身的工作值

    從 Feature 清單找到該 FID 的定義,再以 SEL=0 讀目前值。能力 bitmap 與工作值使用不同回覆格式。

    Base 2.4 · Figure 466 Base 2.4 · Figure 198
沿著欄位一步步理解

查詢次序:保留原 Get Features 的 FID/SEL/NSID → 按 SEL=3 解能力 → 再以同一 FID、正確對象、SEL=0 讀目前值。

NSID
Namespace Identifier,邏輯儲存空間識別碼

推導 15 的二進位是 101b:CHANG=1、NSSPEC=0、SVBL=1。這表示有可變更屬性、不是 namespace-specific、可保存;不是功能值 5,也不是這個功能一定已啟用。

推導 2SEL=0、1、2 分別取得 Current、Default、Saved;三者可能不同。NSSPEC=0 也不能直接推定只影響這一個 controller,實際 scope 仍由該 Feature 定義決定。

推導 3報告若只保存 DW0 而丟掉 SEL,這次查詢的語意就無法可靠重建。需要資料 buffer 的 Feature 還要保存該 buffer;成功 CQE 不代表 DW0 已包含全部回傳資訊。

CQE
Completion Queue Entry,佇列中的完成項目
完整原文定位
  • Base 2.4 · §5.2.12 · Figure 198 · Get Features – Command Dword 10 · 文件頁 209–210 · PDF 235–236
  • Base 2.4 · §5.2.12 · Figure 201 · Completion Queue Entry Dword 0 when Select is set to 11b · 文件頁 212 · PDF 238
  • Base 2.4 · §5.2.30 · Figure 466 · Set Features – Feature Identifiers · 文件頁 457–459 · PDF 483–485
回情境索引

接著看其他情境

練習 02要求 16 組 queues,實際能建立幾組?

驅動要求 16 個 SQ、16 個 CQ,就直接建立 QID 1 到 16。回傳資訊是否允許這樣做?

SQ
Submission Queue,提交佇列
CQ
Completion Queue,完成佇列

模擬回傳與已知條件

  • Set Features FID=07h:NSQR=15、NCQR=15;成功回傳 DW0=00030007h。
  • CAP.MQES=1023;尚未執行 Create I/O CQ/SQ。
沿著欄位一步步理解

查詢次序:解 FID=07h 完成回覆的 NCQA/NSQA;另讀 CAP.MQES,再規劃 Create I/O CQ/SQ 的數量與深度。

CQ
Completion Queue,完成佇列
SQ
Submission Queue,提交佇列

推導 1DW0 高 16 bits=3、低 16 bits=7,因此分配的是 4 個 CQ、8 個 SQ。要求 16 不等於獲配 16,不能用要求值覆蓋 controller 的回覆。

推導 2MQES=1023 表示每個 I/O queue 最多 1024 entries,與 queue 數量不同。多個 SQ 可依合法設定共用 CQ,因此 SQ 與 CQ 的分配數不必相同。

推導 3此時只是取得可用資源,還沒有建立 queue。後續需先有可關聯的 CQ,再建立 SQ,檢查各次 Create 的完成結果;也不能把 queue 數直接當 MSI-X vector 數。

MSI-X
Message Signaled Interrupts Extension,表格式訊息中斷
完整原文定位
  • Base 2.4 · §5.2.30.1.5 · Figure 472 · Number of Queues – Command Dword 11 · 文件頁 465 · PDF 491
  • Base 2.4 · §5.2.30.1.5 · Figure 473 · Number of Queues – Completion Queue Entry Dword 0 · 文件頁 466 · PDF 492
  • Base 2.4 · §3.1.4.1 · Figure 36 · Offset 0h: CAP – Controller Capabilities · 文件頁 55–58 · PDF 81–84
回情境索引

練習 03APST 表有兩條轉換,空閒 700 ms 會在哪裡?

APST
Autonomous Power State Transition,自主電源狀態轉換

你要畫出自動省電流程,而不是只列出最低功耗 state。如何從 table entry 讀出轉換的起點與計時位置?

模擬回傳與已知條件

  • APSTE=1;PS0 entry:ITPT=100、ITPS=2;PS2 entry:ITPT=500、ITPS=3。
  • PS2、PS3 均為支援的 non-operational state;其餘相關 entries 停用;起始 PS0,連續 idle 700 ms。
沿著欄位一步步理解

查詢次序:Identify CNS=01h 的 APST 能力與 Power State Descriptors → Get Features FID=0Ch、SEL=0,同時取得 APSTE 與完整 APST buffer。

APST
Autonomous Power State Transition,自主電源狀態轉換

推導 1表格的 entry index 是來源,ITPS 是目的地。因此流程是 PS0 ─ idle 門檻 100 ms → PS2 ─ 在 PS2 的 idle 門檻 500 ms → PS3。第二個 500 ms 不是從一開始在 PS0 就一併倒數。

推導 2若先忽略轉換耗時,700 ms 足以讓兩個門檻依序到達;但這只是教學時間線,不是讀取即時 state 的證據。實際轉換時間與控制器行為須一併考慮,APST 表本身是設定。

推導 3要討論下一筆 I/O 的代價,再查目的 state 的 EXLAT。若 EXLAT=0,意思是未回報,不能補成零延遲;若中途有工作打斷 idle,也不能照這條無工作時間線推論。

來源 entry條件目的 state
PS0在 PS0 達到 100 ms idle 門檻PS2
PS2在 PS2 達到 500 ms idle 門檻PS3
完整原文定位
  • Base 2.4 · §5.2.30.1.7 · Figure 475 · Autonomous Power State Transition – Command Dword 11 · 文件頁 468 · PDF 494
  • Base 2.4 · §5.2.30.1.7 · Figure 477 · Autonomous Power State Transition Data Structure Entry · 文件頁 469 · PDF 495
  • Base 2.4 · §5.2.14.2.1 · Figure 340 · Identify – Power State Descriptor Data Structure · 文件頁 384–386 · PDF 410–412
回情境索引

練習 04溫度升高時變慢,就能說是 HCTM 嗎?

效能測試變慢,同時讀到溫度高於 TMT1。哪些回報能補強熱管理的判斷,哪些仍無法證明因果?

模擬回傳與已知條件

  • Get Features FID=10h:TMT1=340 K、TMT2=350 K;Identify 允許這組設定。
  • SMART Composite Temperature=345 K;測試區間內 Thermal Management Temperature 1 Transition Count 增加 1,Total Time 增加 20 seconds。
沿著欄位一步步理解

查詢次序:Identify CNS=01h 查 HCTM 能力與允許溫度範圍 → Get Features FID=10h、SEL=0 → 兩次 Get Log Page LID=02h 比較計數。

推導 1345 K 約 71.85°C,介於兩個設定門檻之間。門檻與量測值都要先確認單位,不能把 K 直接當攝氏,也不能把 Feature 的設定值當成當下溫度。

推導 2transition count 與 time 的增加,支持這段期間發生過第一階段 host-controlled thermal management。這比單張高溫快照多了行為證據,但它仍是區間累計,未交代每筆 I/O 的時間點。

推導 3因此可報告熱管理曾介入,卻不能把整段效能下降都歸因給它。還需對齊量測時段、工作負載、power state 與 PCIe link 等資訊,才能分析各因素的影響。

完整原文定位
  • Base 2.4 · §5.2.30.1.10 · Figure 482 · HCTM – Command Dword 11 · 文件頁 472 · PDF 498
  • Base 2.4 · §5.2.13.1.3 · Figure 213 · SMART / Health Information Log Page · 文件頁 221–225 · PDF 247–251
  • Base 2.4 · §5.2.14.2.1 · Figure 338 · Identify – Identify Controller Data Structure, I/O Command Set Independent · 文件頁 359–360 · PDF 385–386
回情境索引

練習 05HMB 位址一樣,就能聲稱原記憶體已返還嗎?

HMB
Host Memory Buffer,主機記憶體緩衝

重設後 host 把原位址的 HMB 清零,再宣稱 MR=1。只比對實體位址,是否足以驗證這個設定?

HMB
Host Memory Buffer,主機記憶體緩衝

模擬回傳與已知條件

  • 停用前後 descriptor 位址與總大小相同,但 buffer 內容已被清零。
  • 擬用 Host Memory Buffer Feature:EHM=1、MR=1;本題只判讀紀錄,不送出設定。
沿著欄位一步步理解

查詢次序:Identify CNS=01h 查 HMB 能力;查 Feature FID=0Dh 與保存的停用前 descriptor/buffer 紀錄。

推導 1MR=1 表示返還先前同一份 HMB,要求的不只是相同位址與大小,也包含 descriptor 與 buffer 內容的一致。清零已破壞這項條件,所以這個宣稱不成立。

推導 2EHM=1 只要求啟用,不能補足 MR 的真實性。讀到目前 Feature 已啟用,也不足以倒推 host 過去是否保持了每個 byte;必須有生命週期與記憶體管理紀錄。

推導 3若是重新配置的記憶體,應按新的 HMB 配置流程處理,而不是把位址偶然相同當成原內容仍在。這是能力查詢與 host 履約證據不同的一個例子。

完整原文定位
  • Base 2.4 · §5.2.30.2.3 · Figure 545 · Host Memory Buffer – Command Dword 11 · 文件頁 516–517 · PDF 542–543
  • Base 2.4 · §5.2.14.2.1 · Figure 338 · Identify – Identify Controller Data Structure, I/O Command Set Independent · 文件頁 357, 362 · PDF 383, 388
回情境索引

練習 06權重 7:3,能保證 IOPS 是 2:1 嗎?

高、低優先級 workload 的實測 IOPS 沒有依設定成比例。該直接判 controller 排程錯誤嗎?

模擬回傳與已知條件

  • CC.AMS 已選擇有權重的仲裁模式,且 CAP 表示支援;FID=01h:HPW=7、MPW=3、LPW=3、AB=2。
  • 高、低優先級分別使用不同 I/O 大小與讀寫比例。
沿著欄位一步步理解

查詢次序:讀 CAP 與 CC.AMS → Get Features FID=01h、SEL=0 → 對照 SQ priority 與實際 workload。

推導 1HPW=7 與 LPW=3 分別解成每輪 8 與 4 個命令的權重;AB=2 則用 2^2=4 計算單次 burst。相同大小的數字不代表相同編碼方式。

推導 2權重描述命令服務機會,沒有把不同大小、不同執行成本的 I/O 變成相同工作量。因此不能從 8:4 直接推出穩定的 2:1 IOPS,更不能推出 2:1 bandwidth。

推導 3若要驗證仲裁,應記錄模式、各 SQ 的 priority、命令是否持續待處理與觀測時段,再用規格對應的服務規則判斷。單張應用 throughput 圖不足以證明排程違規。

完整原文定位
  • Base 2.4 · §5.2.30.1.1 · Figure 467 · Arbitration & Command Processing – Command Dword 11 · 文件頁 460 · PDF 486
  • Base 2.4 · §3.1.4.5 · Figure 41 · Offset 14h: CC – Controller Configuration · 文件頁 60–63 · PDF 86–89
  • Base 2.4 · §3.1.4.1 · Figure 36 · Offset 0h: CAP – Controller Capabilities · 文件頁 55–58 · PDF 81–84
回情境索引

01Get Features:現在值、預設值、保存值或能力

Base 2.4 · Figure 198 · Get Features – Command Dword 10

§5.2.12 · 文件頁 209–210 · PDF 235–236

01.1 · 用途讀到的 Feature 值與剛設定的值不同,先查 SEL 選了哪種回覆。Get Features 不一定是在讀目前設定。

01.2 · 欄位與關係FID bits7:0 選功能,SEL bits10:8 的 0/1/2/3 分別為 Current、Default、Saved、Supported Capabilities。SEL=2 但不支援保存或沒有保存值時,依規格按 Default 處理。

01.3 · 判讀與例子同一 FID 用 SEL=3 回 DW0=4,不代表功能目前設為 4;它是能力 bitmap,應依 Figure201 解讀。比較設定前後,要記錄 SEL 與 Feature 作用對象。

搜尋詞:Get Features · FID · SEL · current · default · saved

回本冊圖表索引

02Feature 能力:可改、可保存及 namespace 範圍

Base 2.4 · Figure 201 · Completion Queue Entry Dword 0 when Select is set to 11b

§5.2.12 · 文件頁 212 · PDF 238

02.1 · 用途這張表只用於 Get Features 的 SEL=3 回覆。它回答該 Feature 有哪些操作能力,不能直接套到 SEL=0 取得的目前值。

02.2 · 欄位與關係DW0 bit2 是 CHANG、bit1 是 NSSPEC、bit0 是 SVBL。NSSPEC=0 不直接表示 controller scope,還要依 Feature 定義及 effects log。CHANG=1 也只表示有可更改屬性,不保證每個已進入的狀態都可解除。

02.3 · 判讀與例子DW0=6 表示可改、namespace-specific、不可保存。若該功能已進入永久寫入保護,CHANG 仍不能被解成「一定能改回未保護」。

搜尋詞:SEL 3 · CHANG · NSSPEC · SVBL

回本冊圖表索引

03Set Features:要求生效與要求保存分開

Base 2.4 · Figure 464 · Set Features – Command Dword 10

§5.2.30 · 文件頁 457 · PDF 483

03.1 · 用途設定當下生效、重設後卻不同時,用這張表確認是否提出保存要求,再查該 Feature 本身的持續性規則。

03.2 · 欄位與關係FID 在 bits7:0,SV 在 bit31;其餘 bits30:8 保留。SV=1 要求保存屬性以跨所有 power states 與 reset 持續;若該 FID 不可保存,命令會以 Feature Identifier Not Saveable 中止。

03.3 · 判讀與例子不能把 SV=0 直接翻成「下次 reset 一定清除」。部分功能本來就定義某些狀態持續,是否可保存與目前狀態是否持續是兩個判斷。

搜尋詞:Set Features · SV · FID · Feature Identifier Not Saveable

回本冊圖表索引

04FID 總表:功能名稱、資料 buffer 與作用範圍

Base 2.4 · Figure 466 · Set Features – Feature Identifiers

§5.2.30 · 文件頁 457–459 · PDF 483–485

04.1 · 用途只有 FID 數字或不知道 Feature 影響哪個對象時,從此表找名稱、範圍及是否使用資料 buffer。指向 NVM 規格的列,表示定義分工,不是該 FID 沒有作用。

04.2 · 欄位與關係表按 FID 排列,欄位包含 Current Setting Persists、Uses Data Buffer、Feature Name 及 Scope。持續性欄有腳註:其判讀對象是不可保存的 Feature,不能拿來推翻可保存功能的 Saved 值語意。

04.3 · 判讀與例子APST FID0Ch 需要 data buffer 保存逐 state 條目;Power Management FID02h 主要由 CDW11 指定。只複製 CDW11 而漏掉 APST 表,無法完整重建當時設定。

搜尋詞:FID · Feature Identifier · scope · persistence · data buffer

回本冊圖表索引

05Power State Descriptor:功耗、延遲與可執行 I/O

Base 2.4 · Figure 340 · Identify – Power State Descriptor Data Structure

§5.2.14.2.1 · 文件頁 384–386 · PDF 410–412

05.1 · 用途比較 power states 或排查喚醒延遲時,查各 state 的 32-byte 描述子。state 編號只用來選狀態,不能直接當功耗或效能排名。

05.2 · 欄位與關係NOPS bit25 區分是否處理 I/O;MP bits15:0 與 MXPS bit24 一起換算最大功耗;ENLAT bits63:32、EXLAT95:64 以微秒計。IDLP 配 IPS 讀 idle 功耗;RRT/RRL/RWT/RWL 是相對等級。後面另有 Active Power、掉電處理時間與頻寬欄位。

05.3 · 判讀與例子MP=350、MXPS=0 是 3.50 W;MXPS=1 則是 0.035 W。EXLAT=0 表示未回報,不能寫成零延遲。選 APST 目的 state 前,先看 NOPS 及有效功耗、延遲值。

搜尋詞:PSD · NOPS · MP · MXPS · ENLAT · EXLAT · IDLP · IPS · RRT · RRL

回本冊圖表索引

06Arbitration:權重不是效能保證

Base 2.4 · Figure 467 · Arbitration & Command Processing – Command Dword 11

§5.2.30.1.1 · 文件頁 460 · PDF 486

06.1 · 用途比較不同 SQ 優先級或命令取走節奏時,查此表。但設定權重不保證應用程式獲得固定比例 IOPS,還受排程模式與工作負載影響。

06.2 · 欄位與關係HPW bits31:24、MPW23:16、LPW15:8 是各 service class 每輪可執行命令數減 1。AB bits2:0 是單次由一個 SQ 取命令的上限,按 2^AB 計,AB=7 特別表示無限制。

06.3 · 判讀與例子HPW=3 代表 4 個命令,AB=3 代表 burst 上限 8 個;相同原始值使用不同編碼。先確認 CC.AMS 使用的排程模式,才有意義地解讀 priority 權重。

搜尋詞:FID 01h · HPW · MPW · LPW · AB · arbitration

回本冊圖表索引

07Power Management:指定 state 與 idle 回應限制

Base 2.4 · Figure 468 · Power Management – Command Dword 11

§5.2.30.1.2 · 文件頁 461 · PDF 487

07.1 · 用途主機明確要求切 power state 時,這張表定義 CDW11。它與 APST 的自動轉換表不同,不能只看到 PS 值就重建全部自動轉換行為。

07.2 · 欄位與關係PS bits4:0 選 state,WH bits7:5 給 workload hint;IIELL bits31:16 在支援且選 operational state 時,以 100 微秒指定 idle 後 I/O 額外延遲限制。IIELL 的作用範圍另由 IIELLSS 決定。

07.3 · 判讀與例子IIELL=5 表示 500 微秒,不是 5 毫秒。對 non-operational state 設定非 0 IIELL,在此能力受支援時會因 Invalid Field in Command 失敗;先由 Power State Descriptor 確認 state 種類。

搜尋詞:FID 02h · PS · WH · IIELL · IIELLSS

回本冊圖表索引

08Volatile Write Cache:目前 enable 位

Base 2.4 · Figure 471 · Volatile Write Cache – Command Dword 11

§5.2.30.1.4 · 文件頁 464–465 · PDF 490–491

08.1 · 用途判斷 Write 完成是否可能只到揮發性 cache 時,查 WCE 設定,再結合 cache 是否存在與命令 FUA。WCE 不是硬體是否有 cache 的能力位。

08.2 · 欄位與關係CDW11 bit0 為 WCE,1 啟用、0 停用,bits31:1 保留。實際 cache 存在性還需依 Identify 與 namespace/FDP 配置判斷;Flush 與 FUA 另有各自的非揮發要求。

FDP
Flexible Data Placement,彈性資料放置

08.3 · 判讀與例子WCE=1 不能單獨證明某筆 Write 只在 cache 中,因為那筆命令可能 FUA=1。比較資料保留結果,需同時保存 cache 能力、WCE 及命令內容。

搜尋詞:FID 06h · WCE · VWC · volatile cache · Flush

回本冊圖表索引

09Number of Queues:主機要求的數量

Base 2.4 · Figure 472 · Number of Queues – Command Dword 11

§5.2.30.1.5 · 文件頁 465 · PDF 491

09.1 · 用途初始化要建立多組 I/O queues 前,用此表解讀主機要求分配的數量。它不是每個 queue 的深度,也不包括 Admin queues。

09.2 · 欄位與關係NSQR bits15:0 要求 SQ 數,NCQR bits31:16 要求 CQ 數,兩者都減 1 編碼;最大可指定原始值 FFFEh。此設定應在建立 I/O queues 前完成,實際分配量由 CQE DW0 回報。

CQE
Completion Queue Entry,佇列中的完成項目

09.3 · 判讀與例子要求 8 個 SQ 與 4 個 CQ,CDW11=00030007h。主機不能直接依要求值建立全部 queues,而要先讀 Figure473 的實際結果。

搜尋詞:FID 07h · NSQR · NCQR · queue allocation

回本冊圖表索引

10Number of Queues:實際分配的數量

Base 2.4 · Figure 473 · Number of Queues – Completion Queue Entry Dword 0

§5.2.30.1.5 · 文件頁 466 · PDF 492

10.1 · 用途這張表解 Number of Queues 的完成回覆,用於確認 controller 實際保留多少 I/O queue 資源。要求量與分配量可以不同。

10.2 · 欄位與關係DW0 的 NSQA bits15:0、NCQA bits31:16 分別是實際 SQ/CQ 數減 1。它不是 queue ID 清單,也不表示這些 queue 已完成 Create。

10.3 · 判讀與例子DW0=00010003h 表示 4 個 SQ、2 個 CQ。即使先前要求 8 與 4,也要依回覆安排後續建立;分配資源與建立 queue 是兩個步驟。

搜尋詞:NSQA · NCQA · CQE DW0 · allocated queues

回本冊圖表索引

11APST:是否允許自動切換

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

§5.2.30.1.7 · 文件頁 468 · PDF 494

11.1 · 用途設定了 idle 轉換表卻沒有預期省電行為時,先查 APSTE 是否開啟。這張表只定義總開關,不包含每個 state 的等待時間。

11.2 · 欄位與關係CDW11 bit0 為 APSTE,1 啟用、0 停用,預設 0;其他 bits 保留。每個來源 power state 的等待條件與目的 state 另放在 APST data structure。

11.3 · 判讀與例子APSTE=1 不代表立刻進入最低功耗 state。仍需該來源 state 的 ITPT 非 0,並滿足連續 idle 條件;因此 trace 應一起保存總開關與對應 table entry。

搜尋詞:FID 0Ch · APSTE · APST · autonomous power

回本冊圖表索引

12APST Entry:從哪個 state、等多久、到哪裡

Base 2.4 · Figure 477 · Autonomous Power State Transition Data Structure Entry

§5.2.30.1.7 · 文件頁 469 · PDF 495

12.1 · 用途這張表用於解每個來源 state 的 8-byte 轉換條目。條目的陣列位置決定來源 state,ITPS 決定目的 state,兩者不能對調。

12.2 · 欄位與關係ITPT bits31:8 以毫秒表示連續 idle 門檻,0 停用該來源 state 的轉換;ITPS bits7:3 指定目的 state。ITPT 非 0 時目的 state 須為 non-operational。高 32bits 與低 3bits 保留。

12.3 · 判讀與例子來源 PS0 條目設定 ITPT=2000、ITPS=3,低 Dword 是(2000<<8)|(3<<3)=0007D018h。表示在 PS0 連續 idle 超過 2000 ms 後可依規則到 PS3,不是進入 PS3 後再等 2000 ms。

搜尋詞:ITPT · ITPS · APST entry · idle transition

回本冊圖表索引

13HCTM:兩個熱管理門檻

Base 2.4 · Figure 482 · HCTM – Command Dword 11

§5.2.30.1.10 · 文件頁 472 · PDF 498

13.1 · 用途效能隨溫度下降時,查 Host Controlled Thermal Management 的門檻。它們是主機要求的管理條件,不等於 SMART 當下溫度。

13.2 · 欄位與關係TMT1 bits31:16 為較輕管理門檻,TMT2 bits15:0 為較重管理門檻,皆以 Kelvin 計;0 停用該部分。非 0 值須落在 Identify 允許範圍;TMT2 非 0 時必須大於 TMT1。

13.3 · 判讀與例子TMT1=343、TMT2=353 約為 69.85°C 與 79.85°C,不是 343°C 和 353°C。是否實際啟動與累計多久,可再查 SMART 的 transition count 與 total time。

搜尋詞:FID 10h · HCTM · TMT1 · TMT2 · Kelvin · throttling

回本冊圖表索引

14Interrupt Coalescing:延後中斷的時間與數量

Base 2.4 · Figure 543 · Interrupt Coalescing – Command Dword 11

§5.2.30.2.1 · 文件頁 515 · PDF 541

14.1 · 用途CQ 已有資料但中斷時間較晚時,可用此表核對 coalescing 設定。它控制中斷聚合,不改變 CQE 本身的命令 status。

14.2 · 欄位與關係TIME bits15:8 以 100 微秒為單位,0 無延遲;THR bits7:0 為建議聚合 CQE 數減 1。任一欄為 0 時隱含停用 coalescing。只適用 I/O queues,Admin CQ 不支援;每個向量還有自己的設定。

14.3 · 判讀與例子TIME=5、THR=7 代表 500 微秒與 8 筆的建議條件,不是每個 I/O 必定延遲 500 微秒。主機持續更新 CQ head 時,聚合條件可能重啟,因此不能把 TIME 直接當端到端延遲上限。

搜尋詞:FID 08h · TIME · THR · coalescing · interrupt latency

回本冊圖表索引

15HMB:啟用、新配置或返還原記憶體

Base 2.4 · Figure 545 · Host Memory Buffer – Command Dword 11

§5.2.30.2.3 · 文件頁 516–517 · PDF 542–543

15.1 · 用途重設或電源切換後重新啟用 Host Memory Buffer 時,查 MR 和 EHM,避免把重新配置的記憶體宣稱成原封不動返還。HMB 是提供 controller 使用的 host 記憶體。

15.2 · 欄位與關係EHM bit0 為啟用,MR bit1 表示返還先前的同一份 HMB;HMNARE bit2 在支援時限制 non-operational state 存取,仍有 Admin 處理例外。bit3 必須清 0。MR=1 要求 size、descriptor 地址/內容及 buffer 內容與停用前一致。

15.3 · 判讀與例子若重新配置後清掉了 buffer,即使實體地址剛好一樣,也不能使用 MR=1 宣稱原內容仍在。EHM=0 時 CDW12~15 被忽略,不能拿那些 bytes 推論已啟用的大小。

搜尋詞:FID 0Dh · HMB · EHM · MR · HMNARE

回本冊圖表索引

16FDP Configuration:配置大小、資源數與 PID 切割

FDP
Flexible Data Placement,彈性資料放置

Base 2.4 · Figure 294 · FDP Configuration Descriptor

§5.2.13.1.29 · 文件頁 293–295 · PDF 319–321

16.1 · 用途解 FDP 資源配置或 Placement Identifier 前,查目前配置描述子。PID 不是固定格式的任意數字,Reclaim Group 與 Placement Handle 的切割取決於 RGIF。

16.2 · 欄位與關係DSZE bytes1:0 給整個描述子大小;FDPA byte2 含 FDPCV 有效位、FDPVWC 及 RGIF。NRG bytes7:4、NRUH9:8 是直接數量,MAXPIDS11:10 則減 1 編碼。RUNS23:16 是 nominal bytes,ERUTL27:24 是秒,0 表示未回報。

16.3 · 判讀與例子NRUH=4 表示 4 個 handle 描述子,不是 5 個;MAXPIDS=3 才對應最多 4 個 placement identifiers。變長清單後還可能有 vendor bytes 及 padding,走到下一份 configuration 應依 DSZE。

搜尋詞:LID 20h · FDP · DSZE · FDPCV · RGIF · NRG · NRUH · RUNS · ERUTL

回本冊圖表索引

17RUH Status:目前剩餘可寫量

NVM Command Set 1.3 · Figure 21 · Reclaim Unit Handle Status Descriptor

§3.2.1.1 · 文件頁 26 · PDF 26

17.1 · 用途想知道某個 placement 指向的 Reclaim Unit 目前還可寫多少,查這張 NVM 專屬 status 描述子。它是當下回報,不能用 nominal 容量直接取代。

17.2 · 欄位與關係PID bytes1:0、RUHID3:2 對應 placement 與 handle;EARUTR7:4 是估計剩餘秒數,0 表示未回報;RUAMW15:8 是目前可寫入的 logical blocks。後 16bytes 保留。

17.3 · 判讀與例子RUAMW=1000 且格式 4 KiB,表示 4,096,000bytes 的 blocks 計量;它可小於或大於 RUNS 所報 nominal bytes。EARUTR=0 不表示 Reclaim Unit 已立刻過期。

搜尋詞:RUH · PID · RUHID · EARUTR · RUAMW · I/O Management Receive

回本冊圖表索引