struttura NVME_CONTROLLER_REGISTERS (nvme.h)
Specifica la mappa di registrazione per il controller.
Sintassi
typedef struct {
NVME_CONTROLLER_CAPABILITIES CAP;
NVME_VERSION VS;
ULONG INTMS;
ULONG INTMC;
NVME_CONTROLLER_CONFIGURATION CC;
ULONG Reserved0;
NVME_CONTROLLER_STATUS CSTS;
NVME_NVM_SUBSYSTEM_RESET NSSR;
NVME_ADMIN_QUEUE_ATTRIBUTES AQA;
NVME_ADMIN_SUBMISSION_QUEUE_BASE_ADDRESS ASQ;
NVME_ADMIN_COMPLETION_QUEUE_BASE_ADDRESS ACQ;
NVME_CONTROLLER_MEMORY_BUFFER_LOCATION CMBLOC;
NVME_CONTROLLER_MEMORY_BUFFER_SIZE CMBSZ;
ULONG Reserved2[944];
ULONG Reserved3[64];
ULONG Doorbells[0];
} NVME_CONTROLLER_REGISTERS, *PNVME_CONTROLLER_REGISTERS;
Members
CAP
Struttura NVME_CONTROLLER_CAPABILITIES che indica le funzionalità di base del controller per ospitare il software.
Il registro CAP funzionalità controller inizia all'offset 00h.
VS
struttura NVME_VERSION che indica la versione principale e secondaria della specifica NVM Express supportata dall'implementazione del controller. Le versioni valide della specifica sono: 1.0, 1.1 e 1.2.
Il registro di Visual Studio versione inizia all'offset 08h.
INTMS
Indica se un vettore di interrupt viene mascherato dalla generazione di un interrupt o dalla segnalazione di un interrupt in sospeso nella struttura di funzionalità MSI.
Quando un valore di 1
viene scritto in un bit nel campo, il vettore di interrupt corrispondente viene mascherato dalla generazione di un interrupt o dalla segnalazione di un interrupt in sospeso nella struttura di funzionalità MSI. La scrittura di un oggetto 0
in un po ' non ha alcun effetto.
Quando si legge, questo campo restituisce il valore della maschera di interruzione corrente all'interno del controller (non il valore di questo registro). Se un bit ha un valore di 1
, il vettore di interrupt corrispondente viene mascherato. Se un bit ha un valore pari 0
a , il vettore di interrupt corrispondente non viene mascherato.
Questo registro viene usato per mascherare gli interrupt quando si usano interrupt basati su pin, MSI a messaggio singolo o più messaggi MSI. Quando si usa MSI-X, la tabella di interrupt mask definita come parte di MSI-X deve essere usata per mascherare gli interrupt. Il software host non deve accedere a questo registro quando è configurato per MSI-X; qualsiasi accesso quando configurato per MSI-X non è definito.
Il registro Interrupt Mask Set INTMS inizia a Offset 0Ch.
INTMC
Indica se un vettore di interrupt è mascherato.
Quando un valore di 1
viene scritto in un bit nel campo, il vettore di interrupt corrispondente viene mascherato. La scrittura di un oggetto 0
in un po ' non ha alcun effetto.
Quando si legge, questo campo restituisce il valore della maschera di interruzione corrente all'interno del controller (non il valore di questo registro). Se un bit ha un valore di 1
, il vettore di interrupt corrispondente viene mascherato, se un bit ha un valore pari 0
a , il vettore di interrupt corrispondente non viene mascherato.
Questo registro viene usato per annullare il mascheramento degli interrupt quando si usano interrupt basati su pin, msi a messaggio singolo o msi di più messaggi. Quando si usa MSI-X, la tabella di interrupt mask definita come parte di MSI-X deve essere usata per annullare il mascheramento degli interrupt. Il software host non deve accedere a questo registro quando è configurato per MSI-X; qualsiasi accesso quando configurato per MSI-X non è definito.
Il registro Interrupt Mask Clear INTMS inizia all'offset 10h.
CC
Struttura NVME_CONTROLLER_CONFIGURATION che contiene le impostazioni di configurazione di lettura/scrittura per il controller.
Il software host deve impostare i campi Arbitration Mechanism (AMS), Memory Page Size (MPS) e Command Set (CSS) in NVME_CONTROLLER_CONFIGURATION su valori validi prima di abilitare il controller impostando il campo Abilita (EN) su 1
.
Il registro CC configurazione controller inizia all'offset 14h.
Reserved0
Offset 18h è riservato.
Tutti i registri riservati e tutti i bit riservati all'interno dei registri sono di sola lettura e restituiscono 0h
quando in lettura, tuttavia, il software non deve basarsi sulla 0h
restituzione.
CSTS
Struttura NVME_CONTROLLER_STATUS che indica lo stato del controller.
Il registro CSTS stato controller inizia all'offset 1Ch.
NSSR
Struttura NVME_NVM_SUBSYSTEM_RESET che fornisce al software host la possibilità di avviare una reimpostazione del sottosistema NVM.
Il supporto per questo registro facoltativo è indicato dallo stato del campo NSSRS supportato dal sottosistema NVM nelle funzionalità del controller. Se il registro non è supportato, l'intervallo di indirizzi occupato dal registro è riservato.
Il registro di reimpostazione del sottosistema NVM (facoltativo) inizia all'offset 20h.
AQA
Struttura NVME_ADMIN_QUEUE_ATTRIBUTES che specifica gli attributi della coda di Amministrazione per la coda di invio Amministrazione e Amministrazione coda di completamento.
Il registro AQA degli attributi della coda Amministrazione inizia all'offset 24h.
ASQ
Struttura NVME_ADMIN_SUBMISSION_QUEUE_BASE_ADDRESS che specifica l'indirizzo di memoria di base della coda di invio Amministrazione.
Il registro dell'indirizzo di base della coda di invio Amministrazione inizia all'offset 28h.
ACQ
Struttura NVME_ADMIN_COMPLETION_QUEUE_BASE_ADDRESS che specifica l'indirizzo di memoria di base della coda di completamento Amministrazione.
Amministrazione registro dell'indirizzo di base della coda di completamento inizia all'offset 30h.
CMBLOC
Struttura NVME_CONTROLLER_MEMORY_BUFFER_LOCATION che specifica la posizione del buffer di memoria del controller.
Se il valore di CMBSZ è 0
, questo registro è riservato.
Il registro del buffer di memoria del controller (facoltativo) inizia all'offset 38h.
CMBSZ
Struttura NVME_CONTROLLER_MEMORY_BUFFER_SIZE che specifica le dimensioni del buffer di memoria del controller.
Se il controller non supporta la funzionalità Buffer memoria controller, questo registro viene cancellato in 0h
.
Il registro delle dimensioni del buffer di memoria del controller (facoltativo) inizia a Offset 3Ch.
Reserved2[944]
Offset da 40h a EFFh riservato.
Tutti i registri riservati e tutti i bit riservati all'interno dei registri sono di sola lettura e restituiscono 0h
quando in lettura, tuttavia, il software non deve basarsi sulla 0h
restituzione.
Reserved3[64]
Offset F00h a FFFh è riservato per registri specifici del set di comandi.
Tutti i registri riservati e tutti i bit riservati all'interno dei registri sono di sola lettura e restituiscono 0h
quando in lettura, tuttavia, il software non deve basarsi sulla 0h
restituzione.
Doorbells[0]
Specifica l'inizio del primo registro doorbell. Campanello coda coda di invio Amministrazione.
Commenti
I registri dei controller si trovano nei registri DI REGISTRAZIONE MEMORIA INFERIORE (MLBAR)/Registro di memoria (MUBAR) registri (PCI BAR0 e BAR1) mappati a uno spazio di memoria che supporta l'accesso in ordine e la larghezza di accesso variabile. Per molte architetture di computer, specificando lo spazio di memoria come non modificabile, questo comportamento viene generato.
L'host non deve rilasciare accessi bloccati e deve accedere ai registri nella larghezza nativa o negli accessi a 32 bit allineati. La violazione di uno di questi requisiti host comporta un comportamento non definito.
L'intervallo di indirizzi Specifico fornitore inizia dopo l'ultimo campanello supportato dal controller e continua fino alla fine dell'intervallo supportato BAR0/1. L'inizio dell'intervallo di indirizzi specifico fornitore inizia nella stessa posizione e non dipende dal numero di campanelli allocati.
Gli accessi destinati a qualsiasi parte di due o più registri non sono supportati.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 |
Intestazione | nvme.h |