Co je ECC paměť?

Některé paměti RAM nebo paměti s náhodným přístupem jsou inzerovány jako paměť ECC. ECC je zkratka pro Error Correcting Code a je to proces identifikace a opravy chyb v paměti. Chyby v paměti RAM mohou způsobit poškození nebo změnu dat, což může mít za následek selhání zařízení a dokonce i bezpečnostní zranitelnost. ECC RAM obvykle není kompatibilní s počítačovým hardwarem spotřebitelské třídy.

Co jsou chyby paměti?

Chyby paměti jsou problémem, kdy se změní hodnota uložená v paměti. Data v RAM jsou uložena v binárním formátu s hodnotami 1 nebo 0. Pokud se hodnota 1 přepne na 0 nebo naopak, v procesu zvaném „bit-flipping“, data uložená v paměti RAM se změní.

Změněný bit lze například použít k uložení hodnoty do tabulky. V tomto případě by se hodnota v tabulce mohla změnit na úplně jiné číslo, které by ovlivnilo výsledek jakýchkoli výpočtů, například by změnilo ekonomické prognózy a podnikání. V jiných případech může změněný bit zakázat funkci zabezpečení nebo vytvořit překlep, který změní způsob spouštění programu. Tyto dva příklady je extrémně obtížné zjistit a vyřešit bez použití paměti ECC. V extrémním případě by převrácení jediného bitu mohlo způsobit katastrofickou chybu, která způsobí zhroucení systému.

Překlápění bitů má mnoho potenciálních příčin, nejběžnější příčinou je důsledek záření na pozadí, primárně způsobené neutrony vytvořenými událostmi kosmického záření. Kosmický paprsek je vysokoenergetická částice, typicky proton, která se pohybuje téměř rychlostí světla. Vyzařují je hvězdná tělesa včetně Slunce a dalších astronomických objektů s vysokou energií. Když kosmický paprsek zasáhne atom, vytvoří se sprška neutronů a dalších subatomárních částic, tyto neutrony pak přejdou do sekundárních interakcí.

Tyto sekundární neutronové interakce jsou považovány za primární zdroj chyb při překlápění bitů. Kosmické záření je častější ve vyšších nadmořských výškách s 3,5násobným nárůstem ve výšce 1,5 km nad mořem a 300násobným nárůstem v cestovní výšce dopravních letadel. Toto zvýšené riziko ve výšce vyžaduje zvláštní opatření pro spolehlivost.

Jak časté jsou chyby paměti?

Většina lidí nevidí, že jejich počítače padají každý den, takže by bylo snadné si myslet, že jde především o teoretické riziko. K analýze míry incidentů překlápění bitů byl použit výzkum z datových center hyperscale. Výzkum, který provedl Google napříč svými datovými centry, ukázal chybovost zhruba 1 jednobitové chyby na gigabajt RAM každých 1,8 hodiny.

Mise Cassini-Huygens NASA, která byla zahájena v roce 1997 s cílem cestovat k Saturnu, byla nakonfigurována se dvěma identickými letovými počítači, každý s 2,5 Gb RAM. Během prvních dvou a půl roku své cesty sonda pozorovala konzistentních 280 jednobitových chyb denně. Během jednoho dne, kdy byla Cassini-Huygens v dráze sluneční erupce, došlo ke čtyřnásobnému nárůstu bit Byly pozorovány chyby, které poskytly další důkaz, že Slunce je příčinou většiny bitů problémy.

Existovaly obavy, že pokračující nárůst hustoty modulů RAM povede k tomu, že pozdější verze RAM budou stále zranitelnější vůči převrácení bitů. Novější studie ukázaly, že opak je ve skutečnosti pravdou, protože chyb ubylo s tím, jak se zmenšila geometrie procesu.

Jak paměť ECC chrání před chybami?

Paměť ECC používá kódy pro opravu chyb, jako jsou Hammingovy kódy, k opravě jednobitových chyb v paměti RAM. Dvojité bitové chyby lze detekovat, ale nelze je opravit. Hammingovy kódy pro opravu chyb fungují pomocí pole paritních bitů. Tyto paritní bity lze společně použít ke zjištění, zda se nějaké datové bity změnily. Pokud je bit identifikován jako překlopený, je automaticky změněn zpět.

Tip: Jednobitová chyba je incident s převrácením bitů, když je převrácen pouze jeden bit. Při double0bitových chybách jsou dva bity převráceny. Při stejném incidentu není nutné přehodit dva bity, k druhému převrácení bitů musí dojít pouze před opravou prvního převráceného bitu.

O jeden paritní bit více, než je požadováno, je zahrnuto v Hammingových kódech pro opravu chyb. Tento extra paritní bit dává kódu schopnost detekovat výskyt dvoubitových chyb, tyto chyby však nelze opravit.

Proces detekce a opravy chyb se provádí na paměťovém řadiči na kartě RAM.

Dostupnost a podpora pro spotřebitele

Většina PC hardwaru pro spotřebitele nepodporuje ECC paměti. Částečně jde o metodu umělého rozlišení serverového hardwaru od spotřebního. ECC RAM však stojí více a běží o něco pomaleji. Navíc dodatečná stabilita, kterou by poskytl domácím spotřebitelům, je minimální, protože chyby při překlápění bitů nejsou primární příčinou selhání systému.

Žádný z procesorů Intel pro spotřebitele a nadšence nepodporuje paměť ECC, ale pouze jeho serverové CPU, jako jsou CPU řady Xeon. CPU pro spotřebitele AMD nepodporují ECC, ale jejich procesory pro pracovní stanice a servery, Threadripper a EPYC, podporují paměť ECC.