Přejít k hlavnímu obsahu

NVM Express – rozhraní pro turbo SSD

Michal Bareš 20.05.2015

Rychlost SSD disků zpomalují SATA kabely a rozhraní AHCI. Rozhraní NVM Express vymáčkne z SSD disků vyšší rychlost.

Dnes už snad každý ví, že SSD disk je z hlediska rychlosti systému a práce s aplikacemi nejdůležitější komponentou počítače. Uživatelům, kteří chtějí omladit starší notebook nebo počítač, stačí jen vyměnit starý HDD za nový systémový SSD disk, a mají na dalších několik let vystaráno. Každý ale neví, že flashové paměti používané v SSD discích by mohly pracovat mnohem rychleji, pokud by nebyly k CPU připojeny prostřednictvím pomalého řadiče SATA s maximální propustností 600 MB/s. Další úzké hrdlo představuje rozhraní AHCI (Advanced Host Controller Interface), které slouží ke komunikaci s řadičem SATA a dnes už naprosto nezvládá držet krok s moderním hardwarem. Vzniklo už v roce 2004, tedy v éře výhradně magnetických disků, a od počátku bylo určeno pro práci s paměťovými médii, která zapisují nebo čtou jednotlivé bity z kovového disku.

V případě rozhraní AHCI nesměřuje řadič data z pevného disku přímo do CPU, ale posílá je oklikou přes host bus adapter (AHCI HBA), umístěný v čipové sadě. Tento adaptér má za úkol synchronizovat přenos dat mezi rychlým procesorem a RAM na jedné straně a pomalým pevným diskem na straně druhé. SSD disky by se ale bez tohoto prostředníka obešly. V ideálním případě se pro ně hodí rozhraní, které dokáže komunikovat přímo s CPU a posílat do něj data zároveň v několika linkách. Rozhraní AHCI se hromadně začalo používat (jako nástupce IDE) v době, kdy se na trhu objevily první SSD disky pro běžné uživatele, a využíváme jej dodnes. Nejrychlejší SSD disk roku 2012, Samsung 840 Pro, dosahoval přenosových rychlostí okolo 520 MB/s, což znamená, že byl jen o 20 MB/s pomalejší než současný SSD disk Samsung 850 Pro. Dokud budou SSD disky osazeny SATA rozhraním, žádný zásadní nárůst přenosových rychlostí od nich nemůžeme očekávat. Již letos se má pomalu začít rozšiřovat nová generace řádově rychlejších řadičů NVM Express (NVMe), vyvinutých speciálně pro flashové paměti. První disk Intel SSD 750 jsme dokonce měli možnost vyzkoušet a jeho recenzi najdete již v tomto čísle Chipu.

Přenosové rychlosti v řádu GB/s

Řadiče NVMe již dnes používají serverové disky. Začátkem roku byl uveden na trh řadič Marvell 88NV1140, který se díky malým rozměrům a úspornému provozu hodí především pro mobilní zařízení. Pro segment stolních počítačů je určen další řadič od Marvellu, tentokrát s označením 88SS1093, který dokáže číst data z SSD disku až rychlostí 3 GB/s. Při takovéto rychlosti logicky nemohou být flashové buňky připojeny prostřednictvím SATA, ale je nutné použít rychlejší sběrnici PCI Express. PCIe byla původně navržena pro grafické karty, ale její rychlosti dokážou využívat i SSD disky. PCIe sběrnice spojuje připojené zařízení přímo s procesorem počítače, a to prostřednictvím různého počtu datových linek. Každá z těchto linek obsahuje dva kanály – jedním z nich proudí data od zařízení do CPU a druhým z CPU zpět do zařízení (viz schéma).

lexikon-2-nahled

Disky jako Intel DC P3700 se již dnes používají v serverech. P3700 dokáže číst data rychlostí 2,8 GB/s a zapisuje je rychlostí 0,9 GB/s.

Na rozdíl od SATA SSD disků tak mohou PCIe SSD disky zároveň odesílat i přijímat data. Již dnes je na trhu několik základních desek a kompatibilních disků, například již zmíněný Intel SSD 750 nebo RevoDrive 350. RevoDrive 350 zvládne přenášet data po osmi linkách najednou, takže datová komunikace mezi ním a procesorem probíhá v 16 kanálech. RevoDrive 350 je ale na rozdíl od Intelu 750, který používá řadič NVMe, stále vybaven pouze rozhraním AHCI. Díky tomu, že jsou jeho čtyři řadiče zapojeny do režimu RAID, dosahuje přenosových rychlostí okolo 1,5 GB/s, ani tak ale nedosahuje rychlosti NVMe disku Intel SSD 750.

Optimalizace pro více jader

Provádění čtecích a zápisových procedur běžně probíhá v několika krocích a data se v nich zpracovávají v 4KB blocích. Instrukce probíhají mezi vstupně-výstupním plánovačem operačního systému (I/O scheduler) na straně CPU a řadičem pevného disku. V případě potřeby umí AHCI řadit příkazy do fronty o maximální délce 32 příkazů. Takový úkol dokáže značně zatížit jedno jádro procesoru, AHCI má ale bohužel problém s rozdělováním úloh mezi větší počet jader CPU, protože ta si mezi sebou neumí vyměňovat informace o tom, která příkazová fronta již byla zpracována. AHCI navíc poskytuje plánovači pouze jedno přerušení, které indikuje průběh nebo dokončení přenosových operací.

Moderní počítače však používají vícejádrové procesory, sběrnice PCIe s dostatečným počtem datových linek a SSD disky s řadiči schopnými najednou pracovat s několika paměťovými čipy. Pro lepší řízení takového množství datových kanálů používá NVMe mnohem větší počet datových front, přičemž každá fronta může obsahovat až 65 536 příkazů. NVMe navíc rozpoznává dva typy front. Zatímco podřízené fronty obsahují příkazy, které má zpracovat řadič SSD disku, do kompletačních front jsou řazeny již dokončené příkazy. S každým jádrem procesoru spolupracuje minimálně jeden pár front, takže NVMe dokáže optimálněji využívat vícejádrová CPU. Tento systém navíc umožňuje v případě potřeby propojit každé jádro CPU i s větším počtem párovaných front, přičemž ty se zpracovávají podle nastavených priorit. Plánovač navíc dokáže vysílat signály přerušení do každého jádra zvlášť. Díky těmto možnostem tak dokáže NVMe optimalizovat přenos dat a zkrátit přístupové doby čtení i zápisu.

Marvell má již připraven NVMe řadič pro první SSD disky určené pro běžné koncové uživatele. Stejně tak již dnes implementují do UEFI ovladače NVMe někteří výrobci základních desek (například Asus), i když by možná bylo praktičtější počkat do podzimu, až Intel představí procesory nové generace Skylake. Ty budou mít opět víc PCIe linek, takže nebude hrozit jejich přetížení v případě, kdy je počítač vybaven dvěma výkonnými grafickými kartami. Od generace Skylake budou desky navíc běžně podporovat PCIe ve verzi 3.0, která přinese zdvojnásobení propustnosti každé PCIe linky až na 1 GB/s. Procesory Intelu prozatím komunikují pouze se sběrnicí PCIe 2.0, a to propustností 500 MB/s na linku.


Máte k článku připomínku? Napište nám

Sdílet článek

Mohlo by se vám líbit








Všechny nejnovější zprávy

doporučujeme


články odjinud