structure NVME_IDENTIFY_CONTROLLER_DATA (nvme.h)

Contient des valeurs qui indiquent les fonctionnalités du contrôleur, les caractéristiques, les attributs du jeu de commandes et les descripteurs d’état d’alimentation.

Syntaxe

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;

Membres

VID

Contient l’identificateur du fournisseur de l’entreprise attribué par le pci-SIG (Peripheral Component Interconnect - Special Interest Group).

SSVID

Contient l’identificateur du fournisseur de l’entreprise attribué par le PCI-SIG pour le sous-système.

SN[20]

Contient le numéro de série du sous-système NVM attribué par le fournisseur en tant que chaîne ASCII.

MN[40]

Contient le numéro de modèle du sous-système NVM attribué par le fournisseur en tant que chaîne ASCII.

FR[8]

Contient la révision du microprogramme actuellement active pour le sous-système NVM.

Il s’agit des mêmes informations de révision du microprogramme dans le NVME_FIRMWARE_SLOT_INFO_LOG qui peuvent être récupérées à l’aide de la commande Obtenir la page du journal.

RAB

Contient la taille de rafale d’arbitrage recommandée.

IEEE[3]

Contient l’identificateur unique d’organisation (OUI) pour le fournisseur du contrôleur.

Oui est un identificateur attribué IEEE/RAC valide qui peut être inscrit à l’adresse http://standards.ieee.org/develop/regauth/oui/public.html.

CMIC

Structure D’E/S multi-chemin d’accès et de partage d’espaces de noms (CMIC) du contrôleur qui spécifie les fonctionnalités d’E/S multi-chemin et de partage d’espaces de noms du sous-système contrôleur et NVM.

CMIC.MultiPCIePorts

Bit 0 de la structure CMIC .

Lorsque cette valeur est définie sur 1, le sous-système NVM peut contenir au moins deux ports PCI Express physiques. Lorsque la valeur est effacée en 0, le sous-système NVM contient un seul port PCI Express.

CMIC.MultiControllers

Bit 1 de la structure CMIC .

Lorsque cette valeur est définie sur 1, le sous-système NVM peut contenir au moins deux contrôleurs. Lorsque la valeur est effacée , 0le sous-système NVM contient un seul contrôleur.

CMIC.SRIOV

Bit 2 de la structure CMIC .

Lorsque cette valeur est définie sur 1, le contrôleur est associé à une fonction virtuelle de virtualisation d’E/S mono-racine (SR-IOV). Lorsque la valeur est effacée en 0, le contrôleur est associé à une fonction PCI.

CMIC.ANAR

CMIC.Reserved

Les bits 3 :7 de la structure CMIC sont réservés.

MDTS

Indique la taille maximale de transfert de données entre l’hôte et le contrôleur.

L’hôte ne doit pas envoyer de commande qui dépasse cette taille de transfert. Si une commande est envoyée qui dépasse la taille de transfert, la commande est abandonnée avec un status de NVME_STATUS_INVALID_FIELD_IN_COMMAND.

La valeur de ce champ est en unités de la taille minimale de page mémoire spécifiée dans le champ MPSMIN de la structure Des fonctionnalités du contrôleur et est signalée sous la forme d’une puissance de deux (2^n). La valeur de indique aucune restriction sur la taille du 0h transfert. La restriction inclut les métadonnées si elle est entrelacée avec les données de blocs logiques.

Si les descripteurs de compartiment de bits SGL sont pris en charge, leurs longueurs sont incluses pour déterminer si une commande dépasse la taille maximale de transfert de données pour les mémoires tampons de données de destination. Leur longueur dans une mémoire tampon de données source n’est pas incluse pour un calcul de taille maximale de transfert de données.

CNTLID

Contient l’identificateur unique du contrôleur du sous-système NVM associé au contrôleur.

VER

Contient la valeur signalée dans le registre version, définie dans le champ VS de la structure NVME_CONTROLLER_REGISTERS .

Les implémentations qui sont conformes à la spécification NVMe version 1.2 ou ultérieure signalent une valeur autre que zéro dans ce champ.

RTD3R

Indique la latence typique en microsecondes lors de la reprise à partir du runtime D3 (RTD3).

Les implémentations qui sont conformes à la spécification NVMe version 1.2 ou ultérieure signalent une valeur autre que zéro dans ce champ.

RTD3E

Indique la latence classique en microsecondes pour entrer dans le runtime D3 (RTD3).

Les implémentations qui sont conformes à la spécification NVMe version 1.2 ou ultérieure signalent une valeur autre que zéro dans ce champ.

OAES

Structure OAES (Optional Asynchrone Events Supported) contenant des champs qui indiquent si les événements asynchrones facultatifs sont pris en charge par le contrôleur.

