Поделиться через


структура NVME_IDENTIFY_CONTROLLER_DATA (nvme.h)

Содержит значения, указывающие возможности контроллера, функции, атрибуты набора команд и дескрипторы состояния питания.

Синтаксис

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;

Члены

VID

Содержит идентификатор поставщика компании, назначенный периферийными компонентами Interconnect — специальная группа интересов (PCI-SIG).

SSVID

Содержит идентификатор поставщика компании, назначенный PCI-SIG для подсистемы.

SN[20]

Содержит серийный номер подсистемы NVM, назначенный поставщиком в качестве строки ASCII.

MN[40]

Содержит номер модели для подсистемы NVM, назначенной поставщиком в качестве строки ASCII.

FR[8]

Содержит текущую версию встроенного ПО для подсистемы NVM.

Это те же сведения о редакции встроенного ПО в NVME_FIRMWARE_SLOT_INFO_LOG , которые можно получить с помощью команды Получить страницу журнала.

RAB

Содержит рекомендуемый размер третейского ускорения.

IEEE[3]

Содержит уникальный идентификатор организации (OUI) для поставщика контроллера.

OUI является допустимым назначенным идентификатором IEEE/RAC, который можно зарегистрировать в http://standards.ieee.org/develop/regauth/oui/public.html.

CMIC

Структура cmic контроллера с несколькими путями ввода-вывода и общего доступа к пространству имен (CMIC), которая определяет возможности многопутевого ввода-вывода и совместного использования пространства имен контроллера и подсистемы NVM.

CMIC.MultiPCIePorts

Бит 0 структуры CMIC .

Если это значение равно 1, подсистема NVM может содержать два или более физических портов PCI Express. Когда значение очищается в 0, подсистема NVM содержит один порт PCI Express.

CMIC.MultiControllers

Бит 1 структуры CMIC .

Если для этого значения задано 1значение , подсистема NVM может содержать два или более контроллеров. Если значение очищается до 0, подсистема NVM содержит один контроллер.

CMIC.SRIOV

Бит 2 структуры CMIC .

Если для этого значения задано значение 1, контроллер связывается с виртуальной функцией виртуализации ввода-вывода с одним корнем (SR-IOV). Когда значение очищается до 0, контроллер связывается с функцией PCI.

CMIC.ANAR

CMIC.Reserved

Зарезервированы биты 3:7 структуры CMIC .

MDTS

Указывает максимальный размер передаваемых данных между узлом и контроллером.

Узел не должен отправлять команду, превышающую этот размер передачи. Если отправляется команда, размер которой превышает размер передачи, она прерывается с состоянием NVME_STATUS_INVALID_FIELD_IN_COMMAND.

Значение этого поля содержится в единицах минимального размера страницы памяти, указанного в поле MPSMIN структуры возможностей контроллера , и отображается в виде двух значений (2^n). Значение указывает на отсутствие ограничений 0h на размер передачи. Ограничение включает метаданные, если они чередуются с данными логического блока.

Если поддерживаются дескрипторы битового контейнера SGL, их длина включается в определение того, превышает ли команда максимальный размер передаваемых данных для целевых буферов данных. Их длина в буфере исходных данных не включается для вычисления максимального размера передаваемых данных.

CNTLID

Содержит уникальный идентификатор контроллера подсистемы NVM, связанный с контроллером.

VER

Содержит значение, указанное в регистре версии, определенное в поле VS структуры NVME_CONTROLLER_REGISTERS .

Реализации, соответствующие спецификации NVMe версии 1.2 или более поздней, будут содержать ненулевое значение в этом поле.

RTD3R

Указывает типичную задержку в микросекундах при возобновлении выполнения D3 (RTD3).

Реализации, соответствующие спецификации NVMe версии 1.2 или более поздней, будут содержать ненулевое значение в этом поле.

RTD3E

Указывает типичную задержку в микросекундах для входа в среду выполнения D3 (RTD3).

Реализации, соответствующие спецификации NVMe версии 1.2 или более поздней, будут содержать ненулевое значение в этом поле.

OAES

Структура необязательных асинхронных событий (OAES), содержащая поля, указывающие, поддерживаются ли контроллером необязательные асинхронные события.

Контроллер не должен отправлять необязательные асинхронные события, прежде чем они будут включены программным обеспечением узла.

OAES.Reserved0

Биты 10:31 структуры OAES зарезервированы.

OAES.NamespaceAttributeChanged

Бит 8 структуры OAES .

Если для этого значения задано 1значение , контроллер поддерживает отправку события Namespace Attribute Changed. Если это значение очищается в 0, контроллер не поддерживает событие Namespace Attribute Changed.

OAES.FirmwareActivation

Бит 9 структуры OAES .

Если для этого значения задано значение 1, контроллер поддерживает отправку события активации встроенного ПО. Если это значение снято в 0, контроллер не поддерживает событие активации встроенного ПО.

OAES.Reserved1

Зарезервированы биты 0:7 структуры OAES .

OAES.AsymmetricAccessChanged

OAES.PredictableLatencyAggregateLogChanged

OAES.LbaStatusChanged

OAES.EnduranceGroupAggregateLogChanged

OAES.Reserved2

OAES.ZoneInformation

OAES.Reserved3

CTRATT

Структура атрибутов контроллера (CTRATT), содержащая сведения об атрибутах контроллера.

CTRATT.HostIdentifier128Bit

Бит 32 структуры CTRATT , содержащей 128-разрядный идентификатор узла.

CTRATT.NOPSPMode

Бит 31 структуры CTRATT , содержащей сведения о состоянии неработающей мощности (NOPS).

CTRATT.NVMSets

Бит 30 структуры CTRATT , содержащей сведения о наборах команд NVM.

CTRATT.ReadRecoveryLevels

Бит 29 структуры CTRATT , содержащей сведения об уровнях восстановления чтения.

CTRATT.EnduranceGroups

Бит 28 структуры CTRATT , содержащей сведения об уровнях групп выносливости.

CTRATT.PredictableLatencyMode

CTRATT.TBKAS

CTRATT.NamespaceGranularity

CTRATT.SQAssociations

CTRATT.UUIDList

CTRATT.Reserved0

Зарезервированы биты 0:27 структуры CTRATT .

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]

Зарезервированное поле размером 140 байт.

CNTRLTYPE

FGUID[16]

CRDT1

CRDT2

CRDT3

Reserved0_1[106]

ReservedForManagement[16]

Зарезервировано для управления NVMe.

OACS

Структура необязательного Администратор поддержки команд (OACS), содержащая поля, указывающие необязательные команды Администратор, поддерживаемые контроллером.

OACS.SecurityCommands

Бит 0 структуры OACS указывает, поддерживает ли контроллер команды отправки и получения безопасности.

Если для этого значения задано значение 1, контроллер поддерживает команды отправки и получения безопасности. Если это значение снято в 0, контроллер не поддерживает команды Отправки безопасности и Получения безопасности.

OACS.FormatNVM

Бит 1 структуры OACS указывает, поддерживает ли контроллер команду Формат NVM.

Если для этого значения задано 1значение , контроллер поддерживает команду Формат NVM. Если это значение будет снято в 0, контроллер не поддерживает команду Форматировать NVM.

OACS.FirmwareCommands

Бит 2 структуры OACS указывает, поддерживает ли контроллер команды Фиксация встроенного ПО и Скачивание образа встроенного ПО.

Если для этого значения задано 1значение , контроллер поддерживает команды Фиксация встроенного ПО и Скачивание образа встроенного ПО. Если для этого значения задано 0значение , контроллер не поддерживает команды Фиксация встроенного ПО и Скачивание образа встроенного ПО.

OACS.NamespaceCommands

Бит 3 структуры OACS указывает, поддерживает ли контроллер команды Управления пространством имен и Вложения пространства имен.

Если для этого значения задано 1значение , контроллер поддерживает команды Управление пространством имен и Вложения пространства имен. Если это значение снято в 0, контроллер не поддерживает команды Управления пространством имен и Вложения пространства имен.

OACS.DeviceSelfTest

