Je kunt qua "probleem-bewaking en -oplossing" geheugen in 3 soorten tegenkomen :
1. Geheugen zonder enige controle, 8 bits worden gebruikt om een byte op te slaan.
Als er een "bitje omvalt", dan wordt dit niet gedetecteerd, maar de computer loopt gewoon door alsof wat in die betreffende byte goed is. Dat kan betekenen dat je data corrupt zijn (leuk voor financiele programma's), of dat je programma of operating system in de war raakt vanwege een foute instructie (leidt meestal tot crashende programma's of bleu-screen/panics).
2. Geheugen met parity, 9 bits worden gebruikt om 1 byte op te slaan. Alle 1-bits in de byte worden opgeteld, en het 9e bit wordt zo gezet dat er altijd een even aantal bits is.
Als er nu 1 "bitje omvalt" (of een oneven aantal), dan kan dit worden gedetecteerd, en de computer kandit melden en de zaak stilzetten. Voor je programma's is dit nog steeds het einde van het verhaal, maar je voorkomt dat er wordt doorgerekend met foutieve gegevens.
Als er 2 "bitsjes omvallen" (of een even aantal), dan wordt dit over het hoofd gezien, en het systeem draait vrolijk verder, met dezelfde gevolgen als bij het eerste type geheugen.
3. ECC-geheugen, 11 bits worden gebruikt om 1 byte op te slaan. De 3 extra bits worden gebruikt om een checksum over de 8 "echte bits" op te slaan.
Als nu 1 "bitje omvalt", dan wordt dit niet alleen gedetecteerd en gerapporteerd, maar kan worden teruggerekend WELK bitje fout is, en dit kan worden gecorrigeerd.
Als 2 "bitjes omvallen", dan wordt dit gedetecteerd, maar aangezien voor reparatie nu te weinig informatie bekend is, wordt het systeem gestopt.
Als er meerdere "bitjes omvallen", dan is het resultaat onvoorspelbaar, er kan foutief worden gerepareerd, maar meestal zal ook het systeem worden gestopt.
Is het zijn geld waard ? Dat hangt van het belang van het systeem af. Serieuze servers (zeker met grote hoeveelheden geheugen) gebruiken dit altijd, omdat eventuele onverwachte downtime altijd duurder is dan de extra kosten van ECC-geheugen.
Op mijn huidige project hebben we database-servers die uit een aantal losse systemen zijn opgebouwd. Bijna elke week vindt in tenminste 1 systeem een error-correctie plaats en die wordt gelogd. Zolang dit niet op hetzelfde systeem en op dezelfde SIMM is, wordt dit opgemerkt, maar niet gezien als reden om geheugen of bord te gaan vervangen, met de vele MBytes aan RAM in die systemen zijn incidentele bit-fouten een zekerheid.
1. Geheugen zonder enige controle, 8 bits worden gebruikt om een byte op te slaan.
Als er een "bitje omvalt", dan wordt dit niet gedetecteerd, maar de computer loopt gewoon door alsof wat in die betreffende byte goed is. Dat kan betekenen dat je data corrupt zijn (leuk voor financiele programma's), of dat je programma of operating system in de war raakt vanwege een foute instructie (leidt meestal tot crashende programma's of bleu-screen/panics).
2. Geheugen met parity, 9 bits worden gebruikt om 1 byte op te slaan. Alle 1-bits in de byte worden opgeteld, en het 9e bit wordt zo gezet dat er altijd een even aantal bits is.
Als er nu 1 "bitje omvalt" (of een oneven aantal), dan kan dit worden gedetecteerd, en de computer kandit melden en de zaak stilzetten. Voor je programma's is dit nog steeds het einde van het verhaal, maar je voorkomt dat er wordt doorgerekend met foutieve gegevens.
Als er 2 "bitsjes omvallen" (of een even aantal), dan wordt dit over het hoofd gezien, en het systeem draait vrolijk verder, met dezelfde gevolgen als bij het eerste type geheugen.
3. ECC-geheugen, 11 bits worden gebruikt om 1 byte op te slaan. De 3 extra bits worden gebruikt om een checksum over de 8 "echte bits" op te slaan.
Als nu 1 "bitje omvalt", dan wordt dit niet alleen gedetecteerd en gerapporteerd, maar kan worden teruggerekend WELK bitje fout is, en dit kan worden gecorrigeerd.
Als 2 "bitjes omvallen", dan wordt dit gedetecteerd, maar aangezien voor reparatie nu te weinig informatie bekend is, wordt het systeem gestopt.
Als er meerdere "bitjes omvallen", dan is het resultaat onvoorspelbaar, er kan foutief worden gerepareerd, maar meestal zal ook het systeem worden gestopt.
Is het zijn geld waard ? Dat hangt van het belang van het systeem af. Serieuze servers (zeker met grote hoeveelheden geheugen) gebruiken dit altijd, omdat eventuele onverwachte downtime altijd duurder is dan de extra kosten van ECC-geheugen.
Op mijn huidige project hebben we database-servers die uit een aantal losse systemen zijn opgebouwd. Bijna elke week vindt in tenminste 1 systeem een error-correctie plaats en die wordt gelogd. Zolang dit niet op hetzelfde systeem en op dezelfde SIMM is, wordt dit opgemerkt, maar niet gezien als reden om geheugen of bord te gaan vervangen, met de vele MBytes aan RAM in die systemen zijn incidentele bit-fouten een zekerheid.
The number of things that Arthur couldn't believe he was seeing was fairly large