NVMeの概要
- 東京ナノファーム
- 2020年3月18日
- 読了時間: 3分
はじめに
NVM Express (NVMe)は、PCI Express(PCIe)を通じて、不揮発性ストレージメディアを接続するための論理デバイス・ホスト・インタフェース規格です。
NVMe規格の歴史、ロードマップ
規格には、NVMe base specification、NVMe over Fabrics(NVMe-oF)、NVMe Management Interface(NVMe-MI)があり、各仕様書の最新版は下記のURLからダウンロードできます。
各バージョンのロードマップは下記の通りです。

規格として紹介されたのは、インテルデベロッパーフォーラム2007にて、NVMHCIとして紹介され、その後ワーキンググループとして、仕様化が進み、2013年1月にバージョン1.0e、2014年にリビジョン1.2、1.2.1、2017年にリビジョン1.3a/b/c/dがリリースされました。一方製品としては、当初は試作レベルで性能を十分引き出せていませんでしたが、2015年頃より、SSDドライブメーカよりPCIe バージョン3.0とともにNVMe SSDとして発売され始め、フラッシュメモリーの容量化により、NVMeの最大の特徴である、転送時におけるメッセージが1つで済み、コマンドキューが65536個により、データのレイテンシ短縮により、SATA・AHCIでの高速転送の頭打ちを解消することになりました。
NVMeの特徴
ハードディスクで使われるホストインタフェースであるAHCIと、半導体ストレージに特化したNVMeの比較は以下のようにパーフォマンスが十分に引き出せる仕様になっています。

規格には、多用途の目的に合わせてSSDのフォームファクターも以下のように定義され小型化、高集積化の面でもメリットを引き出すことができます。

NVMeには、下記の特徴が挙げられます。
コマンドの発行または完了パスにおいてキャッシュ不可な/MMIOレジストリの読込み不要
コマンド発行パスにおいて最大で一つのMMIOレジストリの書込みが必要
最大で64KのI/Oキューのサポート、各I/Oキューが最大64Kコマンドをサポート
適切に優先度が定義された仲裁メカニズムとともに各I/Oキューと紐づけ
全ての4KB読み込みリクエストを完了するための情報が64Bコマンド自身に含まれ、効率的でスモールなランダムI/Oオペレーションを確保
効率的で合理的なコマンドセット
MSI/MSI-X のサポートとインタラプトの集約
複数の名前空間のサポート
SR-IOVのようなI/Oの仮想化アーキテクチャの効率的なサポート
堅牢なエラー報告と管理の能力
仕様は合理化されたレジスタのセットを定義:
コントローラ機能の表示
デバイス障害のステータス (コマンドステータスはCQを通じ直接処理される)
管理者キュー設定(管理者コマンドを通じ処理されるI/Oキュー設定)
スケーラブルな数の送信と完了のキュー向けのドアベルレジストリ
2019年になると、さらにPCIe4.0による転送速度の要求が高まり、NVMeにとっては2年ぶりの変更となる1.4がリリースされました。次回ブログでは、リビジョン1.4の新機能や変更点などについて、概要をまとめたいと思います。
著者:片山 雅美
Comments