DE602004008150T2 - Datenfehlerkorrektur mittels Redundanzblöcke - Google Patents

Datenfehlerkorrektur mittels Redundanzblöcke Download PDF

Info

Publication number
DE602004008150T2
DE602004008150T2 DE602004008150T DE602004008150T DE602004008150T2 DE 602004008150 T2 DE602004008150 T2 DE 602004008150T2 DE 602004008150 T DE602004008150 T DE 602004008150T DE 602004008150 T DE602004008150 T DE 602004008150T DE 602004008150 T2 DE602004008150 T2 DE 602004008150T2
Authority
DE
Germany
Prior art keywords
blocks
redundancy
data
errors
data blocks
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
DE602004008150T
Other languages
English (en)
Other versions
DE602004008150D1 (de
Inventor
Matt Ball
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.)
Quantum Corp
Original Assignee
Quantum Corp
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 Quantum Corp filed Critical Quantum Corp
Publication of DE602004008150D1 publication Critical patent/DE602004008150D1/de
Application granted granted Critical
Publication of DE602004008150T2 publication Critical patent/DE602004008150T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1803Error detection or correction; Testing, e.g. of drop-outs by redundancy in data representation

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Description

  • HINTERGRUND
  • 1. Gebiet der Erfindung
  • Die vorliegende Anmeldung bezieht sich im Allgemeinen auf das Korrigieren von Daten, die von einem Speichermedium wiederhergestellt werden, und genauer gesagt auf das Verwenden von Redundanzblöcken, um Fehler in von einem Speichermedium wiederhergestellten Daten zu korrigieren.
  • 2. Stand der Technik
  • Daten werden in einer Speichereinrichtung durch Schreiben der Daten in ein Speichermedium in der Speichereinrichtung gespeichert. Die gespeicherten Daten können später von der Speichereinrichtung durch Lesen der Daten von dem Speichermedium wiederhergestellt werden. Aus einer Anzahl von Gründen kann jedoch ein Fehler in den von der Speichereinrichtung wiederhergestellten Daten existieren, was bedeutet, dass die gespeicherten Daten nicht wiederhergestellt werden können oder von den auf dem Speichermedium ursprünglich gespeicherten Daten unterschiedlich sind. Beispielsweise kann ein Abschnitt der auf dem Speichermedium gespeicherten Daten mit der Zeit degenerieren, sodass der Abschnitt der gespeicherten Daten zu einer späteren Zeit nicht ordnungsgemäß gelesen werden kann.
  • Bei einem herkömmlichen Verfahren wird, um derartige Fehler zu korrigieren, ein Satz von Redundanzblöcke für die Daten erzeugt und mit den Daten in dem Speichermedium gespeichert. Wenn die gespeicherten Daten später wiederhergestellt und ein Fehler erfasst wird, werden die Redundanzblöcke verwendet, um die wiederhergestellten Daten zu korrigieren. Typischerweise werden alle Redundanzblöcke in dem Satz von Redundanzblöcke verwendet, um die wiederhergestellten Daten ohne Rücksicht auf die Größe der Fehler in den wiederhergestellten Daten zu korrigieren. Das Zugreifen auf alle Redundanzblöcke konsumiert jedoch Zugriffszeit auf das Speichermedium, erhöht die Anzahl von Berechnungen, die durchgeführt werden müssen, und erhöht die Korrekturzeit.
  • Die EP 1213841 offenbart ein Verfahren zum Bestimmen von Fehlerwerten mit Bestimmen einer Fehlerlokalisation für eine erste Zeile einer Datenentität, Erzeugen eines Fehlersyndroms für die erste Reihe, Bestimmen eines Fehlerkonstanten-Löscharrays von der Fehlerlokalisation, Bestimmen einer Fehlerlokalisation für jede der verbleibenden Zeilen, Erzeugen eines Fehlersyndroms für jede der verbleibenden Zeilen und Bestimmen der Fehlerwerte für jede der Zeilen von der entsprechenden Fehlerlokalisation und dem entsprechenden Fehlersyndrom and der Konstanten.
  • Die EP 0756385 offenbart ein Fehlerkorrektursystem, das die Redundanz eines zweidimensionalen Arrays durch Beseitigen einer übermäßigen Redundanz bei vorherigen Produktcodes verringert, die eine Erfassung von mehr verfälschten Zeilen vorsieht, als andernfalls erfasst werden kann.
  • ZUSAMMENFASSUNG
  • Bei einer beispielhaften Ausführungsform der Erfindung, die ausführlich in den beigefügten unabhängigen Ansprüchen 1, 17 und 25 definiert wird, werden eine Mehrzahl von Datenblöcken und eine Mehrzahl von Redundanzblöcken, die der Mehrzahl von Datenblöcken zugeordnet sind, von einem Speichermedium wiederhergestellt. Ein oder mehrere von dem Speichermedium wiederhergestellte Datenblöcke, die Fehler aufweisen, werden identifiziert und entfernt. Wenn die Anzahl der als fehlerbehaftet identifizierten Datenblöcke kleiner als die Anzahl von wiederhergestellten Redundanzblöcken ist, werden ein oder mehrere überzählige Redundanzblöcke entfernt, und ein oder mehrere beibehaltene Redundanzblöcke werden von den wiederhergestellten Redundanzblöcken behalten. Ein oder mehrere neue Redundanzblöcke werden basierend auf den wiederhergestellten Datenblöcken erzeugt. Ein oder mehrere Restblöcke werden basierend auf dem einen oder mehreren neuen Redundanzblöcken und dem einen oder mehreren beibehaltenen Redundanzblöcken erzeugt. Ein oder mehrere als fehlerbehaftet identifizierte Datenblöcke werden mit dem erzeugten einen oder mehreren Restblöcken korrigiert.
  • KURZE BESCHREIBUNG DER FIGUREN
  • 1 stellt ein beispielhaftes Host-Terminal dar, das mit einer beispielhaften Speichereinrichtung verbunden ist;
  • 2 stellt eine beispielhafte Entität dar, die einen Satz von Datenblöcken, Redundanzblöcken und zyklischen Redundanzprüfcodes aufweist;
  • 3 stellt Abschnitte der beispielhaften Entität von 2 dar;
  • 4 stellt einen beispielhaften Prozess dar, um von einem Speichermedium wiederhergestellte Daten zu korrigieren; und
  • 5 stellt einen beispielhaften Prozess dar, um Einträge einer Fehlerkorrekturmatrix zu erzeugen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung legt zahlreiche spezifische Konfigurationen, Parameter und dergleichen dar. Es ist jedoch ersichtlich, dass diese Beschreibung nicht als eine Beschränkung für den Umfang der Erfindung bestimmt ist, sondern stattdessen vorgesehen ist, um eine bessere Beschreibung von beispielhaften Ausführungsformen bereitzustellen.
  • Mit Bezug auf 1 wird ein Host-Terminal 102 dargestellt, das mit einer Speichereinrichtung 104 verbunden ist. Ein Host-Computer 102 kann jede Art von Computer sein, wie beispielsweise ein Personalcomputer, eine Workstation, ein Server und dergleichen. Eine Speichereinrichtung 104 kann jede Art von Speicherlaufwerk, wie beispielsweise ein Bandlaufwerk, ein Plattenlaufwerk und dergleichen sein. Es sollte ersichtlich sein, dass das Host-Terminal 102 mit einer beliebigen Anzahl von Speichereinrichtungen 104 verbunden sein kann, und eine beliebige Anzahl von Host-Terminals 102 mit einer oder mehreren Speichereinrichtungen 104 verbunden sein kann.
  • Mit weiterem Bezug auf 1 wird bei einer beispielhaften Ausführungsform die Speichereinrichtung 104 konfiguriert, um Fehler in den in der Speichereinrichtung 104 gespeicherten Daten zu erfassen und zu korrigieren. Genauer gesagt wird, wenn in der Speichereinrichtung 104 gespeicherte Daten wiederhergestellt werden, die Speichereinrichtung 104 konfiguriert, um Redundanzblöcke zu verwenden, die ebenfalls als Fehlerkorrekturcode-Redundanzblöcke (ECC-Redundanzblöcke) bezeichnet werden, um Fehler in den wiederhergestellten Daten zu korrigieren, wie beispielsweise, falls die wiederhergestellten Daten von den Daten unterschiedlich sind, die ursprünglich in der Speichereinrichtung 104 gespeichert wurden, oder falls die gespeicherten Daten nicht wiederhergestellt werden können. Außerdem werden bei der vorliegenden beispielhaften Ausführungsform Prüfsummen, wie beispielsweise zyklische Redundanzprüfcodes (CRC-Codes), verwendet, um Fehler in den wiederhergestellten Daten zu erfassen. Es sollte jedoch ersichtlich sein, dass Redundanzblöcke verwendet werden können, um Fehler zu erfassen sowie auch zu korrigieren.
  • Bei der in 1 dargestellten Ausführungsform umfasst eine Speichereinrichtung 104 ein Speichermedium 106, einen Kanal und Lese/Schreib-Kopf 108, einen Prozessor 110 und eine Fehler-Erfassungs/Korrektur-Einheit 112. Bei der Speichereinrichtung 104 werden Daten in dem Speichermedium 106 gespeichert. Der Lese/Schreib-Kopf 108 liest und/oder schreibt Daten in das Speichermedium 106. Ein Prozessor 110 steuert den Betrieb der Speichereinrichtung 104, einschließlich des Betriebs des Kanals und Lese/Schreib-Kopfs 108. Wie nachstehend ausführlicher beschrieben wird, erfasst und korrigiert die Fehler-Erfassungs/Korrektur-Einheit 112 Fehler in im Speichermedium 106 gespeicherter Daten.
  • Bei der vorliegenden beispielhaften Ausführungsform umfasst die Fehler-Erfassungs/Korrektur-Einheit 112 einen Datenpuffer 114, einen Redundanzblock-Codierer/Decodierer 116 und einen CRC-Codierer/Decodierer 118. Wenn Daten auf dem Speichermedium 106 zu speichern sind, werden Daten von dem Host-Terminal 102 empfangen und in den Datenpuffer 114 geschrieben. Der Redundanzblock-Codierer/Decodierer 116 und der CRC-Codierer/Decodierer 118 erzeugen Redundanzblöcke und CRC-Codes für Daten in dem Datenpuffer 114. Der Lese/Schreib-Kopf 108 schreibt dann die Daten und die erzeugten Redundanzblöcke und CRC-Codes in das Speichermedium 106.
  • Wenn Daten von dem Speichermedium 106 zu lesen sind, liest der Lese/Schreib-Kopf 108 Daten und die Redundanzblöcke von dem Speichermedium 106 in den Datenpuffer 114. Wie nachstehend ausführlicher beschrieben wird, werden irgendwelche Fehler in den von dem Speichermedium 106 gelesenen Daten erfasst und mit den CRC-Codes und Redundanzblöcken korrigiert. Die Daten können dann zu dem Host-Terminal 102 transferiert werden.
  • Bei einer beispielhaften Ausführungsform werden Daten zwischen einem Host-Terminal 102 und der Speichereinrichtung 104 in Datensätzen transferiert, die in einem Cache gespeichert sind. Die Datensätze werden dann in Datenblöcke einer vorbestimmten Länge, wie beispielsweise 2 KByte, 4 KByte, 6 KByte und dergleichen aufgeteilt. Es sollte jedoch ersichtlich sein, dass Datenblöcke von verschiedenen Längen verwendet werden können.
  • Bei der vorliegenden beispielhaften Ausführungsform werden, nachdem Datenblöcke von dem Speichermedium 106 wiederhergestellt werden, CRC-Codes verwendet, um Fehler in den wiederhergestellten Datenblöcken zu erfassen, wobei ein Fehler in einem wiederhergestellten Datenblock angibt, dass die Daten in dem wiederhergestellten Datenblock von den Daten in dem Datenblock unterschiedlich sind, wenn die Daten ursprünglich in dem Speichermedium 106 gespeichert wurden. Genauer gesagt wird vor dem Speichern eines Datenblocks in dem Speichermedium 106 ein CRC-Code für den Datenblock erzeugt und mit dem Datenblock in dem Speichermedium 106 gespeichert. Wenn der Datenblock später wiederhergestellt wird, wird ein neuer CRC-Code für den wiederhergestellten Datenblock erzeugt. Der neue CRC-Code wird dann mit dem von dem Speichermedium 106 wiederhergestellten CRC-Code, der dem wiederhergestellten Datenblock entspricht und ursprünglich für den wiederhergestellten Datenblock erzeugt wurde, vor dem Speichern des wiederhergestellten Datenblocks in dem Speichermedium 106 verglichen. Falls sich der neue CRC-Code und der wiederhergestellte CRC-Code unterscheiden, dann wird ein Fehler für diesen Datenblock erfasst.
  • Außerdem werden bei der vorliegenden beispielhaften Ausführungsform Redundanzblöcke verwendet, um Fehler in den wiederhergestellten Datenblöcken zu korrigieren. Genauer gesagt werden vor dem Speichern von Datenblöcken in dem Speichermedium 106 Redundanzblöcke basierend auf den Datenblöcken erzeugt und mit den Datenblöcken im Speichermedium 106 gespeichert. Wie später ausführlicher beschrieben wird, werden, wenn die Datenblöcken später wiederhergestellt werden, als fehlerbehaftet identifizierte Datenblöcke mit den Redundanzblöcken korrigiert.
  • Bei einer beispielhaften Ausführungsform sind die Redundanzblöcke 204 Bose-Chaudhuri-Hocquenghem-Codes (BCH-Codes) und genauer gesagt Reed-Solomon-Codes. Für eine ausführlichere Beschreibung von Reed-Solomon-Codes siehe Peterson & Weldon, Error Correcting Codes, 2. Auflage, MIT Press, 1972, die hier in ihrer Vollständigkeit durch Bezug aufgenommen wird. Es sollte jedoch ersichtlich sein, dass verschiedenen Arten von Fehlerkorrekturcodes verwendet werden können.
  • Bei einer beispielhaften Ausführungsform können ein Satz von Datenblöcken, ein Satz von Redundanzblöcken und ein Satz von CRC-Codes zusammen als eine Gruppe gelesen und geschrieben werden, die als eine "Entität" bezeichnet wird. Beispielsweise wird mit Bezug auf 2 eine Entität 202 dargestellt, die 16 Datenblöcke 204, 4 Redundanzblöcke 206 und 20 CRC-Codes 208 aufweist. Es sollte jedoch ersichtlich sein, dass die Entität 202 verschiedene Anzahlen von Datenblöcken 204, Redundanzblöcken 206 und CRC-Codes 208 aufweisen kann. Außerdem können, wie oben erwähnt, Redundanzblöcke verwendet werden, um ebenso Fehler in den wiederhergestellten Datenblöcken zu korrigieren. Somit können CRC-Codes 208 mit einem Satz von Redundanzblöcken ersetzt werden.
  • 2 stellt die Form dar, in der die Entität 202 im Datenpuffer 114 gespeichert wird (1). Es sollte jedoch ersichtlich sein, dass die Entität 202 physikalisch in der in 2 dargestellten Form existieren muss. Es sollte ebenfalls ersichtlich sein, dass Daten in der Entität 202, und genauer gesagt die Daten in einem Datenblock 204, nicht einer einzelnen Datei entsprechen müssen. Stattdessen werden bei einer beispielhaften Ausführungsform von dem Host-Terminal 102 empfangene Daten (1) verschachtelt. Als solche können die Daten in einem bestimmten Datenblock 204 Abschnitten von getrennten Dateien entsprechen, die von dem Host-Terminal 102 empfangen werden (1).
  • 2 stellt ebenfalls logische Beziehungen zwischen Datenblöcken 204, Redundanzblöcke 206 und CRC-Codes 208 der Entität 202 dar. Mit Bezug auf 3 werden Abschnitte der Entität 202 ausführlicher gezeigt, um die logischen Beziehungen zwischen Datenblöcken 204, Redundanzblöcken 206 und CRC-Codes 208 klarer darzustellen.
  • Wie in 3 dargestellt ist, entspricht ein CRC-Code 208 einem Datenblock 204 oder Redundanzblock 206 und wird verwendet, um einen Fehler in dem Datenblock 204 oder Redundanzblock 206 zu erfassen. Beispielsweise entspricht der CRC-Code CRC19 dem Datenblock D19 der Entität 202. Somit wird, um einen Fehler in dem Datenblock D19 zu erfassen, nach Wiederherstellen des Datenblocks D19 von dem Speichermedium 106 (1) ein neuer CRC-Code CRC19' für den wiederhergestellten Datenblock D19 erzeugt. Der neue CRC-Code CRC19' wird dann mit dem von dem Speichermedium 106 wiederhergestellten CRC-Code verglichen (1), der dem wiederhergestellten Datenblock D19 (d.h., dem CRC-Code CRC19) entspricht. Falls sich der neue CRC-Code CRC19' und der wiederhergestellte CRC-Code CRC19 unterscheiden, dann wird ein Fehler für den Datenblock D19 erfasst.
  • Bei der vorliegenden beispielhaften Ausführungsform kann ein Redundanzblock verwendet werden, um einen Datenblock 204 der Entität 202 zu korrigieren. Somit kann bei dem in 2 dargestellten Beispiel eine Gesamtzahl von 4 Redundanzblöcken 206 verwendet werden, um eine Gesamtzahl von 4 Datenblöcken 204 der Entität 202 zu korrigieren, die eine Gesamtzahl von 16 Datenblöcken 204 aufweist. Beispielsweise kann der Redundanzblock E3 verwendet werden, um einen ersten Datenblock der Entität 202 zu korrigieren. Der Redundanzblock E2 kann verwendet werden, um einen zweiten Datenblock der Entität 202 zu korrigieren. Der Redundanzblock E1 kann verwendet werden, um einen dritten Datenblock der Entität 202 zu korrigieren. Der Redundanzblock E0 kann verwendet werden, um einen vierten Datenblock der Entität 202 zu korrigieren.
  • Bei der vorliegenden beispielhaften Ausführungsform wird jeder Redundanzblock 204 basierend auf den Daten in allen Datenblöcken der Entität 202 erzeugt. Beispielsweise werden Redundanzblöcke E0, E1, E2 und E3 jeweils basierend auf den Daten in den Datenblöcken D4, D2... und D19 erzeugt. Wie oben mit Bezug auf 1 beschrieben ist, werden Redundanzblöcke 204 durch den Redundanzblock-Codierer 116 erzeugt. Wie ebenfalls oben beschrieben ist, werden Redundanzblöcke anfangs für Daten erzeugt, die vom Host-Terminal 102 empfangen werden. Die erzeugten Redundanzblöcke und die empfangenen Daten werden dann im Speichermedium 106 gespeichert.
  • Mit erneutem Bezug auf 3 ist, obwohl Redundanzblöcke E0, E1, E2 und E3 basierend auf dem gleichen Satz von Daten erzeugt werden (d.h., Datenblöcke 204 der Entität 202), jeder Redundanzblock 204 hinsichtlich jedem anderen eindeutig. Genauer gesagt sind bei der vorliegenden Ausführungsform die Redundanzblöcke E0, E1, E2 und E3 Bose-Chaudhuri-Hocquenghem-Codes (BCH-Codes) und genauer gesagt Reed-Solomon-Codes. Die Redundanzblöcke E0, E1, E2 und E3 werden mit dem Redundanzblock-Codierer 116 erzeugt (1). Für eine Beschreibung eines beispielhaften Codierers siehe das U.S. Patent No. 5136 592 mit dem Titel ERROR DETECTION AND CORRECTION SYSTEM FOR LONG BURST ERRORS, erteilt am 4.August, 1992, das hier durch Bezug in seiner Vollständigkeit aufgenommen ist.
  • Mit Bezug auf 4 wird ein beispielhafter Prozess 402 zum Korrigieren von Fehlern in Datenblöcken, die von einem Speichermedium wiederhergestellt wurden, mit Redundanzblöcken dargestellt. Genauer gesagt stellt 4 einen beispielhaften Prozess 402 dar, der als ein Computerprogramm implementiert wird, das Computer-ausführbare Anweisungen umfasst, um den Betrieb einer Speichereinrichtung zu steuern. Beispielsweise kann mit Bezug auf 1 der in 4 dargestellte Prozess den Betrieb des Prozessors 110 der Speichereinrichtung 104 steuern. Es sollte jedoch ersichtlich sein, dass der beispielhafte Prozess 402 (4) in Hardware, wie beispielsweise in einer anwendungsspezifischen integrierten Schaltung (ASIC = Application-Specific Integrated Circuit), implementiert werden kann.
  • Mit Bezug auf 4 sollte ersichtlich sein, dass der Prozess 402 annimmt, dass ein Satz von Redundanzblöcken zuvor für einen Satz von Datenblöcken erzeugt wurde, und der Satz von Redundanzblöcken und der Satz von Datenblöcken zuvor auf dem Speichermedium gespeichert wurden. Beispielshalber sei angenommen, dass n Redundanzblöcke für m Datenblöcke erzeugt wurden. Somit ist bei dem in 2 dargestellten Beispiel n gleich 4 und m gleich 16.
  • Mit erneutem Bezug auf 4 werden bei 404 ein Satz von Datenblöcken und ein Satz von Redundanzblöcke von dem Speichermedium gelesen. Außerdem wird bei der vorliegenden beispielhaften Ausführungsform ein Satz von CRC-Codes von dem Speichermedium gelesen. Wie oben erwähnt, kann ein anderer Satz von Redundanzblöcken anstelle des Satzes von CRC-Codes verwendet werden.
  • Bei 406 werden Datenblöcke mit Fehlern identifiziert und entfernt. Wie oben beschrieben ist, werden bei der vorliegenden Ausführungsform CRC-Codes verwendet, um Datenblöcken zu identifizieren, die Fehler aufweisen. Die als fehlerbehaftet identifizierten Datenblöcken können dann als „gelöscht" markiert werden.
  • Bei einer beispielhaften Ausführungsform, bei der die Speichereinrichtung 104 (1) ein Bandlaufwerk und das Speichermedium 106 (1) ein Magnetband ist, werden die Datenblöcke und Redundanzblöcke von dem Magnetband gelesen und in einem Datenpuffer gespeichert. Wenn ein Datenblock oder ein Redundanzblock gelesen wird, wird der dem Datenblock oder Redundanzblock entsprechende CRC-Code ebenfalls von dem Magnetband gelesen. Ein neuer CRC-Code wird basierend auf dem von dem Magnetband gelesenen Datenblock oder Redundanzblock erzeugt und dann wird der neue CRC-Code mit dem wiederhergestellten CRC-Code verglichen. Falls sich der neue CRC-Code und der wiederhergestellte CRC-Code unterscheiden, dann wird ein Fehler erfasst und der wiederhergestellte Datenblock oder Redundanzblock als fehlerbehaftet markiert. Somit werden bei dieser beispielhaften Ausführungsform die CRC-Codes nicht in dem Datenpuffer mit den wiederhergestellten Datenblöcken und Redundanzblöcke gespeichert. Es sollte jedoch ersichtlich sein, dass die CRC-Codes zur späteren Verwendung gespeichert werden können. Außerdem können die Datenblöcke, Redundanzblöcke und die CRC-Codes von dem Magnetband wiederhergestellt und zusammen in dem Datenpuffer gespeichert werden, wobei dann die Datenblöcke und/oder Redundanzblöcke mit Fehlern mit den in dem Datenpuffer gespeicherten CRC-Codes identifiziert werden können.
  • Bei 408 werden irgendwelche überzähligen Redundanzblöcke entfernt. Wie oben beschrieben ist, kann ein Redundanzblock verwendet werden, um einen Datenblock in dem Satz von Datenblöcken zu korrigieren, die von dem Speichermedium wiederhergestellt wurden. Somit können von den m Datenblöcken, die von dem Speichermedium wiederhergestellt wurden, n Datenblöcke mit n Redundanzblöcken korrigiert werden. Falls l Datenblöcke als fehlerbehaftet identifiziert wurden und l kleiner als n ist, dann können die überzähligen Datenblöcke (d.h., n – l) entfernt werden.
  • Somit werden bei dem in 2 dargestellten Beispiel, bei dem 4 Redundanzblöcke verwendet werden (n = 4), falls 4 Datenblöcke als fehlerbehaftet identifiziert werden (l = 4), dann keine Redundanzblöcke entfernt (n – l = 4 – 4 = 0). Falls jedoch 3 Datenblöcke als fehlerbehaftet identifiziert werden (l = 3), dann wird 1 Redundanzblock entfernt (n – l = 4 – 3 = 1). Falls 2 Datenblöcke mit Fehlern identifiziert werden (l = 2), dann werden 2 Redundanzblöcke entfernt (n – l = 4 – 2 = 2). Falls 1 Datenblock als fehlerbehaftet identifiziert wird (l = 1), dann werden 3 Redundanzblöcke entfernt (n – l = 4 – 1 = 3). Mit erneutem Bezug auf 4 sei bemerkt, dass dann, falls keine Datenblöcke als fehlerbehaftet identifiziert werden (l = 0), der Fehlerkorrekturprozess 402 nicht durchgeführt werden müsste.
  • Bei 410 werden neue Redundanzblöcke basierend auf den wiederhergestellten Datenblöcken erzeugt. Bei der vorliegenden beispielhaften Ausführungsform werden beim Erzeugen von neuen Redundanzblöcken basierend auf den wiederhergestellten Datenblöcken die als fehlerbehaftet identifizierten Datenblöcke bei 408 mit Dummy-Datenblöcken ersetzt, die nur Nullen enthalten. Alternativ können die neuen Redundanzblöcke basierend auf den wiederhergestellten Datenblöcken erzeugt werden, während die als fehlerbehaftet identifizierten Datenblöcken behalten werden. Außerdem werden bei der vorliegenden beispielhaften Ausführungsform mit Bezug auf 1 neue Redundanzblöcke mit einem Redundanzblock-Codierer 118 erzeugt.
  • Beispielsweise sei mit Bezug auf 2 angenommen, dass erste und dritte Datenblöcke als fehlerbehaftet identifiziert werden. Somit werden 2 Datenblöcke als fehlerbehaftet identifiziert (d.h., l = 2). Somit werden 2 neue Redundanzblöcke (d.h., l = 2) basierend auf den wiederhergestellten Daten berechnet. Wie oben beschrieben ist, werden beim Erzeugen der 2 neuen Redundanzblöcke die ersten und dritten Datenblöcke mit Dummy-Datenblöcken ersetzt, die nur Nullen enthalten.
  • Bei 412 werden Restblöcke basierend auf den neuen Redundanzblöcken und den wiederhergestellten Redundanzblöcken erzeugt. Genauer gesagt wird ein Restblock durch Durchführen einer Exklusiv-ODER-Verküpfung (XOR Operation) zwischen einem neuen Redundanzblock und einem wiederhergestellten Redundanzblock erzeugt. Mathematisch ist der Restblock ein Rest von dem Teilens eines wiederhergestellten Codeworts durch ein Generatorpolynom. Die Anzahl von erzeugten Restblöcken entspricht wiederum der Anzahl der als fehlerbehaftet identifizierten Datenblöcke (d.h., l).
  • Bei 414 werden die als fehlerbehaftet identifizierten Datenblöcke mit den erzeugten Restblöcken korrigiert. Bei der vorliegenden beispielhaften Ausführungsform wird, bei der Reed-Solomon-Codes verwendet werden, ein als fehlerbehaftet identifizierte Datenblock durch Durchführen einer Galois-Feld-Matrixmultiplikationsverknüpfung zwischen dem Satz von erzeugten Restblöcken und einer Korrekturmatrix korrigiert.
  • Bei der vorliegenden beispielhaften Ausführungsform werden, um eine Korrekturmatrix zur Verwendung beim Korrigieren von Datenblöcken mit Fehlern zu erzeugen, Daten und Redundanzblocksymbole, die eine Grund-Redundanzblock-Einheit bilden, als ein Codewort gruppiert. Beispielsweise umfasst mit Bezug auf 2 ein Codewort 210 ein 8-Bit-Symbol von jedem Datenblock 204 und Redundanzblock 206 in der Entität 202. Somit gibt es dann, wenn die Datenblöcke 204 2 KByte lang sind, 2.000 Codewörter. Es sollte jedoch ersichtlich sein, dass Codewörter 210 und Datenblöcke 204 von beliebigen Längen sein können.
  • Ein Codewortpolynom ist eine Kombination von Datenpolynomen und Redundanzblockpolynomen. Genauer gesagt ist ein Datenblockpolynom:
    Figure 00140001
    wobei M die Anzahl von Datenblöcken und Di ein bestimmter Datenblock ist. Ein Redundanzblockpolynom ist:
    Figure 00140002
    wobei N die Anzahl von Redundanzblöcken und Ei ein bestimmter Redundanzblock ist. Somit ist ein Codewortpolynom:
    Figure 00140003
  • Das Redundanzblockpolynom ist der Rest von dem Dividierens des Datenblockpolynoms durch ein Generatorpolynom (G(x)). Das Generatorpolynom G(x) enthält N aufeinanderfolgende Potenzen von α als Wurzeln, wobei α ein primitives Element in einem Galois-Feld ist. Bei der vorliegenden beispielhaften Ausführungsform wird angenommen, dass die erste Wurzel von G(x) gleich α0 ist, was das Rechenausmaß verringert. Somit ist das Generatorpolynom, unter der Annahme, dass die erste Wurzel gleich α0 ist:
    Figure 00150001
  • Bei einer beispielhaften Ausführungsform kann das folgende Generatorpolynom verwendet werden: G(x) = (x – α0) (x – α1) (x – α2) (x – α3) = + x4 + α75x3 + a249x2 + α78x + α6 = x4 + (15)x3 + (54)x2 + (120)x + (64),wobei das Galois-Feld durch g(x) = x8 + x4 + x3 + x2 + 1 und α = 00000010 definiert wird. Es sei bemerkt, dass die Galois-Feld-Mathematik nicht zwischen Addition und Subtraktion unterscheidet. Somit ist A + A = 0, genauso wie A – A = 0. Manchmal ist es jedoch zweckmäßig, einen "–" Operator zu verwenden, um hervorzuheben, dass A + A = 0 ist.
  • Die Beziehung zwischen D(x), E(x) und G(x) wird nachstehend zusammengefasst:
    Figure 00150002
  • Es sei bemerkt, dass Q(x) der Quotient von der Division von D(x)xN durch G(x) ist. Durch Neuanordnen der Gleichung wird das Folgende erhalten: D(x)xN + F(x) = Q(x)G(x).
  • Es sei bemerkt, dass die linke Seite der Gleichung ebenfalls die Definition des Codewortpolynoms ist: C(x) = Q(x)G(x).
  • Somit ist das Codewortpolynom ein Vielfaches des Generatorpolynoms. Außerdem ist C(x) Null, falls x eine Wurzel von G(x) ist.
  • Es sei nun angenommen, dass C'(x) ein Codewort mit Datenblöcken ist, die Fehler aufweisen. Das Auswerten von C'(x) mit einer Wurzel von G(x) erzeugt ein Teilsyndrom. Es gibt ein Teilsyndrom für jede Wurzel von G(x). Falls alle Teilsyndrome Null sind, dann existiert kein Fehler innerhalb des Codeworts. Wenn irgendwelche der Teilsyndrome Nicht-Null sind, dann existiert ein Fehler irgendwo innerhalb des Codeworts.
  • Es sei nun angenommen, dass Y(x) ein Fehlerpolynom ist. Die folgenden beiden Gleichungen beschreiben Y(x):
    Figure 00160001
    C'(x) = Y(x) + C(x)wobei ρ die Anzahl von wiederhergestellten Datenblöcken und Redundanzblöcken mit Fehlern, Yi der Wert eines bestimmten Fehlers (wobei i zwischen 0 und ρ – 1 ist) und Bi die Blocknummer (Lokalisation) eines bestimmten Fehlers ist. Es sei angenommen, dass D'(x) den Satz von wiedergewonnenen Datenblöcken umfasst und E'(x) den Satz von wiedergewonnenen Redundanzblöcke enthält. Somit C'(x) = D'(x)xN + E'(x).
  • Wie oben beschrieben ist, wird bei der vorliegenden beispielhaften Ausführungsform ein neuer Satz von Redundanzblöcken (E(x)) basierend auf Datenblöcken erzeugt, die von dem Datenspeichermedium (D'(x)) mit dem Redundanzblock-Codierer 116 wiederhergestellt wurden (1). Das entsprechende Codewort (C(x)) wird dann: C(x) = D'(x)xN + E(x).
  • Es sei bemerkt, dass C(x) = 0 ist, wenn x gleich einer Wurzel des Generatorpolynoms G(x) ähnlich C(x) ist.
  • Als nächstes wird ein Fehlerpolynom (Y(x)) basierend auf den Gleichungen von oben erhalten. Die erste Gleichung ist die Gleichung für C'(x): D'(x)xN + E'(x) = Y(x) + C(x) (= C'(x)).
  • Die zweite Gleichung ist die Gleichung für C(x): D'(x)xN + E(x) = C(x).
  • Durch Addieren dieser Gleichungen wird das Folgende erhalten: D'(x)xN + E'(x) + D'(x)xN + E(x) = Y(x) + C(x) + C(x).
  • Bei der Galois-Feld-Mathematik ist A + A = 0. Daher können D'(x) Glieder entfernt werden: E'(x) + E(x) = Y(x) + C(x) + C(x).
  • Durch Auswerten dieser Gleichung, wobei x eine Wurzel des Generatorpolynoms ist, gehen die Glieder C(x) und C(x) beide gegen Null: Y(x) = E'(x) + E(x)(wenn x eine Wurzel von G(x) ist).
  • Durch Austauschen von Y(x), E'(x) und E(x) mit ihren Summationsbeschreibungen, werden die folgenden Gleichungen erhalten:
    Figure 00180001
  • Es gibt N Gleichungen, die das Fehlerlokalisationspolynom beschreiben – eine Gleichung für jede Wurzel von G(x). Falls α0 die erste Wurzel von G(x) ist, dann werden die obigen Gleichungen:
    Figure 00180002
    (mit vertauschten Exponenten).
  • Diese Gleichung stellt das j-te Teilsyndrom dar.
  • Im Allgemeinen berechnen herkömmliche Reed-Solomon-Decodier-Verfahren die Teilsyndrome direkt und lösen nach Y(x) auf. Das Berechnen der Teilsyndroms erfordert typischerweise zusätzliche Hardware. Wie nachstehend beschrieben ist, wird bei der vorliegenden beispielhaften Ausführungsform Y(s) ohne Verwenden von Hardware bestimmt, um Teilsyndrome zu berechnen.
  • Bei der vorliegenden beispielhaften Ausführungsform wird ein Fehlerlokalisationswert (Xj) mit der folgenden Gleichung bestimmt: Xi = α
  • Der Fehlerlokalisationswert bleibt während des ganzen Korrekturprozesses konstant, und kann mit einer Nachschlagtabelle oder durch andere Potentzierungsverfahren berechnet werden.
  • Die Teilsyndrom-Gleichung kann durch Verwenden von Xi anstatt von Bi vereinfacht werden. Genauer gesagt wird die Teilsyndrom-Gleichung:
    Figure 00190001
  • Durch Ausschreiben aller N Teilsyndrom-Gleichungen wird die folgende Matrixgleichung erhalten:
    Figure 00200001
  • Die Matrix ganz links ist eine Fehlerlokalisationsmatrix. Es sei bemerkt, dass die Fehlerlokalisationsmatrix lediglich von den Lokalisationen der Datenblöcke mit Fehlern abhängt. Die Matrix ganz rechts ist eine Redundanzblocklokalisationsmatrix, die lediglich von den statischen Lokalisationen der Redundanzblöcke abhängt. Die Blocknummern der Redundanzblöcke sind 0 bis N-1, wobei N die Anzahl von Redundanzblöcken ist. Die Datenblöcke beginnen mit der Blocknummer N und steigen weiter nach oben. Außerdem ist der Spaltenvektor ganz rechts der Satz von Restblöcken.
  • Sowohl die Fehlerlokalisationsmatrix als auch die Redundanzblocklokalisationsmatrix sind Vandermonde-Matrizen. Eine Eigenschaft einer Vandermonde-Matrix ist, dass sie immer eine inverse Matrix aufweist, sogar falls die Matrix nicht quadratisch ist. Eine andere Eigenschaft einer Vandermonde-Matrix ist, dass die Inversion O(N2) Verknüpfungen erfordert, was im Gegensatz zu einer allgemeinen Matrix ist, die O(N3) Verknüpfungen erfordert.
  • Um nach den Fehlerwerten (Y;) zu lösen, wird die Inverse der Fehlerlokalisationsmatrix erhalten. Das Ergebnis wird dann mit der Redundanzblocklokalisationsmatrix multipliziert.
  • Um die Inverse der Fehlerlokalisationsmatrix zu erhalten, wird ein Fehlerlokalisationspolynom (σ(x)) berechnet. Das Fehlerlokalisationspolynom wird definiert als:
    Figure 00200002
    wobei ρ die Anzahl von Datenblöcken und Redundanzblöcken mit Fehlern und Xi eine bestimmte Fehlerlokalisation ist. Es sei bemerkt, dass das Fehlerlokalisationspolynom gleich Null ist, wenn x gleich einer Fehlerlokalisation ist.
  • Außerdem wird eine Funktion σ( j )(x) bei jeder Fehlerlokalisation j wie folgt bestimmt:
    Figure 00210001
  • Die Funktion σ( j)(x) ist Null, wenn x gleich einer Fehlerlokalisation mit Ausnahme der Fehlerlokalisationen j ist.
  • Jede Zeile der Inversen der Fehlerlokalisationsmatrix enthält die Koeffizienten des folgenden Polynoms:
    Figure 00210002
  • In Matrixform ist die Inverse der Fehlerlokalisationsmatrix wie folgt:
    Figure 00210003
  • Es sei bemerkt, dass die Spalten der Fehlerlokalisationsmatrix gleich einer Konstante ist, die zu ansteigenden Potenzen potenziert wird. Somit ist das Multiplizieren der Fehlerlokalisationsmatrix durch ihre Inverse das gleiche wie das Auswerten von σ( j )(x), wobei x gleich einer Fehlerlokalisation (Xi) ist. Das Ergebnis ist die Identitätsmatrix.
  • Um die Fehlerkorrekturmatrix zu berechnen, wird die Inverse der Fehlerlokalisationsmatrix mit der Redundanzblocklokalisationsmatrix multipliziert. Da die Redundanzblocklokalisationsmatrix eine Vandermonde-Matrix ist, ist jede Spalte gleich einer mit ansteigenden Potenzen potenzierten Konstante. Das Multiplizieren dieser beiden Matrizen zusammen ist das Gleiche wie das Auswerten von (x) bei der Konstanten in jeder Spalte der Redundanzblocklokalisationsmatrix. Somit ist die allgemeine Form der Fehlerkorrekturmatrix wie folgt:
    Figure 00220001
  • Es sei bemerkt, dass der Nenner für eine bestimmte Zeile konstant ist. Daher muss der Nenner lediglich ρ Male anstatt von (ρ × N) Malen berechnet werden. Die Fehlerkorrekturmatrix bringt die zu korrigierenden Daten mit den Restblöcken in Beziehung.
  • Bei der vorliegenden beispielhaften Ausführungsform wird die Fehlerkorrekturmatrix vereinfacht/reduziert. Genauer gesagt kann die Fehlerkorrekturmatrix einfacher gemacht werden, falls die Anzahl von fehlenden Datenblöcken geringer als die maximale Anzahl von Redundanzblöcken (N) ist. Wie oben beschrieben ist, werden, wenn die Anzahl von Redundanzblöcke die Anzahl von Datenblöcken mit Fehler überschreitet, die überzähligen Redundanzblöcke entfernt. Die Fehlerkorrekturmatrixgröße ändert sich von ρ × N in die Größe N × N, was anfangs den Anschein hat, die Größe der Fehlerkorrekturmatrix erhöht zu haben. Die neue Fehlerkorrekturmatrix weist jedoch nun triviale Spalten auf, die jedem überzähligen Redundanzblock entspricht (der Grund ist, dass die Lokalisation des entfernen Redundanzblocks Teil des Fehlerlokalisationspolynoms σ(x) ist). Außerdem kann jede Zeile, die einem überzähligen Redundanzblock entspricht, unter der Annahme entfernt werden, dass der überzählige Redundanzblock nicht rekonstruiert wird. Mit diesen Änderungen ist die Größe der Fehlerkorrekturmatrix nun ν × ν, wobei ν die Anzahl von Datenblöcken mit Fehlern ist. Somit ist die allgemeine Lösung zur Wiedererzeugung der Datenblöcke mit Fehlern wie folgt:
    Figure 00230001
    wobei Zi die Lokalisation eines Redundanzblocks ist, der nicht gelöscht wurde. Außerdem ist der Spaltenvektor ganz rechts der Satz von Restblöcken. Die vereinfachte Korrekturmatrix bringt die zu korrigierenden Datenblöcke mit den Restblöcken in Beziehung.
  • Die allgemeine Gleichung für jeden Eintrag der Fehlerkorrekturmatrix (U), die eine ν × ν Matrix ist, bei Zeile i und Spalte j ist wie folgt:
    Figure 00240001
  • Es sei bemerkt, dass, falls irgendein Eintrag in Zj gleich Xk ist, dann dieser Eintrag in U Null ist, was auftritt, wenn überzählige Redundanzblocklokalisationen in Xk aufgenommen werden. Da diese Spalten trivial sind, werden sie nicht aufgenommen.
  • Außerdem wird mit Bezug auf 5 ein beispielhafter Prozess 502 zum Erzeugen jedes Eintrags der Fehlerkorrekturmatrix dargestellt. Der beispielhafte Prozess 502 kann als ein Computerprogramm implementiert werden, das Computer-ausführbare Anweisungen umfasst, um den Betrieb einer Speichereinrichtung zu steuern. Beispielsweise kann mit Bezug auf 1 der beispielhafte Prozess 502 (5) den Betrieb des Prozessors 110 der Speichereinrichtung 104 steuern. Es sollte jedoch ersichtlich sein, dass der beispielhafte Prozess 502 (5) in Hardware, wie beispielsweise in einer anwendungsspezifischen integrierten Schaltung (ASIC = Application-Specific Integrated Circuit), implementiert werden kann.
  • Obwohl beispielhafte Ausführungsformen beschrieben wurden, können verschiedene Modifikationen ohne Abweichen von dem Umfang der Erfindung durchgeführt werden, wie durch die beigefügten Ansprüche definiert ist.

