DE112016003638T5 - Auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes - Google Patents

Auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes Download PDF

Info

Publication number
DE112016003638T5
DE112016003638T5 DE112016003638.8T DE112016003638T DE112016003638T5 DE 112016003638 T5 DE112016003638 T5 DE 112016003638T5 DE 112016003638 T DE112016003638 T DE 112016003638T DE 112016003638 T5 DE112016003638 T5 DE 112016003638T5
Authority
DE
Germany
Prior art keywords
error
decoding
decrypted data
signature
codewords
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.)
Granted
Application number
DE112016003638.8T
Other languages
English (en)
Other versions
DE112016003638B4 (de
Inventor
Robert Allen Hutchins
Steven Ross Bentley
Keisuke Tanaka
Roy Daron Cideciyan
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112016003638T5 publication Critical patent/DE112016003638T5/de
Application granted granted Critical
Publication of DE112016003638B4 publication Critical patent/DE112016003638B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • 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/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2948Iterative decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3738Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/613Use of the dual code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Abstract

In einer Ausführungsform enthält ein System einen Controller und eine Logik, die in den Controller integriert und/oder von diesem ausführbar ist. Die Logik ist zum Ausführen einer iterativen Decodierung von verschlüsselten Daten konfiguriert, um entschlüsselte Daten zu erhalten. In der iterativen Decodierung werden mindestens drei Decodierungsoperationen ausgeführt, wobei die Decodierungsoperationen aus einer Gruppe ausgewählt werden, aufweisend: C1-Decodierung und C2-Decodierung. Die Logik ist außerdem zum Ausführen einer der Decodierung nachfolgenden Fehlerdiagnose an einem ersten Abschnitt der entschlüsselten Daten konfiguriert in Reaktion darauf, dass nach der iterativen Decodierung der verschlüsselten Daten kein gültiges Produktcodewort in dem ersten Abschnitt erhalten wurde. Weitere Systeme, Verfahren und Computerprogrammprodukte zum Erzeugen von einer Decodierung nachfolgenden Fehlersignaturen werden gemäß weiteren Ausführungsformen vorgestellt.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft Datenspeichersysteme und insbesondere eine auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes.
  • Aktuell verwendete lineare Bandlaufwerke wenden zweidimensionale Produktcodes zur Fehlerkorrekturcodierung (ECC) an. Diese Produktcodes enthalten im Allgemeinen zwei orthogonal positionierte Komponentencodes, die aus einem C1-Zeilencode und einem C2-Spaltencode bestehen. C1- und C2-Codes sind im Allgemeinen lineare Blockcodes mit jeweils einem mindesten Hamming-Abstand d1 und d2, die ein binärer Code (auf Bit-Grundlage) sein können, wie beispielsweise ein binärer Bose-Chaudhuri-Hocquenghem- (BCH) Code über einem Galoiskörper (GF) von GF(2) oder ein Code auf Symbolgrundlage mit einer Symbolalphabetgröße Q, wie ein Reed-Solomon- (RS) Code über GF (Q = 2q) mit q-Bit-Symbolen, oder ein nichtbinärer BCH-Code über GF (Q = 2q) mit q-Bit-Symbolen usw. In Speicher- und Übertragungssystemen ist typischerweise Q = 2 (1-Bit-Symbol, d.h. Binärcodes), Q = 16 (4-Bit-Symbol), Q = 64 (6-Bit-Symbol), Q = 256 (8-Bit-Symbol), Q = 512 (9-Bit-Symbol), Q = 1024 (10-Bit-Symbol) oder Q = 4096 (12-Bit-Symbol) usw.
  • Bandspeicher- und optische Speichertechnologien verwenden typischerweise C1- und C2-Codes, die RS-Codes sind, wogegen Flash-Speicher- und optische Datenübertragungstechnologien typischerweise C1- und C2-Codes verwenden, die binäre BCH-Codes sind.
  • Beim Ausführen einer Fehlerkorrektur an entschlüsselten Daten, die Produktcodes verwenden, gibt es mehrere potenzielle Fehlerquellen: 1) Fehlkorrektur durch den ECC-Decoder aufgrund eines oder mehrerer Decodierungsfehler, 2) unkorrigierte Fehler, die nach einer Decodierung durch den ECC-Decoder aufgrund eines oder mehrerer Decodierungsfehler verbleiben, und 3) Arbeitsspeicherfehler, die in Bezug zu einer Instabilität in der Fehlerkorrektur von Pufferspeichern und/oder Arbeitsspeicher stehen, die zum Speichern von Daten während und nach der Decodierung verwendet werden.
  • Ein misslungenes Entschlüsseln eines Produktcodeworts, das eine erfolgreiche Decodierung aller C1-Zeilen und aller C2-Spalten in einem Produktcode erfordert, führt zu einem temporären und/oder permanenten Fehler, und der Decoder für den Produktcode (möglicherweise ein iterativer Decoder) erzeugt kein gültiges Produktcodewort. Allerdings wird nach einem derartigen Misslingen in herkömmlichen Datenspeicher- und Datenübertragungssystemen keine Diagnose ausgeführt.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß einem Aspekt wird ein System bereitgestellt, das einen Controller und eine Logik enthält, die in den Controller integriert und/oder von diesem ausführbar ist. Die Logik ist zum Ausführen einer iterativen Decodierung an verschlüsselten Daten konfiguriert, um entschlüsselte Daten zu erhalten. In der iterativen Decodierung werden mindestens drei Decodierungsoperationen ausgeführt, wobei die Decodierungsoperationen aus einer Gruppe ausgewählt werden, aufweisend: C1-Decodierung und C2-Decodierung. Die Logik ist außerdem zum Ausführen einer auf die Decodierung folgenden Fehlerdiagnose an einem ersten Abschnitt der entschlüsselten Daten konfiguriert in Reaktion darauf, dass nach der iterativen Decodierung der verschlüsselten Daten kein gültiges Produktcodewort in dem ersten Abschnitt erhalten wurde.
  • Gemäß einem Aspekt wird ein durch einen Controller umgesetztes Verfahren bereitgestellt, das ein Ausführen einer iterativen Decodierung an verschlüsselten Daten enthält, um entschlüsselte Daten zu erhalten. In der iterativen Decodierung werden mindestens drei Decodierungsoperationen ausgeführt, wobei die Decodierungsoperationen aus einer Gruppe ausgewählt werden, aufweisend: C1-Decodierung und C2-Decodierung. Das vom Controller umgesetzte Verfahren enthält außerdem ein Ausführen einer auf die Decodierung folgenden Fehlerdiagnose an einem ersten Abschnitt der entschlüsselten Daten in Reaktion darauf, dass nach der iterativen Decodierung der verschlüsselten Daten kein gültiges Produktcodewort in dem ersten Abschnitt erhalten wurde.
  • Gemäß einem Aspekt wird ein Computerprogrammprodukt bereitgestellt, das ein von einem Computer lesbares Speichermedium mit darin verkörperten Programmanweisungen enthält. Die verkörperten Programmanweisungen sind durch einen Controller ausführbar, um zu veranlassen, dass der Controller eine iterative Decodierung von verschlüsselten Daten ausführt, um entschlüsselte Daten zu erhalten. In der iterativen Decodierung werden mindestens drei Decodierungsoperationen ausgeführt, wobei die Decodierungsoperationen aus einer Gruppe ausgewählt werden, aufweisend: C1-Decodierung und C2-Decodierung. Die verkörperten Programmanweisungen sind außerdem vom Controller ausführbar, um den Controller zu veranlassen, durch den Controller eine auf die Decodierung folgende Fehlerdiagnose an einem ersten Abschnitt der entschlüsselten Daten in Reaktion darauf auszuführen, dass nach der iterativen Decodierung der verschlüsselten Daten kein gültiges Produktcodewort in dem ersten Abschnitt erhalten wurde.
  • Weitere Aspekte und Ausführungsformen der vorliegenden Erfindung werden aus der folgenden ausführlichen Beschreibung offenkundig, die in Verbindung mit den Zeichnungen die Grundgedanken der Erfindung beispielhaft veranschaulichen.
  • Figurenliste
  • Im Folgenden werden Ausführungsformen der Erfindung allein zu Beispielzwecken unter Bezugnahme auf die begleitenden Zeichnungen beschrieben, wobei:
    • 1 ein Netzwerk-Speichersystem gemäß einer Ausführungsform veranschaulicht;
    • 2 ein vereinfachtes Bandlaufwerk eines Datenspeichersystems auf Bandgrundlage gemäß einer Ausführungsform veranschaulicht;
    • 3 eine schematische Darstellung einer Bandkassette gemäß einer Ausführungsform ist;
    • 4 ein logisches Daten-Array zeigt, das gemäß einer Ausführungsform zum Organisieren von Daten in einem untergeordneten Datenset (SDS) verwendet werden kann, das einen Produktcode verwendet;
    • 5A gemäß einer Ausführungsform ein Produktcodewort ohne erfasste Fehler zeigt, die von einer iterativen Decodierung mit einer C1-Decodierungsoperation am Ende erzeugt wurden;
    • 5B gemäß einer Ausführungsform ein Produktcodewort ohne erfasste Fehler zeigt, die von einer iterativen Decodierung mit einer C2-Decodierungsoperation am Ende erzeugt wurden;
    • 6A gemäß einer Ausführungsform ein Produktcodewort mit einem erfassten Arbeitsspeicherfehler zeigt, der von einer iterativen Decodierung mit einer C1-Decodierungsoperation am Ende erzeugt wurde;
    • 6B gemäß einer Ausführungsform ein Produktcodewort mit einem erfassten Arbeitsspeicherfehler zeigt, der von einer iterativen Decodierung mit einer C2-Decodierungsoperation am Ende erzeugt wurde;
    • 7A gemäß einer Ausführungsform ein Produktcodewort mit einer Kombination von Kanal- und eingefügten Symbolfehlern zeigt, die von einer iterativen Decodierung mit einer C1-Decodierungsoperation am Ende erzeugt wurden;
    • 7B gemäß einer Ausführungsform ein Produktcodewort mit einer Kombination von Kanal- und eingefügten Symbolfehlern zeigt, die von einer iterativen Decodierung mit einer C2-Decodierungsoperation am Ende erzeugt wurden;
    • 8A gemäß einer Ausführungsform ein Produktcodewort mit einer Kombination von Kanal-, Arbeitsspeicher- und eingefügten Symbolfehlern zeigt, die von einer iterativen Decodierung mit einer C1-Decodierungsoperation am Ende erzeugt wurden;
    • 8B gemäß einer Ausführungsform ein Produktcodewort mit einer Kombination von Kanal-, Arbeitsspeicher- und eingefügten Symbolfehlern zeigt, die von einer iterativen Decodierung mit einer C2-Decodierungsoperation am Ende erzeugt wurden;
    • 9A gemäß einer Ausführungsform ein Produktcodewort mit erfassten Kanalfehlern zeigt, die von einer iterativen Decodierung mit einer C1-Decodierungsoperation am Ende erzeugt wurden;
    • 9B gemäß einer Ausführungsform ein Produktcodewort mit erfassten Kanalfehlern zeigt, die von einer iterativen Decodierung mit einer C2-Decodierungsoperation am Ende erzeugt wurden;
    • 10A gemäß einer Ausführungsform ein Produktcodewort mit einer Kombination von Kanal- und Arbeitsspeicherfehlern zeigt, die von einer iterativen Decodierung mit einer C1-Decodierungsoperation am Ende erzeugt wurde;
    • 10B gemäß einer Ausführungsform ein Produktcodewort mit einer Kombination von Kanal- und Arbeitsspeicherfehlern zeigt, die von einer iterativen Decodierung mit einer C2-Decodierungsoperation am Ende erzeugt wurde;
    • 11A gemäß einer Ausführungsform ein Produktcodewort mit einer Kombination von Kanal- und eingefügten Symbolfehlern zeigt, die von einer iterativen Decodierung mit einer C1-Decodierungsoperation am Ende erzeugt wurden;
    • 11B gemäß einer Ausführungsform ein Produktcodewort mit einer Kombination von Kanal- und eingefügten Symbolfehlern zeigt, die von einer iterativen Decodierung mit einer C2-Decodierungsoperation am Ende erzeugt wurden;
    • 12A gemäß einer Ausführungsform ein Produktcodewort mit einer Kombination von Kanal-, Arbeitsspeicherfehlern zeigt, die von einer iterativen Decodierung mit einer C1-Decodierungsoperation am Ende erzeugt wurde, und mit eingefügten Symbolfehlern;
    • 12B gemäß einer Ausführungsform ein Produktcodewort mit einer Kombination von Kanal-, Arbeitsspeicherfehlern zeigt, die von einer iterativen Decodierung mit einer C2-Decodierungsoperation am Ende erzeugt wurde, und mit eingefügten Symbolfehlern;
    • 13 einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform zeigt;
    • 14 einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform zeigt;
    • 15 einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform zeigt;
    • 16 einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform zeigt;
    • 17 einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform zeigt;
    • 18 einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform zeigt;
    • 19 einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform zeigt;
    • 20 einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform zeigt;
    • 21 einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform zeigt;
    • 22 einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung wird zum Zweck einer Veranschaulichung der allgemeinen Grundgedanken der vorliegenden Erfindung erstellt und soll die hierin beanspruchten erfinderischen Konzepte keinesfalls einschränken. Ferner können bestimmte hierin beschriebene Funktionen in Kombination mit anderen beschriebenen Funktionen in jeder der verschiedenen möglichen Kombinationen und Umsetzungen verwendet werden.
  • Sofern hierin nicht anderweitig speziell definiert, sind alle Begriffe so weitgefasst wie möglich zu interpretieren, einschließlich Bedeutungen, die durch die Spezifikationen impliziert werden sowie Bedeutungen, die vom Fachmann verstanden werden und/oder wie in Wörterbüchern, Abhandlungen usw. definiert.
  • Außerdem ist anzumerken, wie in der Spezifikation und den Ansprüchen im Anhang verwendet, dass die Singularformen „ein“, „eine“ und „der/die/das“ auch die Pluralformen mit einschließen, es sei denn, dies wird anders angegeben. Es versteht sich des Weiteren, dass die Begriffe „weist auf“ und/oder „aufweisend“ bei Verwendung in dieser Patentschrift das Vorhandensein ausgewiesener Funktionen, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten angeben, das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Funktionen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon aber nicht ausschließen. Der Begriff „ungefähr“, wie hierin verwendet, gibt den Wert mit dem vorangestelltem Begriff „ungefähr“ zusammen mit allen Werten an, die einigermaßen nahe an dem Wert mit dem vorangestelltem Begriff „ungefähr“ liegen, wie dem Fachmann klar sein dürfte. Sofern nicht anders angegeben, gibt der Begriff „ungefähr“ den Wert, dem der Begriff „ungefähr“ vorangestellt ist, mit ± 10 % des Werts an. Zum Beispiel gibt „ungefähr 10“ alle Werte zwischen und einschließlich 9,0 bis 11,0 an.
  • Die folgende Beschreibung offenbart mehrere bevorzugte Ausführungsformen von Systemen, Verfahren und Computerprogrammprodukten zum Ausführen einer auf die Decodierung folgenden Fehlerdiagnose an einem Produktcodewort. Fehlerdiagnosen können verschiedene Fehlertypen identifizieren, die bei einer Decodierung aufgrund einer misslungenen Decodierung, während einer Decodierung aufgrund einer Fehlkorrektur und während der Datenspeicherung auftreten können, wenn die Daten im Arbeitsspeicher gespeichert werden.
  • Wenn Fehler auftreten, ist es wünschenswert, auf eine Decodierung folgende Fehler und Fehlerspeicherorte zu identifizieren, sofern dies möglich ist, d.h. eine auf die Decodierung folgende Fehlerdiagnose auszuführen. Systeme, Verfahren und Computerprogrammprodukte, die konfiguriert sind, um zu überprüfen, dass eine Fehlerkorrekturcodierung (ECC) korrekt auf entschlüsselte Daten angewendet wurde, und dass in die ECC-Puffer oder den Arbeitsspeicher keine Fehler eingefügt wurden, nachdem eine Fehlerkorrektur angewendet worden ist, werden hierin gemäß verschiedener Ausführungsformen beschrieben. Außerdem werden einige Algorithmen beschrieben, die konfiguriert sind, um die Fehlertypen zu identifizieren, die nach einer Decodierung eines Produktcodes in bestimmten Ausführungsformen verbleiben.
  • In einer allgemeinen Ausführungsform enthält ein System einen Controller und eine Logik, die in den Controller integriert und/oder von diesem ausführbar ist. Die Logik ist zum Ausführen einer iterativen Decodierung an verschlüsselten Daten konfiguriert, um entschlüsselte Daten zu erhalten. In der iterativen Decodierung werden mindestens drei Decodierungsoperationen ausgeführt, wobei die Decodierungsoperationen aus einer Gruppe ausgewählt werden, aufweisend: C1-Decodierung und C2-Decodierung. Die Logik ist außerdem zum Ausführen einer auf die Decodierung folgenden Fehlerdiagnose an einem ersten Abschnitt der entschlüsselten Daten konfiguriert in Reaktion darauf, dass nach der iterativen Decodierung der verschlüsselten Daten kein gültiges Produktcodewort in dem ersten Abschnitt erhalten wurde.
  • In einer weiteren allgemeinen Ausführungsform enthält ein durch einen Controller umgesetztes Verfahren ein Ausführen einer iterativen Decodierung an verschlüsselten Daten, um entschlüsselte Daten zu erhalten. In der iterativen Decodierung werden mindestens drei Decodierungsoperationen ausgeführt, wobei die Decodierungsoperationen aus einer Gruppe ausgewählt werden, aufweisend: C1-Decodierung und C2-Decodierung. Das vom Controller umgesetzte Verfahren enthält außerdem ein Ausführen einer auf die Decodierung folgenden Fehlerdiagnose an einem ersten Abschnitt der entschlüsselten Daten in Reaktion darauf, dass nach der iterativen Decodierung der verschlüsselten Daten kein gültiges Produktcodewort in dem ersten Abschnitt erhalten wurde.
  • In einer weiteren allgemeinen Ausführungsform enthält ein Computerprogrammprodukt ein von einem Computer lesbares Speichermedium mit darin verkörperten Programmanweisungen. Die verkörperten Programmanweisungen sind durch einen Controller ausführbar, um zu veranlassen, dass der Controller eine iterative Decodierung an verschlüsselten Daten ausführt, um entschlüsselte Daten zu erhalten. In der iterativen Decodierung werden mindestens drei Decodierungsoperationen ausgeführt, wobei die Decodierungsoperationen aus einer Gruppe ausgewählt werden, aufweisend: C1-Decodierung und C2-Decodierung. Die verkörperten Programmanweisungen sind außerdem vom Controller ausführbar, um den Controller zu veranlassen, durch den Controller eine auf die Decodierung folgende Fehlerdiagnose an einem ersten Abschnitt der entschlüsselten Daten in Reaktion darauf auszuführen, dass nach der iterativen Decodierung der verschlüsselten Daten kein gültiges Produktcodewort in dem ersten Abschnitt erhalten wurde.
  • Unter folgender Bezugnahme auf 1 wird eine schematische Darstellung eines Netzwerk-Speichersystems 10 gemäß einer Ausführungsform gezeigt. Dieses Netzwerk-Speichersystem 10 ist nur ein Beispiel für ein geeignetes Speichersystem und soll keinerlei Einschränkung hinsichtlich des Schutzumfangs der Verwendung oder Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung zu verstehen geben. Ungeachtet dessen lässt sich das Netzwerk-Speichersystem 10 umsetzen und/oder kann jede der im Vorgenannten erläuterten Funktionalitäten ausführen.
  • In dem Netzwerk-Speichersystem 10 ist ein Computersystem/Server 12 vorhanden, das bzw. der mit zahlreichen anderen Umgebungen oder Konfigurationen für Universal- oder Sonder-Datenverarbeitungssysteme betriebsbereit ist. Zu Beispielen für bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für eine Verwendung mit dem Computersystem/Server 12 geeignet sein können, zählen PC-Systeme, Servercomputersysteme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Multiprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der oben genannten Systeme oder Einheiten und dergleichen aufweisen, sie sind aber nicht darauf beschränkt.
  • Das Computersystem/der Server 12 kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen beschrieben werden, wie beispielsweise Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen umsetzen. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen betrieben werden, wobei Aufgaben von entfernt angeordneten Verarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können Programmmodule sich sowohl in lokalen als auch entfernt angeordneten Computersystem-Speichermedien befinden, die Arbeitsspeicher-Speichereinheiten enthalten.
  • Wie in 1 gezeigt, wird das Computersystem/der Server 12 in dem Netzwerk-Speichersystem 10 in der Form einer Universal-Datenverarbeitungseinheit gezeigt. Die Komponenten des Computersystems/Servers 12 können einen oder mehrere Prozessoren oder Verarbeitungseinheiten 16, einen Systemarbeitsspeicher 28 und einen Bus 18 enthalten, der verschiedene Systemkomponenten einschließlich des Systemarbeitsspeichers 28 mit dem Prozessor 16verbindet, sie sind aber nicht darauf beschränkt.
  • Der Bus 18 stellt einen oder mehrere von mehreren beliebigen Typen von Busstrukturen dar, einschließlich eines Arbeitsspeicherbusses oder Arbeitsspeichercontrollers, eines Peripheriebusses, eines beschleunigten Grafikanschlusses und eines Prozessors oder lokalen Busses unter Verwendung von einer aus einer Vielfalt von Busarchitekturen. Als Beispiel und nicht einschränkend enthalten derartige Architekturen einen Industry Standard Architecture- (ISA) Bus, Micro Channel Architecture- (MCA) Bus, Enhanced ISA- (EISA) Bus, einen lokalen Video Electronics Standards Association- (VESA) Bus und Peripheral Component Interconnects- (PCI) Bus.
  • Das Computersystem/der Server 12 enthält typischerweise eine Vielfalt von Medien, die von einem Computersystem gelesen werden können. Derartige Medien können alle verfügbaren Medien sein, auf die von dem Computersystem/Server 12 zugegriffen werden kann, und sie enthalten sowohl flüchtige als auch nicht-flüchtige Medien, austauschbare und nicht-austauschbare Medien.
  • Der Systemarbeitsspeicher 28 kann vom Computersystem lesbare Medien in der Form von flüchtigem Arbeitsspeicher enthalten wie beispielsweise einen Direktzugriffspeicher (RAM) 30 und/oder einen Cachespeicher 32. Das Computersystem/der Server 12 kann ferner weitere austauschbare/nicht-austauschbare, flüchtige/nicht-flüchtige Computersystem-Speichermedien enthalten. Nur als Beispiel kann das Speichersystem 34 zum Lesen von und Schreiben auf nicht-austauschbare, nicht-flüchtige Magnetdatenträger bereitgestellt werden - nicht gezeigt und typischerweise als „Festplatte“ bezeichnet, die in einem Festplattenlaufwerk betrieben werden können. Obwohl nicht gezeigt, können ein Magnetplattenlaufwerk zum Auslesen aus und Beschreiben von einer austauschbaren, nicht-flüchtigen Magnetplatte (z.B. eine Diskette) und ein optisches Plattenlaufwerk zum Auslesen aus oder Beschreiben von einer austauschbaren, nicht-flüchtigen optischen Platte wie einem CD-ROM, DVD-ROM oder einem anderen optischen Datenträger bereitgestellt werden. In solchen Fällen können alle über eine oder mehrere Datenträgerschnittstellen mit dem Bus 18 verbunden werden. Wie ferner im Folgenden dargestellt und beschrieben wird, kann der Arbeitsspeicher 28 mindestens ein Programmprodukt mit einem Satz (z.B. mindestens einem) von Programmmodulen enthalten, die so konfiguriert sind, dass sie die Funktionen der hierin beschriebenen Ausführungsformen ausführen.
  • Ein Programm/Dienstprogramm 40, das einen Satz von (mindestens einem) von Programmmodulen 42 aufweist, kann beispielsweise und nicht einschränkend im Arbeitsspeicher 28 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten oder eine Kombination davon können alle jeweils eine Umsetzung einer Netzwerkumgebung enthalten. Die Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Methodiken von Ausführungsformen der Erfindung aus, wie hierin beschrieben.
  • Das Computersystem/der Server 12 kann auch mit einer oder mehreren externen Einheiten 14 Daten austauschen, wie beispielsweise einer Tastatur, einer Zeigeeinheit, einer Anzeige 24 usw.; einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 12 zu interagieren; und/oder allen Einheiten (z.B. Netzwerkkarte, Modem usw.), die es dem Computersystem/Server 12 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe-/Ausgabe- (E/A) Schnittstellen 22 erfolgen Des Weiteren kann das Computersystem/der Server 12 mit einem oder mehreren Netzwerken, wie beispielsweise einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet), über einen Netzwerkadapter 20 Daten austauschen Wie dargestellt, tauscht der Netzwerkadapter 20 mit den anderen Komponenten des Computersystems/Servers 12 über den Bus 18 Daten aus. Es sollte klar sein, dass, obwohl nicht gezeigt, andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten. Zu Beispielen gehören Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, Redundant Array of Independent Disks- (RAID) Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw., sie sind aber nicht darauf beschränkt.
  • 2 veranschaulicht ein vereinfachtes Bandlaufwerk 100 eines Datenspeichersystems auf Bandgrundlage, das im Kontext der vorliegenden Erfindung verwendet werden kann. Zwar wird eine bestimmte Umsetzung eines Bandlaufwerks in 2 gezeigt, doch ist anzumerken, dass die hierin beschriebenen Ausführungsformen im Kontext jedes Typs eines Bandlaufwerksystems umgesetzt werden können.
  • Wie gezeigt, werden eine Bandzuführkassette 120 und eine Aufrollspule 121 zum Unterstützen eines Bands 122 bereitgestellt. Eine oder mehrere der Aufrollspulen können einen Teil einer austauschbaren Kassette bilden und sind nicht notwendigerweise Bestandteil des Bandlaufwerks 100. Das Bandlaufwerk, wie das in 2 veranschaulichte, kann ferner einen oder mehrere Antriebsmotoren zum Antreiben der Bandzuführkassette 120 und der Aufrollspule 121 enthalten, um das Band 122 über einen Bandkopf 126 jedes Typs zu bewegen. Ein derartiger Kopf kann ein Array von Lesevorrichtungen, Schreibvorrichtungen oder beides enthalten.
  • Führungen 125 führen das Band 122 über den Bandkopf 126. Ein derartiger Bandkopf 126 ist wiederum über ein Kabel 130 mit einem Controller 128 verbunden. Der Controller 128 kann ein Prozessor und/oder jede Logik zum Steuern eines Subsystems des Bandlaufwerks 100 sein oder enthalten. Zum Beispiel steuert der Controller 128 typischerweise Funktionen des Kopfs wie Servofolge, Schreiben von Daten, Lesen von Daten usw. Der Controller 128 kann mindestens einen Servokanal und mindestens einen Datenkanal enthalten, die jeweils Datenfluss-Verarbeitungslogik enthalten, die konfiguriert ist, um Informationen zu verarbeiten und/oder zu speichern, die auf das Band 122. geschrieben und/oder von diesem gelesen werden sollen. Der Controller 128 kann unter einer nach dem Stand der Technik bekannten Logik sowie jeder hierin offenbarten Logik arbeiten und kann somit als ein Prozessor für alle der hierin enthaltenen Beschreibungen von Bandlaufwerken in verschiedenen Ausführungsformen betrachtet werden. Der Controller 128 kann mit einem Arbeitsspeicher136 jedes bekannten Typs verbunden sein, der durch den Controller 128 ausführbare Anweisungen speichern kann. Ferner kann der Controller 128 konfiguriert und/oder programmierbar sein, um einige oder alle der hierin dargestellten Methodiken auszuführen oder zu steuern. Somit kann der Controller 128 als so konfiguriert betrachtet werden, dass er verschiedene Operationen mittels Logik ausführt, die in einem oder mehreren Chips, Modulen und/oder Blöcken programmiert ist; wobei Software, Firmware und/oder andere Anweisungen für einen oder mehrere Prozessoren usw. zur Verfügung stehen; und Kombinationen davon.
  • Das Kabel 130 kann Lese/Schreib-Schaltungen enthalten, um Daten zu dem Kopf 126 zu übertragen, die auf dem Band 122 aufgezeichnet werden sollen, und um von dem Kopf 126 ausgelesene Daten von dem Band 122 zu empfangen. Ein Stellantrieb 132 steuert die Position des Kopfs 126 in Bezug auf das Band 122.
  • Eine Schnittstelle 134 kann ebenfalls für einen Datenaustausch zwischen dem Bandlaufwerk 100 und einem Host (intern oder extern) zum Senden und Empfangen der Daten und zum Steuern des Betriebs des Bandlaufwerks 100 und Übermitteln des Zustands des Bandlaufwerks 100 an den Host bereitgestellt werden, wie einem Fachmann klar sein wird.
  • 3 veranschaulicht eine beispielhafte Bandkassette 150 gemäß einer Ausführungsform. Eine derartige Bandkassette 150 kann zusammen mit einem System wie demjenigen verwendet werden, das in 2 gezeigt ist. Wie gezeigt, enthält die Bandkassette 150 ein Gehäuse 152, ein Band 122 in dem Gehäuse 152 und einen nicht-flüchtigen Arbeitsspeicher 156, der mit dem Gehäuse 152 verbunden ist. In einigen Ansätzen kann der nicht-flüchtige Arbeitsspeicher 156 in dem Gehäuse 152 eingebettet sein, wie in 3 gezeigt. In weiteren Ansätzen kann der nicht-flüchtige Arbeitsspeicher 156 an der Innenseite oder Außenseite des Gehäuses 152 ohne Modifizierung des Gehäuses 152 angebracht sein. Zum Beispiel kann der nicht-flüchtige Arbeitsspeicher 156 in einem selbsthaftenden Aufkleber 154 eingebettet sein. In einer bevorzugten Ausführungsform kann der nicht-flüchtige Arbeitsspeicher 156 eine Flash-Speichereinheit, ROM-Einheit usw. sein, die in die Bandkassette 150 eingebettet oder mit deren Innenseite oder Außenseite verbunden ist. Auf den nicht-flüchtigen Arbeitsspeicher kann über das Bandlaufwerk und das Band-Betriebssystem (die Treiber-Software) und/oder eine andere Einheit zugegriffen werden.
  • 4 zeigt ein logisches Daten-Array 400, das gemäß einer Ausführungsform zum Organisieren von Daten in einem untergeordneten Datenset (SDS) verwendet werden kann. Wie gezeigt, enthält das Daten-Array eine Mehrzahl von Zeilen 402 und Spalten 404. Jede Zeile 402 in dem Daten-Array 400 ist eine Codewort-Verschachtelung (CWI), die eine Mehrzahl von C1-Codewörtern enthält Wenn die CWI vier verschachtelte Codewörter enthält, wird sie als CWI-4 bezeichnet. Die Daten im SDS werden durch eine zeilenübergreifende C1-Codierung 402 geschützt, um eine C1-Zeilenparität zu erzeugen (nicht gezeigt, da sie später modifiziert wird, um das Daten-Array 400 zu erzeugen), und durch eine spaltenübergreifende C2-Codierung 404 , um eine C2-Spaltenparität 408 zu erzeugen.
  • Wie gezeigt, können die Header 406 für jede Zeile 402 unter Verwendung eines C1-Codierungsschemas verschlüsselt werden, indem die C1-Parität (nur für die Daten in der Zeile 402 berechnet) modifiziert werden, um die Header 406 zum Erzeugen einer C1'-Parität 410 zu berücksichtigen. In dieser Ausführungsform werden die Header 406 durch eine Ein-Ebenen-ECC (nur C1'-Parität 410) geschützt, wogegen die Daten durch eine Zwei-Ebenen-ECC (C1'-Parität 410 und C2-Parität 408) geschützt werden.
  • Jedes Datenset enthält mehrere untergeordnete Datensets, und jedes untergeordnete Datenset kann durch ein logisches zweidimensionales Array dargestellt werden. Für gewöhnlich werden Hunderte von Headern einem einzelnen Datenset zugewiesen, da jedes Datenset mehrere SDSs enthält, und jeder Zeile (CWI) eines spaltencodierten SDS wird ein Header zugewiesen. Derzeit verwendete lineare Bandlaufwerke schreiben und lesen gleichzeitig bis zu 32 Spuren in ein und/oder aus einem Magnetbandmedium. C1-Zeilen-Codewörter eines Produktcodes werden auf Byte-verschachtelte Art auf eine Mehrzahl von einzelnen Spuren des Magnetbandmediums geschrieben und werden anschließend gleichzeitig von diesen einzelnen Spuren gelesen.
  • Die vorhandene ECC-Leistung kann ohne Berücksichtigung des verwendeten ECC-Typs gemäß hierin beschriebener Ausführungsformen zum Bestimmen genutzt werden, ob eine Fehlkorrektur durch den ECC-Decoder aufgetreten ist. Die ECC kann außerdem verwendet werden, um Typen irgendwelcher Fehler zu bestimmen, die in den Fehlerkorrekturpuffern und/oder Arbeitsspeichern des Decoders auftreten, wie beispielsweise aufgrund einer Instabilität der Einheiten selbst.
  • Gemäß einer Ausführungsform kann eine iterative Decodierung drei Decodierungsoperationen enthalten: C1-Decodierung, gefolgt von C2-Decodierung und anschließend wieder C1-Decodierung.
  • In einer alternativen Ausführungsform kann eine iterative Decodierung drei Decodierungsoperationen in einer anderen Reihenfolge enthalten: C2-Decodierung, gefolgt von C1-Decodierung und anschließend wieder C2-Decodierung. In jeder dieser Ausführungsformen können nach der letzten C1- oder C2-Decodierungsoperation weitere Decodierungsschritte wechselnd zwischen C1- und C2-Decodierung ausgeführt werden.
  • In einer spezifischen Ausführungsform kann eine iterative Decodierung einen C1-Code verwenden, der ein Reed-Solomon- RS(240,228) Code mit einer Codewort-Länge (N1) gleich 240 und einem mindesten Hamming-Abstand (d1) gleich 13 (d.h. N1 = 240, d1 = 13) ist, und einen C2-Code, der ein RS(192,168)-Code mit einer Codewort-Länge (N2) gleich 192 und einem mindesten Hamming-Abstand (d2) gleich 25 ist (d.h. N2 = 192, d2 = 25).
  • Der ECC-Decoder kann konfiguriert sein, um eine iterative C1-C2-C1-Decodierung gefolgt von einer C2-Syndromprüfung und einer C1-Syndromprüfung während des Betriebs im Streaming-Modus auszuführen. Die Decodierung der verschlüsselten Daten (die ein empfangenes Produktcodewort enthalten) wird nach der Decodierung als erfolgreich betrachtet, wenn, und nur wenn alle C1-Codewörter in einem einzelnen Produktcodewort zulässig sind (d.h. alle C1-Codewörter ein Null-Syndrom haben, das allen C1-Codewörtern entspricht, die die C1-Syndromprüfung bestanden haben), und alle C2-Codewörter in demselben einzelnen Produktcodewort zulässig sind (d.h. alle C2-Codewörter ein Null-Syndrom haben, das allen C2-Codewörtern entspricht, die die C2-Syndromprüfung bestanden haben). Andernfalls wird die Decodierung als nicht erfolgreich betrachtet.
  • In einer alternativen Ausführungsform kann der ECC-Decoder konfiguriert sein, um eine iterative C2-C1-C2-Decodierung gefolgt von einer C1-Syndromprüfung und einer C2-Syndromprüfung während des Betriebs im Streaming-Modus auszuführen. Die Bestimmung einer erfolgreichen Decodierung bleibt gegenüber dem Vorgenannten unverändert.
  • Nachdem die Decodierung der verschlüsselten Daten mit dem empfangenen Codewort darin abgeschlossen ist, können Fehlerquellen geprüft werden. Die Fehlerquellen können von vielfältigen verschiedenen Beitragenden stammen, wie beispielsweise Kanalfehlern (aufgrund einer misslungenen Decodierung), Decodierungsfehlern aufgrund eines Decoderfehlers (aufgrund einer Fehlkorrektur) und Arbeitsspeicherfehlern in den Puffern und/oder dem Arbeitsspeicher des Decoders und/oder Systems (wie beispielsweise ein eingebetteter dynamischer Direktzugriffsspeicher (eDRAM) usw.).
  • Eine auf die Decodierung folgende Fehlerprüfung kann ein Bestimmen von einer oder mehreren Fehlersignaturen für alle Fehler enthalten, die in einem nicht erfolgreich entschlüsselten Produktcodewort erfasst wurden. Diese Fehlersignaturen können auf Grundlage einer Mehrzahl von Parametern bestimmt werden, die aus der ECC-Decodierung ermittelbar sind. Zum Beispiel können die Fehlersignaturen aller Fehler, die in den entschlüsselten Daten nach einer abschließenden C1-Decodierungsoperation verbleiben, unter Verwendung der Parameter U, U‘, W, W, D, D‘, M und M‘ definiert werden, wobei: U als eine Anzahl von unkorrigierbaren C1-Codewörtern (misslungene C1-Decodierungen) in einem empfangenen Produktcodewort nach der letzten C1-Decodierungsoperation bestimmt wird, U‘ als eine Anzahl von unkorrigierbaren C2-Codewörtern (misslungene C2-Decodierungen) in einem empfangenen Produktcodewort nach der letzten C2-Decodierungsoperation bestimmt wird, W als eine Anzahl von C1-Codewörtern mit Nichtnull-Syndrom in einem empfangenen Produktcodewort (unzulässige C1-Codewörter) bestimmt wird, die nach dem Ausführen einer C1-Syndromprüfung erfasst werden, W als eine Anzahl von C2-Codewörtern mit Nichtnull-Syndrom in einem empfangenen Produktcodewort (unzulässige C2-Codewörter) bestimmt wird, die nach dem Ausführen einer C2-Syndromprüfung erfasst werden, D als eine Anzahl von C1-Codewörtern bestimmt wird, verschieden von den U unkorrigierbaren C1-Codewörtern in einem empfangenen Produktcodewort, die mindestens d1 Symbolfehler haben, die nach dem Bestimmen von C2-Fehlerspeicherorten erfasst wurden (d1 ist der mindeste Hamming-Abstand für den C1-Code), D‘ als eine Anzahl von C2-Codewörtern bestimmt wird, verschieden von den U‘ unkorrigierbaren C2-Codewörtern in einem empfangenen Produktcodewort, die mindestens d2 Symbolfehler haben, die nach dem Bestimmen von C1-Fehlerspeicherorten erfasst wurden (d2 ist der mindeste Hamming-Abstand für den C2-Code), M als eine Anzahl von C1-Codewörtern bestimmt wird, verschieden von den U unkorrigierbaren C1-Codewörtern in einem entschlüsselten Produktcodewort, die weniger als d1 Symbolfehler haben, die nach dem Bestimmen von C2-Fehlerspeicherorten erfasst wurden, und M‘ als eine Anzahl von C2-Codewörtern bestimmt wird, verschieden von den U‘ unkorrigierbaren C2-Codewörtern in einem entschlüsselten Produktcodewort, die weniger als d2 Symbolfehler haben, die nach dem Bestimmen von C1-Fehlerspeicherorten erfasst wurden. Die C1- und C2-Fehlerspeicherorte können aus dem Syndrompolynom durch Lösen der Schlüsselgleichung bestimmt werden. Zum Beispiel kann der euklidische Algorithmus zum Lösen der Schlüsselgleichung in dem C1-Decoder und dem C2-Decoder verwendet werden.
  • Die Mehrzahl von Fehlersignaturen kann durch ein binäres 3-Tupel dargestellt werden, wie im Folgenden in Tabelle 1 für eine Decodierungssequenz gezeigt, bei der die C1-Decodierung am Ende ausgeführt wird. Jedes Tupel (S) wird definiert als S = [c d m]. Die Werte von c, d und m werden wie folgt eingestellt: c = 0 in Reaktion auf U = 0, und c = 1 in Reaktion auf U > 0, wodurch das Vorhandensein eines Kanalfehlers nach einer C1-Decodierung angegeben wird; d = 0 in Reaktion auf D = 0 und d = 1 in Reaktion auf D > 0, wodurch das Vorhandensein eines C1-Decoderfehlers (Fehlkorrektur) angegeben wird; und m = 0 in Reaktion auf M = 0 und m = 1 in Reaktion auf M > 0, wodurch das Vorhandensein eines Arbeitsspeicherfehlers angegeben wird. Tabelle 1: Fehlersignaturen für eine C1-Decodierung am Ende
    Kanalfehler Decoderfehler Arbeitsspeicherfehler Fehlersignatur (S)
    Nein Nein Nein [0 0 0]
    Nein Nein Ja [0 0 1]
    Nein Ja Nein [0 1 0]
    Nein Ja Ja [0 1 1]
    Ja Nein Nein [1 0 0]
    Ja Nein Ja [1 0 1]
    Ja Ja Nein [1 1 0]
    Ja Ja Ja [1 1 1]
  • Eine weitere Mehrzahl von Fehlersignaturen kann durch ein binäres 3-Tupel dargestellt werden, wie im Folgenden in Tabelle 2 für eine Decodierungssequenz gezeigt, bei der die C2-Decodierung am Ende ausgeführt wird. Jedes Tupel (S') wird definiert als S' = [c‘ d‘ m‘]. Die Werte von c‘, d‘ und m‘ werden wie folgt eingestellt: c‘ = 0 in Reaktion auf U‘ = 0, und c‘ = 1 in Reaktion auf U‘ > 0, wodurch das Vorhandensein eines Kanalfehlers nach einer C2-Decodierung angegeben wird; d‘ = 0 in Reaktion auf D‘ = 0 und d‘ = 1 in Reaktion auf D‘ > 0, wodurch das Vorhandensein eines C2-Decoderfehlers (Fehlkorrektur) angegeben wird; und m‘ = 0 in Reaktion auf M‘ = 0 und m‘ = 1 in Reaktion auf M‘ > 0, wodurch das Vorhandensein eines Arbeitsspeicherfehlers angegeben wird. Tabelle 2: Fehlersignaturen für eine C2-Decodierung am Ende
    Kanalfehler Decoderfehler Arbeitsspeicherfehler Fehlersignatur (S)
    Nein Nein Nein [0 0 0]
    Nein Nein Ja [0 0 1]
    Nein Ja Nein [0 1 0]
    Nein Ja Ja [0 1 1]
    Ja Nein Nein [1 0 0]
    Ja Nein Ja [1 0 1]
    Ja Ja Nein [1 1 0]
    Ja Ja Ja [1 1 1]
  • Es können mehr oder weniger Fehlertypen definiert und in den entschlüsselten Daten identifiziert werden, wie für den Fachmann nach dem Lesen der vorliegenden Beschreibung offenkundig sein dürfte. Ferner kann das Tupel mehr oder weniger Einträge haben, z.B. ein binäres 2-Tupel, ein binäres 4-Tupel usw., um den Fehlertypen zu entsprechen, die in den entschlüsselten Daten zu diagnostizieren sind.
  • In 5A bis 12B wird für die hierin angegebenen Beschreibungen angenommen, dass der Produktcode, der zum Erstellen der entschlüsselten Produktcodewörter verwendet wird, die in jeder Figur gezeigt werden, auf einem RS(N1,K1)-C1-Code mit d1 = 5 und einem RS(N2,K2)-C2-Code über GF(256) mit d2 = 5 beruhen können. Natürlich kann jeder andere geeignete Produktcode verwendet werden, und dieser Produktcode wird nur der einfacheren Beschreibung wegen gewählt und schränkt die Produktcodes auf keinerlei Weise ein, die in Verbindung mit den hierin beschriebenen Ausführungsformen verwendet werden können.
  • Des Weiteren sind die Beschreibungen der sich ergebenden entschlüsselten Produktcodewörter in 5A bis 12B auf jeden linearen Blockcode C1 über GF(Q) und C2 über GF(Q) mit jeweils einem mindesten Hamming-Abstand d1 und d2 anwendbar.
  • Unter folgender Bezugnahme auf 5A wird ein entschlüsseltes Produktcodewort 500 gemäß einem möglichen Ergebnis einer iterativen Decodierung gezeigt, die eine C1-Decodierung als letzte Decodierungsoperation hat. Das entschlüsselte Produktcodewort 500 hat N1 Spalten und N2 Zeilen, wodurch es zu einem zweidimensionalen N1×N2-Produktcodewort wird.
  • In dem entschlüsselten Produktcodewort 500 sind keine erfassbaren Fehler vorhanden, da alle Symbole darin entweder fehlerlos entschlüsselt wurden, oder weil es möglich war, sie während der iterativen Decodierung zu korrigieren, die dieses entschlüsselte Produktcodewort 500 erzeugt hat. Obwohl einige der Mehrzahl von Symbolen in diesem Produktcodewort 500 möglicherweise falsch entschlüsselt wurden (verschieden von dem, was in dem Medium gespeichert wurde, aus dem die entschlüsselten Daten gelesen wurden, oder verschieden von den Daten, die die verschlüsselten Daten erzeugt haben), war die iterative Decodierung nicht fähig, derartige Fehler zu erfassen; daher ist dies ein gültiges Produktcodewort.
  • In einer beispielhaften Ausführungsform ist unter Voraussetzung des oben beschriebenen Produktcodeworts 500 U = 0, W‘ = 0, und M = 0 für eine Fehlersignatur S = [0 0 0]. Dies ergibt sich aus allen C1-Codewörtern und C2-Codewörtern in dem entschlüsselten Produktcodewort 500, die zulässige Codewörter sind, und daher gibt es keine unkorrigierten C1-Codewörter (U = 0), und die Syndrome aller C2-Codewörter sind Null (W = 0). Des Weiteren werden keine Arbeitsspeicherfehler (M = 0) in einem Pufferspeicher erfasst, wie beispielsweise einem eDRAM oder irgendeinem anderen geeigneten Pufferspeicher.
  • 5B zeigt ein entschlüsseltes Produktcodewort 550 gemäß einem möglichen Ergebnis einer iterativen Decodierung, die eine C2-Decodierung als letzte Decodierungsoperation hat. Das entschlüsselte Produktcodewort 550 hat N2 Spalten und N1 Zeilen, wodurch es zu einem zweidimensionalen N2xN1-Produktcodewort wird. In dem entschlüsselten Produktcodewort 550 ist U‘ = 0, W = 0 und M‘ = 0 für eine Fehlersignatur S' = [0 0 0], da alle C1-Codewörter und C2-Codewörter in dem entschlüsselten Produktcodewort 550 zulässige Codewörter sind, und daher gibt es keine unkorrigierten C2-Codewörter (U‘ = 0), und die Syndrome aller C1-Codewörter sind Null (W = 0). Des Weiteren werden keine Arbeitsspeicherfehler (M‘ = 0) in einem Pufferspeicher erfasst, wie beispielsweise einem eDRAM oder irgendeinem anderen geeigneten Pufferspeicher.
  • Unter folgender Bezugnahme auf 6A wird ein entschlüsseltes Produktcodewort 600 gemäß einem möglichen Ergebnis einer iterativen Decodierung gezeigt, die eine C1-Decodierung als letzte Decodierungsoperation hat. In dem entschlüsselten Produktcodewort 600 ist ein erfassbarer Fehler, ein Arbeitsspeichersymbolfehler (e), aufgrund einer falschen Speicherung des Symbols vorhanden, das dem Arbeitsspeichersymbolfehler in dem Pufferspeicher zugehörig ist. Obwohl einige der anderen Mehrzahl von Symbolen in diesem Produktcodewort 600 möglicherweise falsch entschlüsselt wurden (verschieden von dem, was in dem Medium gespeichert wurde, aus dem die entschlüsselten Daten gelesen wurden, oder verschieden von den Daten, die die verschlüsselten Daten erzeugt haben), war die iterative Decodierung nicht fähig, derartige Fehler zu erfassen; aufgrund des Arbeitsspeichersystemfehlers ist dies jedoch kein gültiges Produktcodewort.
  • In dem entschlüsselten Produktcodewort 600 ist U = 0, W‘ = 1, W = 1 und M = 1 für eine Fehlersignatur S = [0 0 1], da keine unkorrigierten C1-Codewörter (U = 0) vorhanden sind, nur ein C2-Codewort ein Nichtnull-Syndrom (W‘ = 1) in dem entschlüsselten Produktcodewort 600 hat, eines der C1-Codewörter ein Nichtnull-Syndrom (W = 1) in dem entschlüsselten Produktcodewort 600 hat, und ein Arbeitsspeicherfehler (M = 1) aufgrund eines C1-Codeworts, verschieden von U, mit weniger als d1 Symbolfehlern erfasst wurde.
  • 6B zeigt ein entschlüsseltes Produktcodewort 650 gemäß einem möglichen Ergebnis einer iterativen Decodierung, die eine C2-Decodierung als letzte Decodierungsoperation hat. Die Fehlersignatur für dieses entschlüsselte Produktcodewort 650 wäre S' = [0 0 1], was sich aus U‘ = 0, W = 1, W‘ = 1 und M‘ = 1 ergibt, da keine unkorrigierten C2-Codewörter vorhanden sind (U‘ = 0), nur ein C2-Codewort ein Nichtnull-Syndrom (W‘ = 1) in dem entschlüsselten Produktcodewort 650 hat, eines der C1-Codewörter ein Nichtnull-Syndrom (W = 1) in dem entschlüsselten Produktcodewort 650 hat, und ein Arbeitsspeicherfehler (M‘ = 1) aufgrund eines C2-Codeworts, verschieden von U‘, mit weniger als d2 Symbolfehlern erfasst wurde.
  • Unter folgender Bezugnahme auf 7A wird ein entschlüsseltes Produktcodewort 700 gemäß einem möglichen Ergebnis einer iterativen Decodierung gezeigt, die eine C1-Decodierung als letzte Decodierungsoperation hat. In dem entschlüsselten Produktcodewort 700 sind mehrere Fehler in demselben C1-Codewort vorhanden, einschließlich Kanalsymbolfehlern (x) vor einer C1-Decodierung und eingefügten Symbolfehlern (o) aufgrund eines C1-Decoderfehlers. Obwohl einige der anderen Mehrzahl von Symbolen in diesem Produktcodewort 700 möglicherweise falsch entschlüsselt wurden (verschieden von dem, was in dem Medium gespeichert wurde, aus dem die entschlüsselten Daten gelesen wurden, oder verschieden von den Daten, die die verschlüsselten Daten erzeugt haben), war die iterative Decodierung nicht fähig, derartige Fehler zu erfassen; aufgrund Kombination von Fehlern ist dies jedoch kein gültiges Produktcodewort.
  • In dem entschlüsselten Produktcodewort 700 ist U = 0, W‘ = 5, W = 0, D = 1 und M = 0 für eine Fehlersignatur S = [0 1 0], da keine unkorrigierten C1-Codewörter (U = 0) vorhanden sind, fünf C2-Codewörter ein Nichtnull-Syndrom (W = 5) in dem entschlüsselten Produktcodewort 700 haben, keines der C1-Codewörter ein Nichtnull-Syndrom (W = 0) in dem entschlüsselten Produktcodewort 700 hat, für null C1-Codewörter, verschieden von U, mindestens d1 Symbolfehler nach einem Bestimmen von C2-Fehlerspeicherorten (D = 0) erfasst wurden, und keine Arbeitsspeicherfehler (M = 0) erfasst wurden.
  • 7B zeigt ein entschlüsseltes Produktcodewort 750 gemäß einem möglichen Ergebnis einer iterativen Decodierung, die eine C2-Decodierung als letzte Decodierungsoperation hat. Die Fehlersignatur für dieses entschlüsselte Produktcodewort 750 wäre S' = [0 1 0], die sich aus U‘ = 0, W = 5, W‘ = 0, D‘ = 1 und M‘ = 0 ergibt, da keine unkorrigierten C2-Codewörter (U‘ = 0) vorhanden sind, keine C2-Codewörter ein Nichtnull-Syndrom (W‘ = 0) in dem entschlüsselten Produktcodewort 750 haben, fünf der C1-Codewörter ein Nichtnull-Syndrom (W = 5) in dem entschlüsselten Produktcodewort 750 haben, für null C2-Codewörter, verschieden von U‘, mindestens d2 Symbolfehler nach einem Bestimmen von C1-Fehlerspeicherorten (D‘ = 0) erfasst wurden, und keine Arbeitsspeicherfehler (M‘ = 0) erfasst wurden.
  • Unter folgender Bezugnahme auf 8A wird ein entschlüsseltes Produktcodewort 800 gemäß einem möglichen Ergebnis einer iterativen Decodierung gezeigt, die eine C1-Decodierung als letzte Decodierungsoperation hat. In dem entschlüsselten Produktcodewort 800 sind mehrere Fehler in demselben C1-Codewort vorhanden, einschließlich Kanalsymbolfehlern (x) vor einer C1-Decodierung und eingefügten Symbolfehlern (o) aufgrund eines C1-Decoderfehlers und eines Arbeitsspeicherfehlers (e) in einem anderen C1-Codewort. Obwohl einige der anderen Mehrzahl von Symbolen in diesem Produktcodewort 800 möglicherweise falsch entschlüsselt wurden (verschieden von dem, was in dem Medium gespeichert wurde, aus dem die entschlüsselten Daten gelesen wurden, oder verschieden von den Daten, die die verschlüsselten Daten erzeugt haben), war die iterative Decodierung nicht fähig, derartige Fehler zu erfassen; aufgrund der Kombination von Fehlern ist dies jedoch kein gültiges Produktcodewort.
  • In dem entschlüsselten Produktcodewort 800 ist U = 0, W‘ = 6, W = 1, D = 1 und M = 1 für eine Fehlersignatur S = [0 1 1], da keine unkorrigierten C1-Codewörter (U = 0) vorhanden sind, sechs C2-Codewörter ein Nichtnull-Syndrom (W‘ = 6) in dem entschlüsselten Produktcodewort 800 haben, eines der C1-Codewörter aufgrund des Arbeitsspeicherfehlers ein Nichtnull-Syndrom (W = 1) in dem entschlüsselten Produktcodewort 800 hat, für ein C1-Codewort, verschieden von U, mindestens d1 Symbolfehler nach einem Bestimmen von C2-Fehlerspeicherorten (D = 1) erfasst wurden, und ein Arbeitsspeicherfehler (M = 1) aufgrund eines C1-Codeworts, verschieden von U, mit weniger als d1 Symbolfehlern nach einem Bestimmen von C2-Fehlerspeicherorten erfasst wurde.
  • 8B zeigt ein entschlüsseltes Produktcodewort 850 gemäß einem möglichen Ergebnis einer iterativen Decodierung, die eine C2-Decodierung als letzte Decodierungsoperation hat. Die Fehlersignatur für dieses entschlüsselte Produktcodewort 850 wäre S‘ = [0 1 1], die sich aus U‘ = 0, W‘ = 1, W = 6, D‘ = 1 und M‘ = 1 ergibt, da keine unkorrigierten C2-Codewörter (U‘ = 0) vorhanden sind, ein C2-Codewort ein Nichtnull-Syndrom (W‘ = 1) in dem entschlüsselten Produktcodewort 850 hat, sechs der C1-Codewörter ein Nichtnull-Syndrom (W = 6) in dem entschlüsselten Produktcodewort 850 haben, für ein C2-Codewort, verschieden von U‘, mindestens d2 Symbolfehler nach einem Bestimmen von C1-Fehlerspeicherorten (D‘ = 1) erfasst wurden, und ein Arbeitsspeicherfehler (M‘ = 1) erfasst wurde.
  • Unter folgender Bezugnahme auf 9A wird ein entschlüsseltes Produktcodewort 900 gemäß einem möglichen Ergebnis einer iterativen Decodierung gezeigt, die eine C1-Decodierung als letzte Decodierungsoperation hat. In dem entschlüsselten Produktcodewort 900 sind mehrere Fehler in demselben C1-Codewort vorhanden: drei Kanalsymbolfehler (x) vor einer C1-Decodierung. Obwohl einige der anderen Mehrzahl von Symbolen in diesem Produktcodewort 900 möglicherweise falsch entschlüsselt wurden (verschieden von dem, was in dem Medium gespeichert wurde, aus dem die entschlüsselten Daten gelesen wurden, oder verschieden von den Daten, die die verschlüsselten Daten erzeugt haben), war die iterative Decodierung nicht fähig, derartige Fehler zu erfassen; aufgrund der Kanalsymbolfehler ist dies jedoch kein gültiges Produktcodewort.
  • In dem entschlüsselten Produktcodewort 900 ist U = 1, W‘ = 3, W = 1, D = 0 und M = 0 für eine Fehlersignatur S = [1 0 0], da ein unkorrigiertes C1-Codewort (U = 1) vorhanden ist, drei C2-Codewörter ein Nichtnull-Syndrom (W‘ = 3) in dem entschlüsselten Produktcodewort 900 haben, eines der C1-Codewörter ein Nichtnull-Syndrom (W = 1) in dem entschlüsselten Produktcodewort 900 hat, für null C1-Codewörter, verschieden von U, mindestens d1 Symbolfehler nach einem Bestimmen von C2-Fehlerspeicherorten (D = 0) erfasst wurden, und keine Arbeitsspeicherfehler (M = 0) erfasst wurden.
  • 9B zeigt ein entschlüsseltes Produktcodewort 950 gemäß einem möglichen Ergebnis einer iterativen Decodierung, die eine C2-Decodierung als letzte Decodierungsoperation hat. Die Fehlersignatur für dieses entschlüsselte Produktcodewort 950 wäre S' = [1 0 0], die sich aus U‘ = 1, W = 1, W‘ = 3, D‘ = 0 und M‘ = 0 ergibt, da kein unkorrigiertes C2-Codewort (U‘ = 1) vorhanden ist, drei C2-Codewörter ein Nichtnull-Syndrom (W = 3) in dem entschlüsselten Produktcodewort 950 haben, eines der C1-Codewörter ein Nichtnull-Syndrom (W = 1) in dem entschlüsselten Produktcodewort 950 hat, für kein C2-Codewort, verschieden von U‘, mindestens d2 Symbolfehler nach einem Bestimmen von C1-Fehlerspeicherorten (D‘ = 0) erfasst wurden, und kein Arbeitsspeicherfehler (M‘ = 0) erfasst wurde.
  • Unter folgender Bezugnahme auf 10A wird ein entschlüsseltes Produktcodewort 1000 gemäß einem möglichen Ergebnis einer iterativen Decodierung gezeigt, die eine C1-Decodierung als letzte Decodierungsoperation hat. In dem entschlüsselten Produktcodewort 1000 sind mehrere Fehler in demselben C1-Codewort vorhanden, einschließlich drei Kanalsymbolfehlern (x) vor einer C1-Decodierung und einem Arbeitsspeicherfehler (e) in einem anderen C1-Codewort. Obwohl einige der anderen Mehrzahl von Symbolen in diesem Produktcodewort 1000 möglicherweise falsch entschlüsselt wurden (verschieden von dem, was in dem Medium gespeichert wurde, aus dem die entschlüsselten Daten gelesen wurden, oder verschieden von den Daten, die die verschlüsselten Daten erzeugt haben), war die iterative Decodierung nicht fähig, derartige Fehler zu erfassen; aufgrund der Kombination von Fehlern ist dies jedoch kein gültiges Produktcodewort.
  • In dem entschlüsselten Produktcodewort 1000 ist U = 1, W‘ = 4, W = 2, D = 0 und M = 1 für eine Fehlersignatur S = [1 0 1], da ein unkorrigiertes C1-Codewort (U = 1) vorhanden ist, vier C2-Codewörter ein Nichtnull-Syndrom (W‘ = 4) in dem entschlüsselten Produktcodewort 1000 haben, zwei der C1-Codewörter ein Nichtnull-Syndrom (W = 2) in dem entschlüsselten Produktcodewort 1000 haben, für null C1-Codewörter, verschieden von U, mindestens d1 Symbolfehler nach einem Bestimmen von C2-Fehlerspeicherorten (D = 0) erfasst wurden, und ein Arbeitsspeicherfehler (M = 1) aufgrund eines C1-Codeworts, verschieden von U, mit weniger als d1 Symbolfehlern nach einem Bestimmen von C2-Fehlerspeicherorten erfasst wurde.
  • 10B zeigt ein entschlüsseltes Produktcodewort 1050 gemäß einem möglichen Ergebnis einer iterativen Decodierung, die eine C2-Decodierung als letzte Decodierungsoperation hat. Die Fehlersignatur für dieses entschlüsselte Produktcodewort 1050 wäre S' = [1 0 1], die sich aus U‘ = 1, W = 4, W‘ = 2, D‘ = 0 und M‘ = 1 ergibt, da ein unkorrigiertes C2-Codewort (U‘ = 1) vorhanden ist, zwei C2-Codewörter ein Nichtnull-Syndrom (W = 2) in dem entschlüsselten Produktcodewort 1050 haben, vier der C1-Codewörter ein Nichtnull-Syndrom (W = 4) in dem entschlüsselten Produktcodewort 1050 haben, für keine C2-Codewörter, verschieden von U‘, mindestens d2 Symbolfehler nach einem Bestimmen von C1-Fehlerspeicherorten (D‘ = 0) erfasst wurden, und ein Arbeitsspeicherfehler (M‘ = 1) erfasst wurde.
  • Unter folgender Bezugnahme auf 11A wird ein entschlüsseltes Produktcodewort 1100 gemäß einem möglichen Ergebnis einer iterativen Decodierung gezeigt, die eine C1-Decodierung als letzte Decodierungsoperation hat. In dem entschlüsselten Produktcodewort 1100 sind mehrere Fehler in zwei C1-Codewörtern vorhanden, einschließlich drei Kanalsymbolfehlern (x) vor einer C1-Decodierung in einem Codewort und drei weiteren Kanalfehlern und zwei eingefügten Symbolfehlern (o) aufgrund eines C1-Decoderfehlers in einem anderen C1-Codewort. Obwohl einige der anderen Mehrzahl von Symbolen in diesem Produktcodewort 1100 möglicherweise falsch entschlüsselt wurden (verschieden von dem, was in dem Medium gespeichert wurde, aus dem die entschlüsselten Daten gelesen wurden, oder verschieden von den Daten, die die verschlüsselten Daten erzeugt haben), war die iterative Decodierung nicht fähig, derartige Fehler zu erfassen; aufgrund der Kombination von Fehlern ist dies jedoch kein gültiges Produktcodewort.
  • In dem entschlüsselten Produktcodewort 1100 ist U = 1, W‘ = 8, W = 1, D = 1 und M = 0 für eine Fehlersignatur S = [1 1 0], da ein unkorrigiertes C1-Codewort (U = 1) vorhanden ist, acht C2-Codewörter ein Nichtnull-Syndrom (W‘ = 8) in dem entschlüsselten Produktcodewort 1100 haben, eines der C1-Codewörter ein Nichtnull-Syndrom (W = 1) in dem entschlüsselten Produktcodewort 1100 hat, für ein C1-Codewort, verschieden von U, mindestens d1 Symbolfehler nach einem Bestimmen von C2-Fehlerspeicherorten (D = 1) erfasst wurden, und keine Arbeitsspeicherfehler (M = 0) erfasst wurden.
  • 11B zeigt ein entschlüsseltes Produktcodewort 1150 gemäß einem möglichen Ergebnis einer iterativen Decodierung, die eine C2-Decodierung als letzte Decodierungsoperation hat. Die Fehlersignatur für dieses entschlüsselte Produktcodewort 1150 wäre S' = [1 1 0], die sich aus U‘ = 1, W = 8, W‘ = 1, D‘ = 1 und M‘ = 0 ergibt, da ein unkorrigiertes C2-Codewort (U‘ = 1) vorhanden ist, ein C2-Codewort ein Nichtnull-Syndrom (W‘ = 1) in dem entschlüsselten Produktcodewort 1150 hat, acht der C1-Codewörter ein Nichtnull-Syndrom (W = 8) in dem entschlüsselten Produktcodewort 1150 haben, für ein C2-Codewort, verschieden von U‘, mindestens d2 Symbolfehler nach einem Bestimmen von C1-Fehlerspeicherorten (D‘ = 1) erfasst wurden, und kein Arbeitsspeicherfehler (M‘ = 0) erfasst wurde.
  • Unter folgender Bezugnahme auf 12A wird ein entschlüsseltes Produktcodewort 1200 gemäß einem möglichen Ergebnis einer iterativen Decodierung gezeigt, die eine C1-Decodierung als letzte Decodierungsoperation hat. In dem entschlüsselten Produktcodewort 1200 sind mehrere Fehler in drei C1-Codewörtern vorhanden, einschließlich drei Kanalsymbolfehlern (x) vor einer C1-Decodierung in einem C1-Codewort, drei weiteren Kanalfehlern und zwei eingefügten Symbolfehlern (o) aufgrund eines C1-Decoderfehlers in einem zweiten C1-Codewort und einem Arbeitsspeicherfehler in einem dritten C1-Codewort. Obwohl einige der anderen Mehrzahl von Symbolen in diesem Produktcodewort 1200 möglicherweise falsch entschlüsselt wurden (verschieden von dem, was in dem Medium gespeichert wurde, aus dem die entschlüsselten Daten gelesen wurden, oder verschieden von den Daten, die die verschlüsselten Daten erzeugt haben), war die iterative Decodierung nicht fähig, derartige Fehler zu erfassen; aufgrund der Kombination von Fehlern ist dies jedoch kein gültiges Produktcodewort.
  • In dem entschlüsselten Produktcodewort 1200 ist U = 1, W‘ = 9, W = 2, D = 1 und M = 1 für eine Fehlersignatur S = [1 1 1], da ein unkorrigiertes C1-Codewort (U = 1) vorhanden ist, neun C2-Codewörter ein Nichtnull-Syndrom (W = 9) in dem entschlüsselten Produktcodewort 1200 haben, zwei der C1-Codewörter ein Nichtnull-Syndrom (W = 2) in dem entschlüsselten Produktcodewort 1200 haben, für ein C1-Codewort, verschieden von U, mindestens d1 Symbolfehler nach einem Bestimmen von C2-Fehlerspeicherorten (D = 1) erfasst wurden, und ein Arbeitsspeicherfehler (M = 1) aufgrund eines C1-Codeworts, verschieden von U, mit weniger als d1 Symbolfehlern nach einem Bestimmen von C2-Fehlerspeicherorten erfasst wurde.
  • 12B zeigt ein entschlüsseltes Produktcodewort 1250 gemäß einem möglichen Ergebnis einer iterativen Decodierung, die eine C2-Decodierung als letzte Decodierungsoperation hat. Die Fehlersignatur für dieses entschlüsselte Produktcodewort 1250 wäre S' = [1 1 1], die sich aus U‘ = 1, W = 9, W‘ = 2, D‘ = 1 und M‘ = 1 ergibt, da ein unkorrigiertes C2-Codewort (U‘ = 1) vorhanden ist, zwei C2-Codewörter ein Nichtnull-Syndrom (W = 2) in dem entschlüsselten Produktcodewort 1250 haben, neun der C1-Codewörter ein Nichtnull-Syndrom (W = 9) in dem entschlüsselten Produktcodewort 1250 haben, für ein C2-Codewort, verschieden von U‘, mindestens d2 Symbolfehler nach einem Bestimmen von C1-Fehlerspeicherorten (D‘ = 1) erfasst wurden, und ein Arbeitsspeicherfehler (M‘ = 1) erfasst wurde.
  • Für Produktcodes in Solid-State-Arbeitsspeicher, optischem Speicher, optischer Datenübertragung usw. können die nachfolgenden Diagnoseaktionen (z.B. die Ergebnisse der Diagnosen) ebenfalls in einer Fehlerbehebungsprozedur (ERP) verwendet werden, die manchmal als Datenwiederherstellungsprozedur (DRP) bezeichnet wird. Es gibt zwei Ausführungsformen für ERP oder DRP: a) Wiederholen einer Decodierung der Daten in Reaktion darauf, dass die Daten immer noch in einem Puffer verfügbar sind, wie beispielsweise im Fall eines Fehlers, der während des Speicherns von entschlüsselten Daten in einem Puffer auftritt (Arbeitsspeicherfehler, normaler Fehler), oder b) erneutes Lesen der Daten aus dem optischen/Magnet-/Solid-State-Medium und entweder Wiederholen der Decodierung der Daten in Reaktion auf den erneut gelesenen Signalverlauf des optischen/Magnet-/Solid-State-Mediums mit zusätzlicher Decodierung oder leistungsstärkerer Decodierung (z.B. einer höheren Anzahl von C1/C2-Iterationen, um eine erfolgreiche Decodierung zu erzielen).
  • Unter folgender Bezugnahme auf 13 wird ein Verfahren 1300 für eine iterative Decodierung gemäß einer Ausführungsform gezeigt. Das Verfahren 1300 kann gemäß der vorliegenden Erfindung in jeder der Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 12 veranschaulicht wurden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 13 beschrieben werden, im Verfahren 1300 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 1300 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 1300 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mindestens eine Hardware-Komponente haben, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 1300 verwendet werden. Zu beispielhaften Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Wie in 13 gezeigt, kann ein Verfahren 1300 mit einer Operation 1302 beginnen, wobei ein Iterationszähler (i) auf Null gesetzt wird (z.B. i = 0). Dieser Iterationszähler wird zum Verfolgen einer Anzahl von Iterationen verwendet, bei denen eine Decodierung an den empfangenen verschlüsselten Daten ausführt wird, die ein Produktcodewort enthalten.
  • In einer Operation 1304 wird der Iterationszähler um eins erhöht (z.B. i = i + 1), um anzugeben, dass eine weitere (oder eine erste) Iteration der Decodierung dabei ist, an den Daten ausgeführt zu werden.
  • In einer Operation 1306 wird die C1-Decodierung an den verschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um durch eine C1-Decodierung entschlüsselte Daten zu erzeugen.
  • In einer Operation 1308 wird die C2-Decodierung an den durch eine C1-Decodierung entschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um entschlüsselte Daten zu erzeugen.
  • In einer Operation 1310 wird bestimmt, ob der Iterationszähler einer vorbestimmten maximalen Anzahl vollständiger Iterationen (P) zur Decodierung des Produktcodeworts entspricht (z.B. i = P). P kann so eingestellt werden, dass ein gewünschtes Ziel erreicht wird, und um eine beliebige Anzahl von Iterationen bereitzustellen. Im Streaming-Modus ist P = 1, für zwei Iterationen von C1/C2-Decodierung ist P = 2, usw.
  • In Reaktion darauf, dass i nicht gleich P ist, kehrt das Verfahren 1300 zur Operation 1304 zurück, um eine C1/C2-Decodierung zu wiederholen. In Reaktion darauf, dass i gleich P ist, fährt das Verfahren 1300 mit einer Operation 1312 fort.
  • In der Operation 1312 wird die C1-Decodierung nochmals an den entschlüsselten Daten ausgeführt, um endgültige entschlüsselte Daten zu erzeugen, und die Anzahl von unkorrigierbaren C1-Codewörtern (U) wird berechnet.
  • In einer Operation 1314 wird eine C2-Syndromprüfung an den endgültigen entschlüsselten Daten ausgeführt, um die Anzahl von C2-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort zu berechnen.
  • In einer Operation 1316 wird eine C1-Syndromprüfung an den endgültigen entschlüsselten Daten ausgeführt, um die Anzahl von C1-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort zu berechnen.
  • Wie gezeigt, beruht das Verfahren 1300 auf einem Erhalten der Parameter U, W‘ und W, um die Fehlersignatur zu bestimmen. Danach fährt das Verfahren 1300 mit A in 17 fort, um die Fehlersignatur für das entschlüsselte Produktcodewort zu berechnen. 17 wird nach den anderen Ausführungsformen für eine iterative Decodierung in 14 bis 16 beschrieben.
  • Unter folgender Bezugnahme auf 14 wird ein Verfahren 1400 für eine iterative Decodierung gemäß einer Ausführungsform gezeigt. Das Verfahren 1400 kann gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 12 veranschaulicht wurden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 14 beschrieben werden, im Verfahren 1400 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 1400 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 1400 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mindestens eine Hardware-Komponente haben, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 1400 verwendet werden. Zu beispielhaften Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Wie in 14 gezeigt kann ein Verfahren 1400 mit einer Operation 1402 beginnen, wobei ein Iterationszähler (i) auf Null gesetzt wird (z.B. i = 0). Dieser Iterationszähler wird zum Verfolgen einer Anzahl von Iterationen verwendet, bei denen eine Decodierung an den empfangenen verschlüsselten Daten ausführt wird, die ein Produktcodewort enthalten.
  • In einer Operation 1404 wird der Iterationszähler um eins erhöht (z.B. i = i + 1), um anzugeben, dass eine weitere (oder eine erste) Iteration der Decodierung dabei ist, an den Daten ausgeführt zu werden.
  • In einer Operation 1406 wird die C1-Decodierung an den verschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um durch eine C1-Decodierung entschlüsselte Daten zu erzeugen.
  • In einer Operation 1408 wird die C2-Decodierung an den durch eine C1-Decodierung entschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um entschlüsselte Daten zu erzeugen.
  • In einer Operation 1410 wird bestimmt, ob der Iterationszähler einer vorbestimmten maximalen Anzahl vollständiger Iterationen (P) zur Decodierung des Produktcodeworts entspricht (z.B. i = P). P kann so eingestellt werden, dass ein gewünschtes Ziel erreicht wird, und um eine beliebige Anzahl von Iterationen bereitzustellen. Im Streaming-Modus ist P = 1, für zwei Iterationen von C1/C2-Decodierung ist P = 2, usw.
  • In Reaktion darauf, dass i nicht gleich P ist, kehrt das Verfahren 1400 zur Operation 1404 zurück, um eine C1/C2-Decodierung zu wiederholen. In Reaktion darauf, dass i gleich P ist, fährt das Verfahren 1400 mit einer Operation 1412 fort.
  • In der Operation 1412 wird die C1-Decodierung an den verschlüsselten Daten ausgeführt, um auf eine C1-Decodierung folgend entschlüsselte Daten zu erzeugen.
  • In einer Operation 1414 wird die C2-Decodierung an den auf eine C1-Decodierung folgend entschlüsselten Daten ausgeführt, um endgültige entschlüsselte Daten zu erzeugen. Ferner wird die Anzahl von unkorrigierbaren C2-Codewörtern (U‘) berechnet.
  • In einer Operation 1416 wird eine C1-Syndromprüfung an den endgültigen entschlüsselten Daten ausgeführt, um die Anzahl von C1-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort zu berechnen.
  • In einer Operation 1418 wird eine C2-Syndromprüfung an den endgültigen entschlüsselten Daten ausgeführt, um die Anzahl von C2-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort zu berechnen.
  • Wie gezeigt, beruht das Verfahren 1400 auf einem Erhalten der Parameter U‘, W‘ und W, um die Fehlersignatur zu bestimmen. Danach fährt das Verfahren 1400 mit B in 18 fort, um die Fehlersignatur für das entschlüsselte Produktcodewort zu berechnen. 18 wird nach dem Beschreiben der anderen Ausführungsform zum Berechnen einer Fehlersignatur in 17 beschrieben.
  • Unter folgender Bezugnahme auf 15 wird ein Verfahren 1500 für eine iterative Decodierung gemäß einer Ausführungsform gezeigt. Das Verfahren 1500 kann gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 12 veranschaulicht wurden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 15 beschrieben werden, im Verfahren 1500 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 1500 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 1500 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mindestens eine Hardware-Komponente haben, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 1500 verwendet werden. Zu beispielhaften Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Wie in 15 gezeigt kann ein Verfahren 1500 mit einer Operation 1502 beginnen, wobei ein Iterationszähler (i) auf Null gesetzt wird (z.B. i = 0). Dieser Iterationszähler wird zum Verfolgen einer Anzahl von Iterationen verwendet, bei denen eine Decodierung an den empfangenen verschlüsselten Daten ausführt wird, die ein Produktcodewort enthalten.
  • In einer Operation 1504 wird der Iterationszähler um eins erhöht (z.B. i = i + 1), um anzugeben, dass eine weitere (oder eine erste) Iteration der Decodierung dabei ist, an den Daten ausgeführt zu werden.
  • In einer Operation 1506 wird die C2-Decodierung an den verschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um durch eine C2-Decodierung entschlüsselte Daten zu erzeugen.
  • In einer Operation 1508 wird eine C1-Decodierung an den durch die C2-Decodierung entschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um entschlüsselte Daten zu erzeugen.
  • In einer Operation 1510 wird bestimmt, ob der Iterationszähler einer vorbestimmten maximalen Anzahl vollständiger Iterationen (P) zur Decodierung des Produktcodeworts entspricht (z.B. i = P). P kann so eingestellt werden, dass ein gewünschtes Ziel erreicht wird, und um eine beliebige Anzahl von Iterationen bereitzustellen, wie beispielsweise 2 vollständige Iterationen einer C2/C1-Decodierung, 3 vollständige Iterationen, 4 vollständige Iterationen usw. Im Streaming-Modus ist P = 1, für zwei Iterationen von C1/C2-Decodierung ist P = 2, usw.
  • In Reaktion darauf, dass i nicht gleich P ist, kehrt das Verfahren 1500 zur Operation 1504 zurück, um eine C2/C1-Decodierung zu wiederholen. In Reaktion darauf, dass i gleich P ist, fährt das Verfahren 1500 mit einer Operation 1512 fort.
  • In der Operation 1512 wird die C2-Decodierung nochmals an den entschlüsselten Daten ausgeführt, um endgültige entschlüsselte Daten zu erzeugen, und die Anzahl von unkorrigierbaren C2-Codewörtern (U‘) in den entschlüsselten Daten wird berechnet.
  • In einer Operation 1514 wird eine C1-Syndromprüfung an den endgültigen entschlüsselten Daten ausgeführt, um die Anzahl von C1-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort zu berechnen.
  • In einer Operation 1516 wird eine C2-Syndromprüfung an den endgültigen entschlüsselten Daten ausgeführt, um die Anzahl von C2-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort zu berechnen.
  • Wie gezeigt, beruht das Verfahren 1500 auf einem Erhalten der Parameter U‘, W‘ und W, um die Fehlersignatur zu bestimmen. Danach fährt das Verfahren 1500 mit B in 18 fort, um die Fehlersignatur für das entschlüsselte Produktcodewort zu berechnen.
  • Unter folgender Bezugnahme auf 16 wird ein Verfahren 1600 für eine iterative Decodierung gemäß einer Ausführungsform gezeigt. Das Verfahren 1600 kann gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 12 veranschaulicht wurden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 16 beschrieben werden, im Verfahren 1600 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 1600 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 1600 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mindestens eine Hardware-Komponente haben, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 1600 verwendet werden. Zu beispielhaften Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Wie in 16 gezeigt kann ein Verfahren 1600 mit einer Operation 1602 beginnen, wobei ein Iterationszähler (i) auf Null gesetzt wird (z.B. i = 0). Dieser Iterationszähler wird zum Verfolgen einer Anzahl von Iterationen verwendet, bei denen eine Decodierung an den empfangenen verschlüsselten Daten ausführt wird, die ein Produktcodewort enthalten.
  • In einer Operation 1604 wird der Iterationszähler um eins erhöht (z.B. i = i + 1), um anzugeben, dass eine weitere (oder eine erste) Iteration der Decodierung dabei ist, an den Daten ausgeführt zu werden.
  • In einer Operation 1606 wird die C2-Decodierung an den verschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um durch eine C2-Decodierung entschlüsselte Daten zu erzeugen.
  • In einer Operation 1608 wird eine C1-Decodierung an den durch die C2-Decodierung entschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um entschlüsselte Daten zu erzeugen.
  • In einer Operation 1610 wird bestimmt, ob der Iterationszähler einer vorbestimmten maximalen Anzahl vollständiger Iterationen (P) zur Decodierung des Produktcodeworts entspricht (z.B. i = P). P kann so eingestellt werden, dass ein gewünschtes Ziel erreicht wird, und um eine beliebige Anzahl von Iterationen bereitzustellen. Im Streaming-Modus ist P = 1, für zwei Iterationen von C2/C1-Decodierung ist P = 2, usw.
  • In Reaktion darauf, dass i nicht gleich P ist, kehrt das Verfahren 1600 zur Operation 1604 zurück, um eine C2/C1-Decodierung zu wiederholen. In Reaktion darauf, dass i gleich P ist, fährt das Verfahren 1600 mit einer Operation 1612 fort.
  • In der Operation 1612 wird die C2-Decodierung an den entschlüsselten Daten ausgeführt, um auf eine C2-Decodierung folgend entschlüsselte Daten zu erzeugen.
  • In einer Operation 1614 wird die C1-Decodierung an den auf eine C2-Decodierung folgend entschlüsselten Daten ausgeführt, um endgültige entschlüsselte Daten zu erzeugen. Auch die Anzahl von unkorrigierbaren C1-Codewörtern (U) in den endgültigen entschlüsselten Daten wird berechnet.
  • In einer Operation 1616 wird eine C2-Syndromprüfung an den endgültigen entschlüsselten Daten ausgeführt, um die Anzahl von C2-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort zu berechnen.
  • In einer Operation 1618 wird eine C1-Syndromprüfung an den endgültigen entschlüsselten Daten ausgeführt, um die Anzahl von C1-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort zu berechnen.
  • Wie gezeigt, beruht das Verfahren 1600 auf einem Erhalten der Parameter U, W‘ und W, um die Fehlersignatur zu bestimmen. Danach fährt das Verfahren 1600 mit A in 17 fort, um die Fehlersignatur für das entschlüsselte Produktcodewort zu berechnen.
  • Unter folgender Bezugnahme auf 17 wird ein Verfahren 1700 gemäß einer Ausführungsform gezeigt, die nach jedem der in 13 und 16 dargestellten Verfahren ausgeführt werden kann. Unter erneuter Bezugnahme auf 17 kann das Verfahren 1700 gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 12 veranschaulicht werden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 17 beschrieben werden, im Verfahren 1700 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 1700 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 1700 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mindestens eine Hardware-Komponente haben, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 1700 verwendet werden. Zu beispielhaften Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Wie in 17 gezeigt, beginnt das Verfahren 1700 ab der A-Verbindung aus einem vorher ausgeführten iterativen Decodierungsverfahren mit einer Operation 1702, in der bestimmt wird, ob die Anzahl von unkorrigierbaren C1-Codewörtern (U) gleich Null ist (z.B. U = 0). In Reaktion darauf, dass U gleich Null ist, fährt das Verfahren 1700 mit einer Operation 1704 fort; andernfalls fährt das Verfahren 1700 mit der Operation 1712 fort.
  • In der Operation 1704 wird bestimmt, ob die Anzahl von C2-Codewörtern mit Nichtnull-Syndrom in dem Produktcodewort (unzulässige C2-Codewörter), die nach einer C2-Syndromprüfung erfasst werden, gleich Null ist (z.B. W‘ = 0). In Reaktion darauf, dass W gleich Null ist, fährt das Verfahren 1700 mit einer Operation 1714 fort; andernfalls fährt das Verfahren 1700 mit der Operation 1706 fort.
  • In der Operation 1706 wird bestimmt, ob die Anzahl von C2-Codewörtern mit Nichtnull-Syndrom in dem Produktcodewort (unzulässige C2-Codewörter), die nach einer C2-Syndromprüfung erfasst werden, kleiner als der mindeste Hamming-Abstand (d1) für den C1-Code ist (z.B. W < d1). In Reaktion darauf, dass W kleiner als d1 ist, fährt das Verfahren 1700 mit einer Operation 1708 fort; andernfalls fährt das Verfahren 1700 mit der Operation 1716 fort.
  • In der Operation 1708 wird in Reaktion auf W < d1 ein Arbeitsspeicherfehler erfasst, und in der Operation 1710 wird die Fehlersignatur S = [0 0 1] ausgegeben.
  • In der Operation 1712 wird in Reaktion auf U ≠ 0 ein Kanalfehler erfasst, und das Verfahren 1700 fährt mit einer Operation 1718 fort.
  • In der Operation 1714 wird bestimmt, dass die Decodierung erfolgreich war, und das Verfahren 1700 fährt mit einer Operation 1726 fort.
  • In der Operation 1716 wird in Reaktion auf W‘ ≥ d1 ein Decoderfehler erfasst, und das Verfahren 1700 fährt mit einer Operation 1728 fort.
  • In der Operation 1718 wird bestimmt, ob die Anzahl von C1-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort (unzulässige C1-Codewörter), die nach einer C2-Syndromprüfung erfasst werden, gleich der Anzahl von unkorrigierbaren C1-Codewörtern ist (z.B. W = U). In Reaktion darauf, dass W gleich U ist, fährt das Verfahren 1700 mit einer Operation 1724 fort; andernfalls fährt das Verfahren 1700 mit der Operation 1720 fort.
  • In der Operation 1720 wird in Reaktion auf W ≠ U und U ≠ 0 ein Arbeitsspeicherfehler erfasst, und in einer Operation 1722 wird die Fehlersignatur S = [1 d 1] ausgegeben, wobei d auf dem Wert von D beruht, wobei d = 0, wenn D = 0 und d = 1, wenn D > 0.
  • In der Operation 1724 wird die Fehlersignatur S = [1 d 0] ausgegeben, wobei d auf dem Wert von D beruht, wobei d = 0, wenn D = 0 und d = 1, wenn D > 0.
  • In einer Operation 1726 wird die Fehlersignatur S = [0 0 0] in Reaktion auf eine erfolgreiche Decodierung aller Codewörter in dem Produktcodewort ausgegeben.
  • In der Operation 1728 wird bestimmt, ob die Anzahl von C1-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort (unzulässige C1-Codewörter), die nach einer C2-Syndromprüfung erfasst werden, gleich Null ist (z.B. W = 0). In Reaktion darauf, dass W gleich 0 ist, fährt das Verfahren 1700 mit einer Operation 1730 fort; andernfalls fährt das Verfahren 1700 mit der Operation 1732 fort.
  • In der Operation 1730 wird die Fehlersignatur S = [0 1 0] ausgegeben.
  • In der Operation 1732 wird in Reaktion auf W‘ ≥ d1 und W ≠ 0 ein Arbeitsspeicherfehler erfasst, und in einer Operation 1734 wird die Fehlersignatur S = [0 1 1] ausgegeben.
  • Gemäß einer Ausführungsform können nach dem Erhalten einer Fehlersignatur in dem Verfahren 1700 eine oder mehrere Aktionen ausgeführt werden, um den bestimmten Fehlertyp zu berichtigen, der durch die Fehlersignatur identifiziert wurde, bevor die verschlüsselten Daten erneut aus dem Medium gelesen werden und/oder eine erneute iterative Decodierung versucht wird. Diese Aktionen können eine seitliche Anpassung der physischen Position des Mediums relativ zu dem bzw. den Lesesensoren, eine Vorwärts- oder Rückwärtsverschiebung des Mediums in Bezug auf den bzw. die Lesesensoren, eine Verwendung von einem oder mehreren mehr oder weniger intensiven Decodierungsalgorithmen zum Entschlüsseln der verschlüsselten Daten, ein Erhöhen oder Verringern der Anzahl von Iterationen in dem Decodierungsschema, ein Erhöhen oder Verringern der Verschiebungsgeschwindigkeit des Mediums während des erneuten Lesens usw. enthalten.
  • Unter folgender Bezugnahme auf 18 wird ein Verfahren 1800 gemäß einer Ausführungsform gezeigt, die nach jedem der in 14 und 15 dargestellten Verfahren ausgeführt werden kann. Unter erneuter Bezugnahme auf 18 kann das Verfahren 1800 gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 12 veranschaulicht werden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 18 beschrieben werden, im Verfahren 1800 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 1800 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 1800 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mindestens eine Hardware-Komponente haben, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 1800 verwendet werden. Zu beispielhaften Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Wie in 18 gezeigt, beginnt ein Verfahren 1800 ab der B-Verbindung aus einem vorher ausgeführten iterativen Decodierungsverfahren mit einer Operation 1802, in der bestimmt wird, ob die Anzahl von unkorrigierbaren C2-Codewörtern (U‘) gleich Null ist (z.B. U‘ = 0). In Reaktion darauf, dass U‘ gleich Null ist, fährt das Verfahren 1800 mit einer Operation 1804 fort; andernfalls fährt das Verfahren 1800 mit der Operation 1812 fort.
  • In der Operation 1804 wird bestimmt, ob die Anzahl von C1-Codewörtern mit Nichtnull-Syndrom in dem Produktcodewort (unzulässige C1-Codewörter), die nach einer C1-Syndromprüfung erfasst werden, gleich Null ist (z.B. W = 0). In Reaktion darauf, dass W gleich Null ist, fährt das Verfahren 1800 mit einer Operation 1814 fort; andernfalls fährt das Verfahren 1800 mit der Operation 1806 fort.
  • In der Operation 1806 wird bestimmt, ob die Anzahl von C1-Codewörtern mit Nichtnull-Syndrom in dem Produktcodewort (unzulässige C1-Codewörter), die nach einer C1-Syndromprüfung erfasst werden, kleiner als der mindeste Hamming-Abstand (d2) für den C2-Code ist (z.B. W < d2). In Reaktion darauf, dass W kleiner als d2 ist, fährt das Verfahren 1800 mit einer Operation 1808 fort; andernfalls fährt das Verfahren 1800 mit der Operation 1816 fort.
  • In der Operation 1808 wird in Reaktion auf W < d2 ein Arbeitsspeicherfehler erfasst, und in der Operation 1810 wird die Fehlersignatur S' = [0 0 1] ausgegeben.
  • In der Operation 1812 wird in Reaktion auf U‘ ≠ 0 ein Kanalfehler erfasst, und das Verfahren 1800 fährt mit einer Operation 1818 fort.
  • In der Operation 1814 wird bestimmt, dass die Decodierung erfolgreich war, und das Verfahren 1800 fährt mit einer Operation 1826 fort.
  • In der Operation 1816 wird in Reaktion auf W ≥ d2 ein C2-Decoderfehler erfasst, und das Verfahren 1800 fährt mit einer Operation 1828 fort.
  • In der Operation 1818 wird bestimmt, ob die Anzahl von C2-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort (unzulässige C2-Codewörter), die nach einer C2-Syndromprüfung erfasst werden, gleich der Anzahl von unkorrigierbaren C2-Codewörtern (U‘) ist (z.B. W = U). In Reaktion darauf, dass W‘ gleich U‘ ist, fährt das Verfahren 1800 mit einer Operation 1824 fort; andernfalls fährt das Verfahren 1800 mit der Operation 1820 fort.
  • In der Operation 1820 wird in Reaktion auf W ≠ U‘ und U‘ ≠ 0 ein Arbeitsspeicherfehler erfasst, und in einer Operation 1822 wird die Fehlersignatur S' = [1 d‘ 1] ausgegeben, wobei d‘ auf dem Wert von D‘ beruht, wobei d‘ = 0, wenn D‘ = 0 und d‘ = 1, wenn D‘ > 0.
  • In der Operation 1824 wird die Fehlersignatur S' = [1 d‘ 0] ausgegeben, wobei d‘ auf dem Wert von D‘ beruht, wobei d‘ = 0, wenn D‘ = 0 und d‘ = 1, wenn D‘ > 0.
  • In einer Operation 1826 wird die Fehlersignatur S' = [0 0 0] in Reaktion auf eine erfolgreiche Decodierung aller Codewörter in dem Produktcodewort ausgegeben.
  • In der Operation 1828 wird bestimmt, ob die Anzahl von C2-Codewörtern mit Nichtnull-Syndrom (W) in dem Produktcodewort (unzulässige C2-Codewörter), die nach einer C2-Syndromprüfung erfasst werden, gleich Null ist (z.B. W‘ = 0). In Reaktion darauf, dass W gleich 0 ist, fährt das Verfahren 1800 mit einer Operation 1830 fort; andernfalls fährt das Verfahren 1800 mit der Operation 1832 fort.
  • In der Operation 1830 wird die Fehlersignatur S' = [0 1 0] ausgegeben.
  • In der Operation 1832 wird in Reaktion auf W < d2 und W ≠ 0 ein Arbeitsspeicherfehler erfasst, und in einer Operation 1834 wird die Fehlersignatur S' = [0 1 1] ausgegeben.
  • Gemäß einer Ausführungsform können nach dem Erhalten einer Fehlersignatur in dem Verfahren 1800 eine oder mehrere Aktionen ausgeführt werden, um den bestimmten Fehlertyp zu berichtigen, der durch die Fehlersignatur identifiziert wurde, bevor die verschlüsselten Daten erneut aus dem Medium gelesen werden und/oder eine erneute iterative Decodierung versucht wird. Diese Aktionen können eine seitliche Anpassung der physischen Position des Mediums relativ zu dem bzw. den Lesesensoren, eine Vorwärts- oder Rückwärtsverschiebung des Mediums in Bezug auf den bzw. die Lesesensoren, eine Verwendung von einem oder mehreren mehr oder weniger intensiven Decodierungsalgorithmen zum Entschlüsseln der verschlüsselten Daten, ein Erhöhen oder Verringern der Anzahl von Iterationen in dem Decodierungsschema, ein Erhöhen oder Verringern der Verschiebungsgeschwindigkeit des Mediums während des erneuten Lesens usw. enthalten.
  • Unter folgender Bezugnahme auf 19 wird ein Verfahren 1900 für eine iterative Decodierung gemäß einer Ausführungsform gezeigt. Das Verfahren 1900 kann gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 12 veranschaulicht wurden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 19 beschrieben werden, im Verfahren 1900 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 1900 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 1900 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mindestens eine Hardware-Komponente haben, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 1900 verwendet werden. Zu beispielhaften Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Wie in 19 gezeigt kann ein Verfahren 1900 mit einer Operation 1902 beginnen, wobei ein Iterationszähler (i) auf Null gesetzt wird (z.B. i = 0). Dieser Iterationszähler wird zum Verfolgen einer Anzahl von Iterationen verwendet, bei denen eine Decodierung an den empfangenen verschlüsselten Daten ausführt wird, die ein Produktcodewort enthalten.
  • In einer Operation 1904 wird der Iterationszähler um eins erhöht (z.B. i = i + 1), um anzugeben, dass eine weitere (oder eine erste) Iteration der Decodierung dabei ist, an den Daten ausgeführt zu werden.
  • In einer Operation 1906 wird die C1-Decodierung an den verschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um durch eine C1-Decodierung entschlüsselte Daten zu erzeugen.
  • In einer Operation 1908 wird eine C2-Decodierung an den durch die C1-Decodierung entschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um entschlüsselte Daten zu erzeugen.
  • In einer Operation 1910 wird bestimmt, ob der Iterationszähler einer vorbestimmten maximalen Anzahl vollständiger Iterationen (P) zur Decodierung des Produktcodeworts entspricht (z.B. i = P). P kann so eingestellt werden, dass ein gewünschtes Ziel erreicht wird, und um eine beliebige Anzahl von Iterationen bereitzustellen. Im Streaming-Modus ist P = 1, für zwei Iterationen von C1/C2-Decodierung ist P = 2, usw.
  • In Reaktion darauf, dass i nicht gleich P ist, kehrt das Verfahren 1900 zur Operation 1904 zurück, um eine C1/C2-Decodierung zu wiederholen. In Reaktion darauf, dass i gleich P ist, fährt das Verfahren 1900 mit einer Operation 1912 fort.
  • In der Operation 1912 wird die C1-Decodierung nochmals an den entschlüsselten Daten ausgeführt, um endgültige entschlüsselte Daten zu erzeugen, und die Anzahl von unkorrigierbaren C1-Codewörtern (U) in dem Produktcodewort wird berechnet.
  • Danach fährt das Verfahren 1900 mit C in 20 fort, um die Fehlersignatur für das entschlüsselte Produktcodewort zu berechnen.
  • Unter folgender Bezugnahme auf 20 wird ein Verfahren 2000 gemäß einer Ausführungsform gezeigt. Das Verfahren 2000 kann gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 12 veranschaulicht werden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 20 beschrieben werden, im Verfahren 2000 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 2000 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 2000 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mindestens eine Hardware-Komponente haben, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 2000 verwendet werden. Zu beispielhaften Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Wie in 20 gezeigt, kann ein Verfahren 2000 mit einer Operation 2002 beginnen, in der eine C2-Syndromprüfung an den endgültigen entschlüsselten Daten ausgeführt wird, um eine Anzahl von Nichtnull-C2-Syndromen (unzulässige C2-Codewörter) zu berechnen, die mit W bezeichnet werden.
  • In einer Operation 2004 werden C2-Fehlerspeicherorte auf Grundlage der unzulässigen C2-Codewörter und anderen Informationen berechnet, die während der Decodierung erhalten wurden.
  • In einer Operation 2006 werden C2-Fehlerspeicherorte in C1-Fehlerspeicherorte umgewandelt. Da C1- und C2-Codewörter in dem Produktcodewort orthogonal sind, kann der Speicherort eines Fehlers in einem C2-Codewort in einen Speicherort eines Fehlers in einem C1-Codewort umgewandelt werden und umgekehrt.
  • In einer Operation 2008 wird eine Anzahl von C1-Codewörtern mit mindestens d1 Symbolfehlern (D) berechnet, die von unkorrigierbaren C1-Codewörtern (U) verschieden sind. Außerdem wird eine Anzahl von C1-Codewörtern mit weniger als d1 Symbolfehlern (M) berechnet, die von unkorrigierbaren C1-Codewörtern (U) verschieden sind. Beide dieser Werte D und M werden nach einem Bestimmen von C2-Fehlerspeicherorten berechnet.
  • In der Operation 2010 werden c, d und m auf Grundlage der vorher beschriebenen Beziehungen berechnet, und die entsprechende Fehlersignatur S = [c d m] wird ausgegeben.
  • Gemäß einer Ausführungsform können nach dem Erhalten einer Fehlersignatur in dem Verfahren 2000 eine oder mehrere Aktionen ausgeführt werden, um den bestimmten Fehlertyp zu berichtigen, der durch die Fehlersignatur identifiziert wurde, bevor die verschlüsselten Daten erneut aus dem Medium gelesen werden und/oder eine erneute iterative Decodierung versucht wird. Diese Aktionen können eine seitliche Anpassung der physischen Position des Mediums relativ zu dem bzw. den Lesesensoren, eine Vorwärts- oder Rückwärtsverschiebung des Mediums in Bezug auf den bzw. die Lesesensoren, eine Verwendung von einem oder mehreren mehr oder weniger intensiven Decodierungsalgorithmen zum Entschlüsseln der verschlüsselten Daten, ein Erhöhen oder Verringern der Anzahl von Iterationen in dem Decodierungsschema, ein Erhöhen oder Verringern der Verschiebungsgeschwindigkeit des Mediums während des erneuten Lesens usw. enthalten.
  • Das Verfahren 2000 ist eine Fehlersignaturberechnung auf Grundlage der Bestimmung von U und der Berechnung von D und M nach einer iterativen C1/C2-Decodierung, die mit einer C1-Decodierung als letzter Operation endet, wie beispielsweise beim Verfahren 1900, das in 19 als Beispiel gezeigt wird.
  • Unter folgender Bezugnahme auf 21 wird ein Verfahren 2100 gemäß einer Ausführungsform gezeigt. Das Verfahren 2100 kann gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 12 veranschaulicht werden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 21 beschrieben werden, im Verfahren 2100 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 2100 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 2100 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mindestens eine Hardware-Komponente haben, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 2100 verwendet werden. Zu beispielhaften Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Wie in 21 gezeigt kann ein Verfahren 2100 mit einer Operation 2102 beginnen, wobei ein Iterationszähler (i) auf Null gesetzt wird (z.B. i = 0). Dieser Iterationszähler wird zum Verfolgen einer Anzahl von Iterationen verwendet, bei denen eine Decodierung an den empfangenen verschlüsselten Daten ausführt wird, die ein Produktcodewort enthalten.
  • In einer Operation 2104 wird der Iterationszähler um eins erhöht (z.B. i = i + 1), um anzugeben, dass eine weitere (oder eine erste) Iteration der Decodierung dabei ist, an den Daten ausgeführt zu werden.
  • In einer Operation 2106 wird die C2-Decodierung an den verschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um durch eine C2-Decodierung entschlüsselte Daten zu erzeugen.
  • In einer Operation 2108 wird eine C1-Decodierung an den durch die C2-Decodierung entschlüsselten Daten ausgeführt, die das Produktcodewort enthalten, um entschlüsselte Daten zu erzeugen.
  • In einer Operation 2110 wird bestimmt, ob der Iterationszähler einer vorbestimmten maximalen Anzahl vollständiger Iterationen (P) zur Decodierung des Produktcodeworts entspricht (z.B. i = P). P kann so eingestellt werden, dass ein gewünschtes Ziel erreicht wird, und um eine beliebige Anzahl von Iterationen bereitzustellen. Im Streaming-Modus ist P = 1, für zwei Iterationen von C2/C1-Decodierung ist P = 2, usw.
  • In Reaktion darauf, dass i nicht gleich P ist, kehrt das Verfahren 2100 zur Operation 2104 zurück, um eine C2/C1-Decodierung zu wiederholen. In Reaktion darauf, dass i gleich P ist, fährt das Verfahren 2100 mit einer Operation 2112 fort.
  • In der Operation 2112 wird die C2-Decodierung erneut an den verschlüsselten Daten ausgeführt, um endgültige entschlüsselte Daten zu erzeugen. Danach fährt das Verfahren 2100 mit D in 22 fort, um die Fehlersignatur für das entschlüsselte Produktcodewort zu berechnen.
  • Unter folgender Bezugnahme auf 22 wird ein Verfahren 2200 gemäß einer Ausführungsform gezeigt. Das Verfahren 2200 kann gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 12 veranschaulicht werden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 22 beschrieben werden, im Verfahren 2200 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 2200 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 2200 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder ein oder mehrere Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mindestens eine Hardware-Komponente haben, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 2200 verwendet werden. Zu beispielhaften Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Wie in 22 gezeigt, kann das Verfahren 2200 mit einer Operation 2202 beginnen, in der eine C1-Syndromprüfung an den endgültigen entschlüsselten Daten ausgeführt wird, um eine Anzahl von Nichtnull-C1-Syndromen (unzulässige C1-Codewörter) zu berechnen, die mit W bezeichnet werden.
  • In einer Operation 2204 werden C1-Fehlerspeicherorte auf Grundlage der unzulässigen C1-Codewörter und anderen Informationen berechnet, die während der Decodierung erhalten wurden.
  • In einer Operation 2206 werden C1-Fehlerspeicherorte in C2-Fehlerspeicherorte umgewandelt. Da C1- und C2-Codewörter in dem Produktcodewort orthogonal sind, kann der Speicherort eines Fehlers in einem C1-Codewort in einen Speicherort eines Fehlers in einem C2-Codewort umgewandelt werden und umgekehrt.
  • In einer Operation 2208 wird eine Anzahl von C2-Codewörtern mit mindestens d2 Symbolfehlern (D‘) berechnet, die von unkorrigierbaren C2-Codewörtern (U‘) verschieden sind. Außerdem wird eine Anzahl von C2-Codewörtern mit weniger als d2 Symbolfehlern (M‘) berechnet, die von unkorrigierbaren C2-Codewörtern (U‘) verschieden sind. Beide dieser Werte D‘ und M‘ werden nach einem Bestimmen von C1-Fehlerspeicherorten berechnet.
  • In der Operation 2210 werden c‘, d‘ und m‘ auf Grundlage der vorher beschriebenen Beziehungen berechnet, und die entsprechende Fehlersignatur S' = [c‘ d‘ m‘] wird ausgegeben.
  • Gemäß einer Ausführungsform können nach dem Erhalten einer Fehlersignatur in dem Verfahren 2200 eine oder mehrere Aktionen ausgeführt werden, um den bestimmten Fehlertyp zu berichtigen, der durch die Fehlersignatur identifiziert wurde, bevor die verschlüsselten Daten erneut aus dem Medium gelesen werden und/oder eine erneute iterative Decodierung versucht wird. Diese Aktionen können eine seitliche Anpassung der physischen Position des Mediums relativ zu dem bzw. den Lesesensoren, eine Vorwärts- oder Rückwärtsverschiebung des Mediums in Bezug auf den bzw. die Lesesensoren, eine Verwendung von einem oder mehreren mehr oder weniger intensiven Decodierungsalgorithmen zum Entschlüsseln der verschlüsselten Daten, ein Erhöhen oder Verringern der Anzahl von Iterationen in dem Decodierungsschema, ein Erhöhen oder Verringern der Verschiebungsgeschwindigkeit des Mediums während des erneuten Lesens usw. enthalten.
  • Das Verfahren 2200 ist eine Fehlersignaturberechnung auf Grundlage der Bestimmung von U‘ und der Berechnung von D‘ und M‘ nach einer iterativen C2/C1-Decodierung, die mit einer C2-Decodierung als letzter Decodierungsoperation endet.
  • In einer Ausführungsform kann der Fehlerkorrekturzustand für die C1- und C2-Decoder und die C1- und C2-Syndromprüfroutinen zum Identifizieren verwendet werden, ob ein Fehler auf einen normalen Fehler im Arbeitsspeicher, eine Fehlkorrektur durch den C1-Decoder oder den C2-Decoder zurückzuführen ist, oder ein unkorrigierbarer Fehler ist. Tabelle 3 zeigt gemäß einer Ausführungsform die Beziehungen zwischen dem Zustand des Decoders, dem Zustand der Syndromprüfroutine und welcher Fehlertyp vorhanden ist. Tabelle 3: Beziehungen für Fehlertypen
    Letzter Decoder 0=C1, 1 = C2 Letzter Zustand 1 = UE C1 CHK - Fehler 1 = Err C2 CHK - Fehler 1 = Err C1-Fehlkorrektur C2-Fehlkorrektur Arbeitsspeicherfehler Daten in Ordnung? 1 = in Ordnung
    0 0 0 0 0 0 0 1
    0 0 0 1 1 0 0 0
    0 0 1 0 0 0 1 0
    0 0 1 1 0 0 1 0
    0 1 0 0 0 0 0 0
    0 1 0 1 0 0 0 0
    0 1 1 0 0 0 0 0
    0 1 1 1 0 0 0 0
    1 0 0 0 0 0 0 1
    1 0 0 1 0 0 1 0
    1 0 1 0 0 1 0 0
    1 0 1 1 0 0 1 0
    1 1 0 0 0 0 0 0
    1 1 0 1 0 0 0 0
    1 1 1 0 0 0 0 0
    1 1 1 1 0 0 0 0
  • Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Speichermedien) mit einem computerlesbaren Programmcode darauf enthalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Das computerlesbare Speichermedium kann eine konkrete Einheit sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit beibehalten und speichern kann. Ein computerlesbares Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Eine nicht erschöpfende Liste von spezielleren Beispielen für das computerlesbare Speichermedium enthält Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Arbeitsspeicher (SRAM), einen tragbaren CD-ROM, ein DVD-Laufwerk (DVD), einen Speicherstick, eine Diskette, eine mechanisch verschlüsselte Einheit wie beispielsweise Lochkarten oder erhabene Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen und jede geeignete Kombination des Vorgenannten. Ein computerlesbares Speichermedium, wie hierin verwendet, muss nicht als transitorische Signale per se ausgelegt sein, wie beispielsweise Funkwellen oder andere sich frei verbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien verbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch einen Draht übertragen werden.
  • Hierin beschriebene computerlesbare Programmanweisungen können auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten von einem computerlesbaren Speichermedium oder auf einen externen Computer oder eine externe Speichereinheit über ein Netzwerk, zum Beispiel das Internet, ein lokales Netz, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk heruntergeladen werden. Das Netzwerk kann Kupferübertragungsleitungen, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerk-Adapterkarte oder Netzwerk-Schnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen von dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium in der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Computerlesbare Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung können Assembler-Anweisungen, Anweisungssatzarchitektur- (Instruction Set Architecture) (ISA) Anweisungen, Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Zustandseinstellungsdaten oder anderer Quellcode oder Objektcode sein, die in jeder Kombination von einer oder mehreren Programmiersprachen, einschließlich Smalltalk, C++ oder dergleichen, und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen geschrieben sind. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, einschließlich zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmanweisungen unter Verwendung von Zustandsinformationen der computerlesbaren Programmanweisungen zum Personalisieren der elektronischen Schaltung ausführen, um Aspekte der vorliegenden Erfindung auszuführen.
  • Aspekte der vorliegenden Erfindung werden im hierin unter Bezugnahme auf Veranschaulichungen des Ablaufplans und/oder der Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern durch computerlesbare Programmanweisungen umgesetzt werden können.
  • Diese computerlesbaren Programmanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass das computerlesbare Speichermedium mit den darin gespeicherten Anweisungen einen Fertigungsartikel aufweist, einschließlich Anweisungen, welche die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen.
  • Die computerlesbaren Programmanweisungen können auch auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder eine andere Einheit geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführt werden, die Funktionen /Handlungen umsetzen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen außerhalb der Reihenfolge auftreten, die in den Figuren angegeben ist. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block der Blockschaubilder und/oder Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf Grundlage von Hardware umgesetzt werden können, die die angegebenen Funktionen oder Handlungen ausführen oder Kombinationen von spezieller Hardware und Computeranweisungen ausführen.
  • Des Weiteren kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und eine Logik enthalten, die integriert und/oder durch den Prozessor ausführbar ist, um einen oder mehrere der hierin genannten Prozessschritte auszuführen. Mit integriert ist gemeint, dass in den Prozessor eine Logik als Hardware-Logik eingebettet ist, wie beispielsweise eine ASIC, ein FPGA usw. Mit durch den Prozessor ausführbar ist gemeint, dass die Logik eine Hardware-Logik, eine Software-Logik wie beispielsweise Firmware, Teil eines Betriebssystems, Teil eines Anwendungsprogramms usw. oder eine Kombination von Hardware- und Software-Logik ist, auf die vom Prozessor zugegriffen werden kann und die konfiguriert ist, um den Prozessor zu veranlassen, eine Funktionalität nach Ausführung durch den Prozessor auszuführen. Software-Logik kann auf einem lokalen und/oder entfernt angeordneten Arbeitsspeicher jedes in dem Fachgebiet bekannten Arbeitsspeichertyps gespeichert sein. Jeder in dem Fachgebiet bekannte Prozessor kann verwendet werden, wie beispielsweise ein Software-Prozessormodul und/oder ein Hardware-Prozessor wie eine ASIC, ein FPGA, eine CPU, eine integrierte Schaltung (IC), eine Grafikverarbeitungseinheit (GPU) usw.
  • Es ist klar, dass die verschiedenen Merkmale der vorgenannten Systeme und/oder Methodiken auf jede Weise kombiniert werden können, wodurch sie eine Vielzahl von Kombinationen aus den oben dargelegten Beschreibungen erstellen.
  • Ferner ist klar, dass Ausführungsformen der vorliegenden Erfindung in der Form eines Dienstes bereitgestellt werden können, der für den Benutzer als bedarfsabhängiger Dienst (Service-on-Demand) angeboten wird.
  • Zwar wurden oben verschiedene Ausführungsformen beschrieben, doch sollte klar sein, dass sie nur zu Beispielzwecken und nicht zur Einschränkung dargelegt wurden. Daher soll die Breite und der Schutzumfang einer bevorzugten Ausführungsform durch keine der oben beschriebenen beispielhaften Ausführungsformen eingeschränkt werden, sondern nur gemäß den folgenden Ansprüchen und ihren Entsprechungen definiert werden.

