Paměť ECC ( anglicky error-correcting code memory , paměť s opravou chyb) je typ počítačové paměti , která automaticky rozpoznává a opravuje spontánní změny (chyby) v paměťových bitech . Paměť, která nepodporuje opravu chyb, je označena jako non-ECC .
Paměť na opravu chyb může obvykle opravit jednobitové změny v jediném strojovém slově . To znamená, že při čtení jednoho strojového slova z paměti bude načtena stejná hodnota, která byla dříve zapsána, i když v intervalu mezi zápisem a čtením došlo k náhodné změně jednoho bitu (například působením kosmického záření ). Obyčejná paměť obecně nedokáže zjistit, zda došlo k chybě, ačkoli některé typy paměti pro kontrolu parity mohou zjistit, zda došlo k chybě, ale nemohou ji opravit.
Paměť pro opravu chyb se používá ve většině počítačů, kde je důležitá doba provozuschopnosti, včetně většiny serverů. Aby paměť fungovala v režimu opravy chyb, je vyžadována podpora od řadiče RAM, který může být nedílnou součástí čipové sady nebo zabudovaný v systému na čipu , který je integrován s výpočetními jádry.
Nejzákladnější algoritmus opravy chyb je založen na Hammingově kódu . Existují však další algoritmy, které mohou opravit více než jednu chybu.
V praxi je paměť DDR* SDRAM ECC široce používána pro servery s kódem třídy SECDED (oprava jedné chyby a detekce dvojité chyby). Na paměťových modulech je na každých 8 čipů přidán jeden čip navíc, který ukládá ECC kódy o velikosti 8 bitů na každých 64 bitů hlavní paměti [2] .
Schémata ochrany dat ECC lze také aplikovat na paměť zabudovanou do mikroprocesorů: mezipaměť, soubor registru. Někdy se do výpočetních obvodů přidává i řízení.
Elektromagnetické rušení uvnitř počítačového systému může spontánně změnit stav paměťové buňky počítače . Nejčastější příčinou této změny jsou neutrony z kosmického záření [3] . Proto se chybovost v počítačových systémech zvyšuje s nadmořskou výškou . Tok neutronů je tedy 3,5krát větší ve výšce 1,5 km a 300krát větší ve výšce 10-12 km (typická výška letu osobního letadla) než u hladiny moře [4] . Systémy pracující ve velké nadmořské výšce proto vyžadují větší ochranu.
Například sonda Cassini-Huygens má dva identické rekordéry, z nichž každý obsahuje 2,5 gigabitu paměti. Během prvních 2,5 roku letu byl každý den zaznamenán zhruba konstantní počet chyb: přibližně 280 chyb za den. Během jednoho dne (6. listopadu 1997) se však počet chyb zčtyřnásobil. Předpokládá se, že se tak stalo v důsledku geomagnetické bouře [5] (také protonová bouře ), kterou zaznamenal satelit GOES 9 [6] .
Panují obavy, že trend k menším fyzickým velikostem paměťových modulů povede ke zvýšení chybovosti v důsledku toho, že částice s nižší energií budou schopny změnit bit [4] . Na druhou stranu kompaktní velikost paměti snižuje šanci, že se do ní dostanou částice. Navíc přechod na technologie, jako je křemík na izolátoru, může paměť učinit stabilnější [7] .
Studie provedená na velkém počtu serverů Google ukázala, že počet chyb může být od 25 000 do 70 000 na miliardu hodin zařízení ( anglicky device hours ) na megabit (tj. 2,5–7,0 × 10 −11 chyb / bithodinu) [ 8] .
Jedním z řešení problému je parita – použití extra bitu, který zaznamenává paritu zbývajících bitů. Tento přístup umožňuje odhalit chyby, ale neumožňuje je opravit, takže pokud je zjištěna chyba, můžete pouze přerušit provádění programu.
Spolehlivější přístup je ten, který používá kódy pro opravu chyb . Nejčastěji používaným kódem pro opravu chyb je Hammingův kód . Většina typů paměti pro opravu chyb používaných v moderních počítačích dokáže opravit jednu bitovou chybu v jednom 64bitovém strojovém slově a detekovat, ale neopravit, dvoubitovou chybu v jediném 64bitovém slově [9] .
Nejúčinnější přístup k opravě chyb závisí na druhu očekávaných chyb. Často se předpokládá, že ke změnám různých bitů dochází nezávisle, v takovém případě je pravděpodobnost dvou chyb v jednom slově zanedbatelná. Tento předpoklad však neplatí pro moderní počítače. Technologie opravy chyb Chipkill ( IBM ) umožňuje opravit několik chyb, včetně poškození celého paměťového čipu . Mezi další technologie korekce paměti, které nepředpokládají nezávislost na bitových chybách, patří Extended ECC ( Sun Microsystems ), Chipspare ( Hewlett-Packard ) a SDDC ( Intel ).
Mnoho starších systémů hlásilo pouze ty chyby, které našly a které nebylo možné opravit, a nehlásilo ty, které byly opraveny. Moderní systémy zaznamenávají jak opravitelné chyby (CE, angl. opravitelné chyby ), tak neopravitelné (UE, angl. uncorrectable errors ). To vám umožní včas vyměnit poškozenou paměť: navzdory skutečnosti, že velký počet opravených chyb při absenci neopravitelných chyb neovlivňuje správnou činnost paměti, může to znamenat, že u tohoto paměťového modulu je pravděpodobnost výskytu neopravitelných chyb chyb v budoucnu bude přibývat [10] .
Paměť pro opravu chyb chrání před nesprávným provozem počítačového systému v důsledku poškození paměti a snižuje pravděpodobnost fatálního selhání systému. Taková paměť však stojí více; základní deska , čipová sada a procesor , které podporují paměť pro opravu chyb, mohou být také dražší, takže taková paměť se obvykle používá pouze v systémech, které jsou klíčové pro hladký a správný provoz, jako je souborový server , vědecké a finanční aplikace.
Kontrola součtů často vyžaduje jeden cyklus řadiče paměti navíc. Další logika, která implementuje počítání, kontrolu ECC a opravu chyb, vyžaduje logické zdroje a čas pro práci buď v samotném paměťovém řadiči, nebo v rozhraní mezi CPU a paměťovým řadičem [11] . Paměť pro opravu chyb je tedy o 2–3 % pomalejší než konvenční paměť, v závislosti na aplikaci [12] .
dynamických pamětí s náhodným přístupem (DRAM) | Typy|
---|---|
asynchronní | |
Synchronní | |
Grafický | |
Rambus | |
Paměťové moduly |