NVM Express Base 2.4 NVM Command Set 1.3 NVMe over PCIe Transport 1.4
每張原圖都有用途、欄位和判讀例子。例子中的數值用於說明,不代表你的裝置設定;原文另有條件時,依該欄位與命令定義判斷。
用瀏覽器「在頁面中尋找」搜尋欄位、FID、LID、CNS 或 Figure。bit/byte 位置沿用原圖:bit 是位元,byte 是 8 bits,Dword 是 4 bytes;index 是第幾筆,offset 是相對起點的偏移,須看當處使用的單位。
FID Feature Identifier,功能識別碼
LID Log Page Identifier,紀錄頁識別碼
CNS Controller or Namespace Structure,選擇Identify回傳結構 FID(Feature Identifier)選擇功能;LID(Log Page Identifier)選擇紀錄頁;CNS(Controller or Namespace Structure)選擇 Identify 回傳的資料結構。
從情境練習開始 直接查圖表
先跟著一個情境讀規格
以下回傳資料均為教學假設。先看需求與已知條件,再沿閱讀路線找到相關欄位,接著一起判讀結果。完整解說直接顯示,來源細節可另外展開。
Get Features 成功,為什麼還不知道目前值?
要求 16 組 queues,實際能建立幾組?
APST 表有兩條轉換,空閒 700 ms 會在哪裡?
溫度升高時變慢,就能說是 HCTM 嗎?
HMB 位址一樣,就能聲稱原記憶體已返還嗎?
權重 7:3,能保證 IOPS 是 2:1 嗎?
練習 01 Get Features 成功,為什麼還不知道目前值?
程式讀到 DW0=5,便把某功能的「目前設定」顯示為 5。請檢查它解錯了哪一層。
模擬回傳與已知條件
這是支援 Save/Select 的 controller;命令 SEL=3,目標 FID 合法,CQE success、DW0=00000005h。
目前值、預設值與已保存值都尚未讀取。
沿著欄位一步步理解
查詢次序: 保留原 Get Features 的 FID/SEL/NSID → 按 SEL=3 解能力 → 再以同一 FID、正確對象、SEL=0 讀目前值。
NSID Namespace Identifier,邏輯儲存空間識別碼
推導 1 5 的二進位是 101b:CHANG=1、NSSPEC=0、SVBL=1。這表示有可變更屬性、不是 namespace-specific、可保存;不是功能值 5,也不是這個功能一定已啟用。
推導 2 SEL=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,提交佇列
推導 1 DW0 高 16 bits=3、低 16 bits=7,因此分配的是 4 個 CQ、8 個 SQ。要求 16 不等於獲配 16,不能用要求值覆蓋 controller 的回覆。
推導 2 MQES=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
回情境索引
練習 03 APST 表有兩條轉換,空閒 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 比較計數。
推導 1 345 K 約 71.85°C,介於兩個設定門檻之間。門檻與量測值都要先確認單位,不能把 K 直接當攝氏,也不能把 Feature 的設定值當成當下溫度。
推導 2 transition 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
回情境索引
練習 05 HMB 位址一樣,就能聲稱原記憶體已返還嗎?
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 紀錄。
推導 1 MR=1 表示返還先前同一份 HMB,要求的不只是相同位址與大小,也包含 descriptor 與 buffer 內容的一致。清零已破壞這項條件,所以這個宣稱不成立。
推導 2 EHM=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。
推導 1 HPW=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
回情境索引
本冊圖表
Base 2.4 Figure 198 · Get Features:現在值、預設值、保存值或能力
Base 2.4 Figure 201 · Feature 能力:可改、可保存及 namespace 範圍
Base 2.4 Figure 464 · Set Features:要求生效與要求保存分開
Base 2.4 Figure 466 · FID 總表:功能名稱、資料 buffer 與作用範圍
Base 2.4 Figure 340 · Power State Descriptor:功耗、延遲與可執行 I/O
Base 2.4 Figure 467 · Arbitration:權重不是效能保證
Base 2.4 Figure 468 · Power Management:指定 state 與 idle 回應限制
Base 2.4 Figure 471 · Volatile Write Cache:目前 enable 位
Base 2.4 Figure 472 · Number of Queues:主機要求的數量
Base 2.4 Figure 473 · Number of Queues:實際分配的數量
Base 2.4 Figure 475 · APST:是否允許自動切換
Base 2.4 Figure 477 · APST Entry:從哪個 state、等多久、到哪裡
Base 2.4 Figure 482 · HCTM:兩個熱管理門檻
Base 2.4 Figure 543 · Interrupt Coalescing:延後中斷的時間與數量
Base 2.4 Figure 545 · HMB:啟用、新配置或返還原記憶體
Base 2.4 Figure 294 · FDP Configuration:配置大小、資源數與 PID 切割
NVM Command Set 1.3 Figure 21 · RUH Status:目前剩餘可寫量
01 Get 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
回本冊圖表索引
02 Feature 能力:可改、可保存及 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
回本冊圖表索引
03 Set 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
回本冊圖表索引
04 FID 總表:功能名稱、資料 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
回本冊圖表索引
05 Power 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
回本冊圖表索引
06 Arbitration:權重不是效能保證
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
回本冊圖表索引
07 Power 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
回本冊圖表索引
08 Volatile 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
回本冊圖表索引
09 Number 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
回本冊圖表索引
10 Number 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
回本冊圖表索引
11 APST:是否允許自動切換
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
回本冊圖表索引
12 APST 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
回本冊圖表索引
13 HCTM:兩個熱管理門檻
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
回本冊圖表索引
14 Interrupt 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
回本冊圖表索引
15 HMB:啟用、新配置或返還原記憶體
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
回本冊圖表索引
16 FDP 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
回本冊圖表索引
17 RUH 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
回本冊圖表索引