NVMe 自問自答題庫:總索引 · Q1–328
NVMe · Q1–328
NVMe Base 2.4 自問自答題庫
本題庫收錄第 1~328 題,依主題分成 27 冊。先理解 controller 啟用、queue 及 command 的運作,再學習如何查詢能力與設定功能。每題除了說明機制,也練習將實際觀察結果與規範要求互相比對。
Controller 初始化與停用
先理解 controller 如何從停用轉為就緒,再開始處理命令。讀到能力,不表示 controller 已啟用;Host 設定 EN,也還要等待 RDY。即使 RDY=1,仍可能需要依 Ready Mode 確認媒體是否可用。本冊將狀態、等待時間及允許執行的動作放在一起,說明每個階段應如何判斷。
Admin Queue 與 I/O Queue
Host 準備的 queue 記憶體、controller 分配的 queue 配額,以及已成功建立的 queue,是三種不同資訊。本冊先說明 SQ 與 CQ 的依賴關係,再討論大小、識別碼、刪除及重設,讓你能判斷何時可以使用 queue,以及何時能安全回收記憶體。
- SQ
- Submission Queue,提交佇列
- CQ
- Completion Queue,完成佇列
Doorbell、Queue Full 與 Wrap-around
Doorbell 告訴 controller,Host 的指標已前進到哪個位置;Phase 則讓 Host 分辨 CQ 中的是新完成結果,還是上一圈留下的資料。本冊將位置與有效性一起說明,幫助你正確處理繞回及空間釋放,避免將正常繞回誤判成倒退,或把舊 CQE 處理兩次。
- CQ
- Completion Queue,完成佇列
- CQE
- Completion Queue Entry,佇列中的完成項目
Command、Completion 與處理順序
從 Host 提交命令,到 controller 取得、處理並回報完成,再到 Host 回收資源,各階段能證明的事情不同。本冊沿著這條流程解讀 Command 與 CQE,並說明順序、仲裁及中斷各自控制什麼。只有完成順序,還不足以推論 controller 內部的全部行為。
- CQE
- Completion Queue Entry,佇列中的完成項目
Identify 與能力探索
Identify 提供多種查詢結構。先確定要查哪個物件、需要哪一種資訊,再選擇 CNS、CSI、NSID 及其他欄位。本冊分別說明能力、目前配置與清單變更,讓你知道不同回覆如何互相補充,以及哪些差異才可能構成矛盾。
- CNS
- Controller or Namespace Structure,選擇Identify回傳結構
- CSI
- Command Set Identifier,命令集識別碼
- NSID
- Namespace Identifier,邏輯儲存空間識別碼
Get Features 與 Set Features
設定 Feature 前,先確認它影響哪個物件、是否可變更,以及是否可保存。設定後,再分別確認命令成功、Current 讀回值、實際行為與重設後的恢復結果。本冊依這些步驟說明如何驗證設定,避免只看成功 CQE 就跳到功能一定正確的結論。
Get Log Page 與資料一致性
Log 回答狀態、歷史或支援能力,但不是每份 Log 都保存歷史,也不是讀取後一定不變。本冊先選對資料與範圍,再處理長度、分段、事件確認與一致性。
Asynchronous Event Request
AER 讓 Host 先留下等待通知的請求,controller 有事件時才完成它。先理解請求、事件、Log 與確認的關係,再處理多事件、遮蔽與重新掛入。
錯誤 Status 與 Error Information
本冊從一筆失敗命令出發,先判斷錯誤類型,再找補充記錄與恢復依據。重點是把原命令、完成狀態及歷史資料對回同一件事。
Abort、Timeout 與錯誤恢復
Timeout 是 Host 的觀察,未必能說明命令停在哪裡。本冊沿提交、取得、執行、完成與處理的路徑找證據,再決定 Abort 或較大範圍 reset。
Format 與 Sanitize
Format 改變 namespace 格式;Sanitize 處理資料清除。兩者的範圍、完成點與 reset 行為不同,本冊以一次操作的前、中、後狀態逐步區分。
Firmware Update 與 Boot Partition
先分清下載、提交與啟用,再把 Boot Partition 的讀取和切換放在旁邊比較。資料已傳入 controller,不代表新韌體或新開機映像已開始使用。
Device Self-test
Self-test 將裝置內部診斷結果回報給 Host。先確認能啟動哪種測試,再分清進度、最終結果與失敗欄位有效性。
Namespace Management、Attachment 與保護
建立 namespace、讓 controller 能存取它,以及限制寫入,是三組獨立狀態。本冊用同一物件從建立到刪除的流程,把三者接起來。
Reset 與 Shutdown
Reset 結束操作環境,Shutdown 準備安全停止;兩者的目的和完成證據不同。先看影響範圍,再分辨哪些狀態需要重建,哪些操作仍持續。
Power、Thermal 與 Health Monitoring
先看裝置目前處於哪個功耗狀態,再追蹤溫度控制的轉換與累計時間,最後接到健康警告及工作量。這個順序能把目前狀態與過去累積的統計接在一起。
Persistent Event Log 與 Timestamp
PEL 保存重要事件,Timestamp 協助解釋事件時間。本冊先教一致地取回完整 Log,再說明可變長度、事件類型與時鐘變更。
Keep Alive
Keep Alive 用來偵測 Host 是否仍維持連線活動,在 PCIe 上屬選配。本冊分開命令模式與流量模式,說明何時開始計時及到期後的結果。
HMB、CMB 與 PMR
- HMB
- Host Memory Buffer,主機記憶體緩衝
- CMB
- Controller Memory Buffer,控制器記憶體緩衝
- PMR
- Persistent Memory Region,持久性記憶體區域
先看記憶體位於哪裡、由誰提供與何時可回收,再看持久性。HMB、CMB、PMR 不能因都含 Memory 就套同一組 reset 規則。
- HMB
- Host Memory Buffer,主機記憶體緩衝
- CMB
- Controller Memory Buffer,控制器記憶體緩衝
- PMR
- Persistent Memory Region,持久性記憶體區域
Security 與 Lockdown
Security Send/Receive 承載協定資料;Lockdown 限制命令或 Feature。先分清資料交換結果與禁止範圍,再討論 reset 及斷電持續性。
Multi-Controller 與 Virtualization
多路徑、shared namespace 與虛擬化是不同關係。本冊先畫 controller 拓樸,再加入 attachment、ANA 及可分配 queue/interrupt 資源。
NVM Set、Endurance Group 與容量
容量欄位分布於不同管理層級,健康計數也有自己的範圍。本冊先理解歸屬,再計算 Create/Delete 實際改變哪一層的容量。
Domain、Reclaim Group 與 Media Unit
管理歸屬與 FDP 放置關係要用不同視角閱讀。本冊先辨認各種 ID 的範圍,再追蹤一筆 Write 如何選到 RU,最後解讀媒體資訊的限制。
- FDP
- Flexible Data Placement,彈性資料放置
PRP 與 SGL
- PRP
- Physical Region Page,描述資料頁位置的指標
- SGL
- Scatter Gather List,描述分散資料區段的清單
資料指標描述的是記憶體配置。本冊先算 PRP 跨頁,再讀 SGL 的 descriptor 關係,最後把格式錯誤與傳輸失敗分開。
- PRP
- Physical Region Page,描述資料頁位置的指標
- SGL
- Scatter Gather List,描述分散資料區段的清單
Interrupt 設定與完成通知
先確認 CQE 真的存在,再查通知如何送到 Host。本冊把 CQ 關聯、合併、mask 與 Host 處理分開,避免把沒有中斷當成沒有完成。
整合驗證與證據交叉比對
本冊把前面機制放進具體矛盾情境:先確認比較的是同一對象與同一時點,再判斷證據是否足夠。相關機制使用固定連結,不重複整段教學。
資料 I/O:長度、持久性與完整性
本冊補充原題庫尚未展開的資料 I/O 判讀:命令能不能接受、完成後保證什麼、資料內容如何驗證,以及失敗後可能留下哪些結果。先把四個問題分開,再用具體欄位值推導;既有 Feature、queue 與指標規則則連回原題。
怎麼使用這份題庫
- 先說出功能的目的、影響對象與正常順序,再選查詢欄位。
- 每題依問題安排解答:查詢題跟著欄位找證據,操作題看先後順序,比較題先分清對象。事件、錯誤與重設只在和問題有關時說明;流程圖中的分支條件與等待點也是答案的一部分。
- 判斷韌體是否符合規範前,先確認要求適用的前提。shall 表示強制要求,should 表示建議,may 表示允許。若規範將行為列為 undefined,就沒有固定結果可供驗收,不能自行指定必須回報的 Status。
所有算例皆為教學假設,不是實體裝置量測。範圍是 PCIe SSD 使用的三份規格;不含 NVMe over Fabrics、PCIe Link 與封包細節。必要的 PCIe 設定、中斷、Register 及 Doorbell 仍包含在內。
全部題目
- Q01 · Host 應如何從 CAP 與 VS 確認 NVMe 版本、最大 Queue 大小、Timeout、Doorbell 間距、Memory Page Size 及支援的 Command Set?
- Q02 · AQA、ASQ、ACQ 與 CC 各欄位應按照什麼順序設定?設定錯誤時可能發生什麼?
- Q03 · Host 設定 CC.EN 後,應如何根據 CAP.TO 與 CSTS.RDY 判斷 Controller 是否成功 Enable?
- Q04 · Host 清除 CC.EN 後,應如何判斷 Controller 是否成功 Disable?尚未 Disable 完成時能否重新 Enable?
- Q05 · Host 能否在 CSTS.RDY 為 0 時送出 Command 或更新 Doorbell?
- Q06 · CSTS.CFS 代表什麼?Controller 初始化失敗或進入 Fatal 狀態時,Host 應如何恢復?
- Q07 · Controller 初始化後可能進入哪些 Ready Mode?Host 應如何處理暫時或限制性的 Ready 狀態?
- Q08 · Controller Enable、Disable、Controller Reset、NVM Subsystem Reset 與 Shutdown 有什麼差異?
- Q09 · Controller Reset 後,哪些 Register、Admin Queue、Feature 與 I/O Queue 需要重新設定?
- Q10 · Admin Submission Queue 與 Admin Completion Queue 如何透過 AQA、ASQ 及 ACQ 建立?
- Q11 · Admin Queue 與 I/O Queue 的 Size、Base Address 及 Memory Page 對齊有哪些要求?
- Q12 · Host 如何建立 I/O Completion Queue 與 I/O Submission Queue?兩者必須遵守什麼建立順序?
- Q13 · 多個 SQ 共用一個 CQ 與每個 SQ 使用獨立 CQ 有什麼差異?
- Q14 · Host 如何確認 Controller 支援 Physically Contiguous 或其他 Queue 形式?
- Q15 · QID 重複、QID 為 0、CQID 不存在、Queue Size 超過 CAP.MQES 或 Interrupt Vector 非法時,Controller 應如何回應?
- Q16 · Number of Queues Feature 回傳的數值與實際可建立的 Queue 數量有什麼關係?
- Q17 · Host 刪除 I/O Queue 時,SQ 與 CQ 的相依關係如何限制刪除順序?
- Q18 · 刪除不存在的 Queue、仍被 SQ 使用的 CQ 或仍有 Outstanding Command 的 SQ 時,應如何處理?
- Q19 · Queue 刪除後,Controller 是否還能存取原 Queue Memory 或回報原 Queue 的 Completion?
- Q20 · Queue Level Reset 的影響範圍是什麼?Outstanding Command 應如何處理?
- Q21 · Controller Reset 後,原有 I/O Queue 是否有效?Host 需要重新執行哪些操作?
- Q22 · Host 應在什麼時候更新 SQ Tail Doorbell 與 CQ Head Doorbell?
- Q23 · Doorbell 值重複、倒退、超過 Queue 範圍或寫到錯誤 QID 時,可能造成什麼問題?
- Q24 · Host 如何根據 CAP.DSTRD 計算每個 SQ 與 CQ Doorbell 的位置?
- Q25 · Host 能否存取未建立、已刪除或 Controller 未 Enable 時的 Queue Doorbell?
- Q26 · SQ Tail 與 CQ Head 發生 Wrap-around 時,Host 與 Controller 應如何處理?
- Q27 · CQ Wrap-around 後 Phase Tag 如何變化?Host 如何利用 Phase Tag 辨識新 Completion?
- Q28 · CQ Full 通常如何形成?CQ Full 時 Controller 能否繼續處理相關 SQ?
- Q29 · Host 釋放 CQ 空間後,Controller 應如何恢復 Command 處理?
- Q30 · 多個 SQ 共用一個 CQ 時,Host 如何依 SQID 與 CID 辨識 Completion 來源?
- Q31 · 一筆 NVMe Command 的 Opcode、CID、NSID、Data Pointer 及 Command Dword 各有什麼用途?
- Q32 · Reserved 欄位非零、不合法 Command Dword 組合或不支援 Opcode 應如何處理?
- Q33 · NSID 不存在、Inactive、不適用或錯誤使用 Broadcast NSID 時,應回傳什麼類型的 Status?
- Q34 · CQE 中的 SQHD、SQID、CID、Phase Tag 及 Status 分別有什麼用途?
- Q35 · Status Code Type 與 Status Code 應如何解析?
- Q36 · More 與 Do Not Retry 位元分別代表什麼?DNR 為 0 是否代表一定能直接重試?
- Q37 · Completion 已寫入但 Host 未處理,可能與 Phase Tag、CQ 位置或 Interrupt 有什麼關係?
- Q38 · 多個 Command 同時 Outstanding 時,Controller 是否必須按照提交順序完成?
- Q39 · 哪些 Command 具有順序相依性?Host 為什麼不能假設所有 Command 都依序完成?
- Q40 · Outstanding Command 達到限制或 CQ Full 時,Controller 如何限制取得新 Command?
- Q41 · Round Robin 與 Weighted Round Robin Arbitration 有什麼差異?
- Q42 · Urgent、High、Medium 及 Low Queue Priority 在哪些情況下生效?
- Q43 · 多個 Queue 競爭資源時,如何判斷 Arbitration 是否符合設定?
- Q44 · Identify Controller 與 Identify Namespace 分別提供哪些重要資訊?
- Q45 · Active Namespace ID List、Allocated Namespace ID List 及 Namespace Descriptor List 有什麼差異?
- Q46 · Controller List、UUID List 及 I/O Command Set Identify 資料分別有什麼用途?
- Q47 · NVM Set、Endurance Group、Domain 及 Secondary Controller 資訊應從哪種 Identify 資料取得?
- Q48 · CNS、CSI、NSID 或 UUID Index 不支援或不合法時,Controller 應如何回應?
- Q49 · Serial Number、Model Number、Firmware Revision、MDTS 及 Optional Admin Command 欄位應如何解讀?
- Q50 · Identify 宣告支援某功能後,應如何透過對應 Command 及 Commands Supported and Effects Log 驗證?
- Q51 · Namespace 建立、刪除、Attach、Detach 或 Format 後,哪些 Identify 資料與 Namespace List 應更新?
- Q52 · Firmware Activation、Reset 及 Power Cycle 後,哪些 Identify 資料可能改變,哪些應保持不變?
- Q53 · Identify、Feature、Log Page 與實際 Command 行為不一致時,應如何定位問題?
- Q54 · Feature 的 Current、Default、Saved Value 及 Supported Capabilities 分別代表什麼?
- Q55 · Set Features 的 Save 位元如何影響 Controller Reset 與 Power Cycle 後的 Feature 值?
- Q56 · 不支援的 Feature、不合法 Feature 值或 Controller 不支援 Save 時,應如何回應?
- Q57 · Host 如何判斷某個 Feature 是否需要指定 NSID?
- Q58 · Arbitration、Number of Queues 及 I/O Command Set Profile Feature 如何設定與驗證?
- Q59 · Interrupt Coalescing 與 Interrupt Vector Configuration 如何設定與驗證?
- Q60 · Volatile Write Cache 與 Write Atomicity Normal 控制什麼行為?
- Q61 · Asynchronous Event Configuration 如何決定哪些事件需要回報?
- Q62 · Power Management、Autonomous Power State Transition 及 Host Controlled Thermal Management 有何差異?
- Q63 · Timestamp、Keep Alive Timer 及 Host Memory Buffer 如何設定與驗證?
- Q64 · Host Behavior Support、Error Recovery 及 Read Recovery Level 有什麼用途?
- Q65 · Namespace Write Protection 如何設定?不同保護模式在 Reset 與 Power Cycle 後是否保留?
- Q66 · Set Features 成功後,為什麼還應使用 Get Features 確認?
- Q67 · Firmware Activation、Namespace 刪除、Controller Reset 及 Power Cycle 後,Feature 應如何變化?
- Q68 · Feature 宣告支援但 Get、Set 或實際功能行為不一致時,應如何驗證?
- Q69 · Supported Log Pages 有什麼用途?讀取其他 Log 前,應如何確認支援能力?
- Q70 · Error Information Log 與 SMART / Health Information Log 分別記錄什麼?
- Q71 · Firmware Slot Information、Changed Namespace List 及 Commands Supported and Effects Log 分別用來確認什麼?
- Q72 · Device Self-test、Persistent Event 及 Sanitize Status Log 分別適用於哪些情境?
- Q73 · Endurance Group、Predictable Latency、Lockdown、Boot Partition 及 Media Unit Status Log 各記錄什麼?
- Q74 · Host 如何依 Log Page 的 Scope 正確設定 NSID 及其他欄位?
- Q75 · 大型 Log 如何分段讀取?Offset、Length、重疊及缺口應如何處理?
- Q76 · Log Specific Identifier、UUID Index 及 Retain Asynchronous Event 有什麼用途?
- Q77 · 分段讀取期間 Log 內容改變時,Host 如何判斷資料是否一致?
- Q78 · Error Information Log 或 Persistent Event Log 到達容量上限時,舊紀錄如何處理?
- Q79 · 哪些 Log 資料在 Controller Reset、NVM Subsystem Reset 或 Power Cycle 後仍可保留?
- Q80 · Supported Log Pages 或 Commands Supported and Effects 的宣告與實際行為不一致時,如何判斷?
- Q81 · Host 如何從 Commands Supported and Effects Log 確認 Opcode 支援及影響範圍?
- Q82 · Host 為什麼需要預先送出 Asynchronous Event Request?沒有事件時為何保持 Outstanding?
- Q83 · 事件發生後,Host 如何從 AER Completion 取得事件種類與 Log 位置?
- Q84 · Host 處理事件後,為什麼需要讀取對應 Log 並重新送出 AER?
- Q85 · AER Request 數量超過 Controller 上限時,應如何回應?
- Q86 · 沒有掛入 AER 時發生事件,Controller 如何保留與回報?
- Q87 · 多個相同或不同事件同時發生時,Controller 如何合併與回報?
- Q88 · Asynchronous Event Configuration 如何啟用或遮蔽特定事件?
- Q89 · SMART、Namespace、Firmware、Telemetry、Sanitize、Self-test 與 PEL 各有哪些通知條件?
- Q90 · Host 讀取 Log 後,事件如何清除或保留?
- Q91 · AER 能否被 Abort?Reset 時尚未完成的 Request 如何處理?
- Q92 · AER 已完成,但對應 Log 看不到預期資訊時,應如何定位?
- Q93 · Invalid Opcode、Invalid Field、CID Conflict 與 Sequence Error 如何區分?
- Q94 · Namespace、Log、Queue、Queue Size 與 Interrupt Vector 錯誤如何定位?
- Q95 · Firmware、Format 與容量錯誤為何不能只看名稱?
- Q96 · Data Transfer Error、Internal Error 與 Namespace Not Ready 有何不同?
- Q97 · Power Loss、Abort、SQ Deletion 與 Fused 失敗如何反映於完成?
- Q98 · Host 如何依 Status、More、DNR 與 CRD 決定下一步?
- Q99 · 哪些錯誤需要 Error Information?
- Q100 · 如何從 Error Information 對回原始命令與錯誤欄位?
- Q101 · Error Log 的 Status 必須與 CQE 完全逐 bit 相同嗎?
- Q102 · 多個錯誤、Log 容量與 Error Count 如何處理?
- Q103 · 非 Success CQE 沒有新增 Error Entry,一定違規嗎?
- Q104 · 一般命令錯誤後,其他命令是否可以繼續?
- Q105 · 哪些嚴重情況可能設定 CSTS.CFS,Host 應怎麼判斷?
- Q106 · 如何交叉比對 CQE、Error Information 與 Persistent Event?
- Q107 · Abort 如何用 SQID 與 CID 指定目標?
- Q108 · Abort 已完成、不存在或指定錯誤 SQID/CID 的命令時會怎樣?
- Q109 · 重複 Abort 與並行 Abort 如何套用 ACL?
- Q110 · Abort 成功是否代表目標完全沒有執行?
- Q111 · Abort 未立即中止時,目標還能正常完成嗎?
- Q112 · Abort 與目標完成同時到達,Host 如何避免重複處理?
- Q113 · Timeout 後一定要依 Abort、Queue Reset、Controller Reset 的順序嗎?
- Q114 · Abort 本身也 Timeout,Host 應如何復原?
- Q115 · Reset 後如何處理舊命令、舊完成與舊 Queue?
- Q116 · 如何區分 Command Timeout、Ready Timeout 與長時間操作?
- Q117 · Timeout 時如何定位提交、取得、執行、完成或 Host 處理階段?
- Q118 · 如何查詢 Format、Sanitize 與 Sanitize Namespace 的支援能力?
- Q119 · Format、Secure Erase、Subsystem Sanitize 與 Namespace Sanitize 有何差別?
- Q120 · Format 如何選 LBA Format、Metadata、PI 與 SES?
- Q121 · Format 的非法格式、參數與狀態如何回報?
- Q122 · Format 期間哪些 Admin 操作可以繼續?
- Q123 · Format 過程遇到 Reset 或斷電,如何判斷結果?
- Q124 · Format 成功後哪些 Identify 與 Namespace 狀態要更新?
- Q125 · Format 失敗時如何使用 CQE、Error Log 與 PEL?
- Q126 · SANICAP 如何表示 Block Erase、Overwrite 與 Crypto Erase?
- Q127 · NDAS、Overwrite Pattern、Pass Count 與反轉 Pattern 如何使用?
- Q128 · SPROG、SOS、SANS 與 GDE/NDE 要怎麼一起看?
- Q129 · Subsystem Sanitize 期間哪些 Command 允許執行?
- Q130 · Sanitize 遇到 Reset 或 Power Loss 會繼續嗎?
- Q131 · 成功、失敗與 Failure Mode 在 Log 中如何區分?
- Q132 · Exit Failure Mode 能做什麼,不能做什麼?
- Q133 · Sanitize 的 AER 與 PEL 應在何時產生?
- Q134 · Namespace Sanitize 如何指定目標並確認其他 Namespace 未被清除?
- Q135 · Namespace Sanitize 遇到不存在、Inactive 或不支援的目標如何回應?
- Q136 · Firmware Slot 的數量、唯讀限制與使用狀態從哪裡查?
- Q137 · Firmware Image Download 如何使用 OFST 與 NUMD?
- Q138 · 下載重疊、缺漏、順序與無效 Image 如何處理?
- Q139 · Firmware Commit 的 FS 與 CA 如何選?
- Q140 · 立即啟用與等待不同 Reset 啟用有何差別?
- Q141 · Firmware Activation Starting 何時產生?
- Q142 · Download、Commit 或 Activation 中發生 Reset/斷電如何處理?
- Q143 · Firmware 載入失敗後如何回復?
- Q144 · Activation 後如何確認版本、Slot 與 Command Effects?
- Q145 · Activation 後哪些設定應保留,哪些需要重新探索?
- Q146 · Boot Partition 支援、狀態與 Active ID 如何確認?
- Q147 · Boot Partition 如何下載、提交與切換 Active?
- Q148 · Boot Partition 更新與 Controller Firmware 更新有何不同?
- Q149 · 如何確認 Device Self-test 支援與可測範圍?
- Q150 · Short 與 Extended Self-test 有何差別?
- Q151 · Self-test 進行中再次啟動或要求中止會怎樣?
- Q152 · Current Operation 與 Completion Percentage 如何解讀?
- Q153 · 成功、失敗、中止、Reset 與斷電後的 Self-test 結果怎麼看?
- Q154 · Self-test 完成一定有 Asynchronous Event 嗎?
- Q155 · Segment、Diagnostic Information 與 Failing LBA 何時有效?
- Q156 · Self-test 結果如何排列,超過 20 次後怎麼辦?
- Q157 · 如何確認 Namespace Management 與 Attachment 支援?
- Q158 · 建立 Namespace 時 NSZE、NCAP、Format 與 Thin Provisioning 如何設定?
- Q159 · Create Namespace 容量不足或參數不合法如何回應?
- Q160 · Create 後 Allocated Namespace List 如何更新?
- Q161 · Attach/Detach 如何指定 Controller?
- Q162 · Attach/Detach 後 Active List 與 Controller List 如何互相驗證?
- Q163 · 重複 Attach、非法 Controller 或未 Attach 就 Detach 如何回應?
- Q164 · Detach 時還有 Outstanding Command,應如何處理?
- Q165 · Detach 後再送 Namespace Command 應得到什麼?
- Q166 · 刪除不存在或仍 Attached 的 Namespace 如何處理?
- Q167 · Namespace 變更後哪些事件與 Log 應更新?
- Q168 · Changed Namespace List 超過容量如何表示?
- Q169 · Reset 或 Power Cycle 後 Namespace 配置與 Attachment 是否保留?
- Q170 · Private 與 Shared Namespace 有何差別?
- Q171 · 三種 Write Protection 模式與進入條件有何不同?
- Q172 · Write Protection 在 Reset 與 Power Cycle 後如何保留?
- Q173 · Write Protection 如何影響 Format、Sanitize 與 Namespace Management?
- Q174 · Controller、Subsystem 與 Queue Level Reset 範圍有何不同?
- Q175 · Conventional、FLR、Hot 與 Fundamental Reset 如何對應 NVMe?
- Q176 · Reset 發生在 Idle、命令或背景操作中,如何判斷結果?
- Q177 · Reset 期間 CSTS.RDY 應如何變化?
- Q178 · Reset 後哪些 Register、Feature 與 Queue 要重建?
- Q179 · Reset 後舊 Outstanding 與 Completion 應如何處理?
- Q180 · Reset 後如何確認 Feature、Log、Namespace 與 Firmware?
- Q181 · Reset 超時或 CFS 未清除時怎麼辦?
- Q182 · Host 如何用 CC.SHN 做 Normal Shutdown?
- Q183 · 何時算 Shutdown Complete,可以移除電源?
- Q184 · Normal、Abrupt Shutdown 與直接斷電有何不同?
- Q185 · Shutdown 期間能否繼續新命令或保留 Outstanding?
- Q186 · Normal/Abrupt 如何影響 Unsafe Shutdowns?
- Q187 · 非正常失電後為何查 SMART、Error 與 PEL?
- Q188 · Power State Descriptor 能告訴 Host 哪些事情?
- Q189 · Operational 與 Non-Operational Power State 差在哪裡?
- Q190 · Entry 與 Exit Latency 如何影響命令等待時間?
- Q191 · APST 如何設定、觸發與停用?
- Q192 · 量到恢復延遲超過 EXLAT,如何判斷是否違規?
- Q193 · HCTM 的 TMT1 與 TMT2 應如何設定?
- Q194 · Controller 何時開始或停止 Thermal Management?
- Q195 · Reset 與 Power Cycle 後,Power/Thermal 設定如何恢復?
- Q196 · SMART Critical Warning 的各 bit 代表什麼?
- Q197 · Available Spare、Threshold 與 Percentage Used 如何解讀?
- Q198 · 資料量、命令數、Busy Time、Power Cycles 與 Power On Hours 如何累計?
- Q199 · Unexpected Power Losses、媒體錯誤與 Error Log Entries 如何累計?
- Q200 · Warning 與 Critical Composite Temperature Time 如何累計?
- Q201 · 多個 Temperature Sensor 與 Composite Temperature 如何比較?
- Q202 · 哪些 Health 變化會產生 AER?
- Q203 · SMART 資料的 Scope 如何判斷?
- Q204 · SMART、實際操作、Error Log 與 PEL 如何交叉驗證?
- Q205 · 如何確認 Persistent Event Log 及個別事件的支援能力?
- Q206 · PEL Context 如何建立、分段讀取與釋放?
- Q207 · Context 不存在或重複建立時,應如何回應?
- Q208 · SMART、Firmware、Timestamp、Reset 與 Hardware Error 如何記錄?
- Q209 · Namespace、Format 與 Sanitize 對應哪些 Persistent Events?
- Q210 · PEL 達容量上限時,舊事件如何處理?
- Q211 · PEL 新增事件後,是否一定發送 Asynchronous Event?
- Q212 · Reset 與 Power Cycle 後,PEL 哪些東西應保留?
- Q213 · PEL 的 Header、長度與事件順序如何驗證?
- Q214 · Timestamp 如何設定並以 Get Features 驗證?
- Q215 · Timestamp 如何增加、Wrap-around,Origin 與 SYNC 怎麼看?
- Q216 · Timestamp 變更如何記錄,Reset 與 Power Cycle 後怎麼判讀?
- Q217 · PCIe Host 如何確認 Keep Alive 支援?
- Q218 · Keep Alive Timer 如何設定、調整與停用?
- Q219 · Host 如何在 Timer 到期前維持 Keep Alive?
- Q220 · Keep Alive Timeout 後,Controller 必須做哪些清理?
- Q221 · Controller Reset 後,是否要重新設定 Keep Alive?
- Q222 · Command Based 與 Traffic Based Keep Alive 有何不同?
- Q223 · HMB、CMB 與 PMR 分別解決什麼問題?
- Q224 · HMB 大小與 Descriptor List 如何配置?
- Q225 · HMB 位址、大小或 Descriptor 數量不合法時如何判斷?
- Q226 · HMB 如何啟用、停用並在 Reset 後重新提供?
- Q227 · Host 提前回收仍在使用的 HMB 會有什麼後果?
- Q228 · Host 如何找出 CMB 的位置、大小與可用用途?
- Q229 · 哪些 Queue、Data、Metadata 與指標清單可放 CMB?
- Q230 · CMB 超出範圍或用於不支援用途時如何處理?
- Q231 · Reset 後 CMB 設定與內容會保留嗎?
- Q232 · PMR 如何確認支援、啟用並等待 Ready?
- Q233 · PMR 未 Ready、發生錯誤或過早存取時會怎樣?
- Q234 · Host 如何安全停用 PMR?
- Q235 · Reset 與 Power Cycle 如何影響 PMR 狀態及持久資料?
- Q236 · Host Memory、HMB、CMB 與 PMR 的存取與生命週期如何比較?
- Q237 · 如何確認 Security Send/Receive 與實際協定支援?
- Q238 · Security Protocol、欄位或資料長度不合法時如何處理?
- Q239 · Security 資料傳輸失敗應如何區分 Status 與協定錯誤?
- Q240 · Security 狀態如何影響其他 Admin Command?
- Q241 · Reset 與 Power Cycle 後 Security 狀態是否保留?
- Q242 · Lockdown 如何限制指定 Command 或 Feature?
- Q243 · 執行被 Lockdown 禁止的命令或 Feature 應如何回應?
- Q244 · Lockdown Log 的一般與增強格式如何解讀?
- Q245 · Reset 與 Power Cycle 後 Lockdown 是否保留?
- Q246 · Subsystem、Primary 與 Secondary Controller 是什麼關係?
- Q247 · Private 與 Shared Namespace 如何 Attach 到 Controller?
- Q248 · 如何取得 Namespace 對應的 Controller List?
- Q249 · 一台 Controller Reset 時,其他路徑能否繼續存取 Shared Namespace?
- Q250 · NVM Subsystem Reset 會影響哪些 Controller?
- Q251 · Namespace 變更如何通知其他 Controller?
- Q252 · Asymmetric Controller Behavior 與 ANA 如何協助選路徑?
- Q253 · Secondary Controller 如何 Online 或 Offline?
- Q254 · Virtualization Management 如何分配與釋放資源?
- Q255 · Reset 與 Power Cycle 後 Virtualization 資源如何恢復?
- Q256 · NVM Set、Endurance Group 與 Namespace 是什麼關係?
- Q257 · 如何從 Identify 探索 NVM Set 與 Endurance Group?
- Q258 · Namespace 如何建立於指定 Set 或 Group?
- Q259 · 指定不存在的 NVM Set 或 Endurance Group 時會怎樣?
- Q260 · Endurance Group Information Log 提供哪些健康與容量資訊?
- Q261 · Endurance Group 的警告、Spare 與壽命事件如何更新?
- Q262 · 如何確認總容量與未配置容量?
- Q263 · Namespace 建立與刪除如何改變未配置容量?
- Q264 · Capacity Management 如何配置或釋放 Group 與 Set?
- Q265 · 要求容量或物件數超過可用資源時應回什麼?
- Q266 · 容量配置完成後,哪些 Identify 與 Log 應更新?
- Q267 · Reset 與 Power Cycle 後 Group、Set 與容量配置如何保留?
- Q268 · Domain、Set、Group、Media Unit 與 Namespace 是單一層級嗎?
- Q269 · 如何取得 Domain 與資源歸屬?
- Q270 · Reclaim Group、Reclaim Unit 與 RU Handle 各代表什麼?
- Q271 · Namespace 如何透過 Placement Handle 選擇 RU?
- Q272 · Media Unit Status Log 提供哪些資訊,如何走訪描述資料?
- Q273 · 能從 Media Unit Status 直接判斷 Namespace 不可用嗎?
- Q274 · 媒體狀態變化會產生哪些通知與紀錄?
- Q275 · 如何辨識管理實體的 Scope,避免混用 ID?
- Q276 · PRP1 如何描述第一頁的資料?
- Q277 · PRP2 何時是第二頁,何時是清單?
- Q278 · PRP List 如何串接多頁?
- Q279 · PRP 位址、Offset 與 List 有哪些對齊要求?
- Q280 · PRP 為 0、位址無效或鏈結錯誤時,能指定同一種錯誤嗎?
- Q281 · SGL Data Block、Segment 與 Last Segment 如何配合?
- Q282 · SGL 位址、長度、數量與類型錯誤如何區分?
- Q283 · Identify 的 SGL 能力如何限制合法用法?
- Q284 · Data Pointer 錯誤與 Data Transfer Error 有何不同?
- Q285 · PRP/SGL 錯誤如何與 CQE 及 Error Information 對回?
- Q286 · CQ 如何指定 Interrupt Vector?
- Q287 · 多條 CQ 共用 Vector 與獨立 Vector 有何不同?
- Q288 · Interrupt Coalescing 的 Threshold 與 Time 如何作用?
- Q289 · 如何停用 Interrupt Coalescing?
- Q290 · FID09h 是遮蔽中斷嗎?真正的 Mask 要如何設定?
- Q291 · Vector 被遮蔽時,Controller 還能寫 CQE 嗎?
- Q292 · 解除 Mask 後如何處理累積完成?
- Q293 · 已被 CQ 使用的 Vector 可以修改設定嗎?
- Q294 · Reset 後中斷設定要如何恢復?
- Q295 · Queue 刪除後如何回收中斷資源?
- Q296 · 如何比對 Interrupt、CQ 與實際完成行為?
- Q297 · 宣告支援的 Command 卻失敗,第一步怎麼查?
- Q298 · 未宣告支援的 Command 卻成功,是否一定合規?
- Q299 · Set 成功但 Get 或行為不同,如何縮小問題?
- Q300 · AER 已完成,但對應 Log 看不到資訊,怎麼查?
- Q301 · 失敗 CQE 沒新增 Error Entry,一定違規嗎?
- Q302 · CQE、Error Information 與 PEL 不同,何時才是矛盾?
- Q303 · Reset 後 Feature 保留或 Saved 遺失,如何判斷?
- Q304 · Namespace 變更後,Identify、Changed List 與 AER 如何對照?
- Q305 · Firmware Activation 後 FR 或 Slot 沒改,如何判斷?
- Q306 · Sanitize 命令成功後 Log 還在進行中,是錯誤嗎?
- Q307 · Self-test 已結束但沒有結果,如何驗證?
- Q308 · Shutdown 與 Unsafe Shutdowns 計數不符直覺,如何判斷?
- Q309 · Critical Warning 改變卻沒有 AER,先看哪些設定?
- Q310 · PEL 事件排列與實際時間不同,如何驗證?
- Q311 · CFS=1 卻缺少錯誤資訊,還能查什麼?
- Q312 · Abort 後看見兩次 Completion,如何判斷是否重複?
- Q313 · Delete 完成後仍存取 Queue Memory,有何問題?
- Q314 · Reset 後讀到舊 CQE,如何處理?
- Q315 · Detach 後 Namespace Command 仍成功,何時合理?
- Q316 · Lockdown 後仍可操作,如何確認是否漏鎖?
- Q317 · Power State 恢復太慢,如何量測才公平?
- Q318 · 如何比較三種 Reset 對同一功能的影響?
- Q319 · 如何判斷操作真正影響誰?
- Q320 · 如何把所有介面串成一次完整的符合性驗證?
- Q321 · 一筆 Read/Write 的長度合法嗎?如何一起檢查 MDTS、NLB 與 Namespace 範圍?
- Q322 · Write 已成功,資料就一定耐斷電嗎?Flush 與 FUA 各保證什麼?
- Q323 · 原子單位足夠,為什麼跨邊界的 Write 仍可能不具整筆原子性?
- Q324 · Read、Compare 與 Verify 成功,各能證明什麼?
- Q325 · Write Zeroes 與 Deallocate 之後,Read 一定回全零嗎?
- Q326 · PI 檢查為什麼沒有抓到錯誤?以 Type 1、16-bit Guard 格式逐步判讀
- Q327 · Copy 失敗後,CQE.DW0 能告訴我哪些資料已經複製?
- Q328 · Write Uncorrectable 後 Read 失敗,是媒體壞掉了嗎?


Comments