struttura NVME_IDENTIFY_CONTROLLER_DATA (nvme.h)

Contiene valori che indicano funzionalità del controller, funzionalità, attributi del set di comandi e descrittori di stato di alimentazione.

Sintassi

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

Contiene l'identificatore del fornitore dell'azienda assegnato dall'interconnessione dei componenti periferici - Gruppo di interesse speciale (PCI-SIG).

SSVID

Contiene l'identificatore del fornitore della società assegnato da PCI-SIG per il sottosistema.

SN[20]

Contiene il numero di serie per il sottosistema NVM assegnato dal fornitore come stringa ASCII.

MN[40]

Contiene il numero di modello per il sottosistema NVM assegnato dal fornitore come stringa ASCII.

FR[8]

Contiene la revisione del firmware attualmente attiva per il sottosistema NVM.

Si tratta delle stesse informazioni di revisione del firmware nel NVME_FIRMWARE_SLOT_INFO_LOG che è possibile recuperare con il comando Recupera pagina log.

RAB

Contiene le dimensioni consigliate per il burst di arbitrato.

IEEE[3]

Contiene l'identificatore univoco dell'organizzazione (OUI) per il fornitore del controller.

L'OUI è un identificatore assegnato IEEE/RAC valido che può essere registrato in http://standards.ieee.org/develop/regauth/oui/public.html.

CMIC

Struttura CMIC (Controller Multi-Path I/O e Namespace Sharing Capabilities) che specifica le funzionalità di I/O multi-percorso e condivisione dello spazio dei nomi del controller e del sottosistema NVM.

CMIC.MultiPCIePorts

Bit 0 della struttura CMIC .

Quando questo valore è impostato su 1, il sottosistema NVM può contenere due o più porte PCI Express fisiche. Quando il valore viene cancellato in 0, il sottosistema NVM contiene una singola porta PCI Express.

CMIC.MultiControllers

Bit 1 della struttura CMIC .

Quando questo valore è impostato su 1, il sottosistema NVM può contenere due o più controller. Quando il valore viene cancellato in 0, il sottosistema NVM contiene un singolo controller.

CMIC.SRIOV

Bit 2 della struttura CMIC .

Quando questo valore è impostato su 1, il controller è associato a una funzione virtuale di I/O a radice singola (SR-IOV). Quando il valore viene cancellato in 0, il controller è associato a una funzione PCI.

CMIC.ANAR

CMIC.Reserved

I bit 3:7 della struttura CMIC sono riservati.

MDTS

Indica la dimensione massima del trasferimento dei dati tra l'host e il controller.

L'host non deve inviare un comando che supera questa dimensione di trasferimento. Se viene inviato un comando che supera le dimensioni di trasferimento, il comando viene interrotto con lo stato NVME_STATUS_INVALID_FIELD_IN_COMMAND.

Il valore di questo campo è espresso in unità delle dimensioni minime della pagina di memoria specificate nel campo MPSMIN della struttura Funzionalità controller e viene segnalato come potenza di due (2^n). Il valore indica nessuna restrizione per le dimensioni del 0h trasferimento. La restrizione include i metadati se è interleaved con i dati del blocco logico.

Se i descrittori bucket di bit SGL sono supportati, le relative lunghezze vengono incluse per determinare se un comando supera le dimensioni massime di trasferimento dati per i buffer di dati di destinazione. La lunghezza in un buffer di dati di origine non è inclusa per un calcolo delle dimensioni massime del trasferimento dati.

CNTLID

Contiene l'identificatore univoco del controller univoco del sottosistema NVM associato al controller.

VER

Contiene il valore riportato nel registro delle versioni, definito nel campo VS della struttura NVME_CONTROLLER_REGISTERS .

Le implementazioni conformi alla specifica NVMe versione 1.2 o successiva segnalano un valore diverso da zero in questo campo.

RTD3R

Indica la latenza tipica in microsecondi durante la ripresa dal runtime D3 (RTD3).

Le implementazioni conformi alla specifica NVMe versione 1.2 o successiva segnalano un valore diverso da zero in questo campo.

RTD3E

Indica la latenza tipica in microsecondi per immettere Runtime D3 (RTD3).

Le implementazioni conformi alla specifica NVMe versione 1.2 o successiva segnalano un valore diverso da zero in questo campo.

OAES

Struttura facoltativa di eventi asincroni supportati (OAES) contenente campi che indicano se gli eventi asincroni facoltativi sono supportati dal controller.

