Wat is ECC-geheugen?

Sommige RAM, of Random-Access-geheugen, wordt geadverteerd als ECC-geheugen. ECC staat voor Error Correcting Code en is een proces van het identificeren en corrigeren van fouten in het geheugen. Fouten in RAM kunnen beschadiging of wijziging van gegevens veroorzaken, wat kan leiden tot apparaatcrashes en zelfs beveiligingsproblemen. ECC RAM is doorgaans niet compatibel met pc-hardware van consumentenkwaliteit.

Wat zijn geheugenfouten?

Geheugenfouten zijn een probleem waarbij de waarde die in het geheugen is opgeslagen, wordt gewijzigd. Gegevens in RAM worden binair opgeslagen, met waarden van 1 of 0. Als de waarde van een 1 wordt omgeschakeld naar een 0 of omgekeerd, in een proces dat "bit-flipping" wordt genoemd, veranderen de gegevens die in het RAM zijn opgeslagen.

Het gewijzigde bit kan bijvoorbeeld worden gebruikt om een ​​waarde in een spreadsheet op te slaan. In dit geval kan de waarde in de spreadsheet worden gewijzigd in een geheel ander getal dat het resultaat van berekeningen zou beïnvloeden, bijvoorbeeld het wijzigen van de economische voorspellingen van een bedrijf. In andere gevallen kan het gewijzigde bit een beveiligingsfunctie uitschakelen of een typfout maken die de manier waarop een programma wordt uitgevoerd verandert. Deze twee voorbeelden zijn buitengewoon moeilijk te detecteren en op te lossen zonder het gebruik van ECC-geheugen. In een extreem scenario kan een enkele bit die wordt omgedraaid een catastrofale fout veroorzaken die een systeemcrash veroorzaakt.

Bitflipping heeft veel mogelijke oorzaken, de meest voorkomende oorzaak is het gevolg van achtergrondstraling, voornamelijk veroorzaakt door neutronen die worden gecreëerd door kosmische straling. Een kosmische straal is een hoogenergetisch deeltje, meestal een proton, dat met bijna de lichtsnelheid reist. Ze worden uitgezonden door stellaire lichamen, waaronder de zon en andere astronomische objecten met hoge energie. Wanneer een kosmische straal een atoom raakt, ontstaat er een regen van neutronen en worden andere subatomaire deeltjes gecreëerd. Deze neutronen gaan vervolgens secundaire interacties aan.

Aangenomen wordt dat deze secundaire neutroneninteracties de primaire bron zijn van bit-flipping-fouten. Kosmische straling komt vaker voor op grotere hoogten, met een toename van 3,5x op 1,5 km boven zeeniveau en een toename van 300x op kruishoogte van vliegtuigen. Dit verhoogde risico op hoogte vereist extra betrouwbaarheidsmaatregelen.

Hoe vaak komen geheugenfouten voor?

De meeste mensen zien hun computers niet elke dag crashen, dus het zou gemakkelijk zijn om te denken dat dit in de eerste plaats een theoretisch risico is. Onderzoek van hyperscale datacenters is gebruikt om de snelheid van bit-flipping-incidenten te analyseren. Onderzoek uitgevoerd door Google in al zijn datacenters heeft een foutenpercentage van ongeveer 1 single-bit fout per gigabyte RAM elke 1,8 uur aangetoond.

De Cassini-Huygens-missie van NASA die in 1997 werd gelanceerd om naar Saturnus te reizen, was geconfigureerd met twee identieke vluchtcomputers met elk 2,5 Gb RAM. Tijdens de eerste twee en een half jaar van zijn reis observeerde het ruimtevaartuig een consistente 280 single-bit fouten per dag. Gedurende één dag, toen Cassini-Huygens zich op het pad van een zonnevlam bevond, was er een viervoudige toename van bit fouten werden waargenomen, wat verder bewijs levert dat de zon de oorzaak is van de meeste bit-flipping problemen.

Er waren zorgen dat de voortdurende toename van de dichtheid van RAM-modules ertoe zou leiden dat latere versies van RAM steeds kwetsbaarder zouden worden voor bit-flips. Meer recente studies hebben aangetoond dat het tegenovergestelde het geval is, aangezien fouten zijn afgenomen naarmate de procesgeometrie kleiner is geworden.

Hoe beschermt ECC-geheugen tegen fouten?

ECC-geheugen gebruikt foutcorrigerende codes, zoals Hamming-codes, om single-bit fouten in RAM te corrigeren. Double-bit-fouten kunnen worden gedetecteerd, maar niet worden gecorrigeerd. Hamming-foutcorrigerende codes werken met behulp van een reeks pariteitsbits. Samen kunnen deze pariteitsbits worden gebruikt om te detecteren of databits zijn gewijzigd. Als wordt vastgesteld dat een bit is omgedraaid, wordt deze automatisch teruggewisseld.

Tip: Een enkele bitfout is een bit-flipping-incident wanneer slechts een enkele bit wordt omgedraaid. Bij double0bit-fouten worden twee bits omgedraaid. De twee bits hoeven niet te worden omgedraaid in hetzelfde incident, de tweede bit-flip hoeft alleen te gebeuren voordat het eerste omgedraaide bit is gecorrigeerd.

Een pariteitsbit meer dan nodig is, is opgenomen in Hamming-foutcorrigerende codes. Deze extra pariteitsbit geeft de code de mogelijkheid om het optreden van dubbele bitfouten te detecteren, maar deze fouten kunnen niet worden gecorrigeerd.

Het proces van het uitvoeren van de foutdetectie en -correctie wordt uitgevoerd op de geheugencontroller aan boord van de RAM-stick.

Beschikbaarheid en ondersteuning voor consumenten

De meeste pc-hardware van consumentenkwaliteit ondersteunt geen ECC-geheugen. Dit is gedeeltelijk als een methode om serverhardware kunstmatig te onderscheiden van consumentenhardware. ECC RAM kost echter meer en werkt iets langzamer. Bovendien is de extra stabiliteit die het zou bieden aan thuisgebruikers minimaal, aangezien bit-flipping-fouten niet de primaire oorzaak zijn van systeemcrashes.

Geen van Intel's CPU's voor consumenten en enthousiastelingen ondersteunt ECC-geheugen, alleen de CPU's van serverkwaliteit, zoals de Xeon-reeks CPU's. AMD's CPU's van consumentenkwaliteit ondersteunen geen ECC, maar hun werkstation- en server-grade CPU's, respectievelijk Threadripper en EPYC, ondersteunen wel ECC-geheugen.