NVME_CONTROLLER_CONFIGURATION union (nvme.h)

コントローラーの読み取り/書き込み構成設定が含まれます。

ホスト ソフトウェアは、次のフィールドに有効な値を設定してからコントローラーを有効にします。 そのためには、 Enable EN フィールドの値を に 1設定します。

この構造体は、NVME_CONTROLLER_REGISTERS構造体の [コントローラー機能 (CC)] フィールドで使用されます。

構文

typedef union {
  struct {
    ULONG EN : 1;
    ULONG Reserved0 : 3;
    ULONG CSS : 3;
    ULONG MPS : 4;
    ULONG AMS : 3;
    ULONG SHN : 2;
    ULONG IOSQES : 4;
    ULONG IOCQES : 4;
    ULONG Reserved1 : 8;
  } DUMMYSTRUCTNAME;
  ULONG  AsUlong;
} NVME_CONTROLLER_CONFIGURATION, *PNVME_CONTROLLER_CONFIGURATION;

メンバー

DUMMYSTRUCTNAME

DUMMYSTRUCTNAME.EN

コントローラーがコマンドの処理を有効にするかどうかを示します。

この値が に 1設定されている場合、コントローラーは 送信キュー Tail Doorbell の書き込みに基づいてコマンドを処理します。 この値が に 0クリアされると、コントローラーはコマンドを処理せず、 完了キューエントリを完了キュー にポストしません。

このフィールドが から 10遷移すると、コントローラーはリセットされます (コントローラー リセットと呼ばれます)。 リセットにより、すべての I/O 送信キューと I/O 完了キューが削除され、管理送信キューと完了キューがリセットされ、ハードウェアがアイドル状態になります。 リセットは PCI Express レジスタまたは 管理 キュー レジスタ (AQA、ASQ、または ACQ) には影響しません。 他のすべてのコントローラー レジスタと内部コントローラーの状態 (電源状態間で永続的ではないフィーチャー値など) は、既定値にリセットされます。 コントローラーは、リセット操作の前に対応する完了キュー エントリが I/O 完了キューにポストされたコマンドのデータ損失がないことを確認します。

このフィールドが に0クリアされると、コントローラーが再び有効になる準備ができたら、コントローラーによって [コントローラーの状態] の [準備完了 (RDY)] フィールドの値が クリアされます。0 このフィールドが に1設定されている場合、コントローラーは、コマンドを処理する準備ができたら、[コントローラーの状態]RDY フィールドの値を に1設定します。 RDY は、名前空間に 1 アクセスする準備が整う前に に設定できます。

RDY が の場合に このフィールドを 10設定するか、RDY1'0' の場合にこのフィールドを '1' から '0' に設定すると、未定義の結果になります。 管理 キュー レジスタ (AQA、ASQ、ACQ) は、EN が に0クリアされている場合にのみ変更されます。

DUMMYSTRUCTNAME.Reserved0

DUMMYSTRUCTNAME.CSS

I/O 送信キューで使用するために選択される I/O コマンド セットを指定します。

ホスト ソフトウェアでは、コントローラー機能CSS フィールドに示されているように、サポートされている I/O コマンド セットのみが選択されます。

このフィールドのこの値は、コントローラーが無効になっている場合にのみ変更できます ( EN フィールドは に 0クリアされます)。 選択した I/O コマンド セットは、すべての I/O 送信キューに使用されます。

DUMMYSTRUCTNAME.MPS

ホスト メモリ のページ サイズを示します。 メモリ ページ サイズは です (2 ^ (12 + MPS))。 したがって、最小ホスト メモリ ページ サイズは 4 KB、最大ホスト メモリ ページ サイズは 128 MB です。

ホスト ソフトウェアによって設定される値は、コントローラー機能MPSMAX フィールドと MPSMIN フィールドで示されるサポートされている値である必要があります。 このフィールドは、PRP 入力サイズに使用される値を記述します。

このフィールドは、 EN が に 0クリアされている場合にのみ変更できます。

DUMMYSTRUCTNAME.AMS

使用する調停メカニズムを指定します。

このフィールドは、 EN が に 0クリアされている場合にのみ変更できます。

ホスト ソフトウェアは、コントローラー機能AMS フィールドに示されているように、サポートされている調停メカニズムにのみこのフィールドを設定できます。 このフィールドがサポートされていない値に設定されている場合、動作は未定義です。

DUMMYSTRUCTNAME.SHN

シャットダウンの実行時にシャットダウン処理を開始するために使用される NVME_CC_SHN_SHUTDOWN_NOTIFICATIONS 値を指定します。 たとえば、電源を切る条件が必要な場合です。

通常のシャットダウン通知の場合、コントローラーにはシャットダウン通知の処理に時間が与えられていることが予想されます。 突然のシャットダウン通知の場合、ホストはシャットダウン処理が完了するまで待機しないと電源が失われる可能性があります。 このフィールドは、電源が切れ、PCI 電源管理状態が変更される前に、ホスト ソフトウェアによって に書き込まれる必要があります。 ウォーム リブートの前に、このフィールドも に書き込むことが推奨されます。

シャットダウン処理が完了するタイミングを確認するには、「コントローラーの状態」の SHST 値を参照してください。

DUMMYSTRUCTNAME.IOSQES

選択した I/O コマンド セットに使用される I/O 送信キュー エントリ サイズを指定します。

このフィールドの必須値と最大値は SQES で指定されます 。RequiredEntrySizeSQES。 各 I/O コマンド セットの [コントローラーの識別 ] データ構造の MaxEntrySize フィールド。 値はバイト単位で、2 の累乗 (2^n) として指定されます。

DUMMYSTRUCTNAME.IOCQES

選択した I/O コマンド セットに使用される I/O 完了キュー エントリ サイズを指定します。

このフィールドの必須値と最大値は 、CQES で指定されます。RequiredEntrySizeCQES。 各 I/O コマンド セットの [コントローラーの識別 ] データ構造の MaxEntrySize フィールド。 値はバイト単位で、2 の累乗 (2^n) として指定されます。

DUMMYSTRUCTNAME.Reserved1

AsUlong

要件

要件
サポートされている最小のクライアント Windows 10
Header nvme.h