NVM Express

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
Non-Volatile Memory Host Controller Interface Working Group
NVM Express logo.svg
略称 NVMe
設立年 2011年
ウェブサイト www.nvmexpress.org

NVM Express (NVMe) もしくは NVMHCI (Non-Volatile Memory Host Controller Interface) は、PCI Express (PCIe) を通じて、不揮発性ストレージメディアを接続するための論理デバイスインターフェースの規格であり、シリアルATAに代わる次世代の接続インターフェース規格である。2016年6月現在の最新規格はRev.1.2.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.5inchフォームファクタのもの
  • M.2コネクタのもの

が存在する。SATA Expressストレージデバイスと、M.2規格は、コンピューター内で、拡張カード上に搭載する場合、NVM Expressの論理デバイスインターフェースとしてもサポートされる[4][5]

概要[編集]

論理デバイスインターフェースとしてNVM Expressを使用したPCI Express3.0×4接続のSSD

シリアルATA(SATA)は主に機械的ディスク、HDD(Hard Disk Drive)用に設計されたものであったため、SATAの物理的な限界、転送速度である6Gbpsを超えることは出来ず、SATAの最大スループットによってSSDの性能が制限されてしまうこととなった。

NVMe規格制定前に、ハイエンドのSSD中にはPCI Expressバスを使用した、非標準仕様のインターフェースで接続するものもあったが、接続のためには各SSDメーカーによるドライバが必要であった。この規格の制定によって、各メーカーが、特定のインターフェースのためにドライバを設計する必要はなくなった。

経緯[編集]

The first details of a new standard for accessing non-volatile memory emerged at the Intel Developer Forum 2007, when NVMHCI was shown as the host-side protocol of a proposed architectural design that had Open NAND Flash Interface Working Group (ONFI) on the memory (flash) chips side.[1] A NVMHCI working group led by Intel was formed that year. The NVMHCI 1.0 specification was completed in April 2008 and released on Intel's web site.[2][3][4]

Technical work on NVMe began in the second half of 2009.[5] The NVMe specifications were developed by the NVM Express Workgroup, which consists of more than 90 companies; Amber Huffman of Intel was the working group's chair. Version 1.0 of the specification was released on 2011-03-01,[6] while version 1.1 of the specification was released on 2012-10-11.[7] Major features added in version 1.1 are multi-path I/O (with namespace sharing) and arbitrary-length scatter-gather I/O. It is expected that future revisions will significantly enhance namespace management.[5] Because of its feature focus, NVMe 1.1 was initially called "Enterprise NVMHCI".[8] An update for the base NVMe specification, called version 1.0e, was released in January 2013.[9] In June 2011, a Promoter Group led by seven companies was formed.

The first commercially available NVMe chipsets were released by Integrated Device Technology (89HF16P04AG3 and 89HF32P08AG3) in August 2012.[10][11] The first NVMe drive, Samsung's XS1715 enterprise drive, was announced in July 2013; according to Samsung, this drive supported 3 GB/s read speeds, six times faster than their previous enterprise offerings.[12] The LSI SandForce SF3700 controller family, released in November 2013, also supports NVMe.[13] Sample engineering boards with the PCI Express 2.0 ×4 model of this controller found 1,800 MB/sec read/write sequential speeds and 150K/80K random IOPS.[14] A Kingston HyperX "prosumer" product using this controller was showcased at the Consumer Electronics Show 2014 and promised similar performance.[15][16] In June 2014, Intel announced their first NVM Express products, the Intel SSD data center family that interfaces with the host through PCI Express bus, which includes the DC P3700 series, the DC P3600 series, and the DC P3500 series.[17] 2014年11現在, NVMe drives are commercially available.

In March 2014, the group incorporated to become NVM Express, Inc., which 2014年11現在 consists of more than 65 companies from across the industry. NVM Express specifications are owned and maintained by NVM Express, Inc., which also promotes industry awareness of NVM Express as an industry-wide standard. NVM Express, Inc. is directed by a thirteen-member board of directors selected from the Promoter Group, which includes Cisco, Dell, EMC, HGST, Intel, Micron, Microsoft, NetApp, Oracle, PMC, Samsung, SanDisk and Seagate.[18]

翻訳

