NVME_IDENTIFY_CONTROLLER_DATA结构 (nvme.h)

包含指示控制器功能、功能、命令集属性和电源状态描述符的值。

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。

注解

VIDSNMN 字段的值可以组合在一起,形成标识 NVM 子系统的全局唯一值。

要求

Requirement 价值
最低支持的客户端 Windows 10操作系统
Header nvme.h