Speichermodule: Parity und ECC

10.12.1999 von Christian Vilsbeck
Schon ein falsch ausgelesenes Bit unter Millionen kann verheerende Folgen haben. Rechnerabsturz, Datenverlust und falsche Werte sind nicht nur ärgerlich sondern verursachen eventuell auch Kosten. Verfahren zur Erkennung und Korrektur von Fehlern sorgen für Sicherheit.

Die Stabilität von DRAMs ist durch die ausgereifte Technik sehr hoch. Findet der Betrieb innerhalb der vom Speicherhersteller spezifizierten Bedingungen statt, ist die Wahrscheinlichkeit für ein Kippen von einzelnen Datenbits eigentlich gering. Trotzdem kann es durch äußere Einflüsse vorkommen, dass aus einer logischen Eins eine Null wird und umgekehrt. Im Fachjargon nennt man ein ungewolltes Bit-Kippen einen Soft Error. Zu diesen reparablen Fehlern können noch Defekte auf physikalischer Ebene hinzu kommen. Neben Alterungserscheinungen durch Diffusion führen meist Spannungsspitzen oder elektrostatische Aufladungen bei unsachgemäßer Handhabung zu irreparablen Defekten bei Speicherbausteinen.

Nach einer technischen Studie des amerikanischen Speicherherstellers Micron entsteht bei einem 16 MByte Speichermodul nur alle 16 Jahre ein Soft Error. Hochgerechnet auf ein 256-Mbyte-Modul entspricht das einem Fehler pro Jahr.

Auslöser für diese Datenverfälschung sind neben Defekt, Spannungsschwankungen und elektromagnetischen Feldern auch radioaktive Strahlung. Spuren von natürlichen radioaktiven Isotopen wie Uran und Thorium sind in den Kunststoffen der IC-Gehäuse enthalten. Beim Zerfall der Isotope über die Zeit senden sie Alpha-Partikel aus - den Kern des Helium-Atoms. Diese Alpha-Strahlung kann durch ihre kinetische Energie die Ladung von Speicherzellen verändern oder die Leseverstärkerschaltkreise des DRAMs bei einem Zugriff stören. Fehlerhaft ausgelesene Daten sind die Folge. Neben Alpha-Strahlung kann auch hoch energiereiche kosmische Strahlung - ausgelöst durch Supernovas - die Ladung einer Speicherzelle beeinflussen.

Um falsch ausgelesene und damit fehlerhaft geschriebene Daten durch einen Fehler im Speicher zu verhindern, gibt es verschiedene Verfahren. Eine einfache Technik zum Erkennen von Bitfehlern bei Speichermodulen ist die Paritätsprüfung. Mehr Sicherheit bei der Fehlererkennung bietet das ECC-Verfahren, das zusätzlich eine Fehlerkorrektur ermöglicht. Speichermodule unterscheidet man nach Non-Parity-, Parity- und ECC-Modulen. Obwohl Non-Parity-Module keine Fehlererkennung bieten, sind sie weit verbreitet. Der Grund sind die geringeren Kosten, weil im Gegensatz zu Parity- und ECC-Lösungen kein zusätzlicher Speicher benötigt wird.

Parity

Unterstützt die Speichersteuerung (Chipsatz) und das Speichermodul die Paritäts-Technik, dann erfolgt bei jedem Speichervorgang eine zusätzliche Prüfsummenbildung. Jedem Datenbyte (8 Bit) wird beim Schreiben ein eigenes Paritätsbit zugeordnet und im DRAM mit abgespeichert. Beim Lesen eines Datenbytes erfolgt durch die Speichersteuerung über ein Protokoll dann der Vergleich mit dem zugehörigem Paritätsbit. Damit lässt sich ein umgekipptes Bit beim Lesen sofort erkennen. Es gibt zwei Arten von Paritätsprotokollen: ungerade und gerade Parität. Beide Verfahren funktionieren nach dem selben Prinzip und unterscheiden sich nur in ihren Attributen. In der folgenden Tabelle sehen Sie den Ablauf der Protokolle beim Schreiben und Lesen von Daten:

Tabelle 1: Protokoll-Ablauf beim Lese/Schreibvorgang mit Paritätsprüfung

Ablauf

Ungerade Parität

Gerade Parität

Ermittlung der Parität

Besteht Datenbyte aus gerader Anzahl von Einsen, ist das zugehörige Paritätsbit 1. Bei ungerader Anzahl erhält es den Wert 0. Der Vorgang erfolgt über die Speichersteuerung.

Besteht Datenbyte aus gerader Anzahl von Einsen, ist das zugehörige Paritätsbit 0. Bei ungerader Anzahl erhält es den Wert 1. Der Vorgang erfolgt über die Speichersteuerung.

Schreibvorgang

Speicherung der acht Datenbits und des korrespondierenden Paritätsbit im DRAM.

siehe links

Lesevorgang

Erneute Prüfsummenbildung beim Lesen und Vergleich mit dem abgespeicherten Paritätsbit. Daten gültig bei Übereinstimmung. Bei ungleicher Prüfsumme erfolgt Fehlermeldung durch die Speichersteuerung.

siehe links