Un contrôleur ne doit pas envoyer d’événements asynchrones facultatifs avant qu’ils ne soient activés par le logiciel hôte.

OAES.Reserved0

Les bits 10 :31 de la structure OAES sont réservés.

OAES.NamespaceAttributeChanged

Bit 8 de la structure OAES .

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge l’envoi de l’événement Namespace Attribute Changed. Lorsque cette valeur est effacée en 0, le contrôleur ne prend pas en charge l’événement Namespace Attribute Changed.

OAES.FirmwareActivation

Bit 9 de la structure OAES .

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge l’envoi de l’événement Activation du microprogramme. Lorsque cette valeur est effacée en 0, le contrôleur ne prend pas en charge l’événement Activation du microprogramme.

OAES.Reserved1

Les bits 0 :7 de la structure OAES sont réservés.

OAES.AsymmetricAccessChanged

OAES.PredictableLatencyAggregateLogChanged

OAES.LbaStatusChanged

OAES.EnduranceGroupAggregateLogChanged

OAES.Reserved2

OAES.ZoneInformation

OAES.Reserved3

CTRATT

Structure des attributs de contrôleur (CTRATT) contenant des informations d’attribut de contrôleur.

CTRATT.HostIdentifier128Bit

Bit 32 de la structure CTRATT contenant un identificateur d’hôte 128 bits.

CTRATT.NOPSPMode

Bit 31 de la structure CTRATT contenant des informations sur l’état d’alimentation non opérationnel (NOPS).

CTRATT.NVMSets

Bit 30 de la structure CTRATT contenant des informations sur les jeux de commandes NVM.

CTRATT.ReadRecoveryLevels

Bit 29 de la structure CTRATT contenant des informations sur les niveaux de récupération en lecture.

CTRATT.EnduranceGroups

Bit 28 de la structure CTRATT contenant des informations sur les niveaux des groupes d’endurance.

CTRATT.PredictableLatencyMode

CTRATT.TBKAS

CTRATT.NamespaceGranularity

CTRATT.SQAssociations

CTRATT.UUIDList

CTRATT.Reserved0

Les bits 0 :27 de la structure CTRATT sont réservés.

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]

Champ réservé de 140 octets.

CNTRLTYPE

FGUID[16]

CRDT1

CRDT2

CRDT3

Reserved0_1[106]

ReservedForManagement[16]

Réservé à NVMe Management.

OACS

Structure OACS (Optional Administration Command Support) contenant des champs qui indiquent les Administration commandes facultatives prises en charge par le contrôleur.

OACS.SecurityCommands

Le bit 0 de la structure OACS indique si le contrôleur prend en charge les commandes d’envoi de sécurité et de réception de sécurité.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge les commandes d’envoi de sécurité et de réception de sécurité. Lorsque cette valeur est effacée en 0, le contrôleur ne prend pas en charge les commandes d’envoi de sécurité et de réception de sécurité.

OACS.FormatNVM

Le bit 1 de la structure OACS indique si le contrôleur prend en charge la commande Format NVM.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge la commande Format NVM. Lorsque cette valeur est effacée, 0le contrôleur ne prend pas en charge la commande Format NVM.

OACS.FirmwareCommands

Le bit 2 de la structure OACS indique si le contrôleur prend en charge les commandes Commit du microprogramme et Firmware Image Download.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge les commandes Validation du microprogramme et Téléchargement d’images du microprogramme. Lorsque cette valeur est effacée, 0le contrôleur ne prend pas en charge les commandes Validation du microprogramme et Téléchargement d’images du microprogramme.

OACS.NamespaceCommands

Le bit 3 de la structure OACS indique si le contrôleur prend en charge les commandes Gestion des espaces de noms et Pièce jointe d’espace de noms.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge les commandes Gestion des espaces de noms et Pièce jointe d’espace de noms. Lorsque cette valeur est effacée, 0le contrôleur ne prend pas en charge les commandes Gestion des espaces de noms et Pièce jointe d’espace de noms.

OACS.DeviceSelfTest

Le bit 4 de la structure OACS indique si le contrôleur prend en charge la commande Device Self Test.

OACS.Directives

Le bit 5 de la structure OACS indique si le contrôleur prend en charge les commandes d’envoi de directive et de réception de directive.

OACS.NVMeMICommands

OACS.VirtualizationMgmt

OACS.DoorBellBufferConfig

OACS.GetLBAStatus

OACS.Reserved

Bits 6 :15 : sont réservés.

ACL

Indique le nombre maximal de commandes d’abandon en attente simultanées prises en charge par le contrôleur.

