先用中英文報告理解主軸、流程與案例,再打開 Spec 閱讀精確定義。中文教學 HTML 提供由淺入深的解釋,以及每張範圍內圖表的重點、案例與細節。
Command and Feature Lockdown 處理的是「哪些管理操作,在什麼入口、哪些控制器上不准執行」。理解它需要把能力、目前狀態與修改命令接起來,再分清限制何時解除、斷電後是否保留。本文以一個 FID 的限制與讀回為例,從全貌走到命令欄位、兩種 Log 格式與必要的持續性例外。
FDP 讓主機把資料何時會一起失效的知識,轉成 SSD 可以使用的放置選擇。本文從回收成本開始,連起配置、namespace 映射、Write、RUH 更新,以及能驗證使用結果的狀態、統計與事件。讀完應能解釋一個 PID 如何選到目前的 RU,也能判斷一次操作究竟改了參照、邏輯資料,還是整個群組設定。
這篇說明主機如何把「哪些資料屬於同一組」告訴 SSD。先建立主機、控制器、namespace 與串流的關係,再走過能力查詢、啟用、資源配置、Write 與釋放;最後看相同編號在不同路徑下的含義,以及 SWS/SGS 如何影響資料安排。
這份報告串起主機管理 SSD 與執行資料操作所需的介面:如何確認能力、調整運作方式、接收狀態,再把 Read/Write 等命令的範圍與完成保證講清楚。先看全貌,接著真的打開 Base 與 NVM Command Set,依頁碼往後讀。
NVM Command Set 說明主機如何以 logical block 為單位讀寫與管理儲存空間。理解它的關鍵,是把資料格式、命令行為、資料完整性與資源管理連起來:同一筆命令,會因 namespace 格式、支援能力與設定不同而有不同的適用條件。
Boot Partitions 提供存放開機映像的空間。這篇從「還沒建立一般 I/O 佇列時,主機如何取到開機資料」開始,再說明映像更新、選擇啟用的分割區與寫入保護。
Telemetry 把裝置收集的內部狀態整理成主機可讀取的紀錄。這篇的重點是取得一份完整且一致的資料:誰建立紀錄、各資料區有多大,以及分段讀取期間紀錄是否已經換成另一份。
Sanitize 處理資料清除。理解它需要依序回答:清除哪些資料、使用哪一種方法、控制器目前處於什麼狀態,以及什麼證據能證明清除已完成。命令已被接受,與清除作業已完成,必須分別確認。
Namespace Management 管理主機可使用的儲存空間。建立 namespace 決定容量與格式;附加 namespace 才把它連到指定控制器。因此,存在一份儲存空間,與主機能經由某個控制器使用它,是兩個不同狀態。
這篇說明主機如何把記憶體提供給控制器,以及如何理解 doorbell 位址與廠商命令長度。共同問題是:哪一方可以使用這塊記憶體、何時可以收回,以及欄位中的數值究竟用什麼單位。
Device Self-test 讓控制器在背景執行內部測試。讀懂這項功能,必須分清「接受測試要求」、「正在測試」與「留下測試結果」三件事;主機收到命令成功完成,並不表示裝置已通過測試。
NVMe over PCIe Transport 說明 NVMe 的佇列、properties 與通知如何透過 PCIe 運作。本篇把作業系統熟悉的記憶體映射 I/O、DMA 與中斷,接到一筆 NVMe 命令的實際傳遞過程。
NVMe 的功耗與溫度管理是在耗電、回應延遲與工作能力之間做取捨。本篇先建立 power state 的意義,再說明主機設定、自動閒置轉移與溫度相關控制如何分工。
韌體更新包含傳送映像、保存至 slot 與切換執行版本。這篇說明 Firmware Image Download、Firmware Commit 和 Firmware Slot Information 如何一起完成這件事,並分清楚每一步改變了什麼狀態。
一筆 NVMe 命令必須告訴控制器要做什麼、對哪個 namespace 操作,以及資料放在哪裡;完成結果則必須讓主機認出是哪筆命令、結果如何。本篇從這兩個方向拆解 SQE、CQE 與 PRP/SGL。
控制器開始處理 I/O 之前,需要先建立可用的介面、佇列與狀態。本篇沿著控制器的運作生命週期,連起能力查詢、初始化、命令處理、記憶體資源,以及關機、重設與韌體啟用。
NVMe 是主機與儲存控制器之間的介面。本篇先建立整體關係:主機如何送出命令、控制器如何回報結果,以及 namespace、controller、NVM subsystem 各代表什麼。這些概念是閱讀後續命令與欄位的起點。