DE112014002870B4 - Kombinations-Fehler- und Löschdecodierung für Produktcodes - Google Patents

Kombinations-Fehler- und Löschdecodierung für Produktcodes Download PDF

Info

Publication number
DE112014002870B4
DE112014002870B4 DE112014002870.3T DE112014002870T DE112014002870B4 DE 112014002870 B4 DE112014002870 B4 DE 112014002870B4 DE 112014002870 T DE112014002870 T DE 112014002870T DE 112014002870 B4 DE112014002870 B4 DE 112014002870B4
Authority
DE
Germany
Prior art keywords
decoding
error
errors
erasure
code word
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.)
Active
Application number
DE112014002870.3T
Other languages
English (en)
Other versions
DE112014002870T5 (de
Inventor
Roy D. Cideciyan
Robert A. Hutchins
Thomas Mittelholzer
Keisuke Tanaka
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 DE112014002870T5 publication Critical patent/DE112014002870T5/de
Application granted granted Critical
Publication of DE112014002870B4 publication Critical patent/DE112014002870B4/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
    • 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
    • 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
    • H03M13/293Decoding strategies with erasure setting
    • 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/2957Turbo codes and 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/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes

Abstract

System für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes, wobei das System einen Prozessor und Logik aufweist, die in den Prozessor integriert und/oder von dem Prozessor ausführbar ist, wobei die Logik so konfiguriert ist, dass sie:erfasste Daten empfängt (402, 602);Löschmarkierungen für die erfassten Daten erzeugt (404, 604) und die Löschmarkierungen einem C2-Decodierer bereitstellt;einen Stopp-Parameter so setzt (406, 606), dass er einer Länge von C1-Codewörtern in einer Codewort-Verschachtelung entspricht, die zur Codierung der erfassten Daten verwendet werden; undin einem iterativen Prozess (408, 608) eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchführt, bis eines von zumindest zwei Fehlerkriterien, nämlich das erste Fehlerkriterium „Decodierung erfolgreich“ (416, 424) oder das zweite Fehlerkriterium „Decodierung nicht erfolgreich“ (428) erfüllt ist.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft die Speicherung von Daten und insbesondere das Bereitstellen einer verbesserten Decodierung von Produktcodes unter Verwendung einer Kombinations-Fehler- und Löschdecodierung.
  • Speichermedien und Übertragungsmedien wie zum Beispiel ein Magnetband, ein optischer Speicher oder die Übertragung mittels Lichtwellenleiter verwenden Produktcodes zur Codierung von Daten, die dann decodiert werden müssen, um die Daten von dem Medium zu lesen. Produktcodes können auch in Storage-Class-Memories und in Flash-Speichern verwendet werden. Der Produktcode ist eine kritische Komponente einer zweistufigen Fehlerkorrekturarchitektur. Die Fehlerkorrektur in Bandlaufwerken beruht üblicherweise auf Produktcodes, die einen C1-Code erster Stufe und einen C2-Code zweiter Stufe verwenden, ein Prozess, der in der Technik bekannt ist. Produkt-Codewörter können als zweidimensionale Matrizen dargestellt werden, wobei Zeilen der Matrix Codewörter von einem Zeilencode (C1-Code) aufweisen und Spalten der Matrix aus Codewörtern von einem Spaltencode (C2-Code) bestehen.
  • Nach dem Stand der Technik wird jeder Datensatz mit Hilfe von verschachtelten Sätzen von Codewörtern codiert, die zu einer ECC-codierten Matrix mit einer Größe von M Byte x N Byte (MxN) zusammengefasst sind, und dann auf Band geschrieben, wie in 1 gezeigt ist. In dieser Matrix 150 gibt es zwei Codierstufen. Die erste Codierstufe verwendet die Matrixzeilen 102. Jede Zeile 102 der Matrix enthält eine C1-ECC-Zeilenparität 106, die p-Bytes von einer C1-ECC zu den n-Bytes der Benutzerdaten hinzufügt (z.B. N = n + p Bytes). Die zweite Codierstufe, die C2-ECC-Spaltenparität 108, fügt jeder Matrixspalte 104 q-Bytes von einer C2-ECC hinzu. Im Falle von q = 12 beispielsweise würde das Hinzufügen von 12 Byte einer C2-ECC die Matrix 150 um 12 Zeilen erweitern (z.B. M = m + q Bytes).
  • Im Bandspeicher ist der Decodierer für den Produktcode so ausgelegt, dass er sehr lange Fehlerereignisse wie zum Beispiel Fehlstellen und Synchronisationssprünge abschwächt. In manchen Bandlaufwerken führt der C1-Decodierer, der auch während Read-While-Write-Operationen verwendet wird, eine Fehlerdecodierung durch und der C2-Decodierer führt eine Löschdecodierung durch. Der Nachteil dieser speziellen Decodierstrategie besteht darin, dass sie bei Vorhandensein von kurzen Fehlerereignissen nicht zufriedenstellend funktioniert. Außerdem ermöglicht diese Strategie keine verbesserte Fehlerrate bei Verwendung einer iterativen Decodierung.
  • In anderen Übertragungskanälen wie zum Beispiel Lichtwellenleiter-Übertragungskanälen wird die Fehlerdecodierung bei Vorhandensein von sehr kurzen unabhängigen Bitfehlern verwendet. Der Nachteil dieser Decodierstrategie besteht darin, dass sie sehr gut funktioniert, solange lange Fehlerereignisse vernachlässigbar sind.
  • Viele der Kanäle und Speichermedien, wie zum Beispiel Bandspeicherkanäle, weisen jedoch sowohl kurze als auch lange Fehlerereignisse auf. Daher besteht Bedarf an einem verbesserten Decodierablauf/einer verbesserten Decodierstrategie, der beziehungsweise die eine verbesserte Fehlerrate bei Vorhandensein von langen sowie kurzen Fehlerereignissen liefert.
  • Die DE 10 2007 046 789 A1 offenbart ein iteratives Fehlerkorrekturverfahren und eine Vorrichtung zum Korrigieren von Fehlern in digitalen Daten, die von einem Speichermedium gelesen werden, wobei das erneute Lesen mit der Fehlerkorrekturprozedur in einer einzigen Fehlerbehebungsprozedur kombiniert ist. Die Daten, die von dem Speichermedium gelesen werden, werden als mehrdimensionale Datenstruktur dargestellt, und die Fehlerbehebungsprozedur wird für jede Dimension der Datenstruktur vorgenommen. In jeder Dimension wird eine Löschkarte erzeugt, die Fehler aus dem anfänglichen Lesen der Daten für die Dimension enthält, und die Fehler in der Löschkarte werden einbehalten, wenn sie aus nachfolgendem erneutem Lesen korrigiert werden. Nach einer vorbestimmten Anzahl von erneuten Lesevorgängen oder wenn keine weiteren Fehler vorliegen, wird die Fehlerbehebungsprozedur beendet.
  • Die US 2007 / 0 288 827 A1 offenbart ein verbessertes Dekodierschema zur Verwendung in einem Dekoder für verkettete Kanäle. Die Dekodierung des verketteten Codes wird iterativ durchgeführt, um die Konfidenz für alle korrigierten Symbole zu erhöhen. Als Ergebnis wird die Gesamtleistung des Decoders verbessert. Dieser iterative Prozess umfasst die Verwendung eines Maximal a posteriori (MAP)-Decoders, der dekodierte Informationen erzeugt, die Löschungsinformationen beinhalten. Die Ausgabe des MAP-Decoders wird dann einem Reed-Solomon (RS)-Decoder zugeführt, der eine bessere Fehlerkorrekturleistung erreicht, indem er diese Löschungsinformationen verwendet. Diese verbesserte Ausgabe des RS-Decoders wird dann wieder dem MAP-Decoder zugeführt, wodurch die Leistung des Systems verbessert wird.
  • Die US 2008 / 0 155 374 A1 offenbart ein Gerät, ein Verfahren und ein Programm, zum Verhindern einer Zunahme der Wahrscheinlichkeit einer fehlerhaften Korrektur für einen Burst-Fehler, dessen Länge die Erkennungsfähigkeit übersteigt, selbst wenn eine hohe Korrekturfähigkeit für einen zufälligen Fehler ausgewählt ist. In einem Beispiel korrigiert eine Vorrichtung Fehler in einem Produktcodeblock, der C1-Codes in einer Zeilenrichtung und C2-Codes in einer Spaltenrichtung enthält. Zuerst führt ein C1 -Decoder eine C1 -Korrektur für jedes von einem geraden C1, das geradzahlige Bytes im C1-Code enthält, und einem ungeraden C1, das ungeradzahlige Bytes im C1-Code enthält, aus. Als nächstes führt ein C2-Decoder in der C2-Korrektur eine Löschkorrektur aus, wenn eines der C1-Korrekturresultate für das gerade C1 oder das ungerade C1 ein Korrekturfehler ist und wenn eines der Resultate die 3-Byte-Korrektur ist, während das andere der Korrekturfehler oder die 3-Byte-Korrektur ist.
  • KURZDARSTELLUNG
  • Zu den der Erfindung zugrundeliegenden Aufgaben zählt die Bereitstellung eines Systems, eines Verfahrens und eines Computerprogrammprodukts, das eine verbesserte Fehlerrate bei Vorhandensein von langen sowie kurzen Fehlerereignissen liefert. Die der Erfindung zugrunde liegenden Aufgaben werden jeweils mit den Merkmalen der unabhängigen Patentansprüche gelöst.
  • Ausführungsformen der Erfindung sind Gegenstand der abhängigen Patentansprüche.
  • In einer Ausführungsform enthält ein System für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes einen Prozessor und Logik, die in den Prozessor integriert ist und/oder von dem Prozessor ausgeführt werden kann, wobei die Logik so konfiguriert ist, dass sie erfasste Daten empfängt, Löschmarkierungen für die erfassten Daten erzeugt und die Löschmarkierungen einem C2-Decodierer bereitstellt, einen Stopp-Parameter so setzt, dass er einer Länge von C1-Codewörtern in einer Codewort-Verschachtelung entspricht, die zur Codierung der erfassten Daten verwendet werden, und in einem iterativen Prozess eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchführt, bis die Decodierung erfolgreich oder nicht erfolgreich ist.
  • In einer weiteren Ausführungsform beinhaltet ein Verfahren für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes das Empfangen von erfassten Daten, das Erzeugen von Löschmarkierungen für die erfassten Daten und das Bereitstellen der Löschmarkierungen für einen C2-Decodierer, das Setzen eines Stopp-Parameters in der Weise, dass er einer Länge von C1-Codewörtern in einer Codewort-Verschachtelung entspricht, die zur Codierung der erfassten Daten verwendet werden, und das in einem iterativen Prozess erfolgende selektive Durchführen einer Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung, bis die Decodierung erfolgreich oder nicht erfolgreich ist.
  • Gemäß einer weiteren Ausführungsform enthält ein Computerprogrammprodukt für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes ein von einem Computer lesbares Speichermedium mit damit realisiertem Programmcode, wobei der Programmcode von einem Prozessor gelesen/ausgeführt werden kann, um erfasste Daten zu empfangen, Löschmarkierungen für die erfassten Daten zu erzeugen und die Löschmarkierungen einem C2-Decodierer bereitzustellen, einen Stopp-Parameter so zu setzen, dass er einer Länge von C1-Codewörtern in einer Codewort-Verschachtelung entspricht, die zur Codierung der erfassten Daten verwendet werden, und um in einem iterativen Prozess eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchzuführen, bis die Decodierung erfolgreich oder nicht erfolgreich ist.
  • Weitere Aspekte und Ausführungsformen der vorliegenden Erfindung gehen aus der folgenden ausführlichen Beschreibung hervor, die in Zusammenschau mit den Zeichnungen anhand eines Beispiels die Grundgedanken der Erfindung veranschau licht.
  • Figurenliste
    • 1 zeigt eine Datensatzmatrix nach dem Stand der Technik.
    • 2 stellt ein Netzwerkspeichersystem gemäß einer Ausführungsform dar.
    • 3 stellt ein vereinfachtes Bandlaufwerk eines bandbasierten Datenspeichersystems gemäß einer Ausführungsform dar.
    • 4 ist ein Ablaufplan eines Verfahrens gemäß einer Ausführungsform.
    • 5 ist ein Ablaufplan eines Verfahrens gemäß einer weiteren Ausführungsform.
    • 6 ist ein Ablaufplan eines Verfahrens gemäß einer noch weiteren Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung erfolgt zu dem Zweck, die allgemeinen Grundgedanken der vorliegenden Erfindung zu veranschaulichen, und sie ist nicht als Einschränkung der hier beanspruchten erfindungsgemäßen Gedanken und Konzepte zu verstehen. Darüber hinaus können bestimmte hier beschriebene Merkmale in Verbindung mit anderen beschriebenen Merkmalen in einer jeden der verschiedenen möglichen Kombinationen und Permutationen verwendet werden.
  • Sofern hier nicht ausdrücklich anders definiert, sind alle Begriffe in ihrer weitestmöglichen Auslegung zu verstehen, die Bedeutungen, welche sich aus der Spezifikation ergeben, sowie Bedeutungen, die der Fachmann versteht und/oder die in Wörterbüchern, Abhandlungen usw. definiert sind, einschließt.
  • Es ist auch anzumerken, dass die Singularformen „ein“, „eine“, „einer“ und „der/die/das“ in der in der Spezifikation und den beigefügten Ansprüchen verwendeten Weise Pluraldenotationen einschließen, sofern nichts anderes angegeben ist.
  • Gemäß einer Ausführungsform wird eine Decodierstrategie für Produktcodes, die sowohl auf einer Fehler- als auch auf einer Löschdecodierung beruht, verwendet, um bei Vorhandensein von kurzen und langen Fehlerereignissen eine verbesserte Fehlerrate zu erzielen.
  • In einer allgemeinen Ausführungsform enthält ein System für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes einen Prozessor und Logik, die in den Prozessor integriert ist und/oder von dem Prozessor ausgeführt werden kann, wobei die Logik so konfiguriert ist, dass sie erfasste Daten empfängt, Löschmarkierungen für die erfassten Daten erzeugt und die Löschmarkierungen einem C2-Decodierer bereitstellt, einen Stopp-Parameter so setzt, dass er einer Länge von C1-Codewörtern in einer Codewort-Verschachtelung entspricht, die zur Codierung der erfassten Daten verwendet werden, und in einem iterativen Prozess eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchführt, bis die Decodierung erfolgreich oder nicht erfolgreich ist.
  • In einer weiteren allgemeinen Ausführungsform beinhaltet ein Verfahren für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes das Empfangen von erfassten Daten, das Erzeugen von Löschmarkierungen für die erfassten Daten und das Bereitstellen der Löschmarkierungen für einen C2-Decodierer, das Setzen eines Stopp-Parameters in der Weise, dass er einer Länge von C1-Codewörtern in einer Codewort-Verschachtelung entspricht, die zur Codierung der erfassten Daten verwendet werden, und das in einem iterativen Prozess erfolgende selektive Durchführen einer Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung, bis die Decodierung erfolgreich oder nicht erfolgreich ist.
  • Gemäß einer weiteren allgemeinen Ausführungsform enthält ein Computerprogrammprodukt für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes ein von einem Computer lesbares Speichermedium mit damit realisiertem Programmcode, wobei der Programmcode von einem Prozessor gelesen/ausgeführt werden kann, um erfasste Daten zu empfangen, Löschmarkierungen für die erfassten Daten zu erzeugen und die Löschmarkierungen einem C2-Decodierer bereitzustellen, einen Stopp-Parameter so zu setzen, dass er einer Länge von C1-Codewörtern in einer Codewort-Verschachtelung entspricht, die zur Codierung der erfassten Daten verwendet werden, und um in einem iterativen Prozess eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchzuführen, bis die Decodierung erfolgreich oder nicht erfolgreich ist.
  • Wie der Fachmann verstehen wird, können Aspekte der vorliegenden Erfindung als ein System, ein Verfahren oder ein Computerprogrammprodukt ausgebildet sein. Folglich können Aspekte der vorliegenden Erfindung die Form einer ganz in Hardware realisierten Ausführungsform, einer ganz in Software realisierten Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert, die hier alle allgemein als „Logik“, eine „Schaltung“, ein „Modul“ oder ein „System“ bezeichnet werden können. Überdies können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das sich auf einem oder mehreren von einem Computer lesbaren Datenträger(n) befindet, auf dem beziehungsweise denen von einem Computer lesbarer Programmcode ausgebildet ist.
  • Jede beliebige Kombination aus einem oder mehreren von einem Computer lesbaren Datenträgern kann verwendet werden. Der von einem Computer lesbare Datenträger kann ein von einem Computer lesbarer Signaldatenträger oder ein von einem Computer lesbares Speichermedium sein. Ein von einem Computer lesbares Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede beliebige geeignete Kombination des Vorstehenden sein. Zu konkreteren Beispielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für das von einem Computer lesbare Speichermedium würden folgende gehören: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein tragbarer Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede beliebige geeignete Kombination des Vorstehenden. In Zusammenhang mit diesem Schriftstück kann ein von einem Computer lesbares Speichermedium jedes physisch greifbare Medium sein, das ein Programm zur Verwendung durch ein Anweisungsausführungssystem, eine Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
  • Ein von einem Computer lesbarer Signaldatenträger kann ein weitergeleitetes Datensignal mit darin enthaltenem, von einem Computer lesbarem Programmcode, beispielsweise im Basisband oder als Teil einer Trägerwelle, enthalten. Ein solches weitergeleitetes Signal kann jede beliebige von vielen verschiedenen Formen einschließlich, ohne darauf beschränkt zu sein, einer elektromagnetischen, optischen Form oder jede beliebige geeignete Kombination daraus, wie zum Beispiel eine elektrische Verbindung mit einer oder mehreren Leitungen, ein Lichtwellenleiter usw., annehmen. Ein von einem Computer lesbares Signalmedium kann jedes beliebige von einem Computer lesbare Medium sein, bei dem es sich nicht um ein von einem Computer lesbares Speichermedium handelt und das ein Programm zur Verwendung durch ein Anweisungsausführungssystem, eine Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Ausführungsausführungssystem, einer Anweisungsausführungsvorrichtung oder - einheit übertragen, weiterleiten oder transportieren kann.
  • Auf einem von einem Computer lesbaren Datenträger enthaltener Programmcode kann mittels eines beliebigen geeigneten Mediums einschließlich eines drahtlosen Mediums, eines drahtgebundenen Mediums, eines Lichtwellenleiterkabels, mittels Hochfrequenz (HF) usw. oder mittels einer beliebigen zweckmäßigen Kombination des Vorstehenden, ohne darauf beschränkt zu sein, übertragen werden.
  • Computer-Programmcode zur Durchführung von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache, wie beispielsweise Java, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache „C“ oder in ähnlichen Programmiersprachen geschrieben sein. Die Ausführung des Programmcodes kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server erfolgen. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden sein oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Dienstanbieters) hergestellt werden.
  • Aspekte der vorliegenden Erfindung werden nachstehend mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern mittels Anweisungen eines Computerprogramms realisiert werden können. Diese Anweisungen eines Computerprogramms können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Diese Anweisungen eines Computerprogramms können auch auf einem von einem Computer lesbaren Datenträger gespeichert werden, der einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem von einem Computer lesbaren Datenträger gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, der Anweisungen enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
  • Die Anweisungen des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf andere Einheiten geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf anderen Einheiten zu bewirken, um einen von einem Computer ausgeführten Prozess so zu erzeugen, dass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder in den Blockschaubildern ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der einen oder mehrere ausführbare Anweisungen zur Ausführung der angegebenen logischen Funktion(en) aufweist. Es sei auch angemerkt, dass die in dem Block angegebenen Funktionen in manchen alternativen Ausführungsarten mitunter in einer anderen als in der in den Figuren angegebenen Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können zuweilen in der umgekehrten Reihenfolge ausgeführt werden. Es wäre noch anzumerken, dass jeder Block der Blockschaubilder und/oder der Darstellung in den Ablaufplänen sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in den Ablaufplänen von Systemen, die auf Spezial-Hardware beruhen und die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Spezial-Hardware und Computer-Anweisungen ausgeführt werden können.
  • Nun Bezug nehmend auf 2 ist eine schematische Darstellung eines Netzwerkspeichersystems 10 gemäß einer Ausführungsform gezeigt. Dieses Netzwerkspeichersystem 10 stellt lediglich ein Beispiel für ein geeignetes Speichersystem dar und ist nicht als Einschränkung des Nutzungsumfangs oder der Funktionalität von hier beschriebenen Ausführungsformen der Erfindung zu verstehen. Ungeachtet dessen ist das Netzwerkspeichersystem 10 realisierungsfähig und/oder in der Lage, beliebige der vorstehend beschriebenen Funktionen auszuführen.
  • In dem Netzwerkspeichersystem 10 gibt es ein Computersystem/einen Server 12, das beziehungsweise der mit zahlreichen anderen Umgebungen oder Konfigurationen eines universellen oder eines speziellen Datenverarbeitungssystems betrieben werden kann. Zu Beispielen für bekannte Datenverarbeitungssysteme, - umgebungen und/oder -konfigurationen, die für die Verwendung mit dem Computersystem/Server 12 geeignet sein können, gehören, ohne darauf beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin-Clients, Thick-Clients, tragbare oder Laptop-Einheiten, Mehrprozessorsysteme, auf einem Mikroprozessor beruhende Systeme, Aufsatzgeräte (Set-Top-Boxen), programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der vorstehenden Systeme oder Einheiten enthalten, und dergleichen.
  • Das Computersystem/der Server 12 kann in dem allgemeinen Kontext von Anweisungen, die von einem Computersystem ausgeführt werden können, wie zum Beispiel Programmmodulen, die von einem Computersystem ausgeführt werden, beschrieben werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen realisieren. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen betrieben werden, in denen Aufgaben von fernen Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in fernen Speichermedien eines Computersystems, darunter auch in Hauptspeichereinheiten, befinden.
  • Wie in 2 gezeigt ist, ist das Computersystem/der Server 12 in dem Netzwerkspeichersystem 10 in Form einer Universal-Datenverarbeitungseinheit gezeigt. In einer Ausführungsform kann das Computersystem 12 in Verbindung mit einem Bandlaufwerksystem verwendet werden. Zu den Komponenten des Computersystems/des Servers 12 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 16, ein Systemspeicher 28 und ein Bus 18 gehören, der verschiedene Systemkomponenten verbindet, darunter auch den Systemspeicher 28 mit dem Prozessor 16.
  • Der Bus 18 stellt eine oder mehrere von diversen beliebigen Arten von Busstrukturen einschließlich eines Hauptspeicherbusses oder einer Hauptspeicher-Steuereinheit, eines peripheren Busses, eines Accelerated Graphics Port und eines Prozessor- oder lokalen Busses, der eine beliebige von vielen verschiedenen Busarchitekturen nutzt, dar. Als Beispiel, aber nicht darauf beschränkt, gehören zu solchen Architekturen der Bus „Industry Standard Architecture (ISA)“, der Bus „Micro Channel Architecture (MCA)“, der Bus „Enhanced ISA (EISA)“, der lokale Bus „Video Electronics Standards Association (VESA)“ und der Bus „Peripheral Component Interconnects (PCI)“.
  • Das Computersystem/der Server 12 enthält üblicherweise viele verschiedene Datenträger, die von einem Computersystem gelesen werden können. Bei diesen Datenträgern kann es sich um jedwede verfügbaren Datenträger handeln, auf die von dem Computersystem/Server 12 zugegriffen werden kann, und zu ihnen können sowohl flüchtige als auch nicht flüchtige Datenträger sowie auswechselbare und nicht auswechselbare Datenträger gehören.
  • Der Systemspeicher 28 kann von einem Computersystem lesbare Datenträger in Form von flüchtigem Hauptspeicher, wie beispielsweise einem Direktzugriffsspeicher (RAM) 30 und/oder einem Cachespeicher 32, einschließen. Das Computersystem/der Server 12 kann darüber hinaus weitere auswechselbare/nicht auswechselbare, flüchtige/nicht flüchtige Speichermedien eines Computersystems enthalten. Lediglich als Beispiel kann das Speichersystem 34 für Leseoperationen von und für Schreiboperationen auf einen nicht auswechselbaren, nicht flüchtigen Magnetdatenträger - nicht gezeigt und üblicherweise als „Festplatte“ bezeichnet, die in einem Festplattenlaufwerk (HDD) betrieben werden kann - bereitgestellt werden. Obgleich nicht gezeigt, können ein Magnetplattenlaufwerk für Leseoperationen von und Schreiboperationen auf eine auswechselbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk für Leseoperationen von oder Schreiboperationen auf eine auswechselbare, nicht flüchtige optische Platte, wie zum Beispiel ein CD-ROM, ein DVD-ROM, oder andere optische Datenträger bereitgestellt werden. In diesen Fällen kann jedes Speichermedium über eine oder mehrere Datenträger-Schnittstellen mit dem Bus 18 verbunden werden. Wie weiter gezeigt und nachstehend beschrieben wird, kann der Systemspeicher 28 mindestens ein Programmprodukt enthalten, das über einen Satz (z.B. mindestens einen Satz) von Programmmodulen verfügt, die so konfiguriert sind, dass sie die Funktionen von hier beschriebenen Ausführungsformen ausführen.
  • Ein Programm/Dienstprogramm 40, das über einen Satz (mindestens einen Satz) von Programmmodulen 42 verfügt, kann zum Beispiel, aber nicht ausschließlich, im Systemspeicher 28 abgelegt werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine bestimmte Kombination daraus können jeweils eine Ausführungsart einer Netzwerkumgebung beinhalten. Die Programmmodule 42 führen im Allgemeinen die Funktionen und/oder die methodischen Vorgehensweisen von erfindungsgemäßen Ausführungsformen, die hier beschrieben sind, aus.
  • Das Computersystem/der Server 12 kann auch mit einer oder mehreren externen Einheiten 14 wie zum Beispiel einer Tastatur, einem Zeigegerät, einem Bildschirm 24 usw.; mit einer oder mehreren Einheiten, die einem Benutzer den Dialogverkehr mit dem Computersystem/Server 12 ermöglichen; und/oder beliebigen Einheiten (z.B. Netzkarte, Modem usw.), die dem Computersystem/Server 12 den Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen, Daten austauschen. Ein solcher Datenaustausch kann über Eingabe-/Ausgabe-(E/A-)Schnittstellen 22 erfolgen. Weiterhin kann das Computersystem/der Server 12 mit einem oder mehreren Netzwerken wie zum Beispiel einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z.B. dem Internet) über den Netzwerkadapter 20 Daten austauschen. Wie gezeigt ist, tauscht der Netzwerkadapter 20 mit den anderen Komponenten des Computersystems/Servers12 über den Bus 18 Daten aus. Es sollte sich verstehen, dass auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten, obgleich diese nicht gezeigt sind. Zu Beispielen gehören, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Festplattenlaufwerken, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
  • 3 stellt ein vereinfachtes Bandlaufwerk 100 eines bandbasierten Datenspeichersystems dar, das gemäß verschiedenen Ausführungsformen eingesetzt werden kann. Während in 3 eine bestimmte Ausführungsart eines Bandlaufwerks gezeigt ist, ist anzumerken, dass die hier beschriebenen Ausführungsformen zusammen mit einer beliebigen Art eines Bandlaufwerksystems realisiert werden können.
  • Wie gezeigt ist, sind eine Bandzufuhrkassette 120 und eine Aufrollspule 121 bereitgestellt, um ein Band 122 aufzunehmen. Eine oder mehrere der Spulen können einen Teil einer auswechselbaren Kassette bilden und gehören nicht unbedingt zum Bandlaufwerk 100. Das Bandlaufwerk 100, wie beispielsweise das in 3 gezeigte, kann des Weiteren einen Antriebsmotor oder mehrere Antriebsmotoren enthalten, um die Bandzufuhrkassette 120 und die Aufrollspule 121 anzutreiben, um das Band 122 über einen Bandkopf 126 beliebiger Art zu transportieren.
  • Führungen 125 führen das Band 122 über den Bandkopf 126. Dieser Bandkopf 126 ist wiederum über ein Kabel 130 mit einer Steuerungsbaugruppe 128 verbunden. Die Steuerung 128 weist üblicherweise einen Servokanal 134 und einen Datenkanal 136 auf, der die Datenflussverarbeitung enthält. Sie steuert die Bewegung der Spule (in 3 nicht gezeigt) und die Funktionen des Bandkopfes wie zum Beispiel die Spurfolge, das Schreiben auf Band, das Lesen von Band usw. Das Kabel 130 kann Schreib-/Leseschaltungen enthalten, um Daten, die auf dem Band 122 aufgezeichnet werden sollen, an den Kopf 126 zu übertragen und um Daten, die von dem Kopf 126 von dem Band 122 gelesen werden, zu empfangen. Ein Zugriffsarm 132 bewegt den Kopf 126 zu einer Gruppe von Spuren auf dem Band 122, um eine Schreib- oder eine Leseoperation durchzuführen.
  • In einer Ausführungsform kann das Bandlaufwerk 100 einen Datenpufferspeicher 138 aufweisen, auf den das Bandlaufwerk 100 und die Steuerung 128 zugreifen können. Dieser Datenpufferspeicher 138 kann als ein Ringpufferspeicher aufgebaut und in einen oder mehrere Teile aufgeteilt sein, wobei ein Teil ein reservierter Datenpufferspeicher 140 ist, der ebenfalls als ein Ringpufferspeicher aufgebaut sein kann und zur Speicherung von Teildatensätzen während Leseoperationen von dem Band 122 verwendet werden soll.
  • Auch kann eine Schnittstelle zum Datenaustausch zwischen dem Bandlaufwerk 100 und einem Host (integriert oder extern) bereitgestellt werden, um die Daten zu senden und zu empfangen und um den Betrieb des Bandlaufwerks 100 zu steuern und den Status des Bandlaufwerks 100 an den Host zu übermitteln, was der Fachmann verstehen dürfte.
  • Gemäß einer Ausführungsform wird eine Decodierstrategie für Produktcodes, die sowohl auf einer Fehler- als auch einer Löschdecodierung beruht, verwendet, um eine bessere Fehlerrate als herkömmliche Methoden zu erzielen, wenn man sowohl auf kurze als auch auf lange Fehlerereignisse trifft, wie sie bei der tatsächlichen Banddecodierung gewöhnlich vorkommen. Zu innovativen Aspekten dieser Decodierstrategie gehören: bedingte Verzweigungen zur Durchführung einer Fehler- oder Löschdecodierung, ein auf einem Parameter (der hier als E2 bezeichnet wird) beruhender Stoppmechanismus, der eingeführt wird, um zu gewährleisten, dass ein iterativer Decodieralgorithmus zur Decodierung von Produktcodes nach einer festen Anzahl von Iterationen anhält und ein anfängliches Setzen von Löschmarkierungen für eine C2-Decodierung vor der Decodierung des Produktcodes beginnt.
  • Eine herkömmliche Vorgehensweise, um den Decodieralgorithmus anzuhalten, besteht darin, eine vorher festgelegte oder feste Anzahl von Iterationen stattfinden zu lassen und die Decodierung dann anzuhalten. Diese Vorgehensweise kann jedoch gemeinsam mit der Verwendung des Parameters E2 angewandt werden und dadurch eine noch bessere Leistung erzielen sowie die Decodierlatenzzeit begrenzen.
  • Gemäß verschiedenen Ausführungsformen können hier beschriebene Methoden in einem nicht iterativen Decodiermodus (eine einzige Iteration), bei dem auf die C1-Decodierung eine C2-Decodierung folgt, oder in einem iterativen Decodiermodus, bei dem mehrere Iterationen einer C1-/C2-Decodierung durchgeführt werden, verwendet werden. Diese Methoden können auch während des Betriebs oder während eines Fehlerbehebungsverfahrens (error recovery procedure (ERP)) eingesetzt werden. Viele Vorteile lassen sich durch Verwendung der hier beschriebenen Methoden erzielen, darunter eine verbesserte Fehlerrate bei Vorhandensein von kurzen und langen Fehlerereignissen, die Möglichkeit, ein geprüftes, herkömmliches C2-Löschdecodierschema als einen anfänglichen Decodierschritt zu verwenden, und die Möglichkeit, eine iterative sowie eine nicht iterative Decodierung durchzuführen.
  • Zu Beispielzwecken wurden die folgenden Parameter beim Testen der Decodierung verwendet: Für den C1-Code wurde ein Reed-Solomon-(RS-)Code mit den folgenden Parametern verwendet: RS(N1=240, K1=230, d1=11). Für den C2-Code waren die Parameter RS(N2=96, K2=84, d2=13), wobei N1 und N2 die Blocklänge sind, die gleich der Anzahl von Bytes in jedem Codewort in der Matrix ist, K1 und K2 sind die Nachrichtenlänge, die gleich der Anzahl der Datenbytes in jedem Codewort ist, und d1 und d2 sind der Abstand oder der Mindestabstand, der gleich N-K+1 ist, wobei d-1-Löschoperationen von dem RS-Code korrigiert werden können.
  • Gemäß einer ersten beispielhaften Decodierstrategie (Strategie A) kann eine nicht iterative Decodierung mit Löschzeigern durchgeführt werden. Da die Anzahl der Fehler, die von dem C1-Decodierer korrigiert werden können, t1, auf der Grundlage eines Verhältnisses ermittelt wird, bei dem t1 = (d1-1)/2 = (11-1)/2 = 5, kann eine Anzahl korrigierbarer Fehler für den C1-Decodierer als t1 = 5 ermittelt werden. Für dieses Beispiel nehmen wir an, dass der C1-Decodierer bei der Strategie A bis zu 4 Fehler korrigieren kann (t1 = 5-1, um zur Verringerung von falschen Korrekturen eine Spanne von 1 einzubeziehen), und nicht korrigierbare Zeilen als Löschoperationen für den C2-Decodierer gekennzeichnet werden. Der C2-Decodierer arbeitet dann im Löschmodus, wobei er bis zu d2 - 1 = 12 Löschoperationen ohne einbezogene zusätzliche Spanne korrigiert. Für einen ungeraden Mindestabstand d2 wird die maximale Löschkorrekturfähigkeit zur maximalen Fehlerkorrekturfähigkeit mit d2 - 1 = 2 x t2 ins Verhältnis gesetzt.
  • Bei einer weiteren beispielhaften Decodierstrategie (Strategie B) kann eine iterative Decodierung verwendet werden, wobei der C1- und der C2-Decodierer wie bei der Strategie A arbeiten. Wenn sie erfolgreich ist, endet die Decodierstrategie nach der C1-Decodierung; andernfalls wird der C2-Decodierer darüber informiert, welche Zeilen korrigiert wurden und in welchen Zeilen sich C1-Decodierfehler befinden. Der C2-Decodierer führt daraufhin eine Fehlerdecodierung an der fehlerhaften Teilmatrix sowie einen zweiten Durchlauf einer C1-/C2-Decodierung durch.
  • Um die Parameter für die Fehler- und Löschdecodierung in dem C2-Decodierer für die Strategie B auszuwählen, werden Zeilen mit bekannten langen Defekten wie zum Beispiel Synchronisationssprüngen oder fehlenden Daten aufgrund von fehlenden Kopfzeilen als Löschoperationen für den C2-Decodierer gekennzeichnet.
  • Wenn man nun von einer Funktionsweise der Strategie A und der Strategie B, wie vorstehend beschrieben, ausgeht, ist die C1-Fehlerrate bei langen Fehlerbüscheln, z.B. Phasensprüngen, in einem ungünstigsten Szenario mit sehr langen Fehlerereignissen entlang der C1-Codewörter ein gutes Maß für die Byte-Fehlerrate am Eingang des C2-Decodierers. In diesem Fall ist die Löschdecodierung allein wesentlich besser als die Fehlerdecodierung allein. In einem weiteren Szenario, in dem entlang der C1-Codewörter zufällige Fehler angetroffen werden, ist die C1-Fehlerrate ein sehr pessimistisches Maß für die Byte-Fehlerrate am Eingang des C2-Decodierers und die Fehlerdecodierung allein ist wesentlich besser als die Löschdecodierung allein. Eine Auswertung von erfassten Daten, die von der Strategie A und der Strategie B erzeugt wurden, welche bei der C2-Löschdecodierung fehlschlugen, zeigte, dass die C2-Fehlerdecodierung in der Lage war, die Fehler in diesen Fällen zu korrigieren.
  • In praxisnahen Anwendungen handelt es sich bei Fehlern in erfassten Daten jedoch weder immer um lange Fehlerbüschel noch um zufällige Fehler. Ungeachtet dessen, welche Arten von Fehlern angetroffen werden, kann eine iterative Decodierung mit zwei Durchläufen (eine bestimmte Ausführungsart der Strategie B) eine C1-Fehlerrate handhaben, die ungefähr 100 Mal höher als die C1-Fehlerrate ist, die von der Strategie A gehandhabt werden kann. Wenn die Strategie B außerdem zwei komplett fehlerhafte (gelöschte) Zeilen verwendet, kann der Nur-Fehler-Modus der Strategie B 15 Mal größere C1-Fehlerraten handhaben als die Strategie A. Wenn die Strategie B überdies zwei komplett fehlerhafte (gelöschte) Zeilen im Fehler- /Löschmodus verwendet, können im Vergleich zur Strategie A 50 Mal größere C1-Fehlerraten gehandhabt werden.
  • Dies alles führt zu der Erkenntnis, dass die Fehler- und Löschdecodierung, ungeachtet dessen, ob sie in einer nicht iterativen oder in einer iterativen Strategie stattfindet, eine bessere Fehlerrate als herkömmliche Verfahren bietet.
  • Nun Bezug nehmend auf 4 ist ein Ablaufplan eines Verfahrens 400 für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes gemäß einer Ausführungsform gezeigt. Das Verfahren 400 kann gemäß der vorliegenden Erfindung in verschiedenen Ausführungsformen in einer beliebigen der Umgebungen durchgeführt werden, die unter anderem in den 1 bis 3 gezeigt sind. Natürlich können mehr oder weniger Operationen als diejenigen, die in 4 ausdrücklich beschrieben sind, in das Verfahren 400 aufgenommen werden, wie der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat. Bei einer Vorgehensweise kann das Verfahren 400 verwendet werden, um Daten von einem Banddatenträger zu decodieren, bei dem es sich um ein beliebiges geeignetes Magnetdatenspeicherband handeln kann, das in der Technik bekannt ist.
  • Jeder der Schritte des Verfahrens 400 kann von einer beliebigen geeigneten Komponente der Betriebsumgebung durchgeführt werden. In verschiedenen Ausführungsformen, die nicht als Einschränkung zu verstehen sind, kann das Verfahren 400 beispielsweise teilweise oder vollständig von einem Bandlaufwerk, einem optischen Laufwerk, einem Prozessor, wie zum Beispiel einer Zentraleinheit (CPU), einer anwendungsspezifischen integrierten Schaltung (ASIC), einem kundenprogrammierbaren Universalschaltkreis (FPGA) usw. durchgeführt werden, der beziehungsweise die in einem System, einer Vorrichtung, einem Laufwerk, einer Speichereinheit usw. eingebettet sein oder darin betrieben werden kann und der/die gegebenenfalls über Logik verfügt, die in den Prozessor eingebettet ist und/oder auf die der Prozessor zugreifen kann.
  • Wie in 4 gezeigt ist, kann das Verfahren 400 mit der Operation 402 beginnen, in der erfasste Daten empfangen werden. Die Daten können von jedem beliebigen geeigneten Speichermedium wie zum Beispiel einem Magnetband, einem optischen Laufwerk, einer optischen Übertragungsfaser usw. erfasst werden. Bei den erfassten Daten handelt es sich um Daten, die über einen oder mehrere Datenkanäle empfangen werden und die zuvor mit einem Produktcode (C1/C2) codiert wurden, um sie zu speichern und/oder zu übertragen.
  • In der Operation 404 werden Löschmarkierungen, die Zeilen mit unzuverlässigen und/oder fehlenden Daten anzeigen, für die erfassten Daten erzeugt und einem C2-Decodierer bereitgestellt. Jede Löschmarkierung entspricht einem Teil der erfassten Daten, der aufgrund einer beobachteten, berechneten oder erwarteten Bedingung, die besser mittels Löschdecodierung behoben wird, wie zum Beispiel einer Fehlerbüschel-Bedingung (langer Block mit Fehlern), während einer C2-Löschdecodierung als gelöscht zu behandeln ist (statt nur für eine Fehlerdecodierung übrig gelassen zu werden).
  • Gemäß einer Ausführungsform können Löschmarkierungen auf der Grundlage von beliebigen der folgenden Bedingungen erzeugt werden, die ein Hinweis auf ein langes Fehlerbüschel sind: Eine Kopfzeile für eine Codewort-Verschachtelung (wie beispielsweise eine CWI-4, die vier verschachtelte Codewörter enthält) wird nicht erkannt oder fehlt, ein Phasensprung einer Phasenregelschleife (PLL) wird erkannt, eine Anzahl von erkannten, zusammenhängenden, unzulässigen Modulations-Codewörtern in einer CWI-4 (oder in einem C1-Codewort) an einem Ausgang des Modulationsdecodierers überschreitet eine vorher festgelegte Schwellenwert-Anzahl (wie zum Beispiel zehn 17-Bit-Modulations-Codewörter), eine Anzahl von Bits zwischen einem Forward-Sync-Muster (wie zum Beispiel einem vorher festgelegten 17-Bit-Muster) und einem Re-Sync-Muster (wie zum Beispiel einem vorher festgelegten 33-Bit-Muster) entspricht nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen (z.B. 7776 Bits) und/oder eine Anzahl von Bits zwischen einem Re-Sync-Muster und einem Reverse-Sync-Muster entspricht nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen (z.B. 7776 Bits).
  • Gemäß verschiedenen Ausführungsformen kann ein Phasensprung einer PLL entsprechend einer beliebigen in der Technik bekannten Methode erkannt werden, beispielsweise, indem man das Verfahren aus der US-Patenschrift Nr. 7.003.065 anwendet. Auch kann es sich bei der Schwellenwert-Anzahl um jede beliebige geeignete Anzahl handeln, die von der Korrekturfähigkeit des C1-Codes, dem Verschachtelungsfaktor und der Länge der Modulations-Codewörter abhängt. Zum Beispiel sind bei den betrachteten CWI-4-Kopfzeilen und einem Modulationscode der Länge 17 10 zusammenhängende, unzulässige Modulations-Codewörter ein Hinweis auf ein langes Fehlerereignis, das von dem C1-Code nicht korrigiert werden kann. Darüber hinaus kann jede beliebige Methode, die in der Technik bekannt ist, verwendet werden, um zu versuchen, eine CWI-4-Kopfzeile zu erkennen. Die 7776 Bits werden auf der Grundlage der Berechnung der Anzahl von Bits zwischen zwei Synchronisationsmustern berechnet, was 12 Byte für die Kopfzeile plus 4 x 240 Byte für die CWI-4, das heißt 7776 Bits, ausmacht. Für andere Layouts, die Kopfzeilen und/oder Codewort-Verschachtelungen mit einer anderen Größe aufweisen, können diese 7776 Bits angepasst werden, um das andere Datenformat widerzuspiegeln.
  • In der Operation 406 wird ein Stopp-Parameter (E2) so gesetzt, dass er einer Länge von C1-Codewörtern (N1) in der CWI-4 entspricht, z.B. E2 = N1. Der Stopp-Parameter kann dann verwendet werden, um zu bestimmen, wann das Verfahren 400 angehalten werden soll (entweder weil die Decodierung erfolgreich oder nicht erfolgreich ist).
  • In der Operation 408 wird die C1-Fehlerdecodierung an den erfassten Daten durchgeführt. Gemäß einer Ausführungsform beinhaltet die C1-Fehlerdecodierung eine Fehler- und Löschdecodierung, bei der die Zeilen mit den zurückgelesenen C1-Codewörtern unverändert belassen werden (nicht gelöscht oder in anderer Weise geändert werden, obwohl von einer in 404 oder in 420 erzeugten Löschmarkierung angezeigt wird, dass die Entscheidung falsch ist). Natürlich gibt es in einer ersten Iteration (oder bei einem nicht iterativen Prozess) keine C2-Fehler, und folglich ist dies irrelevant.
  • In der Operation 410 wird festgestellt, ob eine Anzahl von C1-Fehlern (F1), die nach der Durchführung der C1-Decodierung (Fehler- oder Löschdecodierung) an den erfassten Daten erkannt werden, den Wert null hat, z.B. F1 = 0. Wenn ja, fährt das Verfahren 400 mit der Operation 414 fort; andernfalls fährt das Verfahren 400 mit der Operation 412 fort.
  • In der Operation 412 wird festgestellt, ob die Anzahl von C1-Fehlern (F1) größer als das Doppelte einer C2-Fehlerkorrekturfähigkeit (t2) abzüglich einer C2-Decodierspanne (m2) ist, z.B. F1 > 2t2 - m2. Wenn ja, fährt das Verfahren 400 mit der Operation 420 fort; andernfalls fährt das Verfahren 400 mit der Operation 418 fort. Die C2-Decodierspanne kann in Abhängigkeit davon, ob die Spanne für eine Fehler- oder Löschdecodierung verwendet wird, gleich oder unterschiedlich sein.
  • Die C2-Fehlerkorrekturfähigkeit (t2) stellt eine Anzahl von C2-Fehlern, die mit Hilfe der Produktcodes in den jeweiligen erfassten Daten korrigiert werden können, dar und kann in Abhängigkeit von den Parametern des gewählten RS-Codes für C2 eine ganze Zahl mit einem Wert größer null sein, wie zum Beispiel 1, 2, 4, 6, 7, 10 usw. Die C2-Decodierspanne (m2) ist ein Wert, der automatisch gesetzt oder von einem Administrator oder einem anderen Benutzer gewählt werden kann und eine Spanne zwischen der C2-Fehlerkorrekturfähigkeit (t2) und einer „sichereren“ Näherung in Bezug darauf, wie viele Fehler der C2-Decodierer zu korrigieren in der Lage ist, angibt. In einer Ausführungsform kann die Spanne nur mit einer C2-Löschdecodierung oder mit einer C2-Fehler- und-Löschdecodierung einhergehen.
  • In der Operation 414 wird festgestellt, ob der Stopp-Parameter (E2) den Wert null hat, z.B., E2 = 0. Wenn ja, fährt das Verfahren 400 mit der Operation 416 fort und hält an, weil die Decodierung erfolgreich war, zum Beispiel gibt es in den decodierten Daten keine erkannten Fehler mehr; andernfalls fährt das Verfahren 400 mit der Operation 420 fort.
  • In der Operation 418 wird an den erfassten Daten eine C2-Löschdecodierung durchgeführt (entweder nachdem eine C1-Decodierung an ihnen durchgeführt worden ist oder aber in der ursprünglichen erfassten Form ohne eine C1-Decodierung der Daten). Gemäß einer Ausführungsform beinhaltet die C2-Löschdecodierung eine Fehler- und-Löschdecodierung, bei der C1-Fehler gelöscht werden. Wenn im Anschluss an eine C1-Decodierung eine C2-Löschdecodierung durchgeführt wird, sind selbst in einer ersten Iteration (oder in einem nicht iterativen Prozess) C1-Fehler vorhanden (es sei denn, es werden keine festgestellt) und werden als gelöschte Daten behandelt.
  • In der Operation 420 wird an den erfassten Daten eine C2-Fehlerdecodierung durchgeführt (entweder nachdem eine C1-Decodierung an ihnen durchgeführt worden ist oder aber in der ursprünglichen erfassten Form ohne eine C1-Decodierung der Daten). Gemäß einer Ausführungsform beinhaltet die C2-Fehlerdecodierung eine Fehler- und Löschdecodierung, bei der C1-Fehler unverändert belassen werden (nicht gelöscht oder in anderer Weise geändert werden, obwohl angezeigt wird, dass die Entscheidung falsch ist). Wenn im Anschluss an eine C1-Decodierung eine C2-Decodierung durchgeführt wird, sind selbst in einer ersten Iteration (oder in einem nicht iterativen Prozess) C1-Fehler vorhanden (es sei denn, es werden keine festgestellt). Der Decodierer erzeugt Löschmarkierungen für diejenigen Spalten, in denen ein C2-Decodierfehler auftritt.
  • In der Operation 422 wird festgestellt, ob sowohl die Anzahl von C1-Fehlern (F1) als auch eine Anzahl von C2-Fehlern (F2) den Wert null haben, z.B. F1 = 0 Λ F2 = 0. Wenn ja, fährt das Verfahren 400 mit der Operation 424 fort und hält an, weil die Decodierung erfolgreich war, zum Beispiel gibt es in den decodierten Daten keine erkannten Fehler mehr; andernfalls fährt das Verfahren 400 mit der Operation 426 fort.
  • In der Operation 426 wird festgestellt, ob die Anzahl von C2-Fehlern (F2) größer oder gleich dem Stopp-Parameter (E2) ist, z.B. F2 ≥ E2. Wenn ja, fährt das Verfahren 400 mit der Operation 428 fort und hält an, weil die Decodierung nicht erfolgreich war und die Fehler nicht behebbar/nicht korrigierbar sind; andernfalls fährt das Verfahren 400 mit der Operation 430 fort, in der der Stopp-Parameter (E2) auf die Anzahl der C2-Fehler (F2) gesetzt wird. Auf diese Weise wird sichergestellt, dass Iterationen nur gegen weniger C2-Fehler konvergieren, nicht divergieren und auch nicht mehr C2-Fehler verursachen und/oder in einer Schleife steckenbleiben, die sich nie selbst auflöst.
  • In der Operation 432 wird festgestellt, ob der Stopp-Parameter (E2) kleiner oder gleich dem Doppelten einer C1-Fehlerkorrekturfähigkeit (t1) abzüglich einer C1-Decodierspanne (m1) ist, z.B. E2 ≤ 2t1 - m1. Die C1-Decodierspanne kann in Abhängigkeit davon, ob die Spanne für eine Fehler- oder Löschdecodierung verwendet wird, gleich oder unterschiedlich sein.
  • Wenn ja, fährt das Verfahren 400 mit der Operation 434 fort, in der eine C1-Löschdecodierung an den erfassten Daten durchgeführt wird, wobei die Löschmarkierungen von der Operation 420 verwendet werden; andernfalls fährt das Verfahren 400 mit der Operation 408 fort, um wieder eine C1-Fehlerdecodierung durchzuführen. In einer Ausführungsform beinhaltet die C1-Löschdecodierung eine Fehler- und-Löschdecodierung, bei der C2-Fehler als gelöschte Daten behandelt werden. Wenn im Anschluss an eine anfängliche C1-Decodierung eine C2-Decodierung durchgeführt wird, sind beim Verfahren 400 selbst in einer ersten Iteration (oder in einem nicht iterativen Prozess) C2-Fehler vorhanden (es sei denn, es werden keine festgestellt) und werden als gelöschte Daten behandelt.
  • Die C1-Fehlerkorrekturfähigkeit (t1) stellt eine Anzahl von C1-Fehlern, die mit Hilfe der Produktcodes in den jeweiligen erfassten Daten korrigiert werden können, dar und kann in Abhängigkeit von den Parametern des gewählten RS-Codes für C1 eine ganze Zahl mit einem Wert größer null sein, wie zum Beispiel 1, 2, 5, 6, 7, 10 usw. Die C1-Decodierspanne (m1) ist ein Wert, der automatisch gesetzt oder von einem Administrator oder einem anderen Benutzer gewählt werden kann und eine Spanne zwischen der C1-Fehlerkorrekturfähigkeit (t1) und einer „sichereren“ Näherung in Bezug darauf, wie viele Fehler der C1-Decodierer zu korrigieren in der Lage ist, angibt. In einer Ausführungsform kann die Spanne nur mit einer C1-Löschdecodierung oder mit einer C1-Fehler- und-Löschdecodierung einhergehen.
  • Das Verfahren 400 fährt fort, bis es an einem der Stopppunkte in den Operationen 416, 424 und/oder 428 ankommt. Der Stopp-Parameter E2 soll sicherstellen, dass das Verfahren 400 nicht in einer Endlosschleife gefangen sein wird und innerhalb einer endlichen Anzahl von Iterationen definitiv an einem der Stopppunkte in den Operationen 416, 424 und/oder 428 ankommt.
  • Gemäß einer Ausführungsform kann das Verfahren 400 von einem System durchgeführt werden. Das System kann beispielsweise für eine Kombinations-Lösch- und Fehlerdecodierung für Produktcodes konfiguriert sein und das System kann einen Prozessor (wie zum Beispiel eine CPU, einen ASIC, einen FPGA, eine integrierte Schaltung (IC) usw.) sowie Logik aufweisen, die in den Prozessor integriert ist und/oder von dem Prozessor ausgeführt werden kann. Bei der Logik kann es sich um Hardware, Software oder eine Kombination daraus handeln und sie kann so konfiguriert sein, dass sie eine oder mehrere Operationen des Verfahrens 400 durchführt, und sie kann so konfiguriert sein, dass sie bei verschiedenen Vorgehensweisen zusätzliche Funktionen ausführt, die hier nicht im Einzelnen beschrieben sind.
  • In einer weiteren Ausführungsform kann ein Computerprogrammprodukt für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes ausgestaltet werden, wobei das Computerprogrammprodukt ein von einem Computer lesbares Speichermedium mit damit realisiertem Programmcode aufweist. In einer Ausführungsform kann der Programmcode von einer Einheit wie zum Beispiel einem Bandlaufwerk, einem Prozessor usw. gelesen und/oder ausgeführt werden, um eine oder mehrere Operationen des Verfahrens 400 durchzuführen, und er kann so konfiguriert sein, dass er bei verschiedenen Vorgehensweisen zusätzliche Funktionen ausführt, die hier nicht im Einzelnen beschrieben sind.
  • Nun Bezug nehmend auf 5 ist ein Ablaufplan eines Verfahrens 500 für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes gemäß einer Ausführungsform gezeigt. Das Verfahren 500 kann gemäß der vorliegenden Erfindung in verschiedenen Ausführungsformen in einer beliebigen der Umgebungen durchgeführt werden, die unter anderem in den 1 bis 3 gezeigt sind. Natürlich können mehr oder weniger Operationen als diejenigen, die in 5 ausdrücklich beschrieben sind, in das Verfahren 500 aufgenommen werden, wie der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat. Bei einer Vorgehensweise kann das Verfahren 500 verwendet werden, um Daten von einem Banddatenträger zu decodieren, bei dem es sich um ein beliebiges geeignetes Magnetdatenspeicherband handeln kann, das in der Technik bekannt ist.
  • Jeder der Schritte des Verfahrens 500 kann von einer beliebigen geeigneten Komponente der Betriebsumgebung durchgeführt werden. In verschiedenen Ausführungsformen, die nicht als Einschränkung zu verstehen sind, kann das Verfahren 500 beispielsweise teilweise oder vollständig von einem Bandlaufwerk, einem optischen Laufwerk, einem Prozessor, wie zum Beispiel einer CPU, einem ASIC, einem FPGA usw. durchgeführt werden, der beziehungsweise die in einem System, einer Vorrichtung, einem Laufwerk, einer Speichereinheit usw. eingebettet sein oder darin betrieben werden kann und der/die über Logik verfügt, die in den Prozessor eingebettet ist und/oder auf die der Prozessor zugreifen kann.
  • Wie in 5 gezeigt ist, kann das Verfahren 500 mit der Operation 502 beginnen, in der erfasste Daten empfangen werden. Die Daten können von jedem beliebigen Speichermedium wie zum Beispiel einem Magnetband, einem optischen Laufwerk, einer optischen Übertragungsfaser usw. erfasst werden. Bei den erfassten Daten handelt es sich um Daten, die über einen oder mehrere Datenkanäle empfangen werden, die zuvor mit einem Produktcode (C1/C2) codiert wurden, um sie zu speichern und/oder zu übertragen.
  • In der Operation 504 werden Löschmarkierungen, die Zeilen mit unzuverlässigen und/oder fehlenden Daten anzeigen, für die erfassten Daten erzeugt und einem C2-Decodierer bereitgestellt. Jede Löschmarkierung entspricht einem Teil der erfassten Daten, der aufgrund einer beobachteten oder erwarteten Bedingung, die besser mittels Löschdecodierung behoben wird, wie zum Beispiel einer Fehlerbüschel-Bedingung (langer Block mit Fehlern), während einer Löschdecodierung als gelöscht zu behandeln ist (statt nur für eine Fehlerdecodierung übrig gelassen zu werden).
  • Gemäß einer Ausführungsform können Löschmarkierungen auf der Grundlage von beliebigen der folgenden Bedingungen erzeugt werden, die ein Hinweis auf ein langes Fehlerbüschel sind: Eine Kopfzeile für eine Codewort-Verschachtelung (wie beispielsweise eine CWI-4, die vier verschachtelte Codewörter enthält) wird nicht erkannt oder fehlt, ein Phasensprung einer Phasenregelschleife (PLL) wird erkannt, eine Anzahl von erkannten, zusammenhängenden, unzulässigen Modulations-Codewörtern in einer CWI-4 (oder C1-Codewort) an einem Ausgang des Modulationsdecodierers überschreitet eine vorher festgelegte Schwellenwert-Anzahl, eine Anzahl von Bits zwischen einem Forward-Sync-Muster und einem Re-Sync-Muster entspricht nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen (z.B. 7776 Bits) und/oder eine Anzahl von Bits zwischen einem Re-Sync-Muster und einem Reverse-Sync-Muster entspricht nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen (z.B. 7776 Bits).
  • Gemäß verschiedenen Ausführungsformen lässt sich ein Phasensprung einer PLL entsprechend einer beliebigen Methode erkennen, die in der Technik bekannt ist. Darüber hinaus kann jede beliebige Methode, die in der Technik bekannt ist, verwendet werden, um zu versuchen, eine CWI-4-Kopfzeile zu erkennen. Die 7776 Bit werden berechnet, indem man die Anzahl von Bits zwischen zwei Synchronisationsmustern zählt, was 12 Byte für die Kopfzeile plus 4 x 240 Byte für die CWI-4, das heißt 7776 Bits, ausmacht. Für andere Layouts, die Kopfzeilen und/oder Codewort-Verschachtelungen mit einer anderen Größe aufweisen, können diese 7776 Bits angepasst werden, um das andere Datenformat widerzuspiegeln.
  • In der Operation 506 wird ein Stopp-Parameter (E2) so gesetzt, dass er einer Länge von C1-Codewörtern (N1) in der CWI-4 entspricht, z.B. E2 = N1. Der Stopp-Parameter kann dann verwendet werden, um zu bestimmen, wann das Verfahren 500 angehalten werden soll (entweder weil die Decodierung erfolgreich oder nicht erfolgreich ist).
  • In der Operation 508 wird die C1-Fehlerdecodierung an den erfassten Daten durchgeführt. Gemäß einer Ausführungsform beinhaltet die C1-Fehlerdecodierung eine Fehler- und Löschdecodierung, bei der die Zeilen mit den zurückgelesenen C1-Codewörtern unverändert belassen werden (nicht gelöscht oder in anderer Weise geändert werden, obwohl von einer Löschmarkierung angezeigt wird, dass die Entscheidung falsch ist).
  • In der Operation 510 wird festgestellt, ob eine Anzahl von C1-Fehlern (F1), die nach der Durchführung einer C1-Decodierung (Fehler- oder Löschdecodierung) an den erfassten Daten erkannt werden, den Wert null hat, z.B. F1 = 0. Wenn ja, fährt das Verfahren 500 mit der Operation 518 fort; andernfalls fährt das Verfahren 500 mit der Operation 512 fort.
  • In der Operation 512 wird festgestellt, ob die Anzahl von C1-Fehlern (F1) größer als das Doppelte einer C2-Fehlerkorrekturfähigkeit (t2) abzüglich einer C2-Decodierspanne (m2) ist, z.B. F1 > 2t2 - m2. Wenn ja, fährt das Verfahren 500 mit der Operation 516 fort; andernfalls fährt das Verfahren 500 mit der Operation 514 fort.
  • Die C2-Fehlerkorrekturfähigkeit (t2) stellt eine Anzahl von C2-Fehlern, die mit Hilfe der Produktcodes in den jeweiligen erfassten Daten korrigiert werden können, dar und kann in Abhängigkeit von den Parametern des gewählten RS-Codes für C2 eine ganze Zahl mit einem Wert größer null sein, wie zum Beispiel 1, 2, 5, 6, 7, 10 usw. Die C2-Decodierspanne (m2) ist ein Wert, der automatisch gesetzt oder von einem Administrator oder einem anderen Benutzer gewählt werden kann und eine Spanne zwischen der C2-Fehlerkorrekturfähigkeit (t2) und einer „sichereren“ Näherung in Bezug darauf, wie viele Fehler der C2-Decodierer zu korrigieren in der Lage ist, angibt. In einer Ausführungsform kann die Spanne nur mit einer C2-Löschdecodierung oder mit einer C2-Fehler- und-Löschdecodierung einhergehen.
  • In der Operation 514 wird eine C2-Löschdecodierung an den erfassten Daten durchgeführt (entweder nachdem eine C1-Decodierung an ihnen durchgeführt worden ist oder aber in der ursprünglichen erfassten Form ohne eine C1-Decodierung der Daten). Gemäß einer Ausführungsform beinhaltet eine C2-Löschdecodierung eine Fehler- und-Löschdecodierung, bei der C1-Fehler gelöscht werden. Wenn im Anschluss an eine C1-Decodierung eine C2-Löschdecodierung durchgeführt wird, sind selbst in einer ersten Iteration (oder in einem nicht iterativen Prozess) C1-Fehler vorhanden (es sei denn, es werden keine festgestellt) und werden als gelöschte Daten behandelt.
  • In der Operation 516 wird eine C2-Fehlerdecodierung an den erfassten Daten durchgeführt (entweder nachdem eine C1-Decodierung an ihnen durchgeführt worden ist oder aber in der ursprünglichen erfassten Form ohne eine C1-Decodierung der Daten). Gemäß einer Ausführungsform beinhaltet eine C2-Fehlerdecodierung eine Fehler- und Löschdecodierung, bei der C1-Fehler unverändert belassen werden (nicht gelöscht oder in anderer Weise geändert werden, obwohl angezeigt wird, dass die Entscheidung falsch ist). Wenn im Anschluss an eine C1-Decodierung eine C2-Decodierung durchgeführt wird, sind selbst in einer ersten Iteration (oder in einem nicht iterativen Prozess) C1-Fehler vorhanden (es sei denn, es werden keine festgestellt). Der Decodierer erzeugt Löschmarkierungen für diejenigen Spalten, in denen ein C2-Decodierfehler auftritt.
  • In der Operation 520 wird festgestellt, ob eine Anzahl von C2-Fehlern (F2) den Wert null hat, z.B. F2 = 0. Wenn ja, fährt das Verfahren 500 mit der Operation 522 fort und hält an, weil die Decodierung erfolgreich war, zum Beispiel gibt es in den decodierten Daten keine erkannten Fehler mehr; andernfalls fährt das Verfahren 500 mit der Operation 524 fort.
  • In der Operation 524 wird festgestellt, ob die Anzahl von C2-Fehlern (F2) größer oder gleich dem Stopp-Parameter (E2) ist, z.B. F2 ≥ E2. Wenn ja, fährt das Verfahren 500 mit der Operation 526 fort und hält an, weil die Decodierung nicht erfolgreich war und die Fehler nicht behebbar/nicht korrigierbar sind; andernfalls fährt das Verfahren 500 mit der Operation 528 fort, in der der Stopp-Parameter (E2) auf die Anzahl der C2-Fehler (F2) gesetzt wird. Auf diese Weise wird sichergestellt, dass Iterationen nur gegen weniger C2-Fehler konvergieren, nicht divergieren und auch nicht mehr C2-Fehler verursachen und/oder in einer Schleife steckenbleiben, die sich nie selbst auflöst.
  • In der Operation 530 wird festgestellt, ob der Stopp-Parameter (E2) kleiner oder gleich dem Doppelten einer C1-Fehlerkorrekturfähigkeit (t1) abzüglich einer C1-Decodierspanne (m1) ist, z.B. E2 ≤ 2t1 - m1. Wenn ja, fährt das Verfahren 500 mit der Operation 532 fort, in der eine C1-Löschdecodierung an den erfassten Daten durchgeführt wird, wobei die Löschmarkierungen von der Operation 516 verwendet werden; andernfalls fährt das Verfahren 500 mit der Operation 508 fort, um wieder eine C1-Fehlerdecodierung durchzuführen. In einer Ausführungsform beinhaltet die C1-Löschdecodierung eine Fehler- und-Löschdecodierung, bei der C2-Fehler gelöscht werden. Wenn im Anschluss an eine anfängliche C1-Decodierung eine C2-Decodierung durchgeführt wird, sind beim Verfahren 500 selbst in einer ersten Iteration (oder in einem nicht iterativen Prozess) C2-Fehler vorhanden (es sei denn, es werden keine festgestellt) und werden als gelöschte Daten behandelt.
  • Die C1-Fehlerkorrekturfähigkeit (t1) stellt eine Anzahl von C1-Fehlern, die mit Hilfe der Produktcodes in den jeweiligen erfassten Daten korrigiert werden können, dar und kann in Abhängigkeit von den Parametern des gewählten RS-Codes für C1 eine ganze Zahl mit einem Wert größer null sein, wie zum Beispiel 1, 2, 5, 6, 7, 10 usw. Die C1-Decodierspanne (m1) ist ein Wert, der automatisch gesetzt oder von einem Administrator oder einem anderen Benutzer gewählt werden kann und eine Spanne zwischen der C1-Fehlerkorrekturfähigkeit (t1) und einer „sichereren“ Näherung in Bezug darauf, wie viele Fehler der C1-Decodierer zu korrigieren in der Lage ist, angibt. In einer Ausführungsform kann die Spanne nur mit einer C1-Löschdecodierung oder mit einer C1-Fehler- und-Löschdecodierung einhergehen.
  • Das Verfahren 500 fährt fort, bis es an einem der Stopppunkte in den Operationen 518, 522 und/oder 526 ankommt. Der Stopp-Parameter E2 soll sicherstellen, dass das Verfahren 500 nicht in einer Endlosschleife gefangen sein wird und innerhalb einer endlichen Anzahl von Iterationen definitiv an einem der Stopppunkte in den Operationen 518, 522 und/oder 526 ankommt.
  • Wenn das Decodierverfahren 500 gemäß einer Ausführungsform an einem der Stopppunkte in den Operationen 518, 522 und/oder 526 anhält, kann festgestellt werden, ob alle Zeilen und Spalten der decodierten Daten (des Produkt-Codeworts) zulässige C1-Codewörter (Zeilen) und zulässige C2-Codewörter (Spalten) sind.
  • Wenn ein Produkt-Codewort zulässig (erlaubt) ist, ist die Decodierung erfolgreich; andernfalls ist die Decodierung nicht erfolgreich (Decodierfehler).
  • Gemäß einer Ausführungsform kann das Verfahren 500 von einem System durchgeführt werden. Das System kann beispielsweise für eine Kombinations-Lösch- und Fehlerdecodierung für Produktcodes konfiguriert sein und das System kann einen Prozessor (wie zum Beispiel eine CPU, einen ASIC, einen FPGA, eine integrierte Schaltung (IC) usw.) sowie Logik aufweisen, die in den Prozessor integriert ist und/oder von dem Prozessor ausgeführt werden kann. Bei der Logik kann es sich um Hardware, Software oder eine Kombination daraus handeln und sie kann so konfiguriert sein, dass sie eine oder mehrere Operationen des Verfahrens 500 durchführt, und sie kann so konfiguriert sein, dass sie bei verschiedenen Vorgehensweisen zusätzliche Funktionen ausführt, die hier nicht im Einzelnen beschrieben sind.
  • In einer weiteren Ausführungsform kann ein Computerprogrammprodukt für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes ausgestaltet werden, wobei das Computerprogrammprodukt ein von einem Computer lesbares Speichermedium mit damit realisiertem Programmcode aufweist. In einer Ausführungsform kann der Programmcode von einer Einheit wie zum Beispiel einem Bandlaufwerk, einem Prozessor usw. gelesen und/oder ausgeführt werden, um eine oder mehrere Operationen des Verfahrens 500 durchzuführen, und er kann so konfiguriert sein, dass er bei verschiedenen Vorgehensweisen zusätzliche Funktionen ausführt, die hier nicht im Einzelnen beschrieben sind.
  • Die iterative Decodierung von Produktcodes ist in der Technik bekannt, sie wurde aber nicht mit Hilfe eines bestimmten Lösch- und Fehlerdecodierablaufs durchgeführt. Beispielsweise beschreibt die US-Patentschrift Nr. 8,046,660 einen Decodierer für Produktcodes für einen nicht flüchtigen Hauptspeicher. Der Decodierer decodiert erst- und zweitdimensionale Codewörter. Wenn ein erster Decodierer einen Fehler in einem der erstdimensionalen Codewörter erkennt, wird dieses erstdimensionale Codewort als eine Löschoperation gekennzeichnet. Auf der Grundlage der Löschoperation erkennt ein zweiter Decodierer einen weiteren Fehler in einem der zweitdimensionalen Codewörter. Der erste Decodierer und der zweite Decodierer decodieren iterativ die Codewörter, um weitere Fehler in den erst- und zweitdimensionalen Codewörtern festzustellen.
  • Die US-Patentschrift Nr. 8,046,660 offenbart jedoch keinen bestimmten Decodierablauf, sondern ist vielmehr auf eine standardmäßige iterative Fehler- und Löschdecodierung von Produktcodes beschränkt. Insbesondere lehrt sie keine Decodierabläufe unter Verwendung einer Fehler- und-Löschdecodierung, bei denen sichergestellt ist, dass sie innerhalb einer endlichen Anzahl von Iterationen abgeschlossen sind. Überdies berücksichtigt die US-Patentschrift Nr. 8,046,660 kein anfängliches Setzen von Löschmarkierungen für den C2-Decodierer, das auf kanalseitigen Informationen beruht.
  • Nun Bezug nehmend auf 6 ist ein Ablaufplan eines Verfahrens 600 für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes gemäß einer Ausführungsform gezeigt. Das Verfahren 600 kann gemäß der vorliegenden Erfindung in verschiedenen Ausführungsformen in einer beliebigen der Umgebungen durchgeführt werden, die unter anderem in den 1 bis 3 gezeigt sind. Natürlich können mehr oder weniger Operationen als diejenigen, die in 6 ausdrücklich beschrieben sind, in das Verfahren 600 aufgenommen werden, wie der Fachmann verstehen dürfte, nachdem er die vorliegenden Beschreibungen gelesen hat. Bei einer Vorgehensweise kann das Verfahren 600 verwendet werden, um Daten von einem Banddatenträger zu decodieren, bei dem es sich um ein beliebiges geeignetes Magnetdatenspeicherband handeln kann, das in der Technik bekannt ist.
  • Jeder der Schritte des Verfahrens 600 kann von einer beliebigen geeigneten Komponente der Betriebsumgebung durchgeführt werden. In verschiedenen Ausführungsformen, die nicht als Einschränkung zu verstehen sind, kann das Verfahren 600 beispielsweise teilweise oder vollständig von einem Bandlaufwerk, einem optischen Laufwerk, einem Prozessor, wie zum Beispiel einer CPU, einem ASIC, einem FPGA usw. durchgeführt werden, der beziehungsweise die in einem System, einer Vorrichtung, einem Laufwerk, einer Speichereinheit usw. eingebettet sein oder darin betrieben werden kann und der/die über Logik verfügt, die in den Prozessor eingebettet ist und/oder auf die der Prozessor zugreifen kann.
  • Wie in 6 gezeigt ist, kann das Verfahren 600 mit der Operation 602 beginnen, in der erfasste Daten empfangen werden. In der Operation 604 werden dann Löschmarkierungen für die erfassten Daten erzeugt und einem C2-Decodierer bereitgestellt. Als Nächstes wird ein Stopp-Parameter in der Operation 606 so gesetzt, dass er einer Länge von C1-Codewörtern in einer Codewort-Verschachtelung entspricht, die zur Codierung der erfassten Daten verwendet werden. In der Operation 608 werden in einem iterativen Prozess schließlich eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchgeführt, bis die Decodierung erfolgreich oder nicht erfolgreich ist.
  • Gemäß einer Ausführungsform kann jede Löschmarkierung einem Teil der erfassten Daten entsprechen, der aufgrund einer beobachteten oder berechneten Bedingung während einer Löschdecodierung als gelöscht zu behandeln ist. Diese beobachteten oder berechneten Bedingungen können jedwede Bedingungen einschließen, die gegebenenfalls anzeigen können, dass in den erfassten Daten ein Block mit Fehlern aufgetreten ist. Gemäß verschiedenen Ausführungsformen kann die beobachtete oder berechnete Bedingung mindestens eines von Folgendem einschließen: eine Kopfzeile für eine Codewort-Verschachtelung, die nicht erkannt wird, das Erkennen eines Phasensprungs einer PLL, eine Anzahl von erkannten, zusammenhängenden, unzulässigen Modulations-Codewörtern in einer Codewort-Verschachtelung oder in einem C1-Codewort an einem Ausgang eines Modulationsdecodierers, die eine vorher festgelegte Schwellenwert-Anzahl überschreitet, eine Anzahl von Bits zwischen einem Forward-Sync-Muster und einem Re-Sync-Muster, die nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen entspricht, und/oder eine Anzahl von Bits zwischen einem Re-Sync-Muster und einem Reverse-Sync-Muster, die nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen entspricht.
  • Gemäß einer weiteren Ausführungsform kann der iterative Prozess aufweisen: Durchführen einer C1-Fehlerdecodierung an den erfassten Daten in einer ersten Iteration und wenn der Stopp-Parameter kleiner oder gleich dem Doppelten einer C1-Fehlerkorrekturfähigkeit abzüglich einer C1-Decodierspanne ist, andernfalls Durchführen einer C1-Löschdecodierung an den erfassten Daten; Feststellen, dass die Decodierung erfolgreich ist, wenn eine Anzahl von C1-Fehlern den Wert null hat und der Stopp-Parameter nach der Durchführung der C1-Decodierung den Wert null hat; Durchführen einer C2-Fehlerdecodierung an den erfassten Daten nach der Durchführung einer C1-Decodierung, wenn die Anzahl der C1-Fehler größer dem Doppelten einer C2-Fehlerkorrekturfähigkeit abzüglich einer C2-Decodierspanne ist; Durchführen einer C2-Löschdecodierung an den erfassten Daten nach der Durchführung einer C1-Decodierung, wenn der Stopp-Parameter ungleich null ist oder wenn die Anzahl der C1-Fehler kleiner oder gleich dem Doppelten der C2-Fehlerkorrekturfähigkeit abzüglich der C2-Decodierspanne und größer null ist; Feststellen, dass die Decodierung nach der Durchführung einer C2-Decodierung erfolgreich ist, wenn sowohl eine Anzahl von C2-Fehlern als auch eine Anzahl von C1-Fehlern den Wert null haben; und nach der Durchführung einer C2-Decodierung Feststellen, dass die Decodierung nicht erfolgreich ist, wenn eine Anzahl von C2-Fehlern größer oder gleich dem Stopp-Parameter ist, andernfalls Setzen des Stopp-Parameters auf die Anzahl der C2-Fehler.
  • In einer weiteren Ausführungsform kann der iterative Prozess aufweisen: Durchführen einer C1-Fehlerdecodierung an den erfassten Daten in einer ersten Iteration und wenn der Stopp-Parameter kleiner oder gleich dem Doppelten einer C1-Fehlerkorrekturfähigkeit abzüglich einer C1-Decodierspanne ist, andernfalls Durchführen einer C1-Löschdecodierung an den erfassten Daten; Anhalten der Decodierung, wenn eine Anzahl von C1-Fehlern den Wert null hat und Durchführen einer Codewort-Prüfung; Durchführen einer C2-Fehlerdecodierung an den erfassten Daten nach der Durchführung einer C1-Decodierung, wenn die Anzahl der C1-Fehler größer als das Doppelte einer C2-Fehlerkorrekturfähigkeit abzüglich einer C2-Decodierspanne ist, andernfalls Durchführen einer C2-Löschdecodierung an den erfassten Daten nach der Durchführung einer C1-Decodierung; nach der Durchführung einer C2-Decodierung Anhalten der Decodierung, wenn eine Anzahl von C2-Fehlern den Wert null hat; und nach der Durchführung einer C2-Decodierung Feststellen, dass die Decodierung nicht erfolgreich ist, wenn eine Anzahl von C2-Fehlern größer oder gleich dem Stopp-Parameter ist, andernfalls Setzen des Stopp-Parameters auf die Anzahl der C2-Fehler. Die Codewort-Prüfung kann die Feststellung, dass jedes C1-Codewort zulässig und jedes C2-Codewort zulässig ist, aufweisen, so dass die Decodierung erfolgreich ist, wenn jedes C1-Codewort zulässig und jedes C2-Codewort zulässig ist, andernfalls ist die Decodierung nicht erfolgreich.
  • In einer weiteren Ausführungsform kann die C1-Fehlerkorrekturfähigkeit eine Anzahl von C1-Fehlern darstellen, die mit Hilfe von Produktcodes in den erfassten Daten korrigiert werden können, und die C2-Fehlerkorrekturfähigkeit kann eine Anzahl von C2-Fehlern darstellen, die mit Hilfe von Produktcodes in den erfassten Daten korrigiert werden können.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder in den Blockschaubildern ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der einen oder mehrere ausführbare Anweisungen zur Ausführung der angegebenen logischen Funktion(en) aufweist. Es sei auch angemerkt, dass die in dem Block angegebenen Funktionen in manchen alternativen Ausführungsarten mitunter in einer anderen als in der in den Figuren angegebenen Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können zuweilen in der umgekehrten Reihenfolge ausgeführt werden. Es wäre noch anzumerken, dass jeder Block der Blockschaubilder und/oder der Darstellung in den Ablaufplänen sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in den Ablaufplänen von Systemen, die auf Spezial-Hardware beruhen und die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Spezial-Hardware und Computer-Anweisungen ausgeführt werden können.

