NVME_IDENTIFY_NAMESPACE_DATA 結構 (nvme.h)
包含值,指出特定命名空間特有的功能和設定。
所有命名空間通用的功能和設定都包含在命名空間的 NVME_IDENTIFY_NAMESPACE_DATA 資料結構中,其命名空間的命名空間識別碼為 0xFFFFFFFF
。
nvme.h 頭檔會以 值0xFFFFFFFF
定義常數NVME_NAMESPACE_ALL。
如果控制器支援命名空間管理和命名空間標識碼 (NVME_COMMAND結構的 NSID) 欄位設定為 NVME_NAMESPACE_ALL,則控制器會傳回NVME_IDENTIFY_NAMESPACE_DATA數據結構,指定所有命名空間中通用的功能。
語法
typedef struct {
ULONGLONG NSZE;
ULONGLONG NCAP;
ULONGLONG NUSE;
struct {
UCHAR ThinProvisioning : 1;
UCHAR NameSpaceAtomicWriteUnit : 1;
UCHAR DeallocatedOrUnwrittenError : 1;
UCHAR SkipReuseUI : 1;
UCHAR NameSpaceIoOptimization : 1;
UCHAR Reserved : 3;
} NSFEAT;
UCHAR NLBAF;
struct {
UCHAR LbaFormatIndex : 4;
UCHAR MetadataInExtendedDataLBA : 1;
UCHAR Reserved : 3;
} FLBAS;
struct {
UCHAR MetadataInExtendedDataLBA : 1;
UCHAR MetadataInSeparateBuffer : 1;
UCHAR Reserved : 6;
} MC;
struct {
UCHAR ProtectionInfoType1 : 1;
UCHAR ProtectionInfoType2 : 1;
UCHAR ProtectionInfoType3 : 1;
UCHAR InfoAtBeginningOfMetadata : 1;
UCHAR InfoAtEndOfMetadata : 1;
UCHAR Reserved : 3;
} DPC;
struct {
UCHAR ProtectionInfoTypeEnabled : 3;
UCHAR InfoAtBeginningOfMetadata : 1;
UCHAR Reserved : 4;
} DPS;
struct {
UCHAR SharedNameSpace : 1;
UCHAR Reserved : 7;
} NMIC;
NVM_RESERVATION_CAPABILITIES RESCAP;
struct {
UCHAR PercentageRemained : 7;
UCHAR Supported : 1;
} FPI;
struct {
UCHAR ReadBehavior : 3;
UCHAR WriteZeroes : 1;
UCHAR GuardFieldWithCRC : 1;
UCHAR Reserved : 3;
} DLFEAT;
USHORT NAWUN;
USHORT NAWUPF;
USHORT NACWU;
USHORT NABSN;
USHORT NABO;
USHORT NABSPF;
USHORT NOIOB;
UCHAR NVMCAP[16];
USHORT NPWG;
USHORT NPWA;
USHORT NPDG;
USHORT NPDA;
USHORT NOWS;
USHORT MSSRL;
ULONG MCL;
UCHAR MSRC;
UCHAR Reserved2[11];
ULONG ANAGRPID;
UCHAR Reserved3[3];
struct {
UCHAR WriteProtected : 1;
UCHAR Reserved : 7;
} NSATTR;
USHORT NVMSETID;
USHORT ENDGID;
UCHAR NGUID[16];
UCHAR EUI64[8];
NVME_LBA_FORMAT LBAF[16];
UCHAR Reserved4[192];
UCHAR VS[3712];
} NVME_IDENTIFY_NAMESPACE_DATA, *PNVME_IDENTIFY_NAMESPACE_DATA;
成員
NSZE
指出邏輯區塊中命名空間的總大小。
大小 n 的命名空間包含邏輯區塊位址 (LBA) 0
到 (n - 1)
。 邏輯區塊數目是以格式化的 LBA 大小為基礎。 此欄位在格式化命名空間之前未定義。
NCAP
指出在任何時間點可能配置於命名空間中的邏輯區塊數目上限。
邏輯區塊數目是以格式化的 LBA 大小為基礎。 此欄位在格式化命名空間之前未定義。
NCAP 欄位用於精簡布建的情況,並報告小於或等於命名空間大小的值, (NSZE) 。
備用 LBA 不會回報為此欄位的一部分。 命名空間容量 (NCAP) 的值0h
表示命名空間標識碼是非作用中的命名空間標識碼。 使用 Write 或 Write Uncorrectable 命令寫入邏輯區塊時,會配置邏輯區塊。 邏輯區塊可以使用 數據集管理 命令解除分配。
NUSE
指出命名空間中配置的目前邏輯區塊數目。
此欄位的值小於或等於 Namespace Capacity NCAP 欄位的值。
邏輯區塊數目是以格式化的 LBA 大小為基礎。 使用 NVM 命令集時:使用 Write 或 Write Uncorrectable 命令寫入邏輯區塊時配置邏輯區塊。 邏輯區塊可以使用 數據集管理 命令解除分配。
如果產品不是以精簡布建環境為目標,控制器可能會回報等於 NCAP 值的 NUSE 值。
NSFEAT
命名空間功能 (NSFEAT) 結構,其中包含定義命名空間功能的欄位。
NSFEAT.ThinProvisioning
NSFEAT 結構的位 0 表示命名空間是否支援精簡布建。
當此值設定為 1
時,命名空間支援精簡布建。 具體而言,報告的命名空間容量 (NCAP) 可能小於 NSZE) 的命名空間大小 (。 當支援此功能且支持數據集管理命令時,解除分配 LBA 將會反映在 [命名空間使用率 (NUSE) ] 字段中。
當此值清除為 0
時,表示不支援精簡布建,且 NSZE 和 NCAP 欄位會報告相同的值。
NSFEAT.NameSpaceAtomicWriteUnit
NSFEAT 結構的位 1 指出是否已為此命名空間定義命名空間不可部分完成界限參數。
當此值設定 1
為 時,會針對這個命名空間定義 NAWUN、 NAWUPF 和 NACWU 字段,而且應該由主機針對這個命名空間使用,而不是 AWUN、 AWUPF 和 ACWU 字段中的 識別控制器 數據結構。
清除 0
此值時,控制器不支援此命名空間的 NAWUN、 NAWUPF 和 NACWU 字段。 在此情況下,主機應該使用識別控制器數據結構中定義的AWUN、AWUPF和ACWU字段。
NSFEAT.DeallocatedOrUnwrittenError
NSFEAT 結構的位 2 表示控制器是否支援此命名空間的已解除配置或未寫入邏輯區塊錯誤。
當此值設定為 1
時,控制器支援此命名空間的 解除配置或未寫入邏輯區塊 (NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK) 錯誤。 清除這個值 0
時,控制器不支援這個命名空間 的NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK 錯誤。
NSFEAT.SkipReuseUI
NSFEAT 結構的位 3 是略過重複使用 UI 功能的設定。
NSFEAT.NameSpaceIoOptimization
NSFEAT.Reserved
NSFEAT 結構的位 4:7 會保留。
NLBAF
定義命名空間所支援之 LBA 數據大小和元數據大小組合的數目。
LBA 格式會依序配置 (從 0) 開始並循序封裝。 這是以 0 為基礎的值。 可能表示為支援的 LBA 格式數目上限為 16。
支援的 LBA 格式會以 LBAF 欄位 (位元組 128 - 191 表示此資料結構) 。 元數據可以傳輸為 LBA 的一部分, (建立擴充 LBA,這是公開給應用程式) 較大的 LBA 大小,或者可能會以個別連續的數據緩衝區的形式傳輸。 元數據無法在 LBA 與個別的元數據緩衝區之間分割。
建議軟體和控制器轉換為 4KB 或更大的 LBA 大小,以提升控制器的 ECC 效率。 如果提供元數據,建議每個邏輯區塊至少提供8個字節,以便搭配端對端數據保護使用。
FLBAS
格式化 LBA 大小 (FLBAS) 結構,其中包含欄位,指出命名空間已格式化的 LBA 數據大小和元數據大小組合。
FLBAS.LbaFormatIndex
FLBAS 結構的位 0:3 指定此資料結構中指出的 16 種支援 LBA 格式之一。
FLBAS.MetadataInExtendedDataLBA
FLBAS 結構的位 4 表示元數據是否在數據 LBA 結尾傳輸,並建立擴充數據 LBA。
當此值設定為 1
時,元數據會在數據 LBA 結尾傳輸,並建立擴充的數據 LBA。 當此值清除為 0
時,表示命令的所有元數據都會以個別連續的數據緩衝區傳送。
沒有元數據時,不適用位 4。
FLBAS.Reserved
FLBAS 結構的位 5:7 是保留的。
MC
元數據功能 (MC) 結構,其中包含指出元數據功能的欄位。
MC.MetadataInExtendedDataLBA
MC 結構的位 0 表示命名空間是否支援在擴充數據 LBA 中傳輸元數據。
當此值設定為 1
時,命名空間支援在擴充數據 LBA 中傳輸元數據。 清除這個值 0
時,表示命名空間不支援在擴充數據 LBA 中傳輸元數據。
MC.MetadataInSeparateBuffer
MC 結構的位 1 表示命名空間是否支援在個別緩衝區中傳輸元數據。
當這個值設定為 1
時,命名空間支援在命令結構的 [元數據指標] (MPTR) 字段所指定的個別緩衝區中傳輸元數據。 清除這個值 0
時,命名空間不支援在個別緩衝區中傳輸元數據。
MC.Reserved
MC 結構的位 7:2 會保留。
DPC
端對端數據保護功能 (DPC) 結構,其中包含指出端對端數據保護功能功能的欄位。
這個欄位中可能會設定多個位。
DPC.ProtectionInfoType1
DPC 結構的位 0 表示命名空間是否支援保護資訊類型 1。
當此值設定為 1
時,命名空間支援保護資訊類型 1。 清除這個值 0
時,命名空間不支援保護資訊類型 1。
DPC.ProtectionInfoType2
DPC 結構的位 1 表示命名空間是否支援保護資訊類型 2。
當此值設定為 1
時,命名空間支援保護資訊類型 2。 清除這個值 0
時,命名空間不支援保護資訊類型 2。
DPC.ProtectionInfoType3
DPC 結構的位 2 表示命名空間是否支援保護資訊類型 3。
當此值設定為 1
時,命名空間支援保護資訊類型 3。 清除此值 0
時,命名空間不支援保護資訊類型 3。
DPC.InfoAtBeginningOfMetadata
DPC 結構的位 3 表示命名空間是否支援以元數據的前八個字節傳送的保護資訊。
當此值設定為 1
時,命名空間支援以元數據的前八個字節傳送的保護資訊。 清除這個值 0
時,命名空間不支援以元數據的前八個字節傳送的保護資訊。
DPC.InfoAtEndOfMetadata
DPC 結構的位 4 指出命名空間是否支援以元數據最後八個字節傳送的保護資訊。
當此值設定為 1
時,命名空間支援傳輸為元數據最後八個字節的保護資訊。 清除這個值 0
時,命名空間不支援作為元數據最後八個字節傳輸的保護資訊。
DPC.Reserved
保留 DPC 結構的 7:5 位。
DPS
端對端數據保護類型設定 (DPS) 結構,其中包含指出端對端數據保護功能的 [類型] 設定。
NVME_PROTECTION_INFORMATION_TYPES
DPS.ProtectionInfoTypeEnabled
DPS 結構的位 2:0 是NVME_PROTECTION_INFORMATION_TYPES值,指出是否啟用保護資訊,以及啟用保護信息的類型。
DPS.InfoAtBeginningOfMetadata
DPS 結構的位 3 表示是否啟用保護資訊,會傳送為元數據的前八個字節。
當此值設定為 1
時,如果啟用保護資訊,則會以元數據的前八個字節傳送。 當此值清除為 0
時,如果啟用保護資訊,則會以元數據的最後八個字節傳送。
DPS.Reserved
DPS 結構的位 7:4 會保留。
NMIC
命名空間多重路徑 I/O 和命名空間共用功能 (NMIC) 結構,其中包含指定命名空間多重路徑 I/O 和命名空間共用功能的欄位。
NMIC.SharedNameSpace
NMIC 結構的位 0 表示命名空間是否為共用命名空間。
當此值設定為 1
時,命名空間可由 NVM 子系統中的兩個或多個控制器存取。 當清除這個值 0
時,命名空間是私用命名空間,而且只能由傳回此命名空間數據結構的控制器存取。
NMIC.Reserved
NMIC 結構的位 7:1 會保留。
RESCAP
保留功能 (RESCAP) 結構,其中包含指定命名空間保留功能的欄位。
此欄位中的 00h
值表示此命名空間不支援保留。
FPI
格式進度指標 (FPI) 結構,其中包含欄位,表示在進行格式作業時仍要格式化的命名空間百分比。
FPI.PercentageRemained
FPI 結構的位 0:6 表示仍要格式化之命名空間的百分比。 例如,的 值 25
表示已格式化 75% 的命名空間,而 25% 會維持格式化。
的值 0
表示命名空間是以此數據結構中 FLBAS 和 DPS 欄位所指定的格式格式化。
FPI.Supported
FPI 結構的位 7 指出命名空間是否支援 FPI 所定義的格式進度指標。PercentageRemained 字段。
當此值設定為 1
時,命名空間支援 FPI 所定義的格式進度指標 。PercentageRemained 字段。 當此值清除為 0
時,命名空間不支援格式進度指標和 FPI。PercentageRemained 字段將會清除為 0h
。
DLFEAT
DLFEAT.ReadBehavior
DLFEAT.WriteZeroes
DLFEAT.GuardFieldWithCRC
DLFEAT.Reserved
NAWUN
指出保證在正常作業期間以不可部分完成方式寫入 NVM 之寫入作業的命名空間特定大小。
的值0h
表示這個命名空間的大小與識別控制器數據結構的AWUN欄位中所報告的大小相同。 所有其他值都會使用 與 AWUN 字段相同的編碼方式,以邏輯區塊來指定大小。
NAWUPF
指出在電源失敗或錯誤狀況期間,保證以不可部分完成方式寫入NVM的寫入作業特定大小。
的值0h
表示此命名空間的大小與識別控制器數據結構的AWUPF欄位中所報告的大小相同。 所有其他值都會使用與 AWUPF 欄位相同的編碼方式,以邏輯區塊來指定大小。
NACWU
指出保證以不可部分完成方式寫入至 NVM 的寫入作業大小,以進行 Compare 和 Write fused 命令。
的值0h
表示此命名空間的大小與識別控制器數據結構的 ACWU 字段中所報告的大小相同。 所有其他值都會使用 與 ACWU 字段相同的編碼方式,以邏輯區塊來指定大小。
NABSN
指出 NAWUN 值的這個命名空間不可部分完成的界限大小。
此欄位是在邏輯區塊中指定。 寫入此跨不可部分完成界限的命名空間,不保證對 NVM 而言,對於其他讀取或寫入命令而言,都是不可部分完成的。
的值 0h
表示一般寫入作業沒有不可部分完成的界限。 所有其他值都會使用 與 AWUN 字段相同的編碼方式,以邏輯區塊來指定大小。
NABO
指出此命名空間上第一個不可部分完成界限開始的邏輯區塊位址 (LBA) 。
如果 NABSN 和 NABSPF 字段已清除為 0h
, 則 NABO 欄位會清除為 0h。
NABO 的值應該小於或等於 NABSN 和 NABSPF。
NABSPF
指出命名空間不可部分完成寫入單位 Power Fail 值專屬之命名空間的不可部分完成界限大小。
此欄位是在邏輯區塊中指定。 寫入這個跨不可部分完成界限的命名空間不保證與其他讀取或寫入命令有關,而且無法保證後續讀取相關聯邏輯區塊時傳回的數據。
的值 0h
表示電源失敗或錯誤狀況沒有不可部分完成的界限。 所有其他值都會使用與 AWUPF 欄位相同的編碼方式,以邏輯區塊來指定大小。
NOIOB
指出命名空間最佳IO界限 (NOIOB) 。
NVMCAP[16]
指出配置給這個命名空間的NVM大小總計。
此欄位的值是以位元組為單位。 如果支援命名空間管理和命名空間附件命令,則支援此欄位。
注意:此欄位可能不會對應至邏輯區塊大小乘以 [命名空間大小] (NSZE) 字段。 由於精簡布建或其他設定 (,例如終止) ,此字段可能會大於或小於 NSZE 報告。
NPWG
NPWA
NPDG
NPDA
NOWS
MSSRL
MCL
MSRC
Reserved2[11]
保留欄位。
ANAGRPID
Reserved3[3]
保留位元組 192:383A。
NSATTR
NSATTR.WriteProtected
NSATTR.Reserved
NVMSETID
指出相關聯的 NVM 集合標識碼 (NVMSETID) 。
ENDGID
指出 ENDGID) (相關聯的終止群組標識碼。
NGUID[16]
包含全域唯一且在建立命名空間時指派給命名空間的128位值。
命名空間全域唯一標識碼 (NGUID) 欄位會在命名空間的生命週期中維持固定狀態,而且會在命名空間和控制器作業之間保留 (,例如控制器重設和命名空間格式) 。
此欄位使用以 EUI-64 為基礎的 16 位元組指示項格式。
- 位元組 114:112 包含 IEEE 註冊授權單位指派的 24 位company_id值。
- 位元組 119:115 包含對應組織指派的延伸模組標識碼。
- 位元組 111:104 包含由對應組織指派的廠商特定擴充標識碼。
如需詳細資訊,請參閱 IEEE EUI-64 指導方針。 控制器應該在此欄位中指定全域唯一的命名空間標識碼,或在建立命名空間時指定 EUI64 字段。
EUI64[8]
包含 64 位的 IEEE 擴充唯一標識碼 (EUI-64) ,在建立命名空間時會全域唯一併指派給命名空間。
EUI64 字段在命名空間的存留期間會維持固定狀態,而且會在命名空間和控制器作業之間保留 (,例如控制器重設和命名空間格式) 。
EUI-64 是由 IEEE 註冊授權單位指派的 24 位或 36 位company_id值的串連,以及由對應組織指派的延伸模組標識碼。 如需詳細資訊,請參閱 IEEE EUI-64 指導方針。
控制器應該在此欄位中指定全域唯一的命名空間標識碼,或在建立命名空間時指定 NGUID 字段。 如果控制器無法設定全域唯一的 64 位識別元,則會將此字位清除為 0h
。
LBAF[16]
包含16 個NVME_LBA_FORMAT 結構的陣列。 數位中的每個結構都會指定LBA格式,並指出控制器支援它。
數位中結構以零起始的位置會對應至 LBA 格式的名稱,因此 LBA 格式 0 (LBAF0) 位於位置 0、LBA Format 1 (LBAF1) 位於位置 1,依此類歸,最高為 LBA 格式 15 (LBAF15) 位置 15。
Reserved4[192]
VS[3712]
此位元組範圍 (384:4095) 會配置給廠商特定 (VS) 使用量。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 |
標頭 | nvme.h |