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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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 1en , 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