NVMe(NVM Express)とは
NVM Express (NVMe) または NVMHCI (Non-Volatile Memory Host Controller Interface) は、
PCI Express (PCIe) バスを介して不揮発性
補助記憶装置を接続するためのインターフェース規格です。従来のAHCI(Advanced Host Controller Interface)に代わる次世代の規格として位置づけられています。2021年7月現在、最新の規格はRev.2.0となっています。
概要
従来の
シリアルATA (SATA) は、主にHDD用に設計されたインターフェースであり、その転送速度は最大6 Gbpsに制限されていました。このため、SSDの高性能を十分に引き出すことができませんでした。NVMeは、現代的なCPU、プラットフォーム、アプリケーションの並列性と、フラッシュメモリの低
レイテンシおよび内部並列性を最大限に活用するように設計されています。これにより、従来のインターフェースと比較してI/Oオーバーヘッドが大幅に削減され、パフォーマンスが向上し、並列度の高いコマンドキューと低
レイテンシが実現されました。
NVMe規格制定以前にも、ハイエンドSSD製品の中には
PCI Expressを使用した非標準のインターフェースで接続されるものがありましたが、各SSDメーカーが独自のドライバを開発する必要がありました。NVMe規格の登場により、メーカーは特定のインターフェースのためにドライバを個別に設計する必要がなくなり、より効率的な開発が可能になりました。
代表的なNVMeデバイスには、以下の種類があります。
PCI Express標準サイズの拡張カード
2.5インチのカード型(U.2コネクター(SFF-8639)の4レーンの
PCI Express)
U.3
M.2コネクタ
EDSFF (Enterprise and Data Center SSD Form Factor): SFF-TA-1002
E1.S: SFF-TA-1006
ES: SFF-TA-1008, SFF-TA-1023
E3.L
E3.S
NGSFF (Next Generation Small Form Factor): NF1
経緯
不揮発性メモリにアクセスするための新しい標準規格は、2007年にインテル・デベロッパー・フォーラムで初めて公開されました。ここでは、コントローラーとフラッシュメモリ間のインターフェースとして「Open NAND Flash Interface Working Group」のONFIが、ホストとコントローラー間のインターフェースとしてNVMHCIが提案されました。
同年、インテルが主導するNVMHCIワーキンググループが結成され、NVMHCI 1.0の仕様は2008年4月に完了し、インテルのウェブサイトで公開されました。NVMeの技術的な策定は2009年後半に始まり、「NVM Express Workgroup」という90社以上の企業が参加するグループで開発が進められました。インテルのアンバー・ハフマンが同グループの議長を務めました。
仕様書のバージョン1.0は2011年3月1日に、バージョン1.1は2012年10月11日に発表されました。バージョン1.1では、
マルチパス I/O(名前空間の共有あり)と任意長のスキャッタ/ギャザーI/Oが主な追加機能として含まれていました。将来的には、名前空間管理の大幅な強化が期待されています。NVMe 1.1は機能に重点を置いているため、エンタープライズNVMHCIとも呼ばれました。
2013年1月には、NVMe仕様のアップデートバージョン「1.0 e-」が公開されました。
2012年8月には、Integrated Device Technology社から最初のNVMe
チップセット(89HF16P04AG3および89HF32P08AG3)が発売されました。最初のNVMeドライブは、2013年7月に発表されたサムスンのXS1715エンタープライズドライブで、3 GB/s の読み取り速度をサポートし、同社の過去のエンタープライズ製品よりも6倍高速でした。
2013年11月に発売されたLSI SandForce SF3700 コントローラーもNVMeをサポートし、同コントローラーの
PCI Express 2.0 ×4を搭載したサンプルでは、1,800 MB/秒の読み取り/書き込みシーケンシャル速度と、150K/80KのランダムIOPSが確認されました。また、同コントローラーを使用したKingston HyperXのプロシューマー製品が
コンシューマー・エレクトロニクス・ショー2014で展示され、同様の性能が示されました。
2014年6月には、インテル初のNVMe製品として、
PCI Expressバスのintel SSD データセンターファミリー DC P3700シリーズ、DC P3600シリーズ、DC P3500シリーズが発表されました。
2014年3月、NVMeの標準化を推進するグループは法人化し、「NVM Express, Inc.」となりました。
2014年11月時点で、同社は65社以上の企業で構成されており、NVMeの仕様を所有、保守し、業界標準としての認知度向上を促進しています。同社は、シスコ、デル、EMC、HGST、インテル、マイクロン、マイクロソフト、NetApp、Oracle、PMC、サムスン、サンディスク、シーゲイトの13社からなる取締役会によって運営されています。
AHCIとの違い
Advanced Host Controller Interface (AHCI) は、幅広いソフトウェアとの
互換性が利点ですが、
PCI Expressに接続したSSDの性能を最大限に発揮できないという欠点がありました。これは、AHCIが当時一般的であったハードディスクとCPUやメモリの接続を念頭に設計されたためです。SSDは、ハードディスクと比較すると、
半導体メモリに近い特性を持っています。
NVMeは、PCIe SSDの低遅延、並列性と現代的なCPU、プラットフォーム、アプリケーションの並列処理との組み合わせを最大限に生かすために一から設計しなおされました。結果として、様々なパフォーマンスが大幅に改善されました。
仕様
これまでのNVMeの主な仕様は以下の通りです。
1.0e (2013年1月)
1.1b (
2014年7月)
1.2 (2014年11月)
1.2a (
2015年10月)
1.2b (2016年6月)
1.2.1 (2016年6月)
1.3 (2017年5月)
1.3a (2017年10月)
1.3b (2018年5月)
1.3c (2018年5月)
1.3d (2019年3月)
1.4 (2019年6月)
1.4a (2020年3月)
1.4b (2020年9月)
2.0 (2021年5月)
2.0a (2021年7月)
2.0b (2022年1月)
対応OS
NVMeは、以下の様々なOSでサポートされています。
ChromeOS: 2015年2月24日、NVMeからの起動に対応。
DragonFly BSD: DragonFly 4.6でドライバが搭載。
FreeBSD: HEADとSTABLE/9の両ブランチにインテルがドライバを提供。FreeBSD 10.2以降、nvd(4)とnvme(4)のドライバがGENERICカーネルに含まれています。
Haiku: 将来的に対応予定。
illumos: 2014年10月15日に対応を開始。
iOS: iPhone 6Sと6S PlusでAppleがスマートフォンでNVMe over PCIeを採用。その後、同技術を使用するiPad ProとiPhone SE を発売。
Linux: Intelは2012年3月19日リリースのLinuxカーネル3.3でドライバーを公開。主にFusion-ioが開発した高性能SSD用のブロックレイヤー「blk-multiqueue」(blk-mq)が
2014年1月19日リリースのLinuxカーネル3.13に統合されました。これにより、より高いI/O送信率を実現しています。Linuxカーネルのブロック層の再設計により、内部キューは2つのレベル(CPUとハードウェアサブミッションキュー)に分割され、ボトルネックが取り除かれ、I/Oの高並列化が可能になりました。
2015年4月12日にリリースされたLinuxカーネル4.0では、以下のドライバがNVMeを使用するように変更されました。VirtIOブロックドライバ、SCSI層(SATAドライバ)、ループ
デバイスドライバ、アンソートブロックイメージ (UBI)ドライバ(フラッシュメモリの消去ブロック管理層)、RBDドライバ(Ceph RADOSオブジェクトをブロックデバイスとしてエクスポート)。
NetBSD: 開発版(NetBSD-current)でNVMeをサポート。実装はOpenBSD 6.0に由来。
OpenBSD: 過去にUSB 2.0とAHCIサポートを担当していた上級開発者によって
2014年4月から作業開始。OpenBSD 6.0でサポート。
OS X: OS X Yosemite 10.10.3で導入。Retina MacBookはPCIe over NVMeをインターフェイスとして利用。
Solaris: Oracle Solaris 11.2でサポート。
VMware: IntelはvSphere 6.0以降へVMware用のドライバーを提供。vSphere 6 update 1では、VMwareのソフトウェア定義ストレージサブシステム「VSAN」もNVMeデバイスをサポート。
Windows: Windows 8.1およびWindows Server 2012 R2から対応。Windows 7およびWindows Server 2008 R2もアップデートでドライバが提供されました。OpenFabricsアライアンスは、Windows 7/8/8.1およびWindows Server 2008 R2/2012/2012 R2用のオープンソースのNVMe Windowsドライバーを保持しています。これは、NVMeワークグループの一部のプロモーター企業(特にIDT、Intel、LSI)のベースラインコードから開発されています。現行バージョンは1.4(
2014年12月にリリース)。
ソフトウェアサポート
QEMU: 2013年8月15日にリリースされた v1.6以降のQEMUがNVMeに対応。
UEFI: SourceforgeからUEFI用オープンソース NVMeドライバーが利用可能。
脚注
関連項目
Advanced Host Controller Interface
外部リンク
公式ウェブサイト
LFCS: Preparing Linux for nonvolatile memory devices, LWN.net, April 19, 2013, by Jonathan Corbet
Multipathing PCI Express Storage,
Linux Foundation, March 12, 2015, by Keith Busch
SNIA: Solid State Drive Form Factors
Samsung: NGSFF SSD