estrutura NVME_IDENTIFY_CONTROLLER_DATA (nvme.h)

Contém valores que indicam funcionalidades do controlador, recursos, atributos de conjunto de comandos e descritores de estado de energia.

Sintaxe

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;

Membros

VID

Contém o identificador de fornecedor da empresa atribuído pela Interconexão de Componentes Periféricos – Grupo de Interesse Especial (PCI-SIG).

SSVID

Contém o identificador de fornecedor da empresa atribuído pelo PCI-SIG para o subsistema.

SN[20]

Contém o número de série do subsistema NVM atribuído pelo fornecedor como uma cadeia de caracteres ASCII.

MN[40]

Contém o número do modelo para o subsistema NVM atribuído pelo fornecedor como uma cadeia de caracteres ASCII.

FR[8]

Contém a revisão de firmware atualmente ativa para o subsistema NVM.

Essas são as mesmas informações de revisão de firmware no NVME_FIRMWARE_SLOT_INFO_LOG que podem ser recuperadas com o comando Obter Página de Log.

RAB

Contém o tamanho recomendado de Intermitência de Arbitragem.

IEEE[3]

Contém o OUI (Identificador Exclusivo da Organização) para o fornecedor do controlador.

A OUI é um identificador IEEE/RAC atribuído válido que pode ser registrado em http://standards.ieee.org/develop/regauth/oui/public.html.

CMIC

Uma estrutura de E/S de Vários Caminhos do Controlador e recursos de compartilhamento de namespace (CMIC) que especifica as funcionalidades de E/S de vários caminhos e de compartilhamento de namespace do controlador e do subsistema NVM.

CMIC.MultiPCIePorts

Bit 0 da estrutura CMIC .

Quando esse valor é definido como 1, o subsistema NVM pode conter duas ou mais portas PCI Express físicas. Quando o valor é limpo para 0, o subsistema NVM contém uma única porta PCI Express.

CMIC.MultiControllers

Bit 1 da estrutura CMIC .

Quando esse valor é definido como 1, o subsistema NVM pode conter dois ou mais controladores. Quando o valor é limpo para 0, o subsistema NVM contém um único controlador.

CMIC.SRIOV

Bit 2 da estrutura CMIC .

Quando esse valor é definido como 1, o controlador é associado a uma função virtual de E/S de raiz única (SR-IOV). Quando o valor é limpo para 0, o controlador é associado a uma função PCI.

CMIC.ANAR

CMIC.Reserved

Os bits 3:7 da estrutura CMIC são reservados.

MDTS

Indica o tamanho máximo de transferência de dados entre o host e o controlador.

O host não deve enviar um comando que exceda esse tamanho de transferência. Se um comando for enviado que exceda o tamanho da transferência, o comando será anulado com um status de NVME_STATUS_INVALID_FIELD_IN_COMMAND.

O valor desse campo está em unidades do tamanho mínimo da página de memória especificado no campo MPSMIN da estrutura Funcionalidades do Controlador e é relatado como uma potência de dois (2^n). Um valor de 0h não indica nenhuma restrição no tamanho da transferência. A restrição inclui metadados se ela for intercalada com os dados de bloco lógico.

Se houver suporte para descritores do Bucket de Bits SGL, seus comprimentos serão incluídos para determinar se um comando excede o Tamanho Máximo de Transferência de Dados para buffers de dados de destino. Seu comprimento em um buffer de dados de origem não está incluído para um cálculo de Tamanho Máximo de Transferência de Dados.

CNTLID

Contém o identificador exclusivo do controlador do subsistema NVM associado ao controlador.

VER

Contém o valor relatado no registro de versão, definido no campo VS da estrutura NVME_CONTROLLER_REGISTERS .

Implementações compatíveis com a especificação NVMe versão 1.2 ou posterior relatarão um valor diferente de zero neste campo.

RTD3R

Indica a latência típica em microssegundos ao retomar do Runtime D3 (RTD3).

Implementações compatíveis com a especificação NVMe versão 1.2 ou posterior relatarão um valor diferente de zero neste campo.

RTD3E

Indica a latência típica em microssegundos para inserir o Runtime D3 (RTD3).

Implementações compatíveis com a especificação NVMe versão 1.2 ou posterior relatarão um valor diferente de zero neste campo.

OAES

Uma estrutura OAES (Eventos Assíncronos Compatíveis) opcional que contém campos que indicam se eventos assíncronos opcionais têm suporte do controlador.