Claims (20)

  1. System für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes, wobei das System einen Prozessor und Logik aufweist, die in den Prozessor integriert und/oder von dem Prozessor ausführbar ist, wobei die Logik so konfiguriert ist, dass sie: erfasste Daten empfängt (402, 602); Löschmarkierungen für die erfassten Daten erzeugt (404, 604) und die Löschmarkierungen einem C2-Decodierer bereitstellt; einen Stopp-Parameter so setzt (406, 606), dass er einer Länge von C1-Codewörtern in einer Codewort-Verschachtelung entspricht, die zur Codierung der erfassten Daten verwendet werden; und in einem iterativen Prozess (408, 608) eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchführt, bis eines von zumindest zwei Fehlerkriterien, nämlich das erste Fehlerkriterium „Decodierung erfolgreich“ (416, 424) oder das zweite Fehlerkriterium „Decodierung nicht erfolgreich“ (428) erfüllt ist.
  2. System nach Anspruch 1, wobei jede Löschmarkierung einem Teil der erfassten Daten entspricht, der aufgrund einer beobachteten oder berechneten Bedingung während einer Löschdecodierung als gelöscht zu behandeln ist.
  3. System nach Anspruch 2, wobei die beobachtete oder berechnete Bedingung mindestens eines von Folgendem einschließt: eine Kopfzeile für eine Codewort-Verschachtelung, die nicht erkannt wird, das Erkennen eines Phasensprungs einer Phasenregelschleife (PLL), eine Anzahl von erkannten, zusammenhängenden, unzulässigen Modulations-Codewörtern in einer Codewort-Verschachtelung oder in einem C1-Codewort an einem Ausgang eines Modulationsdecodierers, die eine vorher festgelegte Schwellenwert-Anzahl überschreitet, eine Anzahl von Bits zwischen einem Forward-Sync-Muster und einem Re-Sync-Muster, die nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen entspricht, und/oder eine Anzahl von Bits zwischen einem Re-Sync-Muster und einem Reverse-Sync-Muster, die nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen entspricht.
  4. System nach Anspruch 1, wobei die Logik, die so konfiguriert ist, dass sie in dem iterativen Prozess eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchführt, bis die Decodierung erfolgreich oder nicht erfolgreich ist, Logik aufweist, die so konfiguriert ist, dass sie: eine C1-Fehlerdecodierung an den erfassten Daten in einer ersten Iteration und wenn der Stopp-Parameter kleiner oder gleich dem Doppelten einer C1-Fehlerkorrekturfähigkeit abzüglich einer C1-Decodierspanne ist, durchführt, und andernfalls eine C1-Löschdecodierung an den erfassten Daten durchführt; nach der Durchführung einer C1-Decodierung feststellt, dass die Decodierung erfolgreich ist, wenn eine Anzahl von C1-Fehlern den Wert null hat und der Stopp-Parameter gleich null ist; nach der Durchführung einer C1-Decodierung eine C2-Fehlerdecodierung an den erfassten Daten durchführt, wenn die Anzahl der C1-Fehler größer als das Doppelte einer C2-Fehlerkorrekturfähigkeit abzüglich einer C2-Decodierspanne ist; nach der Durchführung einer C1-Decodierung eine C2-Löschdecodierung an den erfassten Daten durchführt, wenn der Stopp-Parameter ungleich null ist oder die Anzahl der C1-Fehler kleiner oder gleich dem Doppelten der C2-Fehlerkorrekturfähigkeit abzüglich der C2-Decodierspanne und größer null ist; nach der Durchführung einer C2-Decodierung feststellt, dass die Decodierung erfolgreich ist, wenn sowohl eine Anzahl von C2-Fehlern als auch eine Anzahl von C1-Fehlern den Wert null haben; und nach der Durchführung einer C2-Decodierung feststellt, dass die Decodierung nicht erfolgreich ist, wenn eine Anzahl von C2-Fehlern größer oder gleich dem Stopp-Parameter ist, und den Stopp-Parameter andernfalls auf die Anzahl der C2-Fehler setzt.
  5. System nach Anspruch 4, wobei die C1-Fehlerkorrekturfähigkeit eine Anzahl von C1-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind, und wobei die C2-Fehlerkorrekturfähigkeit eine Anzahl von C2-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind.
  6. System nach Anspruch 1, wobei die Logik, die so konfiguriert ist, dass sie in dem iterativen Prozess eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchführt, bis die Decodierung erfolgreich oder nicht erfolgreich ist, Logik aufweist, die so konfiguriert ist, dass sie: eine C1-Fehlerdecodierung an den erfassten Daten in einer ersten Iteration und wenn der Stopp-Parameter kleiner oder gleich dem Doppelten einer C1-Fehlerkorrekturfähigkeit abzüglich einer C1-Decodierspanne ist, durchführt, und andernfalls eine C1-Löschdecodierung an den erfassten Daten durchführt; die Decodierung anhält, wenn eine Anzahl von C1-Fehlern den Wert null hat, und eine Codewort-Prüfung durchführt; nach der Durchführung einer C1-Decodierung eine C2-Fehlerdecodierung an den erfassten Daten durchführt, wenn die Anzahl der C1-Fehler größer als das Doppelte einer C2-Fehlerkorrekturfähigkeit abzüglich einer C2-Decodierspanne ist, und andernfalls nach der Durchführung einer C1-Decodierung eine C2-Löschdecodierung an den erfassten Daten durchführt; die Decodierung nach der Durchführung einer C2-Decodierung anhält, wenn eine Anzahl von C2-Fehlern den Wert null hat; und nach der Durchführung einer C2-Decodierung feststellt, dass die Decodierung nicht erfolgreich ist, wenn eine Anzahl von C2-Fehlern größer oder gleich dem Stopp-Parameter ist, und andernfalls den Stopp-Parameter auf die Anzahl der C2-Fehler setzt, wobei die Codewort-Prüfung Logik aufweist, die so konfiguriert ist, dass sie feststellt, dass jedes C1-Codewort zulässig und jedes C2-Codewort zulässig ist, und wobei die Decodierung erfolgreich ist, wenn jedes C1-Codewort zulässig und jedes C2-Codewort zulässig ist, andernfalls ist die Decodierung nicht erfolgreich.
  7. System nach Anspruch 6, wobei die C1-Fehlerkorrekturfähigkeit eine Anzahl von C1-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind, und wobei die C2-Fehlerkorrekturfähigkeit eine Anzahl von C2-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind.
  8. Verfahren für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes, wobei das Verfahren aufweist: Empfangen von erfassten Daten (402, 602); Erzeugen von Löschmarkierungen (404, 604) für die erfassten Daten und Bereitstellen der Löschmarkierungen für einen C2-Decodierer; Setzen eines Stopp-Parameters (406, 606) in der Weise, dass er einer Länge von C1-Codewörtern in einer Codewort-Verschachtelung entspricht, die zur Codierung der erfassten Daten verwendet werden; und in einem iterativen Prozess (408, 608) selektives Durchführen einer Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung, bis eines von zumindest zwei Fehlerkriterien, nämlich das erste Fehlerkriterium „Decodierung erfolgreich“ (416, 424) oder das zweite Fehlerkriterium „Decodierung nicht erfolgreich“ (428) erfüllt ist.
  9. Verfahren nach Anspruch 8, wobei jede Löschmarkierung einem Teil der erfassten Daten entspricht, der aufgrund einer beobachteten oder berechneten Bedingung während einer Löschdecodierung als gelöscht zu behandeln ist.
  10. Verfahren nach Anspruch 9, wobei die beobachtete oder berechnete Bedingung mindestens eines von Folgendem einschließt: eine Kopfzeile für eine Codewort-Verschachtelung, die nicht erkannt wird, das Erkennen eines Phasensprungs einer Phasenregelschleife (PLL), eine Anzahl von erkannten, zusammenhängenden, unzulässigen Modulations-Codewörtern in einer Codewort-Verschachtelung oder in einem C1-Codewort an einem Ausgang eines Modulationsdecodierers, die eine vorher festgelegte Schwellenwert-Anzahl überschreitet, eine Anzahl von Bits zwischen einem Forward-Sync-Muster und einem Re-Sync-Muster, die nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen entspricht, und/oder eine Anzahl von Bits zwischen einem Re-Sync-Muster und einem Reverse-Sync-Muster, die nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen entspricht.
  11. Verfahren nach Anspruch 8, wobei das in dem iterativen Prozess erfolgende selektive Durchführen einer Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung, bis die Decodierung erfolgreich oder nicht erfolgreich ist, aufweist: Durchführen einer C1-Fehlerdecodierung an den erfassten Daten in einer ersten Iteration und wenn der Stopp-Parameter kleiner oder gleich dem Doppelten einer C1-Fehlerkorrekturfähigkeit abzüglich einer C1-Decodierspanne ist, andernfalls Durchführen einer C1-Löschdecodierung an den erfassten Daten; nach der Durchführung einer C1-Decodierung Feststellen, dass die Decodierung erfolgreich ist, wenn eine Anzahl von C1-Fehlern den Wert null hat und der Stopp-Parameter gleich null ist; nach der Durchführung einer C1-Decodierung Durchführen einer C2-Fehlerdecodierung an den erfassten Daten, wenn die Anzahl der C1-Fehler größer als das Doppelte einer C2-Fehlerkorrekturfähigkeit abzüglich einer C2-Decodierspanne ist; nach der Durchführung einer C1-Decodierung Durchführen einer C2-Löschdecodierung an den erfassten Daten, wenn der Stopp-Parameter ungleich null ist oder die Anzahl der C1-Fehler kleiner oder gleich dem Doppelten der C2-Fehlerkorrekturfähigkeit abzüglich der C2-Decodierspanne und größer null ist; nach der Durchführung einer C2-Decodierung Feststellen, dass die Decodierung erfolgreich ist, wenn sowohl eine Anzahl von C2-Fehlern als auch eine Anzahl von C1-Fehlern den Wert null haben; und nach der Durchführung einer C2-Decodierung Feststellen, dass die Decodierung nicht erfolgreich ist, wenn eine Anzahl von C2-Fehlern größer oder gleich dem Stopp-Parameter ist, andernfalls Setzen des Stopp-Parameters auf die Anzahl der C2-Fehler.
  12. Verfahren nach Anspruch 11, wobei die C1-Fehlerkorrekturfähigkeit eine Anzahl von C1-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind, und wobei die C2-Fehlerkorrekturfähigkeit eine Anzahl von C2-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind.
  13. Verfahren nach Anspruch 8, wobei das in dem iterativen Prozess erfolgende selektive Durchführen einer Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung, bis die Decodierung erfolgreich oder nicht erfolgreich ist, aufweist: Durchführen einer C1-Fehlerdecodierung an den erfassten Daten in einer ersten Iteration und wenn der Stopp-Parameter kleiner oder gleich dem Doppelten einer C1-Fehlerkorrekturfähigkeit abzüglich einer C1-Decodierspanne ist, andernfalls Durchführen einer C1-Löschdecodierung an den erfassten Daten; Anhalten der Decodierung, wenn eine Anzahl von C1-Fehlern den Wert null hat, und Durchführen einer Codewort-Prüfung; nach der Durchführung einer C1-Decodierung Durchführen einer C2-Fehlerdecodierung an den erfassten Daten, wenn die Anzahl der C1-Fehler größer als das Doppelte einer C2-Fehlerkorrekturfähigkeit abzüglich einer C2-Decodierspanne ist, andernfalls Durchführen einer C2-Löschdecodierung an den erfassten Daten nach der Durchführung einer C1-Decodierung; Anhalten der Decodierung nach der Durchführung einer C2-Decodierung, wenn eine Anzahl von C2-Fehlern den Wert null hat; und nach der Durchführung einer C2-Decodierung Feststellen, dass die Decodierung nicht erfolgreich ist, wenn eine Anzahl von C2-Fehlern größer oder gleich dem Stopp-Parameter ist, andernfalls Setzen des Stopp-Parameters auf die Anzahl der C2-Fehler, wobei die Codewort-Prüfung die Feststellung aufweist, dass jedes C1-Codewort zulässig und jedes C2-Codewort zulässig ist, und wobei die Decodierung erfolgreich ist, wenn jedes C1-Codewort zulässig und jedes C2-Codewort zulässig ist, andernfalls ist die Decodierung nicht erfolgreich.
  14. Verfahren nach Anspruch 13, wobei die C1-Fehlerkorrekturfähigkeit eine Anzahl von C1-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind, und wobei die C2-Fehlerkorrekturfähigkeit eine Anzahl von C2-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind.
  15. Computerprogrammprodukt für eine Kombinations-Fehler- und Löschdecodierung für Produktcodes, wobei das Computerprogrammprodukt ein von einem Computer lesbares Speichermedium mit damit realisiertem Programmcode aufweist, wobei der Programmcode von einem Prozessor lesbar/ausführbar ist, um: erfasste Daten zu empfangen (402, 602); Löschmarkierungen für die erfassten Daten zu erzeugen (404, 604) und die Löschmarkierungen einem C2-Decodierer bereitzustellen; einen Stopp-Parameter so zu setzen (406, 606), dass er einer Länge von C1-Codewörtern in einer Codewort-Verschachtelung entspricht, die zur Codierung der erfassten Daten verwendet werden; und in einem iterativen Prozess (408, 608) eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchzuführen, bis eines von zumindest zwei Fehlerkriterien, nämlich das erste Fehlerkriterium „Decodierung erfolgreich“ (416, 424) oder das zweite Fehlerkriterium „Decodierung nicht erfolgreich“ (428) erfüllt ist.
  16. Computerprogrammprodukt nach Anspruch 15, wobei jede Löschmarkierung einem Teil der erfassten Daten entspricht, der aufgrund einer beobachteten oder berechneten Bedingung während einer Löschdecodierung als gelöscht zu behandeln ist, wobei die beobachtete oder berechnete Bedingung mindestens eines von Folgendem einschließt: eine Kopfzeile für eine Codewort-Verschachtelung, die nicht erkannt wird, das Erkennen eines Phasensprungs einer Phasenregelschleife (PLL), eine Anzahl von erkannten, zusammenhängenden, unzulässigen Modulations-Codewörtern in einer Codewort-Verschachtelung oder in einem C1-Codewort an einem Ausgang eines Modulationsdecodierers, die eine vorher festgelegte Schwellenwert-Anzahl überschreitet, eine Anzahl von Bits zwischen einem Forward-Sync-Muster und einem Re-Sync-Muster, die nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen entspricht, und/oder eine Anzahl von Bits zwischen einem Re-Sync-Muster und einem Reverse-Sync-Muster, die nicht einer Größe einer Kopfzeile und vier Codewort-Verschachtelungen entspricht.
  17. Computerprogrammprodukt nach Anspruch 15, wobei der Programmcode, der von dem Prozessor lesbar/ausführbar ist, um in dem iterativen Prozess eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchzuführen, bis die Decodierung erfolgreich oder nicht erfolgreich ist, des Weiteren von dem Prozessor lesbar/ausführbar ist, um: eine C1-Fehlerdecodierung an den erfassten Daten in einer ersten Iteration und wenn der Stopp-Parameter kleiner oder gleich dem Doppelten einer C1-Fehlerkorrekturfähigkeit abzüglich einer C1-Decodierspanne ist, durchzuführen und um andernfalls eine C1-Löschdecodierung an den erfassten Daten durchzuführen; nach der Durchführung einer C1-Decodierung festzustellen, dass die Decodierung erfolgreich ist, wenn eine Anzahl von C1-Fehlern den Wert null hat und der Stopp-Parameter gleich null ist; nach der Durchführung einer C1-Decodierung eine C2-Fehlerdecodierung an den erfassten Daten durchzuführen, wenn die Anzahl der C1-Fehler größer als das Doppelte einer C2-Fehlerkorrekturfähigkeit abzüglich einer C2-Decodierspanne ist; nach der Durchführung einer C1-Decodierung eine C2-Löschdecodierung an den erfassten Daten durchzuführen, wenn der Stopp-Parameter ungleich null ist oder die Anzahl der C1-Fehler kleiner oder gleich dem Doppelten der C2-Fehlerkorrekturfähigkeit abzüglich der C2-Decodierspanne und größer null ist; nach der Durchführung einer C2-Decodierung festzustellen, dass die Decodierung erfolgreich ist, wenn sowohl eine Anzahl von C2-Fehlern als auch eine Anzahl von C1-Fehlern den Wert null haben; und um nach der Durchführung einer C2-Decodierung festzustellen, dass die Decodierung nicht erfolgreich ist, wenn eine Anzahl von C2-Fehlern größer oder gleich dem Stopp-Parameter ist, und um andernfalls den Stopp-Parameter auf die Anzahl der C2-Fehler zu setzen.
  18. Computerprogrammprodukt nach Anspruch 17, wobei die C1-Fehlerkorrekturfähigkeit eine Anzahl von C1-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind, und wobei die C2-Fehlerkorrekturfähigkeit eine Anzahl von C2-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind.
  19. Computerprogrammprodukt nach Anspruch 15, wobei der Programmcode, der von dem Prozessor lesbar/ausführbar ist, um in dem iterativen Prozess eine Fehler- oder Lösch-C1-Decodierung, gefolgt von einer Fehler- oder Lösch-C2-Decodierung selektiv durchzuführen, bis die Decodierung erfolgreich oder nicht erfolgreich ist, des Weiteren von dem Prozessor lesbar/ausführbar ist, um: eine C1-Fehlerdecodierung an den erfassten Daten in einer ersten Iteration und wenn der Stopp-Parameter kleiner oder gleich dem Doppelten einer C1-Fehlerkorrekturfähigkeit abzüglich einer C1-Decodierspanne ist, durchzuführen und um andernfalls eine C1-Löschdecodierung an den erfassten Daten durchzuführen; die Decodierung anzuhalten, wenn eine Anzahl von C1-Fehlern den Wert null hat, und um eine Codewort-Prüfung durchzuführen; nach der Durchführung einer C1-Decodierung eine C2-Fehlerdecodierung an den erfassten Daten durchzuführen, wenn die Anzahl der C1-Fehler größer als das Doppelte einer C2-Fehlerkorrekturfähigkeit abzüglich einer C2-Decodierspanne ist, und um andernfalls nach der Durchführung einer C1-Decodierung eine C2-Löschdecodierung an den erfassten Daten durchzuführen; die Decodierung nach der Durchführung einer C2-Decodierung anzuhalten, wenn eine Anzahl von C2-Fehlern den Wert null hat; und nach der Durchführung einer C2-Decodierung festzustellen, dass die Decodierung nicht erfolgreich ist, wenn eine Anzahl von C2-Fehlern größer oder gleich dem Stopp-Parameter ist, und um andernfalls den Stopp-Parameter auf die Anzahl der C2-Fehler zu setzen, wobei die Codewort-Prüfung Logik aufweist, die so konfiguriert ist, dass sie feststellt, dass jedes C1-Codewort zulässig und jedes C2-Codewort zulässig ist, und wobei die Decodierung erfolgreich ist, wenn jedes C1-Codewort zulässig und jedes C2-Codewort zulässig ist, andernfalls ist die Decodierung nicht erfolgreich.
  20. Computerprogrammprodukt nach Anspruch 19, wobei die C1-Fehlerkorrekturfähigkeit eine Anzahl von C1-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind, und wobei die C2-Fehlerkorrekturfähigkeit eine Anzahl von C2-Fehlern darstellt, die mit Hilfe von Produktcodes in den erfassten Daten korrigierbar sind.
