Mõnda RAM-i ehk suvapöördusmälu reklaamitakse ECC-mäluna. ECC tähistab tõrkeparanduskoodi ja on mälus olevate vigade tuvastamise ja parandamise protsess. RAM-i vead võivad põhjustada andmete rikkumist või muutumist, mis võib põhjustada seadme krahhi ja isegi turvaauke. ECC RAM ei ühildu tavaliselt tarbijatele mõeldud arvutiriistvaraga.
Mis on mäluvead?
Mälu vead on probleem, mille korral mällu salvestatud väärtust muudetakse. RAM-is olevad andmed salvestatakse binaarselt, väärtustega 1 või 0. Kui 1 väärtus muudetakse 0-ks või vastupidi, siis protsessis, mida nimetatakse "bitivahetuseks", muutuvad RAM-i salvestatud andmed.
Näiteks saab muudetud bitti kasutada väärtuse salvestamiseks arvutustabelisse. Sel juhul saab arvutustabelis oleva väärtuse muuta täiesti erinevaks numbriks, mis mõjutaks mis tahes arvutuste tulemust, näiteks a) majandusprognooside muutmine äri. Muudel juhtudel võib muudetud bitt turbefunktsiooni keelata või tekitada kirjavea, mis muudab programmi käitamist. Neid kahte näidet on äärmiselt raske tuvastada ja lahendada ilma ECC-mälu kasutamata. Äärmusliku stsenaariumi korral võib ühe biti ümberpööramine põhjustada katastroofilise vea, mis põhjustab süsteemi krahhi.
Bittide ümberpööramisel on palju võimalikke põhjuseid, kõige levinum põhjus on taustkiirgus, mida põhjustavad peamiselt kosmilise kiirguse sündmuste tekitatud neutronid. Kosmiline kiir on suure energiaga osake, tavaliselt prooton, mis liigub peaaegu valguse kiirusel. Neid kiirgavad tähekehad, sealhulgas Päike ja muud suure energiaga astronoomilised objektid. Kui kosmiline kiir tabab aatomit, tekib neutronite ja muude subatomiliste osakeste sadu, tekib neil neutronitel sekundaarne interaktsioon.
Arvatakse, et need sekundaarsed neutronite vastasmõjud on bitivahetusvigade peamiseks allikaks. Kosmilised kiired on tavalisemad kõrgematel kõrgustel, 1,5 km kõrgusel merepinnast tõusevad need 3,5 korda ja reisilennukite reisikõrgus 300 korda. Kõrgusel suurenenud risk nõuab täiendavaid töökindlusmeetmeid.
Kui levinud on mäluvead?
Enamik inimesi ei näe oma arvutite kokkujooksmist iga päev, seega oleks lihtne arvata, et see on peamiselt teoreetiline risk. Hüperskaala andmekeskuste uuringuid on kasutatud bitivahetusjuhtumite määra analüüsimiseks. Google'i andmekeskustes tehtud uuringud on näidanud, et veamäär on ligikaudu 1 ühebitine viga RAM-i gigabaidi kohta iga 1,8 tunni järel.
NASA Cassini-Huygensi missioon, mis käivitati 1997. aastal Saturnile reisimiseks, oli konfigureeritud kahe identse lennuarvutiga, millest igaühel oli 2,5 Gb RAM-i. Oma teekonna esimese kahe ja poole aasta jooksul täheldas kosmoselaev järjepidevalt 280 ühebitist viga päevas. Ühe päeva jooksul, kui Cassini-Huygens oli päikesepurske teel, suurenes bitt neli korda täheldati vigu, mis andis täiendavaid tõendeid selle kohta, et Päike on enamiku bittide ümberpööramise põhjus probleeme.
Kardeti, et RAM-i moodulite tiheduse jätkuv kasv toob kaasa selle, et RAM-i hilisemad versioonid muutuvad bitivahetustele üha haavatavamaks. Hiljutised uuringud on näidanud, et tegelikult on olukord vastupidine, kuna protsessi geomeetria vähenedes on vead vähenenud.
Kuidas kaitseb ECC-mälu vigade eest?
ECC-mälu kasutab RAM-i ühebitiste vigade parandamiseks veaparanduskoode, näiteks Hammingi koode. Topeltbiti vigu saab tuvastada, kuid mitte parandada. Hamming veaparanduskoodid töötavad paarsusbittide massiivi kasutades. Neid paarsusbitte koos saab kasutada andmebittide muutumise tuvastamiseks. Kui tuvastatakse, et bitt on ümber pööratud, muudetakse see automaatselt tagasi.
Näpunäide. Ühebitine viga on bittide ümberpööramise juhtum, kui ümber pööratakse ainult üks bitt. Double0bit vigade korral pööratakse kaks bitti ümber. Kahte bitti ei pea sama juhtumi korral ümber pöörama, teine bitivahetus peab toimuma ainult enne, kui esimene ümberpööratud bitt on parandatud.
Hammingi veaparanduskoodidesse on lisatud üks paarsusbitt rohkem kui nõutud. See täiendav paarsusbitt annab koodile võimaluse tuvastada topeltbiti vigu, kuid neid vigu ei saa parandada.
Vigade tuvastamise ja parandamise protsess viiakse läbi RAM-mälupulgal olevas mälukontrolleris.
Tarbijate kättesaadavus ja tugi
Enamik tarbijatele mõeldud arvutiriistvara ei toeta ECC-mälu. See on osaliselt meetod serveri riistvara kunstlikuks eristamiseks tarbija riistvarast. ECC RAM maksab aga rohkem ja töötab veidi aeglasemalt. Lisaks on selle lisastabiilsus kodutarbijatele minimaalne, kuna bitivahetusvead ei ole süsteemi krahhide peamine põhjus.
Ükski Inteli tarbija- ja entusiastide klassi CPU ei toeta ECC-mälu, seda toetavad ainult selle serveriklassi CPU-d, näiteks Xeoni CPU-d. AMD tarbijaklassi CPU-d ei toeta ECC-d, kuid nende tööjaama- ja serveriklassi CPU-d, vastavalt Threadripper ja EPYC, toetavad ECC-mälu.