Claims (25)

  1. Verfahren (402) zum Korrigieren von Fehlern in von einem Speichermedium (106) wiederhergestellten Daten (202) mit: Wiederherstellen einer Mehrzahl von Datenblöcken (204) von dem Speichermedium (106); Wiederherstellen einer Mehrzahl von der Mehrzahl von Datenblöcken (204) zugeordneten Redundanzblöcken (206) von dem Speichermedium (106); Identifizieren (406) eines oder mehrerer der von den Speichermedium (106) wiederhergestellten Datenblöcke als fehlerbehaftet; Entfernen (406) des einen oder mehrerer als fehlerbehaftet identifizierten Datenblöcke; wenn die Anzahl von als fehlerbehaftet identifizierten Datenblöcken geringer als die Anzahl von wiederhergestellten Redundanzblöcken ist, Entfernen (408) eines oder mehrerer überzähliger Redundanzblöcke und Behalten eines oder mehrerer beibehaltener Redundanzblöcke von den wiederhergestellten Redundanzblöcken (206); Erzeugen eines oder mehrerer Redundanzblöcke basierend auf den wiederhergestellten Datenblöcken; Erzeugen (412) eines oder mehrerer neuer Restblöcke basierend auf dem einen oder mehreren neuen Redundanzblöcken und dem einen oder mehreren beibehaltenen Redundanzblöcken; und Korrigieren (414) des einen oder mehreren als fehlerbehaftet identifizierten Datenblöcke mit dem erzeugten einen oder mehreren Restblöcken.
  2. Verfahren gemäß Anspruch 1, bei dem das als fehlerbehaftet Identifizieren (406) eines oder mehrerer von den Speichermedium (106) wiederhergestellter Datenblöcke umfasst: Wiederherstellen von dem Speichermedium (106) einer einem wiederhergestellten Datenblock zugeordneten Prüfsumme; Erzeugen einer neuen Prüfsumme basierend auf dem wiederhergestellten Datenblock; und Vergleichen der wiederhergestellten Prüfsumme mit der neuen Prüfsumme, um zu bestimmen, ob der wiederhergestellte Datenblock Fehler aufweist.
  3. Verfahren gemäß Anspruch 2, bei dem die Prüfsumme ein zyklischer Redundanzcode (208) ist.
  4. Verfahren gemäß Anspruch 1, bei dem das Entfernen (406) des einen oder der mehreren als fehlerbehaftet identifizierten Blöcke umfasst: Markieren des einen oder der mehreren als fehlerbehaftet identifizierten Datenblöcke als "Gelöscht".
  5. Verfahren gemäß Anspruch 1, bei dem die Anzahl von beibehaltenen Redundanzblöcken gleich der Annzahl von ALS fehlerbehaftet identifizierten Datenblöcken ist.
  6. Verfahren gemäß Anspruch 1, bei dem der eine oder mehrere Redundanzblöcke basierend den wiederhergestellten Datenblöcken erzeugt werden, wobei der eine oder die mehreren Datenblöcke identifiziert werden, bei denen Fehler entfernt wurden.
  7. Verfahren gemäß Anspruch 1, bei dem die Anzahl neuer Redundanzblöcke gleich der Anzahl der als fehlerbehaftet identifizierten Datenblöcke ist.
  8. Verfahren gemäß Anspruch 1, bei dem das Erzeugen (412) eines oder mehrerer Restblöcke umfasst: Durchführen einer Exklusiv-ODER-Verknüpfung zwischen einem neuen Redundanzblock und einem wiederhergestellten Redundanzblock.
  9. Verfahren gemäß Anspruch 1, bei dem die Restblöcke Syndrome sind.
  10. Verfahren gemäß Anspruch 1, bei dem ein Restblock ein Rest nach Teilen eines wiederhergestellten Codeworts durch ein Generatorpolynom ist.
  11. Verfahren gemäß Anspruch 1, bei dem das Korrigieren des einen oder der mehreren als fehlerbehaftet identifizierten Datenblöcke umfasst: Durchführen einer Galois-Feld-Matrixmultiplikationsverknüpfung zwischen dem einen oder mehreren erzeugten Restblöcken und einer Korrekturmatrix.
  12. Verfahren gemäß Anspruch 11, bei dem die Korrekturmatrix einen oder mehrere zu korrigierende Datenblöcke auf den einen oder mehrere Restblöcke bezieht.
  13. Verfahren gemäß Anspruch 11, ferner mit: Entfernen einer oder mehrerer dem einen oder mehreren überzähligen Redundanzblöcken entsprechenden Zeilen von der Korrekturmatrix, um eine reduzierte Redundanzmatrix zu erzeugen, wobei eine Galois-Feld-Matrixmultiplikationsverknüpfung zwischen dem einen oder mehreren erzeugten Restblöcken und der reduzierten Korrekturmatrix und nicht der Korrekturmatrix durchgeführt wird.
  14. Verfahren gemäß Anspruch 13, bei dem die Anzahl der Zeilen der reduzierten Matrix gleich der Anzahl der als fehlerbehaftet identifizierten Datenblöcke ist.
  15. Verfahren gemäß Anspruch 1, bei dem die Mehrzahl von Redundanzblöcken Bose-Chaudhuri-Hocquenghem-Codes (BCH-Codes) sind.
  16. Verfahren gemäß Anspruch 15, bei dem die BCH-Codes Reed-Solomon-Codes sind.
  17. System zum Korrigieren von Fehlern in Daten, die von einem Speichermedium (106) wiederhergestellt werden, mit: einem Datenpuffer (114), mit: einer Mehrzahl von dem Speichermedium (106) wiederhergestellter Datenblöcken (204); einer Mehrzahl von dem Speichermedium (106) wiederhergestellter Redundanzblöcken (206); und einem Prozessor (110), der konfiguriert ist, um einen oder mehrere von den Speichermedium (106) wiederhergestellter Datenblöcke als fehlerbehaftet zu identifizieren; den einen oder die mehreren als fehlerbehaftet identifizierten Datenblöcke zu entfernen, wenn die Anzahl von als fehlerbehaftet identifizierten Datenblöcken geringer als die Anzahl von wiederhergestellten Redundanzblöcken ist, einen oder mehrere überzählige Redundanzblöcke zu entfernen (408) und einen oder mehrere Redundanzblöcke von den wiederhergestellten Redundanzblöcken (206) zu behalten; einen oder mehrere Redundanzblöcke basierend auf den wiederhergestellten Datenblöcken zu erzeugen (410); einen oder mehrere Restblöcke basierend auf dem einen oder mehreren neuen Redundanzblöcken und dem einen oder mehreren beibehaltenen Redundanzblöcken zu erzeugen (412); und den einen oder die mehreren als fehlerbehaftet identifizierten Datenblöcke mit dem erzeugten einen oder mehreren Restblöcken zu korrigieren (414).
  18. System gemäß Anspruch 17, bei dem die Anzahl von beibehaltenen Redundanzblöcken gleich der Annzahl von als fehlerbehaftet identifizierten Datenblöcken ist.
  19. System gemäß Anspruch 17, bei dem der eine oder die mehreren Redundanzblöcke basierend auf den wiederhergestellten Datenblöcken erzeugt werden, wobei der eine oder die mehreren Datenblöcke, deren Fehler entfernt wurden, identifiziert werden.
  20. System gemäß Anspruch 17, bei dem die Anzahl neuer Redundanzblöcke gleich der Anzahl der als fehlerbehaftet identifizierten Datenblöcke ist.
  21. System gemäß Anspruch 17, bei dem der eine oder mehrere Restblöcke erzeugt werden durch: Durchführen einer Exklusiv-ODER-Verknüpfung zwischen einem neuen Redundanzblock und einem wiederhergestellten Redundanzblock.
  22. System gemäß Anspruch 17, bei dem der eine oder die mehreren als fehlerbehaftet identifizierten Datenblöcke korrigiert werden durch: Durchführen einer Galois-Feld-Matrixmultiplikationsverknüpfung zwischen dem einen oder den mehreren erzeugten Restblöcken und einer Korrekturmatrix.
  23. System gemäß Anspruch 22, bei dem der Prozessor ferner konfiguriert ist, um: eine oder mehrere dem einen oder den mehreren überzähligen Redundanzblöcken entsprechenden Zeilen von der Korrekturmatrix zu entfernen, um eine reduzierte Redundanzmatrix zu erzeugen, wobei eine Galois-Feld-Matrixmultiplikationsverknüpfung zwischen dem einen oder den mehreren erzeugten Restblöcken und der reduzierten Korrekturmatrix und nicht der Korrekturmatrix durchgeführt wird.
  24. System gemäß Anspruch 23, bei dem die Anzahl von Zeilen der reduzierten Matrix gleich der Anzahl der als fehlerbehaftet identifizierten Datenblöcke ist.
  25. Computerprogrammprodukt, mit einem computerlesbaren Medium, das darauf ein Computerprogramcodemittel aufweist, das angepasst ist, wenn das Programm durch einen Computer ausgeführt wird, um den Computer dazu zu bringen, das Verfahren gemäß einem der Ansprüche 1 bis 16 durchzuführen.
