共用方式為


NVME_IDENTIFY_CONTROLLER_DATA結構 (nvme.h)

包含值,指出控制器功能、功能、命令集屬性和電源狀態描述元。

語法

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 是可在 註冊 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) Virtual Function。 當值清除為 0時,控制器會與PCI函式相關聯。

CMIC.ANAR

CMIC.Reserved

CMIC 結構的位 3:7 是保留的。

MDTS

指出主機與控制器之間的數據傳輸大小上限。

主機不應該提交超過此傳輸大小的命令。 如果提交超過傳輸大小的命令,命令就會中止,其狀態為 NVME_STATUS_INVALID_FIELD_IN_COMMAND

此欄位的值是以控制器功能結構的 MPSMIN 欄位中指定的最小記憶體頁面大小單位,並回報為兩個 (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時,控制器支援傳送 Namespace Attribute Changed 事件。 當這個值清除為 0時,控制器不支援 Namespace Attribute Changed 事件。

OAES.FirmwareActivation

OAES 結構的位9。

當此值設定為 1時,控制器支援傳送 Firmware Activation 事件。 當這個值清除為 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 表示控制器是否支援格式 NVM 命令。

當此值設定為 1時,控制器支援 Format NVM 命令。 當這個值清除為 0時,控制器不支援格式 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 之間的值,表示至少支援一個韌體插槽,以及最多七個韌體插槽。 這對應於韌體插槽 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 記錄) 中回報的 [SMART / Health Information] 中報告的 [復合溫度] 域值下限,表示重大的濕度狀況。 例如,可能會防止繼續正常作業、數據遺失的可能性、自動裝置關機、極端效能節流或永久損毀的條件。

此欄位中的 0h 值表示控制器不會報告任何重大溫度臨界值。 符合 NVMe 規格 1.2 版或更新版本的實作應該在此欄位中回報非零值。

MTFA

指出控制器暫時停止處理命令以啟動韌體映像的時間上限。

如果控制器支援不重設的韌體啟用,則此欄位有效。 MFTA 值是以 100 毫秒單位指定。 的值 0h 表示未定義時間上限。

HMPRE

指出主機應該以 4 KB 單位配置給 主機記憶體緩衝區 功能的慣用大小。

此值必須大於或等於 HMMIN) 的 主機記憶體緩衝區大小下限 (。

如果此欄位為非零,則支援主機記憶體緩衝區功能。 清除此值 0h時,不支援主機記憶體緩衝區功能。

HMMIN

指出主機應該以 4 KB 單位配置主機記憶體緩衝區功能的大小下限。

當清除此值 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

指出控制器中以 128 KB 單位支援的每個 RPMB 大小總計。 這是以 0 為基礎的值。 的值 0h 表示大小為 128KB。

RPMBS.AccessSize

指出此控制器的安全性傳送或安全性接收命令在 512B 單位中可讀取或寫入每個 RPMB 存取的大小。

這是以 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

控制器支援 Crypto Erase Sanitize

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^n) 的乘冪。 必要值為 6,對應至 64 個字節。

SQES.MaxEntrySize

SQES 結構的位 4:7 表示使用 NVM 命令集時的提交佇列專案大小上限。

此值大於或等於 SQES。RequiredEntrySize 值。 此值是以位元組為單位,並回報為兩個 (2^n) 的乘冪。 建議值為 6,對應至標準 NVM 命令集 SQ 專案大小 64 個字節。 實作專屬延伸模組的控制器可能會支援較大的值。

CQES

完成佇列專案大小 (CQES) 結構,其中包含欄位,指出使用 NVM 命令集時的必要和最大完成佇列專案大小。

CQES.RequiredEntrySize

CQES 結構的位 0:3 表示使用 NVM 命令集時所需的完成佇列專案大小。

這是可以使用的最小專案大小。 此值是以位元組為單位,並回報為兩個 (2^n) 的乘冪。 必要值為 4,對應至 16 個字節。

CQES.MaxEntrySize

CQES 結構的位 4:7 表示使用 NVM 命令集時的完成佇列專案大小上限。

此值大於或等於所需的 CQ 專案大小。 此值是以位元組為單位,並回報為兩個 (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 表示控制器是否支援 Write Uncorrectable 命令。

當此值設定為 1時,控制器支援 Write Uncorrectable 命令。 當這個值清除為 0時,控制器不支援 Write Uncorrectable 命令。

ONCS.DatasetManagement

ONCS 結構的位 2 表示控制器是否支援數據集管理命令。

當此值設定為 1時,控制器支持數據集管理命令。 當這個值清除為 0時,控制器不支持數據集管理命令。

ONCS.WriteZeroes

ONCS 結構的位 3 表示控制器是否支援 Write Zeroes 命令。

當這個值設定為 1時,控制器支援 Write Zeroes 命令。 當這個值清除為 0時,控制器不支援 Write Zeroes 命令。

ONCS.FeatureField

ONCS 結構的 Bit 4 指出控制器是否支援 [設定功能] 命令中的 [儲存] 欄位,以及 [取得功能] 命令中的 [選取] 字段。

當此值設定為 1時,控制器支援 [設定功能] 命令中的 [儲存] 字段,以及 [取得功能] 命令中的 [選取] 字段。 清除此值 0時,控制器不支援 [設定功能] 命令中的 [儲存] 字段,以及 [取得功能] 命令中的 [選取] 字段。

ONCS.Reservations

ONCS 結構的位 5 表示控制器是否支援保留。

當此值設定為 1時,控制器支援保留,也支援下列與保留相關聯的命令:

  • 保留報告
  • 保留註冊
  • 保留取得
  • 保留版本

當這個值清除為 0時,控制器不支援保留。

ONCS.Timestamp

ONCS 結構的位 6 表示控制器是否支援時間戳 (NVME_FEATURE_TIMESTAMP) 功能。

ONCS.Verify

ONCS.Reserved

保留 ONCS 結構的位 7:15。

FUSES

Fused Operation Support (FUSES) 結構,其中包含指出控制器支援的融合作業字段。

FUSES.CompareAndWrite

FUSES 結構的位 0 表示控制器是否支援 Compare 和 Write fused 作業。

當這個值清除為 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功能識別碼的設定功能命令來啟用動態寫入快取。

當這個值清除為 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 表示所有命令都是不可部分完成的,因為這是最大的命令大小。 實作應該支援至少 128 KB,根據邏輯區塊存取 (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寫入作業大小,其中包含 Compare 和 Write fused 作業的任何支援命名空間格式。

如果特定命名空間保證大於此欄位中所報告的大小,則會在 [識別命名空間] 資料結構的 NACWU 字段中報告此命名空間特定大小。

如果支援 Compare 和 Write fused 命令,則會支援此欄位。 此欄位是在邏輯區塊中指定,而且是以 0 為基礎的值。 如果提交 Compare 和 Write 要求傳輸大小大於此值的傳輸大小,控制器可能會使命令失敗,且狀態為 NVME_STATUS_INVALID_FIELD_IN_COMMAND

如果 Compare 和 Write 不是支援的 fused 命令,則此欄位的值會是 0h

Reserved4[2]

保留欄位。

SGLS

SGL 支援 (SGLS) 結構,其中包含指定 NVM 命令集和支援的 SGL 類型是否支援散佈圖收集 清單 (SGL) 的字段。

SGLS.SGLSupported

當此值設定為 1時,控制器支援 NVM 命令集的 SCL,包括 SGL 數據區塊、SGL 區段和 SGL 最後區段描述元類型。 當這個值清除為 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 子系統的全域唯一值。

規格需求

需求
最低支援的用戶端 Windows 10
標頭 nvme.h