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 |