NVMe 2.0、次世代M.2SSDインターフェース

NVMe 2.0

NVMe規格は、不揮発性のすべてのメーカーが使用する一連の規格を定義しています。 RAM、NANDフラッシュとしてよく知られている、メモリチップを構築するために従う必要があります。 データを保存するだけでなく、このタイプのメモリがPCと通信する方法についても説明します。 NVMe標準のバージョン2.0には、非常に重要な変更が加えられます。 SSD ドライブ。

NVMeメモリの問題の2.0つは、今日のPCがすべてのタイプのNANDフラッシュメモリとハードディスクの抽象化であるかのように通信するため、このタイプの不揮発性メモリのすべての特性を利用できないことです。 。 NVMe XNUMX標準は、この問題を解決し、PCがNVMe SSDをハードドライブとしてではなく、実際に何であるかを確認することを目的としています。

NVMe 2.0仕様とは何ですか?

NVMe 2.0 ディスコ デュロス

そもそも、NVMe 2.0仕様では、NVMe SSDで使用されるメモリチップの種類やデータ転送の方法がいつでも定義されていないことを明確にする必要があります。 ただし、ホストシステムとSSD間の一連の通信プロトコルを定義します。 ゲストシステムであるため、メモリ要求を行うプロセッサにすぎません。これは、 CPU GPU、DMAユニットなど。

したがって、NVMe2.0仕様に準拠するためにSSDドライブまたはNVMeメモリを使用するその他のシステムが満たさなければならないさまざまな側面を示す一連のさまざまな仕様です。 これは、1.0年のバージョン2011のリリース以降の最も重要な変更であり、以前のプロトコルとの下位互換性があることを明確にする必要があります。

NVMeディスコデュロ

これらの仕様の基礎は、NVMeメモリと通信するための一連の新しいプロトコルを定義するNVM Express Base(NVMe Base)です。 残りはオプションであり、基本仕様の一部ではありませんが、キー値とゾーン名前空間はオプションであるため、これらはこの記事で扱うものです。

オプションの仕様は何ですか? 主にXNUMXつあります。

  • NVM Express管理インターフェース(NVMe-MI)は、NVMExpressインターフェースを利用するすべてのシステムを管理するためのオプションの追加インターフェースを定義します。
  • 代わりに、データI / Oのデータ構造、特性、ログページ、コマンド、およびステータス値がNVM Express I / Oコマンドで指定されます。
  • NVM Express Transportは、フラッシュメモリコントローラーのプロパティに関する一連の仕様です。

NVMe2.0標準のゾーン化された名前空間

ゾーン化された名前空間NVMe2.0

NVMe 2.0標準の目新しさの2.0つは、Zoned Namespacesコマンドの実装です。これにより、PCはSSDのメモリ構成をNVMe 1.4標準の下で異なるゾーンに分割できますが、その実装はバージョンXNUMXのバージョンXNUMXで発生し始めました。 NVMe標準の最終バージョンは、この記事で扱っているバージョンに記載されています。

ゾーン化された名前空間NVMe2.0

アイデアは、SSDストレージをさまざまな領域に分割することに他なりません。それらをパーティションと考えてください。 PCが名前空間ゾーンにデータを書き込むように要求すると、フラッシュメモリコントローラーはそのゾーンに順番に書き込みます。サイズは区切られ、事前に割り当てられたサイズを超えると、それ以上データを書き込むことができなくなります。 、使用可能なフラッシュメモリがまだあるかどうかに関係なく。

これの目的は? 利点のXNUMXつは、フラッシュメモリコントローラーがランダムメモリアドレスへの書き込みを管理する必要がなく、スペースの使用が最適化されることを意味します。 CPUは、データを格納する領域として、ストレージの区切られた部分を予約するだけです。 そのゾーンへのアクセスが必要な場合、PCはフラッシュメモリコントローラーにその特定のゾーンのデータにアクセスすることを通知します。

Key-Valueは、NVMe2.0でのデータへのアクセス方法を変更します

クラーヴ・バロール

NVMe 2.0に組み込まれているもうXNUMXつの改善点は、Key-ValueまたはKey-Valueコマンドです。 これは、データブロックの仮想アドレスではなく、一意のキーを介してSSDに保存されているデータにアクセスすることに基づいています。 これはデータベースの世界から生まれたものであり、この目新しさにより、アプリケーションはキー値を介してSSDと通信できます。 これは、プロセッサによって発行されたキーとメモリの物理アドレスの間の変換テーブルに別れを告げることを意味します。

従来、情報はブロックごとにSSDに保存されるという概念をよりよく理解するには、ハードドライブの世界から来たものであり、次のことを意味します。

  • データは通常のサイズのメモリのブロックまたはページに格納されますが、キー値に関連付けられたデータのグループは任意のサイズにすることができます。
  • ブロックシステム内のデータは仮想メモリアドレスからアクセスされますが、NVMe 2.0では、データにアクセスするためのキー値を知ることでデータにアクセスできます。
  • キー値を使用するストレージでは、任意のバイト数を格納できますが、従来のメモリページングでは、各ブロックのサイズの倍数でのみデータを格納できます。

Key-Valueは、1つの異なる値に基づいています。最初の値は、各デバイスに割り当てられ、32バイトから2.0バイトのサイズを持つことができるキーです。 NVMe XNUMXデバイスごとに、データにアクセスするための一意のキーが生成されます。 XNUMXつ目は、特定のデータブロックへのアクセスを許可する値です。

従来のディスクドライブのサポート

NVMe2.0回転メディア

従来のハードドライブがなくなるまでには何年もかかり、それらの多くはSSDと並んで多くのタンデムシステムでまだ使用されています。 ただし、NVMe 2.0標準によってもたらされるデータアクセスの新しいルールは、データがハードドライブに保存される方法とは大きく異なります。

回転フォーマットのサポートは2つのことに基づいています。XNUMXつは、ハードドライブがM.XNUMX NVMe SSD、つまりポートPCIExpressと同じI / O周辺機器の物理スペースにアクセスできるようにすることです。これは、PCIeインターフェイスを備えたディスクが表示されることを意味するものではありませんが、SATAからPCIeに転送するための将来のインターフェイスのPCで、両方のストレージデバイス間でデータをより高速にコピーできるようにする予定です。

もう2.0つは、ゾーン化された名前空間とキー値の形式での新しいNVMe 2.0データアドレス指定のサポートです。これにより、両方のタイプのストレージを同じシステム内で理解できます。 つまり、NVMe XNUMXは、逆のことが発生するためにSSDがHDDの言語で話すのを停止すると想定します。