DE60015753T2 - System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern - Google Patents

System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern Download PDF

Info

Publication number
DE60015753T2
DE60015753T2 DE60015753T DE60015753T DE60015753T2 DE 60015753 T2 DE60015753 T2 DE 60015753T2 DE 60015753 T DE60015753 T DE 60015753T DE 60015753 T DE60015753 T DE 60015753T DE 60015753 T2 DE60015753 T2 DE 60015753T2
Authority
DE
Germany
Prior art keywords
bits
error correction
error
code
global
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE60015753T
Other languages
English (en)
Other versions
DE60015753D1 (de
Inventor
Robert Cypher
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE60015753D1 publication Critical patent/DE60015753D1/de
Publication of DE60015753T2 publication Critical patent/DE60015753T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Diese Erfindung bezieht sich auf Fehlerkorrektur in elektronischen Systemen, insbesondere auf Systeme, die Fehlerkorrekturcodes zur leichteren Korrektur von Bitfehlern, zum Beispiel aufgrund von Bauteilfehlern, einsetzen.
  • Beschreibung der verwandten Technik
  • Fehlercodes werden allgemein in elektronischen Systemen zum Erkennen und Korrigieren von Datenfehlern verwendet, wie Übertragungsfehler oder Speicherfehler. Zum Beispiel können Fehlercodes zum Erkennen und Korrigieren von Fehlern in Daten verwendet werden, die über Telefonleitungen, einen Radiosender oder einen CD-Laser übertragen werden. Fehlercodes können zusätzlich verwendet werden, Fehler zu erkennen und zu korrigieren, die mit Daten verbunden sind, die im Speicher von Computersystemen gespeichert werden. Eine übliche Verwendung von Fehlercodes ist das Erkennen und Korrigieren von Fehlern bei Daten, die auf dem Datenbus eines Computersystems übertragen werden. In einem solchen System können Fehlerkorrekturbits oder Prüfbits für die Daten vor ihrer Übertragung oder Speicherung erzeugt werden. Wenn die Daten empfangen oder abgerufen werden, können die Prüfbits verwendet werden, Fehler in den Daten zu erkennen und zu korrigieren.
  • Fehler von Bauteilen bzw. Komponenten sind eine weit verbreitete Fehlerquelle in elektrischen Systemen. Fehlerhafte Komponenten können fehlerhafte Speicherchips oder fehlerhafte Datenpfade umfassen, die zwischen Einrichtungen in einem System zur Verfügung stehen. Fehlerhafte Datenpfade können zum Beispiel von fehlerhaften Anschlüssen, fehlerhaften Datenpfaden oder fehlerhaften Drähten stammen.
  • Hamming-Codes sind ein weit verbreiteter Typ von Fehlercode. Die Prüfbits in einem Hamming-Code sind Paritätsbits für Teile von Datenbits. Jedes Prüfbit stellt Parität für eine einzige bzw. eindeutige Untermenge von Datenbits zur Verfügung. Wenn ein Fehler auftritt, (d.h. ein oder mehr Datenbits den Zustand wechseln), werden ein oder mehr der Prüfbits bei dem erneuten Erzeugen auch den Zustand wechseln (unter der Annahme, der Fehler ist innerhalb der Klasse von Fehlern, die durch den Code abgedeckt wird). Durch Feststellen der spezifischen Bits der erneut erzeugten Prüfbits, die den Zustand wechselten, kann die Lage bzw. Position des Fehlers innerhalb der Daten bestimmt werden. Wenn zum Beispiel ein Datenbit den Zustand wechselt, bewirkt dieses Datenbit, daß ein oder mehrere der erneut erzeugten Prüfbits den Zustand wechseln. Da jedes Datenbit zu einer einzigen Gruppe von Prüfbits beiträgt, identifizieren die modifizierten Prüfbits das Datenbit, das den Zustand wechselte. Der Fehler kann durch Invertieren des als fehlerhaft identifizierten Bits korrigiert werden.
  • Eine weit verbreitete Verwendung von Hamming-Codes ist das Korrigieren einzelner Bitfehler innerhalb einer Gruppe von Daten. Allgemein gesprochen muß die Anzahl von Prüfbits groß genug sein, so daß 2k – 1 größer oder gleich n + k ist, wobei k die Anzahl der Prüfbits und n die Anzahl von Datenbits ist. Dementsprechend werden typischerweise sieben Prüfbits zum Implementieren eines Einzelfehler korrigierenden Hamming-Code für 64 Datenbits benötigt. Ein Einzelfehler korrigierender Hamming-Code ist in der Lage einen einzelnen Fehler zu erkennen und zu korrigieren.
  • Die 13 illustrieren ein Beispiel eines Systems, das einen Hamming-Code zur Einzelfehlerkorrektur (single-error correction, SEC) verwendet. In diesem Beispiel werden vier Datenbits (D4, D3, D2 und D1) durch die Verwendung dreier Prüfbits (P1, P2 und P3) geschützt. Der Paritätsgenerator 10 (1) wird verwendet, um den Datenblock zu kodieren, der die Datenbits und die Prüfbits enthält. Der Kodiervorgang wird vor dem Speichern oder Kommunizieren der Daten ausgeführt. 2 zeigt eine Zuweisung von Datenbits zur Berechnung der Prüfbits. In diesem Beispiel wird das Prüfbit P1 durch ein XOR (exklusives ODER) der binären Werte in D4, D3 und D1 erzeugt. Auf ähnliche Weise wird das Prüfbit P2 durch ein XOR der binären Werte in D4, D2 und D1 erzeugt, und das Prüfbit P3 wird durch ein XOR der binären Werte in D3, D2 und D1 erzeugt. 3 zeigt die Bitpositionen und den entsprechenden Inhalt dieser Positionen innerhalb des kodierten Datenblocks. Der Datenblock, der die Datenbits und die erzeugten Prüfbits enthält, kann dann in einem Speicherchip gespeichert oder über einen Datenkommunikationspfad kommuniziert werden.
  • Am Empfangspunkt wird der Datenblock abgerufen und dekodiert. Der Dekodierungsvorgang umfaßt das Durchführen einer Gültigkeitsprüfung auf dem empfangenen Wort und das Ausführen einer Fehlerkorrekturtechnik, wenn ein Fehler erkannt wurde. Zum Überprüfen, ob ein Fehler beim Speichern (oder Übertragen) des Datenblocks auftrat, werden die Prüfbits P1, P2 und P3 effektiv unter Verwendung der empfangenen Daten erneut erzeugt und jedes erneut erzeugte Prüfbit wird zum Erzeugen eines entsprechenden Syndrombits mit dem entsprechenden empfangenen Prüfbit mit XOR verknüpft. 4 ist eine Tabelle zur Darstellung einer Art und Weise, auf die die Syndrombits erzeugt werden können. Insbesondere können die Syndrombits S1 durch XOR-Verknüpfung der empfangenen Binärwerte in P1, D4, D3 und D1 erzeugt werden. Wenn keines der empfangenen Datenbits (D4, D3, D1) fehlerhaft ist, wird der Wert des empfangenen Prüfbits P1 auf wirksame Weise mit sich selbst XOR-verknüpft, und das Syndrombit S1 wird 0 sein (unter der Annahme, daß das ursprüngliche Prüfbit P1 nicht fehlerhaft ist). Wenn eines der Datenbits (D4, D3, D1) oder das Prüfbit P1 fehlerhaft ist, wird das Syndrombit S1 gleich 1 gesetzt sein, was einen Fehler anzeigt. Die Syndrombits S2 und S3 können auf ähnliche Art und Weise erzeugt werden. Zusammengenommen können die Syndrombits S1, S2 und S3 zum Identifizieren der Lage eines fehlerhaften Bits verwendet werden. Zum Beispiel zeigt wie in 3 dargestellt der binäre Wert des Syndrombits in der Zeilenfolge [S3, S2, S1] die Position des fehlerhaften Bits innerhalb der 7-Bit-Datenblöcke an. Wenn das Syndrombit aus lauter Nullen besteht (d.h. „000"), haben die Daten keinen Einzelbitfehler. Auf das Identifizieren der fehlerhaften Bitposition hin wird der Fehler durch Invertieren des Binärwertes in dieser Position, d.h. von 0 zu 1 oder von 1 zu 0, korrigiert.
  • Es ist übliche Praxis die Daten in mehreren Komponenten zu speichern oder sie durch mehrere Komponenten zu kommunizieren. Zum Beispiel kann ein Datenblock in einer Vielzahl von Speicherchips gespeichert werden oder er kann durch eine Vielzahl von Drähten kommuniziert werden. Ein Fehler kann eingeführt werden, wenn eine der Komponenten fehlerhaft ist. Ein Hamming-Code wie der oben beschriebene kann in solchen Systemen verwendet werden, um eine Fehlerkorrektur anzugehen.
  • Zum Beispiel betrachte man den Fall, daß D Bits von Daten, die durch C Prüfbits geschützt werden, mittels M Speicherchips gespeichert werden. Der Datenblock enthält daher D + C-Bits. Wenn der Datenblock gleichmäßig zwischen den M Speicherchips verteilt werden soll, wird jeder Speicherchip X der Daten- und/oder Prüfbits des Datenblocks speichern, wobei X = (D + C)/M. Der Standardansatz zum Bereitstellen von Fehlerkorrektur für Chipfehler ist, die D + C Daten und Prüfbits in X logische Gruppen aufzuteilen, von denen jede M Bits enthält, und jeder Gruppe 1 Bit von jedem Chip zuzuweisen. Die Prüfbits in jeder Gruppe bilden einen SEC-(single-error correcting, Einzelfehlerkorrektur)Code wie z.B. einen Hamming-Code. Wenn irgendein Chip einen Fehler hat, führt er höchstens einen Fehler in jede Gruppe ein, und diese Fehler werden durch Gebrauch des SEC-Codes unabhängig von einander korrigiert. Wenn in jeder Gruppe ein Hamming-Code verwendet wird, ist eine Gesamtzahl von C = X·L Prüfbits nötig, wobei L die kleinste ganze Zahl ist, so daß 2^L > M. Diese Standardansatz ist ineffizient, da jede Gruppe in der Lage ist, unabhängig zu identifizieren, welches Bit (wenn überhaupt eines) in der Gruppe einen Fehler hat. Wenn jedoch die einzigen betrachteten Fehler Fehler des Speicherchips sind, haben die Fehler in verschiedenen Gruppen eine hohe Korrelation.
  • Eine NTIS Technical Note, eine vom US Department of Commerce, dem Amerikanischen Handelsministerium im Oktober 1990 (10/1990) herausgegebene fachspezifische Miteilung mit dem Titel: „32-Bit-Wide Memory Tolerates Failures" beschreibt auf Seite 818 vier 8-Bit Datenwörter, die über acht 4-Bit DRAMs verteilt sind, wobei Hamming-Codierung bedeutet, daß ein fehlerhaftes DRAM nur korrigierbare Einzelbitfehler verursacht.
  • Es wäre wünschenswert, ein System und ein Verfahren zur Verfügung zu stellen, welche das zuverlässige Speichern oder Übertragen von Daten in Umgebungen, in denen Komponentenfehler möglich sind, erlauben. Insbesondere wäre es wünschenswert, ein System und ein Verfahren zur Verfügung zu stellen, welche ein Erkennen und Korrigieren von Fehlern in Daten erlauben, während die Anzahl der zu übertragenden oder zu speichernden Prüfbits reduziert wird.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Aspekte der Erfindung werden in den beiliegenden Ansprüchen definiert.
  • Die oben aufgezeigten Probleme mögen in weiten Teilen durch ein System und ein Verfahren zum Erkennen und Korrigieren von Fehlern in einem Datenblock gemäß der vorliegenden Erfindung gelöst werden. Nach einer Ausführungsform empfängt und kodiert eine Prüfbit-Erzeugungseinheit zu schützende Daten. Die Prüfbit-Erzeugungseinheit teilt die Daten effektiv in eine Mehrzahl logischer Gruppen auf. Die Prüfbit-Erzeugungseinheit erzeugt ein Paritätsbit für jede der logischen Gruppen und erzeugt zusätzlich eine globale Fehlerkorrektur.
  • Der Code zur globalen Fehlerkorrektur zeigt eine vorher bestimmte Kombination eines Satzes von Fehlerkorrekturcodes an, von denen jeder individuell mit einer entsprechenden logischen Gruppe verbunden ist. In verschiedenen Ausführungsformen entspricht der Code zur globalen Fehlerkorrektur dem Ergebnis des Erzeugens individueller Fehlerkorrekturcodes für jede logische Gruppe und ihrer Kombination in einer vorherbestimmten Art und Weise.
  • In einer besonderen Ausführungsform werden die Daten in eine Menge von X logischen Gruppen aufgeteilt. Der Code zur globalen Fehlerkorrektur kann zu dem Ergebnis (oder kann abgeleitet werden von) des Verschiebens (entweder linear oder zyklisch) des Fehlerkorrekturcodes für eine gegebene i-te Gruppe um i Bitpositionen, wobei i = 0 bis X – 1, und der XOR-Bildung entsprechender Spalten der resultierenden verschobenen Fehlerkorrekturcodes zusammen genommen äquivalent sein. Der Code zur globalen Fehlerkorrektur, der in diesem Fall als einer bezeichnet wird, der Bits mit „twisted check" bzw. verdrillter Prüfung hat, (vermittels des selektiven Verschiebens des individuellen Fehlerkorrekturcodes) und umfaßt somit ein separates Bit, das die Parität anzeigt, die für jede ausgerichtete Spalte durch das Sammeln der resultierenden verschobenen Fehlerkorrekturcodes gebildet wird. Die Daten werden zusammen mit dem Paritätsbit für jede logische Gruppe und dem Code zur globalen Fehlerkorrektur dann durch einen Kommunikationskanal übermittelt oder in einen Speicher gespeichert.
  • Vorteilhafterweise ist die Gesamtzahl benötigter Prüfbits (die Paritätsbits für die logischen Gruppen und die den Code zur globalen Fehlerkorrektur bildenden Bits) kleiner als die Gesamtzahl der für die Sammlung von mit ihren logischen Gruppen individuell zugewiesenen Fehlerkorrekturcodes benötigten Bits. In einer Ausführungsform werden Daten auf entsprechende Bitpositionen innerhalb der logischen Gruppen durch eine gemeinsame Komponente übertragen, wie z.B. durch denselben Draht, oder in derselben Komponente gespeichert, wie z.B. in demselben Speicherchip. Zusätzlich werden Datenbits an unterschiedlichen Bitpositionen innerhalb einer gegebenen logischen Gruppe nicht durch eine gemeinsame Komponente übertragen oder nicht in einer solchen gespeichert.
  • Eine Fehlerkorrektureinheit ist angeschlossen, um die Mehrzahl von Datenbits und der Prüfbits nach Speicherung oder Übertragung zu empfangen. Die Fehlerkorrektureinheit ist zum Erzeugen eines Paritätsfehlerbits für jede der logischen Gruppen von Daten basierend auf den empfangenen Datenbits eingerichtet. Die Fehlerkorrektureinheit kann zudem dafür eingerichtet sein, einen erneut erzeugten Code zur globalen Fehlerkorrektur in der selben Weise zu erzeugen, in der der ursprüngliche Code zur globalen Fehlerkorrektur abgeleitet wird. Daher ist nach einer Ausführungsform der erneut erzeugte Code zur globalen Fehlerkorrektur äquivalent zu dem Ergebnis von (oder kann abgeleitet werden durch) dem Verschieben des erneut erzeugten Fehlerkorrekturcodes für eine gegebene i-te Gruppe um i Bitpositionen, wobei i = 0 bis X – 1 ist, und der Xor-Bildung entsprechender zusammengenommener Spalten der sich ergebenden verschobenen Fehlerkorrekturcodes.
  • Ein globaler Syndromcode kann durch XOR-Bildung in dem ursprünglichen Code zur globalen Fehlerkorrektur mit den erneut erzeugten Code zur globalen Fehlerkorrektur erzeugt werden. Dieser globale Syndromcode zeigt einen Unterschied zwischen dem ursprünglichen Code zur globalen Fehlerkorrektur und dem erneut erzeugten Code zur globalen Fehlerkorrektur an.
  • Im allgemeinen wird der globale Syndromcode so erzeugt, daß mit Kenntnis der spezifischen logischen Gruppen mit einem Einzelbitfehler ein Wert aus dem globalen Syndromcode abgeleitet werden kann, der die Lage des Fehlers in einer solchen Gruppe angibt. Die Gesamtzahl von Bits, die den globalen Syndromcode und die Paritätsbits für jede logische Gruppe bilden, ist kleiner als die Gesamtzahl von Bits, die für die den logischen Gruppen individuell zugeordneten Fehlerkorrekturcodes benötigt wird.
  • In Ausführungsformen, in denen die Fehlerkorrekturcodes für verschiedene logische Gruppen verschoben oder mit Xor verarbeitet werden, enthält der globale Syndromcode ein Bit, das jeder ausgerichteten Spalte des erneut erzeugten, verschobenen Fehlerkorrekturcodes entspricht, das anzeigt, ob ein Paritätsfehler für diese Spalte vorliegt. Das Vorhandensein eines Einzelbitfehlers in irgendeiner logischen Gruppe kann mittels des ursprünglichen Paritätsbits und der für diese Gruppe empfangenen Daten bestimmt werden. Zusätzlich wird, da die von dem System betrachtete Klasse korrigierbarer Fehler auf Einzelbitfehler beschränkt ist, die innerhalb der verschiedenen logischen Gruppen an derselben Position auftreten, (solche Fehler können aufgrund von Einzelkomponentenfehlern auftreten) der Fehlerkorrekturcode für jede logische Gruppe, die einen Fehler hat, einen Wechsel an genau derselben Bitposition wiedergeben. Daher kann durch Verschieben der verschiedenen Fehlerkorrekturcodes auf „verdrehte Art und Weise" bzw. „twisted manner" (d.h. einige werden mehr verschoben als andere) und XOR-Bildung der resultierenden vertikal ausgerichteten Spalten, die Korrelation ausgenutzt werden, die mit Bezug auf die spezifischen Bits existiert, die sich in jedem Fehlerkorrekturcode für jede logische Gruppe mit einem Fehler ändern (d.h. der Fehlerkorrekturcode für jede logische Gruppe mit einem Fehler bewirkt einen Wechsel an genau derselben Bitposition), um damit Information herauszuziehen, die die spezifische Bitposition des Fehlers angibt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Andere Aufgaben und Vorteile der Erfindung werden beim Lesen der folgenden detaillierten Beschreibung und durch Bezug auf die begleitenden Zeichnungen ersichtlich, von denen:
  • 1 (Stand der Technik) ein Blockdiagramm ist, das einen Paritätsgenerator zum Kodieren von Datenbits mittels eines Einzelfehler korrigierenden Hamming-Codes darstellt;
  • 2 (Stand der Technik) eine Zuordnungstabelle zum Berechnen eines Satzes von Prüfbits ist;
  • 3 (Stand der Technik) eine Darstellung von Bitpositionen und ihrem Inhalt für einen durch den Paritätsgenerator in 1 kodierten Datenblock ist;
  • 4 (Stand der Technik) eine Zuordnungstabelle zum Erzeugen eines Syndromcodes ist;
  • 5 ein Blockdiagramm eines Systems ist, das eine Fehlersteuerungseinheit gemäß einer Ausführungsform der vorliegenden Erfindung beinhaltet;
  • 6A einen Kodierprozeß darstellt, der das Erzeugen von Zeilenparitätsbits und Zeilenfehler korrigierenden Codes umfaßt;
  • 6B eine Art und Weise darstellt, auf die ein Code zur globalen Fehlerkorrektur erzeugt werden kann;
  • 7A eine Art und Weise darstellt, auf die ein Satz von Zeilenparitätsfehlerbits und erneut erzeugter Fehlerkorrekturcodes erzeugt werden kann;
  • 7B eine Art und Weise darstellt, auf die ein erneut erzeugter Code zur globalen Fehlerkorrektur erzeugt werden kann;
  • 8A eine Art und Weise darstellt, auf die ein globaler Syndromcode erzeugt werden kann;
  • 8B eine Art und Weise darstellt, auf die ein Satz von Zeilensyndromcodes erzeugt werden kann;
  • 9 ein Blockdiagramm eines Systems ist, das eine linear Verschiebeeinheit zum Dekodieren eines Datenblockes beinhaltet;
  • 10 ein funktionales Blockdiagramm einer linearen Verschiebeeinheit ist;
  • 1117 ein beispielhaftes Erzeugen eines Zeilensyndromcodes darstellt;
  • 18 und 19 ein Flußdiagramm darstellen, das eine Ausführungsform eines linearen Dekodierungsprozesses darstellt;
  • 2027 Zuordnungstabellen zur Darstellung der Funktion eines Satzes von Prüfbits gemäß einer anderen Ausführungsform der Erfindung darstellen;
  • 2835 Zuordnungstabellen zur Darstellung des Erzeugens eines Satzes von Zeilenparitätsfehlerbits und erneut erzeugten verdrehten Prüfbits für die Ausführung der 2027 sind;
  • 36 einen linearen Dekodierungsprozeß darstellt; und
  • 37 eine Blockdiagramm eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung ist.
  • Während die beanspruchte Erfindung für verschiedene Änderungen und alternative Formen empfänglich ist, werden anhand von Beispielen spezifische Ausführungsformen hiervon in den Zeichnungen gezeigt und hier weiter im Detail beschrieben.
  • DETAILLIERTE BESCHREIBUNG DER ZEICHNUNGEN
  • In 5 wird ein Blockdiagramm eines Systems mit einer Fehlersteuerungseinheit 105 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. In dieser besonderen Ausführungsform ist die Fehlersteuerungseinheit 105 zum Übertragen und Empfangen von Daten aus dem Speicher 110 angeschlossen. Der Speicher 110 ist zum Speichern eines Datenblocks (Datenbits und Prüfbits) eingerichtet, der an die/von der Fehlersteuerungseinheit kommuniziert wird. Der Speicher 110 beinhaltet eine Mehrzahl von Speicherchips 110A110M. Jeder dieser Speicherchips 110A110M ist zum Speichern eines Teils des Datenblocks eingerichtet. Die Speicherchips 110A110M können jede Art von Speichereinrichtung zum Speichern von Daten sein.
  • Wie weiter unten genauer beschrieben, ist die Fehlersteuerungseinheit 105 zum Kodieren von Daten eingerichtet, die im Speicher 110 gespeichert werden sollen, und zum Dekodieren emp fangener kodierter Daten nach dem Speichern, um gewisse Kategorien von Bitfehlern (wenn sie auftreten) mittels einer im Vergleich zu herkömmlichen Ansätzen wie typischen Einzelfehler korrigierenden Hamming-Codes relativ kleinen Zahl von Prüfbits zu korrigieren.
  • Die Fehlersteuerungseinheit 105 beinhaltet eine Prüfbit-Erzeugungseinheit 120 zur Durchführung des Kodierprozesses und eine Fehlerkorrektureinheit 130 zur Durchführung des Dekodierprozesses und zur Durchführung der Fehlerkorrektur. Datenbits werden über den Datenpfad 151 empfangen und durch die Prüfbit-Erzeugungseinheit 120 vor dem Speichern eines Datenblocks (Datenbits und Prüfbits) in den Speicher 110 über den Datenpfad 152 kodiert. Danach kann der gespeicherte Datenblock durch die Fehlerkorrektureinheit 130 über den Datenpfad 152 abgerufen werden. Die Fehlerkorrektureinheit 130 dekodiert den Datenblock zum Erkennen und Korrigieren von Fehlern in den Daten. Wenn ein oder mehr Fehler erkannt werden, werden die Fehler korrigiert. Die Datenbits (korrigiert, wenn nötig) werden dann über den Datenpfad 155 ausgegeben.
  • Man beachte, daß die Prüfbit-Erzeugungseinheit 120 und die Fehlerkorrektureinheit 130 in Hardware, in Software oder durch eine Kombination davon implementiert sein kann. Verschiedene spezifische Implementierungen davon sind möglich.
  • Der Betrieb der Fehlersteuerungseinheit 105 wird als nächstes unter Bezugnahme auf die 58 erklärt. Die 6A8B stellen ein Beispiel dar, bei dem insgesamt 20 Datenbits, die in dem Speicher 110 gespeichert werden sollen, geschützt werden.
  • Die 6A und 6B stellen einen durch die Prüfbit-Erzeugungseinheit 120 durchgeführten Kodierprozeß vor dem Speichern der Datenbits dar. Die Prüfbit-Erzeugungseinheit 120 empfängt 20 Datenbits (über Datenpfad 151) und verarbeitet in diesem Beispiel die Daten gemäß den fünf logischen Gruppen, jede Gruppe bildet eine entsprechende Reihe R0–R4 wie in 6A gezeigt. Ein mit D4, D3, D2 und D1 bezeichneter Satz von Spalten wird durch entsprechende Bitpositionen jeder Zeile gebildet. Wie weiter unten genauer beschrieben, werden die jede Spalte bildenden Daten im selben Speicherchip gespeichert und verschiedene Bits jeder Zeile werden in verschiedenen Speicherchips gespeichert.
  • Die Prüfbit-Erzeugungseinheit 120 ist zum Erzeugen eines Paritätsbits pro Zeile (parity bit per row, PPR) und eines globalen Fehlerkorrekturcodes (global error correction code, GECC) eingerichtet. Der globale Fehlerkorrekturcode ist gleich einer oder kann von einer vorherbestimmten logischen Kombination von globalen Fehlerkorrekturcodes abgeleitet werden, von denen jeder individuell mit einer entsprechenden Zeile verbunden ist. Die PPR- und GECC-Bits sind Prüfbits zum Schutz der Datenbits vor höchstens einem Fehler pro Zeile, vorausgesetzt, daß alle Fehler in derselben Spalte auftreten.
  • Die Menge von Paritätsbits kann entweder mit gerader oder ungerader Parität berechnet werden. Da ein Paritätsbit pro Zeile oder logischer Gruppe berechnet wird, ist die Zahl der PPR-Bits gleich der Anzahl der Zeilen. Bei dem Beispiel in 6A ist gerade Parität verwendet worden. Daher ist für die beispielhaften Daten wie dargestellt jedes der Paritätsbits (PPRs) für die Zeilen R0–R3 gleich 1. Das Paritätsbit für Zeile R4 ist 0.
  • 6A stellt einen mit jeder Zeile verbundenen Fehlerkorrekturcode (ECC) dar. Im Beispiel von 6A wird der Fehlerkorrekturcode für jede Zeile gemäß der zugeordneten in 2 gezeigten Tabelle berechnet. Zum Beispiel ist der für die Daten in Zeile R0 berechnete Fehlerkorrekturcode [111], und der für Zeile R1 berechnete Fehlerkorrekturcode ist [011], und so weiter. Man beachte jedoch, daß andere spezifische Fehlerkorrektur-Kodierungstechniken eingesetzt werden können, und daß andere Fehlerkorrektur-Kodierungstechniken mit anderen Zeilen verbunden sein können.
  • 6B stellt eine Art und Weise dar, auf die der globale Fehlerkorrekturcode erzeugt werden kann. Insbesondere kann in dieser Ausführungsform der globale Fehlerkorrekturcode durch selektives Verschieben bestimmter Zeilen-ECCs mit Bezug aufeinander und XOR-Bildung der resultierenden vertikal ausgerichteten Bits erzeugt werden. Da einige der Zeilen-ECCs mehr verschoben werden als andere, werden die den globalen Fehlerkorrekturcode bildenden Bits als „twisted" bzw. „verdrehte" Bits bezeichnet. In der Ausführungsform von 6B wird der globale Fehlerkorrekturcode durch lineares Verschieben des Fehlerkorrekturcodes für eine gegebene i-te Gruppe von i Bitpositionen abgeleitet, wobei i = 0 bis X – 1 und wobei X die Gesamtanzahl von Zeilen oder logischen Gruppen ist. Die Bits in jeder resultierenden vertikal ausgerichteten Spalte werden dann gemeinsam mit XOR verknüpft, um somit den globalen Fehlerkorrekturcode zu erzeugen (führende oder nachfolgende Nullen können je nach Notwendigkeit vor dieser XOR-Operation zu den Einträgen auf jeder Reihe der „verdrehten" ECCs hinzugefügt werden.
  • Man beachte, daß in der obigen auf die 6A und 6B bezogenen Diskussion der globale Fehlerkorrekturcode durch das erste Erzeugen des individuellen Fehlerkorrekturcodes für jede Zeile und ihre logische Kombination auf vorbestimmte Weise berechnet wird. In anderen Ausführungsformen kann der globale Fehlerkorrekturcode direkt aus den Datenbits erzeugt werden, so daß er gleich dem Ergebnis des Erzeugens individueller Fehlerkorrekturcodes für jede Zeile und ihrer Kombination in einer vorher bestimmten Weise ist. Zum Beispiel könnte der in 6B dargestellte globale Fehlerkorrekturcode direkt aus den Datenbits mittels einer vorherbestimmten Funktion erzeugt werden, ohne individuelle Fehlerkorrekturcodes für jede Zeile zu erzeugen.
  • Nach der Berechnung des globalen Fehlerkorrekturcodes werden der 20 Datenbits enthaltende Datenblock, die Paritätsbits (PPRs) und der globale Fehlerkorrekturcode (GECC) in den Speicher 110 übermittelt. Man beachte, daß die jede Spalte (D4, D3 und D1) bildenden Datenbits in dem Datenblock in einem gemeinsamen Speicherchip gespeichert werden und daß keine zwei Datenbits in verschiedenen Bitpositionen einer bestimmten Zeile in demselben Speicherchip gespeichert werden. Man beachte weiterhin, daß das Paritätsbit und der globale Fehlerkorrekturcode (GECC) in zusätzliche Speicherchips gespeichert werden können. Ein weiteres Beispiel der Art und Weise, wie die Paritätsbits und die den globalen Fehlerkorrekturcode (GECC) bildenden Bits zur Speicherung innerhalb verschiedener Speicherchips verteilt werden können, wird weiter unten in Verbindung mit den 2035 vorgestellt.
  • Man beachte weiter, daß im Beispiel der 6A und 6B eine Gesamtzahl von 12 Prüfbits (die Paritätsbits (PPRs), und die Bits der globalen EEC) zum Speichern zusammen mit den 20 Datenbits erzeugt werden. Diese gesamte Anzahl von Prüfbits ist vorteilhafterweise geringer als die Zahl mittels herkömmlicher Verfahren benötigter Prüfbits (wobei, zum Beispiel, entsprechend den Zeilen-Fehlerkorrekturcodes eine Gesamtzahl von 15 Prüfbits notwendig ist). Allgemein gesprochen wird in Ausführungsformen mit linear verschobenem globalem Fehlerkorrekturcode, der gemäß dem Beispiel von 6B erzeugt wurde, eine Gesamtzahl von nur (2X + L – 1) Prüfbits benötigt, wobei angenommen wird, daß D Datenbits mit C Prüfbits unter Verwendung von M Speicherchips geschützt werden (wobei M ein Teiler von (D + C) ist) und wobei X = (D + C)/M und C = X·L, wobei L die kleinste ganze Zahl ist, so daß 2^L ≥ M ist.
  • Als nächstes wird zu den 7A8B der Dekodiervorgang des Datenblocks im Anschluß an die Speicherung erläutert. Wie in 7A dargestellt verarbeitet die Fehlerkorrektureinheit 130 die Daten gemäß derselben logischen Gruppen wie sie von der Prüfbiterzeugungseinheit 120 gebildet werden. Die Fehlerkorrektureinheit 130 kann zum Erzeugen eines erneut erzeugten Paritätsbits pro Zeile (parity bit per row, PPR') mittels der empfangenen Daten eingerichtet werden. Derselbe Paritätstyp (gerade oder ungerade) wird sowohl während des Kodierens als auch während des Dekodierens verwendet. Im Beispiel von 7A werden zwei Fehler in den Satz empfangener Daten eingeführt, die beide in Spalte D2 auftreten, wie durch Unterstreichen gezeigt. Insbesondere änderten sich die Bits in Zeile R1 und R3 der Spalte D2, um Fehler beispielhaft darzustellen. Solche Fehler könnten das Ergebnis zum Beispiel eines fehlerhaften Speicherchips sein, der die Bits von Spalte D2 im Datensatz speichert. Daher verändern in diesem Beispiel die erneut erzeugten Paritätsbits für die Zeilen R1 und R3 den Zustand. Ein Bit, das für jede Zeile anzeigt, daß ein Paritätsfehler vorliegt, kann durch XOR-Bildung der ursprünglichen Paritätsbits mit den erneut erzeugten Paritätsbits erzeugt werden. Man beachte, daß das Erzeugen dieser Zeilenparitätsfehlerbits (row parity error bits, RPEs) stattdessen direkt durch XOR-Bildung der entsprechenden Bits der empfangenen Datenbits mit den ursprünglichen Paritätsbits (PPRs) erzeugt werden kann (ohne separates Erzeugen der erneut erzeugten Paritätsbits (PPRs)).
  • Wenn irgendeine der Zeilen, wie durch die Zeilenparitätsfehlerbits (RPEs) angezeigt, einen Einzelbitfehler hat, erzeugt die Fehlerkorrektureinheit 130 einen erneut erzeugten globalen Fehlerkorrekturcode auf dieselbe Weise, in der der ursprüngliche globale Fehlerkorrekturcode mittels des erneut erzeugten Fehlerkorrekturcodes erzeugt wurde. Daher kann in einer Ausführungsform der erneut erzeugte globale Fehlerkorrekturcode durch Verschieben des Fehlerkorrekturcodes für eine gegebene i-te Gruppe um i Bitpositionen, wobei i = 0 – X – 1 ist und durch XOR-Bildung der Bits in den resultierenden vertikal ausgerichteten Spalten, wie in 7B abgebildet, abgeleitet werden. Ähnlich der vorangegangenen Diskussion kann in anderen Ausführungsformen der erneut erzeugte globale Fehlerkorrekturcode direkt aus einer vorherbestimmten Funktion der empfangenen Datenbits abgeleitet werden, ohne einen individuellen Fehlerkorrekturcode für jede Zeile zu erzeugen. In solchen Ausführungsformen jedoch, entspricht der globale Fehlerkorrekturcode einer vorherbestimmten Kombination eines Satzes von Fehlerkorrekturcodes, von denen jeder individuell mit einer entsprechenden Zeile verbunden ist.
  • In 8A kann ein globaler Syndromcode beim Erzeugen des erneut erzeugten globalen Fehlerkorrekturcodes durch XOR-Bildung des ursprünglichen globalen Fehlerkorrekturcode mit dem erneut erzeugten globalen Fehlerkorrekturcode erzeugt werden. Dieser globale Syndromcode zeigt einen Unterschied zwischen dem ursprünglichen globalen Fehlerkorrekturcode und dem erneut erzeugten globalen Fehlerkorrekturcode an. In Ausführungsformen, in denen Fehlerkorrekturcodes für verschiedene logische Gruppen auf verdrehte Weise verschoben werden und durch XOR verknüpft werden, beinhaltet der globale Syndromcode ein Bit, das jeder ausgerichteten Spalte des erneut erzeugten verschobenen Fehlerkorrekturcodes entspricht, was anzeigt, ob ein Paritätsfehler für diese Spalte vorliegt. Zum Beispiel werden in dem Beispiel von 8 die Bits in dem globalen Syndromcode für die Positionen 2, 3, 4 und 5 gesetzt. Das ist das Ergebnis der Tatsache, daß die Parität in jeder der Spalten 2, 3, 4 und 5 der verschobenen erneut erzeugten Fehlerkorrekturcodes von 7B verschieden von der Parität jeder der entsprechenden Spalten des ursprünglichen, verschobenen Fehlerkorrekturcodes ist, wie in 6B dargestellt. Dementsprechend beinhaltet der globale Syndromcode in dieser Ausführungsform ein Bit, das jeder ausgerichteten Zeile des erneut erzeugten verschobenen Fehlerkorrekturcodes entspricht, was anzeigt, ob ein Paritätsfehler für diese Spalte vorliegt. Da die erneut erzeugten Fehlerkorrekturcodes für die logischen Gruppen mit Fehlern durch Verschieben der verschiedenen Fehlerkorrekturcodes und XOR-Bildung der resultierenden Bit-ausgerichteten Spalten auf eine verdrehte Weise Veränderungen auf genau denselben Bitpositionen bewirken, kann die Korrelation, die hinsichtlich Veränderungen in den Fehlerkorrekturcodes für logische Gruppen mit Fehlern vorhanden ist, ausgenutzt werden, um dadurch Informationen herauszuziehen, die die spezifische Position des Fehlers angeben.
  • 8B stellt zum Beispiel eine Weise dar, auf die ein Satz von Zeilensyndromcodes, von denen jeder die Lage eines Fehlers in einer gegebenen Zeile angibt, mittels des globalen Syndromcodes und der Zeilenparitätsfehlerinformation erzeugt werden kann. Wie in 8B dargestellt, werden Einträge (ursprünglich unausgefüllt) für jeden Zeilensyndromcode durch Verschieben der Einträge auf dieselbe Weise, auf die die Fehlerkorrekturcodes verschoben wurden, um den globalen Fehlerkorrekturcode zu erzeugen, zur Verfügung gestellt. Zuerst können die Zeilensyndromcodes für jede Zeile ohne Fehler mit lauter „Nullen" ausgefüllt werden (da Zeilen ohne Fehler nicht zu einem Paritätsfehler in einer gegebenen Spalte beitragen können, wie durch den globalen Syndromcode identifiziert). Daher können die Zeilensyndromcodeeinträge für die Zeilen R0, R2 und R4 mit lauter „0en" gefüllt werden. Wie in 8B abgebildet, ist die erste Zeile mit einem Fehler die Zeile R1. Da das erste Bit des Zeilensyndromcodes für Zeile R1 in der Spaltenposition 1 ist, und da der globale Syndromwert für die Bitposition 0 ist und der einzige andere beitragende Wert für diese Bitposition des globalen Syndromcodes aus dem Zeilensyndromcode für Zeile R0 (der bekanntermaßen bereits „0" ist) abgeleitet ist, kann der Wert des ersten Bits des Zeilensyndromcodes für Zeile R1 als „0" eingetragen werden. Zusätzlich kann, da der Zeilensyndromcode für jede Zeile mit einem Fehler bekanntermaßen identisch (derselbe) ist, das erste Bit des Zeilensyndromcodes für Zeile R3 auch als eine „0" ausgefüllt werden. Anschließend kann das zweite Bit des Syndromcodes für Zeile R1 auf ähnliche Weise durch Betrachten des Wertes in Bitposition 2 des globalen Syndroms und der Werte der Bits in Position 2 der Zeilen 0 und 2 (d.h. das letzte Bit des Zeilensyndromcodes für Zeile R0 und das erste Bit des Zeilensyndromcodes für Zeile R2) ermittelt werden. In dieser Situation kann der Wert des zweiten Bits des Zeilensyndromcodes für Zeile R1 als „1" eingetragen werden. Dies spiegelt sich wiederum in dem zweiten Bit des Zeilensyndromcodes für Zeile R3 wieder. Das letzte Bit des Zeilensyndromcode kann ähnlich bestimmt werden.
  • Der binäre Wert des Zeilensyndromcodes (mit Bezug auf die dargestellten Werte in 8B in umgekehrter Reihenfolge) gibt somit die Position des Fehlers für logische Gruppen mit Fehlern an. Daher entspricht in diesem Beispiel der Wert „110", der binär 6 ist, der Bitposition D2 wie in 3 gezeigt. Diese Position entspricht der Position der Fehler, die in dem in 7A dargestellten Beispiel eingeführt werden.
  • Nach dem Feststellen bzw. Bestimmen der fehlerhaften Bits in dem empfangenen Datensatz wird die Fehlerkorrektureinheit 230 darauf eingerichtet, die Daten wie benötigt zu korrigieren. So werden in dem Beispiel der 68 die Bits in Spalte D2 der Zeilen R1 und R3 als fehlerhaft identifiziert. Dementsprechend invertiert die Fehlerkorrektureinheit 230 diese Bits und gibt die Daten über den Datenausgang 155 als korrigiert aus.
  • Bei den 917 wird als nächstes eine Art und Weise betrachtet, auf die die Zeilenparitätsinformation und die globale Syndrominformation dekodiert werden können, um den Zeilensyndromcode zu erzeugen. Insbesondere kann wie in 8 dargestellt die Fehlerkorrektureinheit 130 eine RPE/globale Syndromcodeerzeugungseinheit 131 und eine lineare Verschiebeeinheit 132 zum Dekodieren eines empfangenen Datenblocks einsetzen, der mittels der linearen Verschiebemethodologie, wie oben beschrieben, kodiert ist. Ein funktionales Blockdiagramm, das funktionale Aspekte der linearen Verschiebeeinheit 132 darstellt, ist in 10 wiedergegeben. Wie gezeigt beinhaltet die lineare Verschiebeeinheit 132 eine Steuereinheit 135, verbunden mit einem Paar von Schieberegister 133 und 134. Die in den 9 und 10 dargestellten verschiedenen Funktionalitäten können in Hardware, in Software oder mittels einer Kombination davon implementiert werden.
  • Die RPE/globale Syndromcodeerzeugungseinheit 131 erzeugt die Zeilenparitätsfehlerbits (RPEs) und den globalen Syndromcode gemäß der vorangehenden Beschreibung mittels des empfangenen Datenblocks. Die Zeilenparitätsfehlerbits (RPEs) und der globale Syndromcode werden dann an die lineare Verschiebeeinheit 132 geliefert.
  • Der Betrieb der linearen Verschiebeeinheit 132 wird mit Bezug auf die 1117 erklärt, zusammen mit den Flußdiagrammen der 1819. Wie in 11 dargestellt, beinhaltet das Schieberegister 133 eine Mehrzahl von Zellen RPE[0:4] zum Speichern der Zeilenparitätsfehlerbits (RPEs) für die jeweiligen Zeilen 0–4. In ähnlicher Weise beinhaltet das Schieberegister 134 eine Mehrzahl von Zellen GSC[0:6] zum Speichern des globalen Syndromcodes. Gemäß den 11 und 18 werden die Zeilenparitätsfehlerbits RPEs anfangs in das Schieberegister 133 geladen und die Steuerungseinheit 135 stellt fest, ob das Schieberegister lauter „Nullen" enthält (Schritte 310 und 330). Wenn das Schieberegister 133 lauter Nullen enthält, womit angezeigt wird, daß keine Einzelbitzeilenfehler vorhanden sind, werden keine Datenfehler berichtet und die Daten werden von der Fehlersteuerungseinheit (Schritt 340) ausgegeben. Andererseits wird, wenn ein oder mehr Zeilenparitätsfehlerbits gesetzt werden, der globale Syndromcode in das Schieberegister 134 geladen (Schritt 350). 12 stellt den Inhalt der Schieberegister 133 und 134 an diesem Punkt des Ver fahrens für die exemplarischen RPEs und den für das zu 8B gehörige Beispiel erzeugten globalen Syndromcode dar.
  • Der Inhalt der am weitesten rechts stehenden Zelle des Schieberegisters 133 Zelle RPE[0]) wird dann während des Schrittes 360 ermittelt. Wenn der Wert in der am weitesten rechts stehenden Zelle RPE[0] des Schieberegisters 133 „0" ist, werden der Inhalt sowohl des Schieberegisters 133 als auch des Schieberegisters 134 um eine Bitposition nach rechts verschoben (Schritt 370). Die am weitesten links außen stehende Parität in jedem dieser Register wird mit einer „0" aufgefüllt und die Werte, die aus den am weitesten rechts außen stehenden Positionen herausgeschoben werden, werden verworfen. Dieser Vorgang wiederholt sich, bis der Wert in der am weitesten rechts stehenden Zelle RPE[0] des Schieberegisters 133 „1" ist. 13 stellt die sich nach dieser Operation in den Schieberegistern 133 und 134 ergebenden Werte für die beispielhaften Codes dar.
  • An diesem Punkt wird der Bitwert in der am weitesten rechts stehenden Zelle des Schieberegisters 134 als Zeilensyndromcodebit RSC[0], wie auch in 13 gezeigt (Schritt 380) aufgezeichnet. Wenn alle Zeilensyndromcodebits noch nicht bestimmt wurden (Schritt 390), wird eine Bestimmung vorgenommen, ob das letzte aufgezeichnete Zeilensyndromcodebit eine 1 war. Wenn nicht, werden die Inhalte von Schieberegister 134 wieder um eine Position nach rechts verschoben (Schritt 44), und der Vorgang wiederholt sich. Wenn andererseits das letzte aufgezeichnete Zeilensyndromcodebit eine 1 war, werden ausgerichtete Bitpositionen des ersten und zweiten Schieberegisters mit XOR verbunden, und das Ergebnis wird in dem zweiten Schieberegister 134 (Schritte 420 und 430) gespeichert. In dem dargestellten Beispiel war das zuletzt aufgezeichnete Zeilensyndromcodebit eine „0", und somit wird der Inhalt des zweiten Schieberegisters 134 um eine Bitposition nach rechts verschoben (Schritt 440) und der Vorgang wiederholt sich durch Aufzeichnen des Wertes in der am weitesten rechts stehenden Position des Schieberegisters 134 als das nächste RSC-Bit, wie in 14 dargestellt.
  • Während der nächsten Iteration wird, da das letzte aufgezeichnete RSC-Bit „1" war, der Wert in dem Schieberegister 133 mit XOR mit dem Wert im Schieberegister 134 (Schritt 429) verbunden, und das Ergebnis wird in Schieberegister 134 gespeichert, wie in 15 dargestellt. Der Inhalt von Register 134 wird wieder um eine Bitposition nach rechts verschoben, wie in 16 dargestellt (Schritt 440), und das resultierende Bit in der am weitesten rechts gelegenen Position des Schieberegisters 134 wird als das nächste RSC-Bit verzeichnet, wie in 17 (Schritt 380) dargestellt. Wenn alle Bits des Zeilensyndromcodes bestimmt wurden, endet der Vorgang (Schritt 400).
  • Der Zeilensyndromcode zeigt die Position des Fehlers für jede Zeile mit einem Einzelbitfehler an. In dem dargestellten Beispiel ist der binäre Wert des Zeilensyndromcodes 6. In 3 entspricht Bitposition 6 Spalte D2, was die Position des in dem Beispiel von 7A eingeführten Fehlers ist.
  • Man beachte, daß alternative Ausführungsformen des linearen Verschiebekodierverfahrens, die in Verbindung mit den 919 beschrieben wurden, möglich sind. Zum Beispiel können die Werte auf ähnliche Weise nach links verschoben werden, um den Zeilensyndromcode herzuleiten, anstatt die Werte in den Schieberegistern 133 und 134 nach rechts zu verschieben.
  • Man beachte auch, daß die empfangenen Prüfbits mittels anderer Mechanismen dekodiert werden können. Zum Beispiel könnten Mechanismen, die die Gauß'sche Elimination verwenden, zum Dekodieren der Zeilenparitätsfehlerbits und des globalen Syndromcodes zur Herleitung eines Zeilensyndromcodes verwendet werden.
  • Die 2035 sind Tabellen, die andere Ausführungsformen eines Systems darstellen, das lineare Verschiebetechnik zur Erzeugung globaler Syndromcodes wie oben beschrieben einsetzt. In der in den 2035 abgebildeten Ausführungsform werden 267 Datenbits durch 21 Prüfbits geschützt. Der Code wird mittels 288-Bitblöcken definiert. Die Datenbits in einem Block werden mit D[266:0] bezeichnet. Die 21 Prüfbits innerhalb eines Blocks bestehen aus 8 Paritätsbits P[7:0] und einem globalen Syndromcode, der aus 13 verdrehten Prüfbits T[12:0] besteht.
  • Der 288-Bit-Block ist in acht Gruppen aufgeteilt, die mit G[0] bis G[7] bezeichnet werden, von denen jede 36 Bits enthält. Dieser Code kann einen Fehler pro Gruppe von G[0] bis G[7] korrigieren, vorausgesetzt, daß alle Fehler an derselben Stelle innerhalb einer Gruppe auftreten.
  • Die Paritätsbits P[7:0] und verdrehten Prüfbits T[12:0] werden entsprechend der Tabellen der 2027 berechnet. Jede Tabelle listet die 36 Bitpositionen innerhalb der Gruppe und die Inhalte jeder Bitposition auf. Zum Beispiel enthält G[0][0]P[0], G[0][29] enthält D[23] und G[1][32] enthält T[6], und so weiter. Die verbleibenden Zeilen in jeder Tabelle geben die Regeln zum Berechnen der Prüfbits vor. Jedes Prüfbit ist das exklusive Oder gewisser Werte. Insbesondere werden die Werte, die zu einem bestimmten Prüfbit beitragen, mittels einer „1" an der passenden Position in der Tabelle angegeben. Zum Beispiel ist das Paritätsbit P[0] das exklusive Oder von G[0][35:1]. Da die Paritätsbits P[7:0] von gewissen der verdrehten Prüfbits T[12:0] abhängen, können die verdrehten Prüfbits T[12:0] zuerst berechnet werden, und danach die Paritätsbit P[7:0].
  • Man beachte, daß es in diesem Beispiel insgesamt 36 Einträge in jeder Gruppe gibt. Dementsprechend kann das System so eingerichtet werden, daß eine Gesamtzahl von 36 Speicherchips verwendet wird, von denen jeder ein Bit von einer entsprechenden Lage in jeder Gruppe speichert.
  • Wenn die Daten empfangen werden, werden gemäß den Zuordnungstabellen der 2835 die Paritätsfehlerbits Q[7:0] und die erneut erzeugten, verdrehten Prüfbits V[12:0] (die erneut erzeugten globalen ECC) durch das exklusive Oder der empfangenen Daten berechnet. Zusätzlich kann ein globales Paritätsfehlerbit Q durch das exklusive Oder von Q[7:0] berechnet werden.
  • In bestimmten Fällen ist es notwendig, ein unverdrehtes Syndrom U[5:0] zu erzeugen (d.h. den Zeilen- oder Gruppensyndromcode). Dieses unverdrehte Syndrom ist eine Funktion von V[12:0] und Q[6:0]. Wie in 36 und wie im vorangehenden Beispiel dargestellt, kann das unverdrehte Syndrom U[5:0] mittels paralleler Schieberegister, 333 und 334, berechnet werden, die ähnlich den in 10 dargestellten Registern 133 und 134 sind.
  • Das Schieberegister 333 enthält 7 Zellen, A[6:0] und Schieberegister 334 enthält 13 Zellen, B[12:0]. Jede Zelle enthält ein einzelnes Bit. Die Schieberegister 333 und 334 werden separat gesteuert. Wenn ein Schieberegister zum Verschieben veranlaßt wird, überträgt es die Inhalte jeder Zelle um eine Position nach rechts, gibt den Wert, der in der am weitesten rechts stehenden Zelle war, aus und lädt eine „0" in die am weitesten links stehende Zelle. Ähnlich der vorigen Beschreibung ist es ebenso möglich, das XOR von Schieberegister 333 und Schieberegister 334 zu berechnen und die Inhalte in das Schieberegister 334 zu speichern (Schieberegister 333 ist logisch mit Nullen in den Positionen 12:7. aufgefüllt, wenn das XOR berechnet wird).
  • Das unverdrehte Syndrom U[5:0] wird wie folgt berechnet:
    • 1. Q[i] in Zelle A[i], 0 ≤ i ≤ 6, laden und V[i] in Zelle B[i], 0 ≤ i ≤ 12, laden.
    • 2. Während A[0] 0 enthält:
    • a. Sowohl Schieberegister 333 als auch Schieberegister 334 um eine Position nach rechts verschieben, wobei die hinausgeschobenen Werte verworfen werden.
    • 2. Für i = 0 bis 5:
    • a. U[i] = B[0] setzen.
    • b. Wenn B[0] = 1, dann das XOR von Schieberegister 333 und Schieberegister 334 berechnen und das Ergebnis in Schieberegister 334 plazieren (das heißt B[j] = A[j] XOR B[j], 0 ≤ j ≤ 6.
    • c. Schieberegister 334 um eine Position nach rechts verschieben, wobei der hinausgeschobene Wert verworfen wird.
  • Bei gegebenem Q, Q[7:0] und U[5:0] werden Fehler wie folgt korrigiert. Die Beschreibung, welcher Typ von Fehler aufgetreten ist, geht von der Annahme aus, daß die Fehler innerhalb des betrachteten Typs liegen (nämlich 0 bis 8 Fehler, alle in derselben Position innerhalb ihrer Gruppe).
    • 1. Wenn Q = 0:
    • a. Wenn Q[7:0] = 00000000, dann ist kein Fehler aufgetreten.
    • b. Wenn Q[7:0] ≠ 00000000, ist ein korrigierbarer Fehler aufgetreten. Die Bits in allen Positionen der Form G[i][j] komplementieren, 0 ≤ i ≤ 7, 0 ≤ j ≤ 35, wobei Q[j] = 1 und j = U[5:0] (als binäre Zahl betrachtet). (Wenn U[5:0] > 35, ist ein nicht korrigierbarer Fehler in der Klasse der nicht betrachteten Fehler aufgetreten).
    • 2. Wenn Q = 1: Ein korrigierbarer Fehler ist aufgetreten. Bilde das Komplement zu den Bits in allen Positionen der Form G[i][j], 0 ≤ i ≤ 7, 0 ≤ j ≤ 35, wobei Q[i] = 1 und j = U[5:0] (als binäre Zahl betrachtet). (Wenn U[5:0] > 35, ist ein nicht korrigierbarer Fehler aufgetreten, der nicht in der Klasse der betrachteten Fehler liegt).
  • Man beachte, daß kein Fehler aufgetreten ist, wenn Q[7:0] = 00000000. Man beachte auch, daß U[5:0] nur in den Fällen 1.b und 2 berechnet zu werden braucht (was anzeigt, daß ein korrigierbarer Fehler aufgetreten ist).
  • In den in den 2035 dargestellten Ausführungsformen werden die durch verdrehte Prüfbits T[12:0] gebildeten globalen Fehlerkorrekturcodes direkt durch eine vorbestimmte Kombination von Datenbits erzeugt. Jedes verdrehte Prüfbit T[12:0] wird in einer solchen Position innerhalb einer Gruppe gespeichert, daß es das einzige Prüfbit ist, das diese Position abdeckt. Zum Beispiel wird, wie in 28 dargestellt, das verdrehte Prüfbit T0 an der Position G[0][01] gespeichert und ist das einzige Prüfbit, das zu dem erneut erzeugten verdrehten Prüfbit V[0] beiträgt, und so weiter. Darüber hinaus beachte man, daß die Paritätsbits P[7:0] für jede Datengruppe gewisse verdrehte Prüfbits enthalten, die in dieser Gruppe gespeichert sind. Da die Paritätsbits innerhalb der Positionen [00] der verschiedenen Gruppen gespeichert werden, kann weitergehende Effizienz erreicht werden.
  • Alternative Ausführungsformen sind auch möglich. In anderen betrachteten Ausführungsformen werden zum Beispiel die für die lokalen Gruppen erzeugten Fehlerkorrekturcodes „zyklisch" verschoben (anstatt linear verschoben) und gemeinsam mit XOR verknüpft, um sowohl den globalen Fehlerkorrekturcode als auch den erneut erzeugten Fehlerkorrekturcode abzuleiten. Ausführungsformen, die P globale Fehlerkorrekturbits erzeugen, sind möglich, wobei P die kleinste Primzahl ist, so daß P > X und 2^(P – 1) >= M. In solchen Ausführungsformen ist eine Gesamtzahl von C = X + P Prüfbits erforderlich. Solche Techniken können weniger Gesamt-Prüfbits verwenden als Ausführungsformen, die linear verschobene Techniken wie zuvor beschrieben verwenden.
  • Weiterhin sind vielleicht zusätzliche Ausführungsformen möglich, in denen ein globaler Syndromcode mittels anderer Methoden erzeugt wird. In solchen Ausführungsformen ist der gespeicherte oder übertragene globale Fehlerkorrekturcode abhängig von oder äquivalent zu einer logischen Kombination eines Satzes von Fehlerkorrekturcodes, die mit den logischen Gruppen der Ursprungsdaten verbunden sind, während der erneut erzeugte globale Fehlerkorrekturcode abhängig von oder äquivalent zu einer logischen Kombination eines Satzes von Fehlerkorrekturcodes ist, die mit den logischen Gruppen der empfangenen oder abgerufenen Daten verbunden sind. Der globale Fehlerkorrekturcode wird so erzeugt, daß bei Kenntnis der spezifischen logischen Gruppen mit einem Einzelbitfehler ein Wert von dem Syndromcode abgeleitet werden kann, der die Lage des Fehlers in solchen Gruppen anzeigt. Die Gesamtzahl von Bits, die den globalen Syndromcode und die Paritätsbits für jede logische Gruppe bilden, ist kleiner als die Gesamtzahl von Bits, die für die den logischen Gruppen individuell zugeordneten Fehlerkorrekturcodes benötigt wird.
  • Schlußendlich zeigt 37 eine Ausführungsform, bei der ein gemäß der vorhergehenden Technik geschützter Datenblock über eine Mehrzahl von Kommunikationskanälen 410A ... 410M übertragen wird. Jeder Kommunikationskanal 410A410M steht zum Beispiel zur Veranschaulichung für einen Draht oder ein anderes Übertragungsmedium. Ähnlich zu den vorausgegangenen Ausführungsformen werden verschiedene Bits in jeder logische Gruppe über verschiedene Kommunikationskanäle übertragen.
  • Während die vorliegende Erfindung mit Bezugnahme auf spezifische Ausführungsformen beschrieben wurde, versteht es sich, daß die Ausführungsformen der Veranschaulichung dienen und daß der Schutzumfang der Erfindung nicht darauf beschränkt ist.

Claims (20)

  1. System zum Korrigieren von Datenfehlern, welches aufweist: eine Einheit (120) zur Erzeugung von Prüfbits für den Empfang einer Mehrzahl von Datenbits, die logisch in eine Mehrzahl, X, von Gruppen entsprechender Datenbits aufteilbar ist, wobei die Einheit zur Erzeugung von Prüfbits dafür ausgelegt ist: – ein Paritätsbit zu erzeugen, welches jeder der Mehrzahl von Gruppen von Datenbits entspricht, und einen globalen Fehlerkorrekturcode zu erzeugen, der durch ein Ergebnis der Verschiebung individueller Fehlerkorrekturcodes für jede i'te Gruppe von Datenbits um i-Bit-Positionen gebildet wird oder äquivalent dazu ist, wobei i = 0 bis X – 1 sein kann, und durch XOR(ausschließlich-ODER)-Verknüpfung einer Mehrzahl von sich ergebenden, verschobenen Fehlerkorrekturcodes miteinander, wobei jeder individuelle Fehlerkorrekturcode aus einer Mehrzahl von Prüfbits für eine entsprechende aus der Mehrzahl von Gruppen von Datenbits besteht und wobei der globale Fehlerkorrekturcode unter Verwendung einer kleineren Anzahl von Bits ausgedrückt wird als durch die Gesamtzahl von Prüfbits des Satzes individueller Fehlerkorrekturcodes, und eine Fehlerkorrektureinheit (130), die so angeschlossen ist, daß sie die Mehrzahl von Datenbits, das Paritätsbit für jede aus der Mehrzahl von Gruppen von Datenbits und den globalen Fehlerkorrekturcode empfängt, wobei jede Fehlerkorrektureinheit dafür ausgelegt ist, jeweils ein Paritätsfehlerbit für jede der Gruppen von Daten zu erzeugen, welches anzeigt, ob ein Paritätsfehler für die betreffende Gruppe von Daten, so wie sie empfangen wurden, vorliegt, und, wenn ein Paritätsfehler vorliegt: – einen globalen Syndromcode zu erzeugen durch XOR-Verknüpfung des empfangenen, globalen Fehlerkorrekturcodes mit einem neu generierten globalen Korrekturcode, – aus den Paritätsfehlerbits für die entsprechenden Gruppen von Datenbits und aus dem globalen Syndromcode einen Gruppensyndromcode für eine Gruppe von Datenbits zu erzeugen, welche einen Paritätsfehler haben, der eine Fehlerposition innerhalb der Gruppe von Datenbits anzeigt, wobei: – der Gruppensyndromcode für alle Gruppen von Datenbits, die einen Fehler haben, identisch ist, – der Gruppensyndromcode für jede Gruppe von Datenbits, die keinen Paritätsfehler haben, aus lauter Nullen besteht, – die Gruppensyndrome derart sind, daß, wenn man sie in derselben Art und Weise wie die individuellen Fehlerkorrekturcodes verschiebt, die XOR-Kombination der ausgerichteten Bits der Gruppensyndrome gleich dem globalen Syndromcode sind, und – die empfangenen Datenbits in Abhängigkeit von dem Gruppensyndromcode zu korrigieren.
  2. System nach Anspruch 1, wobei das Verschieben eine lineare Verschiebung ist bzw. aufweist.
  3. System nach Anspruch 1, wobei das Verschieben ein zyklisches Verschieben ist.
  4. System nach irgendeinem der vorangehenden Ansprüche, wobei jedes Bit des globalen Syndromcodes anzeigt, ob die einer ausgerichteten Spalte von Bits der Mehrzahl sich ergebender verschobener Fehlerkorrekturcodes zugeordnete Parität dieselbe ist, wie eine Parität, welche entsprechenden ausgerichteten Bits einer Mehrzahl verschobener Fehlerkorrekturcodes auf der Basis der wiedererzeugten Fehlerkorrekturcodes für die Mehrzahl von Gruppen zugeordnet ist.
  5. System nach einem der vorstehenden Ansprüche, welches weiterhin eine Komponente aufweist, in welcher die Mehrzahl von Datenbits, das Paritätsbit für jede der Mehrzahl von Gruppen und der globale Fehlerkorrekturcode übermittelt werden, bevor sie für die Fehlerkorrektureinheit bereitgestellt werden.
  6. System nach Anspruch 5, wobei die Komponente eine Mehrzahl von Speicherchips (110A110M) aufweist.
  7. System nach Anspruch 5 oder 6, wobei die Komponente eine Mehrzahl von Kommunikationspfaden (410A410M) aufweist.
  8. System nach einem der Ansprüche 5 bis 7, wobei jedes Bit innerhalb einer bestimmten Gruppe von Datenbits in einem getrennten Speicherchip gespeichert wird, wodurch keine zwei Bits irgendeiner gegebenen Gruppe innerhalb desselben Speicherchips gespeichert sind.
  9. System nach Anspruch 8, wobei Bits an entsprechenden Positionen innerhalb der Mehrzahl von Gruppen von Datenbits innerhalb desselben Speicherchips gespeichert sind.
  10. System nach einem der vorstehenden Ansprüche, wobei der Fehlerkorrekturcode für jede der Mehrzahl von Gruppen ein Einzelfehler-Hamming-Korrekturcode ist.
  11. Verfahren zum Korrigieren von Datenfehlern, welches aufweist: Empfangen einer Mehrzahl von Datenbits, die logisch in eine Mehrzahl, X, von Gruppen entsprechender Datenbits aufteilbar sind, Erzeugen eines Paritätsbits, welches jeder der Mehrzahl von Gruppen von Datenbits entspricht, Erzeugen eines globalen Fehlerkorrekturcodes, welcher durch ein Ergebnis einer Verschiebung individueller Fehlerkorrekturcodes für jede i'te-Gruppe von Datenbits um i Bitpositionen gebil det wird oder äquivalent hierzu ist, wobei i = 0 bis X – 1 sein kann, und ausschließlich-Oder-Verknüpfung (XOR-Verknüpfung) einer Mehrzahl von sich ergebenden verschobenen Fehlerkorrekturcodes miteinander, wobei jeder individuelle Fehlerkorrekturcode aus einer Mehrzahl von Prüfbits für eine entsprechende aus der Mehrzahl von Gruppen von Datenbits besteht, und wobei der globale Fehlerkorrekturcode unter Verwendung einer kleineren Anzahl von Bits ausgedrückt wird als eine Gesamtzahl von Prüfbits des Satzes individueller Fehlerkorrekturcodes, Empfangen der Mehrzahl von Datenbits, des Paritätsbits für jede aus der Mehrzahl von Gruppen von Datenbits und des globalen Fehlerkorrekturcodes, Erzeugen eines entsprechenden Paritätsfehlerbits für jede der Gruppen von Datenbits, welches anzeigt, ob ein Paritätsfehler für die entsprechende Gruppe von Datenbits, so wie sie empfangen wurde, vorliegt, und, falls ein Paritätsfehler vorliegt: Erzeugen eines globalen Syndromcodes durch XOR-Verknüpfung des empfangenen globalen Fehlerkorrekturcodes mit einem neu erzeugten globalen Fehlerkorrekturcode, Erzeugen eines Gruppensyndromcodes für eine Gruppe von Datenbits, die einen Paritätsfehler hat, welcher eine Position eines Fehlers innerhalb einer Gruppe von Datenbits anzeigt, und zwar aus den Paritätsfehlerbits für die jeweiligen Gruppen von Datenbits und aus dem globalen Syndromcode, wobei: der Gruppensyndromcode für alle Gruppen von Datenbits, die einen Fehler haben, identisch ist, der Gruppensyndromcode für jede Gruppe von Datenbits, die keinen Paritätsfehler haben, aus lauter Nullen besteht, die Gruppensyndrome derart sind, daß, wenn sie in der selben Art und Weise verschoben werden wie die individuellen Fehlerkorrekturcodes, die XOR-Kombination der ausgerichteten Bits der Gruppensyndrome gleich dem globalen Syndromcode sind und Korrigieren der empfangenen Datenbits in Abhängigkeit von dem Syndromcode.
  12. Verfahren nach Anspruch 11, wobei das Verschieben eine lineare Verschiebung ist.
  13. Verfahren nach Anspruch 11, wobei das Verschieben eine zyklische Verschiebung ist.
  14. Verfahren nach einem der Ansprüche 11 bis 13, wobei jedes Bit des globalen Syndromcodes anzeigt, ob die einer ausgerichteten Spalte von Bits der Mehrzahl von sich ergebenden, verschobenen individuellen Fehlerkorrekturcodes zugeordnete Parität die selbe ist, wie die Parität, welche entsprechenden ausgerichteten Bits einer Mehrzahl verschobener individueller Fehlerkorrekturcodes auf der Basis der wiedererzeugten individuellen Fehlerkorrekturcodes aus der Mehrzahl von Gruppen zugeordnet ist.
  15. Verfahren nach einem der Ansprüche 11 bis 14, welches weiterhin das Übermitteln der Mehrzahl von Datenbits, des Paritätsbits für jede aus der Mehrzahl von Gruppen von Datenbits und des globalen Fehlerkorrekturcodes in eine Komponente bzw. ein Bauteil aufweist.
  16. Verfahren nach Anspruch 15, wobei die Komponente eine Mehrzahl von Speicherchips (110A110M) aufweist.
  17. Verfahren nach Anspruch 15 oder 16, wobei die Komponente eine Mehrzahl von Kommunikationspfaden (410A410M) aufweist.
  18. Verfahren nach einem der Ansprüche 15 bis 17, wobei jedes Bit innerhalb einer bestimmten Gruppe von Datenbits in einem getrennten Speicherchip gespeichert wird, wodurch keine zwei Bits irgendeiner gegebenen Gruppe innerhalb des selben Speicherchips gespeichert werden.
  19. Verfahren nach Anspruch 18, wobei Bits an entsprechenden Positionen innerhalb der Mehrzahl von Gruppen innerhalb des selben Speicherchips gespeichert werden.
  20. Verfahren nach einem der Ansprüche 11 bis 19, wobei der individuelle Fehlerkorrekturcode für jede aus der Mehrzahl von Gruppen ein Einzelfehler-Hamming-Korrekturcode ist.
DE60015753T 1999-06-01 2000-05-30 System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern Expired - Fee Related DE60015753T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US323795 1994-10-17
US09/323,795 US6473880B1 (en) 1999-06-01 1999-06-01 System and method for protecting data and correcting bit errors due to component failures
PCT/US2000/014944 WO2000073907A1 (en) 1999-06-01 2000-05-30 System and method for protecting data and correcting bit errors due to component failures

Publications (2)

Publication Number Publication Date
DE60015753D1 DE60015753D1 (de) 2004-12-16
DE60015753T2 true DE60015753T2 (de) 2006-02-09

Family

ID=23260753

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60015753T Expired - Fee Related DE60015753T2 (de) 1999-06-01 2000-05-30 System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern

Country Status (7)

Country Link
US (1) US6473880B1 (de)
EP (1) EP1183605B1 (de)
JP (1) JP2003501722A (de)
AT (1) ATE282227T1 (de)
AU (1) AU5174800A (de)
DE (1) DE60015753T2 (de)
WO (1) WO2000073907A1 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996766B2 (en) * 2002-06-28 2006-02-07 Sun Microsystems, Inc. Error detection/correction code which detects and corrects a first failing component and optionally a second failing component
US6973613B2 (en) * 2002-06-28 2005-12-06 Sun Microsystems, Inc. Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure
US6976194B2 (en) * 2002-06-28 2005-12-13 Sun Microsystems, Inc. Memory/Transmission medium failure handling controller and method
US7181674B2 (en) * 2002-06-28 2007-02-20 Sun Microsystems, Inc. Computer system including a network employing redundant information and slicing
US7093190B1 (en) * 2002-07-12 2006-08-15 Unisys Corporation System and method for handling parity errors in a data processing system
US7475326B2 (en) * 2003-06-27 2009-01-06 Maxwell Technologies, Inc. Error detection and correction method and system for memory devices
US7065697B2 (en) * 2003-07-29 2006-06-20 Hewlett-Packard Development Company, L.P. Systems and methods of partitioning data to facilitate error correction
US7051265B2 (en) * 2003-07-29 2006-05-23 Hewlett-Packard Development Company, L.P. Systems and methods of routing data to facilitate error correction
US7530008B2 (en) 2003-08-08 2009-05-05 Sun Microsystems, Inc. Scalable-chip-correct ECC scheme
US7188296B1 (en) 2003-10-30 2007-03-06 Sun Microsystems, Inc. ECC for component failures using Galois fields
US7116600B2 (en) * 2004-02-19 2006-10-03 Micron Technology, Inc. Memory device having terminals for transferring multiple types of data
US7350131B2 (en) * 2005-01-22 2008-03-25 Cisco Technology, Inc. Error protecting groups of data words
JP2006242569A (ja) * 2005-02-28 2006-09-14 Advantest Corp 試験装置、及び試験方法
US7412642B2 (en) * 2005-03-09 2008-08-12 Sun Microsystems, Inc. System and method for tolerating communication lane failures
US7227797B2 (en) * 2005-08-30 2007-06-05 Hewlett-Packard Development Company, L.P. Hierarchical memory correction system and method
US8024639B2 (en) 2006-06-23 2011-09-20 Schweitzer Engineering Laboratories, Inc. Software and methods to detect and correct data structure
EP1887446A1 (de) * 2006-08-02 2008-02-13 Siemens Aktiengesellschaft Verfahren zur seriellen asynchronen Übertragung von Daten in einer Anordnung zur Überwachung, Steuerung und Regelung einer betriebstechnischen Anlage eines Gebäudes
US20080155293A1 (en) * 2006-09-29 2008-06-26 Schweitzer Engineering Laboratories, Inc. Apparatus, systems and methods for reliably detecting faults within a power distribution system
US20080080114A1 (en) * 2006-09-29 2008-04-03 Schweitzer Engineering Laboratories, Inc. Apparatus, systems and methods for reliably detecting faults within a power distribution system
US8055975B2 (en) * 2007-06-05 2011-11-08 Apple Inc. Combined single error correction/device kill detection code
US8250452B2 (en) 2007-08-20 2012-08-21 Infineon Technologies Ag Method and apparatus for embedded memory security
US8301964B2 (en) * 2007-11-19 2012-10-30 Research In Motion Limited Incremental redundancy with resegmentation
US8468432B2 (en) * 2009-07-01 2013-06-18 Silicon Motion, Inc. Coder-decoder and method for encoding and decoding an error correction code
CN102576418A (zh) * 2009-09-24 2012-07-11 寺浦编码研究有限公司 Rfid标签、标签读写器、数据管理系统及数据管理方法
JP5670687B2 (ja) * 2010-09-24 2015-02-18 株式会社テララコード研究所 データ管理システム、rfidタグ及びタグリーダ/ライタ
US8392807B2 (en) * 2010-07-23 2013-03-05 Sandisk Technologies Inc. System and method of distributive ECC processing
US8441768B2 (en) 2010-09-08 2013-05-14 Schweitzer Engineering Laboratories Inc Systems and methods for independent self-monitoring
US9054840B2 (en) * 2011-12-15 2015-06-09 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Error detection and correction of a data transmission
US9007731B2 (en) 2012-03-26 2015-04-14 Schweitzer Engineering Laboratories, Inc. Leveraging inherent redundancy in a multifunction IED
CN103577274B (zh) 2012-07-31 2016-07-06 国际商业机器公司 管理存储器阵列的方法和装置
US9189327B2 (en) 2013-11-19 2015-11-17 International Business Machines Corporation Error-correcting code distribution for memory systems
CN109669805A (zh) * 2018-12-24 2019-04-23 深圳忆联信息系统有限公司 减少校验比特位数的方法、装置、计算机设备及存储介质
US11323362B2 (en) 2020-08-07 2022-05-03 Schweitzer Engineering Laboratories, Inc. Resilience to single event upsets in software defined networks
US11462292B1 (en) 2021-04-12 2022-10-04 Samsung Electronics Co., Ltd. Error correction circuit of semiconductor memory device and semiconductor memory device including the same

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3755779A (en) * 1971-12-14 1973-08-28 Ibm Error correction system for single-error correction, related-double-error correction and unrelated-double-error detection
US3859630A (en) * 1973-01-29 1975-01-07 Burroughs Corp Apparatus for detecting and correcting errors in digital information organized into a parallel format by use of cyclic polynomial error detecting and correcting codes
US4359772A (en) * 1980-11-14 1982-11-16 International Business Machines Corporation Dual function error correcting system
JP2605271B2 (ja) 1987-02-10 1997-04-30 ソニー株式会社 エラー訂正及びチエツク装置
US4958350A (en) 1988-03-02 1990-09-18 Stardent Computer, Inc. Error detecting/correction code and apparatus
US4995041A (en) 1989-02-03 1991-02-19 Digital Equipment Corporation Write back buffer with error correcting capabilities
GR920100163A (el) 1992-04-21 1993-12-30 Koloni Sofia & Sia E E Τεχνικές κατασκευές αυτοεπαλη?ευομένων μονάδων εκτέλεσης αρι?μητικών πράξεων & μονάδων επεξεργασίας δεδομένων βασιζόμενες σε κώδικες διπλής γραμμής & κώδικες άρτιας ή περιττής ισοτιμίας.
US5612965A (en) 1994-04-26 1997-03-18 Unisys Corporation Multiple memory bit/chip failure detection
US5642366A (en) 1994-07-05 1997-06-24 Adaptec, Inc. Global parity symbol for interleaved reed-solomon coded data
JP3234493B2 (ja) 1996-03-11 2001-12-04 三洋電機株式会社 符号誤り訂正方法及び符号誤り訂正装置
US6393597B1 (en) * 1999-06-01 2002-05-21 Sun Microsystems, Inc. Mechanism for decoding linearly-shifted codes to facilitate correction of bit errors due to component failures

Also Published As

Publication number Publication date
JP2003501722A (ja) 2003-01-14
EP1183605A1 (de) 2002-03-06
WO2000073907A1 (en) 2000-12-07
AU5174800A (en) 2000-12-18
EP1183605B1 (de) 2004-11-10
DE60015753D1 (de) 2004-12-16
US6473880B1 (en) 2002-10-29
ATE282227T1 (de) 2004-11-15

Similar Documents

Publication Publication Date Title
DE60015753T2 (de) System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern
DE60117066T2 (de) Verfahren und Vorrichtung zum Überprüfen von fehlerkorrigierenden Codes
DE10133595B4 (de) Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder
DE60006031T2 (de) Speicherfehlerkorrektur mit einem redundanten geschnittenen Speicher und Standard ECC Mechanismus
DE2260850C2 (de) Schaltungsanordnung zur Erkennung von Einzel- und Mehrfachfehlern und zur korrektur von Einzel- und bestimmten Mehrfachfehlern
DE2916710C2 (de)
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE102007038114A1 (de) Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren
DE3125048A1 (de) Erzeugung von fehlerkorrekturpruefbits unter benutzung von paritaetsbits zur durchlaufkontrolle
DE2357116A1 (de) Speichermodul fuer eine datenverarbeitungseinheit
DE2914515A1 (de) Verfahren und vorrichtung fuer ein wirksames fehlerentdeckungs- und korrektursystem
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE2106314B2 (de) Anordnung zur Fehlererkennung und -korrektur in einem aus b Bits bestehenden Byte eines K Datenbytes enthaltenden Datenblocks
WO1998009219A1 (de) Fehlererkennung in einem speichersystem
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE102016102590B4 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
DE60215687T2 (de) Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern
DE102013109315B4 (de) Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors
DE2053836C3 (de) Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen
DE2320354C2 (de) Schaltungsanordnung zur Erkennung und Korrektur von Fehlern in Bitgruppen
US6463563B1 (en) Single symbol correction double symbol detection code employing a modular H-matrix
DE102013222136A1 (de) Schaltung und Verfahren für die Mehr-Bit-Korrektur
DE602004008150T2 (de) Datenfehlerkorrektur mittels Redundanzblöcke

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee