NVME_IDENTIFY_NAMESPACE_DATA struttura (nvme.h)
Contiene valori che indicano funzionalità e impostazioni specifiche di uno spazio dei nomi specifico.
Le funzionalità e le impostazioni comuni a tutti gli spazi dei nomi sono contenute nella struttura di dati NVME_IDENTIFY_NAMESPACE_DATA per lo spazio dei nomi con l'identificatore dello spazio dei nomi di 0xFFFFFFFF
.
Il file di intestazione nvme.h definisce la costante NVME_NAMESPACE_ALL con un valore di 0xFFFFFFFF
.
Se il controller supporta gestione spazi dei nomi e il campo NSID (Namespace Identifier) della struttura NVME_COMMAND è impostato su NVME_NAMESPACE_ALL, il controller restituisce una struttura di dati NVME_IDENTIFY_NAMESPACE_DATA che specifica le funzionalità comuni in tutti gli spazi dei nomi.
Sintassi
typedef struct {
ULONGLONG NSZE;
ULONGLONG NCAP;
ULONGLONG NUSE;
struct {
UCHAR ThinProvisioning : 1;
UCHAR NameSpaceAtomicWriteUnit : 1;
UCHAR DeallocatedOrUnwrittenError : 1;
UCHAR SkipReuseUI : 1;
UCHAR NameSpaceIoOptimization : 1;
UCHAR Reserved : 3;
} NSFEAT;
UCHAR NLBAF;
struct {
UCHAR LbaFormatIndex : 4;
UCHAR MetadataInExtendedDataLBA : 1;
UCHAR Reserved : 3;
} FLBAS;
struct {
UCHAR MetadataInExtendedDataLBA : 1;
UCHAR MetadataInSeparateBuffer : 1;
UCHAR Reserved : 6;
} MC;
struct {
UCHAR ProtectionInfoType1 : 1;
UCHAR ProtectionInfoType2 : 1;
UCHAR ProtectionInfoType3 : 1;
UCHAR InfoAtBeginningOfMetadata : 1;
UCHAR InfoAtEndOfMetadata : 1;
UCHAR Reserved : 3;
} DPC;
struct {
UCHAR ProtectionInfoTypeEnabled : 3;
UCHAR InfoAtBeginningOfMetadata : 1;
UCHAR Reserved : 4;
} DPS;
struct {
UCHAR SharedNameSpace : 1;
UCHAR Reserved : 7;
} NMIC;
NVM_RESERVATION_CAPABILITIES RESCAP;
struct {
UCHAR PercentageRemained : 7;
UCHAR Supported : 1;
} FPI;
struct {
UCHAR ReadBehavior : 3;
UCHAR WriteZeroes : 1;
UCHAR GuardFieldWithCRC : 1;
UCHAR Reserved : 3;
} DLFEAT;
USHORT NAWUN;
USHORT NAWUPF;
USHORT NACWU;
USHORT NABSN;
USHORT NABO;
USHORT NABSPF;
USHORT NOIOB;
UCHAR NVMCAP[16];
USHORT NPWG;
USHORT NPWA;
USHORT NPDG;
USHORT NPDA;
USHORT NOWS;
USHORT MSSRL;
ULONG MCL;
UCHAR MSRC;
UCHAR Reserved2[11];
ULONG ANAGRPID;
UCHAR Reserved3[3];
struct {
UCHAR WriteProtected : 1;
UCHAR Reserved : 7;
} NSATTR;
USHORT NVMSETID;
USHORT ENDGID;
UCHAR NGUID[16];
UCHAR EUI64[8];
NVME_LBA_FORMAT LBAF[16];
UCHAR Reserved4[192];
UCHAR VS[3712];
} NVME_IDENTIFY_NAMESPACE_DATA, *PNVME_IDENTIFY_NAMESPACE_DATA;
Members
NSZE
Indica la dimensione totale dello spazio dei nomi nei blocchi logici.
Uno spazio dei nomi di dimensioni n è costituito da LBA (Logical Block Address) 0
tramite (n - 1)
. Il numero di blocchi logici è basato sulle dimensioni dell'LBA formattate. Questo campo non è definito prima della formattazione dello spazio dei nomi.
NCAP
Indica il numero massimo di blocchi logici che possono essere allocati nello spazio dei nomi in qualsiasi momento.
Il numero di blocchi logici è basato sulle dimensioni dell'LBA formattate. Questo campo non è definito prima della formattazione dello spazio dei nomi.
Il campo NCAP viene usato nel caso del thin provisioning e segnala un valore minore o uguale alla dimensione dello spazio dei nomi (NSZE).
Le LBA di ricambio non vengono segnalate come parte di questo campo. Un valore di 0h
per la capacità dello spazio dei nomi (NCAP) indica che l'ID dello spazio dei nomi è un ID dello spazio dei nomi inattivo. Un blocco logico viene allocato quando viene scritto con un comando Write o Write Uncorrectable. Un blocco logico può essere deallocato usando il comando Gestione set di dati .
NUSE
Indica il numero corrente di blocchi logici allocati nello spazio dei nomi.
Il valore di questo campo è minore o uguale al valore del campo NCAP capacità spazio dei nomi.
Il numero di blocchi logici è basato sulle dimensioni dell'LBA formattate. Quando si usa il set di comandi NVM: un blocco logico viene allocato quando viene scritto con un comando Write o Write Uncorrectable. Un blocco logico può essere deallocato usando il comando Gestione set di dati .
Un controller può segnalare un valore NUSE uguale a un valore NCAP in ogni momento se il prodotto non è destinato agli ambienti di thin provisioning.
NSFEAT
Struttura NSFEAT (Namespace Features) contenente campi che definiscono le funzionalità dello spazio dei nomi.
NSFEAT.ThinProvisioning
Bit 0 della struttura NSFEAT indica se lo spazio dei nomi supporta il thin provisioning.
Quando questo valore è impostato su 1
, lo spazio dei nomi supporta il thin provisioning. In particolare, la capacità dello spazio dei nomi (NCAP) segnalata può essere minore delle dimensioni dello spazio dei nomi (NSZE). Quando questa funzionalità è supportata e il comando Gestione set di dati è supportato, la deallocazione degli LBAs verrà riflessa nel campo Utilizzo dello spazio dei nomi (NUSE).
Quando questo valore viene cancellato in 0
, indica che il provisioning sottile non è supportato e i campi NSZE e NCAP segnalano lo stesso valore.
NSFEAT.NameSpaceAtomicWriteUnit
Bit 1 della struttura NSFEAT indica se i parametri limite atomico dello spazio dei nomi sono definiti per questo spazio dei nomi.
Quando questo valore è impostato su 1
, i campi NAWUN, NAWUPF e NACWU sono definiti per questo spazio dei nomi e devono essere usati dall'host per questo spazio dei nomi anziché i campi AWUN, AWUPF e ACWU nella struttura dei dati Del controller di identificazione .
Quando questo valore viene cancellato in 0
, il controller non supporta i campi NAWUN, NAWUPF e NACWU per questo spazio dei nomi. In questo caso, l'host deve usare i campi AWUN, AWUPF e ACWU definiti nella struttura dei dati Del controller di identificazione .
NSFEAT.DeallocatedOrUnwrittenError
Bit 2 della struttura NSFEAT indica se il controller supporta l'errore Deallocato o Blocco logico non scritto per questo spazio dei nomi.
Quando questo valore è impostato su 1
, il controller supporta l'errore Deallocato o Blocco logico non scritto (NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK) per questo spazio dei nomi. Quando questo valore viene cancellato in 0
, il controller non supporta l'errore di NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK per questo spazio dei nomi.
NSFEAT.SkipReuseUI
Bit 3 della struttura NSFEAT è un'impostazione per la funzionalità Ignora riutilizzo interfaccia utente.
NSFEAT.NameSpaceIoOptimization
NSFEAT.Reserved
I bit 4:7 della struttura NSFEAT sono riservati.
NLBAF
Definisce il numero di combinazioni di dimensioni dei dati e delle dimensioni dei metadati supportate dallo spazio dei nomi.
I formati LBA vengono allocati in ordine (a partire da 0) e compressi in sequenza. Si tratta di un valore basato su 0. Numero massimo di formati LBA che possono essere indicati come supportati è 16.
I formati LBA supportati sono indicati nel campo LBAF (byte 128 - 191 di questa struttura di dati). I metadati possono essere trasferiti come parte dell'LBA (creazione di un'LBA estesa che è una dimensione LBA più grande esposta all'applicazione) o può essere trasferito come buffer contiguo separato di dati. I metadati non possono essere suddivisi tra LBA e un buffer di metadati separato.
È consigliabile che software e controller passino a una dimensione LBA di 4 KB o maggiore per l'efficienza ECC nel controller. Se si specificano metadati, è consigliabile specificare almeno 8 byte per blocco logico per abilitare l'uso con la protezione dei dati end-to-end.
FLBAS
Struttura LBA Size (FLBAS) formattata contenente campi che indicano la combinazione di dimensioni e dimensioni dei metadati LBA con cui è stato formattato lo spazio dei nomi.
FLBAS.LbaFormatIndex
I bit 0:3 della struttura FLBAS specificano uno dei 16 formati LBA supportati indicati in questa struttura di dati.
FLBAS.MetadataInExtendedDataLBA
Bit 4 della struttura FLBAS indica se i metadati vengono trasferiti alla fine dell'LBA dei dati, creando un LBA dati esteso.
Quando questo valore è impostato su 1
, i metadati vengono trasferiti alla fine dell'LBA dei dati, creando un LBA dati esteso. Quando questo valore viene cancellato in 0
, indica che tutti i metadati per un comando vengono trasferiti come buffer contiguo separato di dati.
Bit 4 non è applicabile quando non sono presenti metadati.
FLBAS.Reserved
I bit 5:7 della struttura FLBAS sono riservati.
MC
Struttura Di funzionalità dei metadati (MC) contenente campi che indicano le funzionalità per i metadati.
MC.MetadataInExtendedDataLBA
Bit 0 della struttura MC indica se lo spazio dei nomi supporta il trasferimento dei metadati come parte di un LBA dati esteso.
Quando questo valore è impostato su 1
, lo spazio dei nomi supporta il trasferimento dei metadati come parte di un'LBA dati estesa. Quando questo valore viene cancellato in 0
, indica che lo spazio dei nomi non supporta il trasferimento dei metadati come parte di un'LBA dati estesa.
MC.MetadataInSeparateBuffer
Bit 1 della struttura MC indica se lo spazio dei nomi supporta il trasferimento dei metadati come parte di un buffer separato.
Quando questo valore è impostato su 1
, lo spazio dei nomi supporta il trasferimento dei metadati come parte di un buffer separato specificato nel campo Puntatore metadati (MPTR) della struttura Command . Quando questo valore viene cancellato in 0
, lo spazio dei nomi non supporta il trasferimento dei metadati come parte di un buffer separato.
MC.Reserved
I bit 7:2 della struttura MC sono riservati.
DPC
Struttura DPC (End-to-end Data Protection Capabilities) contenente campi che indicano le funzionalità per la protezione dei dati end-to-end.
È possibile impostare più bit in questo campo.
DPC.ProtectionInfoType1
Bit 0 della struttura DPC indica se lo spazio dei nomi supporta Protection Information Type 1.
Quando questo valore è impostato su 1
, lo spazio dei nomi supporta Protection Information Type 1. Quando questo valore viene cancellato in 0
, lo spazio dei nomi non supporta il tipo di informazioni di protezione 1.
DPC.ProtectionInfoType2
Bit 1 della struttura DPC indica se lo spazio dei nomi supporta Il tipo di informazioni di protezione 2.
Quando questo valore è impostato su 1
, lo spazio dei nomi supporta Protection Information Type 2. Quando questo valore viene cancellato in 0
, lo spazio dei nomi non supporta il tipo di informazioni di protezione 2.
DPC.ProtectionInfoType3
Bit 2 della struttura DPC indica se lo spazio dei nomi supporta Il tipo di informazioni di protezione 3.
Quando questo valore è impostato su 1
, lo spazio dei nomi supporta Protection Information Type 3. Quando questo valore viene cancellato in 0
, lo spazio dei nomi non supporta il tipo di informazioni di protezione 3.
DPC.InfoAtBeginningOfMetadata
Bit 3 della struttura DPC indica se lo spazio dei nomi supporta le informazioni di protezione trasferite come primi otto byte di metadati.
Quando questo valore è impostato su 1
, lo spazio dei nomi supporta le informazioni di protezione trasferite come primi otto byte di metadati. Quando questo valore viene cancellato in 0
, lo spazio dei nomi non supporta le informazioni di protezione trasferite come primi otto byte di metadati.
DPC.InfoAtEndOfMetadata
Bit 4 della struttura DPC indica se lo spazio dei nomi supporta le informazioni di protezione trasferite come ultimi otto byte di metadati.
Quando questo valore è impostato su 1
, lo spazio dei nomi supporta le informazioni di protezione trasferite come ultimi otto byte di metadati. Quando questo valore viene cancellato in 0
, lo spazio dei nomi non supporta le informazioni di protezione trasferite come ultimi otto byte di metadati.
DPC.Reserved
I bit 7:5 della struttura DPC sono riservati.
DPS
Struttura DPS (End-to-end Data Protection Type Settings) contenente campi che indicano le impostazioni di tipo per la funzionalità di protezione dei dati end-to-end.
NVME_PROTECTION_INFORMATION_TYPES
DPS.ProtectionInfoTypeEnabled
I bit 2:0 della struttura DPS sono un valore NVME_PROTECTION_INFORMATION_TYPES che indica se le informazioni di protezione sono abilitate e il tipo di Informazioni di protezione abilitate.
DPS.InfoAtBeginningOfMetadata
Bit 3 della struttura DPS indica se le informazioni di protezione, se abilitate, vengono trasferite come primi otto byte di metadati.
Quando questo valore è impostato su 1
, le informazioni di protezione, se abilitate, vengono trasferite come primi otto byte di metadati. Quando questo valore viene cancellato in 0
, le informazioni di protezione, se abilitate, vengono trasferite come ultimi otto byte di metadati.
DPS.Reserved
I bit 7:4 della struttura DPS sono riservati.
NMIC
Struttura I/O multi-percorso e condivisione spazi dei nomi contenente campi che specificano le funzionalità di I/O e condivisione spazi dei nomi multi-percorso dello spazio dei nomi dello spazio dei nomi.
NMIC.SharedNameSpace
Bit 0 della struttura NMIC indica se lo spazio dei nomi può essere uno spazio dei nomi condiviso.
Quando questo valore è impostato su 1
, lo spazio dei nomi può essere accessibile da due o più controller nel sottosistema NVM. Quando questo valore viene cancellato in 0
, lo spazio dei nomi è uno spazio dei nomi privato e può essere accessibile solo dal controller che ha restituito la struttura dei dati dello spazio dei nomi.
NMIC.Reserved
I bit 7:1 della struttura NMIC sono riservati.
RESCAP
Struttura RESCAP (Reservation Capabilities) contenente campi che specificano le funzionalità di prenotazione dello spazio dei nomi.
Un valore di 00h
in questo campo indica che le prenotazioni non sono supportate da questo spazio dei nomi.
FPI
Struttura FPI (Format Progress Indicator) contenente campi che indicano la percentuale dello spazio dei nomi che rimane da formattare quando un'operazione di formato è in corso.
FPI.PercentageRemained
I bit 0:6 della struttura FPI indicano la percentuale dello spazio dei nomi che rimane da formattare. Ad esempio, un valore indica 25
che il 75% dello spazio dei nomi è stato formattato e il 25% rimane formattato.
Un valore di 0
indica che lo spazio dei nomi viene formattato con il formato specificato dai campi FLBAS e DPS in questa struttura di dati.
FPI.Supported
Bit 7 della struttura FPI indica se lo spazio dei nomi supporta l'indicatore di stato formato definito dall'FPI. Campo PercentualeRemained .
Quando questo valore è impostato su 1
, lo spazio dei nomi supporta l'indicatore di stato formato definito dall'FPI. Campo PercentualeRemained . Quando questo valore viene cancellato in 0
, lo spazio dei nomi non supporta l'indicatore di stato formato e l'istanza di FPI. Il campo PercentualeRemained verrà cancellato in 0h
.
DLFEAT
DLFEAT.ReadBehavior
DLFEAT.WriteZeroes
DLFEAT.GuardFieldWithCRC
DLFEAT.Reserved
NAWUN
Indica le dimensioni specifiche dello spazio dei nomi dell'operazione di scrittura garantite per essere scritte atomicamente in NVM durante la normale operazione.
Un valore di 0h
indica che le dimensioni per questo spazio dei nomi sono uguali a quella segnalata nel campo AWUN della struttura dei dati Del controller di identificazione . Tutti gli altri valori specificano una dimensione in termini di blocchi logici usando la stessa codifica del campo AWUN .
NAWUPF
Indica la dimensione specifica dello spazio dei nomi dell'operazione di scrittura garantita per essere scritta atomicamente in NVM durante una condizione di errore o errore di alimentazione.
Un valore di 0h
indica che le dimensioni per questo spazio dei nomi sono uguali a quella segnalata nel campo AWUPF della struttura dei dati Del controller di identificazione . Tutti gli altri valori specificano una dimensione in termini di blocchi logici usando la stessa codifica del campo AWUPF .
NACWU
Indica la dimensione specifica dello spazio dei nomi dell'operazione di scrittura garantita per essere scritta atomicamente in NVM per un comando Compare e Write fused.
Un valore di 0h
indica che le dimensioni per questo spazio dei nomi sono uguali a quella segnalata nel campo ACWU della struttura dei dati Del controller di identificazione . Tutti gli altri valori specificano una dimensione in termini di blocchi logici usando la stessa codifica del campo ACWU .
NABSN
Indica le dimensioni del limite atomico per questo spazio dei nomi per il valore NAWUN .
Questo campo viene specificato in blocchi logici. Le scritture in questo spazio dei nomi che superano i limiti atomici non sono garantite per essere atomiche rispetto ad altri comandi di lettura o scrittura.
Valore di indica che non esistono limiti atomici per le normali operazioni di 0h
scrittura. Tutti gli altri valori specificano una dimensione in termini di blocchi logici usando la stessa codifica del campo AWUN .
NABO
Indica l'indirizzo blocco logico (LBA) in questo spazio dei nomi in cui inizia il primo limite atomico.
Se i campi NABSN e NABSPF vengono cancellati in 0h
, il campo NABO viene cancellato in 0h. Il valore di NABO deve essere minore o uguale a NABSN e NABSPF.
NABSPF
Indica le dimensioni del limite atomico per questo spazio dei nomi specifico per il valore Atomic Write Unit Power Fail dello spazio dei nomi.
Questo campo viene specificato in blocchi logici. Le scritture in questo spazio dei nomi che superano i limiti atomici non devono essere atomiche rispetto ad altri comandi di lettura o scrittura e non vi è alcuna garanzia di dati restituiti nelle letture successive dei blocchi logici associati.
Un valore di 0h
indica che non sono presenti limiti atomici per le condizioni di errore o errori di alimentazione. Tutti gli altri valori specificano una dimensione in termini di blocchi logici usando la stessa codifica del campo AWUPF .
NOIOB
Indica il limite IO ottimale dello spazio dei nomi (NOIOB).
NVMCAP[16]
Indica la dimensione totale dell'NVM allocata a questo spazio dei nomi.
Il valore di questo campo è in byte. Questo campo è supportato se sono supportati i comandi Gestione spazio dei nomi e Allegati spazio dei nomi.
Nota: questo campo potrebbe non corrispondere alla dimensione del blocco logico moltiplicata per il campo Dimensioni spazio dei nomi (NSZE). A causa del thin provisioning o di altre impostazioni(ad esempio, resistenza), questo campo può essere maggiore o minore rispetto al NSZE segnalato.
NPWG
NPWA
NPDG
NPDA
NOWS
MSSRL
MCL
MSRC
Reserved2[11]
Campo riservato.
ANAGRPID
Reserved3[3]
I byte 192:383A sono riservati.
NSATTR
NSATTR.WriteProtected
NSATTR.Reserved
NVMSETID
Indica l'identificatore del set NVM associato (NVMSETID).
ENDGID
Indica l'identificatore del gruppo endurance associato (ENDGID).
NGUID[16]
Contiene un valore a 128 bit che è univoco a livello globale e assegnato allo spazio dei nomi quando viene creato lo spazio dei nomi.
Il campo Identificatore univoco globale dello spazio dei nomi (NGUID) rimane fisso durante la durata dello spazio dei nomi e viene mantenuto tra le operazioni dello spazio dei nomi e del controller, ad esempio il formato del controller reset e dello spazio dei nomi.
Questo campo usa il formato di progettazione 16 byte basato su EUI-64.
- I byte 114:112 contengono il valore di company_id a 24 bit assegnato dall'autorità di registrazione IEEE.
- I byte 119:115 contengono un identifero di estensione assegnato dall'organizzazione corrispondente.
- I byte 111:104 contengono l'identificatore di estensione specifico del fornitore assegnato dall'organizzazione corrispondente.
Per altre informazioni, vedere le linee guida IEEE EUI-64. Il controller deve specificare un identificatore dello spazio dei nomi univoco globale in questo campo o nel campo EUI64 quando viene creato lo spazio dei nomi.
EUI64[8]
Contiene un identificatore univoco esteso IEEE a 64 bit (EUI-64) che è univoco a livello globale e assegnato allo spazio dei nomi quando viene creato lo spazio dei nomi.
Il campo EUI64 rimane fisso durante la durata dello spazio dei nomi e viene mantenuto tra le operazioni dello spazio dei nomi e del controller, ad esempio la reimpostazione del controller e il formato dello spazio dei nomi.
L'EUI-64 è una concatenazione di un valore di company_id a 24 bit o a 36 bit assegnato dall'autorità di registrazione IEEE e un identificatore di estensione assegnato dall'organizzazione corrispondente. Per altre informazioni, vedere le linee guida IEEE EUI-64.
Il controller deve specificare un identificatore dello spazio dei nomi univoco globale in questo campo o nel campo NGUID quando viene creato lo spazio dei nomi. Se il controller non è in grado di allocare un identificatore univoco globale a 64 bit, questo campo verrà cancellato in 0h
.
LBAF[16]
Contiene una matrice di 16 strutture NVME_LBA_FORMAT . Ogni struttura nella matrice specifica un formato LBA e indica che è supportato dal controller.
La posizione in base zero di una struttura nella matrice corrisponde al nome del formato LBA, in modo che LBA Format 0 (LBAF0) sia nella posizione 0, LBA Format 1 (LBAF1) è nella posizione 1 e così via, fino a LBA Format 15 (LBAF15) nella posizione 15.
Reserved4[192]
VS[3712]
Questo intervallo di byte (384:4095) viene allocato per l'utilizzo di Vendor Specific (VS).
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 |
Intestazione | nvme.h |