共用方式為


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時,表示不支援精簡布建,且 NSZENCAP 欄位會報告相同的值。

NSFEAT.NameSpaceAtomicWriteUnit

NSFEAT 結構的位 1 指出是否已為此命名空間定義命名空間不可部分完成界限參數。

當此值設定 1為 時,會針對這個命名空間定義 NAWUNNAWUPFNACWU 字段,而且應該由主機針對這個命名空間使用,而不是 AWUNAWUPFACWU 字段中的 識別控制器 數據結構。

清除 0此值時,控制器不支援此命名空間的 NAWUNNAWUPFNACWU 字段。 在此情況下,主機應該使用識別控制器數據結構中定義的AWUNAWUPFACWU字段。

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 表示命名空間是以此數據結構中 FLBASDPS 欄位所指定的格式格式化。

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) 。

如果 NABSNNABSPF 字段已清除為 0h則 NABO 欄位會清除為 0h。 NABO 的值應該小於或等於 NABSNNABSPF

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