estructura NVME_IDENTIFY_NAMESPACE_DATA (nvme.h)
Contiene valores que indican funcionalidades y configuraciones específicas de un espacio de nombres determinado.
Las funcionalidades y la configuración que son comunes a todos los espacios de nombres se encuentran en la estructura de datos NVME_IDENTIFY_NAMESPACE_DATA para el espacio de nombres con el identificador de espacio de nombres de 0xFFFFFFFF
.
El archivo de encabezado nvme.h define la constante NVME_NAMESPACE_ALL con un valor de 0xFFFFFFFF
.
Si el controlador admite La administración de espacios de nombres y el campo Identificador de espacio de nombres (NSID) de la estructura de NVME_COMMAND se establece en NVME_NAMESPACE_ALL, el controlador devuelve una estructura de datos NVME_IDENTIFY_NAMESPACE_DATA que especifica las funcionalidades comunes en todos los espacios de nombres.
Sintaxis
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;
Miembros
NSZE
Indica el tamaño total del espacio de nombres en bloques lógicos.
Un espacio de nombres de tamaño n consta de dirección de bloque lógico (LBA) 0
a través (n - 1)
de . El número de bloques lógicos se basa en el tamaño LBA con formato. Este campo no está definido antes de que se dé formato al espacio de nombres.
NCAP
Indica el número máximo de bloques lógicos que se pueden asignar en el espacio de nombres en cualquier momento dado.
El número de bloques lógicos se basa en el tamaño LBA con formato. Este campo no está definido antes de que se dé formato al espacio de nombres.
El campo NCAP se usa en el caso del aprovisionamiento fino e informa de un valor menor o igual que el tamaño del espacio de nombres (NSZE).
Los LBAs de repuesto no se notifican como parte de este campo. Un valor de 0h
para Namespace Capacity (NCAP) indica que el identificador del espacio de nombres es un identificador de espacio de nombres inactivo. Se asigna un bloque lógico cuando se escribe con un comando Write o Write Uncorrectable. Un bloque lógico se puede desasignar mediante el comando Administración de conjuntos de datos .
NUSE
Indica el número actual de bloques lógicos asignados en el espacio de nombres.
El valor de este campo es menor o igual que el valor del campo Capacidad de espacio de nombres NCAP .
El número de bloques lógicos se basa en el tamaño LBA con formato. Cuando se usa el conjunto de comandos NVM: se asigna un bloque lógico cuando se escribe con un comando Write o Write Uncorrectable. Un bloque lógico se puede desasignar mediante el comando Administración de conjuntos de datos .
Un controlador puede notificar un valor NUSE igual a un valor NCAP en todo momento si el producto no está destinado a entornos de aprovisionamiento fino.
NSFEAT
Estructura de características de espacio de nombres (NSFEAT) que contiene campos que definen características del espacio de nombres.
NSFEAT.ThinProvisioning
El bit 0 de la estructura NSFEAT indica si el espacio de nombres admite el aprovisionamiento fino.
Cuando este valor se establece 1
en , el espacio de nombres admite el aprovisionamiento fino. En concreto, la capacidad del espacio de nombres (NCAP) notificada puede ser menor que el tamaño del espacio de nombres (NSZE). Cuando se admite esta característica y se admite el comando Administración de conjuntos de datos, la desasignación de lbAs se reflejará en el campo Uso del espacio de nombres (NUSE).
Cuando este valor se borra en 0
, indica que no se admite el aprovisionamiento fino y los campos NSZE y NCAP notifican el mismo valor.
NSFEAT.NameSpaceAtomicWriteUnit
El bit 1 de la estructura NSFEAT indica si los parámetros de límite atómicos del espacio de nombres se definen para este espacio de nombres.
Cuando este valor se establece 1
en , los campos NAWUN, NAWUPF y NACWU se definen para este espacio de nombres y el host debe usarse para este espacio de nombres en lugar de los campos AWUN, AWUPF y ACWU en la estructura de datos identificar controlador.
Cuando este valor se borra en 0
, el controlador no admite los campos NAWUN, NAWUPF y NACWU para este espacio de nombres. En este caso, el host debe usar los campos AWUN, AWUPF y ACWU definidos en la estructura de datos del controlador de identificación.
NSFEAT.DeallocatedOrUnwrittenError
El bit 2 de la estructura NSFEAT indica si el controlador admite el error de bloque lógico desasignado o no escrito para este espacio de nombres.
Cuando este valor se establece 1
en , el controlador admite el error Desasignado o Bloque lógico no escrito (NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK) para este espacio de nombres. Cuando este valor se borra en 0
, el controlador no admite el error NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK para este espacio de nombres.
NSFEAT.SkipReuseUI
El bit 3 de la estructura NFEAT es un valor para la característica Omitir reutilización de la interfaz de usuario.
NSFEAT.NameSpaceIoOptimization
NSFEAT.Reserved
Se reservan los bits 4:7 de la estructura DE LA NSFEAT .
NLBAF
Define el número de combinaciones de tamaño de datos LBA y tamaño de metadatos admitidos por el espacio de nombres.
Los formatos LBA se asignan en orden (a partir de 0) y se empaquetan secuencialmente. Este es un valor basado en 0. El número máximo de formatos LBA que se pueden indicar como admitidos es 16.
Los formatos LBA admitidos se indican en el campo LBAF (bytes 128 – 191 de esta estructura de datos). Los metadatos se pueden transferir como parte del LBA (creando un LBA extendido que es un tamaño LBA mayor que se expone a la aplicación) o se puede transferir como un búfer contiguo independiente de datos. Los metadatos no se pueden dividir entre el LBA y un búfer de metadatos independiente.
Se recomienda que el software y los controladores pasen a un tamaño LBA de 4 KB o mayor para la eficiencia ECC en el controlador. Si proporciona metadatos, se recomienda proporcionar al menos 8 bytes por bloque lógico para habilitar el uso con protección de datos de un extremo a otro.
FLBAS
Estructura de tamaño LBA con formato (FLBAS) que contiene campos que indican la combinación de tamaño de datos LBA y tamaño de metadatos con la que se ha formateado el espacio de nombres.
FLBAS.LbaFormatIndex
Los bits 0:3 de la estructura FLBAS especifican uno de los 16 formatos LBA admitidos indicados en esta estructura de datos.
FLBAS.MetadataInExtendedDataLBA
El bit 4 de la estructura FLBAS indica si los metadatos se transfieren al final del LBA de datos, creando un LBA de datos extendidos.
Cuando este valor se establece 1
en , los metadatos se transfieren al final del LBA de datos, creando un LBA de datos extendido. Cuando este valor se borra en 0
, indica que todos los metadatos de un comando se transfieren como un búfer contiguo independiente de datos.
El bit 4 no es aplicable cuando no hay metadatos.
FLBAS.Reserved
Los bits 5:7 de la estructura FLBAS están reservados .
MC
Estructura de funcionalidades de metadatos (MC) que contiene campos que indican las funcionalidades de los metadatos.
MC.MetadataInExtendedDataLBA
El bit 0 de la estructura de MC indica si el espacio de nombres admite los metadatos que se transfieren como parte de un LBA de datos extendidos.
Cuando este valor se establece 1
en , el espacio de nombres admite los metadatos que se transfieren como parte de un LBA de datos extendidos. Cuando este valor se borra en 0
, indica que el espacio de nombres no admite los metadatos que se transfieren como parte de un LBA de datos extendidos.
MC.MetadataInSeparateBuffer
El bit 1 de la estructura de MC indica si el espacio de nombres admite los metadatos que se transfieren como parte de un búfer independiente.
Cuando este valor se establece 1
en , el espacio de nombres admite los metadatos que se transfieren como parte de un búfer independiente especificado en el campo Puntero de metadatos (MPTR) de la estructura Command . Cuando este valor se borra en 0
, el espacio de nombres no admite los metadatos que se transfieren como parte de un búfer independiente.
MC.Reserved
Los bits 7:2 de la estructura mc están reservados.
DPC
Estructura de funcionalidades de protección de datos (DPC) de un extremo a otro que contiene campos que indican las funcionalidades de la característica de protección de datos de un extremo a otro.
Se pueden establecer varios bits en este campo.
DPC.ProtectionInfoType1
El bit 0 de la estructura DPC indica si el espacio de nombres admite el tipo de información de protección 1.
Cuando este valor se establece 1
en , el espacio de nombres admite el tipo de información de protección 1. Cuando este valor se borra en 0
, el espacio de nombres no admite el tipo de información de protección 1.
DPC.ProtectionInfoType2
El bit 1 de la estructura DPC indica si el espacio de nombres admite el tipo de información de protección 2.
Cuando este valor se establece 1
en , el espacio de nombres admite el tipo de información de protección 2. Cuando este valor se borra en 0
, el espacio de nombres no admite el tipo de información de protección 2.
DPC.ProtectionInfoType3
El bit 2 de la estructura DPC indica si el espacio de nombres admite el tipo de información de protección 3.
Cuando este valor se establece 1
en , el espacio de nombres admite el tipo de información de protección 3. Cuando este valor se borra en 0
, el espacio de nombres no admite el tipo de información de protección 3.
DPC.InfoAtBeginningOfMetadata
El bit 3 de la estructura DPC indica si el espacio de nombres admite la información de protección transferida como los primeros ocho bytes de metadatos.
Cuando este valor se establece 1
en , el espacio de nombres admite la información de protección transferida como los primeros ocho bytes de metadatos. Cuando este valor se borra en 0
, el espacio de nombres no admite la información de protección transferida como los primeros ocho bytes de metadatos.
DPC.InfoAtEndOfMetadata
El bit 4 de la estructura DPC indica si el espacio de nombres admite la información de protección transferida como los últimos ocho bytes de metadatos.
Cuando este valor se establece 1
en , el espacio de nombres admite la información de protección transferida como los últimos ocho bytes de metadatos. Cuando este valor se borra en 0
, el espacio de nombres no admite la información de protección transferida como los últimos ocho bytes de metadatos.
DPC.Reserved
Los bits 7:5 de la estructura DPC están reservados.
DPS
Estructura de configuración de tipo de protección de datos (DPS) de un extremo a otro que contiene campos que indican la configuración de tipo para la característica de protección de datos de un extremo a otro.
NVME_PROTECTION_INFORMATION_TYPES
DPS.ProtectionInfoTypeEnabled
Bits 2:0 de la estructura DPS es un valor de NVME_PROTECTION_INFORMATION_TYPES que indica si la información de protección está habilitada y el tipo de información de protección habilitada.
DPS.InfoAtBeginningOfMetadata
El bit 3 de la estructura de DPS indica si la información de protección, si está habilitada, se transfiere como los primeros ocho bytes de metadatos.
Cuando este valor se establece 1
en , la información de protección, si está habilitada, se transfiere como los primeros ocho bytes de metadatos. Cuando este valor se borra en 0
, la información de protección, si está habilitada, se transfiere como los últimos ocho bytes de metadatos.
DPS.Reserved
Se reservan los bits 7:4 de la estructura DPS .
NMIC
Una estructura de E/S multiruta de espacio de nombres y funcionalidades de uso compartido de espacios de nombres (NMIC) que contiene campos que especifican la E/S de múltiples rutas y las funcionalidades de uso compartido de espacios de nombres del espacio de nombres.
NMIC.SharedNameSpace
El bit 0 de la estructura NMIC indica si el espacio de nombres puede ser un espacio de nombres compartido.
Cuando este valor se establece 1
en , el espacio de nombres puede ser accesible por dos o más controladores en el subsistema NVM. Cuando este valor se borra en 0
, el espacio de nombres es un espacio de nombres privado y solo el controlador al que devolvió esta estructura de datos de espacio de nombres puede acceder a él.
NMIC.Reserved
Se reservan los bits 7:1 de la estructura NMIC .
RESCAP
Estructura de funcionalidades de reserva (RESCAP) que contiene campos que especifican las funcionalidades de reserva del espacio de nombres.
Un valor de 00h
en este campo indica que este espacio de nombres no admite reservas.
FPI
Estructura indicador de progreso de formato (FPI) que contiene campos que indican el porcentaje del espacio de nombres al que se sigue formateado cuando una operación de formato está en curso.
FPI.PercentageRemained
Los bits 0:6 de la estructura FPI indican el porcentaje del espacio de nombres que debe tener formato. Por ejemplo, un valor de 25
indica que se ha formateado el 75 % del espacio de nombres y el 25 % sigue siendo formateado.
Un valor de 0
indica que el espacio de nombres tiene el formato especificado por los campos FLBAS y DPS de esta estructura de datos.
FPI.Supported
El bit 7 de la estructura FPI indica si el espacio de nombres admite el indicador de progreso de formato definido por el FPI. Campo PercentageRemained .
Cuando este valor se establece 1
en , el espacio de nombres admite el indicador de progreso de formato definido por el FPI. Campo PercentageRemained . Cuando este valor se borra en 0
, el espacio de nombres no admite el indicador de progreso de formato y el FPI. El campo PercentageRemained se borrará en 0h
.
DLFEAT
DLFEAT.ReadBehavior
DLFEAT.WriteZeroes
DLFEAT.GuardFieldWithCRC
DLFEAT.Reserved
NAWUN
Indica el tamaño específico del espacio de nombres de la operación de escritura que se garantiza que se va a escribir de forma atómica en nvM durante el funcionamiento normal.
Un valor de indica que el tamaño de 0h
este espacio de nombres es el mismo que el notificado en el campo AWUN de la estructura de datos Identificar controlador . Todos los demás valores especifican un tamaño en términos de bloques lógicos que usan la misma codificación que el campo AWUN .
NAWUPF
Indica el tamaño específico del espacio de nombres de la operación de escritura que se garantiza que se escribirá de forma atómica en el NVM durante una condición de error de alimentación o error.
Un valor de indica que el tamaño de 0h
este espacio de nombres es el mismo que el notificado en el campo AWUPF de la estructura de datos Identificar controlador . Todos los demás valores especifican un tamaño en términos de bloques lógicos que usan la misma codificación que el campo AWUPF .
NACWU
Indica el tamaño específico del espacio de nombres de la operación de escritura que se garantiza que se escribirá de forma atómica en el NVM para un comando Compare y Write fusionado.
Un valor de indica que el tamaño de 0h
este espacio de nombres es el mismo que el notificado en el campo ACWU de la estructura identificar datos del controlador . Todos los demás valores especifican un tamaño en términos de bloques lógicos que usan la misma codificación que el campo ACWU .
NABSN
Indica el tamaño de límite atómico para este espacio de nombres para el valor NAWUN .
Este campo se especifica en bloques lógicos. No se garantiza que las escrituras en este espacio de nombres crucen límites atómicos sean atómicas para nvM con respecto a otros comandos de lectura o escritura.
Un valor de 0h
indica que no hay límites atómicos para las operaciones de escritura normales. Todos los demás valores especifican un tamaño en términos de bloques lógicos que usan la misma codificación que el campo AWUN .
NABO
Indica la dirección de bloque lógico (LBA) en este espacio de nombres donde comienza el primer límite atómico.
Si los campos NABSN y NABSPF se borran a 0h
, el campo NABO se borra a 0h. El valor de NABO debe ser menor o igual que NABSN y NABSPF.
NABSPF
Indica el tamaño de límite atómico para este espacio de nombres específico del valor de Error de energía de unidad de escritura atómica del espacio de nombres.
Este campo se especifica en bloques lógicos. No se garantiza que las escrituras en este espacio de nombres crucen límites atómicos sean atómicas con respecto a otros comandos de lectura o escritura y no hay ninguna garantía de los datos devueltos en las lecturas posteriores de los bloques lógicos asociados.
Un valor de 0h
indica que no hay límites atómicos para las condiciones de error o error de energía. Todos los demás valores especifican un tamaño en términos de bloques lógicos que usan la misma codificación que el campo AWUPF .
NOIOB
Indica el límite de E/S óptimo del espacio de nombres (NOIOB).
NVMCAP[16]
Indica el tamaño total del NVM asignado a este espacio de nombres.
El valor de este campo está en bytes. Este campo se admite si se admiten los comandos Administración de espacios de nombres y Datos adjuntos del espacio de nombres.
Nota: Este campo puede no corresponder al tamaño de bloque lógico multiplicado por el campo Tamaño del espacio de nombres (NSZE). Debido al aprovisionamiento fino u otros ajustes (por ejemplo, resistencia), este campo puede ser mayor o menor que el NSZE notificado.
NPWG
NPWA
NPDG
NPDA
NOWS
MSSRL
MCL
MSRC
Reserved2[11]
Campo reservado.
ANAGRPID
Reserved3[3]
Se reservan los bytes 192:383A.
NSATTR
NSATTR.WriteProtected
NSATTR.Reserved
NVMSETID
Indica el identificador de conjunto de NVM asociado (NVMSETID).
ENDGID
Indica el identificador de grupo de resistencia asociado (ENDGID).
NGUID[16]
Contiene un valor de 128 bits que es único globalmente y se asigna al espacio de nombres cuando se crea el espacio de nombres.
El campo Identificador único global del espacio de nombres (NGUID) permanece fijo durante toda la vida del espacio de nombres y se conserva en las operaciones de espacio de nombres y controlador (como el restablecimiento del controlador y el formato del espacio de nombres).
Este campo usa el formato de designador de 16 bytes basado en la UEI-64.
- Los bytes 114:112 contienen el valor de company_id de 24 bits asignado por la autoridad de registro ieee.
- Los bytes 119:115 contienen un identificador de extensión asignado por la organización correspondiente.
- Los bytes 111:104 contienen el identificador de extensión específico del proveedor asignado por la organización correspondiente.
Consulte las directrices ieee EUI-64 para obtener más información. El controlador debe especificar un identificador de espacio de nombres único global en este campo o el campo EUI64 cuando se crea el espacio de nombres.
EUI64[8]
Contiene un identificador único extendido ieee de 64 bits (EUI-64) que es único globalmente y asignado al espacio de nombres cuando se crea el espacio de nombres.
El campo EUI64 permanece fijo a lo largo de la vida útil del espacio de nombres y se conserva en las operaciones de espacio de nombres y controlador (como el restablecimiento del controlador y el formato del espacio de nombres).
EuI-64 es una concatenación de un valor de company_id de 24 o 36 bits asignado por la autoridad de registro ieee y un identificador de extensión asignado por la organización correspondiente. Consulte las directrices ieee EUI-64 para obtener más información.
El controlador debe especificar un identificador de espacio de nombres único global en este campo o el campo NGUID cuando se crea el espacio de nombres. Si el controlador no puede asignar un identificador único global de 64 bits, este campo se borrará en 0h
.
LBAF[16]
Contiene una matriz de 16 estructuras NVME_LBA_FORMAT . Cada estructura de la matriz especifica un formato LBA e indica que es compatible con el controlador.
La posición de base cero de una estructura de la matriz corresponde al nombre del formato LBA, de modo que el formato LBA 0 (LBAF0) está en la posición 0, el formato LBA 1 (LBAF1) está en la posición 1, y así sucesivamente, hasta el formato LBA 15 (LBAF15) en la posición 15.
Reserved4[192]
VS[3712]
Este intervalo de bytes (384:4095) se asigna para el uso específico del proveedor (VS).
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10 |
Encabezado | nvme.h |