非揮発性メモリにアクセスするための新しい標準の最初の詳細は、NVMHCI のメモリ (フラッシュ) チップ側に開いている NAND フラッシュ インターフェイス作業グループ (ONFI) を持っていた提案された建築設計のホスト側のプロトコルとして示されたときインテル デベロッパー フォーラム 2007 で浮上しました。インテル率いる NVMHCI ワーキング グループは、その年に設立されました。NVMHCI 1.0 仕様は、2008 年 4 月に完成し、インテルの web サイトにリリースされました。

NVMe の技術的な仕事は、2009 年の後半に始まった。NVMe 仕様よりも 90 社; NVM エクスプレス ワークグループによって開発されました。インテルの琥珀ハフマンは、ワーキング ・ グループの椅子だった。2011-03 - 01 仕様のバージョン 1.0 がリリースされた 仕様のバージョン 1.1 は 2012-10-11 発売中。[バージョン 1.1 で追加された 7] 主要な機能は、(名前空間の共有) とマルチパス I/O と任意の長さのスキャッター/ギャザー I/O です。今後の改訂版には名前空間の管理が向上が期待されます。 機能の重点のため、NVMe 1.1 は「エンタープライズ NVMHCI」と最初にコールされました。バージョン 1.0 e-と呼ばれる、基本の NVMe 仕様のための更新は、2013 年 1 月にリリースされました。2011 年 6 月に 7 社を率いるプロモーター グループが形成されました。

最初の市販 NVMe チップセットは、統合デバイス技術 (89HF16P04AG3 および 89HF32P08AG3) で 2012 年 8 月にリリースされました。2013 年 7 月に発表された の最初の NVMe ドライブ、サムスンの XS1715 エンタープライズ ・ ドライブ、サムスンによるとこのドライブ サポート 3 GB/s の読み取り速度、6 倍の以前のエンタープライズ製品よりも高速です。LSI SandForce SF3700 コント ローラー家族もサポートしている NVMe 2013 年 11 月にリリースします。このコント ローラーの PCI Express 2.0 × 4 モデル サンプル工学板は、1,800 MB/秒読み取り/書き込みシーケンシャル速度と 150 K/80 K ランダム IOPS を発見しました。このコント ローラーを使用して キングストン HyperX「プロシューマー」製品は消費者電子ショー 2014 出展し、同様の性能を約束しました。2014 年 6 月、インテルの最初の NVM Express 製品を発表した、インテル SSD データ センター家族 DC P3700 シリーズ、DC P3600 シリーズ、DC P3500 シリーズを含む PCI Express バスを介してホストとのインターフェイスとなります。 2014年11現在、NVMe ドライブは、市販されています。

2014 年 3 月の NVM エクスプレス株式会社業界全体 65 以上の会社から成っているどの 2014年11現在になるグループが組み込まれています。NVM エクスプレス仕様は所有、また業界標準として NVM Express の業界の意識を促進するエクスプレス社 NVM によって維持します。株式会社 NVM エクスプレスは 13 メンバー取締役会シスコ、デル、EMC、HGST、インテル、ミクロン、マイクロソフト、NetApp、Oracle、PMC、サムスン、サンディスク、シーゲイトは、プロモーターのグループから選択した監督です。

AHCIとの違い[編集]

Advanced Host Controller Interface (AHCI) には、その従来の実績から幅広いソフトウェアとの互換性があるという利点があるが、PCI Expressバスに接続したSSDでは性能を発揮しきれないという欠点がある。なぜかといえば、そのインターフェースとしての論理的な設計が、当時一般的であったハードディスクの諸特性にもとづいてCPUやメモリサブシステムとつなぐことが想定されたものだからである。結果として、SSDでは効率の低下を引き起こすことがある。SSDの諸特性が、ハードディスクと比べると半導体メモリ寄りだからである。[19]

The NVMe device interface has been designed from the ground up, capitalizing on the low latency and parallelism of PCI Express SSDs, and complementing the parallelism of contemporary CPUs, platforms and applications. At a high level, the basic advantages of NVMe over AHCI relate to its ability to exploit parallelism in host hardware and software, manifested by the differences in command queue depths, efficiency of interrupt processing, the number of uncacheable register accesses, etc., resulting in various performance improvements.[19][20]:17–18

The table below summarizes high-level differences between the NVMe and AHCI logical device interfaces.

AHCI と NVMeの仕様の違い[19]
  AHCI NVMe
最大キュー深度 1 コマンド キュー

32 コマンド / キュー

