NVM Express

Multi tool use
Multi tool use

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











body.skin-minerva .mw-parser-output table.infobox captiontext-align:center







非易失性内存主机控制器接口工作组

NVM Express logo.svg
簡稱
NVMe
成立時間
2011年,​8年前​(2011
網站
www.nvmexpress.org

NVM ExpressNVMe),或称非易失性内存主机控制器接口规范英语:Non-Volatile Memory Host Controller Interface Specification,缩写:NVMHCIS),是一个逻辑设备接口规范。它是與AHCI類似的、基於裝置邏輯接口的匯流排傳輸協定規範(相當於通讯协议中的应用层),用于访问通过PCI Express(PCIe)总线附加的非揮發性記憶體介质(例如採用快閃記憶體的固態硬碟機),雖然理論上不一定要求PCIe匯流排協定。


NVM代表非揮發性記憶體(non-volatile memory)的首字母縮略字,这是固态硬盘(SSD)的常见的闪存形式。此規範主要是為基於快閃記憶體的存儲裝置提供一個低延時、內部並行化的原生界面規範,也為現代CPU、電腦平台及相關應用提供原生存儲並行化的支援[1],令主機硬體和軟體可以充分利用固態存儲裝置的並列化存儲能力。相比此前機械硬碟機(HDD)時代的AHCI,NVMe/NVMHCI降低了I/O操作等待時間、提升同一時間內的操作數、更大容量的操作隊列等。


依託於PCIe匯流排,NVMe裝置可適用於各種支援PCIe匯流排的物理插槽上,包括標準尺寸的PCIe扩展卡英语Expansion card(一般是4個PCIe通道)[2]、採用U.2物理連接界面(SFF-8639)的2.5英寸/3.5英寸標準尺寸固態硬碟機、[3][4]SATA Express匯流排(相容於PCIe)的裝置、M.2規格擴展卡等。[5][6]


此規範由「Non-Volatile Memory Host Controller Interface Working Group」(非揮發性記憶體主機控制器界面工作組)負責管理。




目录





  • 1 背景


  • 2 历史


  • 3 作業系統支援


  • 4 參見


  • 5 備註


  • 6 參考資料


  • 7 外部連結




背景


历史上,大多数SSD使用如SATA、SAS或光纤通道等接口与计算机接口的总线连接。随着固态硬盘在大众市场上的流行,SATA已成为个人电脑中连接SSD的最典型方式;但是,SATA的设计主要是作为机械硬盘驱动器(HDD)的接口,并随着时间的推移越来越难满足速度日益提高的SSD。[7]随着在大众市场的流行,许多固态硬盘的数据速率提升已经放缓。不同于机械硬盘,部分SSD已受到SATA最大吞吐量的限制。


在NVMe出现之前,高端SSD只得以采用PCI Express总线制造,但需使用非标准规范的接口。若使用标准化的SSD接口,操作系统只需要一个驱动程序就能使用符合规范的所有SSD。这也意味着每个SSD制造商不必用额外的资源来设计特定接口的驱动程序。[8]


截至2014年9月,在光纤通道(FC)上使用NVMe的新标准也正在开发。[9]


截止2018年,NVMe包含NVMe、NVMe-MI以及NVMe-oF(NVMe over Fabrics)三个细分协议,其中NVMe为主协议,规范了host对盘的读写、访问以及资源管理等功能,NVMe-MI主要包括带外管理相关的功能,NVMe-oF主要是基于NVMe的网络协议规范,可以将FC等网络协议与NVMe进行结合起来。同时,并且三个协议在协同演进,未来将会围绕NVMe形成一个从盘到存储系统的端到端生态。



历史


2009年Intel开始着手寻找SATA的替代方案。SATA作为串行接口,采用AHCI规范,其已经成为制约SSD速度的瓶颈。AHCI只有1个命令队列,队列深度32.而NVMe可以有65535个命令队列,每个队列都可以深达65536个命令。NVMe也充分使用了MSI的2048个中断向量优势,延迟大大减小。


2011年有了1.0。最新的版本是1.2.1;最大带宽为11.6Gbps,约为1200MB/s。


2018年,基于NVMe的SSD已经可以突破15TB可用容量,读带宽达到6GB/s,100万IOPS(4KB随机读),同时保证微秒级延迟。[10]
產品規格:


  • 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月)


作業系統支援




Linux內核的存儲控制堆疊中,NVMe的資料路徑、不同層面下多重內部隊列的位置[11]


9Front

2017年3月30日,NVMe驅動程式釋出並供使用[12]

Chrome OS

2015年2月24日,加入NVMe驅動至內核和開機載入程式,可從NVMe裝置啟動Chrome OS[13][14]

DragonFly BSD

DragonFly 4.6開始內建NVMe驅動程式[15]

FreeBSD

Intel贊助開發的驅動程式已內建於FreeBSD的head、stable/9分支中。[16][17]nvd(4)和nvme(4)驅動程式則是在10.2版FreeBSD中開始預設內建於其中。[18]

Haiku

