Partager via


structure NVME_IDENTIFY_CONTROLLER_DATA (nvme.h)

Contient des valeurs qui indiquent les fonctionnalités du contrôleur, les fonctionnalités, les attributs de 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;

Members

VID

Contient l’identificateur du fournisseur d’entreprise affecté par l’interconnexion des composants périphériques - Groupe d’intérêts spéciaux (PCI-SIG).

SSVID

Contient l’identificateur du fournisseur d’entreprise affecté par l'PCI-SIG pour le sous-système.

SN[20]

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

MN[40]

Contient le numéro de modèle pour le sous-système NVM affecté 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 avec la commande Get Log Page.

RAB

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

IEEE[3]

Contient l’identificateur unique de l’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 de contrôleur et de partage d’espaces de noms (CMIC) qui spécifie les fonctionnalités d’E/S multipath et de partage d’espace de noms du sous-système du contrôleur et de la machine virtuelle réseau.

CMIC.MultiPCIePorts

Bit 0 de la structure CMIC .

Lorsque cette valeur est définie 1, le sous-système NVM peut contenir deux ports PCI Express physiques ou plus. Lorsque la valeur est effacée 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 1, le sous-système NVM peut contenir deux contrôleurs ou plus. Lorsque la valeur est effacée 0, le sous-système NVM contient un seul contrôleur.

CMIC.SRIOV

Bit 2 de la structure CMIC .

Lorsque cette valeur est définie 1, le contrôleur est associé à une virtualisation d’E/S racine unique (SR-IOV) Virtual Function. Lorsque la valeur est effacée 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 du 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 état de NVME_STATUS_INVALID_FIELD_IN_COMMAND.

La valeur de ce champ est en unités de la taille minimale de la page mémoire spécifiée dans le champ MPSMIN de la structure des capacités du contrôleur , et est signalée sous la forme d’une puissance de deux (2^n). Une valeur indiquant qu’aucune restriction n’est 0h appliquée à la taille du transfert. La restriction inclut les métadonnées si elles sont entrelacées avec les données de bloc logique.

Si les descripteurs de compartiment de bits SGL sont pris en charge, leurs longueurs sont incluses dans la détermination si une commande dépasse la taille maximale du 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 de transfert de données maximale.

CNTLID

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

VER

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

Les implémentations conformes à la spécification NVMe version 1.2 ou ultérieure signalent une valeur non nulle dans ce champ.

RTD3R

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

Les implémentations conformes à la spécification NVMe version 1.2 ou ultérieure signalent une valeur non nulle dans ce champ.

RTD3E

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

Les implémentations conformes à la spécification NVMe version 1.2 ou ultérieure signalent une valeur non nulle 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 1, le contrôleur prend en charge l’envoi de l’événement Namespace Attribute Changed. Lorsque cette valeur est effacée 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 1, le contrôleur prend en charge l’envoi de l’événement d’activation du microprogramme. Lorsque cette valeur est effacée 0, le contrôleur ne prend pas en charge l’événement d’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 CTRATT (Controller Attributes) contenant les informations d’attribut du 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é à la gestion NVMe.

OACS

Structure de prise en charge facultative des commandes d’administration (OACS) contenant des champs qui indiquent les commandes d’administration 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 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 0, le contrôleur ne prend pas en charge les commandes Security Send and Security Receive.

OACS.FormatNVM

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

Lorsque cette valeur est définie 1, le contrôleur prend en charge la commande Format NVM. Lorsque cette valeur est effacée 0, le 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 de validation du microprogramme et de téléchargement d’images du microprogramme.

Lorsque cette valeur est définie 1, le contrôleur prend en charge les commandes de validation du microprogramme et de téléchargement d’images du microprogramme. Lorsque cette valeur est effacée 0, le contrôleur ne prend pas en charge les commandes de validation du microprogramme et de 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 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 0, le 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 et de réception de directive 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 Abort en attente simultanée 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 Abort en attente simultanément.

AERL

Indique le nombre maximal de commandes de demande d’événement asynchrone en attente simultanée 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énement asynchrone en attente simultanément.

FRMW

Structure de mises à jour de microprogramme (FRMW) contenant des champs qui indiquent des 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 1sur , le premier emplacement du microprogramme (emplacement 1) est en lecture seule. Lorsque cette valeur est effacée 0, le premier emplacement du microprogramme (emplacement 1) est en lecture/écriture. Les implémentations peuvent choisir d’avoir une image de microprogramme en lecture seule en lecture 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 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 1, le contrôleur prend en charge l’activation du microprogramme sans réinitialisation. Lorsque cette valeur est effacée 0, le contrôleur nécessite une réinitialisation pour que le microprogramme soit activé.

FRMW.Reserved

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

LPA

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

LPA.SmartPagePerNamespace

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