DE602004008150T 2003-06-03 2004-05-21 Datenfehlerkorrektur mittels Redundanzblöcke Expired - Fee Related DE602004008150T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US454420 2003-06-03
US10/454,420 US7290197B2 (en) 2003-06-03 2003-06-03 Correcting data using redundancy blocks

Publications (2)

Publication Number Publication Date
DE602004008150D1 DE602004008150D1 (de) 2007-09-27
DE602004008150T2 true DE602004008150T2 (de) 2008-04-30

Family

ID=33299599

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004008150T Expired - Fee Related DE602004008150T2 (de) 2003-06-03 2004-05-21 Datenfehlerkorrektur mittels Redundanzblöcke

Country Status (4)

Country Link
US (1) US7290197B2 (de)
EP (1) EP1486872B1 (de)
JP (1) JP2004362758A (de)
DE (1) DE602004008150T2 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7228467B2 (en) * 2003-10-10 2007-06-05 Quantum Corporation Correcting data having more data blocks with errors than redundancy blocks
JP2006169662A (ja) 2004-12-15 2006-06-29 Aikawa Iron Works Co Ltd スクリーン装置
KR101227493B1 (ko) 2006-03-27 2013-02-07 엘지전자 주식회사 오류 정정을 위한 디지털 방송 수신 장치 및 방법
US8977936B2 (en) 2010-06-10 2015-03-10 The Regents Of The University Of California Strong single and multiple error correcting WOM codes, coding methods and devices
US8527839B2 (en) * 2011-01-31 2013-09-03 Macronix International Co., Ltd. On-the-fly repair method for memory
US9361479B2 (en) 2011-04-29 2016-06-07 Stephen Lesavich Method and system for electronic content storage and retrieval using Galois fields and geometric shapes on cloud computing networks
US9137250B2 (en) 2011-04-29 2015-09-15 Stephen Lesavich Method and system for electronic content storage and retrieval using galois fields and information entropy on cloud computing networks
US9569771B2 (en) 2011-04-29 2017-02-14 Stephen Lesavich Method and system for storage and retrieval of blockchain blocks using galois fields
US9037564B2 (en) 2011-04-29 2015-05-19 Stephen Lesavich Method and system for electronic content storage and retrieval with galois fields on cloud computing networks
US10594491B2 (en) * 2015-12-24 2020-03-17 Intel Corporation Cryptographic system memory management
US10754793B2 (en) * 2018-02-28 2020-08-25 Micron Technology, Inc. Memory module data object processing systems and methods

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3860907A (en) * 1973-06-21 1975-01-14 Ibm Data resynchronization employing a plurality of decoders
US5136592A (en) 1989-06-28 1992-08-04 Digital Equipment Corporation Error detection and correction system for long burst errors
US5623507A (en) * 1991-09-13 1997-04-22 Storage Technology Corporation Error pointers for enhanced error correction
US5272252A (en) * 1991-11-04 1993-12-21 Merrell Dow Pharmaceuticals Inc. Synthetic lung surfactant having antioxidant properties
US5719884A (en) 1995-07-27 1998-02-17 Hewlett-Packard Company Error correction method and apparatus based on two-dimensional code array with reduced redundancy
AU3643497A (en) * 1996-06-28 1998-01-21 National Jewish Center For Immunology And Respiratory Medicine Use of thioredoxin-like molecules for induction of mnsod to treat oxidative damage
US6150135A (en) * 1997-05-23 2000-11-21 Heska Corporation Dirofilaria and brugia thioredoxin peroxidase type-2 (TPX-2) nucleic acid molecules, and uses thereof
US6165440A (en) * 1997-07-09 2000-12-26 Board Of Regents, The University Of Texas System Radiation and nanoparticles for enhancement of drug delivery in solid tumors
US6242473B1 (en) * 1999-01-08 2001-06-05 Maxim Pharmaceuticals, Inc. Treatment and prevention of reactive oxygen metabolite-mediated cellular damage
US6438724B1 (en) * 1999-03-16 2002-08-20 International Business Machines Corporation Method and apparatus for deterministically altering cyclic redundancy check information for data storage
US6046160A (en) * 1999-07-22 2000-04-04 Deroyal Industries, Inc. Composition and method for enhancing wound healing
US6343305B1 (en) * 1999-09-14 2002-01-29 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Methods and apparatus for multiplication in a galois field GF (2m), encoders and decoders using same
DE60040805D1 (de) * 1999-12-20 2008-12-24 Research In Motion Ltd Hybrid-wiederholungsaufforderungsystem und -verfahren
US6772390B2 (en) 2000-11-30 2004-08-03 Quantum Corporation Erasure correction for ECC entities

