nvme.h) (NVME_IDENTIFY_CONTROLLER_DATA 结构
包含指示控制器功能、功能、命令集属性和电源状态描述符的值。
语法
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;
成员
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 是有效的 IEEE/RAC 分配标识符,可在 注册 http://standards.ieee.org/develop/regauth/oui/public.html。
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) Virtual Function 相关联。 将 值清除为 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
指示从 Runtime D3 (RTD3) 恢复时的典型延迟(以微秒为单位)。
符合 NVMe 规范版本 1.2 或更高版本的实现将在此字段中报告非零值。
RTD3E
指示进入 Runtime 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
CTRATT 结构的位 32,包含 128 位主机标识符。
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
指示控制器支持的并发未完成 的 Abort 命令的最大数目。
这是基于 0 的值。 实现应同时支持至少四个未完成的 Abort 命令。
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 规范版本 1.2 或更高版本的实现应在此字段中报告非零值。 建议实现在此字段中报告 值 0157h
。
CCTEMP
指示 [SMART / Health Information] (ns-nvme-nvme_health_info_log.md 日志) 中报告 (的最小复合温度字段值,该值指示严重过热情况。 例如,可能阻止继续正常操作、数据丢失的可能性、自动设备关闭、极端性能限制或永久损坏的情况。
此字段中的 0h
值为 表示控制器未报告任何临界温度阈值。 符合 NVMe 规范版本 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 字段中定义的相同功能。 值 0h
指示控制器不支持 RPMB。 如果此值不为零,则控制器支持“安全发送”和“安全接收”命令。
RPMBS.AuthenticationMethod
指示用于访问控制器中所有重播受保护内存块 (RPMB) 的身份验证方法。 此字段的值为:
值 | 定义 |
---|---|
000b | HMAC SHA-256 |
001b-111b | 预留 |
RPMBS.Reserved0
保留字段。
RPMBS.TotalSize
指示控制器中支持的每个 RPMB 的总大小(以 128KB 为单位)。 这是基于 0 的值。 值 0h
指示大小为 128KB。
RPMBS.AccessSize
指示此控制器的安全发送或安全接收命令按 RPMB 访问可以读取或写入的大小,单位为 512B。
这是基于 0 的值。 值 0h
指示大小为 512B。
EDSTT
指示扩展设备自测试时间 (EDSTT) 。
DSTO
指示设备自测试选项 (DSTO) 。
FWUG
指示固件更新粒度 (FWUG) 。
KAS
指示 KAS) (Keep Alive 支持。
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,对应于 16 字节的标准 NVM 命令集 CQ 条目大小。 实现专有扩展的控制器可能支持更大的值。
MAXCMD
NN
指示控制器存在的有效命名空间数。
ONCS
可选 NVM 命令支持 (ONCS) 结构,其中包含指示控制器支持的可选 NVM 命令 和功能的字段。
ONCS.Compare
ONCS 结构的位 0 指示控制器是否支持 Compare 命令。
当此值设置为 1
时,控制器支持 Compare 命令。 将此值清除为 0
时,控制器不支持 Compare 命令。
ONCS.WriteUncorrectable
ONCS 结构的位 1 指示控制器是否支持 Write Uncorrectable 命令。
当此值设置为 1
时,控制器支持 Write Uncorrectable 命令。 将此值清除为 0
时,控制器不支持 Write Uncorrectable 命令。
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
时,控制器不支持比较和写入融合操作。 比较将是 序列中的第一个命令。
FUSES.Reserved
保留 FUSES 结构的位 15:1。
FNA
格式化 NVM 属性 (FNA) 结构,其中包含指示 Format 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
时,不存在易失性写入缓存。
如果不存在易失性写入缓存,刷新命令会成功完成且不起作用,并且设置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 值对电源故障导致的写入错误没有任何适用性。 有关详细信息,请参阅 Atomic Write Unit Power Fail (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 and Write 融合命令,则支持此字段。 此字段在逻辑块中指定,并且是基于 0 的值。 如果提交的“比较和写入”请求的传输大小大于此值,则控制器可能会使命令失败,状态为 “NVME_STATUS_INVALID_FIELD_IN_COMMAND”。
如果 Compare and Write 不是受支持的融合命令,则此字段的值将为 0h
。
Reserved4[2]
保留字段。
SGLS
SGL 支持 (SGLS) 结构,其中包含指定 NVM 命令集和支持的 SGL 类型是否支持散点收集Lists (SGL) 的字段。
SGLS.SGLSupported
当此值设置为 1
时,控制器支持 NVM 命令集的 SGL,包括 SGL 数据块、SGL 段和 SGL 最后段描述符类型。 将此值清除为 0
时,控制器不支持 NVM 命令集的 SDL,并且此字段中的所有其他位都将清除为 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]
为 I/O 命令集属性保留字节 704:2047。
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 子系统的全局唯一值。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 |
标头 | nvme.h |