NVM express

NVM express, NVMe nebo dříve NVMHCI (Non-Volatile Memory Host Controller Interface Specification) je specifikace rozhraní pro komunikaci s úložištěm využívající flash paměti. Rozhraní využívá hlavních výhod flash pamětí oproti starším mechanickým diskům. Rozhraní je optimalizováno pro maximální využití nízké latence a vysoké propustnosti dat (přenosová rychlost) při připojení flash paměti přes PCIe nebo například SATA Express U.2 sběrnice. NVMe operuje na hardwarovém ovladači, definuje sady příkazů a zařizuje komunikaci mezi externím hardwarem (SSD disk) a interními komponenty (procesor).

Okolnosti vzniku

SSD jednotka, která používá NVMe, ve formě PCI-Express x4

SSD disky dlouho využívaly ke komunikaci s počítačem rozhraní SATA, které se stalo běžným způsobem připojení. Avšak vzhledem k neustálému vývoji a dalšímu potenciálu flash paměti bylo SATA rozhraní, původně vyvinuté primárně pro mechanické typy úložišť, již zastaralé. SSD disky proto začaly být omezovány maximální možnou rychlostí SATA rozhraní nebo omezenými možnostmi paralelnosti přenosu dat.

Výrobci SSD disků proto přišli s alternativou připojení SSD disku k počítači pomocí sběrnice PCI-express x4, jejímiž hlavními výhodami jsou vyšší prostupnost dat a také větší využití paralelní komunikace pomocí linek PCIe. Problém však byl v počtu rozhraní, která by musela být podporována, protože každý výrobce si začal vyrábět své vlastní. Přišlo se proto s nápadem vytvořit unifikované rozhraní, pro které by každý z výrobců nemusel vyvíjet vlastní ovladače, a zároveň by také ulehčilo práci vývojářům operačních systémů, kteří by nemuseli optimalizovat systém pro každé rozhraní.

Historie 

Poprvé se NVMHCI objevilo v roce 2007 na konferenci Intel Developer Forum, avšak pouze v teoretické rovině. V roce 2008 skupina pracující na vývoji NVMHCI zveřejnila na svých internetových stránkách revizi 1.0.

Technická fáze vývoje začala v roce 2009. Na vývoji se podílelo velké množství firem pod taktovkou Intelu. První verze specifikace NVM express byla vydána v roce 2011, následována revizí o rok později. Hlavními rozdíly mezi těmito verzemi jsou v přidání tzv. „multipath I/O“ a také vektorového I/O. Dále následovalo několik dalších revizí, až v srpnu roku 2012 byly uvolněny na trh první chipsety nového standardu NVM express. V červenci roku 2013 pak Samsung oznámil první SSD disk se jménem Enterprise, založený na standardu NVMe.[1] Disk dle Samsungu dosahoval rychlostí 3 GB/s při čtení, což je několikrát víc než jejich předešlé produkty. V roce 2013 SandForce oznámil chipset s podporou x4 PCIe a rychlostmi 1 800 MB/s čtení/zápis v sekvenčním použití. V roce 2014 byly ohlášeny první produkty od Intelu postavené na standardu NVMe, které rovněž využívají sběrnici PCIe.

V březnu roku 2014 byla založena společnost NVM Express Inc., která sdružuje výrobce. Společnost má za úkol spravovat specifikace NVMe, dále je inovovat a také tuto technologii propagovat. Společnost je složena se zástupců různých firem pohybujících se v odvětví výroby a vývoje SSD disků.

NVM express vs AHCI/SATA

Předností rozhraní AHCI/SATA je hlavně široká softwarová podpora, rozhraní však bylo vyvinuto primárně pro magnetické úložiště a proto neumožňuje paralelní přenos dat. To znamená, že je AHCI rozhraní schopno zvládat pouze jednu řadu o 32 příkazech. Na druhou stranu NVMe rozhraní je schopno zvládat 65535 řad o 65535 příkazech v každé řadě. Díky tomu může procesor při čtení/zápisu dat využívat více procesorových jader s vyšší účinností, čímž se zvýší jak objem zpracovaných dat v jeden okamžik, tak rychlost jejich zpracování. Rozhraní NVMe dokáže navíc využívat více PCIe linek najednou. U PCIe 3.0 prostupnost dat na jedné lince dosahuje 1 GB/s jednosměrně. Například u zapojení přes sběrnici PCIe x8 tedy prostupnost dosahuje 8 GB/s, kdežto AHCI dosahuje rychlostí blížících se 500 MB/s.

NVMe rovněž operuje při nižší latenci, protože na rozdíl od AHCI nepotřebuje číst z registrů pro zadání příkazu pro rozhraní. Každý příkaz pro AHCI znamená 4 čtení registrů, což přidává přibližně 2,5 mikrosekund latence.

NVMeAHCI
Latence2.8 µs6.0 µs
Hloubka řad64K řad o 64K příkazech1 řada o 32 příkazech
Podpora více jader

