本文へ移動

NVMe FDP - 有望な新しいSSDデータ配置アプローチ

グローバルオープンエコシステムチーム(GOST)、
Arun George

  • 共有

フレキシブルデータ配置(FDP)技術は最近、NVMe SSDの業界で大きな注目を集めています。 このブログ投稿では、NVMe FDPの詳細と主要な概念を紹介します。 FDPがNVMeエコシステムに適合する理由と、FDPをソフトウェアスタックに統合することの意味について説明します。 このブログ投稿はエンジニア、アーキテクト、経営者、マーケティングの専門家、あるいは最近のイノベーションに興味のある人に役立つと思います。

 

 

1. WAFとデータ配置の概要

書き込み増幅は、SSDの分野でよく知られている問題です。書き込み増幅率(WAF) は、ホストの書き込みに応じてSSDが実行する追加のNANDメディア書き込み操作を示します(WAF=NANDメディア書き込みの合計/ホストが発行した書き込みの合計)。 NANDフラッシュメディアが書き込みを処理するには、追加のメディア書き込みが必要になります。 一度プログラムされたNANDフラッシュページは、フラッシュブロック全体(1ブロック=Nページ)を再度消去しない限り、上書きができません。 消去はコストのかかる作業であるため、SSDファームウェアは書き込みをログ構造化方式で処理することにより不要な消去作業を回避します。 従って、上書きすると新しいフラッシュページにリダイレクトされ、古いページは無効だと表示されます。 最終的には、このような無効なページが多く生成されます。 SSDのガベージコレクション(GC)プロセスは、有効なページを新しいフラッシュブロックに移動することでページを処理します。 GCプロセスは、これらのフラッシュブロックを消去するために解放し、最終的には新しい書き込みのために解放します。 GCは進行中のホスト開始書き込みに加えて、有効なページの移動による追加の書き込みを発生させます。 このプロセスは、SSDにおけるWAF問題の根本的な原因です。 WAFの問題の範囲は、アクティブなホストのワークロードに応じて異なる場合があります。 例えば、シーケンシャルワークロードはSSDソフトウェアのログ構造の書き込み設計 と一致するためWAFを引き起こさないかもしれませんが、上書きの多いランダムなワークロードはSSDで高いWAFを引き起こす可能性があります。

SSDは通常、GCプロセスの影響を緩和してWAFを削減するため、一定レベルのオーバープロビジョニングされたブロックを使用します。 オーバープロビジョニング(OP)はホストに公開されたSSD容量ではなく、追加のNANDメディア容量を保持する方法です。 さらに特定のホストエコシステムでは、ホストレベルのオーバープロビジョニングを採用することで、このデバイスOPを拡張します。 このホストOPは、SSD使用率を全容量の100%未満に制限することによって実現されます。 しかし、これによりSSD容量の利用効率が低下します。

SSDデータ配置技術は、ホストとSSD間のデータ配置を調整することでWAF問題を解決しようとする試みです。 オープンチャネルSSDやNVMeストリームなどの一部のテクノロジーは業界であまり注目されておらず NVMeゾーン名前空間(ZNS)などのテクノロジーはWAF削減を実現するために、ホストでデータパターンとソフトウェアのスタックを変更する必要がある問題点に直面しています。 そのため、業界が求めていた解決策となるには十分な支持を得ることができませんでした。 このデータ配置シリーズに関する以前のブログ投稿は、データ配置技術の歴史に関する詳細な知識を得るのに優れたリソースです。

 

 

2. FDP

TP4146として承認されたNVMeフレキシブルデータ配置(FDP)仕様は、SSDデータ配置技術分野における新しいアプローチです。 FDPは業界がこれまでに得た経験の結果です。 スタックの変更を最小限に抑えながらデータ配置のための十分なフックを提供すると同時に、WAFの利点をホストに提供しようと試みます。

効率的なSSDデータ配置のためのFDPの概念については、「Introduction to Flexible Data Placement: A New Era of Optimized Data Management」のホワイトペーパーを参照してください。 ここでは中核となる概念に焦点を当てます。 初心者の方は、FDPドライブを使い始めるためのホストエコシステムとユーティリティについて詳しく説明されているホワイトペーパーである「Getting Started with Flexible Data Placement(FDP)」を参照してブートストラップすることができます。

FDPの主要な考え方は、次の図のようにまとめることができます。 従来の(CNS)SSDはホストに論理アドレスの範囲(LBAs)のみを公開しますが、データ配置対応のSSDはメディアトポロジーに関連する追加の属性も公開します。 FDP SSDは、ホストがデータストリームを分離し、データ構造をメディア境界に合わせるのに十分な属性を公開します。 さらにメディアブロックのガベージコレクションやその他のメディア管理に関して、ホストに追加の負担がかかることもありません。

従来型SSDとFDP SSDのホスト・インターフェイス
従来型SSDとFDP SSDのホスト・インターフェイス
2.1 簡略化されたメディアトポロジーの表示

FDPを使用すると、ホストはメディアトポロジーを簡略化して表示し、適度に認識できるようになります。 FDP SSDは他の従来のドライブと同様に、論理-物理マッピング、ガベージコレクション、およびNANDメディアの不良ブロック管理を制御します。 他のテクノロジーと比べてZNSドライブでは、ホストが論理物理マッピングとガベージコレクションプロセスを制御する必要があります。 ホストは配置に関するオプションのデータヒントを除き、従来のドライブと同じ論理アドレス指定方法(LBA)を使用してFDPドライブをアドレス指定します。

FDPドライブはホストがデータの配置に活用できるように、いくつかの重要な情報をホストに公開します。

 

  • リクレイムユニット(RU): RUはホストの書き込みデータがプログラムされるNANDブロックのセットです。 RUはデバイスファームウェアの設計に応じて、スーパーブロックやサブスーパーブロックと同じになる場合があります(スーパーブロックは、すべてのチャネル、バンク、ダイ、プレーンにわたるNAND消去ブロックの集合です)。 RUはホストが書き込みとGCイベントを追跡できる粒度です。 現在の実装でのRUのサイズは、通常~GBs単位です。

  • リクレイムグループ(RG): RGはRUの集合です。 RGにより、ホストはダイレベルでデータ分離を実行できます。 典型的なRGは、単一のダイまたは複数のダイで構成されます。

 

2.2 データストリームを分離するホストの機能

リクライムユニットハンドル(RUH)は、ホストが複数のRUに同時に書き込むことを可能にします。 これは以前のNVMeストリームに似ています。従来のSSDでは、常に1つのヘッドブロック(またはスーパーブロック)にしか書き込まれないことに注意してください。 そして、現在のヘッドブロックが完全にプログラムされた場合にのみ、次のヘッドブロックが選択されます。 FDPは受信ホストデータに使用できる複数のヘッドブロックを通じて、複数の追加ポイントを提供します。 ホストはデータをプログラムするRUHを指定することで追加ポイントを選択できます。 RUHの数はデバイスの構成によって異なり、通常は製品の要件によって1~128の範囲になります。

 

2.3 デバイスからのフィードバック

NVMeストリームなどの類似テクノロジーとFDPが異なる主な要因の1つは、提供された配置セマンティクスの有効性に関してデバイスの方からホストに積極的なフィードバックを提供するということです。 一般的なフィードバックは、生成されたガベージコレクション(GC)イベントの観点から行われます。これらのフィードバックは、FDPログレジスターから定期的に収集され、配置セマンティクスを微調整するために使用されます。 フィードバックの仕組みがSSDのパフォーマンスパスに存在しない場合、ホストソフトウェアの重要なIOパスでは使用されない可能性があるので、注意する必要があります。

 

 

3. SSDにおいてFDPとは何を意味しますか?

SSDデバイスのレベルでFDPの活性化が、どのような影響を及ぼすのか調べてみるのも興味深いです。 最初の図表は、従来のドライブのアーキテクチャを説明しており、A)はドライブの簡略化された高レベルのメディアレイアウトで、 ホスト書き込み用の単一のヘッドブロックを表示しています。 図表のB)では、さらにチャネルとダイに分け、書き込み追加ポイントをどのように管理しているのか示しています。 重要な点は、NANDページを基準に<Channel、Die、Plane>の組み合わせがヘッドスーパーブロックの追加ポイントに対応する書き込み位置を持つということです。 これは簡略化された例えであり、特定の実装は異なる場合があります。

 

従来のドライブ・アーキテクチャ
従来のドライブ・アーキテクチャ