Um controlador não deve enviar eventos assíncronos opcionais antes de serem habilitados pelo software host.

OAES.Reserved0

Os bits 10:31 da estrutura OAES são reservados.

OAES.NamespaceAttributeChanged

Bit 8 da estrutura OAES .

Quando esse valor é definido como 1, o controlador dá suporte ao envio do evento Namespace Attribute Changed. Quando esse valor é limpo para , o controlador não dá suporte ao 0evento Atributo de Namespace Alterado.

OAES.FirmwareActivation

Bit 9 da estrutura OAES .

Quando esse valor é definido como 1, o controlador dá suporte ao envio do evento de Ativação do Firmware. Quando esse valor é limpo para 0, o controlador não dá suporte ao evento de Ativação do Firmware.

OAES.Reserved1

Os bits 0:7 da estrutura OAES são reservados.

OAES.AsymmetricAccessChanged

OAES.PredictableLatencyAggregateLogChanged

OAES.LbaStatusChanged

OAES.EnduranceGroupAggregateLogChanged

OAES.Reserved2

OAES.ZoneInformation

OAES.Reserved3

CTRATT

Uma estrutura de Atributos do Controlador (CTRATT) que contém informações de atributo do controlador.

CTRATT.HostIdentifier128Bit

Bit 32 da estrutura CTRATT que contém um identificador de host de 128 bits.

CTRATT.NOPSPMode

Bit 31 da estrutura CTRATT que contém informações sobre o NOPS (Estado de Energia Não Operacional).

CTRATT.NVMSets

Bit 30 da estrutura CTRATT que contém informações sobre conjuntos de comandos NVM.

CTRATT.ReadRecoveryLevels

Bit 29 da estrutura CTRATT que contém informações sobre níveis de recuperação de leitura.

CTRATT.EnduranceGroups

Bit 28 da estrutura CTRATT que contém informações sobre níveis de grupos de resistência.

CTRATT.PredictableLatencyMode

CTRATT.TBKAS

CTRATT.NamespaceGranularity

CTRATT.SQAssociations

CTRATT.UUIDList

CTRATT.Reserved0

Os bits 0:27 da estrutura CTRATT são 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]

Um campo reservado de 140 bytes.

CNTRLTYPE

FGUID[16]

CRDT1

CRDT2

CRDT3

Reserved0_1[106]

ReservedForManagement[16]

Reservado para o Gerenciamento de NVMe.

OACS

Uma estrutura OACS (Suporte de Comando Administração) opcional que contém campos que indicam os comandos opcionais Administração compatíveis com o controlador.

OACS.SecurityCommands

O bit 0 da estrutura OACS indica se o controlador dá suporte aos comandos Envio de Segurança e Recebimento de Segurança.

Quando esse valor é definido como 1, o controlador dá suporte aos comandos Envio de Segurança e Recebimento de Segurança. Quando esse valor é limpo para 0, o controlador não dá suporte aos comandos Envio de Segurança e Recebimento de Segurança.

OACS.FormatNVM

O bit 1 da estrutura OACS indica se o controlador dá suporte ao comando Formatar NVM.

Quando esse valor é definido como 1, o controlador dá suporte ao comando Formatar NVM. Quando esse valor é limpo para 0, o controlador não dá suporte ao comando Formatar NVM.

OACS.FirmwareCommands

O bit 2 da estrutura OACS indica se o controlador dá suporte aos comandos Firmware Commit e Firmware Image Download.

Quando esse valor é definido como 1, o controlador dá suporte aos comandos Firmware Commit e Firmware Image Download. Quando esse valor é limpo para , o controlador não dá suporte aos 0comandos Firmware Commit e Firmware Image Download.

OACS.NamespaceCommands

O bit 3 da estrutura OACS indica se o controlador dá suporte aos comandos Gerenciamento de Namespace e Anexo de Namespace.

Quando esse valor é definido como 1, o controlador dá suporte aos comandos Gerenciamento de Namespace e Anexo de Namespace. Quando esse valor é limpo para , o controlador não dá suporte aos 0comandos Gerenciamento de Namespace e Anexo de Namespace.

OACS.DeviceSelfTest

O bit 4 da estrutura OACS indica se o controlador dá suporte ao comando De auto-teste do dispositivo.

OACS.Directives

O bit 5 da estrutura OACS indica se o controlador dá suporte aos comandos Envio de Diretiva e Recebimento de Diretiva.

OACS.NVMeMICommands

OACS.VirtualizationMgmt

OACS.DoorBellBufferConfig

OACS.GetLBAStatus

OACS.Reserved

Bits 6:15: são reservados.

ACL

Indica o número máximo de comandos Abort pendentes simultaneamente compatíveis com o controlador.

Esse é um valor baseado em 0. As implementações devem dar suporte ao mínimo de quatro comandos Abort pendentes simultaneamente.

AERL

Indica o número máximo de comandos de Solicitação de Evento Assíncrona pendentes simultaneamente compatíveis com o controlador.

Esse é um valor baseado em 0. As implementações devem dar suporte a um mínimo de quatro comandos pendentes de Solicitação de Evento Assíncrona simultaneamente.

FRMW

Uma estrutura de FRMW (Firmware Atualizações) que contém campos que indicam funcionalidades relacionadas a atualizações de firmware.

FRMW.Slot1ReadOnly

O bit 0 da estrutura FRMW indica se o primeiro slot de firmware (slot 1) é somente leitura.

Quando esse valor é definido como 1, o primeiro slot de firmware (slot 1) é somente leitura. Quando esse valor é limpo para 0, o primeiro slot de firmware (slot 1) é leitura/gravação. As implementações podem optar por ter uma imagem de firmware somente leitura de linha de base.

FRMW.SlotCount

Os bits 1:3 da estrutura FRMW indicam o número de slots de firmware aos quais o controlador dá suporte.

Esse campo especifica um valor entre um e sete, indicando que pelo menos um slot de firmware tem suporte e até sete no máximo. Isso corresponde aos slots de firmware de 1 a 7.

FRMW.ActivationWithoutReset

O bit 4 da estrutura FRMW indica se o controlador dá suporte à ativação de firmware sem redefinição.

Quando esse valor é definido como , o controlador dá suporte à 1ativação de firmware sem uma redefinição. Quando esse valor é limpo para 0, o controlador requer uma redefinição para que o firmware seja ativado.

FRMW.Reserved

Os bits 5:7 da estrutura FRMW são reservados.

LPA

Uma estrutura LPA (Atributos de Página de Log) que contém campos que indicam atributos opcionais para páginas de log acessadas usando o comando Obter Página de Log .

LPA.SmartPagePerNamespace

O bit 0 da estrutura LPA indica se o controlador dá suporte à página de log de informações smart/integridade por namespace.

Quando esse valor é definido como 1, o controlador dá suporte à página de log de informações SMART/Health por namespace. Quando esse valor é limpo para , o controlador não dá suporte à 0página de log de informações smart/integridade por namespace.

LPA.CommandEffectsLog

O bit 1 da estrutura LPA indica se o controlador dá suporte à página de log efeitos de comando.

Quando esse valor é definido como 1, o controlador dá suporte à página de log Efeitos de Comando. Quando esse valor é limpo para 0, o controlador não dá suporte à página de log Efeitos de Comando.

LPA.LogPageExtendedData

O bit 2 da estrutura LPA indica se o controlador dá suporte a Dados Estendidos da Página de Log.

LPA.TelemetrySupport

O bit 3 da estrutura LPA indica se o controlador dá suporte ao Suporte a Telemetria.

LPA.PersistentEventLog

LPA.Reserved0

LPA.TelemetryDataArea4

LPA.Reserved1

ELPE

Indica o número de entradas de log de Informações de Erro armazenadas pelo controlador. Esse campo é um valor baseado em 0.

NPSS

Indica o número de estados de energia do NVM Express compatíveis com o controlador. Esse é um valor baseado em 0.

Os estados de energia são numerados sequencialmente a partir do estado de energia 0. Um controlador deve dar suporte a pelo menos um estado de energia (por exemplo, estado de energia 0) e pode dar suporte a até 31 estados de energia adicionais, para um total de 32.

AVSCC

Uma estrutura AVSCC (Configuração de Comando Específica do Fornecedor Administração) que contém campos que indicam as definições de configuração para Administração tratamento de comando específico do fornecedor.

AVSCC.CommandFormatInSpec

O bit 0 da estrutura AVSCC indica se todos os comandos específicos do fornecedor Administração usam o formato de comando definido na estrutura NVME_COMMAND.

Quando esse valor é limpo para 0, ele indica que o formato de todos os comandos específicos do fornecedor Administração são específicos do fornecedor. Quando esse valor é definido 1como , ele indica que todos os comandos específicos do fornecedor Administração usarão a estrutura NVME_COMMAND.