Also Published As

Publication number Publication date
US20040260971A1 (en) 2004-12-23
EP1486872B1 (de) 2007-08-15
DE602004008150D1 (de) 2007-09-27
US7290197B2 (en) 2007-10-30
EP1486872A1 (de) 2004-12-15
JP2004362758A (ja) 2004-12-24

Similar Documents

Publication Publication Date Title
DE3486408T2 (de) Verfahren und Vorrichtung zur Dekodierung eines fehlerkorrigierenden Kodes.
DE69121307T2 (de) Mehrfachpegel-Fehlerkorrektursystem
DE3854393T2 (de) Verfahren und gerät zur fehlerkorrektur mit mehrfachdurchlauf für produktkode.
DE112012000385B4 (de) Korrigieren von Auslöschungen in Speicher-Arrays
DE68920523T2 (de) Verfahren zur Korrektur von Mehr-Byte-Fehlern.
DE69919199T2 (de) Vorwärtsfehlerkorrektur
DE3854939T2 (de) Bch-fehlerkorrekturkode-dekodierungsverfahren in echtzeitbetrieb
DE69129444T2 (de) On-Line-Wiederherstellung von Redundanz-Information in einem redundanten Matrixsystem
DE60015753T2 (de) System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern
DE60001370T2 (de) Verfahren und vorrichtung zur erkennung von doppelbitfehlern und korrektur von fehlern durch bauelementfehler verursacht
DE3852474T2 (de) Nachschlagetabellen verwendende Fehlerkorrektur.
DE10133595B4 (de) Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder
DE69332070T2 (de) Steuerschaltung für Galois-Feld
DE102013215055B4 (de) Schaltungsanordnung, Vorrichtung, Verfahren und Computerprogramm mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern
DE102007038114A1 (de) Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren
DE3852999T2 (de) Galois-feld-recheneinheit.
DE2834963A1 (de) Verfahren und einrichtung zur fehlerkorrektur von uebertragenen daten
DE602004008150T2 (de) Datenfehlerkorrektur mittels Redundanzblöcke
DE602005000251T2 (de) Dekoder zur Fehlerkorrektur mit einem Reed-Solomon Dekoder zur Erasure-Korrektur und einem CRC Dekoder
DE19922253A1 (de) Kodiervorrichtung für RAID-6-Systeme und Bandlaufwerke
EP0545498B1 (de) Verfahren und Schaltungsanordnung zum Decodieren von RS-codierten Datensignalen
DE102017125617B4 (de) Bestimmung und Verwendung von Bytefehlerpostionssignalen
DE69814465T2 (de) Verfahren und gerät zur datenspeicherung auf magnetischen medien, die fehlerkorrekturkodes enthalten
DE4105860C2 (de) Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten
DE69732076T2 (de) Reed-Solomon Dekodierer mit universeller Prozessoreinheit und speziellen Schaltungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee