структура NVME_IDENTIFY_NAMESPACE_DATA (nvme.h)
Содержит значения, указывающие возможности и параметры, относящиеся к определенному пространству имен.
Возможности и параметры, общие для всех пространств имен, содержатся в структуре данных NVME_IDENTIFY_NAMESPACE_DATA для пространства имен с идентификатором 0xFFFFFFFF
пространства имен .
Файл заголовка nvme.h определяет константную NVME_NAMESPACE_ALL со значением 0xFFFFFFFF
.
Если контроллер поддерживает управление пространством имен, а для поля Идентификатор пространства имен (NSID) структуры NVME_COMMAND задано значение NVME_NAMESPACE_ALL, контроллер возвращает NVME_IDENTIFY_NAMESPACE_DATA структуру данных, которая указывает возможности, общие для всех пространств имен.
Синтаксис
typedef struct {
ULONGLONG NSZE;
ULONGLONG NCAP;
ULONGLONG NUSE;
struct {
UCHAR ThinProvisioning : 1;
UCHAR NameSpaceAtomicWriteUnit : 1;
UCHAR DeallocatedOrUnwrittenError : 1;
UCHAR SkipReuseUI : 1;
UCHAR NameSpaceIoOptimization : 1;
UCHAR Reserved : 3;
} NSFEAT;
UCHAR NLBAF;
struct {
UCHAR LbaFormatIndex : 4;
UCHAR MetadataInExtendedDataLBA : 1;
UCHAR Reserved : 3;
} FLBAS;
struct {
UCHAR MetadataInExtendedDataLBA : 1;
UCHAR MetadataInSeparateBuffer : 1;
UCHAR Reserved : 6;
} MC;
struct {
UCHAR ProtectionInfoType1 : 1;
UCHAR ProtectionInfoType2 : 1;
UCHAR ProtectionInfoType3 : 1;
UCHAR InfoAtBeginningOfMetadata : 1;
UCHAR InfoAtEndOfMetadata : 1;
UCHAR Reserved : 3;
} DPC;
struct {
UCHAR ProtectionInfoTypeEnabled : 3;
UCHAR InfoAtBeginningOfMetadata : 1;
UCHAR Reserved : 4;
} DPS;
struct {
UCHAR SharedNameSpace : 1;
UCHAR Reserved : 7;
} NMIC;
NVM_RESERVATION_CAPABILITIES RESCAP;
struct {
UCHAR PercentageRemained : 7;
UCHAR Supported : 1;
} FPI;
struct {
UCHAR ReadBehavior : 3;
UCHAR WriteZeroes : 1;
UCHAR GuardFieldWithCRC : 1;
UCHAR Reserved : 3;
} DLFEAT;
USHORT NAWUN;
USHORT NAWUPF;
USHORT NACWU;
USHORT NABSN;
USHORT NABO;
USHORT NABSPF;
USHORT NOIOB;
UCHAR NVMCAP[16];
USHORT NPWG;
USHORT NPWA;
USHORT NPDG;
USHORT NPDA;
USHORT NOWS;
USHORT MSSRL;
ULONG MCL;
UCHAR MSRC;
UCHAR Reserved2[11];
ULONG ANAGRPID;
UCHAR Reserved3[3];
struct {
UCHAR WriteProtected : 1;
UCHAR Reserved : 7;
} NSATTR;
USHORT NVMSETID;
USHORT ENDGID;
UCHAR NGUID[16];
UCHAR EUI64[8];
NVME_LBA_FORMAT LBAF[16];
UCHAR Reserved4[192];
UCHAR VS[3712];
} NVME_IDENTIFY_NAMESPACE_DATA, *PNVME_IDENTIFY_NAMESPACE_DATA;
Члены
NSZE
Указывает общий размер пространства имен в логических блоках.
Пространство имен размера n состоит из адреса логического блока (LBA) 0
через (n - 1)
. Количество логических блоков зависит от форматированного размера LBA. Это поле не определено до форматирования пространства имен.
NCAP
Указывает максимальное количество логических блоков, которые могут быть выделены в пространстве имен в любой момент времени.
Количество логических блоков зависит от форматированного размера LBA. Это поле не определено до форматирования пространства имен.
Поле NCAP используется в случае тонкой подготовки и сообщает значение, которое меньше или равно размеру пространства имен (NSZE).
Сведения о запасных подсистемах балансировки нагрузки не отображаются в этом поле. Значение 0h
для емкости пространства имен (NCAP) указывает, что идентификатор пространства имен является неактивным идентификатором пространства имен. Логический блок выделяется при записи с помощью команды Write или Write Uncorrectable. Логический блок можно освободить с помощью команды Управление наборами данных .
NUSE
Указывает текущее количество логических блоков, выделенных в пространстве имен.
Значение этого поля меньше или равно значению поля NCAP "Емкость пространства имен".
Количество логических блоков зависит от форматированного размера LBA. При использовании набора команд NVM: логический блок выделяется при записи с помощью команды Write или Write Uncorrectable. Логический блок можно освободить с помощью команды Управление наборами данных .
Контроллер может постоянно сообщать значение NUSE , равное значению NCAP , если продукт не предназначен для сред тонкой подготовки.
NSFEAT
Структура функций пространства имен (NSFEAT), содержащая поля, определяющие признаки пространства имен.
NSFEAT.ThinProvisioning
Бит 0 структуры NSFEAT указывает, поддерживает ли пространство имен тонкую подготовку.
Если для этого значения задано 1
значение , пространство имен поддерживает тонкую подготовку. В частности, сообщаемая емкость пространства имен (NCAP) может быть меньше размера пространства имен (NSZE). Если эта функция поддерживается и команда Dataset Management поддерживается, отмена выделения LBA будет отражена в поле Использование пространства имен (NUSE).
Если это значение очищается до 0
, это означает, что тонкая подготовка не поддерживается, а поля NSZE и NCAP сообщают одно и то же значение.
NSFEAT.NameSpaceAtomicWriteUnit
Бит 1 структуры NSFEAT указывает, определены ли для этого пространства имен атомарные пограничные параметры пространства имен.
Если для этого значения задано значение 1
, поля NAWUN, NAWUPF и NACWU определяются для этого пространства имен и должны использоваться узлом для этого пространства имен вместо полей AWUN, AWUPF и ACWU в структуре данных Идентификация контроллера .
Если это значение очищается до 0
, контроллер не поддерживает поля NAWUN, NAWUPF и NACWU для этого пространства имен. В этом случае узел должен использовать поля AWUN, AWUPF и ACWU , определенные в структуре данных Идентификация контроллера .
NSFEAT.DeallocatedOrUnwrittenError
Бит 2 структуры NSFEAT указывает, поддерживает ли контроллер ошибку освобожденного или неписаного логического блока для этого пространства имен.
Если для этого значения задано значение 1
, контроллер поддерживает ошибку Освобождено или Незаписанный логический блок (NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK) для этого пространства имен. Если это значение очищается до 0
, контроллер не поддерживает ошибку NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK для этого пространства имен.
NSFEAT.SkipReuseUI
Бит 3 структуры NSFEAT — это параметр для функции пропуска повторного использования пользовательского интерфейса.
NSFEAT.NameSpaceIoOptimization
NSFEAT.Reserved
Биты 4:7 структуры NSFEAT зарезервированы.
NLBAF
Определяет количество поддерживаемых сочетаний размера данных LBA и размера метаданных, поддерживаемых пространством имен.
Форматы LBA выделяются по порядку (начиная с 0) и упаковываются последовательно. Это значение на основе 0. Максимальное число форматов LBA, которые могут быть указаны как поддерживаемые, — 16.
Поддерживаемые форматы LBA указываются в поле LBAF (байты 128–191 этой структуры данных). Метаданные могут быть переданы как часть LBA (создание расширенного LBA большего размера LBA, который предоставляется приложению) или в виде отдельного непрерывного буфера данных. Метаданные нельзя разделить между LBA и отдельным буфером метаданных.
Рекомендуется, чтобы программное обеспечение и контроллеры перешли на размер LBA 4 КБ или больше для повышения эффективности ECC на контроллере. При предоставлении метаданных рекомендуется предоставить не менее 8 байт для каждого логического блока, чтобы обеспечить сквозную защиту данных.
FLBAS
Структура форматированного размера LBA (FLBAS), содержащая поля, которые указывают на сочетание размера данных LBA и размера метаданных, с помощью которого было отформатировано пространство имен.
FLBAS.LbaFormatIndex
Биты 0:3 структуры FLBAS указывают один из 16 поддерживаемых форматов LBA, указанных в этой структуре данных.
FLBAS.MetadataInExtendedDataLBA
Бит 4 структуры FLBAS указывает, передаются ли метаданные в конце LBA данных, создавая расширенный LBA данных.
Если для этого значения задано значение 1
, метаданные передаются в конце LBA данных, создавая расширенный LBA данных. Если это значение очищается до 0
, это означает, что все метаданные для команды передаются в виде отдельного непрерывного буфера данных.
Бит 4 неприменим, если метаданные отсутствуют.
FLBAS.Reserved
Биты 5:7 структуры FLBAS зарезервированы.
MC
Структура возможностей метаданных (MC), содержащая поля, указывающие возможности для метаданных.
MC.MetadataInExtendedDataLBA
Бит 0 структуры MC указывает, поддерживает ли пространство имен метаданные, передаваемые в рамках расширенного LBA данных.
Если для этого значения задано 1
значение , пространство имен поддерживает передачу метаданных в рамках расширенного LBA данных. Если это значение очищается до 0
, это означает, что пространство имен не поддерживает передачу метаданных в рамках расширенного LBA данных.
MC.MetadataInSeparateBuffer
Бит 1 структуры MC указывает, поддерживает ли пространство имен метаданные, передаваемые в составе отдельного буфера.
Если для этого значения задано значение 1
, пространство имен поддерживает передачу метаданных в составе отдельного буфера, указанного в поле Указатель метаданных (MPTR) структуры команд . Если это значение очищается до 0
, пространство имен не поддерживает передачу метаданных в составе отдельного буфера.
MC.Reserved
Биты 7:2 структуры MC зарезервированы.
DPC
Структура сквозной защиты данных (DPC), содержащая поля, указывающие возможности комплексной защиты данных.
В этом поле можно задать несколько битов.
DPC.ProtectionInfoType1
Бит 0 структуры DPC указывает, поддерживает ли пространство имен тип сведений о защите 1.
Если для этого значения задано 1
значение , пространство имен поддерживает тип сведений о защите 1. Если это значение очищено до 0
, пространство имен не поддерживает тип сведений о защите 1.
DPC.ProtectionInfoType2
Бит 1 структуры DPC указывает, поддерживает ли пространство имен тип сведений о защите 2.
Если для этого значения задано 1
значение , пространство имен поддерживает тип сведений о защите 2. Если это значение очищается до 0
, пространство имен не поддерживает тип сведений о защите 2.
DPC.ProtectionInfoType3
Бит 2 структуры DPC указывает, поддерживает ли пространство имен тип сведений о защите 3.
Если для этого значения задано 1
значение , пространство имен поддерживает тип сведений о защите 3. Если это значение очищается до 0
, пространство имен не поддерживает тип сведений о защите 3.
DPC.InfoAtBeginningOfMetadata
Бит 3 структуры DPC указывает, поддерживает ли пространство имен сведения о защите, передаваемые в качестве первых восьми байт метаданных.
Если для этого значения задано значение 1
, пространство имен поддерживает сведения о защите, передаваемые в качестве первых восьми байт метаданных. Если это значение очищается до 0
, пространство имен не поддерживает сведения о защите, передаваемые в качестве первых восьми байт метаданных.
DPC.InfoAtEndOfMetadata
Бит 4 структуры DPC указывает, поддерживает ли пространство имен сведения о защите, передаваемые в качестве последних восьми байт метаданных.
Если для этого значения задано значение 1
, пространство имен поддерживает сведения о защите, передаваемые в качестве последних восьми байт метаданных. Если это значение очищается до 0
, пространство имен не поддерживает сведения о защите, передаваемые в качестве последних восьми байт метаданных.
DPC.Reserved
Биты 7:5 структуры DPC зарезервированы.
DPS
Структура комплексных параметров типа защиты данных (DPS), содержащая поля, указывающие параметры типа для комплексной защиты данных.
NVME_PROTECTION_INFORMATION_TYPES
DPS.ProtectionInfoTypeEnabled
Биты 2:0 структуры DPS — это NVME_PROTECTION_INFORMATION_TYPES значение, указывающее, включена ли защита информации и включен тип сведений о защите.
DPS.InfoAtBeginningOfMetadata
Бит 3 структуры DPS указывает, передаются ли сведения о защите, если они включены, в качестве первых восьми байт метаданных.
Если для этого значения задано 1
значение , сведения о защите, если они включены, передаются в виде первых восьми байт метаданных. Если это значение очищается до 0
, сведения о защите, если они включены, передаются как последние восемь байт метаданных.
DPS.Reserved
Биты 7:4 структуры DPS зарезервированы.
NMIC
Структура многопутевой операции ввода-вывода пространства имен и возможностей совместного использования пространства имен (NMIC), содержащая поля, указывающие возможности многопутевой операции ввода-вывода и совместного использования пространства имен пространства имен.
NMIC.SharedNameSpace
Бит 0 структуры NMIC указывает, может ли пространство имен быть общим пространством имен.
Если для этого значения задано 1
значение , пространство имен может быть доступно для двух или более контроллеров в подсистеме NVM. Если это значение очищается до 0
, пространство имен является частным пространством имен и может быть доступно только контроллеру, который вернул эту структуру данных пространства имен.
NMIC.Reserved
Биты 7:1 структуры NMIC зарезервированы.
RESCAP
Структура возможностей резервирования (RESCAP), содержащая поля, указывающие возможности резервирования пространства имен.
Значение 00h
в этом поле указывает, что резервирование не поддерживается этим пространством имен.
FPI
Структура индикатора хода выполнения форматирования (FPI), содержащая поля, указывающие процент пространства имен, которое необходимо отформатировать при выполнении операции форматирования.
FPI.PercentageRemained
Биты 0:6 структуры FPI указывают процент отформатированного пространства имен. Например, значение 25
указывает, что 75 % пространства имен отформатировано, а 25 % осталось отформатировать.
Значение 0
указывает, что пространство имен отформатировано в формате, указанном полями FLBAS и DPS в этой структуре данных.
FPI.Supported
Бит 7 структуры FPI указывает, поддерживает ли пространство имен индикатор хода выполнения формата, определенный FPI. Поле PercentageRemained .
Если для этого значения задано 1
значение , пространство имен поддерживает индикатор хода выполнения формата, определенный FPI. Поле PercentageRemained . Если это значение очислено в 0
, пространство имен не поддерживает индикатор хода выполнения форматирования и FPI. Поле PercentageRemained будет очищено до 0h
.
DLFEAT
DLFEAT.ReadBehavior
DLFEAT.WriteZeroes
DLFEAT.GuardFieldWithCRC
DLFEAT.Reserved
NAWUN
Указывает конкретный размер пространства имен операции записи, гарантированно записываемой атомарным образом в NVM во время обычной работы.
Значение 0h
указывает, что размер этого пространства имен совпадает с размером, представленным в поле AWUN структуры данных "Определить контроллер ". Все остальные значения указывают размер логических блоков, используя ту же кодировку, что и поле AWUN .
NAWUPF
Указывает конкретный размер пространства имен операции записи, гарантированно записываемой атомарным образом в NVM во время сбоя питания или состояния ошибки.
Значение 0h
указывает, что размер этого пространства имен совпадает с размером, представленным в поле AWUPF структуры данных "Определить контроллер ". Все остальные значения указывают размер логических блоков, используя ту же кодировку, что и поле AWUPF .
NACWU
Указывает конкретный размер пространства имен операции записи, гарантированно записываемой атомарным образом в NVM для команды Compare and Write fused.
Значение 0h
указывает, что размер этого пространства имен совпадает с размером, представленным в поле ACWU структуры данных Идентификация контроллера . Все остальные значения указывают размер логических блоков, используя ту же кодировку, что и поле ACWU .
NABSN
Указывает атомарный размер границы для этого пространства имен для значения NAWUN .
Это поле указывается в логических блоках. Операции записи в это пространство имен, которые пересекают атомарные границы, не являются атомарными в NVM по отношению к другим командам чтения или записи.
Значение указывает на отсутствие атомарных 0h
границ для обычных операций записи. Все остальные значения указывают размер логических блоков, используя ту же кодировку, что и поле AWUN .
NABO
Указывает адрес логического блока (LBA) в этом пространстве имен, где начинается первая атомарная граница.
Если поля NABSN и NABSPF очищены до 0h
, то поле NABO очищается до 0h. Значение NABO должно быть меньше или равно NABSN и NABSPF.
NABSPF
Указывает размер атомарной границы для этого пространства имен, относящееся к значению "Сбой атомарной единицы записи пространства имен".
Это поле указывается в логических блоках. Операции записи в это пространство имен, пересекающие атомарные границы, не гарантируются атомарными по отношению к другим командам чтения или записи, и нет никакой гарантии, что данные возвращаются при последующих считываниях связанных логических блоков.
Значение 0h
указывает, что атомарные границы для состояния сбоя питания или ошибок отсутствуют. Все остальные значения указывают размер логических блоков, используя ту же кодировку, что и поле AWUPF .
NOIOB
Указывает оптимальную границу пространства имен ввода-вывода (NOIOB).
NVMCAP[16]
Указывает общий размер виртуальной машины NVM, выделенной для этого пространства имен.
Значение этого поля в байтах. Это поле поддерживается, если поддерживаются команды "Управление пространством имен" и "Вложение пространства имен".
Примечание. Это поле может не соответствовать размеру логического блока, умноженному на поле Размер пространства имен (NSZE). Из-за тонкой подготовки или других параметров (например, выносливости) это поле может быть больше или меньше, чем сообщалось в NSZE .
NPWG
NPWA
NPDG
NPDA
NOWS
MSSRL
MCL
MSRC
Reserved2[11]
Зарезервированное поле.
ANAGRPID
Reserved3[3]
Зарезервированы байты 192:383A.
NSATTR
NSATTR.WriteProtected
NSATTR.Reserved
NVMSETID
Указывает связанный идентификатор набора NVM (NVMSETID).
ENDGID
Указывает связанный идентификатор группы выносливости (ENDGID).
NGUID[16]
Содержит 128-разрядное значение, которое является глобально уникальным и присваивается пространству имен при создании пространства имен.
Поле Глобально уникальный идентификатор пространства имен (NGUID) остается фиксированным на протяжении всего срока существования пространства имен и сохраняется в операциях пространства имен и контроллера (таких как сброс контроллера и формат пространства имен).
В этом поле используется 16-байтовый формат конструктора на основе EUI-64.
- Байты 114:112 содержат 24-разрядное значение company_id, присвоенное центром регистрации IEEE.
- Байты 119:115 содержат идентификатор расширения, назначенный соответствующей организацией.
- Байты 111:104 содержат идентификатор расширения конкретного поставщика, назначенный соответствующей организацией.
Дополнительные сведения см. в рекомендациях IEEE EUI-64. Контроллер должен указывать глобальный уникальный идентификатор пространства имен в этом поле или поле EUI64 при создании пространства имен.
EUI64[8]
Содержит 64-разрядный расширенный уникальный идентификатор IEEE (EUI-64), который является глобально уникальным и назначается пространству имен при создании пространства имен.
Поле EUI64 остается фиксированным на протяжении всего времени существования пространства имен и сохраняется в операциях пространства имен и контроллера (например, сброса контроллера и формата пространства имен).
EUI-64 — это объединение 24-разрядного или 36-разрядного значения company_id, присвоенного центром регистрации IEEE, и идентификатора расширения, назначенного соответствующей организацией. Дополнительные сведения см. в рекомендациях IEEE EUI-64.
Контроллер должен указать глобально уникальный идентификатор пространства имен в этом поле или поле NGUID при создании пространства имен. Если контроллер не может выделить глобально уникальный 64-разрядный идентификатор, это поле будет очищено в 0h
.
LBAF[16]
Содержит массив из 16 NVME_LBA_FORMAT структур. Каждая структура в массиве задает формат LBA и указывает, что он поддерживается контроллером.
Отсчитываемая от нуля позиция структуры в массиве соответствует имени формата LBA, так что формат LBA 0 (LBAF0) находится в позиции 0, формат LBA 1 (LBAF1) находится в позиции 1 и т. д., вплоть до формата LBA 15 (LBAF15) в позиции 15.
Reserved4[192]
VS[3712]
Этот диапазон байтов (384:4095) выделяется для использования конкретного поставщика (VS).
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 |
Верхняя часть | nvme.h |