Il s’agit d’une valeur de base de 0. Les implémentations doivent prendre en charge au moins quatre commandes d’abandon en cours simultanément.

AERL

Indique le nombre maximal de commandes de demande d’événements asynchrones en attente simultanées prises en charge par le contrôleur.

Il s’agit d’une valeur de base de 0. Les implémentations doivent prendre en charge au moins quatre commandes de demande d’événements asynchrones en cours simultanément.

FRMW

Structure de microprogramme Mises à jour (FRMW) contenant des champs qui indiquent les fonctionnalités relatives aux mises à jour du microprogramme.

FRMW.Slot1ReadOnly

Le bit 0 de la structure FRMW indique si le premier emplacement du microprogramme (emplacement 1) est en lecture seule.

Lorsque cette valeur est définie sur 1, le premier emplacement du microprogramme (emplacement 1) est en lecture seule. Lorsque cette valeur est effacée, 0le premier emplacement du microprogramme (emplacement 1) est en lecture/écriture. Les implémentations peuvent choisir d’avoir une image de microprogramme en lecture seule de base.

FRMW.SlotCount

Les bits 1 :3 de la structure FRMW indiquent le nombre d’emplacements de microprogramme pris en charge par le contrôleur.

Ce champ spécifie une valeur comprise entre un et sept, indiquant qu’au moins un emplacement de microprogramme est pris en charge et jusqu’à sept au maximum. Cela correspond aux emplacements de microprogramme 1 à 7.

FRMW.ActivationWithoutReset

Le bit 4 de la structure FRMW indique si le contrôleur prend en charge l’activation du microprogramme sans réinitialisation.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge l’activation du microprogramme sans réinitialisation. Lorsque cette valeur est effacée, 0le contrôleur nécessite une réinitialisation pour l’activation du microprogramme.

FRMW.Reserved

Les bits 5 :7 de la structure FRMW sont réservés.

LPA

Structure LPA (Log Page Attributes) contenant des champs qui indiquent des attributs facultatifs pour les pages de journal accessibles à l’aide de la commande Obtenir la page de journal .

LPA.SmartPagePerNamespace

Le bit 0 de la structure LPA indique si le contrôleur prend en charge la page du journal des informations SMART/Intégrité par espace de noms.

Lorsque cette valeur est définie 1sur , le contrôleur prend en charge la page smart/journal des informations d’intégrité par espace de noms. Lorsque cette valeur est effacée sur 0, le contrôleur ne prend pas en charge la page du journal d’informations SMART/Intégrité par espace de noms.

LPA.CommandEffectsLog

Le bit 1 de la structure LPA indique si le contrôleur prend en charge la page du journal Des effets de commande.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge la page journal Des effets de commande. Lorsque cette valeur est désactivée sur 0, le contrôleur ne prend pas en charge la page du journal Des effets de commande.

LPA.LogPageExtendedData

Le bit 2 de la structure LPA indique si le contrôleur prend en charge les données étendues de page de journal.

LPA.TelemetrySupport

Le bit 3 de la structure LPA indique si le contrôleur prend en charge la télémétrie.

LPA.PersistentEventLog

LPA.Reserved0

LPA.TelemetryDataArea4

LPA.Reserved1

ELPE

Indique le nombre d’entrées de journal d’informations sur les erreurs stockées par le contrôleur. Ce champ est une valeur basée sur 0.

NPSS

Indique le nombre d’états d’alimentation NVM Express pris en charge par le contrôleur. Il s’agit d’une valeur basée sur 0.

Les états d’alimentation sont numérotés séquentiellement à partir de l’état d’alimentation 0. Un contrôleur doit prendre en charge au moins un état d’alimentation (par exemple, état d’alimentation 0) et peut prendre en charge jusqu’à 31 états d’alimentation supplémentaires, pour un total de 32.

AVSCC

Structure Administration configuration de commande spécifique du fournisseur (AVSCC) contenant des champs qui indiquent les paramètres de configuration pour Administration gestion des commandes spécifiques au fournisseur.

AVSCC.CommandFormatInSpec

Le bit 0 de la structure AVSCC indique si toutes les commandes spécifiques Administration fournisseur utilisent le format de commande défini dans la structure NVME_COMMAND.

Lorsque cette valeur est effacée en 0, elle indique que le format de toutes les commandes spécifiques du fournisseur Administration sont spécifiques au fournisseur. Lorsque cette valeur est définie sur 1, elle indique que toutes les commandes spécifiques Administration fournisseur utilisent la structure NVME_COMMAND.

AVSCC.Reserved

Les bits 1 :7 de la structure AVSCC sont réservés.

APSTA