以下のFDPドライブアーキテクチャの図表は、少し異なる観点となりますが、実装は従来のドライブとほぼ同じものとなります。 FDPドライブは、リクレイムユニットハンドルに関して複数の追加ポイントを公開していますが、従来のドライブにはホスト書き込み用の追加ポイントだけが公開されていました。 次の図表は、リクレイムユニットハンドルのサイズと構成がスーパーブロックと等しい場合を説明しています。 必ずすべての実装に当てはまる必要はなく、製品要件に応じて異なる場合があります。 いくつかの実装では、<Channel、Die、Plane>組み合わせの一部のみに適用されるサブスーパーブロックのリクレイムユニットのサイズを選択することができます。

FDPドライブ・アーキテクチャ
FDPドライブ・アーキテクチャ
3.1 RUHの複数の追加ポイント

FDP SSDは、リクレイムユニットハンドルとして複数の追加ポイントを提供するため、それをサポートするために書き込みバッファーストライプなどの追加リソースを保持する必要があります。 これらのオーバーヘッドと特定の展開ニーズは、SSDでサポートできるRUHの数に影響を及ぼします。 多数のRUHをサポートする方法としては、リクレイムユニットのサイズをサブスーパーブロックサイズに設定し、同じスーパーブロック自体に複数のホスト追加ポイントを持たせることです。 これは<Channel、Die、Plane>の組み合わせを同時にプログラムする時に最大のスループットを生成するようにスーパーブロックサイズを構成したため、SSDのパフォーマンスに影響を与える可能性があります。 従って、追加ポイント(RUH)の数を選択することは、SSDを設計する際に必要な性能ニーズと柔軟性を考慮して取られるべき賢明な決定なのです。

次のように要約できます。

  • 少ない追加ポイント‐ホストに対する柔軟性は低いが、パフォーマンスの良さは保証できる

  • 多数の追加ポイント‐ホストに対する柔軟性は高いが、パフォーマンスは低い

 

3.2 最適なRU、RG構成は何ですか?

サブスーパーブロックRUサイズではより多くのRUHを使用できるため、多くのFDPベースのSSDで考慮される構成です。 データ配置に対するホスト制御を効率的に行うには、できるだけ多くのRUHとRGを使用する方が良いかもしれませんが、性能に影響が出る可能性があります。 従って、SSDの設計者はホストが低いパフォーマンスで細かいデータの配置をサポートできるようにするか、それとも最高の性能で少ない配置の制御をサポートできるようにするかによって、<小さいRU、多いRUH>と<大きいRU、少ないRUH>のどちらかを選ぶ設計選択をすることとなります。 RG構成についても同じことが言えます。RGの数を増やすと、より細かい配置制御が可能になりますが、最大スループットを達成する責任はホストにあります。 FDP対応のSSDは、選択できる<RG、RUH>の構成が数個(最低1つ)だけになります。

つまり、

  • <小さいRU、多いRUH>または<多いRGs>‐SSDのパフォーマンス保証は低いが、ホスト制御は向上

  • <大きいRU、少ないRUH>または<少ないRGs>‐SSDのパフォーマンス保証は高いが、ホスト制御は低下

 

3.3 初期に分離されたRUHと持続的に分離されたRUH

FDPにより、SSDは初期分離RUHと持続分離RUHを定義できます。 初期分離されたRUHの構成は、ホスト書き込み時にデータの分離は保証されますが、データの存続期間中に保証されるわけではありません。 最終的なGCプロセスにより、このデータを他のRUHのデータと混在することができます。 持続分離RUHとは、他のRUHデータと分離されたデータが存続期間中に保証されることを意味します。 持続的に分離されたRUHは理論的には良さそうに見えますが、SSDで実装するにはより多くのリソースが必要になります。 従って、初期のFDPデバイスは基本的な分離をより低コストで実現するのに役立つため、初期分離されたRUHと共に展開されると予想されます。 MetaのCacheLibでFDPを統合した結果によれば、初期分離されたRUHは1に近いWAFを達成するのに十分であることを示しました。

 

 

4. FDPはホストにとって何を意味しますか?

