Speicherbausteine Fehler korrekt korrigieren

In modernen Embedded-Systemen hat die Fehlerkorrektur Einzug gehalten und wird von Herstellern zunehmend als Verkaufsargument eingesetzt. Denn sie bietet zusätzlichen Schutz gegen Einzelbitfehler, verursacht durch Technologieschwächen der Speicherkomponenten wie auch durch Störungen bei der Datenübertragung oder durch Strahlungseinflüsse. Nur wenigen Anwendern sind jedoch Funktion, Leistungsfähigkeit und die Grenzen der Fehlerkorrektur vertraut. Noch schwieriger ist es, ihren Nutzen einzuschätzen.

Geht es um die Fehlerkorrektur in Speichersystemen, fällt sofort das Kürzel ECC (Error Correction Code) als Oberbegriff für fehlerkorrigierende Codes. Korrekt lautet die Abkürzung für die in PCs verwendete Funktion allerdings EDC (Error Detection and Correction - Fehlererkennung und -korrektur) oder noch genauer SECDED (Single Error Correction, Double Error Detection - Einzelbitfehlerkorrektur, Doppelbitfehlererkennung). Da sich ECC jedoch als feststehender Begriff eingebürgert hat, wollen wir ihn hier auch verwenden. Die Notwendigkeit einer Einzelbit-Fehlerkorrektur kam erstmals bei Großrechnern auf, bei denen Speicherinformationen durch Alphateilchen verfälscht wurden.

Diese Strahlung entspringt dem Zerfall geringster Spuren radioaktiven Materials in der Vergussmasse von Speicherbausteinen, die aus Harz und mineralischen Füllstoffen besteht. Da zur Zeit der Großrechner die Strahlungsquellen sehr dicht an den Speicherkapazitäten der DRAM-Zellen lag, reichte die Alphastrahlung aus, um die Zellinformation zu korrumpieren. Diese so genannte Soft-Error-Rate lag damals bei DRAM-Bausteinen um Zehnerpotenzen über der harter Defekte. Hinzu kam, dass sie sich aufgrund ihrer völlig zufälligen Natur nicht durch schärfere Ausgangstests reduzieren ließen. Dadurch lag die MTBF (Mean Time Between Failure - mittlere Zeit zwischen zwei Fehlern) bei Servern mit hohem Speicherausbau in einem völlig unakzeptablen Bereich, wenn keine Fehlerkorrektur implementiert war.

Durch den Übergang zum BGA-Gehäuse reduzierte sich die fehlerverursachende Vergussmasse stark. Bei modernen Speicherbausteinen wird die Soft-Error-Rate weniger durch Alphateilchen, sondern vermehrt durch kosmische Strahlung verursacht. Diese größtenteils aus schnellen Protonen bestehende Höhenstrahlung beeinflusst die Speicherbausteine entweder während des Transports von DRAM-Produkten als Luftfracht oder beim Betrieb von Systemen in größeren Höhen.

Die positiv geladenen Teilchen werden in die Isolationsschicht der Auswahltransistoren injiziert und verändern dort die Einsatzspannung. Die so geschädigte Zelle kann dann vorübergehend keine vollständige Zellinformation mehr speichern und fällt aus. Als Lösung für diese Einzelbitfehler wurde ein Mechanismus entwickelt, der ein verfälschtes Datenbit erkennen und korrigieren kann. Damit lässt sich verhindern, dass Strahlung oder Technologieprobleme Dateninhalte unbemerkt verändern.

Funktionsweise der ECC

Ein Standarddatenwort eines DRAM-Busses und damit die Organisation eines Speichermoduls hat eine Breite von 64 Bit. Wird Fehlerkorrektur unterstützt, so generiert der Speichercontroller beim Schreiben in den Speicher durch Paritätsbildung jeweils unterschiedlicher Datenbits zusätzliche acht Paritätsbits, die so genannten Checkbits. Diese schreibt der Speichercontroller zusammen mit den Nutzdatenbits in ein 72 Bit breites Speichermodul (Bild 1).

