структура 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 |