Un controller non deve inviare eventi asincroni facoltativi prima che siano abilitati dal software host.

OAES.Reserved0

I bit 10:31 della struttura OAES sono riservati.

OAES.NamespaceAttributeChanged

Bit 8 della struttura OAES .

Quando questo valore è impostato su 1, il controller supporta l'invio dell'evento Namespace Attribute Changed. Quando questo valore viene cancellato su 0, il controller non supporta l'evento Namespace Attribute Changed.

OAES.FirmwareActivation

Bit 9 della struttura OAES .

Quando questo valore è impostato su 1, il controller supporta l'invio dell'evento di attivazione del firmware. Quando questo valore viene cancellato su 0, il controller non supporta l'evento Di attivazione del firmware.

OAES.Reserved1

I bit 0:7 della struttura OAES sono riservati.

OAES.AsymmetricAccessChanged

OAES.PredictableLatencyAggregateLogChanged

OAES.LbaStatusChanged

OAES.EnduranceGroupAggregateLogChanged

OAES.Reserved2

OAES.ZoneInformation

OAES.Reserved3

CTRATT

Struttura CTRATT (Controller Attributes) contenente informazioni sugli attributi del controller.

CTRATT.HostIdentifier128Bit

Bit 32 della struttura CTRATT contenente un identificatore host a 128 bit.

CTRATT.NOPSPMode

Bit 31 della struttura CTRATT contenente informazioni sullo stato di alimentazione non operativa (NOPS).

CTRATT.NVMSets

Bit 30 della struttura CTRATT contenente informazioni sui set di comandi NVM.

CTRATT.ReadRecoveryLevels

Bit 29 della struttura CTRATT contenente informazioni sui livelli di ripristino di lettura.

CTRATT.EnduranceGroups

Bit 28 della struttura CTRATT contenente informazioni sui livelli dei gruppi di resistenza.

CTRATT.PredictableLatencyMode

CTRATT.TBKAS

CTRATT.NamespaceGranularity

CTRATT.SQAssociations

CTRATT.UUIDList

CTRATT.Reserved0

I bit 0:27 della struttura CTRATT sono riservati.

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]

Campo riservato di 140 byte.

CNTRLTYPE

FGUID[16]

CRDT1

CRDT2

CRDT3

Reserved0_1[106]

ReservedForManagement[16]

Riservato per la gestione NVMe.

OACS

Struttura OACS (Optional Amministrazione Command Support) contenente campi che indicano i comandi facoltativi Amministrazione supportati dal controller.

OACS.SecurityCommands

Bit 0 della struttura OACS indica se il controller supporta i comandi Security Send and Security Receive.

Quando questo valore è impostato su 1, il controller supporta i comandi Security Send and Security Receive. Quando questo valore viene cancellato su 0, il controller non supporta i comandi Security Send and Security Receive.

OACS.FormatNVM

Bit 1 della struttura OACS indica se il controller supporta il comando Format NVM.

Quando questo valore è impostato su 1, il controller supporta il comando Format NVM. Quando questo valore viene cancellato su 0, il controller non supporta il comando Format NVM.

OACS.FirmwareCommands

Bit 2 della struttura OACS indica se il controller supporta i comandi Firmware Commit e Firmware Image Download.

Quando questo valore è impostato su , il controller supporta i comandi Firmware Commit e Firmware Image Download.When this value is set to 1, the controller supports the Firmware Commit and Firmware Image Download commands. Quando questo valore viene cancellato su 0, il controller non supporta i comandi Firmware Commit e Firmware Image Download.

OACS.NamespaceCommands

Bit 3 della struttura OACS indica se il controller supporta i comandi Namespace Management e Namespace Attachment.

Quando questo valore è impostato su 1, il controller supporta i comandi Namespace Management e Namespace Attachment. Quando questo valore viene cancellato su 0, il controller non supporta i comandi Gestione spazio dei nomi e Allegati spazio dei nomi.

OACS.DeviceSelfTest

Bit 4 della struttura OACS indica se il controller supporta il comando Device Self Test.

OACS.Directives

Bit 5 della struttura OACS indica se il controller supporta i comandi di ricezione della direttiva Send and Directive.

OACS.NVMeMICommands

OACS.VirtualizationMgmt

OACS.DoorBellBufferConfig

OACS.GetLBAStatus

OACS.Reserved

Bit 6:15: sono riservati.

ACL

Indica il numero massimo di comandi abort in attesa simultanei supportati dal controller.

Si tratta di un valore basato su 0. Le implementazioni devono supportare contemporaneamente almeno quattro comandi abort in sospeso.

AERL

Indica il numero massimo di comandi di richiesta di evento asincrona in attesa simultaneamente supportati dal controller.

Si tratta di un valore basato su 0. Le implementazioni devono supportare contemporaneamente almeno quattro comandi di richiesta di evento asincrona in sospeso.

FRMW

Struttura firmware Aggiornamenti (FRMW) contenente campi che indicano funzionalità relative agli aggiornamenti del firmware.

FRMW.Slot1ReadOnly

Bit 0 della struttura FRMW indica se il primo slot del firmware (slot 1) è di sola lettura.

Quando questo valore è impostato su 1, il primo slot del firmware (slot 1) è di sola lettura. Quando questo valore viene cancellato su 0, il primo slot del firmware (slot 1) è di lettura/scrittura. Le implementazioni possono scegliere di avere un'immagine del firmware di sola lettura di base.

FRMW.SlotCount

I bit 1:3 della struttura FRMW indicano il numero di slot del firmware supportati dal controller.

Questo campo specifica un valore compreso tra uno e sette, a indicare che almeno uno slot del firmware è supportato e fino a sette massimo. Corrisponde agli slot firmware da 1 a 7.

FRMW.ActivationWithoutReset

Bit 4 della struttura FRMW indica se il controller supporta l'attivazione del firmware senza reimpostare.

Quando questo valore è impostato su 1, il controller supporta l'attivazione del firmware senza reimpostare. Quando questo valore viene cancellato su 0, il controller richiede un ripristino per l'attivazione del firmware.

FRMW.Reserved

I bit 5:7 della struttura FRMW sono riservati.

LPA

Struttura LPA (Log Page Attributes) contenente campi che indicano attributi facoltativi per le pagine di log a cui si accede tramite il comando Recupera pagina log .

LPA.SmartPagePerNamespace

Bit 0 della struttura LPA indica se il controller supporta la pagina del log delle informazioni smart/integrità per ogni spazio dei nomi.

Quando questo valore è impostato su 1, il controller supporta la pagina del log delle informazioni smart/integrità per ogni spazio dei nomi. Quando questo valore viene cancellato su 0, il controller non supporta la pagina del log delle informazioni smart/integrità per ogni spazio dei nomi.

LPA.CommandEffectsLog

Bit 1 della struttura LPA indica se il controller supporta la pagina del log degli effetti comando.

Quando questo valore è impostato su 1, il controller supporta la pagina log degli effetti comando. Quando questo valore viene cancellato in 0, il controller non supporta la pagina log degli effetti comando.

LPA.LogPageExtendedData

Bit 2 della struttura LPA indica se il controller supporta i dati estesi della pagina log.

LPA.TelemetrySupport

Bit 3 della struttura LPA indica se il controller supporta il supporto di telemetria.

LPA.PersistentEventLog

LPA.Reserved0

LPA.TelemetryDataArea4

LPA.Reserved1

ELPE

Indica il numero di voci del log delle informazioni sugli errori archiviate dal controller. Questo campo è un valore basato su 0.

NPSS

Indica il numero di stati di alimentazione NVM Express supportati dal controller. Si tratta di un valore basato su 0.

Gli stati di alimentazione vengono numerati in sequenza a partire dallo stato di alimentazione 0. Un controller deve supportare almeno uno stato di alimentazione (ad esempio, lo stato di alimentazione 0) e può supportare fino a 31 stati di alimentazione aggiuntivi, per un totale di 32.

AVSCC

Struttura Amministrazione Vendor Specific Command Configuration (AVSCC) contenente campi che indicano le impostazioni di configurazione per Amministrazione gestione dei comandi specifici del fornitore.

AVSCC.CommandFormatInSpec

Bit 0 della struttura AVSCC indica se tutti i comandi specifici del fornitore Amministrazione usano il formato di comando definito nella struttura NVME_COMMAND.

Quando questo valore viene cancellato in 0, indica che il formato di tutti i comandi specifici del fornitore Amministrazione sono specifici del fornitore. Quando questo valore è impostato su 1, indica che tutti i comandi specifici del fornitore Amministrazione useranno la struttura NVME_COMMAND.

AVSCC.Reserved

I bit 1:7 della struttura AVSCC sono riservati.

APSTA

