包含指示控制器功能、功能、命令集属性和电源状态描述符的值。
Syntax
typedef struct {
USHORT VID;
USHORT SSVID;
UCHAR SN[20];
UCHAR MN[40];
UCHAR FR[8];
UCHAR RAB;
UCHAR IEEE[3];
struct {
UCHAR MultiPCIePorts : 1;
UCHAR MultiControllers : 1;
UCHAR SRIOV : 1;
UCHAR ANAR : 1;
UCHAR Reserved : 4;
} CMIC;
UCHAR MDTS;
USHORT CNTLID;
ULONG VER;
ULONG RTD3R;
ULONG RTD3E;
struct {
ULONG Reserved0 : 8;
ULONG NamespaceAttributeChanged : 1;
ULONG FirmwareActivation : 1;
ULONG Reserved1 : 1;
ULONG AsymmetricAccessChanged : 1;
ULONG PredictableLatencyAggregateLogChanged : 1;
ULONG LbaStatusChanged : 1;
ULONG EnduranceGroupAggregateLogChanged : 1;
ULONG Reserved2 : 12;
ULONG ZoneInformation : 1;
ULONG Reserved3 : 4;
} OAES;
struct {
ULONG HostIdentifier128Bit : 1;
ULONG NOPSPMode : 1;
ULONG NVMSets : 1;
ULONG ReadRecoveryLevels : 1;
ULONG EnduranceGroups : 1;
ULONG PredictableLatencyMode : 1;
ULONG TBKAS : 1;
ULONG NamespaceGranularity : 1;
ULONG SQAssociations : 1;
ULONG UUIDList : 1;
ULONG Reserved0 : 22;
} CTRATT;
struct {
USHORT ReadRecoveryLevel0 : 1;
USHORT ReadRecoveryLevel1 : 1;
USHORT ReadRecoveryLevel2 : 1;
USHORT ReadRecoveryLevel3 : 1;
USHORT ReadRecoveryLevel4 : 1;
USHORT ReadRecoveryLevel5 : 1;
USHORT ReadRecoveryLevel6 : 1;
USHORT ReadRecoveryLevel7 : 1;
USHORT ReadRecoveryLevel8 : 1;
USHORT ReadRecoveryLevel9 : 1;
USHORT ReadRecoveryLevel10 : 1;
USHORT ReadRecoveryLevel11 : 1;
USHORT ReadRecoveryLevel12 : 1;
USHORT ReadRecoveryLevel13 : 1;
USHORT ReadRecoveryLevel14 : 1;
USHORT ReadRecoveryLevel15 : 1;
} RRLS;
UCHAR Reserved0[9];
UCHAR CNTRLTYPE;
UCHAR FGUID[16];
USHORT CRDT1;
USHORT CRDT2;
USHORT CRDT3;
UCHAR Reserved0_1[106];
UCHAR ReservedForManagement[16];
struct {
USHORT SecurityCommands : 1;
USHORT FormatNVM : 1;
USHORT FirmwareCommands : 1;
USHORT NamespaceCommands : 1;
USHORT DeviceSelfTest : 1;
USHORT Directives : 1;
USHORT NVMeMICommands : 1;
USHORT VirtualizationMgmt : 1;
USHORT DoorBellBufferConfig : 1;
USHORT GetLBAStatus : 1;
USHORT Reserved : 6;
} OACS;
UCHAR ACL;
UCHAR AERL;
struct {
UCHAR Slot1ReadOnly : 1;
UCHAR SlotCount : 3;
UCHAR ActivationWithoutReset : 1;
UCHAR Reserved : 3;
} FRMW;
struct {
UCHAR SmartPagePerNamespace : 1;
UCHAR CommandEffectsLog : 1;
UCHAR LogPageExtendedData : 1;
UCHAR TelemetrySupport : 1;
UCHAR PersistentEventLog : 1;
UCHAR Reserved0 : 1;
UCHAR TelemetryDataArea4 : 1;
UCHAR Reserved1 : 1;
} LPA;
UCHAR ELPE;
UCHAR NPSS;
struct {
UCHAR CommandFormatInSpec : 1;
UCHAR Reserved : 7;
} AVSCC;
struct {
UCHAR Supported : 1;
UCHAR Reserved : 7;
} APSTA;
USHORT WCTEMP;
USHORT CCTEMP;
USHORT MTFA;
ULONG HMPRE;
ULONG HMMIN;
UCHAR TNVMCAP[16];
UCHAR UNVMCAP[16];
struct {
ULONG RPMBUnitCount : 3;
ULONG AuthenticationMethod : 3;
ULONG Reserved0 : 10;
ULONG TotalSize : 8;
ULONG AccessSize : 8;
} RPMBS;
USHORT EDSTT;
UCHAR DSTO;
UCHAR FWUG;
USHORT KAS;
struct {
USHORT Supported : 1;
USHORT Reserved : 15;
} HCTMA;
USHORT MNTMT;
USHORT MXTMT;
struct {
ULONG CryptoErase : 1;
ULONG BlockErase : 1;
ULONG Overwrite : 1;
ULONG Reserved : 26;
ULONG NDI : 1;
ULONG NODMMAS : 2;
} SANICAP;
ULONG HMMINDS;
USHORT HMMAXD;
USHORT NSETIDMAX;
USHORT ENDGIDMAX;
UCHAR ANATT;
struct {
UCHAR OptimizedState : 1;
UCHAR NonOptimizedState : 1;
UCHAR InaccessibleState : 1;
UCHAR PersistentLossState : 1;
UCHAR ChangeState : 1;
UCHAR Reserved : 1;
UCHAR StaticANAGRPID : 1;
UCHAR SupportNonZeroANAGRPID : 1;
} ANACAP;
ULONG ANAGRPMAX;
ULONG NANAGRPID;
ULONG PELS;
UCHAR Reserved1[156];
struct {
UCHAR RequiredEntrySize : 4;
UCHAR MaxEntrySize : 4;
} SQES;
struct {
UCHAR RequiredEntrySize : 4;
UCHAR MaxEntrySize : 4;
} CQES;
USHORT MAXCMD;
ULONG NN;
struct {
USHORT Compare : 1;
USHORT WriteUncorrectable : 1;
USHORT DatasetManagement : 1;
USHORT WriteZeroes : 1;
USHORT FeatureField : 1;
USHORT Reservations : 1;
USHORT Timestamp : 1;
USHORT Verify : 1;
USHORT Reserved : 8;
} ONCS;
struct {
USHORT CompareAndWrite : 1;
USHORT Reserved : 15;
} FUSES;
struct {
UCHAR FormatApplyToAll : 1;
UCHAR SecureEraseApplyToAll : 1;
UCHAR CryptographicEraseSupported : 1;
UCHAR FormatSupportNSIDAllF : 1;
UCHAR Reserved : 4;
} FNA;
struct {
UCHAR Present : 1;
UCHAR FlushBehavior : 2;
UCHAR Reserved : 5;
} VWC;
USHORT AWUN;
USHORT AWUPF;
struct {
UCHAR CommandFormatInSpec : 1;
UCHAR Reserved : 7;
} NVSCC;
struct {
UCHAR WriteProtect : 1;
UCHAR UntilPowerCycle : 1;
UCHAR Permanent : 1;
UCHAR Reserved : 5;
} NWPC;
USHORT ACWU;
UCHAR Reserved4[2];
struct {
ULONG SGLSupported : 2;
ULONG KeyedSGLData : 1;
ULONG Reserved0 : 13;
ULONG BitBucketDescrSupported : 1;
ULONG ByteAlignedContiguousPhysicalBuffer : 1;
ULONG SGLLengthLargerThanDataLength : 1;
ULONG MPTRSGLDescriptor : 1;
ULONG AddressFieldSGLDataBlock : 1;
ULONG TransportSGLData : 1;
ULONG Reserved1 : 10;
} SGLS;
ULONG MNAN;
UCHAR Reserved6[224];
UCHAR SUBNQN[256];
UCHAR Reserved7[768];
UCHAR Reserved8[256];
NVME_POWER_STATE_DESC PDS[32];
UCHAR VS[1024];
} NVME_IDENTIFY_CONTROLLER_DATA, *PNVME_IDENTIFY_CONTROLLER_DATA;
Members
VID
包含由 外围组件互连 - 特殊兴趣组(PCI-SIG)分配的公司供应商标识符。
SSVID
包含子系统的 PCI-SIG 分配的公司供应商标识符。
SN[20]
包含供应商分配为 ASCII 字符串的 NVM 子系统的序列号。
MN[40]
包含供应商分配为 ASCII 字符串的 NVM 子系统的型号。
FR[8]
包含 NVM 子系统的当前活动固件修订。
这是可以使用“获取日志页”命令检索 的NVME_FIRMWARE_SLOT_INFO_LOG 中的相同固件修订信息。
RAB
包含建议的仲裁突发大小。
IEEE[3]
包含控制器供应商的组织唯一标识符(OUI)。
OUI 是可在以下位置 http://standards.ieee.org/develop/regauth/oui/public.html注册的有效 IEEE/RAC 标识符。
CMIC
控制器多路径 I/O 和命名空间共享功能(CMIC)结构,用于指定控制器和 NVM 子系统的多路径 I/O 和命名空间共享功能。
CMIC.MultiPCIePorts
CMIC 结构的位 0。
如果此值设置为 1,NVM 子系统可能包含两个或多个物理 PCI Express 端口。 清除 0该值后,NVM 子系统包含单个 PCI Express 端口。
CMIC.MultiControllers
CMIC 结构的位 1。
如果此值设置为 1,NVM 子系统可能包含两个或多个控制器。 清除 0该值后,NVM 子系统包含单个控制器。
CMIC.SRIOV
CMIC 结构的位 2。
如果此值设置为 1,则控制器与单根 I/O 虚拟化(SR-IOV)虚拟函数相关联。 清除 0该值后,控制器与 PCI 函数相关联。
CMIC.ANAR
CMIC.Reserved
保留 CMIC 结构的 3:7 位。
MDTS
指示主机和控制器之间的最大数据传输大小。
主机不应提交超过此传输大小的命令。 如果提交超过传输大小的命令,该命令将中止,状态 为NVME_STATUS_INVALID_FIELD_IN_COMMAND。
此字段的值以控制器功能结构的 MPSMIN 字段中指定的最小内存页大小单位为单位,并报告为 2 (2^n) 的幂。 指示传输大小没有限制的值 0h 。 如果元数据与逻辑块数据交错,则限制包括元数据。
如果支持 SGL 位存储桶描述符,则其长度包含在确定命令是否超过目标数据缓冲区的最大数据传输大小时。 源数据缓冲区中的长度不包括在最大数据传输大小计算中。
CNTLID
包含与控制器关联的 NVM 子系统唯一控制器标识符。
VER
包含版本寄存器中报告的值,该值在NVME_CONTROLLER_REGISTERS结构的 VS 字段中定义。
符合 NVMe 规范版本 1.2 或更高版本的实现将在此字段中报告非零值。
RTD3R
指示从运行时 D3(RTD3)恢复时的典型延迟(以微秒为单位)。
符合 NVMe 规范版本 1.2 或更高版本的实现将在此字段中报告非零值。
RTD3E
指示输入运行时 D3(RTD3)的典型延迟(以微秒为单位)。
符合 NVMe 规范版本 1.2 或更高版本的实现将在此字段中报告非零值。
OAES
一个可选的异步事件支持 (OAES) 结构,其中包含指示控制器是否支持可选异步事件的字段。
控制器不应在主机软件启用可选异步事件之前发送这些事件。
OAES.Reserved0
保留 OAES 结构的位 10:31。
OAES.NamespaceAttributeChanged
OAES 结构的位 8。
如果此值设置为 1,控制器支持发送命名空间属性已更改事件。 清除 0此值后,控制器不支持命名空间属性更改事件。
OAES.FirmwareActivation
OAES 结构的位 9。
如果此值设置为 1,控制器支持发送固件激活事件。 清除此值 0后,控制器不支持固件激活事件。
OAES.Reserved1
保留 OAES 结构的位 0:7。
OAES.AsymmetricAccessChanged
OAES.PredictableLatencyAggregateLogChanged
OAES.LbaStatusChanged
OAES.EnduranceGroupAggregateLogChanged
OAES.Reserved2
OAES.ZoneInformation
OAES.Reserved3
CTRATT
包含控制器属性信息的控制器属性(CTRATT)结构。
CTRATT.HostIdentifier128Bit
包含 128 位主机标识符的 CTRATT 结构的位 32。
CTRATT.NOPSPMode
CTRATT 结构的位 31,包含有关非作电源状态(NOPS)的信息。
CTRATT.NVMSets
CTRATT 结构的位 30,包含有关 NVM 命令集的信息。
CTRATT.ReadRecoveryLevels
CTRATT 结构的位 29,包含有关读取恢复级别的信息。
CTRATT.EnduranceGroups
CTRATT 结构的位 28 位,其中包含有关耐力组级别的信息。
CTRATT.PredictableLatencyMode
CTRATT.TBKAS
CTRATT.NamespaceGranularity
CTRATT.SQAssociations
CTRATT.UUIDList
CTRATT.Reserved0
保留 CTRATT 结构的位 0:27。
RRLS
RRLS.ReadRecoveryLevel0
RRLS.ReadRecoveryLevel1
RRLS.ReadRecoveryLevel2
RRLS.ReadRecoveryLevel3
RRLS.ReadRecoveryLevel4
RRLS.ReadRecoveryLevel5
RRLS.ReadRecoveryLevel6
RRLS.ReadRecoveryLevel7
RRLS.ReadRecoveryLevel8
RRLS.ReadRecoveryLevel9
RRLS.ReadRecoveryLevel10
RRLS.ReadRecoveryLevel11
RRLS.ReadRecoveryLevel12
RRLS.ReadRecoveryLevel13
RRLS.ReadRecoveryLevel14
RRLS.ReadRecoveryLevel15
Reserved0[9]
保留的字段为 140 字节。
CNTRLTYPE
FGUID[16]
CRDT1
CRDT2
CRDT3
Reserved0_1[106]
ReservedForManagement[16]
为 NVMe 管理保留。
OACS
可选管理命令支持 (OACS) 结构,其中包含指示控制器支持的可选 管理员命令的 字段。
OACS.SecurityCommands
OACS 结构的位 0 指示控制器是否支持安全发送和安全接收命令。
如果此值设置为 1,控制器支持安全发送和安全接收命令。 清除此值 0后,控制器不支持“安全发送和安全接收”命令。
OACS.FormatNVM
OACS 结构的位 1 指示控制器是否支持 Format NVM 命令。
如果此值设置为 1,控制器支持 Format NVM 命令。 清除此值 0后,控制器不支持 Format NVM 命令。
OACS.FirmwareCommands
OACS 结构的位 2 指示控制器是否支持固件提交和固件映像下载命令。
如果此值设置为 1,控制器支持固件提交和固件映像下载命令。 清除 0此值后,控制器不支持固件提交和固件映像下载命令。
OACS.NamespaceCommands
OACS 结构的位 3 指示控制器是否支持命名空间管理和命名空间附件命令。
如果此值设置为 1,控制器支持命名空间管理和命名空间附件命令。 清除此值 0后,控制器不支持命名空间管理和命名空间附件命令。
OACS.DeviceSelfTest
OACS 结构的位 4 指示控制器是否支持设备自测试命令。
OACS.Directives
OACS 结构的位 5 指示控制器是否支持指令发送和指令接收命令。
OACS.NVMeMICommands
OACS.VirtualizationMgmt
OACS.DoorBellBufferConfig
OACS.GetLBAStatus
OACS.Reserved
位 6:15:保留。
ACL
指示控制器支持的并发未完成 中止 命令的最大数目。
这是一个基于 0 的值。 实现应同时支持至少四个未完成的中止命令。
AERL
指示控制器支持的最大并发未完成 异步事件请求 命令数。
这是一个基于 0 的值。 实现应同时支持至少四个未完成的异步事件请求命令。
FRMW
固件更新 (FRMW) 结构,其中包含指示有关固件更新的功能的字段。
FRMW.Slot1ReadOnly
FRMW 结构的位 0 指示第一个固件槽(槽 1)是否为只读。
如果此值设置为 1,则第一个固件槽(槽 1)是只读的。 清除此值 0后,第一个固件槽(槽 1)是读/写。 实现可以选择具有基线只读固件映像。
FRMW.SlotCount
FRMW 结构的位 1:3 表示控制器支持的固件槽数。
此字段指定一个介于 1 到 7 之间的值,指示至少支持一个固件槽,最多支持 7 个。 这对应于固件槽 1 到 7。
FRMW.ActivationWithoutReset
FRMW 结构的位 4 指示控制器是否支持在不重置的情况下进行固件激活。
如果此值设置为 1,控制器将支持固件激活,而无需重置。 清除 0此值后,控制器需要重置固件才能激活。
FRMW.Reserved
保留 FRMW 结构的位 5:7。
LPA
日志页属性 (LPA) 结构,其中包含用于指示使用 “获取日志页” 命令访问的日志页的可选属性的字段。
LPA.SmartPagePerNamespace
LPA 结构的位 0 指示控制器是否支持每个命名空间的 SMART/Health 信息日志页。
如果此值设置为 1,控制器支持基于每个命名空间的 SMART/Health 信息日志页。 清除 0此值后,控制器不支持基于每个命名空间的 SMART/Health 信息日志页。
LPA.CommandEffectsLog
LPA 结构的位 1 指示控制器是否支持命令效果日志页。
如果此值设置为 1,控制器支持命令效果日志页。 清除此值 0后,控制器不支持命令效果日志页。
LPA.LogPageExtendedData
LPA 结构的位 2 指示控制器是否支持日志页扩展数据。
LPA.TelemetrySupport
LPA 结构的位 3 指示控制器是否支持遥测支持。
LPA.PersistentEventLog
LPA.Reserved0
LPA.TelemetryDataArea4
LPA.Reserved1
ELPE
指示控制器存储的错误信息日志条目数。 此字段是基于 0 的值。
NPSS
指示控制器支持的 NVM Express 电源状态数。 这是一个基于 0 的值。
从电源状态 0 开始按顺序编号电源状态。 控制器必须至少支持一个电源状态(例如电源状态 0),并且最多可以支持 31 个额外的电源状态,总共 32 个。
AVSCC
管理员供应商特定命令配置 (AVSCC) 结构,其中包含指示管理员供应商特定命令处理的配置设置的字段。
AVSCC.CommandFormatInSpec
AVSCC 结构的位 0 指示所有管理员供应商特定命令是否使用NVME_COMMAND结构中定义的命令格式。
如果清除 0此值,则表示所有管理员供应商特定命令的格式都是特定于供应商的。
如果此值设置为 1,则表示所有管理员供应商特定命令都将使用 NVME_COMMAND 结构。
AVSCC.Reserved
AVSCC 结构的位 1:7 保留。
APSTA
自治电源状态转换属性(APSTA)结构,包含指示 自治电源状态转换功能属性的字段。
APSTA.Supported
APSTA 结构的位 0 指示控制器是否支持自治电源状态转换。
当此值设置为 1时,控制器支持自治电源状态转换。 清除 0此值后,控制器不支持自治电源状态转换。
APSTA.Reserved
保留 APSTA 结构的 1:7 位。
WCTEMP
指示最小复合温度字段值(在 SMART/Health Information 日志中报告),指示控制器作继续期间过热的情况。
建议立即修正(例如,额外的冷却或工作负荷减少)。 平台应努力保持低于此值的复合温度。
此字段中的值 0h 指示控制器未报告任何警告温度阈值。 符合 NVMe Spec 1.2 或更高版本的实现应在此字段中报告非零值。 建议实现报告此字段中的值 0157h 。
CCTEMP
指示最小复合温度字段值(在 SMART/Health Information 日志中报告),指示严重过热情况。 例如,可能阻止持续正常运行、数据丢失、自动设备关闭、极端性能限制或永久损坏的条件。
此字段中的值 0h 指示控制器没有报告关键温度阈值。 符合 NVMe Spec 1.2 或更高版本的实现应在此字段中报告非零值。
MTFA
指示控制器暂时停止处理命令以激活固件映像的最长时间。
如果控制器支持在不重置的情况下进行固件激活,则此字段有效。
MFTA 值以 100 毫秒为单位指定。 指示未定义最长时间的值 0h 。
HMPRE
指示主机应在 4KB 单元中为 主机内存缓冲区 功能分配的首选大小。
此值必须大于或等于主机内存缓冲区最小大小(HMMIN)。
如果此字段为非零,则支持主机内存缓冲区功能。 清除此值 0h后,不支持主机内存缓冲区功能。
HMMIN
指示主机应在 4KB 单位中为主机内存缓冲区功能分配的最小大小。
清除此值 0后,将请求主机分配可能达到 HMPRE 值的任何主机内存量。
TNVMCAP[16]
指示 NVM 子系统的总 NVM 容量(以字节为单位)。
如果支持命名空间管理和命名空间附件命令,则支持此字段。
UNVMCAP[16]
指示 NVM 子系统的未分配 NVM 容量(以字节为单位)。
如果支持命名空间管理和命名空间附件命令,则支持此字段。
RPMBS
重播受保护的内存块支持(RPMBS)结构,其中包含指示控制器是否支持一个或多个重播受保护的内存块(RPMB)和相关功能的字段。
RPMBS.RPMBUnitCount
指示控制器支持的 RPMB 数量。
所有受支持的(受保护的内存块)PMB 目标都具有与 RPMBS 字段中定义的相同功能。 指示控制器不支持 RPMB 的值 0h 。 如果此值不为零,则控制器支持安全发送和安全接收命令。
RPMBS.AuthenticationMethod
指示用于访问控制器中所有重播受保护内存块(RPMB)的身份验证方法。 此字段的值包括:
| 价值 | Definition |
|---|---|
| 000b | HMAC SHA-256 |
| 001b-111b | 保留 |
RPMBS.Reserved0
保留字段。
RPMBS.TotalSize
指示控制器中 128KB 单位中支持的每个 RPMB 的总大小。 这是一个基于 0 的值。 指示大小为 128KB 的值 0h 。
RPMBS.AccessSize
指示此控制器的安全发送或安全接收命令在 512B 单元中读取或写入每个 RPMB 访问的大小。
这是一个基于 0 的值。 指示大小为 512B 的值 0h 。
EDSTT
指示扩展设备自测试时间(EDSTT)。
DSTO
指示设备自测试选项(DSTO)。
FWUG
指示固件更新粒度(FWUG)。
KAS
指示“保持活动状态”支持(KAS)。
HCTMA
主机控制的热管理属性 (HCTMA) 结构。
HCTMA.Supported
指示是否支持主机控制的热管理属性。
HCTMA.Reserved
此 HCTMA 结构字段保留。
MNTMT
最低热管理温度 (MNTMT)
MXTMT
最大热管理温度(MXTMT)
SANICAP
清理功能 (SANICAP)
SANICAP.CryptoErase
控制器支持加密擦除清理
SANICAP.BlockErase
控制器支持块擦除清理
SANICAP.Overwrite
控制器支持覆盖桑蒂兹
SANICAP.Reserved
SANICAP.NDI
SANICAP.NODMMAS
HMMINDS
HMMAXD
NSETIDMAX
NVM 设置标识符最大值
ENDGIDMAX
ANATT
ANACAP
ANACAP.OptimizedState
ANACAP.NonOptimizedState
ANACAP.InaccessibleState
ANACAP.PersistentLossState
ANACAP.ChangeState
ANACAP.Reserved
ANACAP.StaticANAGRPID
ANACAP.SupportNonZeroANAGRPID
ANAGRPMAX
NANAGRPID
PELS
Reserved1[156]
保留字段。
SQES
提交队列输入大小(SQES)结构,其中包含使用 NVM 命令集时指示必需和最大提交队列条目大小的字段。
SQES.RequiredEntrySize
SQES 结构的位 0:3 指示使用 NVM 命令集时所需的提交队列条目大小。
这是可以使用的最小条目大小。 该值以字节为单位,并报告为 2 (2^n) 的幂。 所需的值为 6,对应于 64 个字节。
SQES.MaxEntrySize
SQES 结构的位 4:7 表示使用 NVM 命令集时的最大提交队列条目大小。
此值大于或等于 SQES。RequiredEntrySize 值。 该值以字节为单位,并报告为 2 (2^n) 的幂。 建议的值为 6,对应于标准 NVM 命令集 SQ 条目大小 64 字节。 实现专有扩展的控制器可能支持更大的值。
CQES
完成队列条目大小(CQES)结构,其中包含使用 NVM 命令集时指示必需和最大完成队列条目大小的字段。
CQES.RequiredEntrySize
CQES 结构的位 0:3 指示使用 NVM 命令集时所需的完成队列条目大小。
这是可以使用的最小条目大小。 该值以字节为单位,并报告为 2 (2^n) 的幂。 所需的值为 4,对应于 16 个字节。
CQES.MaxEntrySize
CQES 结构的位 4:7 指示使用 NVM 命令集时的最大完成队列条目大小。
此值大于或等于所需的 CQ 条目大小。 该值以字节为单位,并报告为 2 (2^n) 的幂。 建议的值为 4,对应于标准 NVM 命令集 CQ 条目大小 16 字节。 实现专有扩展的控制器可能支持更大的值。
MAXCMD
NN
指示控制器存在的有效命名空间数。
ONCS
可选的 NVM 命令支持 (ONCS) 结构,包含指示控制器支持的可选 NVM 命令 和功能的字段。
ONCS.Compare
ONCS 结构的位 0 指示控制器是否支持 Compare 命令。
当此值设置为 1时,控制器支持 Compare 命令。 清除 0此值后,控制器不支持 Compare 命令。
ONCS.WriteUncorrectable
ONCS 结构的位 1 指示控制器是否支持写入不可更正命令。
如果此值设置为 1,控制器支持“写入不可更正”命令。 清除 0此值后,控制器不支持“写入不可更正”命令。
ONCS.DatasetManagement
ONCS 结构的位 2 指示控制器是否支持数据集管理命令。
当此值设置为 1时,控制器支持“数据集管理”命令。 清除此值 0后,控制器不支持数据集管理命令。
ONCS.WriteZeroes
ONCS 结构的位 3 指示控制器是否支持写入零命令。
如果此值设置为 1,控制器支持写入零命令。 清除此值 0后,控制器不支持写入零命令。
ONCS.FeatureField
ONCS 结构的位 4 指示控制器是否支持“设置功能”命令中的“保存”字段和“获取功能”命令中的“选择”字段。
如果此值设置为 1,控制器支持“设置功能”命令中的“保存”字段和“获取功能”命令中的“选择”字段。
清除 0此值后,控制器不支持“设置功能”命令中的“保存”字段和“获取功能”命令中的“选择”字段。
ONCS.Reservations
ONCS 结构的位 5 指示控制器是否支持预留。
如果此值设置为 1,控制器支持预留,还支持与预留关联的以下命令:
- 预留报告
- 预留注册
- 预留获取
- 预留版本
清除此值 0后,控制器不支持预留。
ONCS.Timestamp
ONCS 结构的位 6 指示控制器是否支持时间戳(NVME_FEATURE_TIMESTAMP)功能。
ONCS.Verify
ONCS.Reserved
保留 ONCS 结构的位 7:15。
FUSES
融合作支持 (FUSES) 结构,包含指示控制器支持的融合作的字段。
FUSES.CompareAndWrite
FUSES 结构的位 0 指示控制器是否支持比较和写入融合作。
清除 0此值后,控制器不支持 Compare 和 Write fused作。 比较将是 序列中的第一个命令。
FUSES.Reserved
FUSES 结构的位 15:1 保留。
FNA
格式 NVM 属性 (FNA) 结构,包含指示 格式 NVM 命令的属性的字段。
FNA.FormatApplyToAll
FNA 结构的位 0 指示格式作是适用于所有命名空间还是特定于特定命名空间。
如果此值设置为 1,则所有命名空间都配置了相同的属性,并且任何命名空间的格式会导致所有命名空间的格式。
清除此值 0后,控制器支持每个命名空间的格式。
FNA.SecureEraseApplyToAll
FNA 结构的位 1 指示加密擦除和用户数据擦除功能适用于所有命名空间,还是特定于特定命名空间。
当此值设置为 1时,作为格式的一部分的特定命名空间的加密擦除会导致所有命名空间的加密擦除,并且作为格式的一部分的用户数据擦除会导致用户数据擦除所有命名空间。
如果清除 0此值,则会在每个命名空间的基础上执行加密擦除或用户数据擦除(作为格式的一部分)。
FNA.CryptographicEraseSupported
FNA 结构的位 2 指示是否支持加密擦除作为安全擦除功能的一部分。
如果此值设置为 1,则支持加密擦除。 清除此值 0后,不支持加密擦除。
FNA.FormatSupportNSIDAllF
FNA.Reserved
保留 FNA 结构的位 7:3。
VWC
可变写入缓存 (VWC) 结构,其中包含指示与实现中存在易失写入缓存相关的属性的字段。
VWC.Present
VWC 结构的位 0 表示存在易失性写入缓存。
如果此值设置为1,则存在易失性写入缓存,并且主机可能会发出 Flush 命令,并控制是否使用指定NVME_FEATURE_VOLATILE_WRITE_CACHE功能标识符的 Set Features 命令启用易失写入缓存。
清除此值 0时,不存在易失性写入缓存。
如果不存在易失性写入缓存,Flush 命令将成功完成且不起作用,并且具有 NVME_FEATURE_VOLATILE_WRITE_CACHE 标识符集的“设置功能”命令将失败,状态为 “NVME_STATUS_INVALID_FIELD_IN_COMMAND”,并且 “获取 具有 NVME_FEATURE_VOLATILE_WRITE_CACHE 标识符集的功能”将失败,状态 为NVME_STATUS_INVALID_FIELD_IN_COMMAND。
VWC.FlushBehavior
VWC.Reserved
VWC 结构的 1:7 位保留。
AWUN
指示在正常作期间保证以原子方式写入所有命名空间的 NVM 的写入作的大小。 此字段在逻辑块中指定,并且是基于 0 的值。
如果特定命名空间保证大于此字段中报告的大小,则会在标识命名空间数据结构的 NAWUN 字段中报告此命名空间特定大小。
如果写入命令的大小小于或等于 AWUN 值提交,则主机可以保证写入命令对于其他读取或写入命令而言是 NVM 的原子命令。 如果提交的大小大于 AWUN 值的写入命令,则不能保证命令原子性。
AWUN 值不具有写入因电源故障导致的错误的任何适用性。 有关详细信息,请参阅原子写入单元电源故障(AWUPF)字段。
指示所有命令的值 FFFFh 都是原子的,因为这是最大的命令大小。 实现应支持至少 128KB,根据逻辑块访问(LBA)大小进行适当缩放。
AWUPF
指示保证在电源失败或错误条件期间,在所有命名空间中以原子方式写入 NVM 的写入作的大小。 此字段在逻辑块中指定,并且是基于 0 的值。
如果特定命名空间保证大于此字段中报告的大小,则会在标识命名空间数据结构的 NAWUPF 字段中报告此命名空间特定大小。 AWUPF 值必须小于或等于 AWUN 值。
如果写入命令提交的大小小于或等于 AWUPF 值,则主机可以保证写入是针对其他读取或写入命令的 NVM 的原子写入。 如果提交大于此大小的写入命令,则无法保证命令原子性。 如果写入大小小于或等于 AWUPF 值,并且写入命令失败,则关联的逻辑块的后续读取命令将返回上一个成功的写入命令中的数据。
如果提交的大小大于 AWUPF 值的写入命令,则不能保证在后续读取关联的逻辑块时返回的数据。
NVSCC
NVM 供应商特定命令配置 (NVSCC) 结构,其中包含指示 NVM 供应商特定命令处理的配置设置的字段。
NVSCC.CommandFormatInSpec
NVSCC 结构的位 0 指示所有 NVM 供应商特定命令是否都使用图 13 中定义的格式。
如果此值设置为 1,则所有 NVM 供应商特定命令都使用图 13 中定义的格式。 清除 0此值后,它指示所有 NVM 供应商特定命令的格式都是特定于供应商的。
NVSCC.Reserved
NVSCC 结构的位 1:7 保留。
NWPC
NWPC.WriteProtect
NWPC.UntilPowerCycle
NWPC.Permanent
NWPC.Reserved
ACWU
指示保证在所有命名空间中以原子方式写入 NVM 的写入作的大小,以及比较和写入融合作支持的任何命名空间格式。
如果特定命名空间保证此字段中报告的大小大于此字段,则会在标识命名空间数据结构的 NACWU 字段中报告此命名空间特定大小。
如果支持 Compare 和 Write fused 命令,则支持此字段。 此字段在逻辑块中指定,并且是基于 0 的值。 如果提交“比较”和“写入”请求的传输大小大于此值,则控制器可能会使命令失败,其状态 为NVME_STATUS_INVALID_FIELD_IN_COMMAND。
如果 Compare 和 Write 不是受支持的融合命令,则此字段的值将为 0h。
Reserved4[2]
保留字段。
SGLS
SGL 支持 (SGLS) 结构,其中包含指定 NVM 命令集和支持的 SGL 类型是否支持散点收集列表(SGL)的字段。
SGLS.SGLSupported
如果此值设置为 1,控制器支持 NVM 命令集的 SCL,包括 SGL 数据块、SGL 段和 SGL Last Segment 描述符类型。 清除此值0后,控制器不支持 NVM 命令集的 SCL,并且此字段中的所有其他位将被清除。0
SGLS.KeyedSGLData
SGLS.Reserved0
保留字段。
SGLS.BitBucketDescrSupported
如果此值设置为 1,则支持 SGL 位存储桶描述符。 清除此值 0后,不支持 SGL 位存储桶描述符。
SGLS.ByteAlignedContiguousPhysicalBuffer
如果此值设置为 1,则支持使用元数据(图 12 中的元数据指针字段)的字节对齐连续物理缓冲区。 如果清除 0此值,则不支持使用字节对齐的连续元数据缓冲区。
SGLS.SGLLengthLargerThanDataLength
如果此值设置为 1,控制器支持包含长度大于要传输的数据量或元数据 SGL 的命令。 清除此值 0后,SGL 长度将等于要传输的数据量。
SGLS.MPTRSGLDescriptor
SGLS.AddressFieldSGLDataBlock
SGLS.TransportSGLData
SGLS.Reserved1
保留字段。
MNAN
Reserved6[224]
字节 704:2047 是为 I/O 命令集属性保留的。
SUBNQN[256]
Reserved7[768]
Reserved8[256]
PDS[32]
包含 32 个 Power State 描述符的数组。 数组的每个成员都是一个 32 位字段,指示 Power State 描述符的特征。 此字段的格式在 NVME_POWER_STATE_DESC 结构中定义。
数组中结构从零开始的位置对应于 Power State 描述符的名称,这样 Power State 0 描述符(PSD0)就处于位置 0,Power State 1 描述符(PSD1)位于位置 1 中,依此类移,最多位于 Power State 31 描述符(PSD31)的位置 31。
VS[1024]
为供应商特定的使用情况分配字节 3072:4095。
注解
VID、SN 和 MN 字段的值可以组合在一起,形成标识 NVM 子系统的全局唯一值。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows 10操作系统 |
| Header | nvme.h |