NVM Command Set 1.3:邏輯區塊、I/O 命令與資料保護
00.01.NVM Command Set 說明主機如何以 logical block 為單位讀寫與管理儲存空間。理解它的關鍵,是把資料格式、命令行為、資料完整性與資源管理連起來:同一筆命令,會因 namespace 格式、支援能力與設定不同而有不同的適用條件。
- logical block
- 邏輯區塊;namespace 可定址的基本單位,其資料大小由使用中的格式決定。
- namespace
- namespace,主機透過 controller 存取的一份已格式化非揮發性容量。
- NVM
- Non-Volatile Memory,斷電後仍能保存資料的記憶體。
這篇的主軸
儲存空間與格式
01-01先理解 namespace 的容量、LBA 格式,以及資料與 metadata 的關係。
- metadata
- 隨 logical block 儲存的附加資料,可包含資料保護資訊,也可有其他用途。
- LBA
- Logical Block Address;以所選格式的 block 為單位。
命令做了什麼
02-01比較 Read、Write、Compare、Verify、Copy 與空間管理命令的作用及完成條件。
資料完整性與順序
03-01理解原子性、命令相依、Protection Information,以及資料檢查的範圍。
- Protection Information
- 資料保護資訊,縮寫 PI;包含 Guard 與 tags,用來檢查資料及其關聯資訊。
能力與資源管理
04-01以 Identify、Features 和 log 理解格式選擇、效能限制及進階資源功能。
00.02.主機透過提交佇列送出命令,控制器透過完成佇列回報結果。Base 規格定義這套共同機制;本篇聚焦命令如何作用於 namespace 內的 logical blocks。
把主軸連起來
00.03.可以沿著一筆資料的生命週期讀這篇:先建立 namespace 並選格式,讓主機知道 LBA、資料及 metadata 如何對應;接著使用命令讀寫或搬移資料,再判斷順序、原子性及保護資訊能提供哪些保證。
00.04.後半部把單筆操作放回整個裝置:效能提示影響操作安排,Rate Limiting 管理共享資源,FDP/Streams 描述資料放置,追蹤與狀態結構記錄資源變化。這些功能都要回到前面的格式與能力資訊判斷能否使用。學完應能解釋一筆命令的範圍、資料長度、必要條件與完成結果。
- FDP
- Flexible Data Placement,把資料放置提示與媒體回收管理連結的能力。
01 Namespace 容量與配置狀態
01.01.先區分 logical address space 與實際配置,再分析寫入及 deallocate。讀取值與 allocation 狀態回答不同問題。
- NCAP
- Namespace Capacity;同時可配置 logical blocks 最大數量。
- NSZE
- Namespace Size;可定址 logical blocks 總數。
- NUSE
- Namespace Utilization;目前配置 logical blocks 數量。
01.02.NSZE ≥ NCAP ≥ NUSE;NSZE 定義可定址範圍,NCAP 限制同時配置的 blocks,NUSE 計算目前已配置 blocks。THINP=0 時 NCAP=NSZE;NVMCAP 以 bytes 計,不能直接當成 NSZE 乘資料大小。
- NVMCAP
- NVM Capacity;以 bytes 計,不能與 NSZE/NCAP 的 logical-block 數直接比較。
- THINP
- Thin Provisioning,NSFEAT 中決定 NCAP 是否可小於 NSZE,以及 controller 是否必須追蹤 NUSE 的 bit。
來源:NVM Command Set 1.3 §2.1.1; 4.1.5.1
來源:NVME-NVM-CS-1.3, Rev. 1.3, §2.1.1; 4.1.5.1, 文件頁 13-14,85-93, PDF 頁 13-14,85-93
| 容量或操作 | 描述的範圍或變化 | 判斷時須注意什麼 |
|---|---|---|
| NSZE | 有效 LBA 為 0 到 NSZE−1 | LBA 越界與容量不足不同 |
| THINP | 支援時須追蹤 NUSE | 不支援時可固定回 NCAP |
| Allocation | Write、Copy 寫入端及 WU 可配置 | Read/Verify 不改 deallocation 狀態 |
02 Metadata 傳輸與 PI 的位置
02.01.Metadata 不一定全是 PI。先標示 data、非 PI metadata 與 PI 三個區域,再計算 host buffer 大小與 CRC coverage。
- Host
- 主機;執行作業系統並送出 NVMe 命令的一端。
- CRC
- Cyclic Redundancy Check,循環冗餘檢查;由資料位元計算檢查值,以偵測資料變化。
- PI
- Protection Information;用 Guard 與 tags 檢查資料及其關聯資訊的保護欄位。
- DPTR
- 命令 data pointer;Read 是目的、Write 是來源、Copy/DSM 指向 descriptors。
- MPTR
- Separate metadata 的指標;metadata placement 由 namespace format 與命令欄位決定。
02.02.每個 namespace 在 format 時選一種 metadata 傳輸機制:與 data 相連形成 extended LBA,或由 MPTR 指向 separate buffer。不能把 metadata 分拆到兩種機制;寫入時 metadata 必須與其 logical block 原子寫入。
來源:NVM Command Set 1.3 §2.1.6; 5.2.3; 5.3
來源:NVME-NVM-CS-1.3, Rev. 1.3, §2.1.6; 5.2.3; 5.3, 文件頁 22,129-131, PDF 頁 22,129-131
| 傳輸配置或位置 | 主機如何準備緩衝區 | 格式對它的限制 |
|---|---|---|
| Extended LBA | DPTR 指向 data+metadata 交錯序列 | MSET/MTELBA 反映此選擇 |
| Separate buffer | DPTR 給 data,MPTR 給 metadata | PRP metadata 需 實體位址連續;SGL 可分散 |
| PI location | 本版有效格式的 PI 在 metadata 末端 | CRC 包含之前的非 PI metadata |
- PRP
- Physical Region Page,以 memory page 為單位描述 host-addressable data buffer 的 pointer 格式。
- SGL
- Scatter Gather List,以 descriptor 與 segment 描述一段或多段 data buffer 的格式。
03 Read/Write 的資料與完成條件
03.01.把範圍、buffer、PI 與完成狀態分成四項檢查,才能分辨資料位址錯誤、格式不符與真正的媒體失敗。
03.02.Read/Write 以 SLBA 與 0-based NLB 指定連續範圍。Read 的 DPTR 是目的 buffer,Write 的 DPTR 是來源 buffer;FUA=1 要求使用 nonvolatile media,並沒有隱含其他命令的順序。
- SLBA
- Starting LBA;指定命令範圍的起點。
- FUA
- Force Unit Access;要求 nonvolatile-media 語意,不自動建立其他命令的順序。
- NLB
- Number of Logical Blocks;本報告命令/status descriptors 的該欄為 0-based。DSM 的 LLB 另為1-based。
來源:NVM Command Set 1.3 §3.3.4; 3.3.6
來源:NVME-NVM-CS-1.3, Rev. 1.3, §3.3.4; 3.3.6, 文件頁 48-51,53-56, PDF 頁 48-51,53-56
| 命令欄位 | 描述的資料或操作 | 哪些選擇會改變解讀 |
|---|---|---|
| CDW10 / CDW11 | SLBA 低/高 32 bits | NLB=0 仍有一個 block |
| CDW12 | LR、FUA、PRINFO、STC、CETYPE、NLB | Read 的 DTYPE 區是 reserved |
| CDW13 | CETYPE 決定 DSM 或 CEV 解讀 | Write 另含 DTYPE/DSPEC |
| MPTR | 單獨傳 metadata 時使用 | 不可把一部分 metadata 分到兩種機制 |
- CETYPE
- Command Extension Type;選擇命令延伸欄位 CEV 的用途。
- PRINFO
- Protection Information;命令內的 PRACT 與 PRCHK 組合欄位。
- DSPEC
- Directive Specific;內容由 Directive 類型決定。
- DTYPE
- Directive Type;指定命令使用哪一類 Directive。
- CDW
- CDW(Command Dword);命令中的 32-bit 欄位單位,例如 CDW10 的 10 是欄位 index,不是 byte offset。
- CEV
- Command Extension Value;內容依 CETYPE 的選擇解讀。
- DSM
- Dataset Management;由 host 提供資料範圍的使用與配置提示。
- STC
- Storage Tag Check;獨立於三位元 PRCHK,STS=0 時忽略。
- LR
- Limited Retry;指定受 Error Recovery policy 約束的重試行為。
04 正常、斷電與多段原子性
04.01.把大小、起始對齊、NSABP 與 MAM 一起讀。Atomicity 與資料已進入 nonvolatile media 是不同檢查項目,FUA/Flush 也不建立其他命令的排序。
- NSABP
- Namespace Atomic Boundary Parameters;表示 namespace 的原子寫入參數是否適用。
- MAM
- Multiple Atomicity Mode;跨 boundary 的命令分成各自原子的 subranges。
04.02.AWUN/NAWUN 與 AWUPF/NAWUPF 分別描述正常及失敗條件原子性。Single Atomicity Mode 跨 boundary 不保證整筆原子;Multiple Atomicity Mode 在每個 boundary 切成各自原子的 subranges,並不承諾整筆一起成功。
- NAWUPF
- Namespace Atomic Write Unit Power Fail;namespace 失敗條件的原子寫入大小;依適用與零值規則判讀。
- AWUPF
- Atomic Write Unit Power Fail;失敗條件原子大小的0-based欄位。
- NAWUN
- Namespace Atomic Write Unit Normal;namespace 正常情況原子寫入大小;依適用與零值規則判讀。
- AWUN
- Atomic Write Unit Normal;controller 正常原子寫入大小的 0-based 欄位。
來源:NVM Command Set 1.3 §2.1.4; 4.1.3.4; 5.9
來源:NVME-NVM-CS-1.3, Rev. 1.3, §2.1.4; 4.1.3.4; 5.9, 文件頁 15-21,66-67,165, PDF 頁 15-21,66-67,165
| 原子性欄位或模式 | 規定什麼範圍 | 不能由此推論什麼 |
|---|---|---|
| AWUN / AWUPF | 大小採 0-based 編碼 | AWUPF 不大於 AWUN |
| NABO / NABSN / NABSPF | 邊界在 offset + k × size | 需依各欄位換算與未回報規則 |
| MAM | 每個 atomic subrange 獨立保證 | fused 仍用 Single 模式 |
| FID 0Ah.DN | DN=1 可不遵守 normal atomicity | 仍須遵守 power-fail 保證 |
- NABSPF
- Namespace Atomic Boundary Size Power Fail;失敗條件的原子邊界大小。
- offset
- offset;從指定起點算出的位移。它回答「離起點多遠」,不等於 index。
- NABSN
- Namespace Atomic Boundary Size Normal;正常情況的原子邊界大小。
- NABO
- Namespace Atomic Boundary Offset;決定第一個 boundary 的位置。
- FID
- Feature Identifier;指定要讀取或設定哪一項 Feature 的編號。
- DN
- Write Atomicity Normal 的 Disable Normal;不免除 power-fail atomicity。
05 Compare 與 Verify 解決不同問題
05.01.比對預期內容、驗證完整性與一般 Read 三者的證據不同。Compare 的 metadata 比對排除 PI;PI 另依要求的 checking 執行。
05.02.Compare 比較媒體資料與 host 提供的 buffer;Verify 檢查已儲存資料完整性而不把資料或 metadata 回傳 host。兩者要求 PRACT=0;Verify 與 Read 偵測到的失敗不必使用相同錯誤碼。
來源:NVM Command Set 1.3 §3.3.1; 3.3.5
來源:NVME-NVM-CS-1.3, Rev. 1.3, §3.3.1; 3.3.5, 文件頁 27-30,51-53, PDF 頁 27-30,51-53
| 命令或大小欄位 | 實際檢查什麼 | 結果的解釋範圍 |
|---|---|---|
| Compare | miscompare 回 Compare Failure | host 與 media 兩側 PI 可分別檢查 |
| Verify | 沒有資料 buffer 傳輸 | 驗證量仍計入 Data Units Read |
| VSL / NVMVFYS | variant 決定建議大小或硬上限 | 非零 VSL 以 2^n × minimum page size 表示 |
- VSL
- Verify Size Limit;Verify 的大小限制,需結合 variant 能力判讀。
06 Copy:描述來源、連續目的與部分失敗
06.01.先計算展開後的目的區間,再檢查格式、長度限制、重疊與 atomicity。Copy 可少用 host 資料傳輸,但不是無條件的 transaction。
06.02.Copy 把一個或多個 source ranges 依 descriptor 順序接成單一連續目的範圍。Format 0h/1h 來源與目的在同一 namespace;2h/3h 帶 SNSID,需 controller 支援與 host 啟用。失敗 CQE DW0 是最低未成功 source index,後面的 ranges 仍可能已複製。
- controller
- controller,實作 NVMe 介面、取走 command 並回報 completion 的控制實體。
- SNSID
- Source Namespace Identifier;指定 Copy 的來源 namespace。
- index
- index;用來選取清單中的項目或格式。它回答「選哪一項」,不是「離起點多遠」。
- CQE
- Completion Queue Entry,CQ 中的一筆完成結果資料結構。
來源:NVM Command Set 1.3 §3.3.2
來源:NVME-NVM-CS-1.3, Rev. 1.3, §3.3.2, 文件頁 30-44, PDF 頁 30-44
| 描述子或行為 | 資料如何安排 | 限制及完成結果 |
|---|---|---|
| NR / NLB | source count 與各範圍 block count 都是 0-based | 檢查 MSRC、MSSRL、MCL |
| FCO | 2h/3h 可要求 fast copy only | Fast Copy Not Possible 再看 DNR |
| Overlap | 2h/3h 禁止同 namespace source 與 destination 重疊 | 0h/1h 重疊結果需依原子條件另讀 |
| NVMCSA | 1.3 將目的寫入視為單一 write command | 仍受 MAM、大小及 boundary 限制 |
- DNR
- Do Not Retry,CQE status 中提示以相同 command 重試預期不會成功的 bit。
- FCO
- Fast Copy Only;要求適用來源以 fast copy 方法執行。
- NR
- Range count 的 0-based 欄位;實際 descriptors 數為 NR+1。
07 PRACT 與 PRCHK/STC 的組合
07.01.先檢查 namespace 是否啟用 PI,再依命令方向及 metadata 大小選處理分支。Checking bits 與可能的特殊停用值放在最後判斷。
07.02.PRACT 決定 PI 的傳遞、插入、移除或取代;PRCHK 的 Guard/Application/Reference bits 與獨立 STC 決定檢查要求。PRACT=1 且 MS>PI size 時,Read 仍傳回全部 metadata,不能一律解讀為刪除 PI。
- Guard
- PI 的檢查值欄位;所選格式決定檢查值的寬度與計算方法。
- PRCHK
- Protection Information Check;Guard、Application、Reference 的檢查 bits。
來源:NVM Command Set 1.3 §2.1.5; 5.3.2-5.3.3
來源:NVME-NVM-CS-1.3, Rev. 1.3, §2.1.5; 5.3.2-5.3.3, 文件頁 21-22,141-152, PDF 頁 21-22,141-152
| 操作或保護條件 | 控制器如何處理 PI | 對檢查或傳輸量的影響 |
|---|---|---|
| Write, PRACT=1 | MS=PI 時插入;MS>PI 時取代 PI | 此生成分支忽略 PRCHK/STC |
| Read, PRACT=1 | 先做要求的檢查;MS=PI 才移除 | MS>PI 仍回 metadata 與 PI |
| Type 1 / Type 2 | Reference 每個 block 遞增 | Type1 初值須等於對應 SLBA 低 bits |
| Type 3 | 不宜比對 computed reference | 若因 RTCHK 拒絕,使用 Invalid Protection Information |
| Disable sentinels | Type 1/2:Application Tag=FFFFh 時停用所有 PI checks;Type 3 另要求 Reference Tag(若有)也全一 | 不受 PRCHK/STC 設定影響 |
| Masks | mask bit=0 不比較 | Storage mask 另受 STMLA 約束 |
- RTCHK
- Reference Tag Check;要求 Reference Tag 檢查。
08 Hard/Soft 與 token-bucket 算例
08.01.用能力、limits、實際 demand 三個值判讀結果。設定比例不等於任何時刻都固定吞吐;內部資源與工作負載仍會改變觀測值。
08.02.Hard Limit 設 ceiling,Soft Limit 可利用未用 bandwidth/IOPS;資源不足時依設定比例分配。Appendix A 是多個 token buckets 的實作範例,不要求所有 controllers 採用相同內部實作。
- IOPS
- Input/Output Operations Per Second;每秒 I/O 操作數,與每秒傳輸 bytes 的頻寬不同。
來源:NVM Command Set 1.3 §5.10.1-5.10.2; Appendix A
來源:NVME-NVM-CS-1.3, Rev. 1.3, §5.10.1-5.10.2; Appendix A, 文件頁 166-168,176-177, PDF 頁 166-168,176-177
| 模式或命令 | 如何分享或消耗額度 | 理解這個結果的限制 |
|---|---|---|
| Hard | 有需求且資源不足時按比例分享 | 設定上限不是最低效能保證 |
| Soft | 可使用閒置額度 | 多個 soft targets 依 limits 比例分享 |
| Write tokens | total bytes × WRBWR;write bytes;total IOPS × WRIOPSR;write IOPS 1 | 四個 buckets 各自檢查 |
| Read tokens | total bytes 及 total IOPS 1 | 不扣 write-only buckets |
- WRIOPSR
- Write-to-Read IOPS Ratio;寫入相對於讀取的操作數權重。
- WRBWR
- Write-to-Read Bandwidth Ratio;寫入相對於讀取的頻寬權重。
接著打開 Spec 看什麼
09.01.以下按概念列出閱讀位置。報告時先用上面的流程說明問題,再打開對應章節看欄位與完整條件。中文教學 HTML 另有本篇全部圖表的逐圖重點、案例與細節。
| 要說明的觀念 | Spec 閱讀位置 |
|---|---|
| Logical block、格式與單位 | NVM 1.3 §1.1-1.6; 4.1.3.9; 4.1.4.8; 4.1.5 |
| Namespace 容量與配置狀態 | NVM 1.3 §2.1.1; 4.1.5.1 |
| Identify:同一 namespace 的多份資料結構 | NVM 1.3 §4.1.5 |
| LBAF、ELBAF 與唯一屬性格式 | NVM 1.3 §4.1.5.1; 4.1.5.3; 5.6 |
| Format、Host Behavior 與延伸 LBA | NVM 1.3 §4.1.2; 4.1.3.7 |
| 建立 namespace:格式、mask 與 granularity | NVM 1.3 §4.1.6; 4.1.5.8; 5.8 |
| Metadata 傳輸與 PI 的位置 | NVM 1.3 §2.1.6; 5.2.3; 5.3 |
| 能力探索、Opcode 與狀態 | NVM 1.3 §2.2; 3.1; 3.3 |
| Read/Write 的資料與完成條件 | NVM 1.3 §3.3.4; 3.3.6 |
| 命令順序與 Compare-and-Write | NVM 1.3 §2.1.2-2.1.3 |
| 正常、斷電與多段原子性 | NVM 1.3 §2.1.4; 4.1.3.4; 5.9 |
| Compare 與 Verify 解決不同問題 | NVM 1.3 §3.3.1; 3.3.5 |
| Copy:描述來源、連續目的與部分失敗 | NVM 1.3 §3.3.2 |
| Copy 的 PI 格式相容與轉換 | NVM 1.3 §3.3.2.3-3.3.2.4; 5.3.2.5 |
| Dataset Management 與三種 processing limits | NVM 1.3 §3.3.3 |
| Deallocated/unwritten 讀取規則 | NVM 1.3 §3.3.3.2.1; 4.1.3.3 |
| Write Uncorrectable、Write Zeroes 與整體清零 | NVM 1.3 §3.3.7-3.3.8 |
| 16/32/64b Guard 與 Qualified PI | NVM 1.3 §5.3.1; 4.1.5.3 |
| CRC 參數、位元順序與已知向量 | NVM 1.3 §5.3.1.1-5.3.1.3 |
| Storage/Reference Tag 的 Dword 封裝 | NVM 1.3 §5.3.1.4 |
| PRACT 與 PRCHK/STC 的組合 | NVM 1.3 §2.1.5; 5.3.2-5.3.3 |
| 基本 Features 的作用域與例外 | NVM 1.3 §4.1.3.1-4.1.3.4 |
| AER、SMART 與錯誤記錄的 NVM 補充 | NVM 1.3 §1.4.2; 4.1.1; 4.1.3.5; 4.1.4.1-4.1.4.4 |
| LBA Status:通知、掃描與修復流程 | NVM 1.3 §4.1.3.6; 4.1.4.5; 4.2.1; 5.2.1 |
| Sanitize 與 Media Verification 的 NVM 規則 | NVM 1.3 §4.1.7; 5.12 |
| 對齊、granularity 與效能提示 | NVM 1.3 §5.2.2 |
| Performance Characteristics 的屬性模型 | NVM 1.3 §4.1.3.8 |
| Rate Limiting 的設定欄位 | NVM 1.3 §4.1.3.9; 4.1.5.4; 5.10 |
| Hard/Soft 與 token-bucket 算例 | NVM 1.3 §5.10.1-5.10.2; Appendix A |
| Rate Limiting log 是能力圖 | NVM 1.3 §4.1.4.8; 5.10.3 |
| FDP:placement、RUH 與可觀測數據 | NVM 1.3 §3.2.1; 4.1.4.6-4.1.4.7; 4.1.6.3 |
| Streams 的 NVM 單位與優先順序 | NVM 1.3 §5.2.2.3; 5.13 |
| ANA 與 Reservations 的 NVM 行為 | NVM 1.3 §5.1; 5.11 |
| Key Per I/O 的 NVM 對齊約束 | NVM 1.3 §5.5; 4.1.5 |
| LBA Migration Queue 與變更追蹤 | NVM 1.3 §4.1.8; 5.7 |
| Memory-based 資源匯出範本 | NVM 1.3 §5.4.1-5.4.1.1 |
| 匯出狀態的長度與一致性 | NVM 1.3 §5.4.1.2 |
- Dword
- Dword(Double word);32 bits,也就是 4 bytes。對比 word=16 bits;例如 zero-based dword count=3 代表 4 個 Dwords,也就是 16 bytes。
- ELBAF
- Extended LBA Format;與相同 index 的 LBAF 配對,補充 PI 格式與 Storage Tag 大小。
- LBAF
- LBA Format;描述一種 logical block 格式,包括資料及 metadata 大小。
- AER
- Advanced Error Reporting,PCIe 用來分類、遮罩與記錄 link/transaction error 的 capability。
- ANA
- Asymmetric Namespace Access;描述同一 namespace 經不同 controllers 存取時的路徑狀態。
- I/O
- Input/Output,對 namespace 執行資料輸入與輸出的操作類別。
學完後想一想
1. NSZE=1000、NCAP=800、NUSE=600 時,3 個數值各回答什麼問題?
10.01.NSZE 描述可定址的範圍,LBA 從 0 到 999;NCAP 描述最多可配置 800 個 logical blocks;NUSE 描述目前已配置 600 個。這些都是 logical block 數,換成 bytes 還需要 data size。
來源
來源:NVME-NVM-CS-1.3, Rev. 1.3, §2.1.1; 4.1.5.1, 文件頁 13-14,85-93, PDF 頁 13-14,85-93
2. 把 Compare 和 Write 相鄰放入 SQ,就能保證兩者之間沒有其他修改嗎?
10.02.不能只靠相鄰位置。要使用支援的 fused operation,依規則設定第 1 與第 2 個命令,並滿足相同範圍等配對條件;一般命令的提交順序不提供這種保證。
來源
來源:NVME-NVM-CS-1.3, Rev. 1.3, §2.1.2-2.1.3, 文件頁 14-15, PDF 頁 14-15
3. 符合 atomic write 大小,是否就表示斷電後資料一定保存?
10.03.Atomicity 關注規定情境下是否可能讀到部分更新;persistence 關注資料是否已保存到非揮發性媒體。仍要分別考慮 normal/power-fail atomicity、對齊邊界、volatile write cache 與 FUA/Flush 規則。
來源
來源:NVME-NVM-CS-1.3, Rev. 1.3, §2.1.4; 4.1.3.4; 5.9, 文件頁 15-21,66-67,165, PDF 頁 15-21,66-67,165
來源:NVME-NVM-CS-1.3, Rev. 1.3, §3.3.4; 3.3.6, 文件頁 48-51,53-56, PDF 頁 48-51,53-56
4. 已知一段預期資料,想確認媒體內容與它相同,應使用 Compare 還是 Verify?
10.04.Compare 會使用 host 提供的比較資料。Verify 用來確認指定範圍的可讀性及適用的完整性檢查,不會把資料傳回 host,也不以一份 host 預期內容作逐項比較。
來源
來源:NVME-NVM-CS-1.3, Rev. 1.3, §3.3.1; 3.3.5, 文件頁 27-30,51-53, PDF 頁 27-30,51-53
5. Read 得到全零,可以推論這些 LBAs 仍然已配置嗎?
10.05.不能。已寫入的零資料與 deallocated block 的零值讀取行為都可能產生相同結果。要結合配置狀態、DRB,以及 DULBE 是否支援且啟用,才能解釋這次讀取。
來源
來源:NVME-NVM-CS-1.3, Rev. 1.3, §3.3.3.2.1; 4.1.3.3, 文件頁 47-48,66, PDF 頁 47-48,66
來源:NVME-NVM-CS-1.3, Rev. 1.3, §3.3.7-3.3.8, 文件頁 56-61, PDF 頁 56-61
6. 只知道 data size 是 4096 bytes,足以建立正確的 I/O buffer 嗎?
10.06.還不夠。需要確認使用中的 Format Index、metadata 大小、PI 格式與 metadata 傳輸方式;separate buffer 與 extended LBA 的記憶體排列不同。
來源
來源:NVME-NVM-CS-1.3, Rev. 1.3, §1.1-1.6; 4.1.3.9; 4.1.4.8; 4.1.5, 文件頁 9-12,73-75,79-83, PDF 頁 9-12,73-75,79-83
來源:NVME-NVM-CS-1.3, Rev. 1.3, §4.1.5.1; 4.1.5.3; 5.6, 文件頁 85-94,96-102,160-162, PDF 頁 85-94,96-102,160-162
來源:NVME-NVM-CS-1.3, Rev. 1.3, §2.1.6; 5.2.3; 5.3, 文件頁 22,129-131, PDF 頁 22,129-131
7. PRACT=1 是否代表關閉所有 PI 檢查?
10.07.PRACT 控制 PI 如何在傳輸中處理,並非總檢查開關。Guard、Application Tag、Reference Tag 的要求由 PRCHK 指定,Storage Tag 另由 STC 指定;實際傳輸內容還取決於 metadata 與 PI 大小。
來源
來源:NVME-NVM-CS-1.3, Rev. 1.3, §2.1.5; 5.3.2-5.3.3, 文件頁 21-22,141-152, PDF 頁 21-22,141-152
8. Soft Limit 為何可能觀察到高於設定值的 throughput?
10.08.Soft Limit 允許利用尚未被其他工作使用的頻寬或 IOPS;當資源不足時才依設定比例分配。Hard Limit 則提供上限。Appendix A 的 token buckets 是說明性實作,不能視為所有 controller 的內部結構。
來源
來源:NVME-NVM-CS-1.3, Rev. 1.3, §5.10.1-5.10.2; Appendix A, 文件頁 166-168,176-177, PDF 頁 166-168,176-177


Comments