estructura NVME_IDENTIFY_CONTROLLER_DATA (nvme.h)
Contiene valores que indican las funcionalidades del controlador, las características, los atributos del conjunto de comandos y los descriptores de estado de energía.
Sintaxis
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;
Miembros
VID
Contiene el identificador del proveedor de la empresa asignado por la interconexión de componentes periféricos - Grupo de interés especial (PCI-SIG).
SSVID
Contiene el identificador del proveedor de empresa asignado por PCI-SIG para el subsistema.
SN[20]
Contiene el número de serie del subsistema NVM asignado por el proveedor como una cadena ASCII.
MN[40]
Contiene el número de modelo del subsistema NVM asignado por el proveedor como una cadena ASCII.
FR[8]
Contiene la revisión de firmware activa actualmente para el subsistema NVM.
Esta es la misma información de revisión de firmware en el NVME_FIRMWARE_SLOT_INFO_LOG que se puede recuperar con el comando Obtener página de registro.
RAB
Contiene el tamaño de ráfaga de arbitraje recomendado.
IEEE[3]
Contiene el identificador único de la organización (OUI) para el proveedor del controlador.
La OUI es un identificador asignado de IEEE/RAC válido que se puede registrar en http://standards.ieee.org/develop/regauth/oui/public.html.
CMIC
Estructura de E/S multiruta del controlador y funcionalidades de uso compartido de espacios de nombres (CMIC) que especifica las funcionalidades de uso compartido de E/S y espacio de nombres de múltiples rutas del controlador y el subsistema NVM.
CMIC.MultiPCIePorts
Bit 0 de la estructura CMIC .
Cuando este valor se establece 1
en , el subsistema NVM puede contener dos o más puertos PCI Express físicos. Cuando el valor se borra en 0
, el subsistema NVM contiene un único puerto PCI Express.
CMIC.MultiControllers
Bit 1 de la estructura CMIC .
Cuando este valor se establece 1
en , el subsistema NVM puede contener dos o más controladores. Cuando el valor se borra en 0
, el subsistema NVM contiene un único controlador.
CMIC.SRIOV
Bit 2 de la estructura CMIC .
Cuando este valor se establece 1
en , el controlador está asociado a una función virtual de E/S de raíz única (SR-IOV). Cuando el valor se borra en 0
, el controlador está asociado a una función PCI.
CMIC.ANAR
CMIC.Reserved
Los bits 3:7 de la estructura CMIC están reservados.
MDTS
Indica el tamaño máximo de transferencia de datos entre el host y el controlador.
El host no debe enviar un comando que supere este tamaño de transferencia. Si se envía un comando que supera el tamaño de transferencia, el comando se anula con un estado de NVME_STATUS_INVALID_FIELD_IN_COMMAND.
El valor de este campo está en unidades del tamaño mínimo de página de memoria especificado en el campo MPSMIN de la estructura Capacidades del controlador y se notifica como una potencia de dos (2^n). Un valor de indica que no hay restricciones en el tamaño de 0h
transferencia. La restricción incluye metadatos si se intercala con los datos del bloque lógico.
Si se admiten descriptores de cubo de bits de SGL, sus longitudes se incluyen para determinar si un comando supera el tamaño máximo de transferencia de datos para los búferes de datos de destino. Su longitud en un búfer de datos de origen no se incluye para un cálculo de tamaño máximo de transferencia de datos.
CNTLID
Contiene el identificador de controlador único del subsistema NVM asociado al controlador.
VER
Contiene el valor notificado en el registro de versión, definido en el campo VS de la estructura NVME_CONTROLLER_REGISTERS .
Las implementaciones que son compatibles con la especificación NVMe versión 1.2 o posterior, notificarán un valor distinto de cero en este campo.
RTD3R
Indica la latencia típica en microsegundos al reanudar desde runtime D3 (RTD3).
Las implementaciones que son compatibles con la especificación NVMe versión 1.2 o posterior, notificarán un valor distinto de cero en este campo.
RTD3E
Indica la latencia típica en microsegundos para escribir Runtime D3 (RTD3).
Las implementaciones que son compatibles con la especificación NVMe versión 1.2 o posterior, notificarán un valor distinto de cero en este campo.
OAES
Estructura opcional de eventos asincrónicos admitidos (OAES) que contiene campos que indican si el controlador admite eventos asincrónicos opcionales.
Un controlador no debe enviar eventos asincrónicos opcionales antes de que estén habilitados por software host.
OAES.Reserved0
Se reservan los bits 10:31 de la estructura OAES .
OAES.NamespaceAttributeChanged
Bit 8 de la estructura OAES .
Cuando este valor se establece 1
en , el controlador admite el envío del evento Namespace Attribute Changed. Cuando este valor se borra en 0
, el controlador no admite el evento Namespace Attribute Changed.
OAES.FirmwareActivation
Bit 9 de la estructura OAES .
Cuando este valor se establece 1
en , el controlador admite el envío del evento de activación de firmware. Cuando este valor se borra en 0
, el controlador no admite el evento de activación de firmware.
OAES.Reserved1
Se reservan los bits 0:7 de la estructura OAES .
OAES.AsymmetricAccessChanged
OAES.PredictableLatencyAggregateLogChanged
OAES.LbaStatusChanged
OAES.EnduranceGroupAggregateLogChanged
OAES.Reserved2
OAES.ZoneInformation
OAES.Reserved3
CTRATT
Estructura de atributos de controlador (CTRATT) que contiene información de atributo del controlador.
CTRATT.HostIdentifier128Bit
Bit 32 de la estructura CTRATT que contiene un identificador de host de 128 bits.
CTRATT.NOPSPMode
Bit 31 de la estructura CTRATT que contiene información sobre el estado de energía no operativa (NOPS).
CTRATT.NVMSets
Bit 30 de la estructura CTRATT que contiene información sobre los conjuntos de comandos de NVM.
CTRATT.ReadRecoveryLevels
Bit 29 de la estructura CTRATT que contiene información sobre los niveles de recuperación de lectura.
CTRATT.EnduranceGroups
Bit 28 de la estructura CTRATT que contiene información sobre los niveles de grupos de resistencia.
CTRATT.PredictableLatencyMode
CTRATT.TBKAS
CTRATT.NamespaceGranularity
CTRATT.SQAssociations
CTRATT.UUIDList
CTRATT.Reserved0
Los bits 0:27 de la estructura CTRATT están reservados.
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 reservado de 140 bytes.
CNTRLTYPE
FGUID[16]
CRDT1
CRDT2
CRDT3
Reserved0_1[106]
ReservedForManagement[16]
Reservado para la administración de NVMe.
OACS
Estructura opcional Administración compatibilidad con comandos (OACS) que contiene campos que indican los comandos de Administración opcionales admitidos por el controlador.
OACS.SecurityCommands
El bit 0 de la estructura OACS indica si el controlador admite los comandos Envío de seguridad y Recepción de seguridad.
Cuando este valor se establece 1
en , el controlador admite los comandos Envío de seguridad y Recepción de seguridad. Cuando este valor se borra en 0
, el controlador no admite los comandos Envío de seguridad y Recepción de seguridad.
OACS.FormatNVM
El bit 1 de la estructura OACS indica si el controlador admite el comando Format NVM.
Cuando este valor se establece 1
en , el controlador admite el comando Format NVM. Cuando este valor se borra en 0
, el controlador no admite el comando Format NVM.
OACS.FirmwareCommands
El bit 2 de la estructura OACS indica si el controlador admite los comandos Confirmación de firmware y Descarga de imágenes de firmware.
Cuando este valor se establece 1
en , el controlador admite los comandos Firmware Commit y Firmware Image Download. Cuando este valor se borra en 0
, el controlador no admite los comandos Firmware Commit y Firmware Image Download.
OACS.NamespaceCommands
El bit 3 de la estructura OACS indica si el controlador admite los comandos Administración del espacio de nombres y Datos adjuntos del espacio de nombres.
Cuando este valor se establece 1
en , el controlador admite los comandos Administración del espacio de nombres y Datos adjuntos del espacio de nombres. Cuando este valor se borra en 0
, el controlador no admite los comandos Administración del espacio de nombres y Datos adjuntos del espacio de nombres.
OACS.DeviceSelfTest
El bit 4 de la estructura OACS indica si el controlador admite el comando Device Self Test.
OACS.Directives
El bit 5 de la estructura OACS indica si el controlador admite los comandos De envío de directiva y Recepción de directivas.
OACS.NVMeMICommands
OACS.VirtualizationMgmt
OACS.DoorBellBufferConfig
OACS.GetLBAStatus
OACS.Reserved
Bits 6:15: están reservados.
ACL
Indica el número máximo de comandos Abort pendientes simultáneamente admitidos por el controlador.
Se trata de un valor basado en 0. Las implementaciones deben admitir un mínimo de cuatro comandos Abort pendientes simultáneamente.
AERL
Indica el número máximo de comandos de solicitud de eventos asincrónicas pendientes simultáneamente compatibles con el controlador.
Se trata de un valor basado en 0. Las implementaciones deben admitir un mínimo de cuatro comandos de solicitud de eventos asincrónica pendientes simultáneamente.
FRMW
Estructura de Novedades de firmware (FRMW) que contiene campos que indican funcionalidades relacionadas con las actualizaciones de firmware.
FRMW.Slot1ReadOnly
El bit 0 de la estructura FRMW indica si la primera ranura de firmware (ranura 1) es de solo lectura.
Cuando este valor se establece 1
en , la primera ranura de firmware (ranura 1) es de solo lectura. Cuando este valor se borra en 0
, la primera ranura de firmware (ranura 1) es de lectura y escritura. Las implementaciones pueden optar por tener una imagen de firmware de solo lectura de línea base.
FRMW.SlotCount
Los bits 1:3 de la estructura FRMW indican el número de ranuras de firmware que admite el controlador.
Este campo especifica un valor entre uno y siete, lo que indica que se admite al menos una ranura de firmware y hasta siete como máximo. Esto corresponde a las ranuras de firmware de 1 a 7.
FRMW.ActivationWithoutReset
El bit 4 de la estructura FRMW indica si el controlador admite la activación del firmware sin un restablecimiento.
Cuando este valor se establece 1
en , el controlador admite la activación del firmware sin un restablecimiento. Cuando este valor se borra en 0
, el controlador requiere un restablecimiento para que se active el firmware.
FRMW.Reserved
Se reservan los bits 5:7 de la estructura FRMW .
LPA
Estructura de atributos de página de registro (LPA) que contiene campos que indican atributos opcionales para las páginas de registro a las que se accede mediante el comando Obtener página de registro.
LPA.SmartPagePerNamespace
El bit 0 de la estructura LPA indica si el controlador admite la página de registro de información smart/health por espacio de nombres.
Cuando este valor se establece 1
en , el controlador admite la página de registro de información de SMART/Health por espacio de nombres. Cuando este valor se borra en 0
, el controlador no admite la página de registro de información smart/health por espacio de nombres.
LPA.CommandEffectsLog
El bit 1 de la estructura LPA indica si el controlador admite la página de registro efectos de comandos.
Cuando este valor se establece 1
en , el controlador admite la página de registro efectos de comandos. Cuando este valor se borra en 0
, el controlador no admite la página de registro efectos de comandos.
LPA.LogPageExtendedData
El bit 2 de la estructura LPA indica si el controlador admite datos extendidos de página de registro.
LPA.TelemetrySupport
El bit 3 de la estructura LPA indica si el controlador admite la compatibilidad con telemetría.
LPA.PersistentEventLog
LPA.Reserved0
LPA.TelemetryDataArea4
LPA.Reserved1
ELPE
Indica el número de entradas del registro de información de error almacenadas por el controlador. Este campo es un valor basado en 0.
NPSS
Indica el número de estados de energía de NVM Express admitidos por el controlador. Este es un valor basado en 0.
Los estados de energía se numeran secuencialmente a partir del estado de energía 0. Un controlador debe admitir al menos un estado de alimentación (por ejemplo, estado de alimentación 0) y puede admitir hasta 31 estados de energía adicionales, para un total de 32.
AVSCC
Estructura Administración configuración de comandos específica del proveedor (AVSCC) que contiene campos que indican los valores de configuración para Administración control de comandos específico del proveedor.
AVSCC.CommandFormatInSpec
El bit 0 de la estructura AVSCC indica si todos los comandos específicos del proveedor Administración usan el formato de comando definido en la estructura NVME_COMMAND.
Cuando este valor se borra en 0
, indica que el formato de todos los comandos específicos del proveedor de Administración son específicos del proveedor.
Cuando este valor se establece 1
en , indica que todos los comandos específicos del proveedor Administración usarán la estructura NVME_COMMAND.
AVSCC.Reserved
Los bits 1:7 de la estructura AVSCC están reservados.
APSTA
Estructura de atributos de transición de estado de energía autónomo (APSTA) que contiene campos que indican los atributos de la característica de transición de estado de energía autónomo.
APSTA.Supported
El bit 0 de la estructura APSTA indica si el controlador admite transiciones de estado de energía autónomas.
Cuando este valor se establece 1
en , el controlador admite transiciones de estado de energía autónomas. Cuando este valor se borra en 0
, el controlador no admite transiciones de estado de energía autónomas.
APSTA.Reserved
Los bits 1:7 de la estructura APSTA están reservados.
WCTEMP
Indica el valor mínimo del campo Temperatura compuesta (notificado en el registro smart/health information que indica una condición de sobrecalentamiento durante la cual continúa la operación del controlador.
Se recomienda la corrección inmediata (por ejemplo, refrigeración adicional o reducción de la carga de trabajo). La plataforma debe esforzarse por mantener una temperatura compuesta por debajo de este valor.
Un valor de 0h
en este campo indica que el controlador no notifica ningún valor de umbral de temperatura de advertencia. Las implementaciones compatibles con nvMe Spec versión 1.2 o posterior deben notificar un valor distinto de cero en este campo. Se recomienda que las implementaciones notifiquen un valor de 0157h
en este campo.
CCTEMP
Indica el valor mínimo del campo Temperatura compuesta (notificado en el [SMART / Health Information](ns-nvme-nvme_health_info_log.md log) que indica una condición crítica de sobrecalentamiento. Por ejemplo, una condición que puede evitar un funcionamiento normal continuado, posibilidad de pérdida de datos, apagado automático del dispositivo, limitación extrema del rendimiento o daños permanentes.
Un valor de 0h
en este campo indica que el controlador no notifica ningún valor de umbral de temperatura crítico. Las implementaciones compatibles con nvMe Spec versión 1.2 o posterior deben notificar un valor distinto de cero en este campo.
MTFA
Indica el tiempo máximo que el controlador detiene temporalmente los comandos de procesamiento para activar la imagen de firmware.
Este campo es válido si el controlador admite la activación de firmware sin un restablecimiento. El valor MFTA se especifica en unidades de 100 milisegundos. Un valor de 0h
indica que el tiempo máximo no está definido.
HMPRE
Indica el tamaño preferido que el host debe asignar para la característica Búfer de memoria del host en unidades de 4 KB.
Este valor debe ser mayor o igual que el tamaño mínimo del búfer de memoria del host (HMMIN).
Si este campo es distinto de cero, se admite la característica Búfer de memoria del host. Cuando este valor se borra en 0h
, no se admite la característica Búfer de memoria del host.
HMMIN
Indica el tamaño mínimo que el host debe asignar para la característica Búfer de memoria del host en unidades de 4 KB.
Cuando este valor se borra en 0
, se solicita al host que asigne cualquier cantidad de memoria de host posible hasta el valor HMPRE .
TNVMCAP[16]
Indica la capacidad total de NVM, en bytes, del subsistema NVM.
Este campo se admite si se admiten los comandos Administración de espacios de nombres y Datos adjuntos del espacio de nombres.
UNVMCAP[16]
Indica la capacidad NVM sin asignar, en bytes, del subsistema NVM.
Este campo se admite si se admiten los comandos Administración de espacios de nombres y Datos adjuntos del espacio de nombres.
RPMBS
Estructura de compatibilidad con bloques de memoria protegidos (RPMBS) de reproducción que contiene campos que indican si el controlador admite uno o varios bloques de memoria protegidos (RPMB) de reproducción y las funcionalidades asociadas.
RPMBS.RPMBUnitCount
Indica el número de destinos RPMB que admite el controlador.
Todos los destinos PMB admitidos (bloque de memoria protegida) tienen las mismas funcionalidades definidas en el campo RPMBS . Un valor de 0h
indica que el controlador no admite RPMB. Si este valor es distinto de cero, el controlador admite los comandos Envío de seguridad y Recepción de seguridad.
RPMBS.AuthenticationMethod
Indica el método de autenticación que se usa para acceder a todos los bloques de memoria protegidos de reproducción (RPMB) en el controlador. Los valores de este campo son:
Value | Definición |
---|---|
000b | HMAC SHA-256 |
001b-111b | Reservado |
RPMBS.Reserved0
Campo reservado.
RPMBS.TotalSize
Indica el tamaño total de cada RPMB admitido en el controlador en unidades de 128 KB. Este es un valor basado en 0. Un valor de 0h
indica un tamaño de 128 KB.
RPMBS.AccessSize
Indica el tamaño que se puede leer o escribir por acceso RPMB mediante los comandos Envío de seguridad o Recepción de seguridad para este controlador en unidades de 512B.
Este es un valor basado en 0. Un valor de 0h
indica un tamaño de 512B.
EDSTT
Indica el tiempo de prueba automática del dispositivo extendido (EDSTT).
DSTO
Indica las opciones de prueba automática del dispositivo (DSTO).
FWUG
Indica la granularidad de actualización de firmware (FWUG).
KAS
Indica la compatibilidad con Keep Alive (KAS).
HCTMA
Estructura de atributos de administración térmica controlada por host (HCTMA).
HCTMA.Supported
Indica si se admiten los atributos de administración térmica controlada por host.
HCTMA.Reserved
Este campo de estructura HCTMA está reservado.
MNTMT
Temperatura mínima de administración térmica (MNTMT)
MXTMT
Temperatura máxima de gestión térmica (MXTMT)
SANICAP
Funcionalidades de saneamiento (SANICAP)
SANICAP.CryptoErase
El controlador admite Crypto Erase Sanitize
SANICAP.BlockErase
El controlador admite Block Erase Sanitize
SANICAP.Overwrite
El controlador admite Overwrite Santize
SANICAP.Reserved
SANICAP.NDI
SANICAP.NODMMAS
HMMINDS
HMMAXD
NSETIDMAX
Número máximo de identificadores de establecimiento de 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 reservado.
SQES
Estructura de tamaño de entrada de cola de envío (SQES) que contiene campos que indican el tamaño de entrada de cola de envío necesario y máximo al usar el conjunto de comandos NVM.
SQES.RequiredEntrySize
Los bits 0:3 de la estructura SQES indican el tamaño de entrada de cola de envío necesario al usar el conjunto de comandos NVM.
Este es el tamaño de entrada mínimo que se puede usar. El valor está en bytes y se notifica como una potencia de dos (2^n). El valor necesario es 6, que corresponde a 64 bytes.
SQES.MaxEntrySize
Los bits 4:7 de la estructura SQES indican el tamaño máximo de entrada de cola de envío cuando se usa el conjunto de comandos NVM.
Este valor es mayor o igual que SQES. Valor RequiredEntrySize . El valor está en bytes y se notifica como una potencia de dos (2^n). El valor recomendado es 6, que corresponde a un tamaño de entrada sq del conjunto de comandos NVM estándar de 64 bytes. Los controladores que implementan extensiones propietarias pueden admitir un valor mayor.
CQES
Estructura de tamaño de entrada de cola de finalización (CQES) que contiene campos que indican el tamaño de entrada de cola de finalización requerido y máximo al usar el conjunto de comandos nvM.
CQES.RequiredEntrySize
Los bits 0:3 de la estructura CQES indican el tamaño de entrada de cola de finalización necesario al usar el conjunto de comandos nvM.
Este es el tamaño de entrada mínimo que se puede usar. El valor está en bytes y se notifica como una potencia de dos (2^n). El valor necesario es 4, que corresponde a 16 bytes.
CQES.MaxEntrySize
Los bits 4:7 de la estructura CQES indican el tamaño máximo de entrada de cola de finalización al usar el conjunto de comandos nvM.
Este valor es mayor o igual que el tamaño de entrada CQ necesario. El valor está en bytes y se notifica como una potencia de dos (2^n). El valor recomendado es 4, que corresponde a un tamaño de entrada estándar del conjunto de comandos CQ de NVM de 16 bytes. Los controladores que implementan extensiones propietarias pueden admitir un valor mayor.
MAXCMD
NN
Indica el número de espacios de nombres válidos presentes para el controlador.
ONCS
Estructura opcional de compatibilidad con comandos NVM (ONCS) que contiene campos que indican los comandos y características opcionales de NVM compatibles con el controlador.
ONCS.Compare
El bit 0 de la estructura ONCS indica si el controlador admite el comando Compare.
Cuando este valor se establece 1
en , el controlador admite el comando Compare. Cuando este valor se borra en 0
, el controlador no admite el comando Compare.
ONCS.WriteUncorrectable
El bit 1 de la estructura ONCS indica si el controlador admite el comando Write Uncorrectable.
Cuando este valor se establece 1
en , el controlador admite el comando Write Uncorrectable. Cuando este valor se borra en 0
, el controlador no admite el comando Write Uncorrectable.
ONCS.DatasetManagement
El bit 2 de la estructura ONCS indica si el controlador admite el comando Administración de conjuntos de datos.
Cuando este valor se establece 1
en , el controlador admite el comando Administración de conjuntos de datos. Cuando este valor se borra en 0
, el controlador no admite el comando Administración de conjuntos de datos.
ONCS.WriteZeroes
El bit 3 de la estructura ONCS indica si el controlador admite el comando Write Zeroes.
Cuando este valor se establece 1
en , el controlador admite el comando Write Zeroes. Cuando este valor se borra en 0
, el controlador no admite el comando Write Zeroes.
ONCS.FeatureField
El bit 4 de la estructura ONCS indica si el controlador admite el campo Guardar en el comando Establecer características y el campo Seleccionar del comando Obtener características.
Cuando este valor se establece 1
en , el controlador admite el campo Guardar en el comando Establecer características y el campo Seleccionar en el comando Obtener características.
Cuando este valor se borra en 0
, el controlador no admite el campo Guardar en el comando Establecer características y el campo Seleccionar del comando Obtener características.
ONCS.Reservations
El bit 5 de la estructura ONCS indica si el controlador admite reservas.
Cuando este valor se establece 1
en , el controlador admite reservas y también admite los siguientes comandos asociados a reservas:
- Informe de reserva
- Registro de reserva
- Adquisición de reserva
- Versión de reserva
Cuando este valor se borra en 0
, el controlador no admite reservas.
ONCS.Timestamp
El bit 6 de la estructura ONCS indica si el controlador admite la característica Marca de tiempo (NVME_FEATURE_TIMESTAMP).
ONCS.Verify
ONCS.Reserved
Se reservan bits 7:15 de la estructura ONCS .
FUSES
Estructura de compatibilidad con operaciones fusionadas (FUSES) que contiene campos que indican las operaciones fusionadas que admite el controlador.
FUSES.CompareAndWrite
El bit 0 de la estructura FUSES indica si el controlador admite la operación fusionada Compare y Write.
Cuando este valor se borra en 0
, el controlador no admite la operación fusionada Compare y Write. Compare será el primer comando de la secuencia.
FUSES.Reserved
Se reservan los bits 15:1 de la estructura FUSES .
FNA
Estructura de atributos NVM de formato (FNA) que contiene campos que indican atributos para el comando Format NVM .
FNA.FormatApplyToAll
El bit 0 de la estructura FNA indica si la operación de formato se aplica a todos los espacios de nombres o es específico de un espacio de nombres determinado.
Cuando este valor se establece 1
en , todos los espacios de nombres se configuran con los mismos atributos y un formato de cualquier espacio de nombres da como resultado un formato de todos los espacios de nombres.
Cuando este valor se borra en 0
, el controlador admite el formato por espacio de nombres.
FNA.SecureEraseApplyToAll
El bit 1 de la estructura FNA indica si la funcionalidad de borrado criptográfico y borrado de datos de usuario se aplica a todos los espacios de nombres o es específico de un espacio de nombres determinado.
Cuando este valor se establece 1
en , una borrado criptográfico de un espacio de nombres determinado como parte de un formato da como resultado una borrado criptográfico de todos los espacios de nombres y un borrado de datos de usuario de un espacio de nombres determinado como parte de un formato da como resultado una borrado de datos de usuario de todos los espacios de nombres.
Cuando este valor se borra en 0
, se realiza una borrado criptográfico o un borrado de datos de usuario como parte de un formato por espacio de nombres.
FNA.CryptographicEraseSupported
El bit 2 de la estructura de FNA indica si se admite la borrado criptográfico como parte de la funcionalidad de borrado seguro.
Cuando este valor se establece 1
en , se admite la borrado criptográfico. Cuando este valor se borra en 0
, no se admite la borrado criptográfico.
FNA.FormatSupportNSIDAllF
FNA.Reserved
Los bits 7:3 de la estructura FNA están reservados.
VWC
Estructura de caché de escritura volátil (VWC) que contiene campos que indican atributos relacionados con la presencia de una caché de escritura volátil en la implementación.
VWC.Present
El bit 0 de la estructura VWC indica que existe una caché de escritura volátil.
Cuando este valor se establece 1
en , existe una caché de escritura volátil y el host puede emitir comandos Flush y controlar si la caché de escritura volátil está habilitada con el comando Establecer características que especifica el identificador de característica de NVME_FEATURE_VOLATILE_WRITE_CACHE .
Cuando este valor se borra en 0
, una caché de escritura volátil no está presente.
Cuando una caché de escritura volátil no está presente, los comandos Flush se completan correctamente y no tienen ningún efecto, y el comando Establecer características con el conjunto de identificadores de NVME_FEATURE_VOLATILE_WRITE_CACHE producirá un error con un estado de NVME_STATUS_INVALID_FIELD_IN_COMMAND y Get Featurescon el NVME_FEATURE_VOLATILE_WRITE_CACHE conjunto de identificadores producirá un error con un estado de NVME_STATUS_INVALID_FIELD_IN_COMMAND.
VWC.FlushBehavior
VWC.Reserved
Los bits 1:7 de la estructura VWC están reservados.
AWUN
Indica el tamaño de la operación de escritura que se garantiza que se va a escribir de forma atómica en nvM en todos los espacios de nombres con cualquier formato de espacio de nombres admitido durante la operación normal. Este campo se especifica en bloques lógicos y es un valor basado en 0.
Si un espacio de nombres específico garantiza un tamaño mayor que se notifica en este campo, este tamaño específico del espacio de nombres se notifica en el campo NAWUN de la estructura de datos Identificar espacio de nombres.
Si se envía un comando de escritura con un tamaño menor o igual que el valor de AWUN , se garantiza que el host sea atómico para el NVM con respecto a otros comandos de lectura o escritura. Si se envía un comando de escritura con un tamaño mayor que el valor de AWUN , no hay ninguna garantía de atomicidad del comando.
El valor de AWUN no tiene ninguna aplicabilidad para escribir errores causados por un error de alimentación. Para obtener más información, vea el campo Atomic Write Unit Power Fail (AWUPF).
Un valor de FFFFh
indica que todos los comandos son atómicos, ya que es el tamaño de comando más grande. Las implementaciones deben admitir un mínimo de 128 KB, que se escalan adecuadamente en función del tamaño de acceso a bloques lógicos (LBA).
AWUPF
Indica el tamaño de la operación de escritura que se garantiza que se va a escribir atómicamente en nvM en todos los espacios de nombres con cualquier formato de espacio de nombres compatible durante un error de alimentación o una condición de error. Este campo se especifica en bloques lógicos y es un valor basado en 0.
Si un espacio de nombres específico garantiza un tamaño mayor que se notifica en este campo, este tamaño específico del espacio de nombres se notifica en el campo NAWUPF en la estructura de datos Identificar espacio de nombres. El valor de AWUPF debe ser menor o igual que el valor de AWUN .
Si se envía un comando de escritura con un tamaño menor o igual que el valor de AWUPF , se garantiza que la escritura sea atómica en el NVM con respecto a otros comandos de lectura o escritura. Si se envía un comando de escritura mayor que este tamaño, no hay ninguna garantía de atomicidad de comandos. Si el tamaño de escritura es menor o igual que el valor de AWUPF y se produce un error en el comando de escritura, los comandos de lectura posteriores de los bloques lógicos asociados devolverán datos del comando de escritura correcto anterior.
Si se envía un comando de escritura con un tamaño mayor que el valor de AWUPF , no hay ninguna garantía de datos devueltos en las lecturas posteriores de los bloques lógicos asociados.
NVSCC
Estructura de configuración de comandos específica del proveedor de NVM (NVSCC) que contiene campos que indican los valores de configuración para el control de comandos específico del proveedor de NVM.
NVSCC.CommandFormatInSpec
El bit 0 de la estructura NVSCC indica si todos los comandos específicos del proveedor de NVM usan el formato definido en la figura 13.
Cuando este valor se establece 1
en , todos los comandos específicos del proveedor de NVM usan el formato definido en la figura 13. Cuando se borra este valor en 0
, indica que el formato de todos los comandos específicos del proveedor de NVM son específicos del proveedor.
NVSCC.Reserved
Los bits 1:7 de la estructura NVSCC están reservados.
NWPC
NWPC.WriteProtect
NWPC.UntilPowerCycle
NWPC.Permanent
NWPC.Reserved
ACWU
Indica el tamaño de la operación de escritura que se garantiza que se escribirá atómicamente en NVM en todos los espacios de nombres con cualquier formato de espacio de nombres compatible para una operación de comparación y escritura fusionada.
Si un espacio de nombres específico garantiza un tamaño mayor que se notifica en este campo, este tamaño específico del espacio de nombres se notifica en el campo NACWU en la estructura de datos Identificar espacio de nombres.
Este campo se admitirá si se admite el comando Comparar y escribir fusionado. Este campo se especifica en bloques lógicos y es un valor basado en 0. Si se envía una comparación y escritura que solicita un tamaño de transferencia mayor que este valor, el controlador puede producir un error en el comando con un estado de NVME_STATUS_INVALID_FIELD_IN_COMMAND.
Si Compare y Write no es un comando fusionado compatible, el valor de este campo será 0h
.
Reserved4[2]
Campo reservado.
SGLS
Estructura de compatibilidad con SGL (SGLS) que contiene campos que especifican si se admiten Listas de recopilación de dispersión (SGL) para el conjunto de comandos NVM y los tipos de SGL admitidos.
SGLS.SGLSupported
Cuando este valor se establece 1
en , el controlador admite sgls para el conjunto de comandos NVM, incluidos los tipos de descriptores SGL Data Block, SGL Segment y SGL Last Segment. Cuando este valor se borra en 0
, el controlador no admite sgls para el conjunto de comandos nvM y todos los demás bits de este campo se borrarán en 0
.
SGLS.KeyedSGLData
SGLS.Reserved0
Campo reservado.
SGLS.BitBucketDescrSupported
Cuando este valor se establece 1
en , se admite el descriptor de cubo de bits de SGL. Cuando este valor se borra en 0
, no se admite el descriptor de cubo de bits de SGL.
SGLS.ByteAlignedContiguousPhysicalBuffer
Cuando este valor se establece 1
en , se admite el uso de un búfer físico contiguo alineado de bytes de metadatos (el campo Puntero de metadatos de la figura 12). Cuando se borra este valor en 0
, no se admite el uso de un búfer físico contiguo alineado de bytes de metadatos.
SGLS.SGLLengthLargerThanDataLength
Cuando este valor se establece 1
en , el controlador admite comandos que contienen un SGL de datos o metadatos de una longitud mayor que la cantidad de datos que se van a transferir. Cuando este valor se borra a 0
, la longitud de SGL será igual a la cantidad de datos que se van a transferir.
SGLS.MPTRSGLDescriptor
SGLS.AddressFieldSGLDataBlock
SGLS.TransportSGLData
SGLS.Reserved1
Campo reservado.
MNAN
Reserved6[224]
Los bytes 704:2047 están reservados para los atributos del conjunto de comandos de E/S.
SUBNQN[256]
Reserved7[768]
Reserved8[256]
PDS[32]
Contiene una matriz de 32 descriptores de estado de energía. Cada miembro de la matriz es un campo de 32 bits que indica las características de un descriptor de estado de energía. El formato de este campo se define en la estructura NVME_POWER_STATE_DESC .
La posición de base cero de una estructura de la matriz corresponde al nombre del Descriptor de estado de energía, de modo que power State 0 Descriptor (PSD0) está en la posición 0, Power State 1 Descriptor (PSD1) está en la posición 1, y así sucesivamente, hasta Power State 31 Descriptor (PSD31) en la posición 31.
VS[1024]
Los bytes 3072:4095 se asignan para el uso específico del proveedor.
Comentarios
Los valores de los campos VID, SN y MN se pueden combinar para formar un valor único global que identifique el subsistema NVM.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 10 |
Encabezado | nvme.h |