ECC paměti – ochrana před chybnými bity i pro notebooky

17. 2. 2016 08:00    Rubrika: Technologie    Autor: Jakub Pavlis

V generaci Skylake se objevili první procesory Xeon určené pro mobilní nasazení. Výpočetní část je prakticky shodná s řadou Core i7, přidanou hodnotu tedy tvoří především další technologie. A jednou z nejčastěji odkazovaných je přítomnost paměťového řadiče s podporou ECC. Jedná se ale o něco co lze v mobilním světě smysluplně využít?

ECC paměti – ochrana před chybnými bity i pro notebooky

Jestli chcete rychlou odpověď na tuto otázku, říci vám ji mohu, ale moc vás neuspokojím – ano i ne. Ochrana před výskytem chybných bitů v RAM je u notebooků především otázkou subjektivního hodnocení jejich závažnosti a ochoty vyvážit pořízení speciálních paměťových modulů vyšší cenou a nepatrně menším výkonem.

Nejprve si pojďme rozklíčovat ne úplně známou zkratku – ECC znamená Error-Correcting Code, v překladu tedy chyby opravující kód, resp. paměti s chyby opravujícím kódem. Samotná zkratka není příliš přesná, aby ochrana proti chybám fungovala, musí ji především podporovat paměťový řadič, a ten je dnes prakticky u všech výrobců PC integrován do procesoru. Samotné paměťové moduly jsou téměř obyčejné, liší se větší šířkou sběrnice a přidanými paměťovými čipy, ovšem pokud řadič ECC technologii nepodporuje, obvykle lze paměti používat „jako by nic“.


Že se v paměti občas vyskytnou chyby je prokázaná a prokazatelná věc. Proč se to děje je ovšem věc méně zřejmá. Jak se může stát, že se z ničeho nic změní v paměti jednička na nulu, v hardwarovém jazyku spíše můžeme říci, že se paměťová buňka tvořená polovodičem nabije nebo vybije? Vlivy mohou být všelijaké elektromagnetické interference, nejčastěji se ovšem mluví o radioaktivitě. Na často obávaném jevu totiž není nic nepřirozeného, celý svět je vlastně „radioaktivní“, běžné a přirozené radioaktivitě se říká radioaktivní pozadí. Tvoří ho jednak aktivita hornin v krajině, jednak zbytkové kosmické záření nebo třeba rozpad přirozeně vyvěrajícího radonu, což je v Čechách relativně běžný jev. A rozpad radonu emituje překvapivé množství alfa-záření, které je velice slabé a běžně nepronikne ani přes tenké materiály, např. přes oděv, ale náhodnou reakci způsobit může. Lépe je ovšem prozkoumán vliv kosmického záření, jednak je viditelná závislost četnosti výskytu chyb na pamětech vzhledem k jejich umístění, kdy chybovost výrazně roste s nadmořskou výškou. A třebaže málokdo provozuje server na vrcholku Himalájů, letadlem ve výšce mezi 6 a 10 km nad zemí létáme docela běžně. Dobře zdokumentován je také výskyt chyb v pamětech umístěných na vesmírných družicích, které překvapivě často využívají relativně běžné výpočetní komponenty včetně ECC pamětí.


Jaká je pravděpodobnost takové chyby? Vesmírná sonda Cassini-Huygens vyslaná v roce 1997 k Saturnu produkovala během své cesty kosmem celkem stabilní průměr kolem 280 chyb za den při osazení 2,5 GB RAM z běžných modulů. Na Zemi jsme naštěstí stíněni atmosférou mnohem lépe. Společnost Google na svém zařízení odhadla v roce 2009 pravděpodobnost výskytu chyby na 2,5–7 x 10−11 chyby za hodinu na jeden bit. V dalším vývoji se střetávají dvě protichůdné tendence. Na jedné straně se zvětšováním pamětí a většími objemy dat roste pravděpodobnost výskytu stejně jako zmenšující se technologie výroby a nižší používané napětí umožňují, aby změnu elektrického náboje způsobila částice s nižší energií. Na druhou stranu menší paměťové buňky jsou těžším „terčem“ pro volné neutrony, také nové materiály (SOI polovodiče) lépe izolují a odstiňují paměťové buňky. Obecně lze říci, že chybovost se s nárůstem pamětí poměrně (procentuálně) nezvyšuje, zvýšení v absolutních číslech odpovídá většímu průtoku dat.


