ZNS SSD:このストレージフォーマットの特徴と使用法

ZNSSSDはすぐに実現します。 これらは異なるタイプのハードウェアではありませんが、NANDフラッシュメモリチップ上のデータにアクセスする方法が異なり、NANDフラッシュメモリを使用するためのより最適化された方法を採用しています。 したがって、それぞれに統合されているフラッシュコントローラーの変更が含まれます SSD.

SSD ZNS標準は、NVMe内の標準として承認されており、同じバージョン2.0の一部です。 これには、内部に保存されているデータへのアクセス方法と整理方法の大幅な変更が含まれます。 これまでのところ、SSDは従来のハードドライブであるかのようにアクセスされてきましたが、これはこのタイプのメモリに最適な方法ではありません。

ZNSSSD

SSDとは何ですか?

ハードウェアレベルの従来のSSDは、不揮発性のセットです RAM メモリ、特にフラッシュコントローラに接続されているNANDフラッシュメモリ。通常のメモリコントローラと同じように機能し、接続したメモリへのアクセス要求を管理します。

これまでのところ、SSDは従来のハードドライブと同じ方法でデータを管理してきましたが、SSDの寿命と機能の使用方法の点であまり効率的ではありません。 その理由は、ハードディスクのように揮発性ではないにもかかわらず、NANDフラッシュメモリはデータアクセスの点でRAMに似ているためです。 このタイプのメモリにアクセスするための、より高度な、したがってその機能に沿った新しい方法を採用する方がよい理由は何ですか。

ZNSはまさにその形状です。では、その特性を見てみましょう。

ZNS SSDとは何ですか?

ZNSコントローラー

まず第一に、ZNSはどういう意味ですか? そうですね、それらはZonedNameSpacesの頭字語です。 これはディスク上のストレージを整理する方法であるため、データをSSDに保存する方法について説明します。 ハードドライブで行われるのは、情報をページに整理することです。ページはテーブルに保存され、後者はディレクトリに保存されます。 ページングシステムは、各ページに固定された特定のスペースがある従来のハードディスク上のデータを整理するために使用されます。

一方、ZNS SSDでは、スペースをさまざまなサイズのゾーンに分割することが行われます。 目的は、 CPU GPU または、他の要素が仮想メモリアドレスを指すのではなく、メモリにデータを書き込む必要がある場合、その領域を指すようになります。 これは、サイズに関して以前に定義されています。 その操作は何ですか? シンプルで、フラッシュメモリに書き込むたびに、そのゾーンに割り当てられた名前空間が呼び出されます。 フラッシュコントローラーは、そのゾーンの外側ではなく、そのゾーンにデータを書き込みます。 また、ディスクにデッドスペースを残さないように、またその使用を最適化するために、順次実行します。

SSD ZNS

この手法で実現されるのは、フラッシュメモリコントローラーがランダムメモリアドレスへの書き込みを処理する必要がなく、SSD上のスペースの使用が最適化されることです。 CPUは、データを格納する領域として、ストレージの区切られた部分を予約するだけです。 そのゾーンにアクセスする必要がある場合、PCは、特定の名前空間を呼び出すことにより、その特定のゾーンのデータにアクセスすることをフラッシュメモリコントローラーに通知します。

ZNS SSDは、いわゆる論理ブロックアドレス指定を使用します。すべてのゾーンは論理ブロックまたはLBAで構成されます。 各ゾーンには、データを格納するための論理ブロックをいくつでも含めることができますが、サイズは2以上である必要があり、XNUMXつの論理ブロックまたはLBAのデータが書き込まれると、次の論理ブロックの情報が順番に入力されます。

主な利点は、常に必要以上のメモリを予約しないため、SSDにデッドスペースが作成されないことです。 これにより、書き込みサイクルが大幅に短縮され、データがユニットによって分散されるのではなく、順次編成されるため、データへのアクセスの遅延をより簡単に予測できます。

ZNSSSD上のステートマシンとコマンド

マキナエスタドZNS

ゾーンの名前空間をサポートするには、フラッシュメモリコントローラーが一連の命令を実行して、情報を処理し、SSDに適切にアクセスできるようにする必要があります。 そのため、SSD上の情報を制御するために一連の有限状態マシンが使用されます。 有限状態マシンは、ハードウェア内のマイクロワイヤードコードです。この場合、フラッシュコントローラーは、入力情報に基づいて、フラッシュメモリのその領域でどのように機能する必要があるかを示します。

  • 空の: 何もないときにデータを書き込むことができ、読み取りが行われると、製造元によって事前定義されたデータが返されます。 ほとんどの場合、ゴミです。 ゾーンはresetコマンドで完全に消去できます。これにより、さまざまなゾーンの編成が破壊されます。
  • フル: ゾーンはデータでいっぱいであり、それ以上の情報を格納することはできませんが、読み取り専用で使用できます。
  • オープン: ゾーンの現在アクティブなLBAのデータの読み取りと書き込みを許可します。 各ゾーンは、暗黙的に開くことも、明示的に開くこともできます。 XNUMXつ目は、フラッシュコントローラーの[開く]コマンドを呼び出すことで開くことができるという事実です。 代わりに、明示モードには同じ機能がありますが、アプリケーション自体からのものです。
  • 閉まっている: ゾーンが閉じている場合、ゾーンは読み取りコマンドのみを受け入れ、新しいデータの入力を許可しません。
  • 仕上げ: データを消去しませんが、ゾーンを完了としてマークします。 より多くのメモリが元々複数のLBAの形式でストレージに割り当てられていたかどうかに関係なく、そのゾーンにこれ以上データを格納することはできません。

各ゾーンの開始時に、フラッシュコントローラが行うことは、メモリ内のそのゾーンのステータスを思い出させるラベルを配置することです。