DE112014002870.3T 2013-08-07 2014-07-28 Kombinations-Fehler- und Löschdecodierung für Produktcodes Active DE112014002870B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/961,839 2013-08-07
US13/961,839 US9166627B2 (en) 2013-08-07 2013-08-07 Combination error and erasure decoding for product codes
PCT/CN2014/083149 WO2015018285A1 (en) 2013-08-07 2014-07-28 Combination error and erasure decoding for product codes

Publications (2)

Publication Number Publication Date
DE112014002870T5 DE112014002870T5 (de) 2016-03-10
DE112014002870B4 true DE112014002870B4 (de) 2021-06-24

Family

ID=52449691

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014002870.3T Active DE112014002870B4 (de) 2013-08-07 2014-07-28 Kombinations-Fehler- und Löschdecodierung für Produktcodes

Country Status (6)

Country Link
US (2) US9166627B2 (de)
JP (1) JP6415557B2 (de)
CN (1) CN105453439B (de)
DE (1) DE112014002870B4 (de)
GB (1) GB2533501B (de)
WO (1) WO2015018285A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9166627B2 (en) * 2013-08-07 2015-10-20 International Business Machines Corporation Combination error and erasure decoding for product codes
WO2016118060A1 (en) * 2015-01-20 2016-07-28 Telefonaktiebolaget Lm Ericsson (Publ) Transmitting device, receiving device, and methods performed therein
US20160323060A1 (en) * 2015-04-28 2016-11-03 Intel IP Corporation Apparatus, computer readable medium, and method for higher qam in a high efficiency wireless local-area network
CN108141308B (zh) * 2015-10-23 2021-03-16 瑞典爱立信有限公司 基于解码裕度估计确定传输特性
US9412410B1 (en) * 2015-11-19 2016-08-09 International Business Machines Corporation Track-dependent decoding
US9837117B2 (en) 2015-11-19 2017-12-05 International Business Machines Corporation Track-dependent decoding
US9984771B2 (en) 2016-01-11 2018-05-29 Sandisk Technologies Llc Multi-level raid-type encoding with random correction capability
US10536172B2 (en) 2016-03-04 2020-01-14 Western Digital Technologies, Inc. ECC and raid-type decoding
US9940194B2 (en) 2016-03-04 2018-04-10 Sandisk Technologies Llc ECC decoding using raid-type parity
US9959168B2 (en) 2016-03-04 2018-05-01 Sandisk Technologies Llc ECC and RAID-type decoding
US10348334B2 (en) 2016-10-25 2019-07-09 International Business Machines Corporation Reducing a decoding error floor by post-processing codewords encoded by binary symmetry-invariant product codes
US10846175B2 (en) * 2018-04-10 2020-11-24 Micron Technology, Inc. High throughput bit correction of data inside a word buffer for a product code decoder
US11216196B2 (en) * 2018-05-24 2022-01-04 Quantum Corporation Erasure coding magnetic tapes for minimum latency and adaptive parity protection feedback
JP2020195007A (ja) 2019-05-24 2020-12-03 キオクシア株式会社 メモリシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070288827A1 (en) * 2006-06-07 2007-12-13 Agere Systems Inc. Forward error correction decoding method and apparatus for satellite digital audio radio broadcasting
DE102007046789A1 (de) * 2006-10-10 2008-04-17 O-Mass As N-dimensionales iteratives ECC-Verfahren und Vorrichtung mit kombinierter Lösch- und Fehlerinformation und erneutem Lesen
US20080155374A1 (en) * 2005-06-10 2008-06-26 Keisuke Tanaka Error correcting device, method, and program

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4675863A (en) * 1985-03-20 1987-06-23 International Mobile Machines Corp. Subscriber RF telephone system for providing multiple speech and/or data signals simultaneously over either a single or a plurality of RF channels
KR100229015B1 (ko) * 1996-08-06 1999-11-01 윤종용 디지탈 처리시스템의 에러정정장치 및 방법
US6048090A (en) * 1997-04-23 2000-04-11 Cirrus Logic, Inc. Error correction and concurrent verification of a product code
JPH11175362A (ja) * 1997-12-16 1999-07-02 Toshiba Ave Co Ltd 誤り訂正装置及びデータ再生装置
US6047395A (en) * 1998-01-30 2000-04-04 Cirrus Logic, Inc. Error correction processor for correcting a multi-dimensional code by generating an erasure polynomial over one dimension for correcting multiple codewords in another dimension
US6272659B1 (en) * 1998-05-18 2001-08-07 Cirrus Logic, Inc. Error correction code processor employing adjustable correction power for miscorrection minimization
US7003065B2 (en) 2001-03-09 2006-02-21 Ericsson Inc. PLL cycle slip detection
JP3876662B2 (ja) 2001-08-03 2007-02-07 三菱電機株式会社 積符号の復号方法および積符号の復号装置
US6616060B2 (en) * 2001-10-11 2003-09-09 Delphi Technologies, Inc. Flexible film cartridge with balanced effort
JP2004087018A (ja) * 2002-08-28 2004-03-18 Toshiba Corp エラー訂正方法およびエラー訂正装置
TWI247288B (en) * 2003-04-03 2006-01-11 Lite On It Corp Manufacturing unit and method of multimedia audio/video data stream
US7441175B2 (en) 2004-03-12 2008-10-21 Seagate Technology Llc Turbo product code implementation and decoding termination method and apparatus
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
CN100542048C (zh) * 2007-08-27 2009-09-16 北京航空航天大学 一种基于帧间相关的前向纠错编解码方法
JP2009246640A (ja) * 2008-03-31 2009-10-22 Fujitsu Microelectronics Ltd 誤り訂正装置、データ読み出し装置及び誤り訂正方法
US8214718B2 (en) * 2008-06-19 2012-07-03 International Business Machines Corporation Erasure flagging system and method for errors-and-erasures decoding in storage devices
US8276045B2 (en) * 2009-01-09 2012-09-25 International Business Machines Corporation ECC interleaving for multi-track recording on magnetic tape
US8751729B2 (en) * 2010-12-23 2014-06-10 Samsung Electronics Co., Ltd. Flash memory device and memory system including the same
US9166627B2 (en) 2013-08-07 2015-10-20 International Business Machines Corporation Combination error and erasure decoding for product codes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080155374A1 (en) * 2005-06-10 2008-06-26 Keisuke Tanaka Error correcting device, method, and program
US20070288827A1 (en) * 2006-06-07 2007-12-13 Agere Systems Inc. Forward error correction decoding method and apparatus for satellite digital audio radio broadcasting
DE102007046789A1 (de) * 2006-10-10 2008-04-17 O-Mass As N-dimensionales iteratives ECC-Verfahren und Vorrichtung mit kombinierter Lösch- und Fehlerinformation und erneutem Lesen