Бит 4 структуры OACS указывает, поддерживает ли контроллер команду самотестирования устройства.

OACS.Directives

Бит 5 структуры OACS указывает, поддерживает ли контроллер команды отправки директив и получения директив.

OACS.NVMeMICommands

OACS.VirtualizationMgmt

OACS.DoorBellBufferConfig

OACS.GetLBAStatus

OACS.Reserved

Биты 6:15: зарезервированы.

ACL

Указывает максимальное количество одновременно невыполненных команд прерывания, поддерживаемых контроллером.

Это значение на основе 0. Реализации должны поддерживать как минимум четыре невыполненные команды прерывания одновременно.

AERL

Указывает максимальное количество одновременно невыполненных команд асинхронного запроса событий , поддерживаемых контроллером.

Это значение на основе 0. Реализации должны поддерживать как минимум четыре невыполненные команды асинхронного запроса событий одновременно.

FRMW

Структура встроенного ПО Обновления (FRMW), содержащая поля, указывающие возможности обновления встроенного ПО.

FRMW.Slot1ReadOnly

Бит 0 структуры FRMW указывает, доступен ли первый слот встроенного ПО (слот 1) только для чтения.

Если это значение равно 1, первый слот встроенного ПО (слот 1) доступен только для чтения. Если для этого значения задано 0значение , первым слотом встроенного ПО (слот 1) является чтение и запись. В реализациях может быть выбран базовый образ встроенного ПО только для чтения.

FRMW.SlotCount

Биты 1:3 структуры FRMW указывают количество слотов встроенного ПО, поддерживаемых контроллером.

В этом поле указывается значение от одного до семи, указывающее, что поддерживается по крайней мере один слот встроенного ПО и не более семи. Это соответствует слотам встроенного ПО от 1 до 7.

FRMW.ActivationWithoutReset

Бит 4 структуры FRMW указывает, поддерживает ли контроллер активацию встроенного ПО без сброса.

Если для этого значения задано значение 1, контроллер поддерживает активацию встроенного ПО без сброса. Если это значение снято в 0, контроллер требует сброса для активации встроенного ПО.

FRMW.Reserved

Зарезервированы биты 5:7 структуры FRMW .

LPA

Структура атрибутов страницы журнала (LPA), содержащая поля, указывающие необязательные атрибуты для страниц журнала, доступ к которым выполняется с помощью команды Получить страницу журнала .

LPA.SmartPagePerNamespace

Бит 0 структуры LPA указывает, поддерживает ли контроллер страницу журнала сведений smart/health для каждого пространства имен.

Если для этого значения задано 1значение , контроллер поддерживает страницу журнала сведений о smart/health для каждого пространства имен. Если это значение не задано 0в , контроллер не поддерживает страницу журнала сведений о smart/health для каждого пространства имен.

LPA.CommandEffectsLog

Бит 1 структуры LPA указывает, поддерживает ли контроллер страницу журнала эффектов команд.

Если для этого значения задано 1значение , контроллер поддерживает страницу журнала эффектов команд. Если это значение будет снято в 0, контроллер не поддерживает страницу журнала эффектов команд.

LPA.LogPageExtendedData

Бит 2 структуры LPA указывает, поддерживает ли контроллер расширенные данные страницы журнала.

LPA.TelemetrySupport

Бит 3 структуры LPA указывает, поддерживает ли контроллер поддержку телеметрии.

LPA.PersistentEventLog

LPA.Reserved0

LPA.TelemetryDataArea4

LPA.Reserved1

ELPE

Указывает количество записей журнала сведений об ошибках, хранящихся контроллером. Это поле является значением на основе 0.

NPSS

Указывает количество состояний питания NVM Express, поддерживаемых контроллером. Это значение на основе 0.

Состояния питания нумеруются последовательно, начиная с состояния питания 0. Контроллер должен поддерживать по крайней мере одно состояние питания (например, состояние питания 0) и может поддерживать до 31 дополнительного состояния питания, в общей сложности 32.

AVSCC

Структура Администратор конфигурации команд для конкретного поставщика (AVSCC), содержащая поля, указывающие параметры конфигурации для обработки команд Администратор поставщика.