Claims (24)

  1. System, aufweisend: einen Controller und eine Logik, die in den Controller integriert und/oder durch diesen ausführbar ist, wobei die Logik konfiguriert ist zum: Ausführen einer iterativen Decodierung von verschlüsselten Daten, um entschlüsselte Daten zu erhalten, wobei mindestens drei Decodierungsoperationen in der iterativen Decodierung ausgeführt werden, wobei die Decodierungsoperationen aus einer Gruppe ausgewählt werden, aufweisend: C1-Decodierung und C2-Decodierung; und Ausführen einer der Decodierung nachfolgenden Fehlerdiagnose an einem ersten Abschnitt der entschlüsselten Daten in Reaktion darauf, dass nach der iterativen Decodierung der verschlüsselten Daten kein gültiges Produktcodewort in dem ersten Abschnitt erhalten wurde.
  2. System nach Anspruch 1, wobei die Logik ferner konfiguriert ist, einen zweiten Abschnitt der entschlüsselten Daten in Reaktion darauf auszugeben, dass in dem zweiten Abschnitt nach mindestens einer Decodierungsoperation in der iterativen Decodierung der verschlüsselten Daten ein gültiges Produktcodewort erhalten wurde.
  3. System nach Anspruch 1, wobei die Decodierungsoperationen eine anfängliche C1-Decodierung gefolgt von einer C2-Decodierung aufweisen, auf die wiederum eine C1-Decodierung folgt.
  4. System nach Anspruch 1, wobei die Decodierungsoperationen eine anfängliche C2-Decodierung gefolgt von einer C1-Decodierung aufweisen, auf die wiederum eine C2-Decodierung folgt.
  5. System nach Anspruch 1, wobei die Logik, die zum Ausführen einer auf die Decodierung folgenden Fehlerdiagnose an den entschlüsselten Daten konfiguriert ist, ferner zum Identifizieren einer Fehlersignatur in den entschlüsselten Daten konfiguriert ist.
  6. System nach Anspruch 5, wobei die Logik, die zum Identifizieren der Fehlersignatur in den entschlüsselten Daten konfiguriert ist, ferner konfiguriert ist zum: Erhalten einer Anzahl von unkorrigierbaren C1-Codewörtern (U) in den entschlüsselten Daten; Erhalten einer Anzahl von C2-Codewörtern mit Nichtnull-Syndrom (W) in den entschlüsselten Daten; Erhalten einer Anzahl von C1-Codewörtern mit Nichtnull-Syndrom (W) in den entschlüsselten Daten; Erhalten einer Anzahl von C1-Codewörtern (D) in den entschlüsselten Daten, die mindestens einen Schwellenwert (d1) für darin erfasste Symbolfehler haben, wobei die Anzahl der unkorrigierbaren C1-Codewörter (U) ausgeschlossen ist; und Erhalten einer Anzahl von C1-Codewörtern (M) in den entschlüsselten Daten, die weniger als den Schwellenwert (d1) für darin erfasste Symbolfehler haben, wobei die Anzahl der unkorrigierbaren C1-Codewörter (U) ausgeschlossen ist.
  7. System nach Anspruch 6, wobei die Logik ferner konfiguriert ist zum Definieren von acht Fehlersignaturen für die entschlüsselten Daten: eine erste Fehlersignatur, die für fehlerlose Typen steht, die in den entschlüsselten Daten erfasst werden, eine zweite Fehlersignatur, die für mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird, eine dritte Fehlersignatur, die für mindestens einen Decoderfehler (D > 0) steht, der in den entschlüsselten Daten erfasst wird, eine vierte Fehlersignatur, die für mindestens einen Decoderfehler (D > 0) und mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird, eine fünfte Fehlersignatur, die für mindestens einen Kanalfehler (U > 0) steht, der in den entschlüsselten Daten erfasst wird, eine sechste Fehlersignatur, die für mindestens einen Kanalfehler (U > 0) und mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird, eine siebte Fehlersignatur, die für mindestens einen Kanalfehler (U > 0) und mindestens einen Decoderfehler (D > 0) steht, der in den entschlüsselten Daten erfasst wird, und eine achte Fehlersignatur, die für mindestens einen Kanalfehler (U > 0). mindestens einen Decoderfehler (D > 0) und mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird.
  8. System nach Anspruch 7, wobei die erste Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D = 0 und M = 0 ist, wobei die zweite Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D = 0 und M > 0 ist, wobei die dritte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D > 0 und M = 0 ist, wobei die vierte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D > 0 und M > 0 ist, wobei die fünfte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D = 0 und M = 0 ist, wobei die sechste Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D = 0 und M > 0 ist, wobei die siebte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D > 0 und M = 0 ist, und wobei die achte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D > 0 und M > 0 ist.
  9. Durch einen Controller umgesetztes Verfahren, wobei das Verfahren aufweist: Ausführen einer iterativen Decodierung von verschlüsselten Daten, um entschlüsselte Daten zu erhalten, wobei mindestens drei Decodierungsoperationen in der iterativen Decodierung ausgeführt werden, wobei die Decodierungsoperationen aus einer Gruppe ausgewählt werden, aufweisend: C1-Decodierung und C2-Decodierung; und Ausführen einer auf die Decodierung folgenden Fehlerdiagnose an einem ersten Abschnitt der entschlüsselten Daten in Reaktion darauf, dass nach der iterativen Decodierung der verschlüsselten Daten kein gültiges Produktcodewort in dem ersten Abschnitt erhalten wurde.
  10. Verfahren nach Anspruch 9, ferner aufweisend ein Ausgeben eines zweiten Abschnitts der entschlüsselten Daten in Reaktion darauf, dass in dem zweiten Abschnitt nach mindestens einer Decodierungsoperation in der iterativen Decodierung der verschlüsselten Daten ein gültiges Produktcodewort erhalten wurde.
  11. Verfahren nach Anspruch 9, wobei die Decodierungsoperationen eine anfängliche C1-Decodierung gefolgt von einer C2-Decodierung aufweisen, auf die wiederum eine C1-Decodierung folgt.
  12. Verfahren nach Anspruch 9, wobei die Decodierungsoperationen eine anfängliche C2-Decodierung gefolgt von einer C1-Decodierung aufweisen, auf die wiederum eine C2-Decodierung folgt.
  13. Verfahren nach Anspruch 9, wobei das Ausführen einer auf die Decodierung folgenden Fehlerdiagnose an den entschlüsselten Daten ein Identifizieren einer Fehlersignatur in den entschlüsselten Daten aufweist.
  14. Verfahren nach Anspruch 13, wobei das Identifizieren einer Fehlersignatur in den entschlüsselten Daten aufweist: Erhalten einer Anzahl von unkorrigierbaren C1-Codewörtern (U) in den entschlüsselten Daten; Erhalten einer Anzahl von C2-Codewörtern mit Nichtnull-Syndrom (W) in den entschlüsselten Daten; Erhalten einer Anzahl von C1-Codewörtern mit Nichtnull-Syndrom (W) in den entschlüsselten Daten; Erhalten einer Anzahl von C1-Codewörtern (D) in den entschlüsselten Daten, die mindestens einen Schwellenwert (d1) für darin erfasste Symbolfehler haben, wobei die Anzahl der unkorrigierbaren C1-Codewörter (U) ausgeschlossen ist; und Erhalten einer Anzahl von C1-Codewörtern (M) in den entschlüsselten Daten, die weniger als den Schwellenwert (d1) für darin erfasste Symbolfehler haben, wobei die Anzahl der unkorrigierbaren C1-Codewörter (U) ausgeschlossen ist.
  15. Verfahren nach Anspruch 14, ferner aufweisend ein Definieren von acht Fehlersignaturen für die entschlüsselten Daten: eine erste Fehlersignatur, die für fehlerlose Typen steht, die in den entschlüsselten Daten erfasst werden, eine zweite Fehlersignatur, die für mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird, eine dritte Fehlersignatur, die für mindestens einen Decoderfehler (D > 0) steht, der in den entschlüsselten Daten erfasst wird, eine vierte Fehlersignatur, die für mindestens einen Decoderfehler (D > 0) und mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird, eine fünfte Fehlersignatur, die für mindestens einen Kanalfehler (U > 0) steht, der in den entschlüsselten Daten erfasst wird, eine sechste Fehlersignatur, die für mindestens einen Kanalfehler (U > 0) und mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird, eine siebte Fehlersignatur, die für mindestens einen Kanalfehler (U > 0) und mindestens einen Decoderfehler (D > 0) steht, der in den entschlüsselten Daten erfasst wird, und eine achte Fehlersignatur, die für mindestens einen Kanalfehler (U > 0). mindestens einen Decoderfehler (D > 0) und mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird.
  16. Verfahren nach Anspruch 15, wobei die erste Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D = 0 und M = 0 ist, wobei die zweite Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D = 0 und M > 0 ist, wobei die dritte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D > 0 und M = 0 ist, wobei die vierte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D > 0 und M > 0 ist, wobei die fünfte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D = 0 und M = 0 ist, wobei die sechste Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D = 0 und M > 0 ist, wobei die siebte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D > 0 und M = 0 ist, und wobei die achte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D > 0 und M > 0 ist.
  17. Computerprogrammprodukt, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darin verkörperten Programmanweisungen aufweist, wobei die verkörperten Programmanweisungen durch einen Controller ausführbar sind, um den Controller zu veranlassen zum: Ausführen einer iterativen Decodierung von verschlüsselten Daten durch den Controller, um entschlüsselte Daten zu erhalten, wobei mindestens drei Decodierungsoperationen in der iterativen Decodierung ausgeführt werden, wobei die Decodierungsoperationen aus einer Gruppe ausgewählt werden, aufweisend: C1-Decodierung und C2-Decodierung; und Ausführen einer der Decodierung nachfolgenden Fehlerdiagnose an einem ersten Abschnitt der entschlüsselten Daten durch den Controller in Reaktion darauf, dass nach der iterativen Decodierung der verschlüsselten Daten kein gültiges Produktcodewort in dem ersten Abschnitt erhalten wurde.
  18. Computerprogrammprodukt nach Anspruch 17, wobei die verkörperten Programmanweisungen ferner durch den Controller ausführbar sind, um den Controller zu veranlassen zum: Ausgeben eines zweiten Abschnitts der entschlüsselten Daten durch den Controller in Reaktion darauf, dass in dem zweiten Abschnitt nach mindestens einer Decodierungsoperation in der iterativen Decodierung der verschlüsselten Daten ein gültiges Produktcodewort erhalten wurde.
  19. Computerprogrammprodukt nach Anspruch 17, wobei die Decodierungsoperationen eine anfängliche C1-Decodierung gefolgt von einer C2-Decodierung aufweisen, auf die wiederum eine C1-Decodierung folgt.
  20. Computerprogrammprodukt nach Anspruch 17, wobei die Decodierungsoperationen eine anfängliche C2-Decodierung gefolgt von einer C1-Decodierung aufweisen, auf die wiederum eine C2-Decodierung folgt.
  21. Computerprogrammprodukt nach Anspruch 17, wobei die verkörperten Programmanweisungen, die durch den Controller ausführbar sind, um den Controller zu veranlassen, eine der Decodierung nachfolgende Fehlerdiagnose an den entschlüsselten Daten auszuführen, den Controller ferner veranlassen, eine Fehlersignatur in den entschlüsselten Daten zu identifizieren.
  22. Computerprogrammprodukt nach Anspruch 21, wobei die verkörperten Programmanweisungen, die durch den Controller ausführbar sind, um den Controller zu veranlassen, die Fehlersignatur in den entschlüsselten Daten zu identifizieren, den Controller ferner veranlassen zum: Erhalten einer Anzahl von unkorrigierbaren C1-Codewörtern (U) in den entschlüsselten Daten; Erhalten einer Anzahl von C2-Codewörtern mit Nichtnull-Syndrom (W) in den entschlüsselten Daten; Erhalten einer Anzahl von C1-Codewörtern mit Nichtnull-Syndrom (W) in den entschlüsselten Daten; Erhalten einer Anzahl von C1-Codewörtern (D) in den entschlüsselten Daten, die mindestens einen Schwellenwert (d1) für darin erfasste Symbolfehler haben, wobei die Anzahl der unkorrigierbaren C1-Codewörter (U) ausgeschlossen ist; und Erhalten einer Anzahl von C1-Codewörtern (M) in den entschlüsselten Daten, die weniger als den Schwellenwert (d1) für darin erfasste Symbolfehler haben, wobei die Anzahl der unkorrigierbaren C1-Codewörter (U) ausgeschlossen ist.
  23. Computerprogrammprodukt nach Anspruch 22, wobei die verkörperten Programmanweisungen ferner durch den Controller ausführbar sind, um den Controller zum Definieren von acht Fehlersignaturen für die entschlüsselten Daten zu veranlassen: eine erste Fehlersignatur, die für fehlerlose Typen steht, die in den entschlüsselten Daten erfasst werden, eine zweite Fehlersignatur, die für mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird, eine dritte Fehlersignatur, die für mindestens einen Decoderfehler (D > 0) steht, der in den entschlüsselten Daten erfasst wird, eine vierte Fehlersignatur, die für mindestens einen Decoderfehler (D > 0) und mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird, eine fünfte Fehlersignatur, die für mindestens einen Kanalfehler (U > 0) steht, der in den entschlüsselten Daten erfasst wird, eine sechste Fehlersignatur, die für mindestens einen Kanalfehler (U > 0) und mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird, eine siebte Fehlersignatur, die für mindestens einen Kanalfehler (U > 0) und mindestens einen Decoderfehler (D > 0) steht, der in den entschlüsselten Daten erfasst wird, und eine achte Fehlersignatur, die für mindestens einen Kanalfehler (U > 0), mindestens einen Decoderfehler (D > 0) und mindestens einen Arbeitsspeicherfehler (M > 0) steht, der in den entschlüsselten Daten erfasst wird.
  24. Computerprogrammprodukt nach Anspruch 23, wobei die erste Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D = 0 und M = 0 ist, wobei die zweite Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D = 0 und M > 0 ist, wobei die dritte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D > 0 und M = 0 ist, wobei die vierte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U = 0, D > 0 und M > 0 ist, wobei die fünfte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D = 0 und M = 0 ist, wobei die sechste Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D = 0 und M > 0 ist, wobei die siebte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D > 0 und M = 0 ist, und wobei die achte Fehlersignatur in Reaktion auf Bedingungen identifiziert wird, wobei U > 0, D > 0 und M > 0 ist.