Haiku已有驅動開發時程,但是目前仍未完成[19]

illumos

illumos於2014年10月15日獲得驅動程式支援[20]

iOS

iOS 9開始支援,首款配備了NVMe介面的裝置是iPhone 6S/6S Plus,也是首款採用NVMe的行動裝置。物理介面和UFS相同的採用M-PHY PCIe。接下來Apple推出的iPad Pro和iPhone SE也採用了NVMe[21]


Linux

NVMe的驅動程式最早是英特爾提供的,適用於Linux的內核驅動程式模組。[22][23][24]這個模組在2012年3月19日整合到Linux內核的主線驅動程式當中,Linux內核3.3版開始內建支援而無需安裝額外模組。[25]

2014年1月19日的Linux內核 3.13版開始,加入由Fusion-io開發的blk-multiqueue或稱blk-mq模組,是為「可變區塊層」(scalable block layer),用於NVMe SSD。


2015年4月12日發佈的Linux內核 4.0版開始,VirtIO區塊層驅動程式,SCSI驅動層(與SATA驅動共用)、回環裝置驅動(loop device) UBI(unsorted block images)驅動(供快閃記憶體實作區塊擦寫管理)以及RBD驅動程式(which exports Ceph RADOS objects as block devices)都被修改,以適應及適配越來越多的NVMe裝置[29][30][31]
NetBSD

NetBSD在2016年的開發版本中初步支援NVMe。[32]OpenBSD則是在其6.0版時釋出了NVMe的驅動程式。

OpenBSD

OpenBSD的NVMe驅動程式自2014年6月開始,由此前開發並釋出USB、AHCI驅動程式的高級開發團隊負責。[33]OpenBSD 6.0開始正式支援。[34]

OS X/macOS

Mac OS X 10.10.3(OS X Yosemite)開始支援NVMe。蘋果公司的Retina MacBook和2016年發佈MacBook Pro,配備了使用NVMe的PCIe SSD作為主硬碟機使用。[35]

Solaris

Solaris自Oracle Solaris 11.2開始支援NVMe。[36]

VMware

英特爾釋出了供VMWare使用的NVMe驅動程式,[37]vSphere 6.0以及其後的版本中,均包含了該驅動程式,支援多種NVMe裝置。[38]在 vSphere 6 update 1 更新中,VMWare的VSAN軟體模擬的存儲子系統也開始支援NVMe裝置。[39]

Windows

微軟在Windows 8.1和Windows Server 2012 R2開始,原生支援NVMe裝置。[40][41]同時也為Windows 7和Windows Server 2008 R2提供原生驅動程式支援(Windows 7與Windows Server 2008 R2預設不支援NVMe,需由使用者自行下載獲取)。[42]

除了微軟官方提供的驅動程式以外,OpenFabrics Alliance也有維護一套開放原始碼的NVMe驅動程式,使用於Windows 7、8、8.1、10以及Windows Server 2008 R2、2012、2012 R2,這套驅動程式由數個加入了NVMe工作組的公司開發,包括IDT、英特爾以及LSI。[43] The current release is 1.5 from December 2016.[44]


參見



  • 電腦裝置頻寬列表

  • M.2

  • SATA Express


備註