Jak doopravdy ECC pracují? Vlastně to není nijak složité, každý paměťový modul má o 8 bitů širší sběrnici a vyhrazené paměťové čipy. Každé „slovo“, ze kterých komunikace pamětí sestává a která mají délku datové sběrnice (typicky 64 bitů) je doplněn o paritní bit kontrolního součtu. Jejich hodnota se uchovává právě v oněch extra čipech. Při každém čtení paměti řadič krom dat načte i paritní bit a porovná ho s výpočtem aktuálně načtených dat. Pokud součty nesouhlasí, označí chybu paměti a obvykle „shodí“ práci, tedy restartuje počítač. K výpočtu se používá Hammingův kód, jehož plné vysvětlení přesahuje záměr článku i matematické síly autora. Výsledkem však je, že řadič díky součtům umí detekovat až dvě chyby v jednom slově, pokud detekuje pouze jedinou, umí ji i opravit. Pokud by došlo k výskytu více chyb, součet by mohl souhlasit a chyba by se prvně projevila až chybnou prací programu nebo špatným zápisem dat.

Specialitou je pak ještě fakt, že ECC paměti mohou být tzv. registrované, mají na sobě tedy ještě malou EEPROM nebo obdobnou paměť, do které se chyba zapíše pro snazší detekci vadného modulu. Samotná detekce chyb v ECC pamětech totiž nestačí, pokud ji paměť nezvládne opravit, následuje obvykle restart, který vše „smaže“, zatímco registrované paměti samy sebe umí označit jako chybné. A protože píši článek pro server o noteboocích, stojí za to poznamenat, že ECC moduly mají vyšší spotřebu energie – cca o 1/8, neboť musí „živit“ extra paritní čipy, do kterých se zapisuje pokaždé, když do kteréhokoli datového.


ECC paměti jsou běžnou součástí serverů a také pracovních stanic, naopak v běžných desktopech, i třeba vysoce výkonných herních, nebo noteboocích je naopak téměř nevidíme. Jde totiž především o cenu chyby. Předejít chybě může být docela drahé – potřebujete dražší procesor, řadič, paměť a systém, který s celou touhle výbavou umí pracovat. A chyba se nevyskytuje nijak často a může znamenat jen jeden špatný pixel v dvouhodinovém filmu, nepostřehnutelně krátké zakolísání hlasitosti písničky nebo třeba nutnost vyžádat si znovu paket síťové komunikace, tedy nic, čeho by si uživatel vůbec mohl všimnout. Zdůvodnění mají tedy především tam, kde záleží na každém jednotlivém bitu – třeba v řízení provozu, u indexačních serverů, v databázových systémech pracujících s čísly nebo třeba v medicíně. U 3D modelování už je to sporné – pokud vytváříte třeba modely strojních součástí vyráběných v běžných strojařských tolerancích, podobných chyb se nejspíše nikdo u finálního výrobku nedoměří – naopak třeba v optice nebo modelovaní na molekulární úrovni mohou být podobné chyby pro výsledek fatální, jakkoli jsou nepravděpodobné.


Mít ECC v běžném počítači je tedy opravdu jen o subjektivním pocitu, její přítomnost může znamenat, že vám oblíbená hra během své morální životnosti spadne méněkrát, než kdybyste chráněnou paměť neměli. A u notebooků? Dovedu si představit, že pokud na svém notebooku provozujete náročné, řadu hodin či dnů trvající výpočty či rendery (a nebo často pracujete s notebookem během pracovních letů), může to být zajímavá varianta. Ale za mě zní odpověď na úvodní otázku ne. Protože pravděpodobnost je příliš malá a cena příliš velká.

Technologie

Diskuse