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 0
evento 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 0
comandos 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 0
comandos 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 à 1
ativaçã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 à 0
pá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 1
como , 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 1
transições de estado de energia autônomo. Quando esse valor é limpo para , o controlador não dá suporte a 0
transiçõ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 0h
o 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 1
como , 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 1
reservas 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 0
reservas.
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 à 0
operaçã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 1
como , 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 0
formato 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 1
como , 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 1
a apagamento criptográfico. Quando esse valor é limpo para , não há suporte para 0
a 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 1
como , 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 1
como , 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 1
o descritor bucket de bits SGL. Quando esse valor é limpo para , não há suporte para 0
o descritor do Bucket de Bits SGL.
SGLS.ByteAlignedContiguousPhysicalBuffer
Quando esse valor é definido como , há suporte para 1
o 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 0
o uso de um buffer físico contíguo alinhado a bytes de metadados.
SGLS.SGLLengthLargerThanDataLength
Quando esse valor é definido 1
como , 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 |