Struttura apSTA (Autonomous Power State Transition Attributes) contenente campi che indicano gli attributi della funzionalità di transizione dello stato di alimentazione autonoma.

APSTA.Supported

Bit 0 della struttura APSTA indica se il controller supporta transizioni di stato di alimentazione autonome.

Quando questo valore è impostato su 1, il controller supporta transizioni di stato di alimentazione autonome. Quando questo valore viene cancellato in 0, il controller non supporta transizioni di stato di alimentazione autonome.

APSTA.Reserved

I bit 1:7 della struttura APSTA sono riservati.

WCTEMP

Indica il valore minimo del campo Temperatura composita (segnalato nel log informazioni smart/integrità che indica una condizione di surriscaldamento durante la quale l'operazione del controller continua.

È consigliabile correggere immediatamente (ad esempio, riduzione aggiuntiva del raffreddamento o del carico di lavoro). La piattaforma deve cercare di mantenere una temperatura composita al di sotto di questo valore.

Un valore di 0h in questo campo indica che non viene segnalato alcun valore soglia di temperatura di avviso dal controller. Le implementazioni conformi alla specifica NVMe versione 1.2 o successiva devono segnalare un valore diverso da zero in questo campo. È consigliabile che le implementazioni segnalano un valore di 0157h in questo campo.

CCTEMP

Indica il valore minimo del campo Temperatura composita (segnalato nel log [SMART/Health Information](ns-nvme-nvme_health_info_log.md log) che indica una condizione di surriscaldamento critica. Ad esempio, una condizione che può impedire un'operazione normale continua, possibilità di perdita di dati, arresto automatico del dispositivo, limitazione estrema delle prestazioni o danni permanenti.

Un valore di 0h in questo campo indica che non viene segnalato alcun valore di soglia di temperatura critica dal controller. Le implementazioni conformi alla specifica NVMe versione 1.2 o successiva devono segnalare un valore diverso da zero in questo campo.

MTFA

Indica il tempo massimo in cui il controller arresta temporaneamente i comandi di elaborazione per attivare l'immagine del firmware.

Questo campo è valido se il controller supporta l'attivazione del firmware senza reimpostare. Il valore MFTA viene specificato in 100 unità millisecondi. Valore di 0h indica che il tempo massimo non è definito.

HMPRE

Indica le dimensioni preferite che l'host deve allocare per la funzionalità Buffer memoria host in unità 4 KB.

Questo valore deve essere maggiore o uguale alla dimensione minima del buffer di memoria host (HMMIN).

Se questo campo non è zero, la funzionalità Buffer memoria host è supportata. Quando questo valore viene cancellato in 0h, la funzionalità Buffer memoria host non è supportata.

HMMIN

Indica le dimensioni minime che l'host deve allocare per la funzionalità Buffer memoria host in unità 4 KB.

Quando questo valore viene cancellato in 0, l'host viene richiesto di allocare qualsiasi quantità di memoria host possibile fino al valore HMPRE .

TNVMCAP[16]

Indica la capacità NVM totale, in byte, del sottosistema NVM.

Questo campo è supportato se sono supportati i comandi Gestione spazio dei nomi e Allegati spazio dei nomi.

UNVMCAP[16]

Indica la capacità NVM non associata, in byte, del sottosistema NVM.

Questo campo è supportato se sono supportati i comandi Gestione spazio dei nomi e Allegati spazio dei nomi.

RPMBS

Struttura di supporto per blocchi di memoria protetta (RPMBS) che contiene campi che indicano se il controller supporta uno o più blocchi di memoria protetti (RPMB) e le funzionalità associate.

RPMBS.RPMBUnitCount

Indica il numero di destinazioni RPMB supportate dal controller.

Tutte le destinazioni PMB supportate (blocco memoria protetta) hanno le stesse funzionalità definite nel campo RPMBS . Un valore di 0h indica che il controller non supporta IBS. Se questo valore è diverso da zero, il controller supporta i comandi Di ricezione di invio e sicurezza di sicurezza.

RPMBS.AuthenticationMethod

Indica il metodo di autenticazione usato per accedere a tutti i blocchi di memoria protetti di riproduzione (RPMB) nel controller. I valori per questo campo sono:

valore Definizione
000b HMAC SHA-256
001b-111b Riservato

RPMBS.Reserved0

Campo riservato.

RPMBS.TotalSize

Indica la dimensione totale di ogni RPMB supportata nel controller in unità 128 KB. Si tratta di un valore basato su 0. Un valore di indica una dimensione di 0h 128 KB.

RPMBS.AccessSize

Indica le dimensioni che possono essere lette o scritte per ogni accesso RPMB dai comandi Security Send o Security Receive per questo controller in 512B unità.

Si tratta di un valore basato su 0. Un valore di indica una dimensione pari 0h a 512B.

EDSTT

Indica l'ora di self-test del dispositivo estesa (EDSTT).

DSTO

Indica le opzioni self-test del dispositivo (DSTO).

FWUG

Indica la granularità dell'aggiornamento del firmware (FWUG).

KAS

Indica il supporto Keep Alive (KAS).

HCTMA

Struttura HCTMA (Host Controlled Thermal Management Attributes).

HCTMA.Supported

Indica se sono supportati gli attributi di Gestione termica controllata dall'host.

HCTMA.Reserved

Questo campo di struttura HCTMA è riservato.

MNTMT

Temperatura minima di gestione termica (MNTMT)

MXTMT

Temperatura massima di gestione termica (MXTMT)

SANICAP

Funzionalità di sanificazione (SANICAP)

SANICAP.CryptoErase

Il controller supporta la cancellazione di crittografia

SANICAP.BlockErase

Il controller supporta la cancellazione blocca la sanificazione

SANICAP.Overwrite

Il controller supporta Overwrite Santize

SANICAP.Reserved

SANICAP.NDI

SANICAP.NODMMAS

HMMINDS

HMMAXD

NSETIDMAX

Valore massimo dell'identificatore di set NVM

ENDGIDMAX

ANATT

ANACAP

ANACAP.OptimizedState

ANACAP.NonOptimizedState

ANACAP.InaccessibleState

ANACAP.PersistentLossState

ANACAP.ChangeState

ANACAP.Reserved

ANACAP.StaticANAGRPID

ANACAP.SupportNonZeroANAGRPID

ANAGRPMAX

NANAGRPID

PELS

Reserved1[156]

Campo riservato.

SQES

Struttura di dimensioni della coda di invio (SQES) contenente campi che indicano le dimensioni della voce della coda di invio richieste e massime quando si usa il set di comandi NVM.

SQES.RequiredEntrySize

I bit 0:3 della struttura SQES indicano le dimensioni necessarie della voce della coda di invio quando si usa il set di comandi NVM.

Questa è la dimensione minima della voce che può essere usata. Il valore è in byte e viene segnalato come potenza di due (2^n). Il valore richiesto è 6, che corrisponde a 64 byte.

SQES.MaxEntrySize

I bit 4:7 della struttura SQES indicano la dimensione massima della voce della coda di invio quando si usa il set di comandi NVM.

Questo valore è maggiore o uguale a SQES. Valore RequiredEntrySize . Il valore è in byte e viene segnalato come potenza di due (2^n). Il valore consigliato è 6, corrispondente a una dimensione della voce SQ del set di comandi NVM standard di 64 byte. I controller che implementano estensioni proprietarie possono supportare un valore maggiore.

CQES

Struttura CQES (Completion Queue Entry Size) contenente campi che indicano le dimensioni necessarie e massime della voce della coda di completamento quando si usa il set di comandi NVM.

CQES.RequiredEntrySize

I bit 0:3 della struttura CQES indicano le dimensioni della voce della coda di completamento necessarie quando si usa il set di comandi NVM.

Questa è la dimensione minima della voce che può essere usata. Il valore è in byte e viene segnalato come potenza di due (2^n). Il valore richiesto è 4, che corrisponde a 16 byte.

CQES.MaxEntrySize

I bit 4:7 della struttura CQES indicano la dimensione massima della voce della coda di completamento quando si usa il set di comandi NVM.

Questo valore è maggiore o uguale alla dimensione richiesta della voce CQ. Il valore è in byte e viene segnalato come potenza di due (2^n). Il valore consigliato è 4, corrispondente a una dimensione di voce del set di comandi NVM standard pari a 16 byte. I controller che implementano estensioni proprietarie possono supportare un valore maggiore.

MAXCMD

NN

Indica il numero di spazi dei nomi validi presenti per il controller.

ONCS

Struttura ONCS (Optional NVM Command Support) contenente campi che indicano i comandi e le funzionalità NVM facoltativi supportati dal controller.

ONCS.Compare

Bit 0 della struttura ONCS indica se il controller supporta il comando Compare.

Quando questo valore è impostato su 1, il controller supporta il comando Compare. Quando questo valore viene cancellato su 0, il controller non supporta il comando Compare.

ONCS.WriteUncorrectable

Bit 1 della struttura ONCS indica se il controller supporta il comando Write Uncorrectable.

Quando questo valore è impostato su 1, il controller supporta il comando Write Uncorrectable. Quando questo valore viene cancellato su 0, il controller non supporta il comando Write Uncorrectable.

ONCS.DatasetManagement

Bit 2 della struttura ONCS indica se il controller supporta il comando Gestione set di dati.

Quando questo valore è impostato su 1, il controller supporta il comando Gestione set di dati. Quando questo valore viene cancellato su 0, il controller non supporta il comando Gestione set di dati.

ONCS.WriteZeroes

Bit 3 della struttura ONCS indica se il controller supporta il comando Write Zeroes.

Quando questo valore è impostato su 1, il controller supporta il comando Write Zeroes. Quando questo valore viene cancellato su 0, il controller non supporta il comando Write Zeroes.

ONCS.FeatureField

Bit 4 della struttura ONCS indica se il controller supporta il campo Salva nel comando Imposta funzionalità e il campo Seleziona nel comando Ottieni funzionalità.

Quando questo valore è impostato su 1, il controller supporta il campo Salva nel comando Imposta funzionalità e il campo Seleziona nel comando Ottieni funzionalità. Quando questo valore viene cancellato su 0, il controller non supporta il campo Salva nel comando Imposta funzionalità e il campo Seleziona nel comando Ottieni funzionalità.

ONCS.Reservations

Bit 5 della struttura ONCS indica se il controller supporta le prenotazioni.

Quando questo valore è impostato su 1, il controller supporta le prenotazioni e supporta anche i comandi seguenti associati alle prenotazioni:

  • Report prenotazioni
  • Registrazione prenotazioni
  • Acquisizione di prenotazioni
  • Versione della prenotazione

Quando questo valore viene cancellato su 0, il controller non supporta le prenotazioni.

ONCS.Timestamp

Bit 6 della struttura ONCS indica se il controller supporta la funzionalità Timestamp (NVME_FEATURE_TIMESTAMP).

ONCS.Verify

ONCS.Reserved

I bit 7:15 della struttura ONCS sono riservati.

FUSES

Struttura fused Operation Support (FUSES) contenente campi che indicano le operazioni fuse supportate dal controller.

FUSES.CompareAndWrite

Bit 0 della struttura FUSES indica se il controller supporta l'operazione di confronto e scrittura fuse.

Quando questo valore viene cancellato su 0, il controller non supporta l'operazione Confronta e Scrivi fuso. Compare sarà il primo comando nella sequenza.

FUSES.Reserved

I bit 15:1 della struttura FUSES sono riservati.

FNA

Struttura Format NVM Attributes (FNA) contenente campi che indicano gli attributi per il comando Format NVM .

FNA.FormatApplyToAll

Bit 0 della struttura FNA indica se l'operazione di formato si applica a tutti gli spazi dei nomi o è specifica di uno spazio dei nomi specifico.

Quando questo valore è impostato su 1, tutti gli spazi dei nomi vengono configurati con gli stessi attributi e un formato di qualsiasi spazio dei nomi restituisce un formato di tutti gli spazi dei nomi. Quando questo valore viene cancellato su 0, il controller supporta il formato per ogni spazio dei nomi.

FNA.SecureEraseApplyToAll

Bit 1 della struttura FNA indica se la funzionalità di cancellazione dei dati crittografici e dei dati utente si applica a tutti gli spazi dei nomi o è specifica di uno spazio dei nomi specifico.

Quando questo valore è impostato su 1, una cancellazione crittografica di uno spazio dei nomi specifico come parte di un formato comporta una cancellazione crittografica di tutti gli spazi dei nomi e la cancellazione dei dati utente di uno spazio dei nomi specifico come parte di un formato comporta la cancellazione dei dati utente di tutti gli spazi dei nomi. Quando questo valore viene cancellato in 0, una cancellazione crittografica o la cancellazione dei dati utente come parte di un formato viene eseguita in base allo spazio dei nomi.

FNA.CryptographicEraseSupported

Bit 2 della struttura FNA indica se la cancellazione crittografica è supportata come parte della funzionalità di cancellazione sicura.

Quando questo valore è impostato su 1, la cancellazione crittografica è supportata. Quando questo valore viene cancellato in 0, la cancellazione crittografica non è supportata.

FNA.FormatSupportNSIDAllF

FNA.Reserved

I bit 7:3 della struttura FNA sono riservati.

VWC

Struttura VWC (Volatile Write Cache) contenente campi che indicano gli attributi correlati alla presenza di una cache di scrittura volatile nell'implementazione.

VWC.Present

Bit 0 della struttura VWC indica che è presente una cache di scrittura volatile.

Quando questo valore è impostato su 1, è presente una cache di scrittura volatile e l'host può eseguire comandi Flush e controllare se la cache di scrittura volatile è abilitata con il comando Imposta funzionalità specificando l'identificatore di funzionalità NVME_FEATURE_VOLATILE_WRITE_CACHE .

Quando questo valore viene cancellato in 0, non è presente una cache di scrittura volatile.

Quando una cache di scrittura volatile non è presente, i comandi Flush vengono completati correttamente e non hanno alcun effetto e il comando Imposta funzionalità con il set di identificatori NVME_FEATURE_VOLATILE_WRITE_CACHE avrà esito negativo con lo stato NVME_STATUS_INVALID_FIELD_IN_COMMAND e Get Features con il set di identificatori NVME_FEATURE_VOLATILE_WRITE_CACHE avrà esito negativo con lo stato NVME_STATUS_INVALID_FIELD_IN_COMMAND.

VWC.FlushBehavior

VWC.Reserved

I bit 1:7 della struttura VWC sono riservati.

AWUN

Indica che le dimensioni dell'operazione di scrittura devono essere scritte in modo atomico in NVM in tutti gli spazi dei nomi con qualsiasi formato di spazio dei nomi supportato durante il normale funzionamento. Questo campo viene specificato in blocchi logici ed è un valore basato su 0.

Se uno spazio dei nomi specifico garantisce una dimensione maggiore di quella segnalata in questo campo, questa dimensione specifica dello spazio dei nomi viene segnalata nel campo NAWUN della struttura dei dati Identifica spazio dei nomi .

Se un comando di scrittura viene inviato con dimensioni minori o uguali al valore AWUN , l'host garantisce che il comando di scrittura sia atomico per NVM rispetto ad altri comandi di lettura o scrittura. Se viene inviato un comando di scrittura con dimensioni maggiori del valore AWUN , non esiste alcuna garanzia di atomicità del comando.

Il valore AWUN non ha alcuna applicabilità alla scrittura di errori causati da errori di alimentazione. Per altre informazioni, vedere il campo Atomic Write Unit Power Fail (AWUPF).

Un valore indica FFFFh che tutti i comandi sono atomici perché si tratta della dimensione massima del comando. Le implementazioni devono supportare almeno 128 KB, ridimensionate in modo appropriato in base alle dimensioni LBA (Logical Block Access).

AWUPF

Indica che le dimensioni dell'operazione di scrittura devono essere scritte in modo atomico in NVM in tutti gli spazi dei nomi con qualsiasi formato di spazio dei nomi supportato durante un errore di alimentazione o una condizione di errore. Questo campo viene specificato in blocchi logici ed è un valore basato su 0.

Se uno spazio dei nomi specifico garantisce dimensioni maggiori rispetto a quelle segnalate in questo campo, questa dimensione specifica dello spazio dei nomi viene segnalata nel campo NAWUPF nella struttura dei dati Identifica spazio dei nomi . Il valore AWUPF deve essere minore o uguale al valore AWUN .

Se un comando di scrittura viene inviato con dimensioni minori o uguali al valore AWUPF , l'host garantisce che la scrittura sia atomica per NVM rispetto ad altri comandi di lettura o scrittura. Se viene inviato un comando di scrittura maggiore di questa dimensione, non esiste alcuna garanzia di atomicità dei comandi. Se la dimensione di scrittura è minore o uguale al valore AWUPF e il comando di scrittura ha esito negativo, i comandi di lettura successivi per i blocchi logici associati restituiranno i dati del comando di scrittura riuscito precedente.

Se viene inviato un comando di scrittura con dimensioni maggiori del valore AWUPF , non esiste alcuna garanzia di dati restituiti nelle letture successive dei blocchi logici associati.

NVSCC

Struttura NVM Vendor Specific Command Configuration (NVSCC) contenente campi che indicano le impostazioni di configurazione per la gestione dei comandi specifica del fornitore NVM.

NVSCC.CommandFormatInSpec

Bit 0 della struttura NVSCC indica se tutti i comandi specifici del fornitore NVM usano il formato definito nella figura 13.

Quando questo valore è impostato su 1, tutti i comandi specifici del fornitore NVM usano il formato definito nella figura 13. Quando questo valore viene cancellato in 0, indica che il formato di tutti i comandi specifici del fornitore NVM è specifico del fornitore.

NVSCC.Reserved

I bit 1:7 della struttura NVSCC sono riservati.

NWPC

NWPC.WriteProtect

NWPC.UntilPowerCycle

NWPC.Permanent

NWPC.Reserved

ACWU

Indica che le dimensioni dell'operazione di scrittura devono essere scritte in modo atomico in NVM in tutti gli spazi dei nomi con qualsiasi formato di spazio dei nomi supportato per un'operazione di confronto e scrittura fuse.

Se uno spazio dei nomi specifico garantisce una dimensione maggiore di quella riportata in questo campo, questa dimensione specifica dello spazio dei nomi viene segnalata nel campo NACWU nella struttura dei dati Identifica spazio dei nomi .

Questo campo sarà supportato se è supportato il comando Confronta e Scrivi fuso. Questo campo viene specificato in blocchi logici ed è un valore basato su 0. Se viene inviato un oggetto Compare e Write che richiede una dimensione di trasferimento maggiore di questo valore, il controller potrebbe non riuscire con lo stato NVME_STATUS_INVALID_FIELD_IN_COMMAND.

Se Compare e Write non è un comando fuso supportato, il valore di questo campo sarà 0h.

Reserved4[2]

Un campo riservato.

SGLS

Struttura del supporto SGL (SGLS) contenente campi che specificano se i Elenchi di raccolta a dispersione (SGL) sono supportati per il set di comandi NVM e i tipi SGL supportati.

SGLS.SGLSupported

Quando questo valore è impostato su 1, il controller supporta gli elenchi di controllo di riga per il set di comandi NVM, inclusi i tipi di descrittore SGL Data Block, SGL Segment e SGL Last Segment. Quando questo valore viene cancellato su 0, il controller non supporta gli elenchi di classi di riga per il set di comandi NVM e tutti gli altri bit in questo campo verranno cancellati su 0.

SGLS.KeyedSGLData

SGLS.Reserved0

Un campo riservato.

SGLS.BitBucketDescrSupported

Quando questo valore è impostato su 1, il descrittore bucket di bit SGL è supportato. Quando questo valore viene cancellato in 0, il descrittore bucket di bit SGL non è supportato.

SGLS.ByteAlignedContiguousPhysicalBuffer

Quando questo valore è impostato su 1, è supportato l'uso di un buffer fisico contiguo contiguo di byte di metadati (il campo Puntatore metadati nella figura 12). Quando questo valore viene cancellato in 0, l'uso di un buffer fisico contiguo contiguo di byte allineato ai metadati non è supportato.

SGLS.SGLLengthLargerThanDataLength

Quando questo valore è impostato su 1, il controller supporta i comandi che contengono dati o metadati SGL di una lunghezza maggiore della quantità di dati da trasferire. Quando questo valore viene cancellato in 0, la lunghezza SGL sarà uguale alla quantità di dati da trasferire.

SGLS.MPTRSGLDescriptor

SGLS.AddressFieldSGLDataBlock

SGLS.TransportSGLData

SGLS.Reserved1

Un campo riservato.

MNAN

Reserved6[224]

I byte 704:2047 sono riservati agli attributi del set di comandi di I/O.

SUBNQN[256]

Reserved7[768]

Reserved8[256]

PDS[32]

Contiene una matrice di 32 descrittori di stato di Power. Ogni membro della matrice è un campo a 32 bit che indica le caratteristiche di un descrittore di stato di Power. Il formato di questo campo è definito nella struttura NVME_POWER_STATE_DESC .

La posizione in base zero di una struttura nella matrice corrisponde al nome del descrittore di stato di Power, in modo che Power State 0 Descriptor (PSD0) sia nella posizione 0, Il descrittore di Power State 1 (PSD1) è nella posizione 1 e così via, fino a Power State 31 Descriptor (PSD31) nella posizione 31.

VS[1024]

I byte 3072:4095 vengono allocati per l'utilizzo specifico del fornitore.

Commenti

I valori dei campi VID, SN e MN possono essere combinati per formare un valore univoco globale che identifica il sottosistema NVM.

Requisiti

Requisito Valore
Client minimo supportato Windows 10
Intestazione nvme.h