NVM express

rozhraní pro úložiště připojené přes PCIe sběrnici

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

editovat
 
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 

editovat

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

editovat

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.

NVMe AHCI
Latence 2.8 µs 6.0 µs
Hloubka řad 64K řad o 64K příkazech 1 řada o 32 příkazech
Podpora více jader

CPU

Ano Jen omezená

Hardwarová podpora NVMe

editovat

SATA Express a SFF-8639

editovat

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í.

SATAe SFF-8639
SATA/SAS SATA SATA/SAS
Počet PCIe linek x2 x4 nebo duální x2
Referenční hodiny Ano Ne
Max

Prostupnost

2 GB/s (jednosměrně) 4 GB/s (jednosměrně)
Výška 7mm 15mm
Shrnutí Flexibilita a cena Vý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.

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]

editovat

Windows

editovat

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]

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.

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

editovat

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

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

Solaris

editovat

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

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

FreeBSD

editovat

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

OpenBSD

editovat

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

UEFI ovladač.

Reference

editovat

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

editovat