複製鏈接
請複製以下鏈接發送給好友

NVM Express

鎖定
NVM ExpressNVMe),或稱非易失性內存主機控制器接口規範(英語:Non Volatile Memory Host Controller Interface Specification,縮寫:NVMHCIS),是一個邏輯設備接口規範。它是與AHCI類似的、基於設備邏輯接口的總線傳輸協議規範(相當於通訊協議中的應用層),用於訪問通過PCI Express(PCIe)總線附加的非易失性存儲器介質(例如採用閃存的固態硬盤驅動器),雖然理論上不一定要求 PCIe 總線協議。
中文名
NVM Express
外文名
NonVolatileMemoryHostControllerInterfaceSpecification
領    域
計算機接口

NVM Express簡介

NVM ExpressNVMe),或稱非易失性內存主機控制器接口規範(英語:Non-VolatileMemoryHostControllerInterfaceSpecification,縮寫:NVMHCIS),是一個邏輯設備接口規範。它是與AHCI類似的、基於設備邏輯接口的總線傳輸協議規範(相當於通訊協議中的應用層),用於訪問通過PCI Express(PCIe)總線附加的非易失性存儲器介質(例如採用閃存的固態硬盤驅動器),雖然理論上不一定要求 PCIe 總線協議。
NVM代表非易失性存儲器(non-volatile memory)的首字母縮略字,這是固態硬盤(SSD)的常見的閃存形式。此規範主要是為基於閃存的存儲設備提供一個低延時、內部併發化的原生界面規範,也為現代CPU計算機平台及相關應用提供原生存儲併發化的支持,令主機硬件和軟件可以充分利用固態存儲設備的並行化存儲能力。相比此前機械硬盤驅動器(HDD)時代的AHCI,NVMe/NVMHCI降低了I/O操作等待時間、提升同一時間內的操作數、更大容量的操作隊列等。
依託於PCIe總線,NVMe設備可適用於各種支持PCIe總線的物理插槽上,包括標準尺寸的PCIe擴展卡(一般是4個PCIe通道)、採用U.2物理連接界面(SFF-8639)的2.5英寸/3.5英寸標準尺寸固態硬盤驅動器、SATA Express總線(兼容於PCIe)的設備、M.2規格擴展卡等。
此規範由“Non-Volatile Memory Host Controller Interface Working Group”(非易失性存儲器主機控制器界面工作組)負責管理。 [1] 

NVM Express背景

歷史上,大多數SSD使用如SATASAS光纖通道等接口與計算機接口的總線連接。隨着固態硬盤在大眾市場上的流行,SATA已成為個人計算機中連接SSD的最典型方式;但是,SATA的設計主要是作為機械硬盤驅動器(HDD)的接口,並隨着時間的推移越來越難滿足速度日益提高的SSD。隨着在大眾市場的流行,許多固態硬盤的數據速率提升已經放緩。不同於機械硬盤,部分SSD已受到SATA最大吞吐量的限制。
在NVMe出現之前,高端SSD只得以採用PCI Express總線製造,但需使用非標準規範的接口。若使用標準化的SSD接口,操作系統只需要一個驅動程序就能使用匹配規範的所有SSD。這也意味着每個SSD製造商不必用額外的資源來設計特定接口的驅動程序。
截至2014年9月,在光纖通道(FC)上使用NVMe的新標準也正在開發。 [1] 

NVM Express歷史

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。 [1] 

NVM Express操作系統支持

NVM Express9Front

2017年3月30日,NVMe驅動程序發佈並供使用

NVM ExpressChrome OS

2015年2月24日,加入NVMe驅動至內核和引導加載程序,可從NVMe設備啓動Chrome OS

NVM ExpressDragonFly BSD

DragonFly 4.6開始內置NVMe驅動程序

NVM ExpressFreeBSD

Intel贊助開發的驅動程序已內置於FreeBSD的head、stable/9分支中。nvd(4)和nvme(4)驅動程序則是在10.2版FreeBSD中開始默認內置於其中。

NVM ExpressHaiku

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

NVM Expressillumos

illumos於2014年10月15日獲得驅動程序支持

NVM ExpressiOS

iOS 9開始支持,首款配備了NVMe接口的設備是iPhone 6S/6S Plus,也是首款採用NVMe的移動設備。物理接口和UFS相同的採用M-PHY PCIe。接下來Apple推出的iPad ProiPhone SE也採用了NVMe

NVM ExpressLinux

NVMe的驅動程序最早是英特爾提供的,適用於Linux的內核驅動程序模塊。這個模塊在2012年3月19日集成到Linux內核的主線驅動程序當中,Linux內核3.3版開始內置支持而無需安裝額外模塊。
2014年1月19日的Linux內核 3.13版開始,加入由Fusion-io開發的blk-multiqueue或稱blk-mq模塊,是為“可變區塊層”(scalable block layer),用於NVMe SSD。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.
2015年4月12日發佈的Linux內核 4.0版開始,VirtIO區塊層驅動程序,SCSI驅動層(與SATA驅動共用)、迴環設備驅動(loop device) UBI(unsorted block images)驅動(供閃存實現區塊擦寫管理)以及RBD驅動程序(which exportsCephRADOS objects as block devices)都被修改,以適應及適配越來越多的NVMe設備

NVM ExpressNetBSD

NetBSD在2016年的開發版本中初步支持NVMe。OpenBSD則是在其6.0版時發佈了NVMe的驅動程序。

NVM ExpressOpenBSD

OpenBSD的NVMe驅動程序自2014年6月開始,由此前開發併發布USB、AHCI驅動程序的高級開發團隊負責。OpenBSD 6.0開始正式支持。

NVM ExpressOS X/macOS

Mac OS X 10.10.3(OS X Yosemite)開始支持NVMe。蘋果公司的Retina MacBook和2016年發佈MacBook Pro,配備了使用NVMe的PCIe SSD作為主硬盤驅動器使用。

NVM ExpressSolaris

Solaris自Oracle Solaris 11.2開始支持NVMe。

NVM ExpressVMware

英特爾發佈了供VMWare使用的NVMe驅動程序,vSphere 6.0以及其後的版本中,均包含了該驅動程序,支持多種NVMe設備。在 vSphere 6 update 1 更新中,VMWare的VSAN軟件模擬的存儲子系統也開始支持NVMe設備。

NVM ExpressWindows

微軟在Windows 8.1和Windows Server 2012 R2開始,原生支持NVMe設備。同時也為Windows 7和Windows Server 2008 R2提供原生驅動程序支持(需由用户自行下載獲取)
除了微軟官方提供的驅動程序以外,OpenFabrics Alliance也有維護一套開放源代碼的NVMe驅動程序,使用於Windows 7、8、8.1、10以及Windows Server 2008 R2、2012、2012 R2,這套驅動程序由數個加入了NVMe工作組的公司開發,包括IDT、英特爾以及LSI [2] 

NVM Express參見

參考資料
  • 1.    "Linux Multi-Queue Block IO Queueing Mechanism (blk-mq) - Device Drivers". thomas-krenn.com. 2015-06-08. Retrieved 2015-06-08.
  • 2.    Faster 'NVM Express' SSD Interface Arrives on Retina MacBook and OS X 10.10.3. macrumors.com. [11 April 2015].