(Translated by https://www.hiragana.jp/)
NVM Express - Wikipedia

NVM Express (NVMe、エヌブイエムイー) もしくは NVMHCI (Non-Volatile Memory Host Controller Interface) はPCI Express (PCIe) で不揮発ふきはつ補助ほじょ記憶きおく装置そうち接続せつぞくするためのインターフェース規格きかくであり、AHCIわる次世代じせだい規格きかくである。2021ねん7がつ現在げんざい最新さいしん規格きかくはRev.2.0[1]。NVMは不揮発ふきはつせいメモリ (Non-Volatile Memory) の頭文字かしらもじである。

Non-Volatile Memory Host Controller Interface Working Group
略称りゃくしょう NVMe
設立せつりつ 2011ねん
ウェブサイト nvmexpress.org
テンプレートを表示ひょうじ
PCI Express拡張かくちょうカードがたうえ)と、M.2コネクタのもの(した

概要がいよう

編集へんしゅう
NVMeを使用しようしたPCI Express 3.0×4接続せつぞくのSSD

シリアルATA (SATA) はおもHDDよう設計せっけいされたものであり、その限界げんかい転送てんそう速度そくどである6 Gbpsえることは出来できず、SSDの性能せいのう制限せいげんしていた。

NVMeは近代きんだいてきなCPU、プラットフォーム、アプリケーションの並列へいれつせいとフラッシュメモリーのひくレイテンシ内部ないぶ並列へいれつせい最大限さいだいげん利用りようするよう設計せっけいされた。その結果けっか以前いぜんのインターフェースに比較ひかくしてI/Oオーバーヘッド様々さまざまなパフォーマンスを改善かいぜんし、並列へいれつたかいコマンドキューとていレイテンシが可能かのうになった。

NVMe規格きかく制定せいてい以前いぜんよりハイエンドSSD製品せいひんなかには、PCI Expressを使用しようした標準ひょうじゅんのインターフェースで接続せつぞくするものもあったが、かくSSDメーカーのドライバが必要ひつようであった。この規格きかくかくメーカーが特定とくていのインターフェースのためにドライバを設計せっけいする必要ひつようはなくなった。

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
  • NGSFF (Next Generation Small Form Factor): NF1

不揮発ふきはつせいメモリにアクセスするあたらしい標準ひょうじゅん規格きかくインテル・デベロッパー・フォーラムで2007ねん最初さいしょ公開こうかいされ、コントローラーとフラッシュメモリーあいだのI/Fとして「Open NAND Flash Interface Working Group」のONFIが、ホストとコントローラのI/FとしてNVMHCIがしめされた[2]同年どうねんにインテルが主導しゅどうするNVMHCIワーキンググループが結成けっせいされた。NVMHCI 1.0の仕様しよう策定さくていは2008ねん4がつ完了かんりょうしインテルのウェブサイトで公開こうかいされた[3][4][5]

NVMeの技術ぎじゅつてき策定さくていは2009ねん後半こうはんはじまり[6]、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]

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がつ、インテルはつのNVMe製品せいひんとして、PCI Expressバスのintel SSD データセンターファミリー DC P3700シリーズ、DC P3600シリーズ、DC P3500シリーズが発表はっぴょうされた[18]

2014ねん3がつにグループは法人ほうじんして「NVM Express, Inc.」となり、2014ねん11月時点じてん同社どうしゃは65しゃ以上いじょう企業きぎょう構成こうせいされている。NVMeの仕様しよう同社どうしゃ所有しょゆう保守ほしゅしており、業界ぎょうかい標準ひょうじゅんとしての認知にんち向上こうじょう促進そくしんしている。同社どうしゃはPromoter Groupからえらばれた13めい(シスコ、デル、EMC、HGST、インテル、マイクロン、マイクロソフト、NetApp、Oracle、PMC、サムスン、サンディスク、シーゲイト)の取締役とりしまりやくかいによって運営うんえいされている[19]