Also Published As

Publication number Publication date
JP6415557B2 (ja) 2018-10-31
US9455749B2 (en) 2016-09-27
US20150046767A1 (en) 2015-02-12
US20160006460A1 (en) 2016-01-07
CN105453439B (zh) 2019-05-17
CN105453439A (zh) 2016-03-30
GB2533501A (en) 2016-06-22
DE112014002870T5 (de) 2016-03-10
JP2016527832A (ja) 2016-09-08
US9166627B2 (en) 2015-10-20
GB201603366D0 (en) 2016-04-13
GB2533501B (en) 2018-01-10
WO2015018285A1 (en) 2015-02-12

Similar Documents

Publication Publication Date Title
DE112014002870B4 (de) Kombinations-Fehler- und Löschdecodierung für Produktcodes
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE112013005453B4 (de) Rekonstruierende Fehlerbehebungsprozedur (ERP) für mehrerer Datensätze unter Verwendung eines reservierten Puffers
DE112012000385B4 (de) Korrigieren von Auslöschungen in Speicher-Arrays
DE102015201384B4 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE112011103295B4 (de) Decodieren in Solid-State-Speichereinheiten
DE112016003638B4 (de) Auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes
DE102013020712B4 (de) Techniken zum Speichern von Bits in Speicherzellen mit Hängenbleiben-auf-0-oder-1-Fehlern
DE112012006153B4 (de) Rekonstruktion von Codewörtern unter Verwendung eines Seitenkanals
DE102017001420B4 (de) Redundanz von fehlerkorrekturcodierten daten in einem speichersystem
DE60206419T2 (de) Löschung und einzelfehlerkorrekturdekoder für lineare blockkodes
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
DE112011100199B4 (de) Integrierter Daten- und Kopfdatenschutz für Bandlaufwerke
DE112018005762T5 (de) Neuschreiben von datenobjekten auf speichermedien mit sequenziellem zugriff
DE102011108933A1 (de) Sichere Speicherung durch interneBetriebssicherstellung
DE102007038114A1 (de) Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren
DE2430464A1 (de) Einrichtung zur fehlergesicherten datenuebertragung
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102016108733A1 (de) Steuern einer redundanten Anordnung von unabhängigen Festplatten (RAID), welche ein Nur-Lese-Flash-Datenspeichergerät einschließt
DE102012213788A1 (de) Ende-zu-Ende-Datenschutz bei gleichzeitiger Unterstützung mehrerer CRC-Algorithmen
DE102016107718A1 (de) Auslesen von Fehlervektoren aus einer Speichereinheit
DE102016205281B4 (de) Fehlersicherung von unter verwendung von headern mit variabler länge gespeicherten daten
DE69814465T2 (de) Verfahren und gerät zur datenspeicherung auf magnetischen medien, die fehlerkorrekturkodes enthalten
DE112014002403B4 (de) Hochleistungs-Lese-Modifizier-Schreib-System mit Zeilenratenzusammenführung von Datenrahmensegmenten in Hardware
DE102013016681A1 (de) Codieren und Decodieren von Daten zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H03M0013000000

Ipc: G11B0020180000

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final