Beim Lesen holt sich der Controller die abgelegten 64 Nutzdatenbits und die acht dazugehörigen Checkbits. Mit dem identischen Algorithmus wie beim Schreiben erzeugt die Fehlerkorrektureinheit einen zweiten Satz von Checkbits und vergleicht diese mit den gelesenen (Bild 2). Das Ergebnis des bitweisen Vergleichs der acht neuen und acht gespeicherten Checkbits nennt sich Syndrom. Es zeigt an, ob ein Bit verfälscht wurde und wenn ja, welches.

Ein einfaches Invertieren dieses Bits stellt dann die ursprüngliche Information wieder her. Das Auftreten eines Fehlers wird in Statusregistern abgelegt, die von Servicetechnikern ausgewertet werden können. So können diese einen defekten Speicher austauschen, bevor er zu Systemabstürzen führt. Es gibt vielfältige Varianten, um Checkbits zu erzeugen. Moderne Codes können jeden beliebigen Fehler eines einzelnen Datenbits erkennen und korrigieren, und jede Kombination von zwei fehlerhaften Bits sowie eine hohe Prozentzahl weiterer Mehrfachfehler erkennen. Mit sehr ausgeklügelten Codes können die neuesten Speichercontroller einen Ausfall einzelner bis hin zu allen Datenleitungen einer einzelnen Speicherkomponente erkennen und korrigieren.

