NVM Express®規格(またはNVMe®)は、SSD向けの主要なインターフェーステクノロジーであり、データセンターからノートパソコン、携帯電話まで、非常に多くのコンピューティングシステムで使用されています。2021年6月2日、NVM Expressは幅広いアプリケーションを対象とする不揮発性メモリの仕様一式を公式にリリースしました。NVMe 2.0は、既存の仕様を全面的に再編成するとともに、多くの重要な新機能を追加しています。NVMe委員会のメンバーおよびユーザーは、この新たな前進に沸き立っています。その理由をご紹介しましょう。
従来のハードディスクドライブに見られた制約の1つは、必要な次のデータブロックが実際の物理的ディスクの反対側に存在する場合に、ディスクが回転し、そのブロックが読み取りヘッドに達するまで待たなければならないことでした。フラッシュベースのSSDには、もちろんそのような問題はありません。すべてのブロックが同じ「距離」だけ離れた場所にあるからです。ところが、古いインターフェース規格は、上記の制約を念頭に置いて書かれていました。2011年にリリースされた最初のNVMe仕様では、SSDが解放され、その余力のパフォーマンスをアプリケーションで最大限に活用できるようになりました。
最新の状況は?
この仕様の直前の公式リリースは、NVMe 1.4(2019年6月10日)です。このリリースは次の3つの仕様で成り立っていました。
- NVMe Base仕様
- NVMe Management Interface(MI)仕様。「帯域外」メカニズムを使用したNVMeデバイスの監視、構成、管理に関連する動作の仕様です。つまり、これらの動作が読み取り/書き込み動作から切り離されています。
- NVMe over Fabrics(NVMe-oF)仕様。ネットワーキングプロトコルのサポートが追加され、高性能ストレージネットワーク、すなわち「構造」を構築することが可能になりました。
NVME 2.0では「より速く、より簡単な開発」を実現できるよう、仕様がリファクタリングされています。1つの非常に大きい文書ではなく、分野ごとにベース文書から独立した文書となっています。そのため、ユーザーの立場では、特定のトピックに関する情報を調べるにはどこを見ればよいか明確ですが、複数の文書を使用しなければならない場合もあります。結果、次の8つの仕様が存在します。
- NVMe Base Specification 2.0
- NVM Command Set Specification 1.0
- Zoned Namespace Command Set Specification 1.0
- PCIe Transport Specification 1.0
- Management Interface 1.2
- RDMA Transport Specification 1.0
- TCP Transport Specification 1.0
- Key-Value Command Set Specification 1.0
以上をまとめて図解したものが次の図です。
リファクタリングに加えて、次のように各種の重要機能が新たに導入されています。
ゾーンネームスペース(ZNS)
アプリケーションのパフォーマンスを高めると同時に、NANDベースのストレージの寿命を延ばすのに役立つ、重要な開発成果です。多数のドライブを1つないし複数の論理ドライブとして任意に編成する代わりに、ZNSでは1つのドライブを外見上、それぞれ異なるスレッドに割り当てられた複数のドライブとすることができます。この仕様では、ゾーンネームスペースおよび関連するゾーンネームスペースコマンドセットが定義されています。ゾーンネームスペースは、ネームスペースの論理アドレス空間をゾーンに分割します。各ゾーンは、シーケンシャルに書き込まれ、上書きされるとリセットされる論理ブロック範囲です。インターフェースにより、ゾーンネームスペースは内部のデバイス構造の自然な境界を露出させ、内部のマッピングテーブルの管理をホストにオフロードすることができます。
NVMセットとエンデュランスグループ管理
マイクロンはこの機能の開発に積極的に関与しました。というのは、この機能によってさまざまなタイプのメモリ(例:SLC、TLCなど)を、それぞれ固有の用途に使用できるからです。この仕様では、エンデュランスグループとNVMセットの相互運用可能な管理のためのインターフェースが定義されています。これにより、ドメインを構成して管理することができます。エンデュランスグループは、ホットストレージとコールドストレージの自動ティアリング(階層化)に類似していますが、頻繁にアクセスする必要があるけれども、迅速にアクセスする必要のないデータが対象です。
シンプルなコピーコマンド
この機能は、ホストが1つ以上のソース論理ブロック範囲から1つの連続的なデスティネーション論理ブロック範囲へデータをコピーするための簡素なコピーコマンドを定義します。デバイス内でデータをPCI Express(PCIe)インターフェース経由で転送することなくコピー可能なので、インターフェーストラフィックが減少し、パフォーマンスが向上します。
ドメインとパーティショニング
この機能は、さまざまなドメインが存在しドメインのパーティショニングが可能な大規模な環境を実現する機能の定義により、NVMeアーキテクチャーを拡張します。1つのデバイス(例:SLC、TLC、QLCなど)で複数のフラッシュタイプを使用できる場合に便利であり、システムの一部をメンテナンスのためオフラインにし、他の部分を稼働させ続けることが可能になります。
コマンドと機能のロックダウン
これは大幅なセキュリティ強化であり、ホストおよび管理エンティティが、一部のコマンドとSet Featureコマンド機能の実行を禁止することが可能になります。たとえば、特定のドライブに対する通常の読み取り/書き込みコマンドは許可し、すべての管理コマンドをロックアウトすることが可能です。
ネームスペースのタイプ
この機能は、さまざまなタイプのネームスペースをサポートするようNVMeアーキテクチャーを拡張します。たとえば、特殊なアクセスルールのある論理ブロックを含むネームスペースや、キー/値ペアの場合のように、論理ブロック以外のものを含むネームスペースを使用できます。
スピニングメディア
この機能は、従来のハードディスクドライブに対するNVMeサポートを追加します。これは、NVMeが1つのストレージ接続を使用して多様な永続的メディアを接続できるようにすることで、NVMeの有効範囲を広げ、エコシステムを簡素化しようと試みていることを示す良い例です。
未来に向けた歩み
これらの仕様に従うことが重要です。というのは、2.0仕様に対し、すでに複数の変更がリクエストされています。また、これから提供される機能もあります。I/Oごとのキー、ゾーンランダム書き込みエリア(ZRWA)、コンピューテーショナルストレージです。これらは積極的な開発作業が行われている重要かつ複雑な機能であり、今後の記事で検証する予定です。
ドライバーとSSDのベンダーにとって大きな疑問の1つは、1.4から2.0への移行に必要な最小限の変更はどのような集合かという問題です。これは重要な論点ですが、すぐにテクニカルな内容に入り込んでしまいます。この点について私たちには一定の展望があり、喜んで共有したいと思っています。さらに詳しい情報を希望される方は、私(whubis@micron.com)にご連絡ください。
マイクロンは、NVMe 2.0仕様の重要なサポーターであり続けてきました。システム設計者やアプリケーション開発者にとって非常に興味深い、さまざまな可能性を切り拓く新機能の開発にも数多く貢献しています。そして今後も、マイクロンの永続的ストレージのユーザーにメリットをもたらす、この仕様における価値ある新機能の導入に向けて、引き続き積極的な役割を果たします。
マイクロンのNVMe SSDに関する詳しい情報は、micron.comのデータセンターSSDのページをご覧ください