DE112016003638.8T 2015-12-14 2016-11-29 Auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes Active DE112016003638B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/968,726 US9413392B1 (en) 2015-12-14 2015-12-14 Post-decoding error check with diagnostics for product codes
US14/968,726 2015-12-14
PCT/IB2016/057180 WO2017103716A1 (en) 2015-12-14 2016-11-29 Post-decoding error check with diagnostics for product codes

Publications (2)

Publication Number Publication Date
DE112016003638T5 true DE112016003638T5 (de) 2018-05-03
DE112016003638B4 DE112016003638B4 (de) 2023-09-21

Family

ID=56556546

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016003638.8T Active DE112016003638B4 (de) 2015-12-14 2016-11-29 Auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes

Country Status (6)

Country Link
US (2) US9413392B1 (de)
JP (1) JP6817301B2 (de)
CN (1) CN108370252B (de)
DE (1) DE112016003638B4 (de)
GB (1) GB2562352B (de)
WO (1) WO2017103716A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9413392B1 (en) * 2015-12-14 2016-08-09 International Business Machines Corporation Post-decoding error check with diagnostics for product codes
RU2693190C1 (ru) * 2018-07-02 2019-07-01 Федеральное государственное бюджетное образовательное учреждение высшего образования "Владимирский Государственный Университет имени Александра Григорьевича и Николая Григорьевича Столетовых" (ВлГУ) Способ диагностики недвоичных блоковых кодов
GB2579590B (en) * 2018-12-04 2021-10-13 Imagination Tech Ltd Workload repetition redundancy
JP2020195007A (ja) * 2019-05-24 2020-12-03 キオクシア株式会社 メモリシステム
US11693733B2 (en) * 2021-01-21 2023-07-04 Kioxia Corporation Soft error detection and correction for data storage devices
US11750221B1 (en) * 2022-03-28 2023-09-05 Samsung Electronics Co., Ltd. Encoding and decoding of data using generalized LDPC codes

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4104735A (en) 1976-09-15 1978-08-01 Siemens Aktiengesellschaft Arrangement for addressing a MOS store
JP3154607B2 (ja) * 1993-12-28 2001-04-09 三菱電機株式会社 誤り訂正復号装置及び誤り訂正復号方法
US5974580A (en) 1997-07-23 1999-10-26 Cirrus Logic, Inc. Concurrent row/column syndrome generator for a product code
JP3880144B2 (ja) * 1997-08-21 2007-02-14 キヤノン株式会社 誤り訂正方法
EP1146650A1 (de) * 2000-04-10 2001-10-17 Hewlett-Packard Company, A Delaware Corporation Fehlerkorrektur für Datenauzeichnung und Übertragung
WO2003023977A1 (fr) * 2001-08-28 2003-03-20 Linkair Communications,Inc. Procede et dispositif emetteur en diversite
JP3889286B2 (ja) * 2002-01-31 2007-03-07 三菱電機株式会社 復号方法、復号装置及びディジタル伝送システム
TWI241073B (en) * 2005-01-03 2005-10-01 Sunplus Technology Co Ltd Decoding device for product code decoding and method thereof
JP2008016151A (ja) * 2006-07-07 2008-01-24 Canon Inc データ処理方法及び再生装置
US8046660B2 (en) * 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US7912028B2 (en) * 2007-05-31 2011-03-22 Agere Systems Inc. Reducing false detection in an HSDPA 3G terminal
CN101983489B (zh) * 2008-03-31 2016-11-09 马维尔国际贸易有限公司 对传输块的多码块进行选择性组合和译码的方法和装置
US20110158333A1 (en) * 2008-09-12 2011-06-30 Hiroshi Nakano Radio communication system, radio communication method, and communication device
CN101483443B (zh) * 2008-12-26 2012-07-25 中国航空无线电电子研究所 Turbo乘积码优化编译码算法的FPGA实现方法
JP5881930B2 (ja) * 2009-05-13 2016-03-09 三菱電機株式会社 誤り訂正符号化装置および誤り訂正復号装置
US8467249B2 (en) 2010-07-06 2013-06-18 Densbits Technologies Ltd. Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8566672B2 (en) 2011-03-22 2013-10-22 Freescale Semiconductor, Inc. Selective checkbit modification for error correction
US8806295B2 (en) 2012-05-24 2014-08-12 International Business Machines Corporation Mis-correction and no-correction rates for error control
US9214964B1 (en) 2012-09-24 2015-12-15 Marvell International Ltd. Systems and methods for configuring product codes for error correction in a hard disk drive
US9413392B1 (en) 2015-12-14 2016-08-09 International Business Machines Corporation Post-decoding error check with diagnostics for product codes