AVSCC.CommandFormatInSpec

Бит 0 структуры AVSCC указывает, используют ли все команды Администратор поставщика формат команд, определенный в структуре NVME_COMMAND.

Если это значение не задано 0в , это означает, что формат всех команд Администратор поставщиков зависит от поставщика. Если для этого значения задано 1значение , это означает, что все команды Администратор поставщика будут использовать структуру NVME_COMMAND.

AVSCC.Reserved

Зарезервированы биты 1:7 структуры AVSCC .

APSTA

Структура APSTA, содержащая поля, указывающие атрибуты автономного перехода состояния питания.

APSTA.Supported

Бит 0 структуры APSTA указывает, поддерживает ли контроллер автономные переходы состояния питания.

Если для этого значения задано 1значение , контроллер поддерживает автономные переходы состояния питания. Если это значение будет снято в 0, контроллер не поддерживает автономные переходы состояний питания.

APSTA.Reserved

Зарезервированы биты 1:7 структуры APSTA .

WCTEMP

Указывает минимальное значение поля составной температуры (указанное в журнале SMART/Health Information, указывающее на состояние перегрева, во время которого продолжается работа контроллера).

Рекомендуется немедленное исправление (например, дополнительное охлаждение или сокращение рабочей нагрузки). Платформа должна стремиться поддерживать составную температуру ниже этого значения.

Значение 0h в этом поле указывает, что контроллер не сообщает пороговое значение температуры предупреждения. Реализации, соответствующие спецификации NVMe версии 1.2 или более поздней, должны содержать ненулевое значение в этом поле. Рекомендуется, чтобы реализации сообщали значение 0157h в этом поле.

CCTEMP

Указывает минимальное значение поля составной температуры (указанное в журнале [SMART/Health Information](ns-nvme-nvme_health_info_log.md log), указывающее критическое состояние перегрева. Например, условие, которое может препятствовать продолжению нормальной работы, потере данных, автоматическому завершению работы устройства, чрезвычайному регулированию производительности или постоянному повреждению.

Значение 0h в этом поле указывает, что контроллер не сообщает о критическом пороговом значении температуры. Реализации, соответствующие спецификации NVMe версии 1.2 или более поздней, должны содержать ненулевое значение в этом поле.

MTFA

Указывает максимальное время, когда контроллер временно прекращает обработку команд для активации образа встроенного ПО.

Это поле допустимо, если контроллер поддерживает активацию встроенного ПО без сброса. Значение MFTA указывается в 100 миллисекундах. Значение 0h указывает, что максимальное время не определено.

HMPRE

Указывает предпочтительный размер, который узел должен выделить для функции буфера памяти узла в 4 КБ.

Это значение должно быть больше или равно минимальному размеру буфера памяти узла (HMMIN).

Если это поле не равно нулю, поддерживается функция буфера памяти узла. Если это значение не задано 0h, функция буфера памяти узла не поддерживается.

HMMIN

Указывает минимальный размер, который узел должен выделить для функции буфера памяти узла в 4 КБ.

Если это значение будет удалено в 0, узел запрашивается для выделения любого объема памяти узла, возможного до значения HMPRE .

TNVMCAP[16]

Указывает общую емкость NVM (в байтах) подсистемы NVM.

Это поле поддерживается, если поддерживаются команды "Управление пространством имен" и "Вложение пространства имен".

UNVMCAP[16]

Указывает нераспределенная емкость NVM (в байтах) подсистемы NVM.

Это поле поддерживается, если поддерживаются команды "Управление пространством имен" и "Вложение пространства имен".

RPMBS

Структура поддержки блоков памяти с защитой воспроизведения (RPMBS), содержащая поля, указывающие, поддерживает ли контроллер один или несколько блоков памяти с защитой воспроизведения (RPMB) и связанные с ними возможности.

RPMBS.RPMBUnitCount

Указывает количество целевых объектов RPMB, поддерживаемых контроллером.

Все поддерживаемые целевые объекты PMB (блок защищенной памяти) имеют те же возможности, что и в поле RPMBS . Значение 0h указывает, что контроллер не поддерживает RPMB. Если это значение не равно нулю, контроллер поддерживает команды отправки и получения безопасности.

RPMBS.AuthenticationMethod

Указывает метод проверки подлинности, используемый для доступа ко всем блокам памяти с защитой воспроизведения (RPMB) в контроллере. Для этого поля используются следующие значения:

Значение Определение
000b HMAC SHA-256
001b-111b Зарезервировано

RPMBS.Reserved0

Зарезервированное поле.

RPMBS.TotalSize

Указывает общий размер каждого RPMB, поддерживаемого в контроллере, в 128 КБ единиц. Это значение на основе 0. Значение 0h указывает размер 128 КБ.

RPMBS.AccessSize

Указывает размер, который может быть прочитан или записан для каждого доступа RPMB с помощью команд отправки безопасности или получения безопасности для этого контроллера в единицах 512B.

Это значение на основе 0. Значение 0h указывает на размер 512B.

EDSTT

Указывает время расширенного самопроверки устройства (EDSTT).

DSTO

Указывает параметры самотестирования устройства (DSTO).

FWUG

Указывает степень детализации обновления встроенного ПО (FWUG).

KAS

Указывает поддержку Поддержки поддержки (KAS).

HCTMA

Структура атрибутов HCTMA.

HCTMA.Supported

Указывает, поддерживаются ли атрибуты управления температурой, контролируемыми узлами.

HCTMA.Reserved

Это поле структуры HCTMA зарезервировано.

MNTMT

Минимальная температура управления температурой (MNTMT)

MXTMT

Максимальная температура управления температурой (MXTMT)

SANICAP

Sanitize Capabilities (SANICAP)

SANICAP.CryptoErase

Контроллер поддерживает очистку шифрования стирания

SANICAP.BlockErase

Контроллер поддерживает блокировку очистки стирания

SANICAP.Overwrite

Контроллер поддерживает перезапись Santize

SANICAP.Reserved

SANICAP.NDI

SANICAP.NODMMAS

HMMINDS

HMMAXD

NSETIDMAX

Максимальное значение идентификатора набора 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]

Зарезервированное поле.

SQES

Структура "Размер записи очереди отправки" (SQES), содержащая поля, указывающие обязательный и максимальный размер записи очереди отправки при использовании набора команд NVM.

SQES.RequiredEntrySize

Биты 0:3 структуры SQES указывают требуемый размер записи очереди отправки при использовании набора команд NVM.

Это минимальный размер записи, который можно использовать. Значение в байтах и отображается в виде двух значений (2^n). Обязательное значение — 6, что соответствует 64 байтам.

SQES.MaxEntrySize

Биты 4:7 структуры SQES указывают максимальный размер записи очереди отправки при использовании набора команд NVM.

Это значение больше или равно SQES. Значение RequiredEntrySize . Значение в байтах и отображается в виде двух значений (2^n). Рекомендуемое значение — 6, что соответствует стандартному размеру записи SQ набора команд NVM, равному 64 байтам. Контроллеры, реализующие собственные расширения, могут поддерживать большее значение.

CQES

Структура CQES, содержащая поля, указывающие обязательный и максимальный размер записи очереди завершения при использовании набора команд NVM.

CQES.RequiredEntrySize

Биты 0:3 структуры CQES указывают требуемый размер записи очереди завершения при использовании набора команд NVM.

Это минимальный размер записи, который можно использовать. Значение в байтах и отображается в виде двух значений (2^n). Обязательное значение — 4, что соответствует 16 байтам.

CQES.MaxEntrySize

Биты 4:7 структуры CQES указывают максимальный размер записи очереди завершения при использовании набора команд NVM.

Это значение больше или равно требуемому размеру записи CQ. Значение в байтах и отображается в виде двух значений (2^n). Рекомендуемое значение — 4, соответствующее стандартному размеру записи CQ набора команд NVM 16 байт. Контроллеры, реализующие собственные расширения, могут поддерживать большее значение.

MAXCMD

NN

Указывает количество допустимых пространств имен, присутствующих для контроллера.

ONCS

Необязательная структура поддержки команд NVM (ONCS), содержащая поля, указывающие необязательные команды и функции NVM , поддерживаемые контроллером.

ONCS.Compare

Бит 0 структуры ONCS указывает, поддерживает ли контроллер команду Compare.

Если для этого значения задано 1значение , контроллер поддерживает команду Compare. Если это значение очищено до 0, контроллер не поддерживает команду Compare.

ONCS.WriteUncorrectable

Бит 1 структуры ONCS указывает, поддерживает ли контроллер команду Write Uncorrectable.

Если для этого значения задано 1значение , контроллер поддерживает команду Write Uncorrectable. Если это значение очищается до 0, контроллер не поддерживает команду Write Uncorrectable.

ONCS.DatasetManagement

Бит 2 структуры ONCS указывает, поддерживает ли контроллер команду Управление набором данных.

Если для этого значения задано 1значение , контроллер поддерживает команду Управление наборами данных. Если это значение очищено до 0, контроллер не поддерживает команду Управление наборами данных.

ONCS.WriteZeroes

Бит 3 структуры ONCS указывает, поддерживает ли контроллер команду Write Zeroes.

Если для этого значения задано 1значение , контроллер поддерживает команду Write Zeroes. Если это значение очищается до 0, контроллер не поддерживает команду Write Zeroes.

ONCS.FeatureField

Бит 4 структуры ONCS указывает, поддерживает ли контроллер поле Сохранить в команде Set Features и поле Select в команде Get Features.

Если для этого значения задано значение 1, контроллер поддерживает поле Сохранить в команде Set Features (Задать компоненты) и select (Выбрать) в команде Get Features (Получить компоненты). Если это значение очищено до 0, контроллер не поддерживает поле Сохранить в команде Set Features (Задать компоненты) и select (Выбрать) в команде Get Features (Получить компоненты).

ONCS.Reservations

Бит 5 структуры ONCS указывает, поддерживает ли контроллер резервирования.

Если для этого значения задано 1значение , контроллер поддерживает резервирования, а также следующие команды, связанные с резервированиями:

  • Отчет о резервировании
  • Регистрация резервирования
  • Приобретение резервирования
  • Освобождение резервирования

Если это значение очищается до 0, контроллер не поддерживает резервирования.

ONCS.Timestamp

Бит 6 структуры ONCS указывает, поддерживает ли контроллер функцию метки времени (NVME_FEATURE_TIMESTAMP).

ONCS.Verify

ONCS.Reserved

Биты 7:15 структуры ONCS зарезервированы.

FUSES

Структура fused Operation Support (FUSES), содержащая поля, указывающие на операции с слиянием, поддерживаемые контроллером.

FUSES.CompareAndWrite

Бит 0 структуры FUSES указывает, поддерживает ли контроллер операцию сравнения и записи.

Если это значение очищается до 0, контроллер не поддерживает операцию сравнения и записи с слиянием. Compare будет первой командой в последовательности.

FUSES.Reserved

Биты 15:1 структуры FUSES зарезервированы.

FNA

Структура format NVM Attributes (FNA), содержащая поля, указывающие атрибуты для команды Формат NVM .

FNA.FormatApplyToAll

Бит 0 структуры FNA указывает, применяется ли операция форматирования ко всем пространствам имен или относится к конкретному пространству имен.

Если для этого значения задано 1значение , все пространства имен настраиваются с одинаковыми атрибутами, а формат любого пространства имен приводит к формату всех пространств имен. Если это значение очищается до 0, контроллер поддерживает формат для каждого пространства имен.

FNA.SecureEraseApplyToAll

Бит 1 структуры FNA указывает, применяются ли функции криптографического стирания и удаления пользовательских данных ко всем пространствам имен или относятся к конкретному пространству имен.

Если для этого значения задано значение 1, криптографическое удаление определенного пространства имен в рамках формата приводит к криптографической очистке всех пространств имен, а удаление данных пользователя из определенного пространства имен в рамках формата приводит к удалению всех пространств имен пользователем. Если это значение очищается до 0, криптографическое стирание или очистка пользовательских данных в рамках формата выполняется для каждого пространства имен.

FNA.CryptographicEraseSupported

Бит 2 структуры FNA указывает, поддерживается ли криптографическое стирание как часть функции безопасного удаления.

Если для этого значения задано значение 1, поддерживается криптографическое стирание. Если это значение очищено до 0, криптографическое стирание не поддерживается.

FNA.FormatSupportNSIDAllF

FNA.Reserved

Биты 7:3 структуры FNA зарезервированы.

VWC

Структура энергонезависимого кэша записи (VWC), содержащая поля, указывающие атрибуты, связанные с наличием в реализации энергонезависимого кэша записи.

VWC.Present

Бит 0 структуры VWC указывает на наличие энергонезависимого кэша записи.

Если для этого значения задано значение 1, присутствует энергонезависимый кэш записи, и узел может выдавать команды очистки, а также управлять включением энергонезависимого кэша записи с помощью команды Задать компоненты , указывающей идентификатор компонента NVME_FEATURE_VOLATILE_WRITE_CACHE .

Если это значение очищено до 0, энергонезависимый кэш записи отсутствует.

Если неизменяемый кэш записи отсутствует, команды очистки выполняются успешно и не оказывают никакого влияния, а команда Set Features с набором идентификаторов NVME_FEATURE_VOLATILE_WRITE_CACHE завершится сбоем с состоянием NVME_STATUS_INVALID_FIELD_IN_COMMAND, а команда Get Features с набором идентификаторов NVME_FEATURE_VOLATILE_WRITE_CACHE завершится сбоем с состоянием NVME_STATUS_INVALID_FIELD_IN_COMMAND.

VWC.FlushBehavior

VWC.Reserved

Биты 1:7 структуры VWC зарезервированы.

AWUN

Указывает размер операции записи, гарантированно записанной атомарно в NVM во всех пространствах имен с любым поддерживаемым форматом пространства имен во время обычной работы. Это поле указывается в логических блоках и является значением на основе 0.

Если определенное пространство имен гарантирует больший размер, чем указано в этом поле, то этот размер пространства имен указывается в поле NAWUN структуры данных Определение пространства имен .

Если команда записи отправляется с размером меньше или равен значению AWUN , узел гарантирует, что команда записи будет атомарной в NVM по отношению к другим командам чтения или записи. Если команда записи отправляется с размером, превышающим значение AWUN , то атомарность команды не гарантируется.

Значение AWUN не поддерживает запись ошибок, вызванных сбоем питания. Дополнительные сведения см. в поле Atomic Write Unit Power Fail (AWUPF).

Значение FFFFh указывает, что все команды являются атомарными, так как это самый большой размер команды. Реализации должны поддерживать не менее 128 КБ и соответствующим образом масштабироваться в зависимости от размера доступа к логическому блоку (LBA).

AWUPF

Указывает размер операции записи, гарантированно записанной атомарно в NVM во всех пространствах имен с любым поддерживаемым форматом пространства имен во время сбоя питания или ошибки. Это поле указывается в логических блоках и является значением на основе 0.

Если определенное пространство имен гарантирует больший размер, чем указано в этом поле, то этот размер пространства имен указывается в поле NAWUPF в структуре данных Определение пространства имен . Значение AWUPF должно быть меньше или равно значению AWUN .

Если команда записи отправляется с размером меньше или равен значению AWUPF , узел гарантированно будет атомарной в NVM по отношению к другим командам чтения или записи. Если отправляется команда записи, которая превышает этот размер, нет никакой гарантии атомарности команды. Если размер записи меньше или равен значению AWUPF и команда записи завершается ошибкой, последующие команды чтения для связанных логических блоков будут возвращать данные из предыдущей успешной команды записи.

Если команда записи отправляется с размером, превышающим значение AWUPF , то нет никакой гарантии, что данные возвращаются при последующих считываниях связанных логических блоков.

NVSCC

Структура NVM Vendor Specific Command Configuration (NVSCC), содержащая поля, указывающие параметры конфигурации для обработки команд поставщика NVM.

NVSCC.CommandFormatInSpec

Бит 0 структуры NVSCC указывает, используют ли все команды поставщика NVM формат, определенный на рис. 13.

Если для этого значения задано значение 1, все команды поставщика NVM используют формат, определенный на рис. 13. Если для этого значения не задано 0значение , это означает, что формат всех команд поставщика NVM зависит от поставщика.

NVSCC.Reserved

Биты 1:7 структуры NVSCC зарезервированы.

NWPC

NWPC.WriteProtect

NWPC.UntilPowerCycle

NWPC.Permanent

NWPC.Reserved

ACWU

Указывает размер операции записи, гарантированно записанной атомарно в NVM во всех пространствах имен с любым поддерживаемым форматом пространства имен для операции сравнения и записи.

Если определенное пространство имен гарантирует больший размер, чем указано в этом поле, то этот размер пространства имен указывается в поле NACWU в структуре данных Определение пространства имен .

Это поле будет поддерживаться, если поддерживается команда Compare and Write fused. Это поле указывается в логических блоках и является значением на основе 0. Если отправляется функция сравнения и записи, запрашивающая размер передачи, превышающий это значение, контроллер может завершить команду с состоянием NVME_STATUS_INVALID_FIELD_IN_COMMAND.

Если команда Compare и Write не поддерживается, значение этого поля будет равно 0h.

Reserved4[2]

Зарезервированное поле.

SGLS

Структура поддержки SGL (SGLS), содержащая поля, указывающие, поддерживаются ли Списки точечной сборки (SGL) для набора команд NVM и поддерживаемых типов SGL.

SGLS.SGLSupported

Если для этого значения задано значение 1, контроллер поддерживает списки SGL для набора команд NVM, включая типы дескрипторов блока данных SGL, сегмента SGL и последнего сегмента SGL. Если это значение будет очищено до 0, контроллер не поддерживает SGL для набора команд NVM, и все остальные биты в этом поле будут очищены до 0.

SGLS.KeyedSGLData

SGLS.Reserved0

Зарезервированное поле.

SGLS.BitBucketDescrSupported

Если для этого значения задано значение 1, поддерживается дескриптор битового контейнера SGL. Если это значение очищается до 0, дескриптор битового контейнера SGL не поддерживается.

SGLS.ByteAlignedContiguousPhysicalBuffer

Если для этого значения задано 1значение , поддерживается использование выровненного по байтам непрерывного физического буфера метаданных (поле "Указатель метаданных" на рис. 12). Если это значение очищается до 0, использование выровненного по байтам непрерывного физического буфера метаданных не поддерживается.

SGLS.SGLLengthLargerThanDataLength

Если для этого значения задано значение 1, контроллер поддерживает команды, содержащие SGL данных или метаданных длиной больше, чем объем передаваемых данных. При очистке этого значения до 0значения длина SGL будет равна объему передаваемых данных.

SGLS.MPTRSGLDescriptor

SGLS.AddressFieldSGLDataBlock

SGLS.TransportSGLData

SGLS.Reserved1

Зарезервированное поле.

MNAN

Reserved6[224]

Байты 704:2047 зарезервированы для атрибутов набора команд ввода-вывода.

SUBNQN[256]

Reserved7[768]

Reserved8[256]

PDS[32]

Содержит массив из 32 дескрипторов состояния power. Каждый элемент массива представляет собой 32-разрядное поле, указывающее характеристики дескриптора состояния Power. Формат этого поля определяется в структуре NVME_POWER_STATE_DESC .

Отсчитываемая от нуля позиция структуры в массиве соответствует имени дескриптора состояния power, так что дескриптор состояния Power State 0 (PSD0) находится в позиции 0, дескриптор состояния 1 (PSD1) находится в позиции 1 и т. д. Вплоть до дескриптора состояния Power 31 (PSD31) в позиции 31.

VS[1024]

Байты 3072:4095 выделяются для использования конкретным поставщиком.

Комментарии

Значения полей VID, SN и MN можно объединить для формирования глобально уникального значения, определяющего подсистему NVM.

Требования

Требование Значение
Минимальная версия клиента Windows 10
Верхняя часть nvme.h