SATA/AHCI je dnes sice pořád široce používané rozhraní pro SSD, ale je jasné, že mimo HDD jde již o legacy technologii a nový vývoj probíhá na rozhraní NVMe, které je jasnou budoucností už prakticky celého trhu úložišť (SSD). Nyní NVMe coby protokol a technologie řízení SSD dostává novou generaci NVMe 2.0, která přináší velké změny. A vypadá to, že ji paradoxně začnou používat i HDD – nebo alespoň některá. Co tedy NVMe přináší?
NVMe 2.0 není nekompatibilní nová technologie, měla by být naopak zpětně kompatibilní s předchozími. Proti předchozím verzím ale přidává nové funkce, z nichž některé již existovaly jako rozšíření. Také došlo k reorganizaci specifikace, která teď pokrývá více možných využití. Asi nejšťavnatějším je, že se tím zdá se NVMe rozšíří i do oblasti mechanických pevných disků (HDD).
Specifikace NVMe 2.0 je modulární, umožňuje vícero kombinací mezi systémem ukládání dat na jedné straně, což je označeno jako „Command Set spec“ a rozhraním, kterým se k disku tato data dostanou („Transport spec“).
Command Sety
První část, tedy způsob, jak se data ukládají, mají dnešní SSD – i ta NVMe – dost tradiční. Před operačním systémem se tváří jako uniformní bloková zařízení, což ale vůbec není samozřejmé. NVMe 2.0 toto dál podporuje coby NVMe Block command set a možná půjde zase o mainstreamové využití, ale k tomu přidává možnost využívat alternativní přístup ZNS – Zoned Namespaces, o kterém si toho dále povíme víc.
Těchto technik ale v NVMe 2.0 může v budoucnu být i víc, zatím je ve specifikaci ještě třetí režim, Key-Value (KV) command set. Ten používá SSD jako databázi, kdy místo práci s logickými adresami dat po disku požadujete přímo data pomocí klíčů, kterým je přiřazená hodnota (data). Vyhledání dat na základě požadovaného klíče už obstará firmware disku.
Transport Sety
Nezávisle na použitém command setu je možné, aby úložiště s operačním systémem komunikovalo přes různá rozhraní. U běžných fyzicky připojených SSD to typicky je PCI Express (PCIe Transport Mapping), na tom se nic měnit nebude. Ale specifikace NVMe 2.0 umožňuje i vzdálené připojení po síti – a to buď přes protokol TCP-IP (TCP Transport Mapping) nebo pomocí technologie Remote DMA (RDMA Transport Mapping).
Proč NVMe HDD?
Jak už jsme nadhodili, nejvíc na NVMe 2.0 upoutá, že nově podporuje „rotační média“, tedy magnetické/pevné/mechanické disky HDD. Ty příliš nepotřebují vyšší výkon a propustnost rozhraní PCI Express (i když HDD s technologií Multi Actuator budou mít vyšší sekvenční rychlosti a mohou na limity SATA 3.0 narazit). Motivace k jejich přechodu jsou asi spíš jiné. Na jednu stranu to může být sjednocení technologie, aby čipsety a procesory nemusely podporovat dvojí rozhraní. To platí i pro ta vzdálená, NVMe tak tedy může být přínos pro připojení HDD po síti.
Možná důležitější faktor je podpora některých nových technologií, které se vymykají z tradiční povahy HDD a tudíž by potřebovaly lepší podporu i v rozhraní, kterým s diskem komunikuje systém. Jednou z takových technologií jsou HDD se záznamem SMR. Ten, jak asi víte, používá překrývající se stopy pro zvýšení hustoty zápisu. Nevýhoda ale je, že data nelze přepsat, aniž by se tím porušila sousední stopa. Disk proto musí sekvenčně zapisovat do prázdného prostoru. Při změně již uložených dat je třeba přepsat i jejich sousedy – disk je proto rozdělen na zóny, které se musí mazat a přepisovat celé najednou (kdyby oddělené zóny nebyly, přepsání sektoru by vyústilo v nutnost načíst a znovu zapsat i celý zbytek disku).
Tip: Co je SMR či Shingled Magnetic Recording u pevných disků? Jak funguje a je to problém?
SSD založená na pamětech NAND Flash mají velmi podobný problém – buňky NAND se dají číst a zapisovat (při zápisu do prázdné buňky, což se označuje jako programování) po stránkách o velikosti několik KB. Ale nedají se s touto granularitou přepsat a mazat. Přepis a mazání (aby se stránka zase mohla programovat, tedy do ní zapsat, je u NAND nutné nejprve ji inicializovat, vymazat) ale jsou možné jen na úrovni mnohem větších bloků, které mají velikost několik MB. Reálně se tyto bloky chovají téměř stejně jako zóny u SMR disků. Ovšem s tou nevýhodou, že přepisů zvládnou jen omezený počet, protože ona inicializace/vymazání opotřebovává fyzicky buňky a postupně je degraduje.
Zoned Namespaces (ZNS): obdoba Host-managed SMR disků pro SSD
NVMe 2.0 přináší technologii označenou Zoned Namespaces neboli ZNS, která je ušitá na míru této povaze SMR HDD a SSD postavených nad NAND Flash (což jsou všechna mimo Intel Optane SSD a jiných vyjímek). Spočívá v tom, že operační systém od disku přímo dostává informace o tom, jak je prostor na disku rozdělen na ony mazací zóny, které zóny jsou volné a je vhodné do nich psát a tak podobně.
Toto umožňuje, aby operační systém a software na disk zapisovaly inteligentně a ne tak, aby pak SSD mělo spoustu problémů s postupným přepisováním zón, garbage collection a dalšími operacemi, které jsou nutné při tradičním přístupu, kdy se SSD (nebo HDD) tváří jako uniformní prostor volných bloků. Lze říci, že tyto činnosti se přenesou na bedra operačního systému, který může zápisy naplánovat tak, aby minimalizoval objem reálné zátěže NAND coby fyzického média.
Tradiční bloková abstrakce dnes vyžaduje, aby řadič a firmware SSD na pozadí prováděl mnoho operací navíc, aby uspokojil požadavky na zápis dat od operačního systému, který o ošklivých interních detailech disku nic neví. Obnáší to využití rozkládání zátěže, garbage collection, různých zapisovacích bufferů (SLC cache) a rezervního místa navíc. Touto abstrakcí ale také u SSD vzniká problém s write amplification – zapíšete na SSD nějaký malý soubor nebo pár souborů, ale kaskáda operací, kterou musí SSD vykonat, může reálně způsobit až mnohamegabajtové přepisy, které ubírají ze životnosti NAND.
Když bude operační systém explicitně pracovat s interní strukturou NAND pomocí technologie Zoned Namespaces, mělo by prý být možné tyto jalové zápisy navíc výrazně omezit. A údajně bude také možné díky tomu omezit procento kapacity, které musí mít NAND ponechané v rezervě, a zpřístupnit ho pro samotná data.
Zoned Namespaces mají mít i další výhody. Omezení práce, kterou musí řadič na pozadí provádět, zjednoduší řadič, který tak bude i méně náročný k chybám a bude mu stačit výrazně méně mezipaměti DRAM. Protože nebude třeba práce na pozadí, měly by disky mít stabilnější výkon, a to i třeba s QLC NAND. Paměť NAND typu QLC by také měla hodně profitovat z omezení Write Amplification, protože její omezené přepisy by práce s diskem přes Zoned Space měla vyčerpávat výrazně pomaleji.
Enterprise a serverová SSD
Tento přístup se asi ale zatím uplatní jen v serverech a podobných nasazeních, v osobních počítacích a noteboocích pravděpodobně pro teď budou pokračovat SSD používající klasickou blokovou koncepci, kdy jsou šílenosti spojené s obsluhou NAND Flash abstrahované od operačního systému uvnitř disku/modulu na úrovni jeho firmwaru. Stejně tak asi spotřebitelská HDD se záznamem SMR také asi spíš zůstanou u SATA a „menežování“ na úrovni firmwaru. NVMe 2.0 možná obecně bude ze začátku tlačeno hlavně v serverech, kdežto v oblasti PC pro něj nebude tolik důvodů a tím pádem se s ním nebude tolik spěchat. Během Computexu už například Samsung první „ZNS“ SSD (PM1731a) oznámil, právě pro servery.
Galerie: Samsung ZNS SSD PM1731a
Úložišťové paměti NAND Flash zdaleka nejsou ideální technologie
Úplně ideální by bylo, pokud by se podařilo NAND nahradit nějakou lepší pamětí, která by neměla tolik slabin. A nepotřebovala proto ke své efektivní obsluze takovéto extrabuřty a operační systém (nebo hůř, aplikace) by nemusel řešit při ukládání dat takovéto komplikované problémy.
Bohužel se ale zatím nejnadějnější kandidát, paměti 3D XPoint, moc ke kýženému vykynožení NAND Flash nemají. Intel přestal vyrábět disky Optane SSD pro PC a Micron, který je spolutvůrcem, dokonce tuto technologii opouští úplně. Vysvobození tedy zatím není v dohlednu, takže NVMe 2.0 řeší problémy NAND, jak se dá.