FDPの重要な側面の1つは、以前のバージョンとの互換性が優れており、オプション機能であるということです。 FDP対応のSSDは、これまで通りオーバーヘッドなしで、FDPに依存しないソフトウェアスタックで動作し続けることができます。 FDP対応のソフトウェアスタックは、FDPではなくSSDでも問題なくシームレスに動作します。 唯一の欠点は、FDPの追加メリットであったWAFが利用できなくなるということです。 FDPはオプション機能であるため、FDPが活性化されたSSDはIOコマンドで活性化された場合にのみ、ホストに提供されたヒントを処理します(DTYPEおよびDSPECフィールドが使用されます)。

 

4.1 いつFDPを選択すべきなのか。

FDPは、ホストがエンジニアリングの労力をかけずにデータ配置の利点を最大限に活用できる最適なテクノロジーです。 「最大限」とは、SSD書き込み増幅率(WAF)を意味し、「最大限」のシナリオでは「理想値の1に最も近い」こととなります。 FDPでは理想的なWAF 1を達成することは可能になり、ワークロードによって異なります。

ホストがすべてのシナリオでSSD WAF 1を達成するには、厳密なシーケンシャル書き込みインターフェースを備えたZNSなどのメカニズムの方が適している可能性があります。 しかし、そのようなソフトウェアスタックが設計されていない場合、該当インターフェースに適合するシーケンシャルIOパターンを作るためにホストソフトウェアスタックを再設計する必要があります。 その結果、アプリケーションレベルのWAFが追加され、既存のWAFが無効になり、エンドツーエンドのWAFは機能を維持することになります。 従って、このような厳密な書き込みインターフェースは、ホストソフトウェアを最初から「WAF=1」に準拠するように設計されている場合にのみ正常に機能するということになります。 エンジニアリングの労力をかけず、アプリケーションレベルのWAFに影響を与えずにWAFの利点を最大限に活用したいホストにとってFDPは理想的な選択肢です。

 

4.2 FDPの設計上の考慮事項

4.2.1 RUH分離によって利点が得られるワークロードは?

ワークロードを分析しRUH分離することで、メリットが得られるのは誰なのかを判断する必要があります。 ホットデータ温度(多くの上書き)を伴い、複数の異なるIOパターンを持つワークロードは、間違いなく高いWAFを引き起こすものです。そのため、FDP RUHベースの分離で恩恵を受けます。

例えば、次のワークロードはFDPから簡単にメリットを得ることができます。

  • SSDキャッシュのように、ホット/コールドデータの分離機能を備えているワークロード

  • テナントベースの分離を必要とするワークロード

  • 大きなメタオーバーヘッドを持つワークロード(WAFおよびテールレイテンシの改善のため、メタとデータを分離できる場合)

  • 別途の書き込みスレッドを持つと識別できるワークロード

 

4.2.2 ホストはいつRG分離を使いますか?

FDPのリクレイムグループの概念は、ホストに対して興味深いレベルの配置制御を提供します。 FDP SSDが1つのダイ当たりRGまたは複数のダイを提供する場合、ホストは分離を必要とするデータをそのRGに配置することで利用できます。 分離が役立つシナリオの1つはマルチテナントの使用例において、異なるテナントがある場合です。 これによりGCイベントなどの面で、1つのテナントを他のテナントの性能への影響から分離することができます。 しかし、RGが小さくなるとSSD内部の書き込み作業で並列処理の使用が減るため帯域幅も小さくなり、性能が低下する可能性があります。 多くのシナリオでは、デバイスごとに1つのRGを使い、並列処理を利用してSSDが最高の性能を引き出せるようにするシンプルな方式で十分です。

 

4.2.3 ホストはRUで書き込みを追跡する必要がありますか?

FDPを使うと、ホストはRUで書き込みを追跡することができます。 ホストはFDP仕様でRUに残っているバイトを把握でき、必要に応じて特定のRUHに対して新しいRUを取得するようにSSDに指示することもできます。 ホストアーキテクトはこのような規定を喜ぶかもしれませんが、慎重に扱う必要があります。 このようなRU追跡用のコマンドは管理者コマンドとして実現される可能性があり、IOコマンドよりもはる遥かに遅い可能性があります。 そのため、制御パスではRUの書き込み追跡をオンラインIOの追跡方法論ではなく、オフライン検証のメカニズムとして設計した方が良いです。 また複数のスレッドが同じRUHへ同時に書き込む場合、RUの書き込み追跡は困難になります。 考慮すべき要素がもう1つありますが、「IOのキュー深度>1」が採用されている場合、SSDコントローラでコマンドの順序が変わる可能性があることです。  