AHCIとのちが

編集へんしゅう

Advanced Host Controller Interface (AHCI) は幅広はばひろいソフトウェアとの互換ごかんせい利点りてんであるが、PCI Express接続せつぞくしたSSD性能せいのう発揮はっきしきれないという欠点けってんもある。AHCIは当時とうじ一般いっぱんてきであったハードディスクとCPUやメモリの接続せつぞく念頭ねんとう設計せっけいされたためである。SSDはハードディスクとくらべると半導体はんどうたいメモリりの特性とくせい[20][21]

NVMeはPCIe SSDのてい遅延ちえん並列へいれつせい現代げんだいてきなCPU、プラットフォーム、アプリケーションの並列へいれつ処理しょりとのわせを最大限さいだいげんかすためにいちから設計せっけいしなおされた。結果けっかとして下表かひょうとお様々さまざまなパフォーマンスが改善かいぜんされた[20][21][22]

AHCI と NVMeの仕様しようちが[20][21]
  AHCI NVMe
最大さいだいキュー深度しんど コマンドキュー: 1個いっこ

32 コマンド/キュー

コマンドキュー: 65536

65536 コマンド / キュー[23]

Un-cacheable register accesses (2000 サイクルごと) 6 / キューコマンド

9 / キューずみコマンド

2 / コマンド
MSI-Xみステアリング 単一たんいつ

ステアリング

2048 MSI-X
並列へいれつ処理しょり、マルチスレッド 同期どうきロックが必要ひつよう ロック不要ふよう
4 KB コマンドの効率こうりつ コマンド・パラメータ はホストがわのDRAMから直列ちょくれつで2フェッチが必要ひつよう コマンド・パラメータ は単一たんいつのフェッチ(64 Byte)で

これまでのNVMeの仕様しよう以下いかとお[24]

  • 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

編集へんしゅう
 