參考資料




  1. ^
    Compare: NVM Express. NVM Express, Inc. [2017-01-24]. NVMe™ is designed from the ground up to deliver high bandwidth and low latency storage access for current and future NVM technologies. 



  2. ^ Drew Riley. Intel SSD DC P3700 800GB and 1.6TB Review: The Future of Storage. tomshardware.com. 2014-08-13 [2014-11-21]. 


  3. ^ Intel Solid-State Drive DC P3600 Series (PDF). Intel: 18, 20–22. 2015-03-20 [2015-04-11]. 


  4. ^ Paul Alcorn. SFFWG Renames PCIe SSD SFF-8639 Connector To U.2. Tom's Hardware. 2015-06-05 [2015-06-09]. 


  5. ^ 引用错误:没有为名为ahci-nvme的参考文献提供内容


  6. ^
    Paul Wassenberg. SATA Express: PCIe Client Storage (PDF). SATA-IO. 2013-06-25 [2014-11-21]. 



  7. ^ Walker, Don H. A Comparison of NVMe and AHCI (PDF). 31 July 2012. SATA-IO. [3 July 2013]. 


  8. ^ NVM Express Explained (PDF). 9 April 2014 [21 March 2015]. 


  9. ^ Fibre Channel Industry Association Collaborating with NVM Express, Inc. to Define New Standard for Fabric-Based Solid-State Storage Devices (新闻稿). 


  10. ^ 王楠. 打造绿色数据中心 Memblaze发布NVMe SSD新品_科技_环球网. tech.huanqiu.com. [2018-11-13] (英语). 


  11. ^ Werner Fischer; Georg Schönberger. Linux Storage Stack Diagram. Thomas-Krenn.AG. 2015-06-01 [2015-06-08]. 


  12. ^ hg/plan9front:sys/src/9/pc/sdnvme.c. 


  13. ^ NVM Express » ChromeOS adds boot support for NVM Express. nvmexpress.org. [21 March 2015]. 


  14. ^ 4f503189f7339c667b045ab80a949964ecbaf93e - chromiumos/platform/depthcharge - Git at Google. googlesource.com. [21 March 2015]. 


  15. ^ DragonFly BSD 4.6. www.dragonflybsd.org. [2016-09-08]. 


  16. ^ Log of /head/sys/dev/nvme. FreeBSD source tree. The FreeBSD Project. [16 October 2012]. 


  17. ^ Log of /stable/9/sys/dev/nvme. FreeBSD source tree. The FreeBSD Project. [3 July 2013]. 


  18. ^ FreeBSD 10.2-RELEASE Release Notes. The FreeBSD Project. [5 August 2015]. 


  19. ^ #9910 NVMe devices support. dev.haiku-os.org. [2016-07-28]. 


  20. ^ 4053 Add NVME Driver Support to Illumos. github.com. [2016-05-23]. 


  21. ^ Ho, Joshua. iPhone 6s and iPhone 6s Plus Preliminary Results. www.anandtech.com. [2016-06-01]. 


  22. ^ Matthew Wilcox. NVM Express driver. LWN.net. 2011-03-03 [2013-11-05]. (原始内容存档于2012-07-17). 


  23. ^ Keith Busch. Linux NVMe Driver (PDF). flashmemorysummit.com. 2013-08-12 [2013-11-05]. 


  24. ^ IDF13 Hands-on Lab: Compiling the NVM Express Linux Open Source Driver and SSD Linux Benchmarks and Optimizations (PDF). activeevents.com. 2013 [2014-01-11]. (原始内容 (PDF)存档于2014-01-11). 


  25. ^ Merge git://git.infradead.org/users/willy/linux-nvme. kernel.org. 2012-01-18 [2013-11-05]. 


  26. ^ Linux kernel 3.13, Section 1.1 A scalable block layer for high-performance SSD storage. kernelnewbies.org. 2014-01-19 [2014-01-25]. 


  27. ^ Jonathan Corbet. The multiqueue block layer. LWN.net. 2013-06-05 [2014-01-25]. 


  28. ^ Matias Bjørling; Jens Axboe; David Nellans; Philippe Bonnet. Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems (PDF). kernel.dk. ACM. 2013 [2014-01-25]. 


  29. ^ Linux kernel 3.18, Section 1.8. Optional multiqueue SCSI support. kernelnewbies.org. 2014-12-07 [2014-12-18]. 


  30. ^ Linux kernel 4.0, Section 3. Block. kernelnewbies.org. 2015-05-01 [2015-05-02]. 


  31. ^ Linux Multi-Queue Block IO Queueing Mechanism (blk-mq) - Device Drivers. thomas-krenn.com. 2015-06-08 [2015-06-08]. 


  32. ^ nvme -- Non-Volatile Memory Host Controller Interface. NetBSD manual pages. 2016-01-01 [2016-09-02]. 


  33. ^ David Gwynne. non volatile memory express controller (/sys/dev/ic/nvme.c). BSD Cross Reference. 2014-04-16 [2014-04-27]. 


  34. ^ David Gwynne. man 4 nvme. OpenBSD man page. 2016-04-14 [2016-08-07]. 


  35. ^ Faster 'NVM Express' SSD Interface Arrives on Retina MacBook and OS X 10.10.3. macrumors.com. [11 April 2015]. 


  36. ^ nvme(7D). Oracle. [2014-12-02]. 


  37. ^ Intel Solid-State for NVMe Drivers. intel.com. 2015-09-25 [2016-03-17]. 


  38. ^ VMware Compatibility Guide for NVMe devices. vmware.com. [2016-03-17]. 


  39. ^ VSAN Now Supporting NVMe Devices. vmware.com. 2015-11-11 [2016-03-17]. 


  40. ^ 引用错误:没有为名为snia-windows的参考文献提供内容


  41. ^ Windows 8.1 to support hybrid disks and adds native NVMe driver. Myce.com. 2013-09-06 [2014-01-11]. 


  42. ^ Update to support NVM Express by using native drivers in Windows 7 or Windows Server 2008 R2. Microsoft. 2014-11-13 [2014-11-17]. 


  43. ^ Windows NVM Express. Project web site. [September 18, 2013]. (原始内容存档于2013年6月12日). 


  44. ^ https://svn.openfabrics.org/svnrepo/nvmewin/releases/



外部連結




  • 官方網站:官方网站


  • 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

pTOwzG Xd NMltihMvVm zBZ1axtAnKXoisG 4
cvSRdDNb,SWl oJRCBLu LLYm CAXzm,71zEFzgXvUs bCj

Popular posts from this blog

The Dalles, Oregon

영화 미래의 미라이 다시보기 (2018) 다운로드 링크 무료보기

Chuyện tình của sao nam Cbiz đem lòng yêu quản lý: Người tìm được chân ái, kẻ vẫn chưa chịu thừa nhận