AVSCC.Reserved

Os bits 1:7 da estrutura AVSCC são reservados.

APSTA

Uma estrutura APSTA (Atributos de Transição de Estado de Energia Autônomo) que contém campos que indicam os atributos do recurso de transição de estado de energia autônomo.

APSTA.Supported

O bit 0 da estrutura APSTA indica se o controlador dá suporte a transições de estado de energia autônomo.

Quando esse valor é definido como , o controlador dá suporte a 1transições de estado de energia autônomo. Quando esse valor é limpo para , o controlador não dá suporte a 0transições de estado de energia autônomo.

APSTA.Reserved

Os bits 1:7 da estrutura APSTA são reservados.

WCTEMP

Indica o valor mínimo do campo Temperatura Composta (relatado no log informações de integridade/SMART que indica uma condição de superaquecimento durante a qual a operação do controlador continua.

A correção imediata é recomendada (por exemplo, resfriamento adicional ou redução de carga de trabalho). A plataforma deve se esforçar para manter uma temperatura composta abaixo desse valor.

Um valor de 0h neste campo indica que nenhum valor de limite de temperatura de aviso é relatado pelo controlador. Implementações compatíveis com a especificação NVMe versão 1.2 ou posterior devem relatar um valor diferente de zero nesse campo. É recomendável que as implementações relatem um valor de 0157h neste campo.

CCTEMP

Indica o valor mínimo do campo Temperatura Composta (relatado no log [INFORMAÇÕES INTELIGENTES/de Integridade](ns-nvme-nvme_health_info_log.md) que indica uma condição crítica de superaquecimento. Por exemplo, uma condição que pode impedir a operação normal contínua, a possibilidade de perda de dados, o desligamento automático do dispositivo, a limitação de desempenho extrema ou danos permanentes.

Um valor de 0h neste campo indica que nenhum valor crítico do limite de temperatura é relatado pelo controlador. Implementações compatíveis com a especificação NVMe versão 1.2 ou posterior devem relatar um valor diferente de zero nesse campo.

MTFA

Indica o tempo máximo que o controlador interrompe temporariamente o processamento de comandos para ativar a imagem de firmware.

Esse campo será válido se o controlador der suporte à ativação de firmware sem redefinição. O valor MFTA é especificado em unidades de 100 milissegundos. Um valor de 0h indica que o tempo máximo é indefinido.

HMPRE

Indica o tamanho preferencial que o host deve alocar para o recurso buffer de memória do host em unidades de 4 KB.

Esse valor deve ser maior ou igual ao HMMIN (Tamanho Mínimo do Buffer de Memória do Host).

Se esse campo for diferente de zero, o recurso Buffer de Memória do Host terá suporte. Quando esse valor é limpo para , não há suporte para 0ho recurso Buffer de Memória do Host.

HMMIN

Indica o tamanho mínimo que o host deve alocar para o recurso buffer de memória do host em unidades de 4 KB.

Quando esse valor é limpo para 0, o host é solicitado a alocar qualquer quantidade de memória de host possível até o valor de HMPRE .

TNVMCAP[16]

Indica a capacidade total de NVM, em bytes, do subsistema NVM.

Esse campo terá suporte se houver suporte para os comandos Gerenciamento de Namespace e Anexo de Namespace.

UNVMCAP[16]

Indica a capacidade de NVM não alocada, em bytes, do subsistema NVM.

Esse campo terá suporte se houver suporte para os comandos Gerenciamento de Namespace e Anexo de Namespace.

RPMBS

Uma estrutura RPMBS (Suporte a Blocos de Memória Protegidos de Reprodução) que contém campos que indicam se o controlador dá suporte a um ou mais RPMBs (Blocos de Memória Protegidos por Reprodução) e aos recursos associados.

RPMBS.RPMBUnitCount

Indica o número de destinos RPMB aos quais o controlador dá suporte.

Todos os destinos pmb com suporte (Bloco de Memória Protegido) têm os mesmos recursos definidos no campo RPMBS . Um valor de 0h indica que o controlador não dá suporte a RPMBs. Se esse valor for diferente de zero, o controlador oferecerá suporte aos comandos Envio de Segurança e Recebimento de Segurança.

RPMBS.AuthenticationMethod

Indica o método de autenticação usado para acessar todos os RPMBs (Blocos de Memória Protegidos por Reprodução) no controlador. Os valores para este campo são:

Valor Definição
000b HMAC SHA-256
001b-111b Reservado

RPMBS.Reserved0

Um campo reservado.

RPMBS.TotalSize

Indica o tamanho total de cada RPMB com suporte no controlador em unidades de 128 KB. Esse é um valor baseado em 0. Um valor de 0h indica um tamanho de 128 KB.

RPMBS.AccessSize

Indica o tamanho que pode ser lido ou gravado por acesso RPMB pelos comandos Envio de Segurança ou Recebimento de Segurança para esse controlador em unidades de 512B.

Esse é um valor baseado em 0. Um valor de 0h indica um tamanho de 512B.

EDSTT

Indica o Tempo de Auto-teste do Dispositivo Estendido (EDSTT).

DSTO

Indica as Opções de Auto-teste do Dispositivo (DSTO).

FWUG

Indica a granularidade de atualização de firmware (FWUG).

KAS

Indica o SUPORTE keep alive (KAS).

HCTMA

Uma estrutura HCTMA (Atributos de Gerenciamento Térmico Controlado por Host).

HCTMA.Supported

Indica se há suporte para atributos de Gerenciamento Térmico Controlado por Host.

HCTMA.Reserved

Esse campo de estrutura HCTMA é reservado.

MNTMT

Temperatura mínima de gerenciamento térmico (MNTMT)

MXTMT

Temperatura máxima de gerenciamento térmico (MXTMT)

SANICAP

Sanitize Capabilities (SANICAP)

SANICAP.CryptoErase

O controlador dá suporte ao Crypto Erase Sanitize

SANICAP.BlockErase

O Controlador dá suporte ao Block Erase Sanitize

SANICAP.Overwrite

O controlador dá suporte à substituição de Santize

SANICAP.Reserved

SANICAP.NDI

SANICAP.NODMMAS

HMMINDS

HMMAXD

NSETIDMAX

NVM Set Identifier Maximum

ENDGIDMAX

ANATT

ANACAP

ANACAP.OptimizedState

ANACAP.NonOptimizedState

ANACAP.InaccessibleState

ANACAP.PersistentLossState

ANACAP.ChangeState

ANACAP.Reserved

ANACAP.StaticANAGRPID

ANACAP.SupportNonZeroANAGRPID

ANAGRPMAX

NANAGRPID

PELS

Reserved1[156]

Um campo reservado.

SQES

Uma estrutura de tamanho de entrada de fila de envio (SQES) que contém campos que indicam o tamanho de entrada da Fila de Envio necessário e máximo ao usar o conjunto de comandos NVM.

SQES.RequiredEntrySize

Os bits 0:3 da estrutura SQES indicam o tamanho de entrada da fila de envio necessário ao usar o conjunto de comandos NVM.

Esse é o tamanho mínimo de entrada que pode ser usado. O valor está em bytes e é relatado como uma potência de dois (2^n). O valor necessário é 6, que corresponde a 64 bytes.

SQES.MaxEntrySize

Os bits 4:7 da estrutura SQES indicam o tamanho máximo da entrada fila de envio ao usar o conjunto de comandos NVM.

Esse valor é maior ou igual ao SQES. Valor RequiredEntrySize . O valor está em bytes e é relatado como uma potência de dois (2^n). O valor recomendado é 6, correspondente a um tamanho de entrada SQ de conjunto de comandos NVM padrão de 64 bytes. Os controladores que implementam extensões proprietárias podem dar suporte a um valor maior.

CQES

Uma estrutura CQES (Tamanho da Entrada da Fila de Conclusão) que contém campos que indicam o tamanho de entrada da Fila de Conclusão necessário e máximo ao usar o conjunto de comandos NVM.

CQES.RequiredEntrySize

Os bits 0:3 da estrutura CQES indicam o tamanho de entrada da Fila de Conclusão necessário ao usar o conjunto de comandos NVM.

Esse é o tamanho mínimo de entrada que pode ser usado. O valor está em bytes e é relatado como uma potência de dois (2^n). O valor necessário é 4, que corresponde a 16 bytes.

CQES.MaxEntrySize

Os bits 4:7 da estrutura CQES indicam o tamanho máximo da entrada fila de conclusão ao usar o conjunto de comandos NVM.

Esse valor é maior ou igual ao tamanho de entrada CQ necessário. O valor está em bytes e é relatado como uma potência de dois (2^n). O valor recomendado é 4, correspondente a um tamanho de entrada CQ de conjunto de comandos NVM padrão de 16 bytes. Os controladores que implementam extensões proprietárias podem dar suporte a um valor maior.

MAXCMD

NN

Indica o número de namespaces válidos presentes para o controlador.

ONCS

Uma estrutura oncs (suporte a comando nvm) opcional que contém campos que indicam os comandos e recursos opcionais de NVM compatíveis com o controlador.

ONCS.Compare

O bit 0 da estrutura ONCS indica se o controlador dá suporte ao comando Compare.

Quando esse valor é definido como 1, o controlador dá suporte ao comando Comparar. Quando esse valor é limpo para 0, o controlador não dá suporte ao comando Compare.

ONCS.WriteUncorrectable

O bit 1 da estrutura ONCS indica se o controlador dá suporte ao comando Write Uncorrectable.

Quando esse valor é definido como 1, o controlador dá suporte ao comando Write Uncorrectable. Quando esse valor é limpo para 0, o controlador não dá suporte ao comando Write Uncorrectable.

ONCS.DatasetManagement

O bit 2 da estrutura ONCS indica se o controlador dá suporte ao comando Gerenciamento de Conjunto de Dados.

Quando esse valor é definido como 1, o controlador dá suporte ao comando Gerenciamento de Conjunto de Dados. Quando esse valor é limpo para 0, o controlador não dá suporte ao comando Gerenciamento de Conjunto de Dados.

ONCS.WriteZeroes

O bit 3 da estrutura ONCS indica se o controlador dá suporte ao comando Write Zeroes.

Quando esse valor é definido como 1, o controlador dá suporte ao comando Write Zeroes. Quando esse valor é limpo para 0, o controlador não dá suporte ao comando Gravar Zeros.

ONCS.FeatureField

O bit 4 da estrutura ONCS indica se o controlador dá suporte ao campo Salvar no comando Definir Recursos e ao campo Selecionar no comando Obter Recursos.

Quando esse valor é definido 1como , o controlador dá suporte ao campo Salvar no comando Definir Recursos e ao campo Selecionar no comando Obter Recursos. Quando esse valor é limpo para 0, o controlador não dá suporte ao campo Salvar no comando Definir Recursos e ao campo Selecionar no comando Obter Recursos.

ONCS.Reservations

O bit 5 da estrutura ONCS indica se o controlador dá suporte a reservas.

Quando esse valor é definido como , o controlador dá suporte a 1reservas e também dá suporte aos seguintes comandos associados a reservas:

  • Relatório de Reserva
  • Registro de Reserva
  • Aquisição de reserva
  • Liberação de Reserva

Quando esse valor é limpo para , o controlador não dá suporte a 0reservas.

ONCS.Timestamp

O bit 6 da estrutura ONCS indica se o controlador dá suporte ao recurso carimbo de data/hora (NVME_FEATURE_TIMESTAMP).

ONCS.Verify

ONCS.Reserved

Os bits 7:15 da estrutura ONCS são reservados.

FUSES

Uma estrutura fused operation support (FUSES) que contém campos que indicam as operações fundidas às quais o controlador dá suporte.

FUSES.CompareAndWrite

O bit 0 da estrutura FUSES indica se o controlador dá suporte à operação fundida Comparar e Gravar.

Quando esse valor é limpo para , o controlador não dá suporte à 0operação de comparação e gravação fundida. Compare será o primeiro comando na sequência.

FUSES.Reserved

Os bits 15:1 da estrutura FUSES são reservados.

FNA

Uma estrutura FNA (Format NVM Attributes) que contém campos que indicam atributos para o comando Formatar NVM .

FNA.FormatApplyToAll

O bit 0 da estrutura FNA indica se a operação de formato se aplica a todos os namespaces ou é específica a um namespace específico.

Quando esse valor é definido 1como , todos os namespaces são configurados com os mesmos atributos e um formato de qualquer namespace resulta em um formato de todos os namespaces. Quando esse valor é limpo para , o controlador dá suporte ao 0formato por namespace.

FNA.SecureEraseApplyToAll

O bit 1 da estrutura FNA indica se a funcionalidade de apagamento criptográfico e de apagamento de dados do usuário se aplica a todos os namespaces ou é específica a um namespace específico.

Quando esse valor é definido 1como , um apagamento criptográfico de um namespace específico como parte de um formato resulta em uma apagamento criptográfico de todos os namespaces e um apagamento de dados do usuário de um namespace específico como parte de um formato resulta em um apagamento de dados do usuário de todos os namespaces. Quando esse valor é limpo para 0, uma apagamento criptográfico ou os dados do usuário apagados como parte de um formato são executados por namespace.

FNA.CryptographicEraseSupported

O bit 2 da estrutura FNA indica se a eliminação criptográfica tem suporte como parte da funcionalidade de apagamento seguro.

Quando esse valor é definido como , há suporte para 1a apagamento criptográfico. Quando esse valor é limpo para , não há suporte para 0a apagamento criptográfico.

FNA.FormatSupportNSIDAllF

FNA.Reserved

Os bits 7:3 da estrutura FNA são reservados.

VWC

Uma estrutura vwc (cache de gravação volátil) que contém campos que indicam atributos relacionados à presença de um cache de gravação volátil na implementação.

VWC.Present

O bit 0 da estrutura VWC indica que um cache de gravação volátil está presente.

Quando esse valor é definido 1como , um cache de gravação volátil está presente e o host pode emitir comandos Flush e controlar se o cache de gravação volátil está habilitado com o comando Definir Recursos especificando o identificador de recurso NVME_FEATURE_VOLATILE_WRITE_CACHE .

Quando esse valor é limpo para 0, um cache de gravação volátil não está presente.

Quando um cache de gravação volátil não estiver presente, os comandos Flush serão concluídos com êxito e não terão efeito, e o comando Definir Recursos com o conjunto de identificadores NVME_FEATURE_VOLATILE_WRITE_CACHE falhará com um status de NVME_STATUS_INVALID_FIELD_IN_COMMAND e Obter Recursos com o conjunto de identificadores NVME_FEATURE_VOLATILE_WRITE_CACHE falhará com um status de NVME_STATUS_INVALID_FIELD_IN_COMMAND.

VWC.FlushBehavior

VWC.Reserved

Os bits 1:7 da estrutura VWC são reservados.

AWUN

Indica o tamanho da operação de gravação com garantia de ser gravado atomicamente na NVM em todos os namespaces com qualquer formato de namespace com suporte durante a operação normal. Esse campo é especificado em blocos lógicos e é um valor baseado em 0.

Se um namespace específico garantir um tamanho maior do que o relatado nesse campo, esse tamanho específico do namespace será relatado no campo NAWUN da estrutura de dados Identificar Namespace .

Se um comando de gravação for enviado com tamanho menor ou igual ao valor de AWUN , o host tem a garantia de que o comando de gravação é atômico para a NVM em relação a outros comandos de leitura ou gravação. Se um comando de gravação for enviado com tamanho maior que o valor AWUN , não haverá garantia de atomicidade de comando.

O valor AWUN não tem nenhuma aplicabilidade para gravar erros causados por falha de energia. Para obter mais informações, consulte o campo AWUPF (Falha de Energia da Unidade de Gravação Atômica).

Um valor de FFFFh indica que todos os comandos são atômicos, pois esse é o maior tamanho de comando. As implementações devem dar suporte a um mínimo de 128 KB, dimensionados adequadamente com base no tamanho do LBA (Acesso a Bloco Lógico).

AWUPF

Indica o tamanho da operação de gravação com garantia de ser gravado atomicamente na NVM em todos os namespaces com qualquer formato de namespace com suporte durante uma falha de energia ou condição de erro. Esse campo é especificado em blocos lógicos e é um valor baseado em 0.

Se um namespace específico garantir um tamanho maior do que o relatado nesse campo, esse tamanho específico do namespace será relatado no campo NAWUPF na estrutura de dados Identificar Namespace . O valor AWUPF deve ser menor ou igual ao valor AWUN .

Se um comando de gravação for enviado com tamanho menor ou igual ao valor AWUPF , o host será garantido de que a gravação é atômica para a NVM em relação a outros comandos de leitura ou gravação. Se um comando de gravação for enviado que seja maior que esse tamanho, não haverá garantia de atomicidade de comando. Se o tamanho da gravação for menor ou igual ao valor AWUPF e o comando write falhar, os comandos de leitura subsequentes para os blocos lógicos associados retornarão dados do comando de gravação bem-sucedido anterior.

Se um comando de gravação for enviado com tamanho maior que o valor AWUPF , não haverá garantia de dados retornados em leituras subsequentes dos blocos lógicos associados.

NVSCC

Uma estrutura NVSCC (Configuração de Comando Específica do Fornecedor de NVM) que contém campos que indicam as definições de configuração para tratamento de comando específico do fornecedor de NVM.

NVSCC.CommandFormatInSpec

O bit 0 da estrutura NVSCC indica se todos os Comandos Específicos do Fornecedor de NVM usam o formato definido na Figura 13.

Quando esse valor é definido como 1, todos os Comandos Específicos do Fornecedor de NVM usam o formato definido na Figura 13. Quando esse valor é limpo para 0, ele indica que o formato de todos os Comandos Específicos do Fornecedor de NVM é específico do fornecedor.

NVSCC.Reserved

Os bits 1:7 da estrutura NVSCC são reservados.

NWPC

NWPC.WriteProtect

NWPC.UntilPowerCycle

NWPC.Permanent

NWPC.Reserved

ACWU

Indica o tamanho da operação de gravação com garantia de ser gravado atomicamente na NVM em todos os namespaces com qualquer formato de namespace com suporte para uma operação de comparação e gravação fundida.

Se um namespace específico garantir um tamanho maior do que o relatado nesse campo, esse tamanho específico do namespace será relatado no campo NACWU na estrutura de dados Identificar Namespace .

Esse campo terá suporte se houver suporte para o comando Fused Compare e Write. Esse campo é especificado em blocos lógicos e é um valor baseado em 0. Se for enviado um Compare e Write que solicite um tamanho de transferência maior que esse valor, o controlador poderá falhar no comando com um status de NVME_STATUS_INVALID_FIELD_IN_COMMAND.

Se Comparar e Gravar não for um comando fundido com suporte, o valor desse campo será 0h.

Reserved4[2]

Um campo reservado.

SGLS

Uma estrutura SGLS (Suporte A SGL) que contém campos que especificam se o SGL (Listas de Coleta de Dispersão) tem suporte para o Conjunto de Comandos NVM e os tipos SGL com suporte.

SGLS.SGLSupported

Quando esse valor é definido 1como , o controlador dá suporte a SGLs para o conjunto de comandos NVM, incluindo os tipos de descritor SGL Data Block, SGL Segment e SGL Last Segment. Quando esse valor é limpo para 0, o controlador não dá suporte a SGLs para o conjunto de comandos NVM e todos os outros bits nesse campo serão limpos para 0.

SGLS.KeyedSGLData

SGLS.Reserved0

Um campo reservado.

SGLS.BitBucketDescrSupported

Quando esse valor é definido como , há suporte para 1o descritor bucket de bits SGL. Quando esse valor é limpo para , não há suporte para 0o descritor do Bucket de Bits SGL.

SGLS.ByteAlignedContiguousPhysicalBuffer

Quando esse valor é definido como , há suporte para 1o uso de um buffer físico contíguo alinhado de bytes de metadados (o campo Ponteiro de Metadados na Figura 12). Quando esse valor é limpo para , não há suporte para 0o uso de um buffer físico contíguo alinhado a bytes de metadados.

SGLS.SGLLengthLargerThanDataLength

Quando esse valor é definido 1como , o controlador dá suporte a comandos que contêm um SGL de dados ou metadados de um comprimento maior do que a quantidade de dados a serem transferidos. Quando esse valor for limpo para 0, o comprimento do SGL será igual à quantidade de dados a serem transferidos.

SGLS.MPTRSGLDescriptor

SGLS.AddressFieldSGLDataBlock

SGLS.TransportSGLData

SGLS.Reserved1

Um campo reservado.

MNAN

Reserved6[224]

Os bytes 704:2047 são reservados para atributos de conjunto de comandos de E/S.

SUBNQN[256]

Reserved7[768]

Reserved8[256]

PDS[32]

Contém uma matriz de 32 Descritores do Power State. Cada membro da matriz é um campo de 32 bits que indica as características de um Descritor do Power State. O formato desse campo é definido na estrutura NVME_POWER_STATE_DESC .

A posição baseada em zero de uma estrutura na matriz corresponde ao nome do Descritor do Power State, de modo que o Descritor do Power State 0 (PSD0) esteja na posição 0, o Descritor do Power State 1 (PSD1) esteja na posição 1 e assim por diante, até o Descritor do Power State 31 (PSD31) na posição 31.

VS[1024]

Os bytes 3072:4095 são alocados para uso específico do fornecedor.

Comentários

Os valores dos campos VID, SN e MN podem ser combinados para formar um valor globalmente exclusivo que identifica o subsistema NVM.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10
Cabeçalho nvme.h