従ってホストは、次の場合にのみRUの書き込み追跡を実行することが推奨されます。

  • 与えられたRUHに単一のスレッドを書き込んでいる場合

  • NVMeのキュー深度=1が使用される場合

つまりRUレベルの追跡を使用した最適化は、ホストのデータ移動が一貫したRUの大きさ(または似ている大きさ)を持っている時に意味を持ちます。 そうでないと、オーバーヘッドの追跡がメリットを上回る可能性があります。 また、このRU追跡はIOパスの動作の変更が必要であるため、従来のアプリケーションでは実現が複雑になる可能性があります。 ほとんどの場合、遅延時間が増加するため「QD=1」はコストが高くなるかもしれません。

 

 

5. 実際にFDPはどのように作動しますか?

FDPが低い書き込み効率(WAF)の実現に、どのように役立つかは興味深い点です。 異なる3つのアプリケーションを使用したRUHベースの分離を取り上げ、SSD GCの動作を分析してみます。

コンベンショナル・ドライブ(非FDP)
コンベンショナル・ドライブ(非FDP)

この例から、FDPベースの分離はSSDのGCプロセスの負荷を軽減します。またワークロード固有の無効化により、ブロックの解除に役立つことが分かります。 FDPは、このリリースが寿命が異なるストリームやアプリケーションのデータから影響を受けないようにします。 つまりFDPは、上記の状況でSSDが約1のWAFを維持するのに役立ちます。

 

 

6. 興味深い初期結果

サムスンではSamsung PM9D3 SSDを使用して、Meta(Facebook)のCacheLib展開にFDPを活用しました。この作業は メインストリームのCacheLibコードと結合されました。 結合の結果は非常に興味深いものでした。 当初CacheLib展開では、SSDをフルに使用した場合にWAFが最大3.5と高くなっていました。 そのため展開時にSSDの使用率を50%に削減させ、ホストのOPを50%に設定することで、SSD WAFを1.3未満に維持する必要がありました。 FDP Cachelibを使用するとKVキャッシュのワークロードは、SSDをフルに活用した場合でも約1のWAFを維持できます。 その結果、容量を効率的に使い、遅延時間が短縮され(GCが少なくなるため)、SSDの電力消費も低減(これもGCが少なくなるため)されます。

次の投稿では、CacheLibエコシステムでのFDP結合と持続可能性のメリットについて詳しく説明します。

FDPと非FDPデバイスWAFの比較 - KVCacheの100%デバイス使用率
FDPと非FDPデバイスWAFの比較 - KVCacheの100%デバイス使用率

7. 次は何でしょう?

NVMe FDPは、面白くて新しいSSD データ配置技術です。 これはSSDのWAF問題を解決するための様々なアプローチを試してきた長年の業界経験の成果でもあります。 データ配置においてホストに適切な水準の制御機能を提供しながら、ホストソフトウェアスタックにさらなる負担をかけずに、データ配置の目標を達成できます。 FDPの利点はSSD書き込み増幅、テールレイテンシの低減、SSDの電力消費の低減です。

FDPのためのホストエコスステムは用意されており、LinuxのカーネルサポートはIOUring_Passthru のメカニズムで使うことできます。 現時点で、通常のLinuxブロック層のパスにおけるFDPサポートは開発の最終段階にあります。 FDPのエコシステムサポートに関する詳しい内容は、ホワイトペーパーをご参照ください。

多くの業界関係者や学術関係者がこの新しいテクノロジーに興味を持つようになり、より興味深い使用事例が発見できることを期待しています。 今のところ、FDPの将来は明るいようです。

 

 

8. 参考文献:

 

1. 「フレキシブルデータ配置の紹介:最適化されたデータ管理の新時代」
https://download.semiconductor.samsung.com/resources/white-paper/FDP_Whitepaper_102423_Final.pdf

 

2. 「フレキシブルデータ配置を始める」
https://download.semiconductor.samsung.com/resources/white-paper/getting-started-with-fdp-v4.pdf

 

3. 「FDP実装のニュアンス」
https://www.sniadeveloper.org/events/agenda/session/697

 

4. 「データ配置技術の略史」
https://semiconductor.samsung.com/jp/news-events/tech-blog/a-brief-history-of-data-placement-technologies/