ECC - Error Correcting Code
ECC ist ein Fehlerkorrektur-Verfahren für Speicher, bei dem redundante Informationen erzeugt werden, um Datenfehler erkennen und korrigieren zu können. Das Ziel ist, die statistische Bitfehlerrate zu senken. ECC kann 1-Bit-Fehler sofort korrigieren. 2-Bit-Fehler werden erkannt, aber nicht korrigiert. 3-Bit-Fehler können nicht alle erkannt werden. Dafür gibt es Speicherschutz-Verfahren, die deutlich mehr können.
ECC-Speicher ist eine technische Maßnahme, um die Zuverlässigkeit (Reliability), Verfügbarkeit (Availability) und Wartbarkeit (Serviceability) zu verbessern (kurz RAS). Aber, ECC verringert den maximale nutzbaren Speicherplatz oder kostet Rechen- und Übertragungsleistung. Die Fehlerkorrektur erfolgt über Redundanz und verbraucht somit Speicherplatz oder Übertragungskapazität.
Und nur mit einem ECC-Speicher wird ein handelsüblicher PC noch nicht zu einer hochverfügbaren Maschine. Dazu bedarf es meist mehrerer Maßnahmen. ECC ist nur eine davon. Typischer Weise kommt ECC-Speicher in Servern und Workstations vor. Eher selten in PCs.
ECC-Speicher
Man dürfte kaum annehmen, dass in einem geschlossenen System, wie in einem Computer ein Datenfehler auftreten kann. Warum sollte ECC-Speicher hier Sinn machen? Doch tatsächlich erweisen sich manche Speichermodule und Motherboards als besonders anfällig für Datenfehler. Die Wahrscheinlichkeit von Datenfehlern in Speichern wächst mit der Größe des Speichers, aber auch mit dessen mittlerer Auslastung. Fehler im Speicher können Daten verfälschen. Fehlerhafte Daten und Berechnungen, sowie Abstürze können die Folge sein.
Obwohl ECC-Speicher vor Datenfehlern schützt, macht dessen Einsatz in einem privat genutzten Computer wenig Sinn. Wenn der physische Speicher nur zu einem Bruchteil genutzt wird und das System nur wenige Stunden am Tag läuft, dann wird dort nur selten ein Datenfehler auftreten. Ganz anders sieht es in Servern und Workstations aus. Hier ist der Arbeitsspeicher erheblich größer und wird intensiver genutzt.
ECC-Speicherschutz
Ein funktionierender ECC-Speicherschutz bedarf der Zusammenarbeit von 4 Komponenten. Der Speichercontroller muss den jeweiligen ECC-Algorithmus beherrschen. Zum Einsatz kommen spezielle ECC-Speichermodule, die natürlich auch teurer sind, als normale Speichermodule. Das Motherboard muss 72 Datenleitungen je Speicherkanal bereitstellen. 8 mehr als normale Speicherkanäle. Und das BIOS muss den ECC-Speicherschutz des Speichercontrollers einschalten.
Der ECC-Speicherschutz besteht darin, dass der Speichercontroller vor dem Schreiben zu jedem 8-Byte-Datenwort ein zusätzliches Byte an redundante Daten erzeugt. Dabei entsteht ein 9-Byte-Datenwort. Das bedeutet, dass ein ECC-Speichermodul breiter sei muss, um die zusätzlichen Daten speichern zu können. Ein ECC-Speichermodul (DIMM) hat 12,5 Prozent mehr Speicherplatz und zusätzlich 8 Datenleitungen. Normale DIMM-Speichermodule haben 64 Datenleitungen. Bei ECC-DIMMs sind es 72 Datenleitungen.
ECC-Algorithmus
Es gibt nicht einen ECC-Algorithmus. Es gibt unterschiedliche und patentierte Algorithmen mit verschiedenen Eigenschaften. Der ECC-Algorithmus ist fest in den Speichercontroller verdrahtet, um einen Geschwindigkeitsverlust zu vermeiden. Bei Lesezugriffen prüft der ECC-Algorithmus anhand der redundanten Daten, ob sich die Nutzdaten verändert haben. Einzelbitfehler kann der Speichercontroller sicher erkennen und korrigieren. Das System läuft dabei normal weiter. 2-Bit-Fehler werden erkannt, aber nicht korrigiert. 3-Bit-Fehler können nicht alle erkannt werden. Dafür gibt es Speicherschutz-Verfahren, die deutlich mehr können.
Warum ist ECC für Arbeitsspeicher eigentlich notwendig?
Immer dann, wenn Datenfehler größere Auswirkungen haben, wenn Arbeitsspeicher über einen längeren Zeitraum intensiv genutzt (viele Schreib- und Lesezugriffe), dann ist der Einsatz von ECC-RAM ratsam. Typischerweise bei Storage-Systemen oder parallel arbeitenden virtuellen Maschinen. In der Regel auch bei Systemen, die rund um die Uhr arbeiten. ECC führt hier zu höherer Zuverlässigkeit.
Bei typischen Arbeitsplatz-Computern, wie Desktops oder Notebooks, kann auf ECC-RAM verzichtet werden. Aufgrund der geringeren Rechenlast, wird hier auch der Arbeitsspeicher weniger genutzt. Es treten weniger Fehler auf. Meist haben diese Fehler auch keine Auswirkung. Vielleicht bleibt das System hängen oder stürzt ab.
Systeme ohne ECC erschweren allerdings auch die Suche nach der Fehlerursache. Zum Beispiel defekte Speicherriegel. Bei ECC wird jeder Speicherfehler vom Betriebssystem protokolliert und kann später zu Diagnosezwecken ausgewertet werden.
Dazu eine kleine Anekdote: Das National Laboratory in Los Alamos (New Mexico, USA) hat sich bei IBM einmal beschwert, dass bei ihren Kollegen in Livermore (Kalifornien, USA) bei den gleichen Rechnern viel weniger Fehler auftreten.
Dazu muss man wissen, dass Los Alamos auf ca. 2200 m Höhe liegt, während Livermore in der Nähe von San Francisco etwa auf Meereshöhe liegt. Das bedeutet, dass in Los Alamos auf ca. 2200 m Höhe die kosmische Neutronenstrahlung fünfmal stärker ist als auf Meereshöhe. Im Flugzeug ist die Stärke der Strahlung sogar hundert mal so hoch.
Generell ist die Fehlerwahrscheinlichkeit in Prozessoren und Speicher gering. In der Regel hat man es nur mit Umgebungsstrahlung zu tun, die Fehler auslösen können. In Los Alamos sieht das natürlich ganz anders aus. Durch kleinere Halbleiterstrukturen hat die Empfindlichkeit insbesondere von Speicher, Caches und Registern zugenommen. Um Fehler abzufangen wird deshalb auf die Fehlerkorrektur per ECC gesetzt. Notwendig ist das in Systemen, die sehr viele Daten verarbeiten und über einen großen Arbeitsspeicher verfügen. In Großrechnern können hunderte Fehlerkorrekturen am Tag auftreten.
Vor diesem Hintergrund wundert es nicht, dass Intel Patente für Strahlungsdetektion hält und entsprechende Strahlungsdetektoren in Chips einbaut.
Anwendungen von ECC
- Arbeitsspeicher bei PCs und Servern
- Prozessor-Caches
- Flash-Speicher
- Festplatten