Noe RAM, eller Random-Access-minne, annonseres som ECC-minne. ECC står for Error Correcting Code og er en prosess for å identifisere og rette feil i minnet. Feil i RAM kan forårsake korrupsjon eller endring av data, noe som kan resultere i enhetskrasj og til og med sikkerhetssårbarheter. ECC RAM er vanligvis ikke kompatibel med PC-maskinvare av forbrukerkvalitet.
Hva er minnefeil?
Minnefeil er et problem der verdien som er lagret i minnet endres. Data i RAM lagres binært, med verdier på 1 eller 0. Hvis verdien av en 1 blir byttet til en 0 eller omvendt, i en prosess som kalles "bit-flipping", endres dataene som er lagret i RAM-en.
For eksempel kan den endrede biten brukes til å lagre en verdi i et regneark. I dette tilfellet kan verdien i regnearket endres til et helt annet tall som vil påvirke resultatet for eventuelle beregninger, for eksempel å endre de økonomiske prognosene for en virksomhet. I andre tilfeller kan den endrede biten deaktivere en sikkerhetsfunksjon, eller lage en skrivefeil som endrer hvordan et program kjøres. Disse to eksemplene er ekstremt vanskelige å oppdage og løse uten bruk av ECC-minne. I et ekstremt scenario kan en enkelt bit som snus, forårsake en katastrofal feil som forårsaker systemkrasj.
Bit-flipping har mange potensielle årsaker, den vanligste årsaken er resultatet av bakgrunnsstråling, primært forårsaket av nøytroner skapt av kosmiske strålehendelser. En kosmisk stråle er en høyenergipartikkel, vanligvis et proton, som beveger seg med nesten lysets hastighet. De sendes ut av stjernelegemer inkludert solen og andre høyenergi astronomiske objekter. Når en kosmisk stråle treffer et atom, dannes det en dusj av nøytroner og andre subatomære partikler, disse nøytronene fortsetter å ha sekundære interaksjoner.
Disse sekundære nøytroninteraksjonene antas å være den primære kilden til bit-flipping-feil. Kosmiske stråler er mer vanlig i større høyder med en økning på 3,5 ganger ved 1,5 km over havet og en økning på 300 ganger i marsjhøyden for flyfly. Denne økte risikoen i høyden krever ekstra pålitelighetstiltak.
Hvor vanlig er minnefeil?
De fleste ser ikke datamaskinene deres krasje hver dag, så det vil være lett å tro at dette først og fremst er en teoretisk risiko. Forskning fra hyperskala datasentre har blitt brukt til å analysere frekvensen av bit-flipping-hendelser. Forskning utført av Google på tvers av datasentrene har vist en feilrate på omtrent 1 enkeltbitsfeil per gigabyte RAM hver 1,8 time.
Nasas Cassini-Huygens-oppdrag som ble lansert i 1997 for å reise til Saturn, ble konfigurert med to identiske flydatamaskiner hver med 2,5 Gb RAM. I løpet av de første to og et halvt årene av reisen observerte romfartøyet 280 enkeltbitsfeil om dagen. I løpet av en dag, da Cassini-Huygens var i veien for et solutbrudd, var det en firedobling av bit feil ble observert, noe som gir ytterligere bevis for at solen er årsaken til de fleste bit-flipping problemer.
Det var bekymring for at den fortsatte økningen i tettheten til RAM-moduler ville føre til at senere versjoner av RAM ble mer og mer sårbare for bit-flips. Nyere studier har vist at det motsatte faktisk er tilfellet, ettersom feilene har falt etter hvert som prosessgeometrien har avtatt.
Hvordan beskytter ECC-minne mot feil?
ECC-minne bruker feilkorrigerende koder, for eksempel Hamming-koder, for å korrigere enkeltbitsfeil i RAM. Dobbeltbitfeil kan oppdages, men ikke korrigeres. Hamming feilkorrigerende koder fungerer ved å bruke en rekke paritetsbiter. Sammen kan disse paritetsbitene brukes til å oppdage om eventuelle databiter har endret seg. Hvis en bit identifiseres som å ha snudd, endres den automatisk tilbake.
Tips: En enkeltbitsfeil er en bit-flipping-hendelse når bare en enkelt bit er snudd. I double0bit-feil snus to biter. De to bitene trenger ikke å bli snudd i samme hendelse, den andre bit-flippen trenger bare å skje før den første snudde biten er korrigert.
En mer paritetsbit enn nødvendig er inkludert i Hamming feilkorrigerende koder. Denne ekstra paritetsbiten gir koden muligheten til å oppdage forekomsten av dobbeltbitfeil, men disse feilene kan ikke korrigeres.
Prosessen med å utføre feildeteksjon og korrigering utføres på minnekontrolleren ombord på RAM-pinnen.
Forbrukertilgjengelighet og støtte
Det meste av PC-maskinvare av forbrukerkvalitet støtter ikke ECC-minne. Dette er delvis som en metode for kunstig å skille servermaskinvare fra forbrukermaskinvare. ECC RAM koster imidlertid mer og går litt saktere. I tillegg er den ekstra stabiliteten det vil gi til hjemmeforbrukere minimal siden bit-flipping-feil ikke er den primære årsaken til systemkrasj.
Ingen av Intels forbruker- og entusiast-CPU-er støtter ECC-minne, bare dets server-CPU-er, slik som Xeon-serien. AMDs forbruker-CPU-er støtter ikke ECC, men deres arbeidsstasjon- og server-CPU-er, henholdsvis Threadripper og EPYC, støtter ECC-minne.