東京ナノファーム.png

NVMe仕様の内部構造の改善

2019年9月に行われたFlash Memory Summit 2019で、NVMe Base Specification 1.4 Feature Overviewの説明がありました。そこでの後半に今後のNVMeファミリーにおける仕様のリファクタリングについて説明がありましたので簡単に紹介したいと思います。


NVMe Baseの仕様に関して、今後ゾーン名前空間などさらに拡張するコア機能のセットが必要になり、一方NVMe over Fabricは、複数のトランスポートがあり(例えばTCPを介してNVMeを使用)将来的には他のテクノロジーや異なるタイプのコマンドセットを使用する可能性があります。

これらの詳細のすべてを基本仕様に負わせるべきかが課題になり、高速でシンプルでスケーラブルであるというNVMeの重要な概念を維持し仕様書の再編成が必要になります。


NVMe バージョン1.4は、管理インターフェースを中心にNVMeのBaseになる基本仕様が整理されています。具体的には、キューイングモデル、ステータス、コード情報などを記録、デバイスを設定するための管理コマンドセット、データ構造、名前空間などの規定、さらにPCIeトランスポートについて定義されています。


一方、NVMe over Fabricsの仕様は、個別仕様として、検出サービス、NVMe over Fabricsコマンド、Base同様データ構造、さらにカプセルのようにTCPおよびDMAの独立した定義、RDMA、TCPトランスポートについて定義されています。


現在の仕様では、これら2つのアーキテクチャ要素が混在する異なる仕様として存在しており、今後はそれらを共通した仕様モデルに移行が考えられています。

下記がNVMeバージョン2.0のロードマップで考えられている構造のひとつです。

図の左側にNVMe管理インターフェイスがあり、引き続き個別の仕様になります。Base仕様に、NVMe over Fabricsが統合され、よりファブリックのコンセプトがNVMeの不可欠なコアと考えられています。管理コマンドコントローラー定義などのキューイングモデルは、PCIeまたは、イーサネットのタイプのファブリックかの違いでのNVMeのコアアスペクトを組み合わせることになります。

コマンドセットは、ブロックI / Oコマンドとブロックコマンドセット、および定義されたレガシーの種類があり名前空間と関連付けが保たれられ、独自の仕様であり、独自の定義になります。


統合により、基本的かつさまざまなタイプのコマンドセットで共有され、異なるコマンドセット全体でこれらのことをやり取りするトランスポートで一貫性を持たせることができます。


将来統合する必要がある新しいファブリックがある場合、それを行うことができますが、より広範な仕様全体に大きな影響を与えないようにそれを行うことも期待されています。


筆者:片山 雅美