NVM Command Set 1.3:邏輯區塊、I/O 命令與資料保護

15 minute read

English

00.01.NVM Command Set 說明主機如何以 logical block 為單位讀寫與管理儲存空間。理解它的關鍵,是把資料格式、命令行為、資料完整性與資源管理連起來:同一筆命令,會因 namespace 格式、支援能力與設定不同而有不同的適用條件。

logical block
邏輯區塊;namespace 可定址的基本單位,其資料大小由使用中的格式決定。
namespace
namespace,主機透過 controller 存取的一份已格式化非揮發性容量。
NVM
Non-Volatile Memory,斷電後仍能保存資料的記憶體。

這篇的主軸

01

儲存空間與格式

01-01先理解 namespace 的容量、LBA 格式,以及資料與 metadata 的關係。

metadata
隨 logical block 儲存的附加資料,可包含資料保護資訊,也可有其他用途。
LBA
Logical Block Address;以所選格式的 block 為單位。
02

命令做了什麼

02-01比較 Read、Write、Compare、Verify、Copy 與空間管理命令的作用及完成條件。

03

資料完整性與順序

03-01理解原子性、命令相依、Protection Information,以及資料檢查的範圍。

Protection Information
資料保護資訊,縮寫 PI;包含 Guard 與 tags,用來檢查資料及其關聯資訊。
04

能力與資源管理

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 狀態回答不同問題。

可定址、可配置、已配置是 3 個不同的量教學例:NSZE=1000、NCAP=800、NUSE=600。LBA 編號的範圍與目前配置量要分開理解。NSZE = 1000LBA 0 … 999NCAP = 800NUSE = 600
教學例:NSZE=1000、NCAP=800、NUSE=600。LBA 編號的範圍與目前配置量要分開理解。
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

Namespace 容量與配置狀態
容量或操作描述的範圍或變化判斷時須注意什麼
NSZE有效 LBA 為 0 到 NSZE−1LBA 越界與容量不足不同
THINP支援時須追蹤 NUSE不支援時可固定回 NCAP
AllocationWrite、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 檢查資料及其關聯資訊的保護欄位。
資料與 Metadata 放在哪裡同一批 logical blocks 的資料與 metadata 必須對應;可以交錯傳輸,也可以分開傳輸。Data 0MD 0Data 1MD 1DPTR: Data 0, Data 1MPTR: MD 0, MD 1
同一批 logical blocks 的資料與 metadata 必須對應;可以交錯傳輸,也可以分開傳輸。
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

Metadata 傳輸與 PI 的位置
傳輸配置或位置主機如何準備緩衝區格式對它的限制
Extended LBADPTR 指向 data+metadata 交錯序列MSET/MTELBA 反映此選擇
Separate bufferDPTR 給 data,MPTR 給 metadataPRP 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

Read/Write 的資料與完成條件
命令欄位描述的資料或操作哪些選擇會改變解讀
CDW10 / CDW11SLBA 低/高 32 bitsNLB=0 仍有一個 block
CDW12LR、FUA、PRINFO、STC、CETYPE、NLBRead 的 DTYPE 區是 reserved
CDW13CETYPE 決定 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.DNDN=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 與 Verify 解決不同問題
命令或大小欄位實際檢查什麼結果的解釋範圍
Comparemiscompare 回 Compare Failurehost 與 media 兩側 PI 可分別檢查
Verify沒有資料 buffer 傳輸驗證量仍計入 Data Units Read
VSL / NVMVFYSvariant 決定建議大小或硬上限非零 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

Copy:描述來源、連續目的與部分失敗
描述子或行為資料如何安排限制及完成結果
NR / NLBsource count 與各範圍 block count 都是 0-based檢查 MSRC、MSSRL、MCL
FCO2h/3h 可要求 fast copy onlyFast Copy Not Possible 再看 DNR
Overlap2h/3h 禁止同 namespace source 與 destination 重疊0h/1h 重疊結果需依原子條件另讀
NVMCSA1.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

PRACT 與 PRCHK/STC 的組合
操作或保護條件控制器如何處理 PI對檢查或傳輸量的影響
Write, PRACT=1MS=PI 時插入;MS>PI 時取代 PI此生成分支忽略 PRCHK/STC
Read, PRACT=1先做要求的檢查;MS=PI 才移除MS>PI 仍回 metadata 與 PI
Type 1 / Type 2Reference 每個 block 遞增Type1 初值須等於對應 SLBA 低 bits
Type 3不宜比對 computed reference若因 RTCHK 拒絕,使用 Invalid Protection Information
Disable sentinelsType 1/2:Application Tag=FFFFh 時停用所有 PI checks;Type 3 另要求 Reference Tag(若有)也全一不受 PRCHK/STC 設定影響
Masksmask 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 與 token-bucket 算例
模式或命令如何分享或消耗額度理解這個結果的限制
Hard有需求且資源不足時按比例分享設定上限不是最低效能保證
Soft可使用閒置額度多個 soft targets 依 limits 比例分享
Write tokenstotal bytes × WRBWR;write bytes;total IOPS × WRIOPSR;write IOPS 1四個 buckets 各自檢查
Read tokenstotal 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 與延伸 LBANVM 1.3 §4.1.2; 4.1.3.7
建立 namespace:格式、mask 與 granularityNVM 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-WriteNVM 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 limitsNVM 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 PINVM 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

採用的規格版本

NVM Express NVM Command Set Specification, Revision 1.3

NVM Express Base Specification, Revision 2.4

Jia-Chang

Jia-Chang

Human

Comments

  Write a comment ...