NVME_IDENTIFY_NAMESPACE_DATA 構造体 (nvme.h)
特定の名前空間に固有の機能と設定を示す値が含まれます。
すべての名前空間に共通する機能と設定は、名前空間識別子 0xFFFFFFFF
が の名前空間のNVME_IDENTIFY_NAMESPACE_DATAデータ構造に含まれています。
nvme.h ヘッダー ファイルは、 の値0xFFFFFFFF
を使用して定数NVME_NAMESPACE_ALLを定義します。
コントローラーが名前空間管理をサポートし、NVME_COMMAND構造体の名前空間識別子 (NSID) フィールドが 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) 以下の値を報告します。
スペア LBA は、このフィールドの一部として報告されません。 名前空間容量 (NCAP) の 0h
値は、名前空間 ID が非アクティブな名前空間 ID であることを示します。 論理ブロックは、Write または Write Uncorrectable コマンドを使用して書き込まれるときに割り当てられます。 論理ブロックは、 Dataset Management コマンドを使用して割り当てを解除できます。
NUSE
名前空間に割り当てられている論理ブロックの現在の数を示します。
このフィールドの値は、名前空間容量 NCAP フィールドの値以下です。
論理ブロックの数は、書式設定された LBA サイズに基づきます。 NVM コマンド セットを使用する場合: 論理ブロックは、書き込みコマンドまたは Write Uncorrectable コマンドで書き込まれるときに割り当てられます。 論理ブロックは、 Dataset Management コマンドを使用して割り当てを解除できます。
製品がシン プロビジョニング環境を対象としていない場合、コントローラーは NCAP 値と等しい NUSE 値を常に報告できます。
NSFEAT
名前空間の機能を定義するフィールドを含む名前空間フィーチャー (NSFEAT) 構造体。
NSFEAT.ThinProvisioning
NSFEAT 構造体のビット 0 は、名前空間がシン プロビジョニングをサポートしているかどうかを示します。
この値が に 1
設定されている場合、名前空間はシン プロビジョニングをサポートします。 具体的には、報告される名前空間容量 (NCAP) が名前空間サイズ (NSZE) よりも小さい場合があります。 この機能がサポートされていて、Dataset Management コマンドがサポートされている場合、LBA の割り当てを解除すると、名前空間使用率 (NUSE) フィールドに反映されます。
この値を に 0
クリアすると、シン プロビジョニングがサポートされておらず、 NSZE フィールドと NCAP フィールドが同じ値を報告することを示します。
NSFEAT.NameSpaceAtomicWriteUnit
NSFEAT 構造体のビット 1 は、名前空間アトミック境界パラメーターがこの名前空間に対して定義されているかどうかを示します。
この値が に1
設定されている場合、フィールド NAWUN、NAWUPF、および NACWU はこの名前空間に対して定義され、識別コントローラーのデータ構造の AWUN、AWUPF、ACWU フィールドではなく、この名前空間のホストによって使用される必要があります。
この値を に 0
クリアすると、コントローラーは、この名前空間のフィールド NAWUN、 NAWUPF、 および NACWU をサポートしません。 この場合、ホストは、コントローラーの識別データ構造で定義されている AWUN、AWUPF、および ACWU フィールドを使用する必要があります。
NSFEAT.DeallocatedOrUnwrittenError
NSFEAT 構造体のビット 2 は、コントローラーがこの名前空間の割り当て解除または未書き込み論理ブロック エラーをサポートしているかどうかを示します。
この値が に 1
設定されている場合、コントローラーは、この名前空間の 割り当て解除または書き込み解除論理ブロック (NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK) エラーをサポートします。 この値を に 0
クリアすると、コントローラーはこの名前空間の NVME_STATUS_NVM_DEALLOCATED_OR_UNWRITTEN_LOGICAL_BLOCK エラーをサポートしません。
NSFEAT.SkipReuseUI
NSFEAT 構造体のビット 3 は、スキップ再利用 UI 機能の設定です。
NSFEAT.NameSpaceIoOptimization
NSFEAT.Reserved
NSFEAT 構造体のビット 4:7 が予約されています。
NLBAF
名前空間でサポートされている、サポートされている LBA データ サイズとメタデータ サイズの組み合わせの数を定義します。
LBA 形式は順番に割り当てられ (0 から始まります)、順次パックされます。 これは 0 に基づく値です。 サポート対象として示される可能性がある LBA 形式の最大数は 16 です。
サポートされている LBA 形式は 、LBAF フィールド (このデータ構造のバイト 128 から 191) に示されます。 メタデータは、LBA の一部として転送されるか (アプリケーションに公開される LBA サイズが大きい拡張 LBA を作成する)、またはデータの独立した連続したバッファーとして転送される場合があります。 メタデータを LBA と個別のメタデータ バッファーの間で分割することはできません。
ソフトウェアとコントローラーは、コントローラーでの ECC 効率のために 4 KB 以上の LBA サイズに移行することをお勧めします。 メタデータを提供する場合は、エンド ツー エンドのデータ保護で使用できるように、論理ブロックごとに少なくとも 8 バイトを指定することをお勧めします。
FLBAS
名前空間が書式設定された LBA データ サイズとメタデータ サイズの組み合わせを示すフィールドを含む、書式設定された LBA サイズ (FLBAS) 構造体。
FLBAS.LbaFormatIndex
FLBAS 構造体のビット 0:3 は、このデータ構造に示されている 16 個のサポートされる LBA 形式のいずれかを指定します。
FLBAS.MetadataInExtendedDataLBA
FLBAS 構造体のビット 4 は、メタデータがデータ LBA の最後に転送され、拡張データ LBA が作成されるかどうかを示します。
この値が に 1
設定されている場合、メタデータはデータ LBA の最後に転送され、拡張データ LBA が作成されます。 この値を に 0
クリアすると、コマンドのすべてのメタデータがデータの独立した連続したバッファーとして転送されることを示します。
メタデータがない場合、ビット 4 は適用されません。
FLBAS.Reserved
FLBAS 構造体のビット 5:7 が予約されています。
MC
メタデータの機能を示すフィールドを含むメタデータ機能 (MC) 構造体。
MC.MetadataInExtendedDataLBA
MC 構造体のビット 0 は、拡張データ LBA の一部として転送されるメタデータが名前空間でサポートされているかどうかを示します。
この値が に 1
設定されている場合、名前空間は拡張データ LBA の一部として転送されるメタデータをサポートします。 この値を に 0
クリアすると、拡張データ LBA の一部として転送されるメタデータが名前空間でサポートされていないことが示されます。
MC.MetadataInSeparateBuffer
MC 構造体のビット 1 は、名前空間が別のバッファーの一部として転送されるメタデータをサポートしているかどうかを示します。
この値が に1
設定されている場合、名前空間は、Command 構造体のメタデータ ポインター (MPTR) フィールドで指定された個別のバッファーの一部として転送されるメタデータをサポートします。 この値を に 0
クリアすると、名前空間では、別のバッファーの一部として転送されるメタデータはサポートされません。
MC.Reserved
MC 構造体のビット 7:2 が予約されています。
DPC
エンド ツー エンドのデータ保護機能の機能を示すフィールドを含むエンド ツー エンドのデータ保護機能 (DPC) 構造。
このフィールドには複数のビットを設定できます。
DPC.ProtectionInfoType1
DPC 構造体のビット 0 は、名前空間が保護情報の種類 1 をサポートしているかどうかを示します。
この値が に 1
設定されている場合、名前空間は保護情報の種類 1 をサポートします。 この値を に 0
クリアすると、名前空間は保護情報の種類 1 をサポートしていません。
DPC.ProtectionInfoType2
DPC 構造体のビット 1 は、名前空間が保護情報の種類 2 をサポートしているかどうかを示します。
この値が に 1
設定されている場合、名前空間は保護情報の種類 2 をサポートします。 この値を に 0
クリアすると、名前空間は保護情報の種類 2 をサポートしていません。
DPC.ProtectionInfoType3
DPC 構造体のビット 2 は、名前空間が保護情報の種類 3 をサポートしているかどうかを示します。
この値が に 1
設定されている場合、名前空間は保護情報の種類 3 をサポートします。 この値を に 0
クリアすると、名前空間は保護情報の種類 3 をサポートしていません。
DPC.InfoAtBeginningOfMetadata
DPC 構造体のビット 3 は、名前空間がメタデータの最初の 8 バイトとして転送された保護情報をサポートしているかどうかを示します。
この値が に 1
設定されている場合、名前空間は、メタデータの最初の 8 バイトとして転送される保護情報をサポートします。 この値を に 0
クリアすると、名前空間では、メタデータの最初の 8 バイトとして転送される保護情報はサポートされません。
DPC.InfoAtEndOfMetadata
DPC 構造体のビット 4 は、名前空間がメタデータの最後の 8 バイトとして転送された保護情報をサポートしているかどうかを示します。
この値が に 1
設定されている場合、名前空間は、メタデータの最後の 8 バイトとして転送される保護情報をサポートします。 この値を に 0
クリアすると、名前空間では、メタデータの最後の 8 バイトとして転送される保護情報はサポートされません。
DPC.Reserved
DPC 構造体のビット 7:5 が予約されています。
DPS
エンド ツー エンドのデータ保護機能の [型] 設定を示すフィールドを含むエンド ツー エンドのデータ保護型設定 (DPS) 構造体。
NVME_PROTECTION_INFORMATION_TYPES
DPS.ProtectionInfoTypeEnabled
DPS 構造体のビット 2:0 は、保護情報が有効かどうか、および保護情報の種類が有効になっているかどうかを示すNVME_PROTECTION_INFORMATION_TYPES値です。
DPS.InfoAtBeginningOfMetadata
DPS 構造体のビット 3 は、保護情報が有効になっている場合に、メタデータの最初の 8 バイトとして転送されるかどうかを示します。
この値が に 1
設定されている場合、保護情報が有効になっている場合は、メタデータの最初の 8 バイトとして転送されます。 この値が に 0
クリアされると、保護情報が有効になっている場合は、メタデータの最後の 8 バイトとして転送されます。
DPS.Reserved
DPS 構造体のビット 7:4 が予約されています。
NMIC
名前空間のマルチパス I/O および名前空間共有機能を指定するフィールドを含む名前空間マルチパス I/O および名前空間共有機能 (NMIC) 構造体。
NMIC.SharedNameSpace
NMIC 構造体のビット 0 は、名前空間が共有名前空間であるかどうかを示します。
この値が に 1
設定されている場合、NVM サブシステム内の 2 つ以上のコントローラーから名前空間にアクセスできる場合があります。 この値を に 0
クリアすると、名前空間はプライベート名前空間であり、この名前空間データ構造を返したコントローラーのみがアクセスできます。
NMIC.Reserved
NMIC 構造体のビット 7:1 が予約されています。
RESCAP
名前空間の予約機能を指定するフィールドを含む予約機能 (RESCAP) 構造体。
このフィールドの 値 00h
は、予約がこの名前空間でサポートされていないことを示します。
FPI
書式指定操作の進行中に書式設定されたままの名前空間の割合を示すフィールドを含む Format Progress Indicator (FPI) 構造体。
FPI.PercentageRemained
FPI 構造体のビット 0:6 は、書式設定されたままの名前空間の割合を示します。 たとえば、 の 25
値は、名前空間の 75% が書式設定され、25% が書式設定されたままであることを示します。
の値 0
は、このデータ構造の FLBAS フィールドと DPS フィールドで指定された形式で名前空間が書式設定されていることを示します。
FPI.Supported
FPI 構造体のビット 7 は、名前空間が FPI によって定義された Format Progress Indicator をサポートしているかどうかを示します。PercentageRemained フィールド。
この値が に 1
設定されている場合、名前空間は FPI によって定義された Format Progress Indicator をサポートします 。PercentageRemained フィールド。 この値を に 0
クリアすると、名前空間は進行状況インジケーターの書式設定と FPI をサポートしていません 。PercentageRemained フィールドは に 0h
クリアされます。
DLFEAT
DLFEAT.ReadBehavior
DLFEAT.WriteZeroes
DLFEAT.GuardFieldWithCRC
DLFEAT.Reserved
NAWUN
通常の操作中に NVM にアトミックに書き込むことが保証されている書き込み操作の名前空間固有のサイズを示します。
の値0h
は、この名前空間のサイズが、Identify Controller データ構造の AWUN フィールドで報告されたサイズと同じであることを示します。 他のすべての値では、 AWUN フィールドと同じエンコードを使用して、論理ブロックの観点からサイズを指定します。
NAWUPF
電源障害またはエラー状態の間に NVM にアトミックに書き込むことが保証されている書き込み操作の名前空間固有のサイズを示します。
の値0h
は、この名前空間のサイズが、Identify Controller データ構造の AWUPF フィールドで報告されたサイズと同じであることを示します。 他のすべての値は、 AWUPF フィールドと同じエンコードを使用して論理ブロックの観点からサイズを指定します。
NACWU
比較と書き込みの融合コマンドの NVM にアトミックに書き込むことが保証されている書き込み操作の名前空間固有のサイズを示します。
の値0h
は、この名前空間のサイズが、コントローラーの識別データ構造の ACWU フィールドで報告されたサイズと同じであることを示します。 その他の値はすべて、 ACWU フィールドと同じエンコードを使用して、論理ブロックの観点からサイズを指定します。
NABSN
NAWUN 値のこの名前空間のアトミック境界サイズを示します。
このフィールドは論理ブロックで指定されます。 アトミック境界を越えるこの名前空間への書き込みでは、他の読み取りまたは書き込みコマンドに関して NVM へのアトミックであるとは限りません。
の値 0h
は、通常の書き込み操作にアトミック境界がないことを示します。 他のすべての値では、 AWUN フィールドと同じエンコードを使用して、論理ブロックの観点からサイズを指定します。
NABO
最初のアトミック境界が開始されるこの名前空間の論理ブロック アドレス (LBA) を示します。
NABSN フィールドと NABSPF フィールドが に0h
クリアされている場合、NABO フィールドは 0h にクリアされます。
NABO の値は、NABSN および NABSPF 以下にする必要があります。
NABSPF
Namespace Atomic Write Unit Power Fail 値に固有のこの名前空間のアトミック境界サイズを示します。
このフィールドは論理ブロックで指定されます。 アトミック境界を越えるこの名前空間への書き込みは、他の読み取りまたは書き込みコマンドに対してアトミックであるとは限らず、関連付けられている論理ブロックの後続の読み取り時に返されるデータの保証はありません。
の 0h
値は、電源障害またはエラー状態のアトミック境界がないことを示します。 他のすべての値は、 AWUPF フィールドと同じエンコードを使用して論理ブロックの観点からサイズを指定します。
NOIOB
名前空間の最適な IO 境界 (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) フィールドは、名前空間の有効期間を通じて固定されたままであり、名前空間とコントローラーの操作 (コントローラーのリセットや名前空間の形式など) 間で保持されます。
このフィールドは、EUI-64 ベースの 16 バイトの指定子形式を使用します。
- バイト 114:112 には、IEEE 登録機関によって割り当てられた 24 ビットのcompany_id値が含まれています。
- バイト 119:115 には、対応するorganizationによって割り当てられた拡張 identifer が含まれています。
- バイト 111:104 には、対応するorganizationによって割り当てられたベンダー固有の拡張識別子が含まれています。
詳細については、IEEE EUI-64 ガイドラインを参照してください。 コントローラーは、名前空間の作成時に、このフィールドまたは EUI64 フィールドにグローバルに一意の名前空間識別子を指定する必要があります。
EUI64[8]
グローバルに一意であり、名前空間の作成時に名前空間に割り当てられる 64 ビット IEEE 拡張一意識別子 (EUI-64) が含まれます。
EUI64 フィールドは、名前空間の有効期間を通じて固定されたままであり、名前空間とコントローラーの操作 (コントローラーのリセットや名前空間の形式など) 間で保持されます。
EUI-64 は、IEEE 登録機関によって割り当てられた 24 ビットまたは 36 ビットのcompany_id値と、対応するorganizationによって割り当てられた拡張識別子の連結です。 詳細については、IEEE EUI-64 ガイドラインを参照してください。
コントローラーは、名前空間の作成時に、このフィールドまたは NGUID フィールドにグローバルに一意の名前空間識別子を指定する必要があります。 コントローラーがグローバルに一意の 64 ビット識別子を割り当てることができない場合、このフィールドは に 0h
クリアされます。
LBAF[16]
16 個の NVME_LBA_FORMAT 構造体の配列を格納します。 配列内の各構造体は、LBA 形式を指定し、それがコントローラーによってサポートされていることを示します。
配列内の構造体の 0 から始まる位置は、LBA 形式 0 (LBAF0) が 0 の位置、LBA 形式 1 (LBAF1) が位置 1 にあるように、LBA 形式 15 (LBAF15) までの位置 15 に対応します。
Reserved4[192]
VS[3712]
このバイト範囲 (384:4095) は、ベンダー固有 (VS) の使用に割り当てられます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 |
Header | nvme.h |