ECC-geheugen, ook wel Error-Correcting Code-geheugen genoemd, heeft de mogelijkheid om fouten in gegevens te detecteren en te corrigeren. Het wordt vaak gebruikt in geavanceerde desktopcomputers, servers en werkstations om de systeemstabiliteit en veiligheid te verbeteren.
Geheugen is een elektronisch apparaat en er kunnen fouten optreden tijdens de werking ervan. Voor gebruikers met hoge stabiliteitseisen kunnen geheugenfouten tot kritieke problemen leiden. Geheugenfouten kunnen in twee typen worden ingedeeld: harde fouten en zachte fouten. Harde fouten worden veroorzaakt door hardwareschade of defecten, en de gegevens zijn consequent onjuist. Deze fouten kunnen niet worden gecorrigeerd. Aan de andere kant treden zachte fouten willekeurig op als gevolg van factoren zoals elektronische interferentie in de buurt van het geheugen en kunnen worden gecorrigeerd.
Om fouten in het zachte geheugen op te sporen en te corrigeren, werd het concept van geheugenpariteitscontrole geïntroduceerd. De kleinste eenheid in het geheugen is een bit, weergegeven door 1 of 0. Acht opeenvolgende bits vormen een byte. Geheugen zonder pariteitscontrole heeft slechts 8 bits per byte, en als een bit een onjuiste waarde opslaat, kan dit leiden tot foutieve gegevens en applicatiefouten. Pariteitscontrole voegt een extra bit aan elke byte toe als foutcontrolebit. Na het opslaan van gegevens in een byte hebben de acht bits een vast patroon. Als de bits bijvoorbeeld gegevens opslaan als 1, 1, 1, 0, 0, 1, 0, 1, is de som van deze bits oneven (1+1+1+0+0+1+0+1=5 ). Voor even pariteit wordt de pariteitsbit gedefinieerd als 1; anders is het 0. Wanneer de CPU de opgeslagen gegevens leest, telt hij de eerste 8 bits op en vergelijkt hij het resultaat met de pariteitsbit. Dit proces kan geheugenfouten detecteren, maar de pariteitscontrole kan deze niet corrigeren. Bovendien kan de pariteitscontrole geen dubbelbitfouten detecteren, hoewel de kans op dubbelbitfouten klein is.
ECC-geheugen (Error Checking and Correcting) slaat daarentegen naast de databits een gecodeerde code op. Wanneer gegevens naar het geheugen worden geschreven, wordt de bijbehorende ECC-code opgeslagen. Bij het teruglezen van de opgeslagen gegevens wordt de opgeslagen ECC-code vergeleken met de nieuw gegenereerde ECC-code. Als ze niet overeenkomen, worden de codes gedecodeerd om de onjuiste bit in de gegevens te identificeren. Het foutieve bit wordt vervolgens weggegooid en de geheugencontroller geeft de juiste gegevens vrij. Gecorrigeerde gegevens worden zelden teruggeschreven naar het geheugen. Als dezelfde foutieve gegevens opnieuw worden gelezen, wordt het correctieproces herhaald. Het herschrijven van gegevens kan overhead met zich meebrengen, wat tot een merkbare prestatievermindering leidt. ECC-geheugen is echter van cruciaal belang voor servers en soortgelijke toepassingen, omdat het mogelijkheden biedt voor foutcorrectie. ECC-geheugen is vanwege de extra functies duurder dan gewoon geheugen.
Het gebruik van ECC-geheugen kan een aanzienlijke invloed hebben op de systeemprestaties. Hoewel het de algehele prestaties kan verminderen, is foutcorrectie essentieel voor kritieke applicaties en servers. Als gevolg hiervan is ECC-geheugen een gebruikelijke keuze in omgevingen waar gegevensintegriteit en systeemstabiliteit van het grootste belang zijn.
Posttijd: 19 juli 2023