NVME_IDENTIFY_CONTROLLER_DATA-Struktur (nvme.h)
Enthält Werte, die Controllerfunktionen, Features, Befehlssatzattribute und Energiezustandsdeskriptoren angeben.
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;
Member
VID
Enthält den Anbieterbezeichner des Unternehmens, der von der Peripheral Component Interconnect - Special Interest Group (PCI-SIG) zugewiesen wird.
SSVID
Enthält den Anbieterbezeichner des Unternehmens, der von der PCI-SIG für das Subsystem zugewiesen wird.
SN[20]
Enthält die Seriennummer für das NVM-Subsystem, das vom Anbieter als ASCII-Zeichenfolge zugewiesen wird.
MN[40]
Enthält die Modellnummer für das NVM-Subsystem, das vom Anbieter als ASCII-Zeichenfolge zugewiesen wird.
FR[8]
Enthält die derzeit aktive Firmwarerevision für das NVM-Subsystem.
Dies sind die gleichen Firmwarerevisionsinformationen im NVME_FIRMWARE_SLOT_INFO_LOG , die mit dem Befehl Protokollseite abrufen abgerufen werden können.
RAB
Enthält die empfohlene Größe des Schieds bursts.
IEEE[3]
Enthält den eindeutigen Organisationsbezeichner (Organization Unique Identifier, OUI) für den Controlleranbieter.
Die OUI ist ein gültiger IEEE/RAC-zugewiesener Bezeichner, der unter http://standards.ieee.org/develop/regauth/oui/public.htmlregistriert werden kann.
CMIC
Eine Controller-Struktur mit Mehreren Pfad-E/A- und Namespacefreigabefunktionen (CMIC), die die Multipfad-E/A- und Namespacefreigabefunktionen des Controller- und NVM-Subsystems angibt.
CMIC.MultiPCIePorts
Bit 0 der CMIC-Struktur .
Wenn dieser Wert auf 1
festgelegt ist, kann das NVM-Subsystem zwei oder mehr physische PCI Express-Ports enthalten. Wenn der Wert auf 0
gelöscht wird, enthält das NVM-Subsystem einen einzelnen PCI Express-Port.
CMIC.MultiControllers
Bit 1 der CMIC-Struktur .
Wenn dieser Wert auf 1
festgelegt ist, kann das NVM-Subsystem zwei oder mehr Controller enthalten. Wenn der Wert in 0
gelöscht wird, enthält das NVM-Subsystem einen einzelnen Controller.
CMIC.SRIOV
Bit 2 der CMIC-Struktur .
Wenn dieser Wert auf 1
festgelegt ist, wird der Controller einer virtuellen S/A-Virtualisierungsfunktion (SINGLE-Root E/A Virtualization, SR-IOV) zugeordnet. Wenn der Wert für 0
gelöscht wird, wird der Controller einer PCI-Funktion zugeordnet.
CMIC.ANAR
CMIC.Reserved
Bits 3:7 der CMIC-Struktur sind reserviert.
MDTS
Gibt die maximale Datenübertragungsgröße zwischen dem Host und dem Controller an.
Der Host sollte keinen Befehl übermitteln, der diese Übertragungsgröße überschreitet. Wenn ein Befehl übermittelt wird, der die Übertragungsgröße überschreitet, wird der Befehl mit einer status NVME_STATUS_INVALID_FIELD_IN_COMMAND abgebrochen.
Der Wert dieses Felds ist in Einheiten der minimalen Speicherseitengröße angegeben, die im MPSMIN-Feld der Controllerfunktionen-Struktur angegeben ist, und wird als Leistung von zwei (2^n) gemeldet. Der Wert gibt 0h
keine Einschränkungen für die Übertragungsgröße an. Die Einschränkung umfasst Metadaten, wenn sie mit den logischen Blockdaten überlappen.
Wenn SGL Bit Bucket-Deskriptoren unterstützt werden, werden ihre Längen in die Bestimmung einbezogen, ob ein Befehl die maximale Datenübertragungsgröße für Zieldatenpuffer überschreitet. Ihre Länge in einem Quelldatenpuffer ist für eine Berechnung der maximalen Datenübertragungsgröße nicht enthalten.
CNTLID
Enthält den eindeutigen Controllerbezeichner des NVM-Subsystems, der dem Controller zugeordnet ist.
VER
Enthält den im Versionsregister gemeldeten Wert, der im Vs-Feld der NVME_CONTROLLER_REGISTERS-Struktur definiert ist.
Implementierungen, die mit der NVMe-Spezifikation Version 1.2 oder höher kompatibel sind, melden einen Wert ungleich 0 in diesem Feld.
RTD3R
Gibt die typische Latenz in Mikrosekunden an, wenn die Fortsetzung von Runtime D3 (RTD3) fortgesetzt wird.
Implementierungen, die mit der NVMe-Spezifikation Version 1.2 oder höher kompatibel sind, melden einen Wert ungleich 0 in diesem Feld.
RTD3E
Gibt die typische Latenz in Mikrosekunden für die Eingabe von Runtime D3 (RTD3) an.
Implementierungen, die mit der NVMe-Spezifikation Version 1.2 oder höher kompatibel sind, melden einen Wert ungleich 0 in diesem Feld.
OAES
Eine OAES-Struktur (Optional Asynchronous Events Supported) mit Feldern, die angeben, ob optionale asynchrone Ereignisse vom Controller unterstützt werden.
Ein Controller sollte keine optionalen asynchronen Ereignisse senden, bevor sie von der Hostsoftware aktiviert werden.
OAES.Reserved0
Bits 10:31 der OAES-Struktur sind reserviert.
OAES.NamespaceAttributeChanged
Bit 8 der OAES-Struktur .
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller das Senden des Namespace Attribute Changed-Ereignisses. Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller das Namespace Attribute Changed-Ereignis nicht.
OAES.FirmwareActivation
Bit 9 der OAES-Struktur .
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller das Senden des Firmwareaktivierungsereignisses. Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller das Firmwareaktivierungsereignis nicht.
OAES.Reserved1
Bits 0:7 der OAES-Struktur sind reserviert.
OAES.AsymmetricAccessChanged
OAES.PredictableLatencyAggregateLogChanged
OAES.LbaStatusChanged
OAES.EnduranceGroupAggregateLogChanged
OAES.Reserved2
OAES.ZoneInformation
OAES.Reserved3
CTRATT
Eine Controllerattribute-Struktur (CTRATT), die Informationen zum Controller-Attribut enthält.
CTRATT.HostIdentifier128Bit
Bit 32 der CTRATT-Struktur , die einen 128-Bit-Hostbezeichner enthält.
CTRATT.NOPSPMode
Bit 31 der CTRATT-Struktur , die Informationen über den nicht betriebsbereiten Energiezustand (NOPS) enthält.
CTRATT.NVMSets
Bit 30 der CTRATT-Struktur , die Informationen zu NVM-Befehlssätzen enthält.
CTRATT.ReadRecoveryLevels
Bit 29 der CTRATT-Struktur mit Informationen zu Read-Wiederherstellungsebenen.
CTRATT.EnduranceGroups
Bit 28 der CTRATT-Struktur mit Informationen zu Ausdauergruppenstufen.
CTRATT.PredictableLatencyMode
CTRATT.TBKAS
CTRATT.NamespaceGranularity
CTRATT.SQAssociations
CTRATT.UUIDList
CTRATT.Reserved0
Bits 0:27 der CTRATT-Struktur sind reserviert.
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]
Ein reserviertes Feld von 140 Bytes.
CNTRLTYPE
FGUID[16]
CRDT1
CRDT2
CRDT3
Reserved0_1[106]
ReservedForManagement[16]
Reserviert für die NVMe-Verwaltung.
OACS
Eine optionale Admin-Befehlsunterstützungsstruktur (OACS), die Felder enthält, die die optionalen Admin Befehle angeben, die vom Controller unterstützt werden.
OACS.SecurityCommands
Bit 0 der OACS-Struktur gibt an, ob der Controller die Befehle "Security Send" und "Security Receive" unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller die Befehle "Security Send" und "Security Receive". Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller die Befehle "Security Send" und "Security Receive" nicht.
OACS.FormatNVM
Bit 1 der OACS-Struktur gibt an, ob der Controller den Befehl Format NVM unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller den Befehl Format NVM. Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller den Befehl Format NVM nicht.
OACS.FirmwareCommands
Bit 2 der OACS-Struktur gibt an, ob der Controller die Befehle Firmware Commit und Firmware Image Download unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller die Befehle Firmware Commit und Firmware Image Download. Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller die Befehle Firmware Commit und Firmware Image Download nicht.
OACS.NamespaceCommands
Bit 3 der OACS-Struktur gibt an, ob der Controller die Befehle Namespace management und Namespace Attachment unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller die Befehle Namespace management und Namespace Attachment. Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller die Befehle Namespace management und Namespace Attachment nicht.
OACS.DeviceSelfTest
Bit 4 der OACS-Struktur gibt an, ob der Controller den Befehl Device Self Test unterstützt.
OACS.Directives
Bit 5 der OACS-Struktur gibt an, ob der Controller die Befehle "Direktive senden" und "Direktivener empfangen" unterstützt.
OACS.NVMeMICommands
OACS.VirtualizationMgmt
OACS.DoorBellBufferConfig
OACS.GetLBAStatus
OACS.Reserved
Bits 6:15: sind reserviert.
ACL
Gibt die maximale Anzahl gleichzeitig ausstehender Abbruchbefehle an, die vom Controller unterstützt werden.
Dies ist ein 0er-Wert. Implementierungen sollten mindestens vier ausstehende Abortbefehle gleichzeitig unterstützen.
AERL
Gibt die maximale Anzahl gleichzeitig ausstehender asynchroner Ereignisanforderungsbefehle an, die vom Controller unterstützt werden.
Dies ist ein 0er-Wert. Implementierungen sollten mindestens vier ausstehende Befehle für die asynchrone Ereignisanforderung gleichzeitig unterstützen.
FRMW
Eine FrMW-Struktur (Firmware Updates), die Felder enthält, die Funktionen für Firmwareupdates angeben.
FRMW.Slot1ReadOnly
Bit 0 der FRMW-Struktur gibt an, ob der erste Firmwareslot (Slot 1) schreibgeschützter Ist.
Wenn dieser Wert auf 1
festgelegt ist, ist der erste Firmwareslot (Slot 1) schreibgeschützter Wert. Wenn dieser Wert für 0
gelöscht wird, wird der erste Firmwareslot (Steckplatz 1) mit Lese-/Schreibzugriff ausgeführt. Implementierungen können sich für ein schreibgeschütztes Baseline-Firmwareimage entscheiden.
FRMW.SlotCount
Bits 1:3 der FRMW-Struktur geben die Anzahl der Firmwareslots an, die der Controller unterstützt.
Dieses Feld gibt einen Wert zwischen 1 und sieben an, der angibt, dass mindestens ein Firmwareslot und maximal sieben unterstützt werden. Dies entspricht den Firmwareslots 1 bis 7.
FRMW.ActivationWithoutReset
Bit 4 der FRMW-Struktur gibt an, ob der Controller die Firmwareaktivierung ohne Zurücksetzung unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller die Firmwareaktivierung ohne Zurücksetzung. Wenn dieser Wert auf 0
gelöscht wird, erfordert der Controller eine Zurücksetzung, damit die Firmware aktiviert wird.
FRMW.Reserved
Bits 5:7 der FRMW-Struktur sind reserviert.
LPA
Eine LPA-Struktur (Log Page Attributes), die Felder enthält, die optionale Attribute für Protokollseiten angeben, auf die mit dem Befehl Protokollseite abrufen zugegriffen wird.
LPA.SmartPagePerNamespace
Bit 0 der LPA-Struktur gibt an, ob der Controller die Smart/Health-Informationsprotokollseite pro Namespace unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller die Smart/Health-Informationsprotokollseite pro Namespace. Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller die Smart-/Integritätsinformationsprotokollseite nicht pro Namespace.
LPA.CommandEffectsLog
Bit 1 der LPA-Struktur gibt an, ob der Controller die Protokollseite für Befehlseffekte unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller die Protokollseite Befehlseffekte. Wenn dieser Wert auf 0
gelöscht wird, unterstützt der Controller die Protokollseite für Befehlseffekte nicht.
LPA.LogPageExtendedData
Bit 2 der LPA-Struktur gibt an, ob der Controller erweiterte Protokollseitendaten unterstützt.
LPA.TelemetrySupport
Bit 3 der LPA-Struktur gibt an, ob der Controller Telemetrieunterstützung unterstützt.
LPA.PersistentEventLog
LPA.Reserved0
LPA.TelemetryDataArea4
LPA.Reserved1
ELPE
Gibt die Anzahl der Fehlerinformationsprotokolleinträge an, die vom Controller gespeichert werden. Dieses Feld ist ein auf 0 basierender Wert.
NPSS
Gibt die Anzahl der NVM Express-Leistungszustände an, die vom Controller unterstützt werden. Dies ist ein auf 0 basierender Wert.
Energiezustände werden sequenziell nummeriert, beginnend beim Energiezustand 0. Ein Controller muss mindestens einen Energiezustand (z. B. Energiezustand 0) unterstützen und kann bis zu 31 zusätzliche Energiezustände unterstützen, insgesamt 32.
AVSCC
Eine Admin AvSCC-Struktur (Vendor Specific Command Configuration) mit Feldern, die die Konfigurationseinstellungen für Admin herstellerspezifische Befehlsverarbeitung angeben.
AVSCC.CommandFormatInSpec
Bit 0 der AVSCC-Struktur gibt an, ob alle Admin anbieterspezifischen Befehle das in der NVME_COMMAND-Struktur definierte Befehlsformat verwenden.
Wenn dieser Wert auf 0
gelöscht wird, gibt er an, dass das Format aller Admin anbieterspezifischen Befehle herstellerspezifisch ist.
Wenn dieser Wert auf 1
festgelegt ist, gibt dies an, dass alle Admin anbieterspezifischen Befehle die NVME_COMMAND Struktur verwenden.
AVSCC.Reserved
Bits 1:7 der AVSCC-Struktur sind reserviert.
APSTA
Eine APSTA-Struktur (Autonomous Power State Transition Attributes) mit Feldern, die die Attribute des Übergangsfeatures für autonome Energiezustände angeben.
APSTA.Supported
Bit 0 der APSTA-Struktur gibt an, ob der Controller autonome Energiezustandsübergänge unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller autonome Energiezustandsübergänge. Wenn dieser Wert auf 0
gelöscht wird, unterstützt der Controller keine autonomen Energiezustandsübergänge.
APSTA.Reserved
Bits 1:7 der APSTA-Struktur sind reserviert.
WCTEMP
Gibt den minimalen Wert des Zusammengesetzten Temperaturfelds an (im SMART/Integritätsinformationsprotokoll gemeldet, das eine Überhitzungsbedingung angibt, während der der Controllervorgang fortgesetzt wird.
Eine sofortige Korrektur wird empfohlen (z. B. zusätzliche Kühlung oder Reduzierung der Arbeitsauslastung). Die Plattform sollte versuchen, eine zusammengesetzte Temperatur unter diesem Wert zu halten.
Der Wert von 0h
in diesem Feld gibt an, dass vom Controller kein Warntemperaturschwellenwert gemeldet wird. Implementierungen, die mit NVMe Spec Version 1.2 oder höher kompatibel sind, sollten in diesem Feld einen Wert ungleich 0 melden. Es wird empfohlen, dass Implementierungen den Wert von 0157h
in diesem Feld melden.
CCTEMP
Gibt den minimalen Wert des Zusammengesetzten Temperaturfelds an (in der [SMART /Health Information](ns-nvme-nvme_health_info_log.md log) gemeldet, der auf eine kritische Überhitzungsbedingung hinweist. Zum Beispiel eine Bedingung, die einen fortgesetzten normalen Betrieb, die Möglichkeit eines Datenverlusts, automatisches Herunterfahren des Geräts, extreme Leistungsdrosselung oder dauerhafte Schäden verhindern kann.
Der Wert von 0h
in diesem Feld gibt an, dass vom Controller kein kritischer Temperaturschwellenwert gemeldet wird. Implementierungen, die mit NVMe Spec Version 1.2 oder höher kompatibel sind, sollten in diesem Feld einen Wert ungleich 0 melden.
MTFA
Gibt an, wie lange der Controller die Verarbeitung von Befehlen vorübergehend beendet, um das Firmwareimage zu aktivieren.
Dieses Feld ist gültig, wenn der Controller die Firmwareaktivierung ohne Reset unterstützt. Der MFTA-Wert wird in 100 Millisekundeneinheiten angegeben. Der Wert von 0h
gibt an, dass die maximale Zeit nicht definiert ist.
HMPRE
Gibt die bevorzugte Größe an, die der Host für das Feature Hostspeicherpuffer in Einheiten mit 4 KB zuweisen soll.
Dieser Wert muss größer oder gleich der Mindestgröße des Hostspeicherpuffers (HMMIN) sein.
Wenn dieses Feld ungleich 0 ist, wird das Feature Hostspeicherpuffer unterstützt. Wenn dieser Wert auf 0h
gelöscht wird, wird das Feature Hostspeicherpuffer nicht unterstützt.
HMMIN
Gibt die Mindestgröße an, die der Host für die Hostspeicherpufferfunktion in Einheiten von 4 KB zuweisen soll.
Wenn dieser Wert auf 0
gelöscht wird, wird der Host aufgefordert, eine beliebige Menge an Hostspeicher zuzuweisen, die bis zum HMPRE-Wert möglich ist.
TNVMCAP[16]
Gibt die gesamt NVM-Kapazität des NVM-Subsystems in Bytes an.
Dieses Feld wird unterstützt, wenn die Befehle Namespaceverwaltung und Namespaceanlage unterstützt werden.
UNVMCAP[16]
Gibt die nicht zugeordnete NVM-Kapazität des NVM-Subsystems in Bytes an.
Dieses Feld wird unterstützt, wenn die Befehle Namespaceverwaltung und Namespaceanlage unterstützt werden.
RPMBS
Eine RPMBS-Struktur (Replay Protected Memory Block Support) mit Feldern, die angeben, ob der Controller einen oder mehrere RPMBs (Replay Protected Memory Blocks) und die zugehörigen Funktionen unterstützt.
RPMBS.RPMBUnitCount
Gibt die Anzahl der vom Controller unterstützten RPMB-Ziele an.
Alle unterstützten PMB-Ziele (Geschützter Speicherblock) verfügen über die gleichen Funktionen wie im RPMBS-Feld definiert. Der Wert von 0h
gibt an, dass der Controller RPMBs nicht unterstützt. Wenn dieser Wert ungleich 0 ist, unterstützt der Controller die Befehle "Security Send" und "Security Receive".
RPMBS.AuthenticationMethod
Gibt die Authentifizierungsmethode an, die für den Zugriff auf alle replay Protected Memory Blocks (RPMBs) im Controller verwendet wird. Die Werte für dieses Feld sind:
Wert | Definition |
---|---|
000b | HMAC SHA-256 |
001b-111b | Reserviert |
RPMBS.Reserved0
Ein reserviertes Feld.
RPMBS.TotalSize
Gibt die Gesamtgröße der einzelnen RPMB an, die im Controller in Einheiten mit 128 KB unterstützt werden. Dies ist ein auf 0 basierender Wert. Der Wert von 0h
gibt eine Größe von 128 KB an.
RPMBS.AccessSize
Gibt die Größe an, die pro RPMB-Zugriff von den Befehlen "Security Send" oder "Security Receive" für diesen Controller in 512B-Einheiten gelesen oder geschrieben werden kann.
Dies ist ein auf 0 basierender Wert. Der Wert von 0h
gibt eine Größe von 512B an.
EDSTT
Gibt die Erweiterte Geräte-Selbsttestzeit (EDSTT) an.
DSTO
Gibt die Geräte-Selbsttestoptionen (DSTO) an.
FWUG
Gibt die Firmware Update Granularity (FWUG) an.
KAS
Gibt die Keep Alive-Unterstützung (KAS) an.
HCTMA
Eine HCTMA-Struktur (Host Controlled Thermal Management Attributes).
HCTMA.Supported
Gibt an, ob Host Controlled Thermal Management-Attribute unterstützt werden.
HCTMA.Reserved
Dieses HCTMA-Strukturfeld ist reserviert.
MNTMT
Minimale Temperatur des Wärmemanagements (MNTMT)
MXTMT
Maximale Temperatur des Wärmemanagements (MXTMT)
SANICAP
Funktionen desinfizieren (SANICAP)
SANICAP.CryptoErase
Controller unterstützt Crypto Erase Sanitize
SANICAP.BlockErase
Controller unterstützt Block Erase Desitize
SANICAP.Overwrite
Controller unterstützt Überschreiben von Santize
SANICAP.Reserved
SANICAP.NDI
SANICAP.NODMMAS
HMMINDS
HMMAXD
NSETIDMAX
NVM Set Identifier Maximum
ENDGIDMAX
ANATT
ANACAP
ANACAP.OptimizedState
ANACAP.NonOptimizedState
ANACAP.InaccessibleState
ANACAP.PersistentLossState
ANACAP.ChangeState
ANACAP.Reserved
ANACAP.StaticANAGRPID
ANACAP.SupportNonZeroANAGRPID
ANAGRPMAX
NANAGRPID
PELS
Reserved1[156]
Ein reserviertes Feld.
SQES
Eine SQES-Struktur (Submission Queue Entry Size) mit Feldern, die die erforderliche und maximale Eingangsgröße der Übermittlungswarteschlange angeben, wenn sie den NVM-Befehlssatz verwenden.
SQES.RequiredEntrySize
Bits 0:3 der SQES-Struktur geben die erforderliche Eingangsgröße der Übermittlungswarteschlange an, wenn sie den NVM-Befehlssatz verwenden.
Dies ist die Mindesteintragsgröße, die verwendet werden kann. Der Wert ist in Bytes und wird als Leistung von zwei (2^n) gemeldet. Der erforderliche Wert ist 6, was 64 Bytes entspricht.
SQES.MaxEntrySize
Bits 4:7 der SQES-Struktur geben die maximale Eingangsgröße der Übermittlungswarteschlange an, wenn sie den NVM-Befehlssatz verwenden.
Dieser Wert ist größer oder gleich dem SQES. RequiredEntrySize-Wert . Der Wert ist in Bytes und wird als Leistung von zwei (2^n) gemeldet. Der empfohlene Wert ist 6, was einer Standardmäßigen NVM-Befehlssatz-SQ-Eintragsgröße von 64 Bytes entspricht. Controller, die proprietäre Erweiterungen implementieren, unterstützen möglicherweise einen größeren Wert.
CQES
Eine CQES-Struktur (Completion Queue Entry Size) mit Feldern, die die erforderliche und maximale Eintragsgröße der Vervollständigungswarteschlange angeben, wenn sie den NVM-Befehlssatz verwenden.
CQES.RequiredEntrySize
Bits 0:3 der CQES-Struktur geben die erforderliche Eintragsgröße der Vervollständigungswarteschlange an, wenn sie den NVM-Befehlssatz verwenden.
Dies ist die Mindesteintragsgröße, die verwendet werden kann. Der Wert ist in Bytes und wird als Leistung von zwei (2^n) gemeldet. Der erforderliche Wert ist 4, was 16 Bytes entspricht.
CQES.MaxEntrySize
Bits 4:7 der CQES-Struktur geben die maximale Eingangsgröße der Vervollständigungswarteschlange an, wenn sie den NVM-Befehlssatz verwenden.
Dieser Wert ist größer oder gleich der erforderlichen CQ-Eintragsgröße. Der Wert ist in Bytes und wird als Leistung von zwei (2^n) gemeldet. Der empfohlene Wert ist 4, was einer Standardmäßigen NVM-Befehlssatz-CQ-Eintragsgröße von 16 Bytes entspricht. Controller, die proprietäre Erweiterungen implementieren, unterstützen möglicherweise einen größeren Wert.
MAXCMD
NN
Gibt die Anzahl der gültigen Namespaces an, die für den Controller vorhanden sind.
ONCS
Eine ONCS-Struktur (Optional NVM Command Support), die Felder enthält, die die optionalen NVM-Befehle und -Features angeben, die vom Controller unterstützt werden.
ONCS.Compare
Bit 0 der ONCS-Struktur gibt an, ob der Controller den Vergleichsbefehl unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller den Befehl Compare. Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller den Befehl Compare nicht.
ONCS.WriteUncorrectable
Bit 1 der ONCS-Struktur gibt an, ob der Controller den Befehl Write Uncorrectable unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller den Befehl Write Uncorrectable. Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller den Befehl Write Uncorrectable nicht.
ONCS.DatasetManagement
Bit 2 der ONCS-Struktur gibt an, ob der Controller den Befehl Datasetverwaltung unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller den Befehl Datasetverwaltung. Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller den Befehl Datasetverwaltung nicht.
ONCS.WriteZeroes
Bit 3 der ONCS-Struktur gibt an, ob der Controller den Befehl Null schreiben unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller den Befehl Nullen schreiben. Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller den Befehl Nullen schreiben nicht.
ONCS.FeatureField
Bit 4 der ONCS-Struktur gibt an, ob der Controller das Feld Speichern im Befehl Features festlegen und das Feld Auswählen im Befehl Features abrufen unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller das Feld Speichern im Befehl Features festlegen und das Feld Auswählen im Befehl Features abrufen.
Wenn dieser Wert auf 0
deaktiviert ist, unterstützt der Controller das Feld Speichern im Befehl Features festlegen und das Feld Auswählen im Befehl Features abrufen nicht.
ONCS.Reservations
Bit 5 der ONCS-Struktur gibt an, ob der Controller Reservierungen unterstützt.
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller Reservierungen und unterstützt auch die folgenden Befehle, die Reservierungen zugeordnet sind:
- Reservierungsbericht
- Reservierungsregistrierung
- Reservierungserwerb
- Reservierungsversion
Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller keine Reservierungen.
ONCS.Timestamp
Bit 6 der ONCS-Struktur gibt an, ob der Controller das Feature Timestamp (NVME_FEATURE_TIMESTAMP) unterstützt.
ONCS.Verify
ONCS.Reserved
Bits 7:15 der ONCS-Struktur sind reserviert.
FUSES
Eine FUSES-Struktur (Fused Operation Support), die Felder enthält, die die vom Controller unterstützten Fusionsvorgänge angeben.
FUSES.CompareAndWrite
Bit 0 der FUSES-Struktur gibt an, ob der Controller den Fusionsvorgang Vergleichen und Schreiben unterstützt.
Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller den Fusionsvorgang "Vergleichen und Schreiben" nicht. Compare ist der erste Befehl in der Sequenz.
FUSES.Reserved
Bits 15:1 der FUSES-Struktur sind reserviert.
FNA
Eine Format NVM Attributes (FNA)-Struktur, die Felder enthält, die Attribute für den Befehl Format NVM angeben.
FNA.FormatApplyToAll
Bit 0 der FNA-Struktur gibt an, ob der Formatvorgang für alle Namespaces gilt oder für einen bestimmten Namespace spezifisch ist.
Wenn dieser Wert auf 1
festgelegt ist, werden alle Namespaces mit den gleichen Attributen konfiguriert, und ein Format eines beliebigen Namespaces führt zu einem Format aller Namespaces.
Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller das Format pro Namespace.
FNA.SecureEraseApplyToAll
Bit 1 der FNA-Struktur gibt an, ob kryptografische Lösch- und Benutzerdatenlöschfunktionen für alle Namespaces gelten oder für einen bestimmten Namespace spezifisch sind.
Wenn dieser Wert auf 1
festgelegt ist, führt eine kryptografische Löschung eines bestimmten Namespace als Teil eines Formats zu einer kryptografischen Löschung aller Namespaces, und eine Benutzerdatenlöschung eines bestimmten Namespaces als Teil eines Formats führt zu einer Benutzerdatenlöschung aller Namespaces.
Wenn dieser Wert für 0
gelöscht wird, wird eine kryptografische Löschung oder die Löschung von Benutzerdaten als Teil eines Formats pro Namespace ausgeführt.
FNA.CryptographicEraseSupported
Bit 2 der FNA-Struktur gibt an, ob das kryptografische Löschen als Teil der Sicheren Löschfunktion unterstützt wird.
Wenn dieser Wert auf 1
festgelegt ist, wird das kryptografische Löschen unterstützt. Wenn dieser Wert für 0
gelöscht wird, wird das kryptografische Löschen nicht unterstützt.
FNA.FormatSupportNSIDAllF
FNA.Reserved
Bits 7:3 der FNA-Struktur sind reserviert.
VWC
Eine VWC-Struktur (Volatile Write Cache), die Felder enthält, die Attribute im Zusammenhang mit dem Vorhandensein eines flüchtigen Schreibcaches in der Implementierung angeben.
VWC.Present
Bit 0 der VWC-Struktur gibt an, dass ein flüchtiger Schreibcache vorhanden ist.
Wenn dieser Wert auf 1
festgelegt ist, ist ein flüchtiger Schreibcache vorhanden, und der Host gibt möglicherweise Leerungsbefehle aus und steuert, ob der flüchtige Schreibcache aktiviert ist, indem der Befehl Features festlegen den NVME_FEATURE_VOLATILE_WRITE_CACHE Featurebezeichner angibt.
Wenn dieser Wert in 0
gelöscht wird, ist kein flüchtiger Schreibcache vorhanden.
Wenn kein flüchtiger Schreibcache vorhanden ist, werden die Leerungsbefehle erfolgreich abgeschlossen und haben keine Auswirkung, und der Befehl Features festlegen mit dem NVME_FEATURE_VOLATILE_WRITE_CACHE Bezeichnersatz schlägt mit einer status von NVME_STATUS_INVALID_FIELD_IN_COMMAND fehl, und Features mit dem NVME_FEATURE_VOLATILE_WRITE_CACHE Bezeichnersatz abrufen schlägt mit einer status von NVME_STATUS_INVALID_FIELD_IN_COMMAND fehl.
VWC.FlushBehavior
VWC.Reserved
Bits 1:7 der VWC-Struktur sind reserviert.
AWUN
Gibt die Größe des Schreibvorgangs an, der während des normalen Betriebs in allen Namespaces mit jedem unterstützten Namespaceformat atomar in den NVM geschrieben wird. Dieses Feld wird in logischen Blöcken angegeben und ist ein wert von 0.
Wenn ein bestimmter Namespace eine größere Größe garantiert, als in diesem Feld gemeldet wird, wird diese namespacespezifische Größe im Feld NAWUN der Datenstruktur Namespace identifizieren gemeldet.
Wenn ein Schreibbefehl mit einer Größe übermittelt wird, die kleiner oder gleich dem AWUN-Wert ist, wird dem Host garantiert, dass der Schreibbefehl für den NVM in Bezug auf andere Lese- oder Schreibbefehle atomar ist. Wenn ein Schreibbefehl mit einer Größe übermittelt wird, die größer als der AWUN-Wert ist, gibt es keine Garantie für die Atomarität von Befehlen.
Der AWUN-Wert ist nicht auf Schreibfehler anwendbar, die durch Einen Stromausfall verursacht werden. Weitere Informationen finden Sie im Feld Atomic Write Unit Power Fail (AWUPF).
Der Wert gibt FFFFh
an, dass alle Befehle atomar sind, da dies die größte Befehlsgröße ist. Implementierungen sollten mindestens 128 KB unterstützen, die entsprechend der Größe des logischen Blockzugriffs (Logical Block Access, LBA) skaliert werden.
AWUPF
Gibt die Größe des Schreibvorgangs an, der garantiert atomar in den NVM über alle Namespaces mit einem beliebigen unterstützten Namespaceformat geschrieben wird, während ein Stromfehler oder eine Fehlerbedingung auftritt. Dieses Feld wird in logischen Blöcken angegeben und ist ein wert von 0.
Wenn ein bestimmter Namespace eine größere Größe garantiert, als in diesem Feld gemeldet wird, wird diese namespacespezifische Größe im Feld NAWUPF in der Datenstruktur Namespace identifizieren gemeldet. Der AWUPF-Wert muss kleiner oder gleich dem AWUN-Wert sein.
Wenn ein Schreibbefehl mit einer Größe übermittelt wird, die kleiner oder gleich dem AWUPF-Wert ist, wird dem Host garantiert, dass der Schreibvorgang für den NVM in Bezug auf andere Lese- oder Schreibbefehle atomar ist. Wenn ein Schreibbefehl übermittelt wird, der größer als diese Größe ist, gibt es keine Garantie für die Atomarität von Befehlen. Wenn die Schreibgröße kleiner oder gleich dem AWUPF-Wert ist und der Schreibbefehl fehlschlägt, geben nachfolgende Lesebefehle für die zugeordneten logischen Blöcke Daten aus dem vorherigen erfolgreichen Schreibbefehl zurück.
Wenn ein Schreibbefehl mit einer Größe übermittelt wird, die größer als der AWUPF-Wert ist, gibt es keine Garantie für Daten, die bei nachfolgenden Lesevorgängen der zugeordneten logischen Blöcke zurückgegeben werden.
NVSCC
Eine NVM Vendor Specific Command Configuration (NVSCC)-Struktur, die Felder enthält, die die Konfigurationseinstellungen für die nvm vendor specific command handling angeben.
NVSCC.CommandFormatInSpec
Bit 0 der NVSCC-Struktur gibt an, ob alle NVM-anbieterspezifischen Befehle das in Abbildung 13 definierte Format verwenden.
Wenn dieser Wert auf 1
festgelegt ist, verwenden alle NVM-anbieterspezifischen Befehle das in Abbildung 13 definierte Format. Wenn dieser Wert für 0
gelöscht wird, gibt dies an, dass das Format aller NVM-anbieterspezifischen Befehle herstellerspezifisch ist.
NVSCC.Reserved
Bits 1:7 der NVSCC-Struktur sind reserviert.
NWPC
NWPC.WriteProtect
NWPC.UntilPowerCycle
NWPC.Permanent
NWPC.Reserved
ACWU
Gibt die Größe des Schreibvorgangs an, der garantiert atomar in den NVM über alle Namespaces mit einem beliebigen unterstützten Namespaceformat für einen fusionierten Vergleichs- und Schreibvorgang geschrieben wird.
Wenn ein bestimmter Namespace eine größere Größe garantiert, als in diesem Feld gemeldet wird, wird diese namespacespezifische Größe im FELD NACWU in der Datenstruktur Namespace identifizieren gemeldet.
Dieses Feld wird unterstützt, wenn der Befehl "Vergleichen und Schreiben" unterstützt wird. Dieses Feld wird in logischen Blöcken angegeben und ist ein wert von 0. Wenn ein Vergleichs- und Schreibvorgang gesendet wird, der eine Übertragungsgröße anfordert, die größer als dieser Wert ist, schlägt der Controller möglicherweise den Befehl mit einem status NVME_STATUS_INVALID_FIELD_IN_COMMAND fehl.
Wenn Vergleichen und Schreiben kein unterstützter Fusionsbefehl ist, lautet 0h
der Wert dieses Felds .
Reserved4[2]
Ein reserviertes Feld.
SGLS
Eine SGLS-Struktur (SGLS), die Felder enthält, die angeben, ob Scatter Gather Listen (SGL) für den NVM-Befehlssatz und die unterstützten SGL-Typen unterstützt werden.
SGLS.SGLSupported
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller SGLs für den NVM-Befehlssatz, einschließlich der Deskriptortypen SGL-Datenblock, SGL-Segment und SGL Last Segment. Wenn dieser Wert für 0
gelöscht wird, unterstützt der Controller keine SGLs für den NVM-Befehlssatz, und alle anderen Bits in diesem Feld werden in 0
gelöscht.
SGLS.KeyedSGLData
SGLS.Reserved0
Ein reserviertes Feld.
SGLS.BitBucketDescrSupported
Wenn dieser Wert auf 1
festgelegt ist, wird der SGL Bit Bucket-Deskriptor unterstützt. Wenn dieser Wert in 0
gelöscht wird, wird der SGL Bit Bucket-Deskriptor nicht unterstützt.
SGLS.ByteAlignedContiguousPhysicalBuffer
Wenn dieser Wert auf 1
festgelegt ist, wird die Verwendung eines bytebündigen zusammenhängenden physischen Metadatenpuffers (das Feld Metadatenzeiger in Abbildung 12) unterstützt. Wenn dieser Wert für 0
gelöscht wird, wird die Verwendung eines bytebündigen zusammenhängenden physischen Puffers von Metadaten nicht unterstützt.
SGLS.SGLLengthLargerThanDataLength
Wenn dieser Wert auf 1
festgelegt ist, unterstützt der Controller Befehle, die eine Daten- oder Metadaten-SGL-Länge enthalten, die größer als die zu übertragende Datenmenge ist. Wenn dieser Wert für 0
gelöscht wird, entspricht die SGL-Länge der zu übertragenden Datenmenge.
SGLS.MPTRSGLDescriptor
SGLS.AddressFieldSGLDataBlock
SGLS.TransportSGLData
SGLS.Reserved1
Ein reserviertes Feld.
MNAN
Reserved6[224]
Bytes 704:2047 sind für E/A-Befehlssatzattribute reserviert.
SUBNQN[256]
Reserved7[768]
Reserved8[256]
PDS[32]
Enthält ein Array von 32 Power State-Deskriptoren. Jeder Member des Arrays ist ein 32-Bit-Feld, das die Merkmale eines Power State Descriptors angibt. Das Format dieses Felds wird in der NVME_POWER_STATE_DESC-Struktur definiert.
Die nullbasierte Position einer Struktur im Array entspricht dem Namen des Power State Descriptors, sodass sich Power State 0 Descriptor (PSD0) an Position 0 befindet, Power State 1 Descriptor (PSD1) an Position 1 und so weiter, bis Power State 31 Descriptor (PSD31) an Position 31.
VS[1024]
Bytes 3072:4095 werden für die anbieterspezifische Nutzung zugeordnet.
Hinweise
Die Werte der Felder VID, SN und MN können kombiniert werden, um einen global eindeutigen Wert zu bilden, der das NVM-Subsystem identifiziert.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 |
Kopfzeile | nvme.h |