包含指示特定于特定命名空间的功能和设置的值。
所有命名空间通用的功能和设置包含在命名空间的 命名空间的NVME_IDENTIFY_NAMESPACE_DATA 数据结构中,该命名空间的命名空间标识符为 0xFFFFFFFF。
nvme.h 头文件使用值0xFFFFFFFF定义常量NVME_NAMESPACE_ALL 。
如果控制器支持命名空间管理和NVME_COMMAND结构的命名空间标识符(NSID)字段设置为NVME_NAMESPACE_ALL,则控制器将返回一个NVME_IDENTIFY_NAMESPACE_DATA数据结构,该结构指定所有命名空间中通用的功能。
Syntax
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;
Members
NSZE
指示逻辑块中命名空间的总大小。
大小 n 的命名空间由逻辑块地址 (LBA) 0 组成 (n - 1)。 逻辑块数基于格式化的 LBA 大小。 在格式化命名空间之前,此字段未定义。
NCAP
指示在任何时间点可以在命名空间中分配的最大逻辑块数。
逻辑块数基于格式化的 LBA 大小。 在格式化命名空间之前,此字段未定义。
在精简预配的情况下使用 NCAP 字段,并报告小于或等于命名空间大小(NSZE)的值。
未报告备用 LBA 作为此字段的一部分。 命名空间容量(NCAP)的值0h指示命名空间 ID 是非活动命名空间 ID。 使用 Write 或 Write Uncorrectable 命令写入逻辑块时分配逻辑块。 可以使用 数据集管理 命令解除分配逻辑块。
NUSE
指示命名空间中分配的当前逻辑块数。
此字段的值小于或等于命名空间容量 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 指示命名空间是否支持作为前 8 个字节元数据传输的保护信息。
如果此值设置为 1,则命名空间支持作为元数据的前 8 个字节传输的保护信息。 清除此值 0后,命名空间不支持作为前 8 个字节元数据传输的保护信息。
DPC.InfoAtEndOfMetadata
DPC 结构的位 4 指示命名空间是否支持作为元数据的最后 8 个字节传输的保护信息。
如果此值设置为 1,则命名空间支持作为元数据的最后 8 个字节传输的保护信息。 清除此值 0后,命名空间不支持作为元数据的最后 8 个字节传输的保护信息。
DPC.Reserved
保留 DPC 结构的 7:5 位。
DPS
端到端数据保护类型设置 (DPS) 结构,其中包含指示端到端数据保护功能的类型设置的字段。
NVME_PROTECTION_INFORMATION_TYPES
DPS.ProtectionInfoTypeEnabled
DPS 结构的位 2:0 是一个NVME_PROTECTION_INFORMATION_TYPES值,该值指示是否启用保护信息以及启用保护信息的类型。
DPS.InfoAtBeginningOfMetadata
DPS 结构的位 3 指示是否将保护信息(如果已启用)作为前 8 个字节的元数据传输。
如果此值设置为 1,则保护信息(如果已启用)将作为元数据的前 8 个字节传输。 清除 0此值后,将传输保护信息(如果已启用),作为元数据的最后 8 个字节传输。
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。将 清除 0hPercentageRemained 字段。
DLFEAT
DLFEAT.ReadBehavior
DLFEAT.WriteZeroes
DLFEAT.GuardFieldWithCRC
DLFEAT.Reserved
NAWUN
指示在正常作期间保证以原子方式写入 NVM 的写入作的命名空间特定大小。
0h指示此命名空间的大小与标识控制器数据结构的 AWUN 字段中报告的大小相同。 所有其他值都使用 与 AWUN 字段相同的编码指定逻辑块的大小。
NAWUPF
指示保证在电源故障或错误条件期间以原子方式写入 NVM 的写入作的命名空间特定大小。
0h指示此命名空间的大小与标识控制器数据结构的 AWUPF 字段中报告的大小相同。 所有其他值使用 与 AWUPF 字段相同的编码指定逻辑块的大小。
NACWU
指示保证以原子方式写入 NVM 以原子方式写入比较和写入融合命令的写入作的命名空间特定大小。
一个值0h,指示此命名空间的大小与标识控制器数据结构的 ACWU 字段中报告的大小相同。 所有其他值使用 与 ACWU 字段相同的编码指定逻辑块的大小。
NABSN
指示 NAWUN 值的此命名空间的原子边界大小。
此字段在逻辑块中指定。 对于其他读取或写入命令,无法保证跨原子边界的此命名空间是 NVM 的原子写入。
一个值 0h ,指示普通写入作没有原子边界。 所有其他值都使用 与 AWUN 字段相同的编码指定逻辑块的大小。
NABO
指示在此命名空间上启动第一个原子边界的逻辑块地址(LBA)。
如果已清除 0hNABSN 和 NABSPF 字段,则 NABO 字段将清除为 0 小时。
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 格式 1 (LBAF1) 位于位置 1,依此类而行,最大为 LBA 格式 15 (LBAF15) 的位置 15。
Reserved4[192]
VS[3712]
此字节范围(384:4095)是为供应商特定(VS)使用情况分配的。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows 10操作系统 |
| Header | nvme.h |