Non-Volatile Memory Host Controller Interface Working Group
略称NVMe
設立2011年
ウェブサイトnvmexpress.org
NVM Express (NVMe、エヌブイエムイー) もしくは NVMHCI (Non-Volatile Memory Host Controller Interface) は、PCI Express (PCIe) を通じて、不揮発性ストレージメディアを接続するための論理デバイスインターフェースの規格であり、AHCIに代わる次世代の接続プロトコル規格である。2019年9月現在の最新規格はRev.1.4[1]。
NVMは、SSDの中に広く用いられているのがフラッシュメモリという不揮発性メモリ (Non-Volatile Memory) であることから、その頭文字を取ったものである。論理デバイスインターフェースとしてのNVM Expressは、近代的なCPU、プラットフォーム、アプリケーションの並列性を反映するように、フラッシュメモリーベースのストレージとして、その低いレイテンシ、内部並列性を最大限利用するよう設計された。
NVM Expressは、新しい世代のSSDが提供する高い並列処理性能を、ホストハードウェアやソフトウェアが十分に引き出せるよう設計されている。その結果、NVM Expressは、それ以前の論理デバイスインターフェースに比較して、I/Oオーバーヘッドを下げ、様々なパフォーマンスの改善をもたらしたほか、並列度の高い長いコマンドキューと、低レイテンシをもたらす。
NVM Expressデバイスには次のものがある。
標準サイズのPCI Expressの拡張カード型
2.5インチのカード型で、U.2コネクター(SFF-8639)を通じて4レーンのPCI Expressインターフェースを内部に持つ、2.5インチフォームファクタのもの
M.2コネクタのもの
SATA ExpressストレージデバイスとM.2規格は、コンピューター内で拡張カード上に搭載する場合、NVM Expressの論理デバイスインターフェースとしてもサポートされる。目次
1 概要
1.1 経緯
2 AHCIとの違い
3 NVM ExpressをサポートするOS
4 ソフトウェアのサポート
5 脚注
6 外部リンク
概要論理デバイスインターフェースとしてNVM Expressを使用したPCI Express 3.0×4接続のSSD
シリアルATA (SATA) は主に機械的ディスク、HDD (Hard Disk Drive) 用に設計されたものであったため、SATAの物理的な限界、転送速度である6 Gbpsを超えることは出来ず、SATAの最大スループットによってSSDの性能が制限されてしまうこととなった。
NVMe規格制定以前より、ハイエンド帯のSSD製品の中には、PCI Expressバスを使用した、非標準仕様のインターフェースで接続するものもあったが、接続のためには各SSDメーカーによるドライバが必要であった。この規格の制定によって、各メーカーが、特定のインターフェースのためにドライバを設計する必要はなくなった。 不揮発性メモリにアクセスするための新しい標準規格の詳細はインテル・デベロッパー・フォーラム 2007において最初に公開され、その際にメモリ (フラッシュ) チップ側プロトコルに「Open NAND Flash Interface Working Group」 (ONFI) を持つアーキテクチャ設計案のホスト側プロトコルとしてNVMHCIが示された[2]。その年にインテルが主導するNVMHCIワーキング グループが結成された。NVMHCI 1.0の仕様の策定は2008年4月に完了し、インテルのウェブサイト上で公開された[3][4][5]。 NVMeの技術的な策定は2009年後半に始まった[6]。NVMeの仕様は90社以上の企業で構成される「NVM Express Workgroup」によって開発され、インテルのアンバー・ハフマンが同グループの議長を務めた。仕様書のバージョン1.0は2011年3月1日に[7]、バージョン1.1は2012年10月11日に発表された[8]。バージョン1.1で追加された主な特色はマルチパス I/O(名前空間の共有あり)と任意長のスキャッタ/ギャザー I/Oである。今後の改訂版では名前空間管理の大幅に強化されることが期待されている[6]。NVMe 1.1はその機能に重点を置いているため、当初は「エンタープライズのNVMHCI」と呼ばれていた[9]。2013年1月には、ベースとなるNVMe仕様のアップデートバージョン「1.0 e-」が公開された[10]。2011年6月には7社を中心とした「Promoter group」が結成された。 2012年8月には最初の市販NVMeチップセットがIntegrated Device Technology社から発売された(89HF16P04AG3および89HF32P08AG3)[11][12]。最初のNVMeドライブは、2013年7月に発表されたサムスンのXS1715エンタープライズドライブであり、サムスンによるとこのドライブは3 GB/s の読み取り速度をサポートし、これは同社の過去のエンタープライズドライブよりも6倍高速であるとしている[13]。2013年11月に発売されたLSI SandForce SF3700 コント ローラーファミリーもNVMeをサポートしている[14]。このコント ローラーのPCI Express 2.0 ×4 モデルを搭載したサンプルのエンジニアリングボードでは、1,800 MB/秒の読み取り/書き込みシーケンシャル速度と、150K/80KのランダムIOPSが確認された[15]。このコントローラーを使用したKingston HyperXの「プロシューマー」製品はコンシューマー・エレクトロニクス・ショー 2014で展示され、同様の性能が約束されていた[16][17]。2014年6月、インテルの最初のNVM Express製品として、PCI Expressバスを介してホストとインターフェイスするintel SSD データセンターファミリーのDC P3700シリーズ、DC P3600シリーズ、DC P3500シリーズを発表した[18]。 2014年11時点でNVMeドライブは市販されている。 2014年3月にグループは法人化して「NVM Express, Inc.」となり、2014年11月時点で同社は業界全体で65社以上の企業で構成されている。NVM Expressの仕様はNVM Express, Inc.が所有及び保守しており、これは業界全体の標準としてのNVM Expressに対する業界認知度向上も促進している。NVM Express, IncはPromoter Groupから選ばれた13名(シスコ、デル、EMC、HGST、インテル、マイクロン、マイクロソフト、NetApp、Oracle、PMC、サムスン、サンディスク、シーゲイト)の取締役会によって運営されている[19]。 Advanced Host Controller Interface (AHCI) には、その従来の実績から幅広いソフトウェアとの互換性があるという利点があるが、PCI Expressバスに接続したSSDでは性能を発揮しきれないという欠点もある。なぜかといえば、そのインターフェースとしての論理的な設計が、当時一般的であったハードディスクの諸特性にもとづいてCPUやメモリサブシステムとつなぐことが想定されたものだからである。結果として、SSDでは効率の低下を引き起こすことがある。SSDの特性が、ハードディスクと比べると半導体メモリ寄りだからである[20]。 一方、NVMeはPCI Express SSDの低遅延で並列化された通信と、現代的なCPU、プラットフォーム、アプリケーションによる並列処理との組み合わせを最大限に生かすために、一から設計しなおされたものである。このNVMeのAHCIに対する優位性は、ホスト側ハードウェアとソフトウェアによる高度な並列処理に関連している。これらは下表のコマンドキュー深度の違い、割り込みの処理の効率、 uncacheable register 下表はNVMe、AHCI両論理インターフェース規格の高レベルでの比較である。 AHCI と NVMeの仕様の違い[20] AHCINVMe 32 コマンド/キューコマンドキュー: 65536個 65536 コマンド / キュー[22] 9 / 未キューコマンド2 / コマンド
経緯
AHCIとの違い
最大キュー深度コマンドキュー: 1個
Uncacheable register accesses (2000 サイクル毎)6 / キュー済コマンド
MSI-X
ステアリング 無し2048 MSI-X 割り込み
並列処理、マルチスレッドコマンドを発行するために、
同期ロックが必要ロック不要
4 KB コマンドの効率コマンド・パラメータ は
ホスト側のDRAMから直列で2フェッチが必要コマンド・パラメータ は
単一のフェッチ(64 Byte)で済む
NVM ExpressをサポートするOS Linuxカーネルのストレージスタックの様々な層内のNVMeデータパスと複数の内部キューの位置[23]
Google Chrome OS
2015年2月24日に、NVM Expressデバイスからの起動に対応した[24][25]。