Der Nachteil der Paritätsprüfung ist, dass sie zwar Fehler erkennen, aber nicht korrigieren kann. Das Verfahren arbeitet zudem nur zuverlässig, wenn ein einzelnes Bit umkippt. Kippen dagegen mehrere Bits in einem Datenbyte um, so können die Fehler eventuell verdeckt bleiben. Beispiel mit gerader Paritätsprüfung: Enthält ein Datenbyte vier Einsen (gerade Anzahl), so ist das zugehörige Paritätsbit Null. Nach dem Schreiben von Datenbyte und Paritätsbit in das DRAM kippen zwei von den acht Bit um. Beim späteren Lesen ermittelt die Speichersteuerung aber wieder eine gerade Anzahl von Einsen und erkennt das Datenbyte beim Vergleich mit dem Paritätsbit als gültig an. Die Wahrscheinlichkeit, dass ein Zwei- oder Mehr-Bit-Fehler passiert, ist allerdings sehr gering.

Fake Parity

Speichermodule mit Parität sind im Gegensatz zu Non-Parity-Modulen teurer. Parity-Module benötigen pro Byte neun Bit und somit mehr Speicher bei gleicher Kapazität. Die Module besitzen ein zusätzliches DRAM-IC, dass nur der Paritätsspeicherung dient. Die Preise pro Modul steigen so um gut zwölf Prozent.

Um Kosten zu sparen, verwenden manche Hersteller einen billigeren Fake-Parity-Chip. Die Idee hinter den Modulen mit dem Pseudo-Chip ist, Mainboards, die eine Paritätsprüfung dringend verlangen, billiger bestücken zu können. Mit der Verkaufsargumentation, dass die Paritätsprüfung nicht dringend benötigt sei, ergibt sich so ein Wettbewerbsvorteil.

Die Funktion der Fake-Parity-Module ist einfach: Der Pseudo-Chip generiert einfach eine Eins oder Null zu dem Zeitpunkt, wenn die Daten gelesen werden - entsprechend der Quersumme des Datenbyte. Das Modul liefert so der Speichersteuerung immer ein passendes Paritätsbit und täuscht die Richtigkeit der Daten vor. Die Speichersteuerung kann so zwischen einen Parity- und Fake-Parity-Speichermodul nicht unterscheiden.

Die hauptsächlich auf SIMMs verbauten Fake-Parity-Chips sind nur schwer gegenüber normalen DRAM-ICs zu identifizieren. Eine Möglichkeit der Erkennung besteht in der Beschriftung der Bausteine: Viele der Fake-Parity-Chips sind mit den Zeichenfolgen BP, VT, GSM oder MPEC markiert. Eine andere Möglichkeit ist der Test des Moduls mit einem SIMM-Tester, der die Funktion der Pseudo-Erkennung aber speziell unterstützen muss.

ECC

Neben der einfachen Fehlererkennung gibt es in der Elektronik eine Vielzahl von Fehlerkorrektur-Algorithmen. Ein Beispiel ist die Fehlerkorrektur bei CD-ROM-Laufwerken. Diese Algorithmen haben eines gemeinsam: Sie fordern eine zusätzliche Anzahl von Bits, die zu den eigentlichen Daten dazugehören. Die Bits dienen nur der Überprüfung und Korrektur der Daten, bevor diese zur Weiterverarbeitung ihrem Ziel zugeführt werden. Ein Algorithmus, der sich speziell für das Überprüfen und Korrigieren von Ein-Bit Soft-Errors in großen Speicherfeldern eignet, ist der Hamming-Code. Der Code kann zudem Zwei-Bit-Fehler erkennen, aber nicht korrigieren. Dieses ECC-Verfahren benötigt bei 32-Bit-breiten Daten zusätzliche sieben Check-Bits. Bei 64-Bit-breiten DIMMs sind für die Fehlerkorrektur acht Bits nötig. ECC-fähige DIMMs besitzen deshalb eine Datenbreite von insgesamt 72 Bit. Der Datenbus zwischen DIMM und Chipsatz ist ebenfalls 72 Bit breit.

Wenn der Prozessor eines 64-Bit-Rechnersystems seine Daten in das DRAM schreibt, berechnet der ECC-Controller der Speichersteuerung acht ECC-Bits und hängt diese an die Daten an. Das nunmehr 72-Bit-breite Datum wird im DIMM abgespeichert. Während eines Lesevorgangs berechnet der Chipsatz die ECC-Bits von den eingelesenen 64 Datenbits neu. Der Controller vergleicht dann den neu berechneten Code mit den ebenfalls eingelesenen Fehlercode, der beim Schreiben generiert wurde. Bei Übereinstimmung der Codes ist das 64-Bit-Datenwort korrekt. Unterscheiden sich die Codes, lässt sich die Stelle, an der ein Bit gekippt ist, genau lokalisieren. Die Speichersteuerung ändert dann wieder das Attribut des gekippten Bit zu seinem ursprünglichen Wert.

Nach Studien sind zirka 98 Prozent aller Speicherfehler Ein-Bit-Fehler. So eignet sich das ECC-Verfahren besonders gut für Bereiche, die eine hohe Datenintegrität erfordern. Zum Vergleich: Innerhalb von drei Jahren produziert ein 32-Mbyte-Paritäts-Speicher die gleiche Fehleranzahl wie ein 1-Gbyte-großer ECC-Speicher.

Das gegenüber normalen Speicher teurere ECC-DRAM findet hauptsächlich in Servern und Workstations seinen Einsatz, wo die Ausfallkosten bei einem Speicherfehler teurer wiegen als die erhöhten Anschaffungskosten. (cvi)