Lorsque cette valeur est définie 1, le contrôleur prend en charge la page du journal des informations SMART/Health par espace de noms. Lorsque cette valeur est effacée 0, le contrôleur ne prend pas en charge la page du journal des informations SMART/Health 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 Effets de commande.

Lorsque cette valeur est définie 1, le contrôleur prend en charge la page du journal Effets de commande. Lorsque cette valeur est effacée 0, le contrôleur ne prend pas en charge la page du journal 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 la page de journal.

LPA.TelemetrySupport

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

LPA.PersistentEventLog

LPA.Reserved0

LPA.TelemetryDataArea4

LPA.Reserved1

ELPE

Indique le nombre d’entrées du journal des informations d’erreur 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 de base de 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, l’état d’alimentation 0) et peut prendre en charge jusqu’à 31 états d’alimentation supplémentaires, pour un total de 32.

AVSCC

Structure AVSCC (Admin Vendor Specific Command Configuration) contenant les champs qui indiquent les paramètres de configuration pour la gestion des commandes spécifiques du fournisseur d’administration.

AVSCC.CommandFormatInSpec

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

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

AVSCC.Reserved

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

APSTA

Structure APSTA (Autonomous Power State Transition Attributes) contenant les 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 autonome.

Lorsque cette valeur est définie 1, le contrôleur prend en charge les transitions d’état d’alimentation autonome. Lorsque cette valeur est effacée 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.

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

Une valeur de ce champ indique qu’aucune 0h valeur de seuil de 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 non nulle dans ce champ. Il est recommandé que les implémentations signalent une valeur dans 0157h ce champ.

CCTEMP

Indique la valeur minimale du champ Température composite (signalée dans le journal SMART/Health Information ) qui indique une condition de surchauffe critique. Par exemple, une condition qui peut empêcher une opération normale continue, la possibilité de perte de données, l’arrêt automatique de l’appareil, une limitation extrême des performances ou des dommages permanents.

Une valeur de ce champ indique qu’aucune 0h valeur de seuil de température critique n’est signalée par le contrôleur. Les implémentations conformes à NVMe Spec version 1.2 ou ultérieure doivent signaler une valeur non nulle 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 100 millisecondes. Une valeur indiquant 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 pour 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 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 pour la fonctionnalité mémoire tampon de l’hôte en unités de 4 Ko.

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

TNVMCAP[16]

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

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

UNVMCAP[16]

Indique la capacité 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èces jointes 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 prises en charge (bloc de mémoire protégée) ont les mêmes fonctionnalités que celles définies dans le champ RPMBS . Une valeur indiquant 0h que le contrôleur ne prend pas en charge les rpmBs. Si cette valeur n’est pas zéro, le contrôleur prend en charge les commandes Security Send and Security Receive.

RPMBS.AuthenticationMethod

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

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

RPMBS.Reserved0

Champ réservé.

RPMBS.TotalSize

Indique la taille totale de chaque RPMB prise en charge dans le contrôleur en unités de 128 Ko. Il s’agit d’une valeur de base de 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 Security Send ou Security Receive pour ce contrôleur en unités de 512B.

Il s’agit d’une valeur de base de 0. Une valeur indiquant 0h une taille de 512B.

EDSTT

Indique le temps de test automatique 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 l’assainissement de l’effacement de chiffrement

SANICAP.BlockErase

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

SANICAP.Overwrite

Le contrôleur prend en charge Overwrite 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]

Champ réservé.

SQES

Structure SQES (Submission Queue Entry Size) contenant les 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 minimale d’entrée qui peut être utilisée. La valeur est en octets et est signalée sous la forme d’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 maximale d’entrée de file d’attente de soumission 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 sous la forme d’une puissance de deux (2^n). La valeur recommandée est 6, correspondant à une taille d’entrée SQ de jeu de commandes NVM standard de 64 octets. Les contrôleurs qui implémentent des extensions propriétaires peuvent prendre en charge une valeur plus importante.

CQES

Structure CQES (Completion Queue Entry Size) contenant les 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 minimale d’entrée qui peut être utilisée. La valeur est en octets et est signalée sous la forme d’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 maximale d’entrée de file d’attente d’achèvement 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 sous la forme d’une puissance de deux (2^n). La valeur recommandée est 4, correspondant à une taille d’entrée CQ 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 importante.

MAXCMD

NN

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

ONCS

Structure de prise en charge des commandes NVM facultative (ONCS) contenant des champs qui indiquent les commandes et fonctionnalités 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 1, le contrôleur prend en charge la commande Comparer. Lorsque cette valeur est effacée 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 1, le contrôleur prend en charge la commande Write Uncorrectable. Lorsque cette valeur est effacée 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 des jeux de données.

Lorsque cette valeur est définie 1, le contrôleur prend en charge la commande Gestion du jeu de données. Lorsque cette valeur est effacée 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 1, le contrôleur prend en charge la commande Write Zeroes. Lorsque cette valeur est effacée 0, le contrôleur ne prend pas en charge la commande Write Zeroes.

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 1, 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 effacée 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 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 des réservations
  • Acquisition de réservation
  • Mise en production de réservation

