Kai kuri RAM arba atsitiktinės prieigos atmintis reklamuojama kaip ECC atmintis. ECC reiškia klaidų taisymo kodą ir yra atminties klaidų nustatymo ir taisymo procesas. RAM klaidos gali sugadinti arba pakeisti duomenis, o tai gali sukelti įrenginio gedimus ir net saugumo spragas. ECC RAM paprastai nesuderinama su vartotojo asmeninio kompiuterio aparatine įranga.
Kas yra atminties klaidos?
Atminties klaidos yra problema, kai pakeičiama atmintyje saugoma reikšmė. Duomenys RAM saugomi dvejetainiu formatu, kurių reikšmės yra 1 arba 0. Jei 1 reikšmė pakeičiama į 0 arba atvirkščiai, procese, vadinamame „bitų apvertimu“, RAM atmintyje saugomi duomenys pasikeičia.
Pavyzdžiui, pakeistas bitas gali būti naudojamas reikšmei išsaugoti skaičiuoklėje. Tokiu atveju vertė skaičiuoklėje gali būti pakeista į visiškai kitą skaičių, kuris paveiktų bet kokių skaičiavimų rezultatą, pavyzdžiui, pakeistų a ekonomines prognozes verslui. Kitais atvejais pakeistas bitas gali išjungti saugos funkciją arba sukurti rašybos klaidą, kuri pakeis programos vykdymą. Šiuos du pavyzdžius labai sunku aptikti ir išspręsti nenaudojant ECC atminties. Esant kraštutiniam scenarijui, apverstas vienas bitas gali sukelti katastrofišką klaidą, dėl kurios sugenda sistema.
Bitų pasikeitimas turi daug galimų priežasčių, dažniausiai priežastis yra foninė spinduliuotė, kurią pirmiausia sukelia neutronai, sukurti dėl kosminių spindulių įvykių. Kosminis spindulys yra didelės energijos dalelė, paprastai protonas, sklindanti beveik šviesos greičiu. Juos skleidžia žvaigždžių kūnai, įskaitant Saulę ir kitus didelės energijos astronominius objektus. Kai kosminis spindulys patenka į atomą, susidaro neutronų ir kitų subatominių dalelių lietus, šie neutronai vėliau turi antrinę sąveiką.
Manoma, kad šios antrinės neutronų sąveikos yra pagrindinis bitų keitimo klaidų šaltinis. Kosminiai spinduliai labiau paplitę didesniame aukštyje – 1,5 km virš jūros lygio pakyla 3,5 karto, o kreiseriniame lėktuvų aukštyje – 300 kartų. Dėl šios padidėjusios rizikos aukštyje reikia imtis papildomų patikimumo priemonių.
Kaip dažnos atminties klaidos?
Daugelis žmonių nemato, kad jų kompiuteriai sugenda kiekvieną dieną, todėl būtų lengva manyti, kad tai visų pirma teorinė rizika. Hipermastelių duomenų centrų tyrimai buvo naudojami bitų pasikeitimo incidentų dažniui analizuoti. „Google“ duomenų centruose atliktas tyrimas parodė, kad klaidų lygis yra maždaug 1 vieno bito klaida vienam gigabaitui RAM kas 1,8 valandos.
NASA Cassini-Huygens misija, kuri buvo pradėta 1997 m., kad galėtų keliauti į Saturną, buvo sukonfigūruota su dviem identiškais skrydžio kompiuteriais, kurių kiekvienas turi 2,5 Gb RAM. Per pirmuosius dvejus su puse savo kelionės metų erdvėlaivis stebėjo nuoseklų 280 vieno bito klaidų per dieną. Per vieną dieną, kai Cassini-Huygens buvo saulės pliūpsnio kelyje, bitas padidėjo keturis kartus buvo pastebėtos klaidos, suteikiančios daugiau įrodymų, kad Saulė yra daugumos bitų keitimo priežastis Problemos.
Buvo susirūpinta, kad dėl nuolatinio RAM modulių tankio didėjimo vėlesnės RAM versijos taps vis labiau pažeidžiamos bitų pasikeitimų. Naujausi tyrimai parodė, kad iš tikrųjų yra priešingai, nes sumažėjus proceso geometrijai klaidų sumažėjo.
Kaip ECC atmintis apsaugo nuo klaidų?
ECC atmintis naudoja klaidų taisymo kodus, pvz., Hamingo kodus, kad ištaisytų vieno bito klaidas RAM. Dviejų bitų klaidas galima aptikti, bet ne taisyti. Hamming klaidų taisymo kodai veikia naudojant pariteto bitų masyvą. Kartu šie pariteto bitai gali būti naudojami norint nustatyti, ar pasikeitė bet kokie duomenų bitai. Jei nustatoma, kad bitas apverstas, jis automatiškai pakeičiamas atgal.
Patarimas: Vieno bito klaida yra bitų keitimo atvejis, kai apverčiamas tik vienas bitas. Esant double0bit klaidoms, apverčiami du bitai. Dviejų bitų nereikia apversti to paties įvykio metu, antrasis bitų apvertimas turi įvykti tik prieš pataisant pirmąjį apverstą bitą.
Į Hamingo klaidų taisymo kodus įtrauktas dar vienas pariteto bitas, nei reikia. Šis papildomas pariteto bitas suteikia kodui galimybę aptikti dvigubų bitų klaidas, tačiau šios klaidos negali būti ištaisytos.
Klaidų aptikimo ir taisymo procesas atliekamas RAM atmintyje esančiame atminties valdiklyje.
Vartotojų prieinamumas ir palaikymas
Dauguma vartotojų klasės kompiuterių aparatinės įrangos nepalaiko ECC atminties. Tai iš dalies yra būdas dirbtinai atskirti serverio aparatinę įrangą nuo vartotojų aparatinės įrangos. Tačiau ECC RAM kainuoja daugiau ir veikia šiek tiek lėčiau. Be to, papildomas stabilumas, kurį jis suteiktų namų vartotojams, yra minimalus, nes bitų keitimo klaidos nėra pagrindinė sistemos gedimų priežastis.
Nė vienas iš „Intel“ vartotojų ir entuziastų lygio CPU nepalaiko ECC atminties, o tik serverio lygio procesoriai, tokie kaip „Xeon“ serijos procesoriai. AMD vartotojų klasės procesoriai nepalaiko ECC, tačiau jų darbo stočių ir serverio lygio procesoriai, atitinkamai Threadripper ir EPYC, palaiko ECC atmintį.