Dieses Verfahren nennt sich »Chipkill« (SDDC, Single Device Data Correction - Korrektur eines Bausteinausfalls) und ist die mächtigste Form von Fehlerkorrektur in kommerziell erhältlichen Plattformen. Da für die Unterstützung von ECC ein 72 Bit breiter Speicherbus notwendig ist, sind bei Modulen aus 8-Bit-organisierten Speicherkomponenten neun anstelle von acht Chips nötig. Auch der Speichersockel muss genügend Platz für die elf zusätzlichen Signale bieten (achtmal DQ sowie DQS, DQS# und DM). Die Mehrkosten für die hinzukommenden Speicherbausteine, der höhere Aufwand auf dem Motherboard und die zwar geringen, aber doch messbaren Leistungseinbußen durch die ECC-Funktion haben bisher den breiten Einsatz in Desktop- und Notebook-Systemen verhindert, wo der Systempreis eines der Hauptkaufkriterien ist.

Anders sieht es bei Servern und Workstations aus, wo sehr häufig ECC-Module eingesetzt werden, um die Ausfallsicherheit zu erhöhen. Mit der Einführung von leistungsstarken Notebooks als Ersatz für Workstations gibt es jetzt aber auch bei Systemen mit kleinen Formfaktoren einen Bedarf an Ausfallsicherheit. Dieser Bedarf hat zur Entwicklung von speziellen, strom-sparenden Notebook-Speichercontrollern mit ECC-Funktion geführt. Für die Embedded-Computing-Industrie ist dies ein willkommener Fortschritt, um bei ihren kritischen Anwendungen höhere Datensicherheit und niedrigere Verlustleistung miteinander zu verbinden.

Einzelbitfehler in Embedded Systemen

Die Fehlerkorrektur, wie sie bei Embedded Systemen implementiert ist, kann nur Einzelbitfehler korrigieren. Dabei ist es irrelevant, ob es sich um eine einzelne Zelle, eine Bitleitung, einen Datenpin oder einen Steckerkontakt handelt, solange die Auswirkungen pro Datenwort nur ein Bit betreffen. Der Ausfall eines Steuersignals oder eines ganzen Chips lässt sich durch diese Form der ECC nicht beheben. Gerade bei Embedded Systemen, die häufig unter extremen Temperaturbedingungen arbeiten, sind Einzelbitfehler durch schwache Zellen die häufigste Fehlerursache, gefolgt von hochohmigen Lötstellen auf Datenleitungen.

Aufgrund der kompakten Bauweise, der geringen Kühlung und des Einsatzes in Industrieanlagen können die Speichermodule bis an ihre Spezifikationsgrenze aufgeheizt werden. Unter solchen Bedingungen verlieren Speicherzellen ihre Zellinformationen besonders schnell, deshalb muss jede Zellinformation alle 64 ms wieder aufgefrischt werden. Besonders schwache Zellen, wie sie im normalen Fertigungsprozess immer wieder auftreten, werden im Gut-Fall während des Tests beim Speicherchiphersteller erkannt und durch fehlerfreie, redundante Zellen ersetzt. Dies setzt voraus, dass das Testprogramm diese schwachen Zellen entdeckt.

Schlüpft eine solche Zelle unbemerkt durch, so kann sie völlig unauffällig im normalen Temperaturbereich funktionieren, fällt aber plötzlich aus, wenn das System unter Volllast bis an die Spezifikationsgrenze erwärmt wird. Eine andere Besonderheit von Embedded Systemen ist der Einsatz in Fabrikationshallen oder Transportsystemen, wo erhöhte Vibrationen und mechanische Stöße auf das System einwirken. Hier können schwache Lötverbindungen aufgehen oder Steckerkontakte kurzzeitig hochohmige Übergänge bilden und einzelne Datenleitungen unterbrochen werden.

Der Einfluss eines einzelnen defekten Bits auf ein Industriesystem kann von vernachlässigbar bis zu fatal reichen: Ein verfälschtes Pixel in einem medizinischen Bild hat meist keine große Bedeutung, ein falsches Vorzeichenbit in einer Robotersteuerung kann jedoch zur Zerstörung von Werkzeugen führen oder die Berechnung der Strahlungsdosis bei einer radiologischen Behandlung verfälschen. Das kann je nach Position des Bits lebensbedrohliche Folgen haben. Die Beispiele zeigen, dass der Nutzen der Fehlerkorrektur anwendungsabhängig zu beurteilen ist.

Fehlerkorrektur bei kleinem Formfaktor

Kann man in der Anwendung Datenverfälschung tolerieren oder ist ein Systemabsturz zwar unschön, aber nicht mit zu hohen materiellen oder immateriellen Folgekosten verbunden, kann man auf ECC verzichten. Das ist in der Regel der Fall etwa bei Informationssystemen oder bildverarbeitenden Applikationen. Handelt es sich jedoch um medizinische Behandlungsgeräte, Fertigungssteuerungen, Zahlungssysteme oder Spielautomaten, wo es um Geld oder Gesundheit geht, ist die zusätzliche Sicherheit durch ECC auf jeden Fall ratsam. Für solche Anwendungen bieten sich die neuen DDR3-SO-UDIMMs an.

Nicht größer als die bekannten SODIMMs, aber mit 72 Bit breitem Datenbus, ermöglichen sie die ECC-Unterstützung auf begrenztem Raum. Sie benutzen den gleichen Sockel wie SODIMMs, haben jedoch aufgrund der höheren Anzahl an Signalen eine andere Steckerbelegung und sind somit nicht pinkompatibel. Damit wird der Embedded-Markt zwangsläufig zwei Produktlinien anbieten müssen: einerseits kostengünstigere Boards für herkömmliche SODIMMs, andererseits hochzuverlässige Plattformen mit Unterstützung für SOUDIMMs mit ECC.

Als Produkt gemäß offizieller JEDEC-Spezifikation und mit Unterstützung durch eine Vielzahl an modernen Speichercontrollern ist das SOU-DIMM-Modul keine proprietäre Lösung mehr, sondern ein verfügbarer und immer häufiger eingesetzter Standard zu wettbewerbsfähigen Preisen. So bietet Swissbit beispielsweise DDR3-SO-UDIMMs in Größen von 1 GByte bis 4 GByte und Geschwindigkeiten bis DDR3-1333 an, sowohl im kommerziellen (0 °C bis +70 °C) als auch im industriellen Temperaturbereich (-40 °C bis +85 °C).

Über den Autor:

Ulrich Brandt ist Head of Business Unit DRAM Products bei Swissbit