東京ナノファーム.png

NVMe 1.4のハイライト

最終更新: 3月19日

NVMeの規格としてはバージョン1.3から2年ぶりの変更になるバージョン1.4は、2019年6月10日にリリースされました。

https://nvmexpress.org/wp-content/uploads/NVM-Express-1_4-2019.06.10-Ratified.pdf


バージョン1.3が、a〜dとリビジョン変更による、機能追加・修正がされたものに対して、バージョン1.4では多くの機能追加・変更が盛り込まれました。


1.4の新しい機能・変更点に関しては下記のURLにまとめられ、該当する仕様書セクション、提案番号が参照できます。

https://nvmexpress.org/changes-in-nvme-revision-1-4/


さらにプログラマ向けWebサービスであるQiitaのブログにてNVMeバージョン1.4の詳細な説明がありますので参考までにURLを以下に貼っておきます。


NVMe Revision 1.4: Overview and highlighted features by Kenichiro Yoshii

https://qiita.com/ken-yossy/items/65310af8e53f8169388f

NVMe Revision 1.4: NVM Sets and its related features by Kenichiro Yoshii

https://qiita.com/ken-yossy/items/495cb481e254eb306c55

NVMe Revision 1.4: Other changes by Kenichiro Yoshii

https://qiita.com/ken-yossy/items/4e6565dcfaf8a0795bab


今回のブログでは、2019年9月に行われたFlash Memory Summit 2019において、NVMe Base Specification 1.4 Feature Overviewの発表で紹介された、NVMe 1.4の新機能の6項目のハイライトをまとめてみました。


(1) IO Determinism

この仕様の目的は、ホストであるOSに確定的な応答時間(レイテンシ)を提供し、ドライブ側の処理から分離することにより、NVMセットを相互作用しないようにすることです。

NVMeドライブでは、OSから送信された複数のコマンドを処理する場合にバックグラウンドタスクが発生します。そのため各アプリケーションで見た場合、読み取りと書き込みをユーザー間で相互作用しており、読み取りと書き込みを使用している他のアプリケーションに影響を与えます。


それらを効率的に処理するため。複数のNVMセットに分割しドライブし、OSに読み取りと書き込みの操作が互いにやり取りしない方法でこれを実行できるメカニズムを提供します。

OS側は、一定期間の時間帯の待機時間を正確に把握し、それ以外の時間帯にドライブがバックグラウンドタスクを実行できるようになり、確定的なレイテンシを取得することができます。



(2) Interface Optimization

オペレーティングシステムがSSDとより適切な対話するメカニズムを提供すべくインターフェースの最適化が行われました。

特定の名前空間での読み取り、書き込み、割り当て解除のための優先サイズ、粒度情報を明示すことにより、OSの観点から最適なIOパフォーマンス及び耐久性を知ることができます。耐久性グループは、1つ以上のNVMセットで構成できます。


OSは、特定の名前空間のサイズと容量を、ドライブによってのみ管理されるのではなく、個別に最適化・管理することができ、直接管理でき名前空間の耐久性が管理可能です。


ホストは特定の送信キューを特定のNVMセットに関連付けることができ、特定の種類の帯域幅を許可し、セット全体でそれを管理機能可能です。


検証のコマンドは、ドライブは読み取ったデータをインタフェースを通してホストに送ることなく検証可能です。


(3) Persistent Memory Regions(PMR)

ドライブが永続的にデータを保持できるPCIスペース内のメモリ領域です。RAIDログ情報、技術変更データベース、ファイルシステムのジャーナル、メタデータなどの保存に利用され、コマンドデータを保存するためにも使用できます。


内容は電源の入れ直し、リセットされても、PMRが無効化されても持続されます。データを保存するために使用できる永続的な領域として、メモリアドレスの指定も可能です。


(4) Enhanced Telemetry Capabilities

拡張されたテレメトリ機能は永続的なイベントログであり、SSDベンダーとそのSSDベンダーの顧客の両方が使用できるインフラ足場として利用できます。

標準化されたインターフェイスを使用して、エンタープライズインフラストラクチャまたはハイパースケールインフラストラクチャのデバッグに必要な情報を収集できます。


これにより、ヘルス・スナップショットやファームウェアのコミットに関する情報など収集し、フォーマットの開始時また完了時の状況、さらにドライブの製造元が大規模がデバッグを行うための必要がある情報を提供します。


ホストであるOSから、それらの情報を保存共通することにより、SSDベンダーだけでなく、SSD顧客の観点でも便利な機能です。


(5) Administrative Controller

NVMe エンクロージャー管理に役立つ新しいタイプの管理コントローラーです。この機能の優れているところは、必要な最小限の機能で管理ができることです。すべてのI / Oインフラストラクチャ、I / Oキュー、コマンドを実行する必要がなく、最低限の管理キューコマンドで管理できます。


また、管理コントローラーのもう1つの重要な機能は、ユニークなPCIインターフェースを備え、標準のNVMeドライブとは異なるカスタムドライバーを管理コントローラーに対してロードできます。これにより、その特定のインターフェースのある種のカスタマイズが可能になります。NVMe-MI in-band インターフェイスを使用してエンクロージャー管理が可能になります。


(6) Maturing the NVMe Infrastructure

NVMeバージョン1.4の仕様は、一貫性のないものや、仕様に不明確なものをクリーンアップすることにより、より広く受け入れられることを目標に作り込まれています。

今後の仕様を効果的に完成度を上げるため、いくつかのリカバリーシナリオを再構築できるように機能の追加をしています。


例えば、あるベンダーがベンダー固有の情報を一種のタグ付けとして特定のUUIDを使用することがありますが、別のベンダーの仕様と固有のイベントが衝突しないようにするメカニズムをもたせることにより、大規模な種類のデータセンターでのデバッグ時に衝突することなく複数のベンダーソリューションを展開できます。


その他にも、マルチホスト共有ストリーム書き込み機能により、クラウド、エンタープライズでのマルチホスト環境を改善したり、コマンドの再試行を強化により負荷がかかった場合での堅牢性を向上し、名前空間の書き込み保護により、ドライブ全体ではなく、基本的に名前空間で適切に保護されている領域をより細かく制御可能になります。


25以上の機能エリアの再定義、クリーンアップがバージョン1.4ではされています。


参照: Nick Adams, Platform Storage Architect at Intel, discusses the newly released NVMe 1.4 specification and its key new features.

Youtube : https://www.youtube.com/watch?v=Fv5GMRDsHGE


執筆:片山 雅美