65536 キュー

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

Uncacheable register accesses
(各々 2000 サイクル)
6 / Non キュー コマンド

9 / キュー コマンド

2 / コマンド
MSI-X
and interrupt steering
単一の割り込み

ステアリング 無し

2048 MSI-X 割り込み
パラレリズム

および、マルティプル・スレッド

コマンドを発行するために、

synchronization lock が必要

No locking
4 KB コマンドの効率 コマンド・パラメータ は

2 serialized host DRAM フェッチ必要

コマンド・パラメータ は

1 フェッチ(64 Byte)で済む

Operating system support[編集]

The position of NVMe data paths and multiple internal queues within various layers of the Linux kernel's storage stack.[22]
Chrome OS
On February 24, 2015, support for booting from NVM Express devices was added to Chrome OS.[23][24]
DragonFly BSD
DragonFly 4.6 is the first release with NVMe driver.[25]
FreeBSD
Intel sponsored a NVM Express driver for FreeBSD's head and stable/9 branches.[26][27] The nvd(4) and nvme(4) drivers are included in the GENERIC kernel configuration by default since FreeBSD version 10.2.[28]
Haiku
Haiku (operating system) support for NVMe is planned however no work has been completed yet.[29]
illumos
illumos received support for NVMe on October 15, 2014.[30]
iOS
With the Release of the iPhone 6S and 6S Plus, Apple Inc.introduced the first mobile deployment of NVMe over PCIe in smartphones. Apple followed these releases with the release of the iPad Pro and iPhone SE that also use NVMe over PCIe.[31]
BLKMQLinux
Intel published an NVM Express driver for Linux,[32][33][34] which was merged into the Linux kernel mainline on 19 March 2012, with the release of version 3.3 of the Linux kernel.[35]
A scalable block layer for high-performance SSD storage, known as blk-multiqueue or blk-mq and developed primarily by Fusion-io engineers, was merged into the Linux kernel mainline in kernel version 3.13, released on 19 January 2014. This leverages the performance offered by SSDs and NVM Express, by allowing much higher I/O submission rates. With this new design of the Linux kernel block layer, internal queues are split into two levels (per-CPU and hardware-submission queues), thus removing bottlenecks and allowing much higher levels of I/O parallelization.[36][37][38]
As of version 4.0 of the Linux kernel, released on 12 April 2015, VirtIO block driver, the SCSI layer (which is used by Serial ATA drivers), loop device driver, unsorted block images (UBI) driver (which implements erase block management layer for flash memory devices) and RBD driver (which exports Ceph RADOS objects as block devices) have been modified to actually use this new interface; other drivers will be ported in the following[どれ?] releases.[39][40][41]
NetBSD
NetBSD has support for NVMe in development version (NetBSD-current).[42] Implementation is derived from OpenBSD 6.0.
OpenBSD
Development work required to support NVMe in OpenBSD has been started in April 2014 by a senior developer formerly responsible for USB 2.0 and AHCI support.[43] Support for NVMe has been enabled in the OpenBSD 6.0 release.[44]
OS X
In the 10.10.3 update for OS X Yosemite, Apple introduced support for NVM Express. The Retina MacBook uses NVMe over PCIe as the logical device interface.[45]
Solaris
Solaris received support for NVMe in Oracle Solaris 11.2.[46]
VMware
Intel has provided an NVMe driver for VMware,[47] which is included in vSphere 6.0 and later builds, supporting various NVMe devices.[48] As of vSphere 6 update 1, VMware's VSAN software-defined storage subsystem also supports NVMe devices.[49]
Windows
Microsoft added native support for NVMe to Windows 8.1 and Windows Server 2012 R2.[20][50] Native drivers for Windows 7 and Windows Server 2008 R2 have been added in updates.[51]
The OpenFabrics Alliance maintains an open-source NVMe Windows Driver for Windows 7/8/8.1 and Windows Server 2008R2/2012/2012R2, developed from the baseline code submitted by several promoter companies in the NVMe workgroup, specifically IDT, Intel, and LSI.[52] The current release is 1.4 from December 2014.[53]

Software support[編集]

QEMU
NVMe is supported by QEMU since version 1.6 released on August 15, 2013.[54]
UEFI
An open source NVMe driver for UEFI is available on SourceForge.[55]
VirtualBox

References[編集]

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

External links[編集]

Template:Solid-state drive