LinuxカーネルのNVMeデータパス[25]
ChromeOS
2015ねん2がつ24にち、NVMeからの起動きどう対応たいおう[26][27]
DragonFly BSD
DragonFly 4.6でドライバを搭載とうさい[28]
FreeBSD
HEADとSTABLE/9のりょうブランチにインテルがドライバを提供ていきょうした[29][30]。FreeBSD 10.2 以降いこう、nvd(4) と nvme(4) のドライバがGENERICカーネルにふくまれている[31]
Haiku
将来しょうらいてき対応たいおう予定よてい[32]
illumos
2014ねん10月15にち対応たいおう開始かいし[33]
iOS
iPhone 6S6S PlusAppleがスマートフォンでNVMe over PCIe採用さいよう。そのどう技術ぎじゅつ使用しようするiPad ProiPhone SE発売はつばい[34]
Linux
Intelは2012ねん3がつ19にちリリースのLinuxカーネル3.3でドライバーを公開こうかい[35][36][37][38]
おもFusion-io開発かいはつした高性能こうせいのうSSDようのブロックレイヤー「blk-multiqueue」(blk-mq)が2014ねん1がつ19にちリリースのLinuxカーネル3.13に統合とうごうされた。これによりよりたかいI/O送信そうしんりつ実現じつげんしている。Linuxカーネルのブロックそうしん設計せっけいにより内部ないぶキューは2つのレベル(CPUとハードウェアサブミッションキュー)に分割ぶんかつされ、ボトルネックがのぞかれてI/Oのこう並列へいれつ可能かのうになった[39][40][41]
2015ねん4がつ12にちにリリースされたLinuxカーネル4.0では以下いかのドライバがNVMeを使用しようするように変更へんこうされた[42][43][44]
  • VirtIOブロックドライバ
  • SCSIそう(SATAドライバ)
  • ループデバイスドライバ
  • アンソートブロックイメージ (UBI)ドライバ(フラッシュメモリの消去しょうきょブロック管理かんりそう
  • RBDドライバ(Ceph RADOSオブジェクトをブロックデバイスとしてエクスポート)
NetBSD
開発かいはつばん(NetBSD-current)でNVMeをサポート[45]実装じっそうはOpenBSD 6.0に由来ゆらい
OpenBSD
過去かこにUSB 2.0とAHCIサポートを担当たんとうしていた上級じょうきゅう開発かいはつしゃによって2014ねん4がつから作業さぎょう開始かいし[46]。OpenBSD 6.0でサポート[47]
OS X
OS X Yosemite10.10.3で導入どうにゅう。Retina MacBookはPCIe over NVMeをインターフェイスとして利用りよう[48]
Solaris
Oracle Solaris 11.2でサポート[49]
VMware
IntelはvSphere 6.0以降いこうへVMware[50]ようのドライバーを提供ていきょう[51]。vSphere 6 update 1では、VMwareのソフトウェア定義ていぎストレージサブシステム「VSAN」もNVMeデバイスをサポート[52]
Windows
Windows 8.1およびWindows Server 2012 R2から対応たいおう[22][53]Windows 7およびWindows Server 2008 R2もアップデートでドライバが提供ていきょうされた[54]
OpenFabricsアライアンスは、Windows 7/8/8.1およびWindows Server 2008R2/2012/2012R2ようのオープンソースのNVMe Windowsドライバーを保持ほじしている。これはNVMeワークグループの一部いちぶのプロモーター企業きぎょうとくにIDT、Intel、LSIのベースラインコードから開発かいはつされている[55]現行げんこうバージョンは1.4(2014ねん12月にリリース)[56]

ソフトウェアサポート

編集へんしゅう
QEMU
2013ねん8がつ15にちにリリースされた v1.6以降いこうQEMUがNVMeに対応たいおう[57]
UEFI
SourceforgeからUEFIようオープンソース NVMeドライバー利用りよう可能かのう[58]

脚注きゃくちゅう

編集へんしゅう
  1. ^ NVMeBMaster. “Specifications” (英語えいご). NVM Express. 2021ねん7がつ7にち閲覧えつらん
  2. ^ Speeding up Flash... in a flash”. The Inquirer (2007ねん10がつ13にち). 2014ねん1がつ11にち閲覧えつらん
  3. ^ http://www.bswd.com/FMS09/FMS09-T2A-Huffman.pdf
  4. ^ Flash new standard tips up”. The Inquirer (2008ねん4がつ16にち). 2014ねん1がつ11にち閲覧えつらん
  5. ^ http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2008/20080813_T2A_Huffman.pdf
  6. ^ a b http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2013/20130813_A12_Onufryk.pdf
  7. ^ “New Promoter Group Formed to Advance NVM Express”. Press release. (June 1, 2011). http://www.nvmexpress.org/wp-content/uploads/2013/04/NVMe_Press_Release_New-Promoter-Group_20110601.pdf September 18, 2013閲覧えつらん 
  8. ^ Amber Huffman editor (October 11, 2012). “NVM Express Revision 1.1”. Specification. September 18, 2013閲覧えつらん
  9. ^ David A. Deming (2013ねん6がつ8にち). “PCIe-based Storage” (PDF). snia.org. 2014ねん1がつ12にち閲覧えつらん
  10. ^ Amber Huffman editor (January 23, 2013). “NVM Express Revision 1.0e”. Specification. September 18, 2013閲覧えつらん
  11. ^ IDT releases two NVMe PCI-Express SSD controllers”. The Inquirer (2012ねん8がつ21にち). 2014ねん1がつ11にち閲覧えつらん
  12. ^ IDT Shows Off The First NVMe PCIe SSD Processor and Reference Design - FMS 2012 Update”. The SSD Review (2012ねん8がつ24にち). 2014ねん1がつ11にち閲覧えつらん
  13. ^ Samsung Announces Industry’s First 2.5-inch NVMe SSD | StorageReview.com - Storage Reviews”. StorageReview.com (2013ねん7がつ18にち). 2014ねん1がつ11にち閲覧えつらん
  14. ^ LSI SF3700 SandForce Flash Controller Line Unveiled | StorageReview.com - Storage Reviews”. StorageReview.com (2013ねん11月18にち). 2014ねん1がつ11にち閲覧えつらん
  15. ^ LSI Introduces Blazing Fast SF3700 Series SSD Controller, Supports Both PCIe and SATA 6Gbps”. hothardware.com. 21 March 2015閲覧えつらん
  16. ^ Jane McEntegart. “Kingston Unveils First PCIe SSD: 1800 MB/s Read Speeds”. Tom's Hardware. 21 March 2015閲覧えつらん
  17. ^ Kingston HyperX Predator PCI Express SSD Unveiled With LSI SandForce SF3700 PCIe Flash Controller”. hothardware.com. 21 March 2015閲覧えつらん
  18. ^ Intel® Solid-State Drive Data Center Family for PCIe*”. Intel. 21 March 2015閲覧えつらん
  19. ^ NVM Express  » NVM Express Organization History”. www.nvmexpress.org. 23 December 2015閲覧えつらん
  20. ^ a b c Dave Landsman (2013ねん8がつ9にち). “AHCI and NVMe as Interfaces for SATA Express Devices – Overview” (PDF). SATA-IO. 2013ねん10がつ2にち閲覧えつらん
  21. ^ a b c Dave Landsman and Don Walker (2013ねん11月15にち). “NVMe and AHCI as SATA Express Interface Options final” (PDF). SATA-IO. 2023ねん11月7にち閲覧えつらん
  22. ^ a b Andy Herron (2013ねん). “Advancements in Storage and File Systems in Windows 8.1” (PDF). snia.org. 2014ねん1がつ10日とおか時点じてんオリジナルよりアーカイブ。2014ねん1がつ11にち閲覧えつらん
  23. ^ NVM Express specification revision 1.2. section 1.4 Theory of Operation. http://nvmexpress.org/wp-content/uploads/NVM_Express_1_2_Gold_20141209.pdf. 
  24. ^ NVMe Specifications
  25. ^ Linux Storage Stack Diagram”. Thomas-Krenn.AG (2015ねん6がつ1にち). 2015ねん6がつ8にち閲覧えつらん
  26. ^ NVM Express  » ChromeOS adds boot support for NVM Express”. nvmexpress.org. 21 March 2015閲覧えつらん
  27. ^ 4f503189f7339c667b045ab80a949964ecbaf93e - chromiumos/platform/depthcharge - Git at Google”. googlesource.com. 21 March 2015閲覧えつらん
  28. ^ DragonFly BSD 4.6”. www.dragonflybsd.org. 2016ねん9がつ8にち閲覧えつらん
  29. ^ Log of /head/sys/dev/nvme”. FreeBSD source tree. The FreeBSD Project. 16 October 2012閲覧えつらん
  30. ^ Log of /stable/9/sys/dev/nvme”. FreeBSD source tree. The FreeBSD Project. 3 July 2013閲覧えつらん
  31. ^ FreeBSD 10.2-RELEASE Release Notes”. The FreeBSD Project. 5 August 2015閲覧えつらん
  32. ^ #9910 NVMe devices support”. dev.haiku-os.org. 2016ねん7がつ28にち閲覧えつらん
  33. ^ 4053 Add NVME Driver Support to Illumos”. github.com. 2016ねん5がつ23にち閲覧えつらん
  34. ^ Ho, Joshua. “iPhone 6s and iPhone 6s Plus Preliminary Results”. www.anandtech.com. 2016ねん6がつ1にち閲覧えつらん
  35. ^ Matthew Wilcox (2011ねん3がつ3にち). “NVM Express driver”. LWN.net. 2013ねん11月5にち閲覧えつらん
  36. ^ Keith Busch (2013ねん8がつ12にち). “Linux NVMe Driver” (PDF). flashmemorysummit.com. 2013ねん11月5にち閲覧えつらん
  37. ^ IDF13 Hands-on Lab: Compiling the NVM Express Linux Open Source Driver and SSD Linux Benchmarks and Optimizations” (PDF). activeevents.com (2013ねん). 2014ねん1がつ11にち閲覧えつらん
  38. ^ Merge git://git.infradead.org/users/willy/linux-nvme”. kernel.org (2012ねん1がつ18にち). 2013ねん11月5にち閲覧えつらん
  39. ^ Linux kernel 3.13, Section 1.1 A scalable block layer for high-performance SSD storage”. kernelnewbies.org (2014ねん1がつ19にち). 2014ねん1がつ25にち閲覧えつらん
  40. ^ Jonathan Corbet (2013ねん6がつ5にち). “The multiqueue block layer”. LWN.net. 2014ねん1がつ25にち閲覧えつらん
  41. ^ Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems” (PDF). kernel.dk. ACM (2013ねん). 2014ねん1がつ25にち閲覧えつらん
  42. ^ Linux kernel 3.18, Section 1.8. Optional multiqueue SCSI support”. kernelnewbies.org (2014ねん12月7にち). 2014ねん12月18にち閲覧えつらん
  43. ^ Linux kernel 4.0, Section 3. Block”. kernelnewbies.org (2015ねん5がつ1にち). 2015ねん5がつ2にち閲覧えつらん
  44. ^ Linux Multi-Queue Block IO Queueing Mechanism (blk-mq) - Device Drivers”. thomas-krenn.com (2015ねん6がつ8にち). 2015ねん6がつ8にち閲覧えつらん
  45. ^ nvme -- Non-Volatile Memory Host Controller Interface”. NetBSD manual pages (2016ねん1がつ1にち). 2016ねん9がつ2にち閲覧えつらん
  46. ^ David Gwynne (2014ねん4がつ16にち). “non volatile memory express controller (/sys/dev/ic/nvme.c)”. BSD Cross Reference. 2014ねん4がつ27にち閲覧えつらん
  47. ^ David Gwynne (2016ねん4がつ14にち). “man 4 nvme”. OpenBSD man page. 2016ねん8がつ7にち閲覧えつらん
  48. ^ Faster 'NVM Express' SSD Interface Arrives on Retina MacBook and OS X 10.10.3”. macrumors.com. 11 April 2015閲覧えつらん
  49. ^ nvme(7D)”. Oracle. 2014ねん12月2にち閲覧えつらん
  50. ^ Intel Solid-State for NVMe Drivers”. intel.com (2015ねん9がつ25にち). 2016ねん3がつ17にち閲覧えつらん
  51. ^ VMware Compatibility Guide for NVMe devices”. vmware.com. 2016ねん3がつ17にち閲覧えつらん
  52. ^ VSAN Now Supporting NVMe Devices”. vmware.com (2015ねん11月11にち). 2016ねん3がつ17にち閲覧えつらん
  53. ^ Windows 8.1 to support hybrid disks and adds native NVMe driver”. Myce.com (2013ねん9がつ6にち). 2014ねん1がつ11にち閲覧えつらん
  54. ^ Update to support NVM Express by using native drivers in Windows 7 or Windows Server 2008 R2”. Microsoft (2014ねん11月13にち). 2014ねん11月17にち閲覧えつらん
  55. ^ Windows NVM Express”. Project web site. September 18, 2013閲覧えつらん
  56. ^ https://svn.openfabrics.org/svnrepo/nvmewin/releases/
  57. ^ ChangeLog/1.6”. qemu.org. 21 March 2015閲覧えつらん
  58. ^ Download EDK II from”. SourceForge.net. 2014ねん1がつ11にち閲覧えつらん

関連かんれん項目こうもく

編集へんしゅう

Advanced Host Controller Interface

外部がいぶリンク

編集へんしゅう