Une structure APSTA (Power State Transition Attributes) autonome contenant des champs qui indiquent les attributs de la fonctionnalité de transition d’état d’alimentation autonome.

APSTA.Supported

Le bit 0 de la structure APSTA indique si le contrôleur prend en charge les transitions d’état d’alimentation autonomes.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge les transitions d’état d’alimentation autonomes. Lorsque cette valeur est effacée sur 0, le contrôleur ne prend pas en charge les transitions d’état d’alimentation autonome.

APSTA.Reserved

Les bits 1 :7 de la structure APSTA sont réservés.

WCTEMP

Indique la valeur minimale du champ Température composite (signalée dans le journal SMART/Health Information qui indique une condition de surchauffe pendant laquelle l’opération du contrôleur se poursuit.

Une correction immédiate est recommandée (par exemple, un refroidissement supplémentaire ou une réduction de la charge de travail). La plateforme doit s’efforcer de maintenir une température composite inférieure à cette valeur.

La valeur dans ce champ indique qu’aucune valeur de seuil de 0h température d’avertissement n’est signalée par le contrôleur. Les implémentations conformes à NVMe Spec version 1.2 ou ultérieure doivent signaler une valeur différente de zéro dans ce champ. Il est recommandé que les implémentations indiquent une valeur de 0157h dans ce champ.

CCTEMP

Indique la valeur minimale du champ Température composite (signalée dans le [SMART / Health Information](ns-nvme-nvme_health_info_log.md log) qui indique une condition critique de surchauffe. Par exemple, une condition qui peut empêcher le fonctionnement normal continu, la possibilité de perte de données, l’arrêt automatique de l’appareil, la limitation extrême des performances ou des dommages permanents.

Une valeur de 0h dans ce champ indique qu’aucune valeur de seuil critique de température n’est signalée par le contrôleur. Les implémentations conformes à NVMe Spec version 1.2 ou ultérieure doivent signaler une valeur différente de zéro dans ce champ.

MTFA

Indique la durée maximale pendant laquelle le contrôleur arrête temporairement le traitement des commandes pour activer l’image du microprogramme.

Ce champ est valide si le contrôleur prend en charge l’activation du microprogramme sans réinitialisation. La valeur MFTA est spécifiée en unités de 100 millisecondes. La valeur indique 0h que la durée maximale n’est pas définie.

HMPRE

Indique la taille préférée que l’hôte doit allouer à la fonctionnalité Mémoire tampon de l’hôte en unités de 4 Ko.

Cette valeur doit être supérieure ou égale à la taille minimale de mémoire tampon de l’hôte (HMMIN).

Si ce champ n’est pas égal à zéro, la fonctionnalité Mémoire tampon de l’hôte est prise en charge. Lorsque cette valeur est effacée sur 0h, la fonctionnalité Mémoire tampon de l’hôte n’est pas prise en charge.

HMMIN

Indique la taille minimale que l’hôte doit allouer à la fonctionnalité Mémoire tampon de l’hôte en unités de 4 Ko.

Lorsque cette valeur est effacée sur 0, l’hôte est invité à allouer toute quantité de mémoire hôte possible jusqu’à la valeur HMPRE .

TNVMCAP[16]

Indique la capacité totale de la machine virtuelle NVM, en octets, du sous-système NVM.

Ce champ est pris en charge si les commandes Gestion des espaces de noms et Pièce jointe d’espace de noms sont prises en charge.

UNVMCAP[16]

Indique la capacité de machine virtuelle NVM non allouée, en octets, du sous-système NVM.

Ce champ est pris en charge si les commandes Gestion des espaces de noms et Pièce jointe d’espace de noms sont prises en charge.

RPMBS

Structure rpmbs (Replay Protected Memory Block Support) contenant des champs qui indiquent si le contrôleur prend en charge un ou plusieurs blocs de mémoire protégés par relecture (RPMB) et les fonctionnalités associées.

RPMBS.RPMBUnitCount

Indique le nombre de cibles RPMB que le contrôleur prend en charge.

Toutes les cibles PMB (bloc de mémoire protégée) prises en charge ont les mêmes fonctionnalités que celles définies dans le champ RPMBS . La valeur indique 0h que le contrôleur ne prend pas en charge les RPMB. Si cette valeur n’est pas égale à zéro, le contrôleur prend en charge les commandes Security Send et Security Receive.

RPMBS.AuthenticationMethod

Indique la méthode d’authentification utilisée pour accéder à tous les blocs de mémoire protégés (RPMB) de relecture dans le contrôleur. Les valeurs de ce champ sont les suivantes :

Valeur Définition
000b HMAC SHA-256
001b-111b Réservé

RPMBS.Reserved0

Champ réservé.

RPMBS.TotalSize

Indique la taille totale de chaque RPMB pris en charge dans le contrôleur, en unités de 128 Ko. Il s’agit d’une valeur basée sur 0. La valeur indique 0h une taille de 128 Ko.

RPMBS.AccessSize

Indique la taille qui peut être lue ou écrite par accès RPMB par les commandes d’envoi de sécurité ou de réception de sécurité pour ce contrôleur en unités 512B.

Il s’agit d’une valeur basée sur 0. La valeur indique 0h une taille de 512B.

EDSTT

Indique le temps d’auto-test de l’appareil étendu (EDSTT).

DSTO

Indique les options d’auto-test de l’appareil (DSTO).

FWUG

Indique la granularité de mise à jour du microprogramme (FWUG).

KAS

Indique la prise en charge keep alive (KAS).

HCTMA

Structure HCTMA (Host Controlled Thermal Management Attributes).

HCTMA.Supported

Indique si les attributs de gestion thermique contrôlée par l’hôte sont pris en charge.

HCTMA.Reserved

Ce champ de structure HCTMA est réservé.

MNTMT

Température minimale de gestion thermique (MNTMT)

MXTMT

Température maximale de gestion thermique (MXTMT)

SANICAP

Fonctionnalités d’assainissement (SANICAP)

SANICAP.CryptoErase

Le contrôleur prend en charge Crypto Erase Sanitize

SANICAP.BlockErase

Le contrôleur prend en charge l’effacement de bloc de nettoyage

SANICAP.Overwrite

Le contrôleur prend en charge le remplacement de Santize

SANICAP.Reserved

SANICAP.NDI

SANICAP.NODMMAS

HMMINDS

HMMAXD

NSETIDMAX

Valeur maximale de l’identificateur du jeu de machines virtuelles

ENDGIDMAX

ANATT

ANACAP

ANACAP.OptimizedState

ANACAP.NonOptimizedState

ANACAP.InaccessibleState

ANACAP.PersistentLossState

ANACAP.ChangeState

ANACAP.Reserved

ANACAP.StaticANAGRPID

ANACAP.SupportNonZeroANAGRPID

ANAGRPMAX

NANAGRPID

PELS

Reserved1[156]

Champ réservé.

SQES

Structure SQES (Submission Queue Entry Size) contenant des champs qui indiquent la taille d’entrée de file d’attente de soumission requise et maximale lors de l’utilisation du jeu de commandes NVM.

SQES.RequiredEntrySize

Les bits 0 :3 de la structure SQES indiquent la taille d’entrée de file d’attente de soumission requise lors de l’utilisation du jeu de commandes NVM.

Il s’agit de la taille d’entrée minimale qui peut être utilisée. La valeur est en octets et est signalée comme une puissance de deux (2^n). La valeur requise est 6, ce qui correspond à 64 octets.

SQES.MaxEntrySize

Les bits 4 :7 de la structure SQES indiquent la taille d’entrée de file d’attente de soumission maximale lors de l’utilisation du jeu de commandes NVM.

Cette valeur est supérieure ou égale à SQES. Valeur RequiredEntrySize . La valeur est en octets et est signalée comme une puissance de deux (2^n). La valeur recommandée est 6, correspondant à une taille d’entrée SQ standard du jeu de commandes NVM de 64 octets. Les contrôleurs qui implémentent des extensions propriétaires peuvent prendre en charge une valeur plus élevée.

CQES

Structure CQES (Completion Queue Entry Size) contenant des champs qui indiquent la taille d’entrée de file d’attente d’achèvement requise et maximale lors de l’utilisation du jeu de commandes NVM.

CQES.RequiredEntrySize

Les bits 0 :3 de la structure CQES indiquent la taille d’entrée de file d’attente d’achèvement requise lors de l’utilisation du jeu de commandes NVM.

Il s’agit de la taille d’entrée minimale qui peut être utilisée. La valeur est en octets et est signalée comme une puissance de deux (2^n). La valeur requise est 4, ce qui correspond à 16 octets.

CQES.MaxEntrySize

Les bits 4 :7 de la structure CQES indiquent la taille d’entrée de file d’attente d’achèvement maximale lors de l’utilisation du jeu de commandes NVM.

Cette valeur est supérieure ou égale à la taille d’entrée CQ requise. La valeur est en octets et est signalée comme une puissance de deux (2^n). La valeur recommandée est 4, ce qui correspond à une taille d’entrée de jeu de commandes NVM standard de 16 octets. Les contrôleurs qui implémentent des extensions propriétaires peuvent prendre en charge une valeur plus élevée.

MAXCMD

NN

Indique le nombre d’espaces de noms valides présents pour le contrôleur.

ONCS

Structure ONCS (Optional NVM Command Support) contenant des champs qui indiquent les fonctionnalités et commandes NVM facultatives prises en charge par le contrôleur.

ONCS.Compare

Le bit 0 de la structure ONCS indique si le contrôleur prend en charge la commande Comparer.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge la commande Comparer. Lorsque cette valeur est désactivée sur 0, le contrôleur ne prend pas en charge la commande Comparer.

ONCS.WriteUncorrectable

Le bit 1 de la structure ONCS indique si le contrôleur prend en charge la commande Write Uncorrectable.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge la commande Write Uncorrectable. Lorsque cette valeur est désactivée sur 0, le contrôleur ne prend pas en charge la commande Write Uncorrectable.

ONCS.DatasetManagement

Le bit 2 de la structure ONCS indique si le contrôleur prend en charge la commande Gestion du jeu de données.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge la commande Gestion du jeu de données. Lorsque cette valeur est désactivée sur 0, le contrôleur ne prend pas en charge la commande Gestion du jeu de données.

ONCS.WriteZeroes

Le bit 3 de la structure ONCS indique si le contrôleur prend en charge la commande Write Zeroes.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge la commande Écrire des zéros. Lorsque cette valeur est désactivée sur 0, le contrôleur ne prend pas en charge la commande Écrire des zéros.

ONCS.FeatureField

Le bit 4 de la structure ONCS indique si le contrôleur prend en charge le champ Enregistrer dans la commande Définir les fonctionnalités et le champ Sélectionner dans la commande Obtenir les fonctionnalités.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge le champ Enregistrer dans la commande Définir des fonctionnalités et le champ Sélectionner dans la commande Obtenir les fonctionnalités. Lorsque cette valeur est désactivée sur 0, le contrôleur ne prend pas en charge le champ Enregistrer dans la commande Définir les fonctionnalités et le champ Sélectionner dans la commande Obtenir les fonctionnalités.

ONCS.Reservations

Le bit 5 de la structure ONCS indique si le contrôleur prend en charge les réservations.

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge les réservations et prend également en charge les commandes suivantes associées aux réservations :

  • Rapport de réservation
  • Registre de réservation
  • Acquisition de réservation
  • Version de réservation

Lorsque cette valeur est effacée sur 0, le contrôleur ne prend pas en charge les réservations.

ONCS.Timestamp

Le bit 6 de la structure ONCS indique si le contrôleur prend en charge la fonctionnalité Timestamp (NVME_FEATURE_TIMESTAMP).

ONCS.Verify

ONCS.Reserved

Les bits 7 :15 de la structure ONCS sont réservés.

FUSES

Structure FUSES (Fused Operation Support) contenant des champs qui indiquent les opérations fusionnées prises en charge par le contrôleur.

FUSES.CompareAndWrite

Le bit 0 de la structure FUSES indique si le contrôleur prend en charge l’opération fusionnée Comparer et écrire.

Lorsque cette valeur est effacée sur 0, le contrôleur ne prend pas en charge l’opération fusionnée Comparer et écrire. Comparer sera la première commande de la séquence.

FUSES.Reserved

Les bits 15 :1 de la structure FUSES sont réservés.

FNA

Structure FNA (Format NVM Attributes) contenant des champs qui indiquent les attributs de la commande Format NVM .

FNA.FormatApplyToAll

Le bit 0 de la structure FNA indique si l’opération de format s’applique à tous les espaces de noms ou est spécifique à un espace de noms particulier.

Lorsque cette valeur est définie sur 1, tous les espaces de noms sont configurés avec les mêmes attributs et un format de n’importe quel espace de noms entraîne un format de tous les espaces de noms. Lorsque cette valeur est effacée en 0, le contrôleur prend en charge le format par espace de noms.

FNA.SecureEraseApplyToAll

Le bit 1 de la structure FNA indique si la fonctionnalité d’effacement de chiffrement et d’effacement des données utilisateur s’applique à tous les espaces de noms ou est spécifique à un espace de noms particulier.

Lorsque cette valeur est définie sur 1, une effacement de chiffrement d’un espace de noms particulier dans le cadre d’un format entraîne une effacement de chiffrement de tous les espaces de noms, et une effacement des données utilisateur d’un espace de noms particulier dans le cadre d’un format entraîne une effacement des données utilisateur de tous les espaces de noms. Lorsque cette valeur est effacée en 0, une effacement de chiffrement ou une effacement des données utilisateur dans le cadre d’un format est effectué par espace de noms.

FNA.CryptographicEraseSupported

Le bit 2 de la structure FNA indique si l’effacement de chiffrement est pris en charge dans le cadre de la fonctionnalité d’effacement sécurisé.

Lorsque cette valeur est définie sur 1, l’effacement de chiffrement est pris en charge. Lorsque cette valeur est effacée en , l’effacement 0de chiffrement n’est pas pris en charge.

FNA.FormatSupportNSIDAllF

FNA.Reserved

Les bits 7 :3 de la structure FNA sont réservés.

VWC

Structure VWC (Volatile Write Cache) contenant des champs qui indiquent des attributs liés à la présence d’un cache d’écriture volatile dans l’implémentation.

VWC.Present

Le bit 0 de la structure VWC indique qu’un cache d’écriture volatile est présent.

Lorsque cette valeur est définie sur 1, un cache d’écriture volatile est présent et l’hôte peut émettre des commandes de vidage et contrôler si le cache d’écriture volatile est activé avec la commande Définir les fonctionnalités spécifiant l’identificateur de fonctionnalité NVME_FEATURE_VOLATILE_WRITE_CACHE .

Lorsque cette valeur est effacée sur 0, un cache d’écriture volatile n’est pas présent.

Lorsqu’un cache d’écriture volatile n’est pas présent, les commandes de vidage se terminent correctement et n’ont aucun effet, et la commande Définir les fonctionnalités avec le jeu d’identificateurs de NVME_FEATURE_VOLATILE_WRITE_CACHE échoue avec un status de NVME_STATUS_INVALID_FIELD_IN_COMMAND, et Obtenir des fonctionnalités avec le jeu d’identificateurs de NVME_FEATURE_VOLATILE_WRITE_CACHE échoue avec une status de NVME_STATUS_INVALID_FIELD_IN_COMMAND.

VWC.FlushBehavior

VWC.Reserved

Les bits 1 :7 de la structure VWC sont réservés.

AWUN

Indique la taille de l’opération d’écriture garantie pour être écrite atomiquement sur la machine virtuelle NVM sur tous les espaces de noms avec n’importe quel format d’espace de noms pris en charge pendant le fonctionnement normal. Ce champ est spécifié dans des blocs logiques et est une valeur basée sur 0.

Si un espace de noms spécifique garantit une taille supérieure à celle indiquée dans ce champ, cette taille spécifique à l’espace de noms est signalée dans le champ NAWUN de la structure de données Identifier l’espace de noms .

Si une commande d’écriture est envoyée avec une taille inférieure ou égale à la valeur AWUN , l’hôte est garanti que la commande d’écriture est atomique à la machine virtuelle NVM par rapport aux autres commandes de lecture ou d’écriture. Si une commande d’écriture est envoyée avec une taille supérieure à la valeur AWUN , il n’existe aucune garantie d’atomicité de la commande.

La valeur AWUN n’est pas applicable aux erreurs d’écriture provoquées par une panne de courant. Pour plus d’informations, consultez le champ Atomic Write Unit Power Fail (AWUPF).

La valeur indique que toutes les commandes sont atomiques, car il s’agit de FFFFh la plus grande taille de commande. Les implémentations doivent prendre en charge un minimum de 128 Ko, mis à l’échelle de manière appropriée en fonction de la taille de l’accès par bloc logique (LBA).

AWUPF

Indique la taille de l’opération d’écriture garantie pour être écrite atomiquement sur la machine virtuelle NVM sur tous les espaces de noms avec n’importe quel format d’espace de noms pris en charge pendant une panne d’alimentation ou une condition d’erreur. Ce champ est spécifié dans des blocs logiques et est une valeur basée sur 0.

Si un espace de noms spécifique garantit une taille supérieure à celle indiquée dans ce champ, cette taille spécifique à l’espace de noms est signalée dans le champ NAWUPF de la structure de données Identifier l’espace de noms . La valeur AWUPF doit être inférieure ou égale à la valeur AWUN .

Si une commande d’écriture est envoyée avec une taille inférieure ou égale à la valeur AWUPF , l’hôte est garanti que l’écriture est atomique à la machine virtuelle NVM par rapport à d’autres commandes de lecture ou d’écriture. Si une commande d’écriture supérieure à cette taille est envoyée, il n’y a aucune garantie d’atomicité de commande. Si la taille d’écriture est inférieure ou égale à la valeur AWUPF et que la commande d’écriture échoue, les commandes de lecture suivantes pour les blocs logiques associés retournent les données de la commande d’écriture réussie précédente.

Si une commande d’écriture est envoyée avec une taille supérieure à la valeur AWUPF , il n’y a aucune garantie que les données sont retournées lors des lectures suivantes des blocs logiques associés.

NVSCC

Structure NVSCC (NVM Vendor Specific Command Configuration) contenant des champs qui indiquent les paramètres de configuration pour la gestion des commandes spécifiques au fournisseur NVM.

NVSCC.CommandFormatInSpec

Le bit 0 de la structure NVSCC indique si toutes les commandes spécifiques au fournisseur NVM utilisent le format défini à la figure 13.

Lorsque cette valeur est définie sur , toutes les commandes spécifiques au 1fournisseur NVM utilisent le format défini à la figure 13. Lorsque cette valeur est effacée sur , elle indique que le format de toutes les commandes spécifiques au 0fournisseur NVM est spécifique au fournisseur.

NVSCC.Reserved

Les bits 1 :7 de la structure NVSCC sont réservés.

NWPC

NWPC.WriteProtect

NWPC.UntilPowerCycle

NWPC.Permanent

NWPC.Reserved

ACWU

Indique la taille de l’opération d’écriture garantie pour être écrite atomiquement dans la machine virtuelle NVM sur tous les espaces de noms avec n’importe quel format d’espace de noms pris en charge pour une opération fusionnée Comparer et écrire.

Si un espace de noms spécifique garantit une taille supérieure à celle indiquée dans ce champ, cette taille spécifique à l’espace de noms est signalée dans le champ NACWU de la structure de données Identifier l’espace de noms .

Ce champ sera pris en charge si la commande fusionnée Comparer et écrire est prise en charge. Ce champ est spécifié dans des blocs logiques et est une valeur basée sur 0. Si un objet Comparer et Écrire est envoyé qui demande une taille de transfert supérieure à cette valeur, le contrôleur peut échouer à la commande avec un status de NVME_STATUS_INVALID_FIELD_IN_COMMAND.

Si Comparer et Écrire n’est pas une commande fusionnée prise en charge, la valeur de ce champ est 0h.

Reserved4[2]

Champ réservé.

SGLS

Structure SGLS (SGLS) contenant des champs qui spécifient si les Listes de collecte de points (SGL) sont pris en charge pour l’ensemble de commandes NVM et les types SGL pris en charge.

SGLS.SGLSupported

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge les listes DEG pour le jeu de commandes NVM, y compris les types de descripteurs SGL Data Block, SGL Segment et SGL Last Segment. Lorsque cette valeur est effacée sur 0, le contrôleur ne prend pas en charge les sgL pour l’ensemble de commandes NVM et tous les autres bits de ce champ sont effacés en 0.

SGLS.KeyedSGLData

SGLS.Reserved0

Champ réservé.

SGLS.BitBucketDescrSupported

Lorsque cette valeur est définie sur 1, le descripteur de compartiment de bits SGL est pris en charge. Lorsque cette valeur est effacée en 0, le descripteur de compartiment de bits SGL n’est pas pris en charge.

SGLS.ByteAlignedContiguousPhysicalBuffer

Lorsque cette valeur est définie sur 1, l’utilisation d’une mémoire tampon physique contiguë alignée sur les octets de métadonnées (le champ Pointeur de métadonnées de la figure 12) est prise en charge. Lorsque cette valeur est effacée à 0, l’utilisation d’une mémoire tampon physique contiguë alignée sur octets de métadonnées n’est pas prise en charge.

SGLS.SGLLengthLargerThanDataLength

Lorsque cette valeur est définie sur 1, le contrôleur prend en charge les commandes qui contiennent un SGL de données ou de métadonnées d’une longueur supérieure à la quantité de données à transférer. Lorsque cette valeur est effacée sur 0, la longueur SGL est égale à la quantité de données à transférer.

SGLS.MPTRSGLDescriptor

SGLS.AddressFieldSGLDataBlock

SGLS.TransportSGLData

SGLS.Reserved1

Champ réservé.

MNAN

Reserved6[224]

Les octets 704 :2047 sont réservés aux attributs du jeu de commandes d’E/S.

SUBNQN[256]

Reserved7[768]

Reserved8[256]

PDS[32]

Contient un tableau de 32 descripteurs d’état d’alimentation. Chaque membre du tableau est un champ 32 bits qui indique les caractéristiques d’un descripteur Power State. Le format de ce champ est défini dans la structure NVME_POWER_STATE_DESC .

La position de base zéro d’une structure dans le tableau correspond au nom du descripteur d’état d’alimentation, de sorte que le descripteur Power State 0 (PSD0) se trouve à la position 0, que le descripteur Power State 1 (PSD1) est à la position 1, et ainsi de suite, jusqu’à Power State 31 Descriptor (PSD31) en position 31.

VS[1024]

Les octets 3072 :4095 sont alloués pour une utilisation spécifique au fournisseur.

Remarques

Les valeurs des champs VID, SN et MN peuvent être combinées pour former une valeur globale unique qui identifie le sous-système NVM.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
En-tête nvme.h