次の方法で共有


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設定されている場合、フィールド NAWUNNAWUPFおよび NACWU はこの名前空間に対して定義され、識別コントローラーのデータ構造の AWUNAWUPFACWU フィールドではなく、この名前空間のホストによって使用される必要があります。

この値を に 0クリアすると、コントローラーは、この名前空間のフィールド NAWUNNAWUPFおよび NACWU をサポートしません。 この場合、ホストは、コントローラーの識別データ構造で定義されている AWUNAWUPFおよび 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