CPU

AnoJen omezená

Hardwarová podpora NVMe

SATA Express a SFF-8639

SATA Express je nová iterace staršího rozhraní SATA určená pro koncového zákazníka. Na druhé straně rozhraní SFF-8639 je určeno pro korporátní hlavně serverové využití.

SATAeSFF-8639
SATA/SASSATASATA/SAS
Počet PCIe linekx2x4 nebo duální x2
Referenční hodinyAnoNe
Max

Prostupnost

2 GB/s (jednosměrně)4 GB/s (jednosměrně)
Výška7mm15mm
ShrnutíFlexibilita a cenaVýkon

SATAe rozhraní bylo vytvořeno v roce 2013. V květnu roku 2014 byly vydány chipsety H97 a Z97 od Intelu s podporou M.2 a SATAe rozhraní. AMD plánuje přidat podporu SATAe a M.2 v roce 2017 s příchodem nového socketu AM4 (Zen). Ale SSD disků se SATAe podporou není zatím mnoho.

M.2

Podrobnější informace naleznete v článku M.2.

M.2 je rozhraní pro připojení nevolatilních pamětí (tj. flash, resp. SSD disky) přes PCIe sběrnici.

Podpora NVM express[2]

Windows

Prvním systémem s nativní podporou NVMe je Windows 8.1 a Windows Server 2012 R2.[3] Microsoft také zpětně přidal podporu pro NVMe pro Windows 7 a Windows Server 2008 R2.[4]

OS X

Apple přidal podporu pro NVMe svému desktopovému systému v updatu 10.10.3 pro OS X Yosemite.[5] MacBook Retina a MacBook Pro 2016 rovněž používají rozhraní NVMe.

iOS

Apple poprvé použil rychlou flash paměť s rozhraním NVMe přes sběrnici PCIe v modelech iPhone 6s a 6s Plus.[6]

Chrome OS

V únoru 2015 byla přidána podpora NVMe rozhraní pro Chrome OS.[7]

Linux

Ovladač pro linux byl vytvořen jako open-source projekt. První ovladač byl implementován v Linux kernelu v. 3.13.[8]

Solaris

Systém od vývojáře Oracle obdržel první ovladače ve verzi 11.2[9].

VMware

Intel vydal první ovladače pro verzi VMware vSphere 5.5. Nativně je NVMe podporováno od verze 6.0 dále.[10]

FreeBSD

Podpora vývoje nativní podpory byla sponzorována Intelem. Kernel systému ovladač obsahuje poprvé ve verzi 10.2.[11]

OpenBSD

Ovladač nvme se objevil poprvé ve verzi 6.0, vydané 1. září 2016.[12]

UEFI

UEFI ovladač.

Reference

V tomto článku byl použit překlad textu z článku NVM Express na anglické Wikipedii.

  1. Enterprise SSD - Flash Storage | Samsung Semiconductor Global Website. Samsung Semiconductor [online]. [cit. 2017-03-20]. Dostupné online. (anglicky) 
  2. Drivers. NVM Express. Dostupné online [cit. 2017-01-01]. 
  3. Windows 8.1 to support hybrid disks and adds native NVMe driver - Myce.com. Myce.com. Dostupné online [cit. 2017-01-01]. (anglicky) 
  4. https://support.microsoft.com/en-us/kb/2990941. support.microsoft.com [online]. [cit. 2017-01-01]. Dostupné online. 
  5. NVMe DRIVER. MacVidCards.com [online]. [cit. 2017-01-01]. Dostupné v archivu pořízeném dne 2016-11-23. 
  6. HO, Joshua. iPhone 6s and iPhone 6s Plus Preliminary Results. AnandTech. Dostupné online [cit. 2017-01-01]. 
  7. ChromeOS adds boot support for NVM Express. NVM Express. Dostupné online [cit. 2017-01-01]. 
  8. Linux 3.13 - Linux Kernel Newbies. kernelnewbies.org [online]. [cit. 2017-01-01]. Dostupné online. 
  9. New IPS Packages - What's New in Oracle® Solaris 11.2. docs.oracle.com [online]. [cit. 2017-01-01]. Dostupné online. 
  10. VMware. NVM Express. Dostupné online [cit. 2017-01-01]. 
  11. FreeBSD 10.2-RELEASE Release Notes. www.freebsd.org [online]. [cit. 2017-01-01]. Dostupné online. 
  12. OpenBSD 6.0. www.openbsd.org [online]. Dostupné online. 

Externí odkazy

Média použitá na této stránce

Intel SSD 750 series, 400 GB add-in card model, top view.jpg
Autor: Dsimic, Licence: CC BY-SA 4.0
Top view of a 400 GB add-in card model of the Intel SSD 750 series, which is a PCI Express 3.0 ×4 expansion card using NVM Express as the logical device interface and MLC flash as the storage media (p/n: SSDPEDMW400G4R5)