Also Published As

Publication number Publication date
JP2019503603A (ja) 2019-02-07
GB201803554D0 (en) 2018-04-18
US10298272B2 (en) 2019-05-21
JP6817301B2 (ja) 2021-01-20
US9413392B1 (en) 2016-08-09
CN108370252A (zh) 2018-08-03
WO2017103716A1 (en) 2017-06-22
DE112016003638B4 (de) 2023-09-21
GB2562352B (en) 2019-03-06
GB2562352A (en) 2018-11-14
US20170170849A1 (en) 2017-06-15
CN108370252B (zh) 2021-06-15

Similar Documents

Publication Publication Date Title
DE112016003638B4 (de) Auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes
DE112014002870B4 (de) Kombinations-Fehler- und Löschdecodierung für Produktcodes
DE112012000385B4 (de) Korrigieren von Auslöschungen in Speicher-Arrays
DE112013005453B4 (de) Rekonstruierende Fehlerbehebungsprozedur (ERP) für mehrerer Datensätze unter Verwendung eines reservierten Puffers
DE3124425C2 (de) Verfahren und Vorrichtung zu Fehlererkennung und Fehlerkorrektur
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE112018005762B4 (de) Neuschreiben von datenobjekten auf speichermedien mit sequenziellem zugriff
DE102015201384B4 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
DE102013215055B4 (de) Schaltungsanordnung, Vorrichtung, Verfahren und Computerprogramm mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern
DE2162833C3 (de) Einrichtung zum Codieren und Decodieren eines aus k Bytes mit je b Bits bestehenden Datenblocks und Korrektur zweier fehlerhafter Bits
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE2914515A1 (de) Verfahren und vorrichtung fuer ein wirksames fehlerentdeckungs- und korrektursystem
DE112011100199T5 (de) Integrierter Daten- und Vorsatzschutz für Bandlaufwerke
DE2106314B2 (de) Anordnung zur Fehlererkennung und -korrektur in einem aus b Bits bestehenden Byte eines K Datenbytes enthaltenden Datenblocks
DE102012208711B4 (de) Vorrichtung zum Erzeugen einer Prüfsumme
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102016205281B4 (de) Fehlersicherung von unter verwendung von headern mit variabler länge gespeicherten daten
EP0545498B1 (de) Verfahren und Schaltungsanordnung zum Decodieren von RS-codierten Datensignalen
DE2263488C2 (de) Einrichtung zur Erkennung und Korrektur von Fehlern in zwei fehlerbehafteten Spuren eines Vielspur-Datensystems
DE102012200197A1 (de) Vorrichtung und Verfahren zur Fehlerkorrektur und zum Schutz vor Datenverfälschung
DE112011101852B4 (de) Decodieren von LDPC-Code
DE69814465T2 (de) Verfahren und gerät zur datenspeicherung auf magnetischen medien, die fehlerkorrekturkodes enthalten
DE102017129990A1 (de) Logisches format, bei dem laterales codieren genutzt wird, zum speichern von daten auf magnetband
DE102017126911A1 (de) Verknüpfter Speichersystem- und Hostsystem-Fehlerkorrekturcode

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence