共用方式為


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;

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 是有效的 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) 虛擬功能相關聯。 當該值清除為 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時,控制器支援傳送 Namespace Attribute Changed 事件。 當清除此值 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 位主機 ID。

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時,控制器支援格式化 NVM 命令。 當清除此值 0時,控制器不支援Format NVM命令。

OACS.FirmwareCommands

OACS結構的位2指出控制器是否支援韌體提交和韌體映像下載命令。

當此值設定為 1時,控制器支援韌體提交和韌體映像下載命令。 當此值清除為 0時,控制器不支援韌體提交和韌體映像下載命令。

OACS.NamespaceCommands

OACS 結構的位 3 指出控制器是否支援 [名稱空間管理] 和 [名稱空間附件] 命令。

當此值設定為 1時,控制器會支援命名空間管理與命名空間附件命令。 當清除此值 0為 時,控制器不支援 Namespace Management 和 Namespace Attachment 命令。

OACS.DeviceSelfTest

OACS 結構的位 4 指出控制器是否支援裝置自我測試指令。

OACS.Directives

OACS 結構的位 5 指出控制器是否支援 Directive Send 和 Directive Receive 命令。

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/健康情況資訊記錄頁面。

當此值設定為 1時,控制器會依每個命名空間支援 SMART / 健康情況資訊記錄檔頁面。 清除此值 0時,控制器不支援每個命名空間的SMART/健康情況資訊日誌頁。

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 / 健康資訊 日誌中報告),表示控制器繼續操作的過熱狀況。

建議立即修復 (例如,額外冷卻或減少工作量)。 平台應努力將複合溫度保持在該值以下。

此欄位中的值 表示 0h 控制器未報告警告溫度臨界值。 符合 NVMe 規格 1.2 版或更新版本的實作應在此欄位中報告非零值。 建議實作在此欄位中報告值 。0157h

CCTEMP

表示最小複合溫度欄位值(在 SMART / 健康資訊 日誌中報告),表示嚴重過熱狀況。 例如,可能阻止繼續正常運作、資料遺失的可能性、裝置自動關機、極端效能節流或永久損壞的情況。

此欄位中的值 表示 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

Replay Protected Memory Block Support (RPMBS) 結構,其中包含指出控制器是否支援一或多個 Replay Protected Memory Block (RPMB) 及相關聯功能的欄位。

RPMBS.RPMBUnitCount

指出控制器支援的 RPMB 目標數目。

所有支援的 (受保護記憶體區塊) PMB 目標都具有與 RPMBS 欄位中定義的相同功能。 值為表示 0h 控制器不支援 RPMB。 如果此值為非零,則控制器支援安全傳送和安全接收命令。

RPMBS.AuthenticationMethod

指出用於存取控制器中所有重播保護記憶體區塊(RPMB)的驗證方法。 此欄位的值為:

價值觀 Definition
000億 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)。

HCTMA

主機控制的熱管理屬性 (HCTMA) 結構。

HCTMA.Supported

指出是否支援主機控制的熱管理屬性。

HCTMA.Reserved

HCTMA 結構欄位已保留。

MNTMT

最低熱管理溫度 (MNTMT)

MXTMT

最高熱管理溫度 (MXTMT)

SANICAP

消毒功能 (SANICAP)

SANICAP.CryptoErase

控制器支援加密擦除清理

SANICAP.BlockErase

控制器支援區塊擦除清理

SANICAP.Overwrite

控制器支援覆寫 Santize

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,對應於 64 位元組的標準 NVM 命令集 SQ 項目大小。 實作專屬延伸模組的控制器可能會支援較大的值。

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時,控制器會支援「比較」指令。 當清除此值 0時,控制器不支援比較命令。

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) 結構,其中包含指示 格式化 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功能 ID 的 [設定功能] 指令來控制是否啟用揮發性寫入快取。

當此值清除為 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 Failure (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 欄位中報告此名稱空間特定大小。

如果支援「比較」和「寫入融合」命令,則將支援此欄位。 此欄位在邏輯區塊中指定,且是以 0 為基礎的值。 如果提交了請求大於此值的傳輸大小的比較和寫入,則控制器可能會使命令失敗,狀態為 NVME_STATUS_INVALID_FIELD_IN_COMMAND

如果「比較與寫入」不是支援的融合命令,則此欄位的值將為 0h

Reserved4[2]

保留欄位。

SGLS

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

SGLS.SGLSupported

當此值設定為 1時,控制器支援NVM命令集的SGL,包括SGL資料區塊、SGL分段和SGL最後一個分段描述符型別。 當此值清除為 0時,控制器不支援 NVM 命令集的 SGL,且此欄位中的所有其他位都將清除為 0

SGLS.KeyedSGLData

SGLS.Reserved0

保留欄位。

SGLS.BitBucketDescrSupported

當此值設定為 1時,支援 SGL 位元儲存區描述元。 當清除此值 0為 時,不支援 SGL 位元儲存區描述符。

SGLS.ByteAlignedContiguousPhysicalBuffer

當此值設定為 1時,支援使用位元組對齊的中繼資料連續實體緩衝區 (圖 12 中的 Metadata Pointer 欄位)。 當此值清除為 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 個電源狀態描述元的陣列。 陣列的每個成員都是 32 位欄位,指出電源狀態描述元的特性。 此欄位的格式是在 NVME_POWER_STATE_DESC 結構中定義的。

陣列中結構的從零開始的位置對應至電源狀態描述元的名稱,例如電源狀態 0 描述元 (PSD0) 位於位置 0、電源狀態 1 描述元 (PSD1) 位於位置 1,依此類推,直到電源狀態 31 描述元 (PSD31) 位於位置 31。

VS[1024]

位元組 3072:4095 是為廠商特定用途配置的。

備註

VIDSNMN欄位的值可以組合成識別NVM子系統的全域唯一值。

需求

Requirement 價值觀
最低支援的用戶端 視窗10
Header nvme.h