Lorsque cette valeur est effacée 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 que le contrôleur prend en charge.

FUSES.CompareAndWrite

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

Lorsque cette valeur est effacée 0, le contrôleur ne prend pas en charge l’opération de comparaison et d’écriture fusionnée. La comparaison 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 D’attributs NVM (Format NVM) contenant des champs qui indiquent des attributs pour 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 1, tous les espaces de noms sont configurés avec les mêmes attributs et un format d’espace de noms entraîne un format de tous les espaces de noms. Lorsque cette valeur est effacée 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 1sur , 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 l’effacement des données utilisateur de tous les espaces de noms. Lorsque cette valeur est effacée 0, une effacement de chiffrement ou une effacement des données utilisateur dans le cadre d’un format est effectuée 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ée.

Lorsque cette valeur est définie 1sur , l’effacement de chiffrement est pris en charge. Lorsque cette valeur est effacée 0, l’effacement de 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 les 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 1sur , 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 Set Features spécifiant l’identificateur de fonctionnalité NVME_FEATURE_VOLATILE_WRITE_CACHE .

Lorsque cette valeur est effacée 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 l’état 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 l’état 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 d’être écrite atomiquement dans la machine virtuelle réseau sur tous les espaces de noms avec n’importe quel format d’espace de noms pris en charge pendant l’opération normale. Ce champ est spécifié dans les blocs logiques et est une valeur de base de 0.

Si un espace de noms spécifique garantit une taille supérieure à celle signalé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 réseau par rapport à d’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é des commandes.

La valeur AWUN n’a aucune applicabilité pour écrire des erreurs causées par une panne d’alimentation. Pour plus d’informations, consultez le champ AWUPF (Atomic Write Unit Power Fail).

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

AWUPF

Indique la taille de l’opération d’écriture garantie d’être écrite atomiquement dans la machine virtuelle réseau sur tous les espaces de noms avec n’importe quel format d’espace de noms pris en charge lors d’un échec d’alimentation ou d’une condition d’erreur. Ce champ est spécifié dans les blocs logiques et est une valeur de base de 0.

Si un espace de noms spécifique garantit une taille supérieure à celle signalé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 est soumise supérieure à cette taille, il n’existe 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’existe aucune garantie de données retournées lors des lectures suivantes des blocs logiques associés.

NVSCC

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

NVSCC.CommandFormatInSpec

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

Lorsque cette valeur est définie 1sur , toutes les commandes spécifiques du fournisseur de machine virtuelle NVM utilisent le format défini dans la figure 13. Lorsque cette valeur est effacée 0, elle indique que le format de toutes les commandes spécifiques du fournisseur de machine virtuelle réseau 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 d’être écrite atomiquement dans la machine virtuelle réseau dans tous les espaces de noms avec n’importe quel format d’espace de noms pris en charge pour une opération de comparaison et d’écriture fusionnée.

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

Ce champ est pris en charge si la commande Comparer et écrire fusionnée est prise en charge. Ce champ est spécifié dans les blocs logiques et est une valeur de base de 0. Si une comparaison et une écriture sont envoyées qui demandent une taille de transfert supérieure à cette valeur, le contrôleur peut échouer à la commande avec l’état de NVME_STATUS_INVALID_FIELD_IN_COMMAND.

Si Compare and Write n’est pas une commande fusionnée prise en charge, la valeur de ce champ est 0h.

Reserved4[2]

Champ réservé.

SGLS

Structure SGL Support (SGLS) contenant des champs qui spécifient si les listes de collecte de points (SGL) sont prises en charge pour le jeu de commandes NVM et les types SGL pris en charge.

SGLS.SGLSupported

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

SGLS.KeyedSGLData

SGLS.Reserved0

Champ réservé.

SGLS.BitBucketDescrSupported

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

SGLS.ByteAlignedContiguousPhysicalBuffer

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

SGLS.SGLLengthLargerThanDataLength

Lorsque cette valeur est définie 1, le contrôleur prend en charge les commandes qui contiennent des données ou des métadonnées SGL d’une longueur supérieure à la quantité de données à transférer. Lorsque cette valeur est effacée 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 pour les attributs d’ensemble de commandes d’E/S.

SUBNQN[256]

Reserved7[768]

Reserved8[256]

PDS[32]

Contient un tableau de descripteurs d’état d’alimentation 32. 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 Power State, de sorte que Power State 0 Descriptor (PSD0) est à la position 0, Power State 1 Descriptor (PSD1) est à la position 1, et ainsi de suite, jusqu’à Power State 31 Descriptor (PSD31) à la position 31.

VS[1024]

Les octets 3072:4095 sont alloués pour une utilisation spécifique du 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.

Spécifications

Requirement Valeur
Client minimum requis Windows 10
Header nvme.h