NVM express

Z Wikipedie, otevřené encyklopedie

NVM express nebo dříve NVMHCI (Non-Volatile Memory Host Controller Interface Specification) je specifikace rozhraní pro komunikaci mezi flash pamětí a jejím řadičem. Rozhraní je navrženo pro utilizaci hlavních výhod flash pamětí oproti klasičtějším mechanickým diskům. Rozhraní je optimalizováno pro maximální využití nízké latence a vysoké propustnosti dat 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 a definuje sety příkazů a zařizuje komunikaci mezi externím hardwarem (SSD disk) a interními komponenty (procesor).

NVMe standard je navržen pro co největší využití výhod Flash pamětí a to hlavně její nízké latence a vysoké úrovni schopnosti paralelního přenosu dat.   

Okolnosti vzniku

Po dlouhou dobu SSD disky využívaly ke komunikaci s počítačem nejčastěji rozhraní SATA. Díky tomu se SATA rozhraní 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í, které bylo původně vyvinuto primárně pro mechanické typy úložišť, 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 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 revizi 1.0 na svých internetových stránkách.

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 první chipsety nového standardu NVM express uvolněny na trh. V červenci roku 2013 pak Samsung oznámil první SSD disk se jménem enterprise, založený na standardizaci NVMe[1]. Disk dle Samsungu dosahoval rychlostí 3 GB/s v oblasti čtení, což je několikanásobný nárůst v porovnání s jejich předešlými 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

AHCI rozhraní těží hlavně z velké softwarové podpory, ale na druhou stranu bylo vyvinuto primárně pro magnetické úložiště. Kvůli tomu není rozhraní schopno paralelního přenosu 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 utilizovat více 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. AHCI je na druhé straně schopno dosahovat rychlostí blížících se 500 MB/s.

NVMe rovněž operuje při nižší latenci. Tento pokles oproti AHCI je způsoben absencí potřeby čtení 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 32K příkazech
Podpora více jader

CPU

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

SATAe SFF-8639
SATA/SAS SATA SATA/SAS
Počet PCIe linek x2 x4 nebo duální x2
Referenční Clock 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). Bohužel i v dnešní době najdete SSD disky s SATAe podporou jen zřídka.

M.2

M.2 je rozhraní používající několik typů sběrnic pro připojení k počítači. PCIe 3.0, SATA 3.0 a USB 3.0. M.2 v případě připojení přes PCIe může využívat až 4 PCIe linky s teoretickou prostupností 4 GB/s jednosměrně. M.2 je schopno interagovat s NVMe ovladačem a tím pádem dokáže využívat velkého potenciálu pro paralelní prostupnost dat.

M.2 je možno použít také pro připojení externích karet, které například umožňují připojení Bluetooth či WiFi. M.2 rozhraní se dnes používá hlavně v přenosných zařízení jako jsou notebooky.

M.2 socket 2 M.2 socket 3
SATA/PCIe x2 Ano, sdílené Ano, sdílené
PCIe x4 Ne Ano
Maximální prostupnost 2 GB/s 4 GB/s
Referenční Clock požadován požadován

Socket 2 je konfigurace používána hlavně pro sběrnici SATA či PCIe x2 s nižšími rychlosti a větší konečnou velikostí úložného zařízení a nižší cenou.[2]

Socket 3 je konfigurace používána hlavně pro sběrnici PCIe s menší konečnou velikostí úložného zařízení, vyšší rychlostí a zároveň také cenou.[2]

Podpora NVM express[3]

Windows

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

OS X

Apple přidal podporu pro NVMe svému deskotopovému systému v updatu 10.10.3 pro OS X Yosemite[6]. 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[7].

Chrome OS

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

Linux

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

Solaris

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

VMware

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

FreeBSD

Podpora vývoje nativní podpory byla sponzorována Intelem. Kernel systému ovladač obsahuje poprvé ve verzi 10.2.[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. a b http://www.snia.org/sites/default/files/SSSI%20M%202%20Webcast%20Slides%20v10fnl.pdf
  3. Drivers. NVM Express. Dostupné online [cit. 2017-01-01]. 
  4. Windows 8.1 to support hybrid disks and adds native NVMe driver - Myce.com. Myce.com. Dostupné online [cit. 2017-01-01]. (anglicky) 
  5. https://support.microsoft.com/en-us/kb/2990941. support.microsoft.com [online]. [cit. 2017-01-01]. Dostupné online. 
  6. NVMe DRIVER. MacVidCards.com [online]. [cit. 2017-01-01]. Dostupné online. 
  7. HO, Joshua. iPhone 6s and iPhone 6s Plus Preliminary Results. AnandTech. Dostupné online [cit. 2017-01-01]. 
  8. ChromeOS adds boot support for NVM Express. NVM Express. Dostupné online [cit. 2017-01-01]. 
  9. Linux 3.13 - Linux Kernel Newbies. kernelnewbies.org [online]. [cit. 2017-01-01]. Dostupné online. 
  10. New IPS Packages - What's New in Oracle® Solaris 11.2. docs.oracle.com [online]. [cit. 2017-01-01]. Dostupné online. 
  11. VMware. NVM Express. Dostupné online [cit. 2017-01-01]. 
  12. FreeBSD 10.2-RELEASE Release Notes. www.freebsd.org [online]. [cit. 2017-01-01]. Dostupné online.