DE102016220802B4 - Decodierung auf Prioritätsgrundlage - Google Patents

Decodierung auf Prioritätsgrundlage Download PDF

Info

Publication number
DE102016220802B4
DE102016220802B4 DE102016220802.0A DE102016220802A DE102016220802B4 DE 102016220802 B4 DE102016220802 B4 DE 102016220802B4 DE 102016220802 A DE102016220802 A DE 102016220802A DE 102016220802 B4 DE102016220802 B4 DE 102016220802B4
Authority
DE
Germany
Prior art keywords
deletion
coefficients
symbols
list
coefficient
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
DE102016220802.0A
Other languages
English (en)
Other versions
DE102016220802A1 (de
Inventor
Steven Ross Bentley
Roy Daron Cideciyan
Simeon Furrer
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 DE102016220802A1 publication Critical patent/DE102016220802A1/de
Application granted granted Critical
Publication of DE102016220802B4 publication Critical patent/DE102016220802B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B5/00Recording by magnetisation or demagnetisation of a record carrier; Reproducing by magnetic means; Record carriers therefor
    • G11B5/008Recording on, or reproducing or erasing from, magnetic tapes, sheets, e.g. cards, or wires
    • G11B5/00813Recording on, or reproducing or erasing from, magnetic tapes, sheets, e.g. cards, or wires magnetic tapes
    • 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/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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • G11B2020/1853Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information using a product code which has inner and outer parity symbols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Signal Processing (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)

Abstract

Bandlaufwerk (100), aufweisend:
einen Magnetkopf mit einer Mehrzahl von Lesesensoren, wobei jeder Lesesensor konfiguriert ist, um codierte Daten gleichzeitig aus einer Mehrzahl von Spuren eines Magnetbandmediums zu lesen parallel mit allen anderen Lesesensoren der Mehrzahl von Lesesensoren; und
einen Controller (128) und eine Logik, die integriert und/oder durch den Controller (128) ausführbar ist, wobei die Logik dazu konfiguriert ist, den Controller (128) zu veranlassen zum:
Empfangen der codierten Daten von der Mehrzahl von Lesesensoren, die gleichzeitig aus der Mehrzahl von Spuren des Magnetbandmediums ausgelesen werden; und
Ausführen einer Decodierung auf Prioritätsgrundlage für die codierten Daten auf Grundlage von Löschkoeffizienten, die mindestens einem Codewort der codierten Daten zugehörig sind
wobei die Logik, die dazu konfiguriert ist, den Controller (128) zu veranlassen die Decodierung auf Prioritätsgrundlage auszuführen, den Controller (128) ferner veranlasst zum:
Berechnen eines Löschkoeffizienten für jedes Symbol in dem mindestens einen Codewort, wobei jeder Löschkoeffizient ein Maß für eine Zuverlässigkeit eines zugehörigen decodierten Symbols in dem mindestens einen Codewort ist;
Generieren einer Löschkoeffizientenliste mit den Löschkoeffizienten, die jedem Symbol des mindestens einen Codeworts zugehörig sind;
Quantisieren der Löschkoeffizienten in der Löschkoeffizientenliste in mindestens drei Ebenen;
Generieren einer Löschliste mit einem untergeordneten Set von Symbolen aus dem mindestens einen Codewort auf Grundlage der Löschkoeffizientenliste; und
Ausführen einer C2-Fehler-und-Lösch-Decodierung unter Verwendung von Löschzeigern, die die dem untergeordneten Set von Symbolen in der Löschliste entsprechen.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft Bandspeichersysteme und insbesondere Fehler-und-Lösch-Decodierung auf Prioritätsgrundlage.
  • Aktuell verwendete lineare Bandlaufwerte wenden Produktcodes zur Fehlerkorrekturcodierung (ECC) an. Diese Produktcodes enthalten zwei Reed-Solomon-Komponentencodes, die aus einem C1-Zeilencode und einem C2-Spaltencode bestehen. Ein Misslingen der Decodierung eines Produkt-Codeworts, die eine erfolgreiche Decodierung aller C1-Zeilen und aller C2-Spalten in einem Produktcode erfordert, führt zu einem temporären und/oder permanenten Fehler. Diese temporären oder permanenten Fehler sind ein erhebliches Problem beim Versuch, Daten auf einem Band zu speichern.
  • Typischerweise setzen aktuelle Bandlaufwerke ECC mit zwei Betriebsmodi um: 1) Nur-Fehler-Decodierung (Decodierung, in der keine Informationen über unkorrigierbare C1-Codewörter an den C2-Decoder übergeben werden); und 2) Löschdecodierung (Decodierung, bei der Informationen über unkorrigierbare C1-Codewörter vom C1-Decoder an den C2-Decoder übergeben werden.
  • Der zweite Modus, die Löschdecodierung, ist in dem Fall von Vorteil, in dem unkorrigierbare C1-Codewörter mit einer großen Anzahl von Byte-Fehlern als Löschzeiger für die C2-Decodierung verwendet werden. Umgekehrt führt der zweite Modus wahrscheinlich zu einer Leistungsverschlechterung in dem Fall, in dem C1-Unkorrigierbare mit nur einer kleinen Anzahl von Fehlern (nur geringfügig über der Fehlerkorrekturfähigkeit des C1-Decoders) als Löschzeiger zur C2-Decodierung verwendet werden. Daher ist es nicht immer von Vorteil, die Löschdecodierung beim Umsetzen von ECC in Bandlaufwerken zu verwenden.
  • Die EP 1 901 294 A1 beschreibt eine Vorrichtung zum Korrigieren von Fehlern in einem Produktcodeblock, der C1-Codes in einer Zeilenrichtung und C2-Codes in einer Spaltenrichtung enthält. Zuerst führt ein C1-Decodierer eine C1-Korrektur für jedes von geradzahligen C1 mit geradzahligen Bytes in dem C1-Code und einem ungeraden C1 mit ungeradzahligen Bytes in dem C1-Code durch. Wenn zum Beispiel eine minimale Hamming-Distanz des C1-Codes 7 beträgt, wird die C1-Korrektur bis zu einer 3-Byte-Korrektur durchgeführt. Als nächstes führt ein C2-Decodierer eine Löschkorrektur in der C2-Korrektur in dem Fall durch, in dem irgendeines der C1-Korrekturergebnisse für das gerade C1 und das ungerade C1 ein Korrekturfehler ist und wobei eines der Ergebnisse die 3-Byte-Korrektur ist, während das Andere der Korrekturfehler oder die 3-Byte-Korrektur ist.
  • Die US 4 336 612 A beschreibt ein Unterteilen eines rechteckigen Arrays von 6 × 150 Bits in 50 rechteckige Arrays von 8 × 3 Bits mit 2 hinzugefügten Prüfbits, was in 50 C2-Codes resultiert. Diese Codierung wird 50 mal ausgeführt, um ein rechteckiges Array von 8 × 150 Bits zu bilden, und jede seiner Reihen wird in einen C1-Code von 166 Bits mit 16 hinzugefügten Prüfbits codiert. Diese Codierung wird achtmal ausgeführt, um ein Codewort eines verallgemeinerten Produktcodes zu bilden, der 8 × 166 Bits enthält und wobei jeder Zeile 12 Synchronisierungsbits folgen. Fehler werden in den C1-Codes erkannt, die aus dem Codewort decodiert werden, um eine Löschinformation zu erzeugen, die verwendet wird, um den C2-Code zu korrigieren. Dann wird das ursprüngliche Array wiedergegeben.
  • Die DE 100 50 746 A1 beschreibt eine Vorrichtung und ein Verfahren zum Wiedergewinnen von kodierten Daten aus einem Datensignal, das ein oder mehrere Datensymbole darstellt und zufälligen Fehlern und Sprungfehlern unterworfen ist. Ein derartiges System umfasst einen Sprungfehlerdetektor, einen Zuverlässigkeitsdetektor, eine Irrungs-Flagg-Schaltung und ein Dekoder. Der Sprungfehlerdetektor empfängt das Datensignal und ist so aufgebaut, dass er eine oder mehrere charakteristische Eigenschaften (beispielsweise eine Startstelle und eine Mittelpunktsstelle) des Sprungfehlers (beispielsweise einer thermischen Rauheit) im Datensignal identifiziert. Der Zuverlässigkeitsdetektor ist so aufgebaut, dass er eine Zuverlässigkeitsmaßzahl für jedes Datensymbol berechnet. Die Irrungs-Flagg-Schaltung identifiziert Irrungen auf der Basis von Signalen, die sie vom Sprungfehlerdetektor und Zuverlässigkeitsdetektor empfängt. Der Dekoder ist so aufgebaut, dass er ein Datensymbol als Irrung oder als gültiges Datensymbol in Abhängigkeit vom Ausgangssignal der Irrungs-Flagg-Schaltung behandelt.
  • KURZDARSTELLUNG DER ERFINDUNG
  • In einer Ausführungsform enthält ein Bandlaufwerk einen Magnetkopf mit einer Mehrzahl von Lesesensoren, wobei jeder Lesesensor konfiguriert ist, um Daten gleichzeitig zu lesen. Das Bandlaufwerk enthält auch einen Controller und eine Logik, die in den Controller integriert und/oder von diesem ausführbar ist. Die Logik ist konfiguriert, um codierte Daten zu empfangen, die gleichzeitig aus einer Mehrzahl von Spuren eines Magnetbandmediums ausgelesen werden. Die Logik ist auch konfiguriert, um eine Decodierung auf Prioritätsgrundlage für die codierten Daten auf Grundlage von Löschkoeffizienten auszuführen, die mindestens einem Codewort der codierten Daten zugehörig sind.
  • In einer weiteren Ausführungsform enthält ein durch einen Controller umgesetztes Verfahren ein Empfangen von codierten Daten, die gleichzeitig aus einer Mehrzahl von Spuren eines Magnetbandmediums ausgelesen werden, und ein Ausführen einer Decodierung auf Prioritätsgrundlage für die codierten Daten auf Grundlage von Löschkoeffizienten, die mindestens einem Codewort der codierten Daten zugehörig sind
  • In noch einer weiteren Ausführungsform enthält ein Computerprogrammprodukt ein von einem Computer lesbares Speichermedium mit darin verkörperten Programmanweisungen. Die verkörperten Programmanweisungen sind durch einen Controller ausführbar, um zu veranlassen, dass der Controller codierte Daten durch den Controller empfängt, die gleichzeitig aus einer Mehrzahl von Spuren eines Magnetbandmediums ausgelesen werden. Die verkörperten Programmanweisungen sind auch durch den Controller ausführbar, um zu veranlassen, dass der Controller eine Decodierung auf Prioritätsgrundlage für die codierten Daten auf Grundlage von Löschkoeffizienten durch den Controller ausführt, die mindestens einem Codewort der codierten Daten zugehörig sind.
  • Weitere Aspekte und Ausführungsformen der vorliegenden Erfindung werden aus der folgenden ausführlichen Beschreibung offenkundig, die in Verbindung mit den Zeichnungen die Grundgedanken der Erfindung beispielhaft veranschaulichen.
  • Figurenliste
    • 1 veranschaulicht ein Netzwerk-Speichersystem aus dem Stand der Technik, das gemäß einer Ausführungsform verwendet werden kann.
    • 2A veranschaulicht ein vereinfachtes Bandlaufwerk eines Datenspeichersystems auf Bandgrundlage aus dem Stand der Technik, das gemäß einer Ausführungsform verwendet werden kann.
    • 2B ist eine schematische Darstellung einer Bandkassette aus dem Stand der Technik, welche gemäß einer Ausführungsform verwendet werden kann.
    • 3 veranschaulicht einen konzeptionellen Datenfluss in einem Bandlaufwerk aus dem Stand der Technik, das gemäß einer Ausführungsform verwendet werden kann.
    • 4 zeigt ein logisches Daten-Array aus dem Stand der Technik, das gemäß einer Ausführungsform zum Organisieren von Daten in einem untergeordneten Daten-Set (SDS) verwendet werden kann.
    • 5 zeigt ein System mit einer spurabhängigen Löschkoeffizientenlogik gemäß einer Ausführungsform.
    • 6 zeigt eine Organisation von Löschkoeffizienten für ein Codewort gemäß einer Ausführungsform.
    • 7 zeigt einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform.
    • 8 zeigt einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform.
    • 9 zeigt einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform.
    • 10 zeigt einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung wird zum Zweck einer Veranschaulichung der allgemeinen Grundgedanken der vorliegenden Erfindung erstellt und soll die hierin beanspruchten erfinderischen Konzepte keinesfalls einschränken. Ferner können bestimmte hierin beschriebene Funktionen in Kombination mit anderen beschriebenen Funktionen in jeder der verschiedenen möglichen Kombinationen und Umsetzungen verwendet werden.
  • Sofern hierin nicht anderweitig speziell definiert, sind alle Begriffe so weitgefasst wie möglich zu interpretieren, einschließlich Bedeutungen, die durch die Spezifikationen impliziert werden, sowie Bedeutungen, die vom Fachmann verstanden und/oder in Wörterbüchern, Abhandlungen usw. definiert werden.
  • Außerdem ist anzumerken, wie in der Spezifikation und den Ansprüchen im Anhang verwendet, dass die Singularformen „ein“, „eine“ und „der/die/das“ auch die Pluralformen mit einschließen, es sei denn, dies wird anders angegeben. Es versteht sich des Weiteren, dass die Begriffe „weist auf“ und/oder „aufweisend“ bei Verwendung in dieser Patentschrift das Vorhandensein ausgewiesener Funktionen, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten angeben, das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Funktionen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon aber nicht ausschließen. Der Begriff „ungefähr“, wie hierin verwendet, gibt den Wert mit dem vorangestelltem Begriff „ungefähr“ zusammen mit allen Werten an, die einigermaßen nahe an dem Wert mit dem vorangestelltem Begriff „ungefähr“ liegen, wie dem Fachmann klar sein dürfte. Sofern nicht anders angegeben, gibt der Begriff „ungefähr“ den Wert, dem der Begriff „ungefähr“ vorangestellt ist, mit ± 10 % des Werts an. Zum Beispiel gibt „ungefähr 10“ alle Werte zwischen und einschließlich 9,0 bis 11,0 an.
  • Die folgende Beschreibung offenbart mehrere bevorzugte Ausführungsformen von Systemen, Verfahren und Computerprogrammprodukten für ein Decodierungsschema auf Prioritätsgrundlage, das spurabhängige Löschkoeffizienten für Löschzeiger in der C2-Decodierung verwendet. Die Koeffizienten stellen eine Wahrscheinlichkeit dar, dass die entsprechenden C1-Bytes als Löschungen in der C2-Decodierung behandelt werden.
  • Die Löschkoeffizienten in einem C1-Codewort sind voneinander unabhängig und können daher alle unterschiedlich sein. Zum Beispiel können in dem Fall eines zeitvariierenden Signal-zu-Rausch-Verhältnisses (SNR) über den Verlauf eines C1-Codeworts die Löschkoeffizienten aus dem SNR bestimmt werden, die sich, auf Spuren des Magnetbands geschrieben, im Verlauf des C1-Codeworts beträchtlich ändern können. Der Löschkoeffizient für ein bestimmtes Byte kann auch aus einem einzelnen lauflängenbegrenzten (RLL) Decodierungsfehler bestimmt werden. In diesem Fall gibt z.B. ein RLL-Decodierungsfehler in Reaktion auf einen verwendeten RLL-Code mit einer 16/17-Rate wiederum an, dass ein oder zwei Bytes am RLL-Decoder fehlerhaft sind. Dies führt zu einem hohen Löschkoeffizienten für diese beiden Bytes am Ausgang des RLL-Decoders.
  • Diese Löschzeiger und spurabhängigen Löschkoeffizienten werden in einer Ausführungsform von einem C2-Decoder auf Prioritätsgrundlage verwendet, um eine Fehler-und-Lösch-Decodierung auszuführen, die von allen Löschzeigern in einem C2-Codewort abhängt. Dieses Schema passt sich an den Kanal an, wie vom C2-Decoder beobachtet, um die Decodierungsleistung zu verbessern. Der C2-Decodieralgorithmus ist an die Anzahl und den Typ von Löschzeigern in einem C2-Codewort angepasst und stellt damit eine verbesserte Fehlerratenleistung bei Vorhandensein sowohl von Zufallsfehlern als auch temporären/permanenten Burst-Fehlern auf Bandspuren auf Kosten einer moderaten Erhöhung der Umsetzungskomplexität bereit.
  • In einer allgemeinen Ausführungsform enthält ein Bandlaufwerk einen Magnetkopf mit einer Mehrzahl von Lesesensoren, wobei jeder Lesesensor konfiguriert ist, um Daten gleichzeitig zu lesen. Das Bandlaufwerk enthält auch einen Controller und eine Logik, die in den Controller integriert und/oder von diesem ausführbar ist. Die Logik ist konfiguriert, um codierte Daten zu empfangen, die gleichzeitig aus einer Mehrzahl von Spuren eines Magnetbandmediums ausgelesen werden. Die Logik ist auch konfiguriert, um eine Decodierung auf Prioritätsgrundlage für die codierten Daten auf Grundlage von Löschkoeffizienten auszuführen, die mindestens einem Codewort der codierten Daten zugehörig sind.
  • In einer weiteren allgemeinen Ausführungsform enthält ein durch einen Controller umgesetztes Verfahren ein Empfangen von codierten Daten, die gleichzeitig aus einer Mehrzahl von Spuren eines Magnetbandmediums ausgelesen werden, und ein Ausführen einer Decodierung auf Prioritätsgrundlage für die codierten Daten auf Grundlage von Löschkoeffizienten, die mindestens einem Codewort der codierten Daten zugehörig sind
  • In noch einer weiteren allgemeinen Ausführungsform enthält ein Computerprogrammprodukt ein von einem Computer lesbares Speichermedium mit darin verkörperten Programmanweisungen. Die verkörperten Programmanweisungen sind durch einen Controller ausführbar, um zu veranlassen, dass der Controller codierte Daten durch den Controller empfängt, die gleichzeitig aus einer Mehrzahl von Spuren eines Magnetbandmediums ausgelesen werden. Die verkörperten Programmanweisungen sind auch durch den Controller ausführbar, um zu veranlassen, dass der Controller eine Decodierung auf Prioritätsgrundlage für die codierten Daten auf Grundlage von Löschkoeffizienten durch den Controller ausführt, die mindestens einem Codewort der codierten Daten zugehörig sind.
  • Unter folgender Bezugnahme auf 1 wird eine schematische Darstellung eines Netzwerk-Speichersystems 10 aus dem Stand der Technik gezeigt, das gemäß einer Ausführungsform verwendet werden kann. Dieses Netzwerk-Speichersystem 10 ist nur ein Beispiel für ein geeignetes Speichersystem und soll keinerlei Einschränkung hinsichtlich des Schutzumfangs der Verwendung oder Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung zu verstehen geben. Ungeachtet dessen lässt sich das Netzwerk-Speichersystem 10 umsetzen und/oder kann jede der im Vorgenannten erläuterten Funktionalitäten ausführen.
  • In dem Netzwerk-Speichersystem 10 ist ein Computersystem/Server 12 vorhanden, das bzw. der mit zahlreichen anderen Umgebungen oder Konfigurationen für Universal- oder Sonder-Datenverarbeitungssysteme betriebsbereit ist. Zu Beispielen für bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für eine Verwendung mit dem Computersystem/Server 12 geeignet sein können, zählen PC-Systeme, Servercomputersysteme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Multiprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der oben genannten Systeme oder Einheiten und dergleichen aufweisen, sie sind aber nicht darauf beschränkt.
  • Das Computersystem/der Server 12 kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen beschrieben werden, wie beispielsweise Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen umsetzen. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen betrieben werden, wobei Aufgaben von entfernt angeordneten Verarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können Programmmodule sich sowohl in lokalen als auch entfernt angeordneten Computersystem-Speichermedien befinden, die Speichereinheiten enthalten.
  • Wie in 1 gezeigt, wird das Computersystem/der Server 12 in dem Netzwerk-Speichersystem 10 in der Form einer Universal-Datenverarbeitungseinheit gezeigt Die Komponenten des Computersystems/Servers 12 können einen oder mehrere Prozessoren oder Verarbeitungseinheiten 16, einen Systemarbeitsspeicher 28 und einen Bus 18 enthalten, der verschiedene Systemkomponenten einschließlich des Systemarbeitsspeichers 28 mit dem Prozessor 16 verbindet, sie sind aber nicht darauf beschränkt.
  • Der Bus 18 stellt einen oder mehrere von mehreren beliebigen Typen von Busstrukturen dar, einschließlich eines Arbeitsspeicherbusses oder Arbeitsspeichercontrollers, eines Peripheriebusses, eines beschleunigten Grafikanschlusses und eines Prozessors oder lokalen Busses unter Verwendung von einer aus einer Vielfalt von Busarchitekturen. Als Beispiel und nicht einschränkend enthalten derartige Architekturen einen Industry Standard Architecture- (ISA) Bus, Micro Channel Architecture- (MCA) Bus, Enhanced ISA- (EISA) Bus, einen lokalen Video Electronics Standards Association- (VESA) Bus und Peripheral Component Interconnects- (PCI) Bus.
  • Das Computersystem/der Server 12 weist typischerweise eine Vielfalt von Medien auf, die von einem Computersystem gelesen werden können. Derartige Medien können alle verfügbaren Medien sein, auf die von dem Computersystem/Server 12 zugegriffen werden kann, und sie enthalten sowohl flüchtige als auch nicht-flüchtige Medien, austauschbare und nicht austauschbare Medien.
  • Der Systemarbeitsspeicher 28 kann vom Computersystem lesbare Medien in der Form von flüchtigem Arbeitsspeicher enthalten wie beispielsweise einen Direktzugriffspeicher (RAM) 30 und/oder einen Cache-Zwischenspeicher 32. Das Computersystem/der Server 12 kann ferner weitere austauschbare/nichtaustauschbare, flüchtige/nicht-flüchtige Computersystem-Speichermedien enthalten. Nur als Beispiel kann das Speichersystem 34 zum Lesen von und Schreiben auf nicht austauschbare, nicht-flüchtige Magnetdatenträger bereitgestellt werden - nicht gezeigt und typischerweise als „Festplatte“ bezeichnet, die in einem Festplattenlaufwerk betrieben werden können. Obwohl nicht gezeigt, können ein Magnetplattenlaufwerk zum Auslesen aus und Beschreiben von einer austauschbaren, nicht-flüchtigen Magnetplatte (z.B. eine Diskette) und ein optisches Plattenlaufwerk zum Auslesen aus oder Beschreiben von einer austauschbaren, nicht-flüchtigen optischen Platte wie einem CD-ROM, DVD-ROM oder einem anderen optischen Datenträger bereitgestellt werden. In solchen Fällen können alle über eine oder mehrere Datenträgerschnittstellen mit dem Bus 18 verbunden werden. Wie ferner im Folgenden dargestellt und beschrieben wird, kann der Arbeitsspeicher 28 mindestens ein Programmprodukt mit einem Satz (z.B. mindestens einem) von Programmmodulen enthalten, die so konfiguriert sind, dass sie die Funktionen der hierin beschriebenen Ausführungsformen ausführen.
  • Das Programm/Dienstprogramm 40, das einen Satz von (mindestens einem) von Programmmodulen 42 aufweist, kann beispielsweise und nicht einschränkend im Arbeitsspeicher 28 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten.
  • Das Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten oder eine Kombination davon können alle jeweils eine Umsetzung einer Netzwerkumgebung enthalten. Die Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Methodiken von Ausführungsformen der Erfindung aus, wie hierin beschrieben.
  • Das Computersystem/der Server 12 kann auch mit einer oder mehreren externen Einheiten 14 Daten austauschen, wie beispielsweise einer Tastatur, einer Zeigeeinheit, einer Anzeige 24 usw.; einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 12 zu interagieren; und/oder allen Einheiten (z.B. Netzwerkkarte, Modem usw.), die es dem Computersystem/Server 12 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe-/Ausgabe- (E/A) Schnittstellen 22 erfolgen Des Weiteren kann das Computersystem/der Server 12 mit einem oder mehreren Netzwerken, wie beispielsweise einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet), über einen Netzwerkadapter 20 Daten austauschen Wie dargestellt, tauscht der Netzwerkadapter 20 mit den anderen Komponenten des Computersystems/Servers 12 über den Bus 18 Daten aus. Es sollte klar sein, dass, obwohl nicht gezeigt, andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten. Zu Beispielen gehören Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, Redundant Array of Independent Disks- (RAID) Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw., sie sind aber nicht darauf beschränkt.
  • 2A veranschaulicht ein vereinfachtes Bandlaufwerk 100 eines Datenspeichersystems auf Bandgrundlage aus dem Stand der Technik, das im Kontext der vorliegenden Erfindung verwendet werden kann. Zwar wird eine bestimmte Umsetzung eines Bandlaufwerks in 2A gezeigt, doch ist anzumerken, dass die hierin beschriebenen Ausführungsformen im Kontext jedes Typs eins Bandlaufwerksystems umgesetzt werden können.
  • Wie gezeigt, werden eine Bandzuführkassette 120 und eine Aufrollspule 121 zum Unterstützen eines Bands 122 bereitgestellt. Eine oder mehrere der Aufrollspulen können einen Teil einer austauschbaren Kassette bilden und sind nicht notwendigerweise Bestandteil des Bandlaufwerks 100. Das Bandlaufwerk, wie das in 2A dargestellte, kann ferner einen oder mehrere Antriebsmotoren zum Antreiben der Bandzuführkassette 120 und der Aufrollspule 121 enthalten, um das Band 122 über einen Bandkopf 126 jedes Typs zu bewegen. Ein derartiger Kopf kann ein Array von Lesevorrichtungen, Schreibvorrichtungen oder beides enthalten.
  • Führungen 125 führen das Band 122 über den Bandkopf 126. Ein derartiger Bandkopf 126 ist wiederum über ein Kabel 130 mit einem Controller 128 verbunden. Der Controller 128 kann ein Prozessor und/oder jede Logik zum Steuern eines Subsystems des Bandlaufwerks 100 sein oder enthalten. Zum Beispiel steuert der Controller 128 typischerweise Funktionen des Kopfs wie Servoverfolgung, Schreiben von Daten, Lesen von Daten usw. Der Controller 128 kann mindestens einen Servokanal und mindestens einen Datenkanal enthalten, die jeweils Datenfluss-Verarbeitungslogik enthalten, die konfiguriert ist, um Informationen zu verarbeiten und/oder zu speichern, die auf das Band 122. geschrieben und/oder von diesem gelesen werden sollen. Der Controller 128 kann unter einer nach dem Stand der Technik bekannten Logik sowie jeder hierin offenbarten Logik arbeiten und kann somit als ein Prozessor für alle der hierin enthaltenen Beschreibungen von Bandlaufwerken in verschiedenen Ausführungsformen betrachtet werden. Der Controller 128 kann mit einem Arbeitsspeicher 136 jedes bekannten Typs verbunden sein, der durch den Controller 128 ausführbare Anweisungen speichern kann. Ferner kann der Controller 128 konfiguriert und/oder programmierbar sein, um einige oder alle der hierin dargestellten Methodiken auszuführen oder zu steuern. Somit kann der Controller 128 als so konfiguriert betrachtet werden, dass er verschiedene Operationen mittels Logik ausführt, die in einem oder mehreren Chips, Modulen und/oder Blöcken programmiert ist; wobei Software, Firmware und/oder andere Anweisungen für einen oder mehrere Prozessoren usw. und Kombinationen davon zur Verfügung stehen.
  • Das Kabel 130 kann Lese/Schreib-Schaltungen enthalten, um Daten zu dem Kopf 126 zu übertragen, die auf dem Band 122 aufgezeichnet werden sollen, und um von dem Kopf 126 ausgelesene Daten von dem Band 122 zu empfangen. Ein Stellantrieb 132 steuert die Position des Kopfs126 in Bezug auf das Band 122.
  • Eine Schnittstelle 134 kann ebenfalls für einen Datenaustausch zwischen dem Bandlaufwerk 100 und einem Host (intern oder extern) zum Senden und Empfangen der Daten und zum Steuern des Betriebs des Bandlaufwerks 100 und Übermitteln des Zustands des Bandlaufwerks 100 an den Host bereitgestellt werden, wie einem Fachmann klar sein wird.
  • 2B veranschaulicht eine beispielhafte Bandkassette 150 aus dem Stand der Technik, welche gemäß einer Ausführungsform verwendet werden kann. Eine derartige Bandkassette 150 kann zusammen mit einem System wie demjenigen verwendet werden, das in 2A gezeigt ist. Wie gezeigt, enthält die Bandkassette 150 ein Gehäuse 152, ein Band 122 in dem Gehäuse 152 und einen nicht-flüchtigen Arbeitsspeicher 156, der mit dem Gehäuse 152 verbunden ist. In einigen Ansätzen kann der nicht-flüchtige Arbeitsspeicher 156 in dem Gehäuse 152 eingebettet sein, wie in 2B gezeigt. In weiteren Ansätzen kann der nicht-flüchtige Arbeitsspeicher 156 an der Innenseite oder Außenseite des Gehäuses 152 ohne Modifizierung des Gehäuses 152 angebracht sein. Zum Beispiel kann der nicht-flüchtige Arbeitsspeicher 156 in einem selbsthaftenden Aufkleber 154 eingebettet sein. In einer bevorzugten Ausführungsform kann der nicht-flüchtige Arbeitsspeicher 156 eine Flash-Speichereinheit, ROM-Einheit usw. sein, die in die Bandkassette 150 eingebettet oder mit deren Innenseite oder Außenseite verbunden ist. Auf den nicht-flüchtigen Arbeitsspeicher 156 kann über das Bandlaufwerk und das Band-Betriebssystem (die Treiber-Software) und/oder eine andere Einheit zugegriffen werden.
  • 3 zeigt in ausführlicher Form einen konzeptionellen Datenfluss 300 in einem Bandlaufwerk aus dem Stand der Technik mit K gleichzeitig beschriebenen Spuren über K Schreibkanäle. Der Datenfluss 300 enthält ein Übergeben von Hostdaten durch einen Fehlererkennungs-Encoder 302 mit zyklischer Blockprüfung (CRC), ein Komprimierungsmodul 304, ein optionales Verschlüsselungsmodul 306, einen Fehlerkorrekturcode- (ECC) Encoder 308 (der einen C1-Encoder und einen C2-Encoder enthält, angeordnet als C1/C2 oder C2/C1), und ein Bandlayoutmodul 310 gemäß einer Ausführungsform. Das Header-Einfügemodul 312 kann wie gezeigt positioniert sein, wobei es in das Bandlayoutmodul 310 einspeist, oder kann so positioniert sein, dass es in den ECC-Encoder 308 einspeist, wodurch die Headers in einer Ausführungsform eine bestimmte Menge von ECC-Verschlüsselung empfangen können. Das Bandlayoutmodul 310 splittet die Daten in einzelne Feeds für jeden Kanal 1, ..., K auf, die auf die Spuren des Bandmediums geschrieben werden sollen. Der Datenfluss 300 enthält auch eine Verwürfelung der Daten (Datenrandomisierung) 314,..., 316, Modulationscodierung 318,..., 320, Synchronisationseinfügung 326,..., 328 und Multiplexen 322,..., 324 für jede gleichzeitig geschriebene Spur 1,..., K.
  • In den folgenden Beschreibungen werden die meisten dieser Operationen nicht gezeigt, um die Beschreibungen einfach zu halten. Allerdings kann jede der Beschreibungen hierin zusätzliche, nicht dargestellte Operationen enthalten, wie dem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte. Die Anzahl von Spuren, die gleichzeitig beschrieben werden können, hängt von dem verwendeten Bandlaufwerk ab, wobei der Wert von K in einem Bereich von 1 bis 64 und darüber liegt.
  • 4 zeigt ein logisches Daten-Array 400 aus dem Stand der Technik, das gemäß einer Ausführungsform zum Organisieren von Daten in einem untergeordneten Daten-Set (SDS) verwendet werden kann. Wie gezeigt, enthält das Daten-Array eine Mehrzahl von Zeilen 402 und Spalten 404. Jede Zeile 402 in dem Daten-Array 400 ist eine Codewort-Verschachtelung (CWI), die eine Mehrzahl von C1-Codewörtern enthält Wenn die CWI vier verschachtelte Codewörter enthält, wird sie als CWI-4 bezeichnet. Die Daten im SDS werden durch eine zeilenübergreifende C1-Codierung geschützt 402 , um eine C1-Zeilenparität zu erzeugen (nicht gezeigt, da sie später modifiziert wird, um das Daten-Array 400 zu erzeugen), und durch eine spaltenübergreifende C2-Codierung 404 , um eine C2-Spaltenparität 408 zu erzeugen.
  • Wie gezeigt, können die Header 406 für jede Zeile 402 unter Verwendung eines C1-Codierungsschemas codiert werden, indem die C1-Parität (nur für die Daten in der Zeile 402 berechnet) modifiziert werden, um die Header 406 zum Erzeugen einer C1'-Parität 410 zu berücksichtigen. In dieser Ausführungsform werden die Header 406 durch eine Ein-Ebenen-ECC (nur C1'-Parität 410) geschützt, wogegen die Daten durch eine Zwei-Ebenen-ECC (C1'-Parität 410 und C2-Parität408) geschützt werden.
  • Jedes Daten-Set enthält mehrere untergeordnete Daten-Sets, und jedes untergeordnete Daten-Set kann durch ein logisches zweidimensionales Array dargestellt werden. Für gewöhnlich werden Hunderte von Headers einem einzelnen Daten-Set zugewiesen, da jedes Daten-Set mehrere SDSs enthält, und jeder Zeile (CWI) eines spaltencodierten SDS wird ein Header zugewiesen.
  • Derzeit verwendete lineare Bandlaufwerke schreiben und lesen gleichzeitig bis zu 32 Spuren in ein und/oder aus einem Magnetbandmedium. C1-Zeilen-Codewörter eines Produktcodes werden auf Byte-verschachtelte Art auf einzelne Spuren des Magnetbandmediums geschrieben. Aufgrund von Leistungsunterschieden der einzelnen Umsetzer, die die parallelen Spuren des Magnetbandmediums beschreiben und lesen, kann die unbearbeitete Fehlerrate einzelner Spuren von Spur zu Spur und zeitlich für jede einzelne Spur beträchtlich schwanken.
  • Um sich mit dieser Veränderlichkeit der unbearbeiteten Fehlerrate einzelner Spuren auseinandersetzen zu können, kann ein spurabhängiges Decodierungsschema gemäß einer Ausführungsform verwendet werden, das konfiguriert ist, um sich der zeitvariierenden Signalqualität aller Spuren anzupassen, die gleichzeitig aus dem Magnetbandmedium ausgelesen werden.
  • In einer weiteren Ausführungsform werden Löschzeiger (die signalisieren, dass ein C1-Codewort gelöscht werden sollte, statt sich auf die darin während der C2-Decodierung decodierten Bytes zu verlassen) auf eine Weise generiert, die die Spursignalqualität berücksichtigt. In einem Ansatz werden Löschzeiger zur C2-Decodierung aktiviert, wenn, und nur wenn C1-Codewörter mit einer relativ hohen Wahrscheinlichkeit eine große Anzahl von Byte-Fehlern enthalten. Jeder Löschzeiger kann einen ihm zugehörigen Koeffizienten aufweisen, wobei der Koeffizient eine Ansicht/Likelihood/Wahrscheinlichkeit angibt, dass der C2-Decoder die entsprechenden C1-Bytes als Löschungen behandeln und sich nicht auf die darin decodierten Informationen verlassen sollte.
  • Unter folgender Bezugnahme auf 5, wird ein System 500 gezeigt, das gemäß einer Ausführungsform für eine Decodierung auf Prioritätsgrundlage konfiguriert ist. Wie gezeigt, enthält das System 500 für jede der K Spuren (Spur 0, Spur 1, ..., Spur K-1) eine Lesekanalarchitektur 508, einen RLL-Decoder 506 (oder einen anderen geeigneten Decoder eines nach dem Stand der Technik bekannten Typs), einen C1-Decoder 504 und eine spurabhängige Löschkoeffizientenlogik 502. Diese verschiedenen Komponenten können in jeder Spur enthalten sein, oder einige oder alle der verschiedenen Komponenten können zentral zusammengefasst und für jede Spur durch eine zentrale Umsetzung davon umgesetzt werden.
  • Die spurabhängige Löschkoeffizientenlogik 502 kann Nebeninformationen über die Zuverlässigkeit von erkannten Bytes in C1-Codewörtern jeder Spur verwenden, um die Wahrscheinlichkeit zu bestimmen, dass ein C1-Codewort eine Anzahl von Byte-Fehlern hat, die einen vorbestimmten Schwellenwert überschreitet. In dieser Ausführungsform werden Löschzeiger zur C2-Decodierung verwendet, wenn, und nur wenn eine hohe Wahrscheinlichkeit besteht, dass ein oder mehrere C1-Codewörter in einer bestimmten Spur eine große Anzahl von Byte-Fehlern enthalten. Mit einer großen Anzahl von Byte-Fehlern ist gemeint, dass die Anzahl der Byte-Fehler die Menge an korrigierbaren Byte-Fehlern in einem einzelnen C1-Codewort überschreitet. Die Wahrscheinlichkeit einer Menge, um die die Anzahl von Byte-Fehlern in einem einzelnen C1-Codewort die maximale Anzahl an korrigierbaren Byte-Fehlern überschreitet, wird mit den Löschkoeffizienten wi, z.B. w0, w1, w2 für jeden Löschzeiger angegeben. Diese Entscheidung in Bezug auf die Likelihood oder Wahrscheinlichkeit der Menge, um die die Anzahl von Byte-Fehlern in einem einzelnen C1-Codewort die maximale Anzahl an korrigierbaren Byte-Fehlern überschreitet, kann auf Nebeninformationen beruhen. Diese Nebeninformationen stellen einen Einblick in die Zuverlässigkeit der erkannten Bytes in den C1-Codewörtern für jede Spur bereit, von Spur 0 bis Spur K-1.
  • Jeder Löschkoeffizient ist einem Löschkennzeichen für C2-Decodierung zugehörig, angegeben durch den C1-Decoder mit dem Löschkoeffizienten, wobei wi in einem Bereich von 0 bis 1 liegt, z.B. (0 ≤ wi ≤ 1). Der Löschkoeffizient wi kann mit der Anzahl von Byte-Fehlern in einem C1-Codewort in Wechselbeziehung stehen und somit eine Ansicht/Likelihood/Wahrscheinlichkeit darstellen, dass der C2-Decoder die entsprechenden C1-Bytes als Löschungen behandeln und sich nicht auf die darin decodierten Informationen verlassen sollte.
  • Jeder Löschkoeffizient kann so ausgewählt werden, dass er mit der Anzahl von Byte-Fehlern in einem C1-Codewort in Wechselbeziehung steht. Dies ist zum Beispiel der Fall, wenn die Nebeninformationen über Löschkoeffizienten aus der Anzahl von RLL-Decodierungsfehlern in einem C1-Codewort erhalten werden. Eine hohe Anzahl von RLL-Decodierungsfehlern in einem C1-Codewort gibt eine hohe Anzahl von tatsächlichen Byte-Fehlern in einem C1-Codewort an. In diesem Fall können alle Löschkoeffizienten in einem C1-Codewort denselben Wert haben, und sie sind in etwa proportional zu der Anzahl von Byte-Fehlern in einem C1-Codewort. Löschkoeffizienten können aber auch auf andere Arten erhalten werden, wie beispielsweise aus einem SNR, Messungen von mittleren quadratischen Fehlern (MSE), einem einzelnen RLL-Decodierungsfehler usw., wobei die Löschkoeffizienten jedes Bytes in einem C1-Codewort verschieden sein und die Wahrscheinlichkeit wiedergeben können, dass ein bestimmtes Byte fehlerhaft sein kann.
  • Die Berechnung der Löschkoeffizienten wi in der spurabhängigen Löschkoeffizientenlogik 502 kann Nebeninformationen über die Zuverlässigkeit von erkannten Bytes in C1-Codewörtern jeder Spur verwenden. Jede potenzielle Quelle von Nebeninformationen kann verwendet werden, wie beispielsweise Statistiken zur Kanal/Spur-Leistung, die durch die Firmware 514 überwacht werden kann, z.B. Kalibrierungsdaten, Laufzeitstatistiken usw.; Statistiken des C1-Decoders 504, z.B. eine Anzahl von unkorrigierbaren Codewörtern nach der C1-Decodierung; Kennzahlen des Lesekanals 508, z.B. MSE, SNR usw.; Kennzahlen des RLL-Decoders 506, z.B. eine Anzahl von Fehlererkennungs-Kennzeichen usw. Selbstverständlich können andere Quellen von Nebeninformationen verwendet werden, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • In einer Ausführungsform können die Löschkoeffizienten in einer Bestimmung verwendet werden, um eine Löschdecodierung auf einer Grundlage pro decodiertem C1-Codewort zu ermöglichen. Alle gelöschten Bytes eines C1-Zeilencodeworts können dann als Löschungen während einer Fehler-und-Lösch-Decodierung von C2-Spaltencodewörtern verwendet werden. Wenn die Löschkoeffizienten wi, aller Bytes in einem decodierten C1-Zeilencodewort berechnet und/oder geschätzt worden sind, sind N1 Löschkoeffizienten in dem C1-Zeilencodewort vorhanden, einer für jedes Byte in dem Codewort.
  • Diese Löschkoeffizienten wi können über alle N1 decodierten Bytes des C1-Codeworts summiert werden (zu beachten ist: ein C1-Codewort hat N1 Bytes), um die Summe S zu erhalten, wobei S = 1 N 1 w i .
    Figure DE102016220802B4_0001
    In Reaktion auf eine Bestimmung, dass diese Summe S größer als ein vorbestimmter konfigurierbarer Schwellenwert ist, können alle N1 Bytes des C1-Codeworts gelöscht werden (z.B. wird der Löschzeiger für das decodierte C1-Codewort aktiviert, das dann zum Löschen einer Zeile von decodierten C1-Bytes während der Fehler-und-Lösch-Decodierung für C2-Spalten verwendet wird).
  • Der vorbestimmte konfigurierbare Schwellenwert kann jeden positiven Wert haben wie beispielsweise 0,1, 0,2, 0,25, 0,5, 0,6, 0,75, 1,0, 2,0, 5,0, 10,0 usw., der auf Grundlage einer gewünschten Menge von Fehlern in einem Codewort bestimmt wird, die verursacht, dass ein Löschzeiger gesetzt wird, und einen Wert für einen typischen Löschkoeffizienten wi.
  • In einer Ausführungsform, z.B. K = 32, können in dem System 500 32 Spuren vorhanden sein. In einigen anderen Ausführungsformen kann K gleich 16, 64 oder eine andere positive Ganzzahl sein.
  • Nachdem die Löschzeiger entweder aktiviert und gesetzt oder deaktiviert und nicht verwendet wurden, werden die C1-Codewörter oder die zur Löschung aktivierten C1-Codewörter (mit mindestens einem C1-Codewort, dessen Löschzeiger aktiviert ist) an eine Vorrichtung zum Aufheben der Verschachtelung (De-Interleaver) / einen Puffer 510 übergeben, um die Verschachtelung der Daten in den codierten Daten rückgängig zu machen und die Daten vor dem Übergeben der Daten an den C2-Decoder 512 für deren C2-Decodierung zu speichern. Die C2-Decodierung kann eine Nur-Fehler-Decodierung sein (in Reaktion darauf, dass die Löschzeiger nicht aktiviert sind), oder eine Fehler-und-Lösch-Decodierung (in Reaktion darauf, dass die Löschzeiger aktiviert sind, wie in 5 durch die ausgegrauten Zeilen im Array im C2-Decoder 512 gezeigt).
  • In einer Ausführungsform kann die spurabhängige Löschkoeffizientenlogik 502 mit der Firmware 514 eines Bandlaufwerks, einer Bandbibliothek oder einem anderen geeigneten System in Datenaustausch stehen, das fähig ist, die spurabhängige Löschkoeffizientenlogik 502 vor/während/nach Prozeduren zum Aktivieren eines Löschens anzuweisen.
  • Die spurabhängige Löschkoeffizientenlogik 502 ist konfiguriert, um Löschkoeffizienten wi mit (0,0 ≤ wi ≤ 1,0) für jeden einzelnen Löschzeiger zur C2-Decodierung zu berechnen. Die Löschkoeffizienten wi können mit der Anzahl von Byte-Fehlern in C1-Codewörtern in Wechselbeziehung stehen und somit eine Wahrscheinlichkeit und/oder Ansicht und/oder Likelihood darstellen, dass der C2-Decoder 512 die entsprechenden C1-Bytes als Löschungen behandeln sollte. Bei diesem Ansatz gibt jeder Löschkoeffizient wi eine Wahrscheinlichkeit wieder, dass ein bestimmtes Byte in einem C1-Codewort fehlerhaft ist.
  • Daher können diese Koeffizienten zum Bestimmen einer Priorität für eine C2-Decodierung verwendet werden, die einen Fehler-und-Lösch-Decodieralgorithmus ausführt, der von allen Löschzeigern und Löschkoeffizienten abhängt, die in einem C2-Codewort platziert sind.
  • In einer Ausführungsform ist die spurabhängige Löschkoeffizientenlogik 502 konfiguriert, um eine Löschkoeffizientenliste W zu erstellen, die die einzelnen Löschkoeffizienten wi enthält, die allen Symbolen in einem C1-Codewort (und daher in allen C2-Codewörtern) zugehörig sind.
  • Der C1-Decoder 504 und der C2-Decoder 512 sind konfiguriert, um entweder einen RS(N,K)-Code mit einem mindesten Hamming-Abstand dmin = N-K+1 oder einen Blockcode mit mindestem Hamming-Abstand dmin zu verwenden. Zum Beispiel kann der Code ein C2-Spaltencode in einem Produktcode sein.
  • Eine Löschkoeffizientenliste W kann gemäß einer Ausführungsform durch die spurabhängige Löschkoeffizientenlogik 502 erstellt werden. Die Löschkoeffizientenliste W enthält N Koeffizienten, die in einer monoton zunehmenden Anordnung angeordnet sind, z.B. W = {w1, w2, w3, ..., wN}, wobei 0,0 ≤ wi ≤1,0 und wi ≤ wi+1 ist. In einem weiteren Ansatz können die Koeffizienten wi auf q-Ebene quantisiert werden, aber dies ist nicht in allen Ausführungsformen notwendig.
  • In der Löschkoeffizientenliste W entspricht gemäß einer Ausführungsform ein Löschkoeffizient von Null, z.B. wi = 0, einem Fall, in dem kein Löschzeiger ausgelöst wurde, z.B. wird ein entsprechendes Symbol aus einer erfolgreichen C1-Decodierung in einem vorherigen Decodierschritt erhalten Eine zweite Löschkoeffizientenliste W' wird aus der anfänglichen Löschkoeffizientenliste W durch Entfernen aller Löschkoeffizienten mit einem Wert von Null erhalten, z.B. durch Entfernen von allen wi = 0. In Reaktion darauf, dass sich in der zweiten Löschkoeffizientenliste W' mehrere Koeffizienten befinden, die max{W'} entsprechen, kann ein Koeffizient wi frei wählbar ausgesucht werden, sodass wi = max {W'} ist, und die Verarbeitung kann in der Schleife fortgesetzt werden, bis die Anzahl von Löschungen pro Codewort E gleich einem adaptiven Limit einer Anzahl von gelöschten Symbolen L ist, z.B. |E| = L oder |W'| = 0.
  • In einer Ausführungsform entspricht ein Löschkoeffizient mit einem Wert von 1, z.B. wi = 1 einem Fall, in der ein Löschzeiger ohne ein zugehöriges Symbol ausgelöst wird und daher in der nachfolgenden Decodierung gelöscht werden muss, da kein Bytewert verfügbar ist, auf dem eine Decodierung beruhen könnte.
  • Eine dritte Löschkoeffizientenliste W" = {wj, wj+1, wj+2, ..., wm} wird aus der Löschliste W durch Ausschließen aller Koeffizienten erhalten, die Null oder eins sind, wobei 1 ≤ j und m ≤ N ist.
  • Eine Decodierlogik auf Prioritätsgrundlage 516 des C2-Decoders 512 ist konfiguriert, um zu bestimmen, ob eine Fehler-und-Lösch-Decodierung während der C2-Decodierung der Codewörter verwendet werden soll, die für den C2-Decoder von der Vorrichtung zum Aufheben der Verschachtelung/dem Puffer 510 bereitgestellt werden. Diese Bestimmung kann auf mehreren Faktoren beruhen, einschließlich, aber nicht darauf beschränkt, der Löschkoeffizientenliste W, der Anzahl von zu löschenden Symbolen L, dem mindesten Hamming-Abstand dmin, der Anzahl von Symbolen in einem Codewort N und der Mindestspanne M, die für die Korrektur von mindestens untersten (M/2) Symbolen reserviert sind, wie später ausführlich beschrieben.
  • Gemäß einer Ausführungsform kann ein Bandlaufwerk einen Magnetkopf mit einer Mehrzahl von Lesesensoren enthalten. Jeder Lesesensor ist konfiguriert, um Daten gleichzeitig aus einer Spur eines Magnetbandmediums auszulesen, wodurch gestattet wird, dass eine Mehrzahl von Spuren gleichzeitig aus dem Magnetbandmedium ausgelesen werden kann, wobei die Anzahl, die gleichzeitig ausgelesen werden kann, gleich der Anzahl von Lesesensoren des Magnetkopfs ist. Selbstverständlich können einige Lesesensoren konfiguriert werden, um Servospuren zur Kopfausrichtung und/oder für andere Zwecke zu lesen, aber hinsichtlich dieser Beschreibungen wird angenommen, dass die Lesesensoren fähig sind, Daten aus dem Magnetbandmedium auszulesen.
  • Das Bandlaufwerk enthält auch einen Hardware-Prozessor und eine Logik, die in den Hardware-Prozessor integriert und/oder von diesem ausführbar ist. Der Hardware-Prozessor kann eine Hardware-Verarbeitungseinheit und/oder Schaltung sein wie beispielsweise eine Zentraleinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) usw., Kombinationen davon oder eine andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist. Die Logik kann in Hardware, Software oder einer Kombination davon umgesetzt werden. Die Logik ist konfiguriert, um unter Verwendung der Mehrzahl von Lesesensoren codierte Daten von einer Mehrzahl von Spuren eines Magnetbandmediums gleichzeitig zu empfangen. Die Anzahl von Spuren, die gleichzeitig gelesen werden können, wird durch die Anzahl von Lesesensoren des Magnetkopfs bestimmt. Die Logik ist ebenfalls konfiguriert, um eine spurabhängige Löschdecodierung an den codierten Daten auf Grundlage einer Erkennung von einem oder mehreren zeitvariierenden Signalqualitätsproblemen auszuführen, die mindestens einer der Mehrzahl von Spuren zugehörig sind, die gleichzeitig aus dem Magnetbandmedium ausgelesen werden, wobei die Decodierung auf Prioritätsgrundlage auf Koeffizienten beruht, die jedem Löschzeiger zugewiesen sind.
  • Unter folgender Bezugnahme auf 6 wird eine Löschkoeffizientenliste W 600 gezeigt, in der die Koeffizienten wi, für jedes Symbol in einem Codewort gemäß ihren jeweiligen Koeffizientenwerten angeordnet worden sind, wobei Koeffizienten von Null (die angeben, dass das zugehörige Symbol nicht gelöscht werden darf) auf der linken Seite und Koeffizienten von Eins (die angeben, dass das zugehörige Symbol zu löschen ist) auf der rechten Seite sind, z.B. in einer monoton ansteigenden Anordnung. Da jeder Koeffizient einem Symbol in dem Codewort zugehörig ist, kann angenommen werden, dass diese Symbole zusammen mit den Koeffizienten logisch angeordnet sind.
  • Unter Verwendung der Löschkoeffizientenliste W 600 kann die adaptive Anzahl von gelöschten Symbolen L auf Grundlage des mindesten Hamming-Abstands dmin, der Länge des Codeworts N und der Mindestspanne M berechnet werden, die für die Korrektur von mindestens untersten (M/2) Symbolen reserviert sind.
  • Unter weiterer Bezugnahme auf 6 kann gemäß einer Ausführungsform die Anzahl von gelöschten Symbolen L gemäß folgender Gleichung berechnet werden, L = D + H = D + Untergrenze ((F-D) B/(A+B)), was als L = f(dmin,M,N,W) angegeben werden kann.
  • Die maximale Anzahl von gelöschten Symbolen F ist gleich dmin-1-M, und der Ausdruck D wird als D = min{F, N-m} definiert, wobei D die Gesamtanzahl von Symbolen in einem C1-Codewort mit dem Löschkoeffizienten 1 ist. Es wurde angenommen, dass D kleiner oder gleich F ist. Wenn D > F, deklariert der Decoder entweder einen Decodierungsfehler oder versucht, F oder mehr gelöschte Bytes zu korrigieren, indem das Risiko einer höheren Wahrscheinlichkeit einer Fehlkorrektur akzeptiert wird. Die maximale Anzahl von gelöschten Bytes, die korrigiert werden kann, ist F+M = dmin-1. Ferner ist die Summe der Ausdrücke A+B die Summe der Koeffizienten in der dritten Löschkoeffizientenliste W", wobei der Wert der Koeffizienten zwischen 0 und 1 liegt, z.B. 0 < wi < 1, wobei A+B= i = j m w i ,
    Figure DE102016220802B4_0002
    wobei B die Summe der Koeffizienten in dem Bereich ist, der durch F definiert wird, wobei der Wert der Koeffizienten nicht gleich 1 ist, z.B. wi ≠ 1, wobei B = i = N F + 1 N D w i .
    Figure DE102016220802B4_0003
    Die Anzahl der gelöschten Symbole L ist adaptiv, d.h. sie hängt von Kanalbedingungen ab, z.B. unter anderen Variablen von den Löschkoeffizienten wi.
  • Unter folgender Bezugnahme auf 7 wird ein Verfahren 700 gemäß einer Ausführungsform gezeigt. Das Verfahren 700 kann gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 6 veranschaulicht wurden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 7 beschrieben werden, im Verfahren 700 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 700 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 700 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mit mindestens einer Hardware-Komponente, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 700 verwendet werden. Zu veranschaulichenden Prozessoren gehören eine CPU, eine ASIC, ein FPDA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Im Verfahren 700 ist W die Löschliste, die die Löschkoeffizienten aufweist, die allen Symbolen in einem C2-Codewort entsprechen, das durch die spurabhängige Löschkoeffizientenlogik mit einem C2-Code generiert wurde, der ein (N,K) RS-Code ist, |W| = N, W' ist die zweite Löschliste mit allen Nicht-Null-Koeffizienten aus W, wobei |W'| = Anzahl von Koeffizienten in W', E ist die Löschliste von zu löschenden Symbolen, |E| = Anzahl von Einträgen in E, und M ist die Mindestspanne, die für die Korrektur von mindestens untersten (M/2) Symbolen reserviert ist.
  • Wie in 7 gezeigt, kann das Verfahren 700 mit einer Operation 702 beginnen, wobei eine Löschkoeffizientenliste W für ein Codewort erstellt wird. Die Löschkoeffizientenliste enthält alle Löschkoeffizienten für jedes decodierte Symbol in dem Codewort, wobei jeder Löschkoeffizient ein Messwert für die Zuverlässigkeit des zugehörigen decodierten Symbols des Codeworts ist. Außerdem wird die Löschliste E auf „Leer“ gesetzt. Diese Löschliste wird während des Verfahrens 700 aufgefüllt.
  • In einer Operation 704 wird eine zweite Löschkoeffizientenliste W' auf Grundlage der Löschkoeffizientenliste W erstellt. Die zweite Löschkoeffizientenliste ist gleich allen Löschkoeffizienten aus der Löschkoeffizientenliste abzüglich aller Löschkoeffizienten gleich Null, z.B. W' = W\ {wi | wi = 0}.
  • In einer Operation 706 wird eine Anzahl von Symbolen des zu löschenden Codeworts L auf Grundlage des mindesten Hamming-Abstands dmin, einer Länge des Codeworts N, einer Mindestspanne M, die für die Korrektur von mindestens untersten (M/2) Symbolen reserviert ist, und der Löschkoeffizientenliste (W) berechnet, wobei L = f(dmin,M,N,W).
  • In einer Ausführungsform ist L = D + H = D + Untergrenze ((F-D) B/(A+B)). Die maximale Anzahl von gelöschten Symbolen F ist gleich dmin-1-M, und der Ausdruck D wird als D = min{F, N-m} definiert, wobei D die Gesamtanzahl von Symbolen in einem C1-Codewort mit dem Löschkoeffizienten 1 ist. Es wurde angenommen, dass D kleiner oder gleich F ist. Wenn D > F, deklariert der Decoder entweder einen Decodierungsfehler oder versucht, F oder mehr gelöschte Bytes zu korrigieren, indem das Risiko einer höheren Wahrscheinlichkeit einer Fehlkorrektur akzeptiert wird. Die maximale Anzahl von gelöschten Bytes, die korrigiert werden kann, ist F+M = dmin-1. Ferner ist die Summe der Ausdrücke A+B die Summe der Koeffizienten in der dritten Löschkoeffizientenliste W", wobei der Wert der Koeffizienten zwischen 0 und 1 liegt, z.B. 0 < wi ≤ 1, wobei A+B= i = j m w i ,
    Figure DE102016220802B4_0004
    wobei B die Summe der Koeffizienten in dem Bereich ist, der durch F definiert wird, wobei der Wert der Koeffizienten nicht gleich 1 ist, z.B. wi ≠ 1, wobei B = i = N F + 1 N D w i .
    Figure DE102016220802B4_0005
  • In einer Operation 708 wird bestimmt, ob die Anzahl von Löschkoeffizienten (und daher eine Anzahl von zugehörigen Symbolen) in der zweiten Löschkoeffizientenliste größer als Null ist, z.B. |W'| > 0. In Reaktion auf eine Bestimmung, dass die Anzahl von Löschkoeffizienten in der zweiten Löschkoeffizientenliste größer als Null ist, fährt das Verfahren 700 mit einer Operation 710 fort; andernfalls springt das Verfahren 700 weiter zu Operation 718.
  • In der Operation 710 wird ein Löschkoeffizient mit einem maximalen Wert ausgewählt, z.B. wi = max{W'}. In einer Operation 712 wird aus der zweiten Löschkoeffizientenliste dieser Löschkoeffizient wi entfernt, z.B. W' = W' \ {wi}. Anschließend wird in einer Operation 714 das Symbol, das diesem Löschkoeffizienten wi entspricht, zu der Löschliste E hinzugefügt, z.B. E = E ∪ {wi}.
  • In einer Operation 716 wird bestimmt, ob die Anzahl von Symbolen in der Löschliste E gleich der Anzahl von zu löschenden Symbolen L ist. In Reaktion auf eine Bestimmung, dass die Anzahl von Symbolen in der Löschliste E gleich der Anzahl von zu löschenden Symbolen L ist, fährt das Verfahren 700 mit einer Operation 718 fort; andernfalls kehrt das Verfahren 700 zur Operation 708 zurück, sodass weitere Symbole zu der Löschliste E hinzugefügt werden können.
  • In der Operation 718 wird die C2-Decodierung an dem Codewort unter Verwendung vom Löschzeigern ausgeführt, die Löschkoeffizienten aus der Löschliste E zugehörig sind, sodass die Symbole, die den Einträgen in der Löschliste E entsprechen, während der C2-Fehler-und-Lösch-Decodierung gelöscht werden.
  • Gemäß dem Verfahren 700 kann eine vorbestimmte Anzahl von Symbolen zu der Löschliste E hinzugefügt und unter Verwendung der Löschzeiger, die vom C1-Decoder bereitgestellt werden, zur C2-Fehler-und-Lösch-Decodierung gesendet werden. Die ausgewählten Symbole werden insgesamt den höchsten Löschkoeffizienten zugeordnet und sind daher die wahrscheinlichsten Kandidaten, die in der C2-Decodierung zu löschen sind, da die Konfidenz in die decodierten Symbole für diese Symbole am niedrigsten ist.
  • Unter folgender Bezugnahme auf 8 wird ein Verfahren 800 gemäß einer Ausführungsform gezeigt. Das Verfahren 800 kann gemäß der vorliegenden Erfindung in jeder der Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 6 veranschaulicht wurden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 8 beschrieben werden, im Verfahren 800 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 800 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 800 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mit mindestens einer Hardware-Komponente, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 800 verwendet werden. Zu veranschaulichenden Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Im Verfahren 800 ist W die Löschliste mit den Löschkoeffizienten, die allen Symbolen in einem C2-Codewort entsprechen, das durch eine spurabhängige Löschkoeffizientenlogik mit einem C2-Code generiert wurde, der ein (N,K) RS-Code ist, |W| = N, E ist die Löschliste von zu löschenden Symbolen, |E| = Anzahl von Einträgen in E, M ist die Mindestspanne, die für die Korrektur von mindestens untersten (M/2) Symbolen reserviert ist, und die Löschkoeffizienten sind auf drei Ebenen quantisiert, sodass wi ∈ {0, g1, 1}. In dieser Ausführungsform ist die Liste aller Koeffizienten W in drei sich gegenseitig ausschließende Sets partitioniert: P0, P1 und P2, wobei W = P0 ∪ P1 ∪ P2.
  • Gemäß einer Ausführungsform ist P0 das Set aller Löschkoeffizienten wi mit einem Löschkoeffizienten von Null, der angibt, dass vom C1-Decoder (C1-Decodierung erfolgreich) kein Löschkennzeichen ausgelöst wurde, z.B. P0 = {wi ∈ W| wi = 0}, P1 ist das Set aller Löschkoeffizienten wi, die dem Fall entsprechen, in dem der C1-Decoder ein Löschkennzeichen ausgelöst hat (ein C1-Decodierungsfehler), z.B. {wi, ∈ W | wi = g1}, und P2 ist das Set aller Löschkoeffizienten w, mit einem Löschkoeffizienten von Eins, der angibt, dass entweder ein Löschkennzeichen durch den RLL-Decoder ausgelöst wurde oder kein decodiertes C1-Codewort durch den C1-Decoder bereitgestellt wurde, z.B. P2 = {wi ∈ W| wi = 1}.
  • Wie in 8 gezeigt, kann das Verfahren 800 mit einer Operation 802 beginnen, wobei eine Löschkoeffizientenliste W mit den Löschkoeffizienten für alle decodierten Symbole eines Codeworts erstellt wird. Außerdem wird die Löschliste E auf „Leer“ gesetzt. Diese Löschliste wird während des Verfahrens 800 aufgefüllt.
  • In einer Operation 804 wird eine Anzahl von Symbolen des zu löschenden Codeworts L auf Grundlage des mindesten Hamming-Abstands dmin, einer Länge des Codeworts N, einer Mindestspanne M, die für die Korrektur von mindestens untersten (M/2) Symbolen reserviert ist, und der Löschkoeffizientenliste (W) berechnet, wobei L = f(dmin,M,N,W).
  • In einer Ausführungsform ist L = D + H = D + Untergrenze ((F-D) B/(A+B)). Die maximale Anzahl von gelöschten Symbolen F ist gleich dmin-1-M, und der Ausdruck D wird als D = min{F, N-m} definiert, wobei D die Gesamtanzahl von Symbolen in einem C1-Codewort mit dem Löschkoeffizienten 1 ist. Es wurde angenommen, dass D kleiner oder gleich F ist. Wenn D > F, deklariert der Decoder entweder einen Decodierungsfehler oder versucht, F oder mehr gelöschte Bytes zu korrigieren, indem das Risiko einer höheren Wahrscheinlichkeit einer Fehlkorrektur akzeptiert wird. Die maximale Anzahl von gelöschten Bytes, die korrigiert werden kann, ist F+M = dmin-1. Ferner ist die Summe der Ausdrücke A+B die Summe der Koeffizienten in der dritten Löschkoeffizientenliste W", wobei der Wert der Koeffizienten zwischen 0 und 1 liegt, z.B. 0 < wi ≤ 1, wobei A+B= i = j m w i ,
    Figure DE102016220802B4_0006
    wobei B die Summe der Koeffizienten in dem Bereich ist, der durch F definiert wird, wobei der Wert der Koeffizienten nicht gleich 1 ist, z.B. wi ≠ 1, wobei B = i = N F + 1 N D w i .
    Figure DE102016220802B4_0007
  • In der Operation 806 werden P1 und P2 berechnet, wobei P1 alle Löschkoeffizienten (und zugehörigen Symbole) enthält, die einer Situation entsprechen, in der der C1-Decoder ein Löschkennzeichen ausgelöst hat (ein C 1-Decodierungsfehler), z.B. {wi, ∈ W| wi = g1}. Des Weiteren enthält P2 das Set aller Löschkoeffizienten wi mit einem Löschkoeffizienten von Eins, der angibt, dass entweder ein Löschkennzeichen durch den RLL-Decoder ausgelöst wurde oder kein decodiertes C1-Codewort durch den C1-Decoder bereitgestellt wurde, z.B. P2 = {wi ∈ W| wi = 1}.
  • In der Operation 808 wird bestimmt, ob die Anzahl von Symbolen in P2 größer als die Anzahl von zu löschenden Symbolen L ist. In Reaktion auf eine Bestimmung, dass die Anzahl von Symbolen in P2 größer als die Anzahl von zu löschenden Symbolen L ist, springt das Verfahren 800 zur Operation 816; andernfalls fährt Verfahren 800 mit der Operation 810 fort.
  • In der Operation 810 wird bestimmt, ob die Summe der Anzahl von Symbolen in P1 und P2 größer als die Anzahl von zu löschenden Symbolen L ist. In Reaktion auf eine Bestimmung, dass die Summe der Anzahl von Symbolen in P1 und P2 größer als die Anzahl von zu löschenden Symbolen L ist, springt das Verfahren 800 zur Operation 814; andernfalls fährt Verfahren 800 mit der Operation 812 fort.
  • In einer Operation 812 wird die Löschliste E so gesetzt, dass sie die Vereinigung von P1 und P2 ist.
  • In einer Operation 814 wird die Löschliste E auf P2 gesetzt.
  • Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Speichermedien) mit einem computerlesbaren Programmcode darauf enthalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • In der Operation 816 wird die C2-Decodierung an dem Codewort unter Verwendung vom Löschzeigern ausgeführt, die Löschkoeffizienten aus der Löschliste E zugehörig sind, sodass die Symbole, die den Einträgen in der Löschliste E entsprechen, während der C2-Fehler-und-Lösch-Decodierung gelöscht werden.
  • In einer alternativen Ausführungsform des Verfahrens 800 können genau L Symbole gelöscht werden, wobei die L Symbole die höchsten entsprechenden Löschkoeffizienten in der Löschkoeffizientenliste W haben.
  • Unter folgender Bezugnahme auf 9 wird ein Verfahren 900 gemäß einer Ausführungsform gezeigt. Das Verfahren 900 kann gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 6 veranschaulicht wurden.
  • Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 9 beschrieben werden, im Verfahren 900 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 900 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 900 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder Module, die in Hardware und/oder Software umgesetzt sind und bevorzugt mit mindestens einer Hardware-Komponente, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 900 verwendet werden. Zu veranschaulichenden Prozessoren gehören eine CPU, eine ASIC, ein FPGA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Im Verfahren 900 ist W die Löschliste mit den Löschkoeffizienten, die allen Symbolen in einem C2-Codewort entsprechen, das durch eine spurabhängige Löschkoeffizientenlogik mit einem C2-Code generiert wurde, der ein (N,K) RS-Code ist, |W| = N, E ist die Löschliste von zu löschenden Symbolen, |E| = Anzahl von Einträgen in E, M ist die Mindestspanne, die für die Korrektur von mindestens untersten (M/2) Symbolen reserviert ist, und die Löschkoeffizienten sind auf vier Ebenen quantisiert, sodass wi ∈ {0, g1, g2, 1}. In dieser Ausführungsform ist die Liste aller Koeffizienten W in vier sich gegenseitig ausschließende Sets partitioniert: P0, P1 P2 und P3, wobei W = P0 ∪ P1 ∪ P2 ∪ P3.
  • Gemäß einer Ausführungsform ist P0 das Set aller Löschkoeffizienten wi mit einem Löschkoeffizienten von Null, der angibt, dass kein Löschkennzeichen durch den C1-Decoder ausgelöst wurde (C1-Decodierung erfolgreich), z.B. P0 = {wi ∈ W| wi = 0}, P1 ist das Set aller Löschkoeffizienten wi, die einem Fall entsprechen, in dem der C1-Decoder ein Löschkennzeichen ausgelöst hat (ein C1-Decodierungsfehler), z.B. {wi, ∈ W| wi = g1}, P2 ist das Set aller Löschkoeffizienten wi, die einem Fall entsprechen, in dem der RLL-Decoder ein Löschkennzeichen ausgelöst hat (einen RLL-Decodierungsfehler), z.B. {wi ∈ W| wi = g2}, und P3 ist das Set aller Löschkoeffizienten wi mit einem Löschkoeffizienten von Eins, der angibt, das kein decodiertes C1-Codewort durch den C1-Decoder bereitgestellt wurde, z.B. P3 = {wi, ∈ W| wi = 1}.
  • Wie in 9 gezeigt, kann das Verfahren 900 mit einer Operation 902 beginnen, wobei eine Löschkoeffizientenliste W mit den Löschkoeffizienten für alle decodierten Symbole eines Codeworts erstellt wird. Außerdem wird die Löschliste E auf „Leer“ gesetzt. Diese Löschliste wird während des Verfahrens 900 aufgefüllt.
  • In einer Operation 904 wird eine Anzahl von Symbolen des zu löschenden Codeworts L auf Grundlage des mindesten Hamming-Abstands dmin, einer Länge des Codeworts N, einer Mindestspanne M, die für die Korrektur von mindestens untersten (M/2) Symbolen reserviert ist, und der Löschkoeffizientenliste (W) berechnet, wobei L = f(dmin,M,N,W).
  • In einer Ausführungsform ist L = D + H = D + Untergrenze ((F-D) B/(A+B)). Die maximale Anzahl von gelöschten Symbolen F ist gleich dmin-1-M, und der Ausdruck D wird als D = min{F, N-m} definiert, wobei D die Gesamtanzahl von Symbolen in einem C1-Codewort mit dem Löschkoeffizienten 1 ist. Es wurde angenommen, dass D kleiner oder gleich F ist. Wenn D > F, deklariert der Decoder entweder einen Decodierungsfehler oder versucht, F oder mehr gelöschte Bytes zu korrigieren, indem das Risiko einer höheren Wahrscheinlichkeit einer Fehlkorrektur akzeptiert wird. Die maximale Anzahl von gelöschten Bytes, die korrigiert werden kann, ist F+M = dmin-1. Ferner ist die Summe der Ausdrücke A+B die Summe der Koeffizienten in der dritten Löschkoeffizientenliste W", wobei der Wert der Koeffizienten zwischen 0 und 1 liegt, z.B. 0 < wi ≤ 1, wobei A+B= i = j m w i ,
    Figure DE102016220802B4_0008
    wobei B die Summe der Koeffizienten in dem Bereich ist, der durch F definiert wird, wobei der Wert der Koeffizienten nicht gleich 1 ist, z.B. wi ≠ 1, wobei B = i = N F + 1 N D w i .
    Figure DE102016220802B4_0009
  • In einer Operation 906 werden P1, P2 und P3 berechnet, wobei P1 alle Löschkoeffizienten (und zugehörigen Symbole) enthält, die einer Situation entsprechen, in der der C-Decoder ein Löschkennzeichen ausgelöst hat (ein C1-Decodierungsfehler), z.B. {wi ∈ W| wi = g1}. Ferner enthält P2 das Set aller Löschkoeffizienten wi, die einem Fall entsprechen, in dem der RLL-Decoder ein Löschkennzeichen ausgelöst hat (ein RLL-Decodierungsfehler), z.B. {wi ∈ W| wi = g2}. Ferner enthält P3 das Set aller Löschkoeffizienten wi mit einem Löschkoeffizienten von Eins, der angibt, dass kein decodiertes C1-Codewort durch den C1-Decoder bereitgestellt wurde, z.B. P3 = {wi ∈ W| wi = 1}.
  • In einer Operation 908 wird bestimmt, ob die Summe der Anzahl von Symbolen in P2 und P3 größer als die Anzahl von zu löschenden Symbolen L ist. In Reaktion auf eine Bestimmung, dass die Summe der Anzahl von Symbolen in P2 und P3 größer als die Anzahl von zu löschenden Symbolen L ist, springt das Verfahren 900 zu einer Operation 916; andernfalls fährt das Verfahren 900 mit einer Operation 910 fort.
  • In der Operation 910 wird bestimmt, ob die Summe der Anzahl von Symbolen in P1, P2 und P3 größer als die Anzahl von zu löschenden Symbolen L ist. In Reaktion auf eine Bestimmung, dass die Summe der Anzahl von Symbolen in P1, P2 und P3 größer als die Anzahl von zu löschenden Symbolen L ist, springt das Verfahren 900 zu einer Operation 914; andernfalls fährt das Verfahren 900 mit einer Operation 912 fort.
  • In der Operation 912 wird die Löschliste E so gesetzt, dass sie die Vereinigung von P1, P2 und P3 ist.
  • In der Operation 914 wird die Löschliste E so gesetzt, dass sie die Vereinigung von P2 und P3 ist.
  • In einer Operation 916 wird die Löschliste E auf P3 gesetzt.
  • In einer Operation 918 wird die C2-Decodierung an dem Codewort unter Verwendung vom Löschzeigern ausgeführt, die Löschkoeffizienten aus der Löschliste E zugehörig sind, sodass die Symbole, die den Einträgen in der Löschliste E entsprechen, während der C2-Fehler-und-Lösch-Decodierung gelöscht werden.
  • In einer alternativen Ausführungsform des Verfahrens 900 können genau L Symbole gelöscht werden, wobei die L Symbole die höchsten entsprechenden Löschkoeffizienten in der Löschkoeffizientenliste W haben.
  • Unter folgender Bezugnahme auf 10 wird ein Verfahren 1000 gemäß einer Ausführungsform gezeigt. Das Verfahren 1000 kann gemäß der vorliegenden Erfindung in allen Umgebungen ausgeführt werden, die unter anderem in verschiedenen Ausführungsformen in 1 bis 6 veranschaulicht wurden. Selbstverständlich können mehr oder weniger Operationen als diejenigen, die speziell in 10 beschrieben werden, im Verfahren 1000 enthalten sein, wie einem Fachmann beim Lesen der vorliegenden Beschreibungen klar sein dürfte.
  • Jeder der Schritte des Verfahrens 1000 kann von jeder geeigneten Komponente der Betriebsumgebung ausgeführt werden. Zum Beispiel kann das Verfahren 1000 in verschiedenen Ausführungsformen teilweise oder ganz von einem Controller, einem Prozessor, einem Bandlaufwerk oder einer anderen Einheit mit einem oder mehreren integrierten Prozessoren ausgeführt werden. Der Prozessor, z.B. eine oder mehrere Verarbeitungsschaltungen, ein oder mehrere Chips und/oder Module, die in Hardware und/oder Software umgesetzt sind, und bevorzugt mit mindestens einer Hardware-Komponente, können in jeder Einheit zum Ausführen von einem oder mehreren Schritten des Verfahrens 1000 verwendet werden. Zu veranschaulichenden Prozessoren gehören eine CPU, eine ASIC, ein FPDA usw., Kombinationen davon oder jede andere geeignete Datenverarbeitungseinheit, die nach dem Stand der Technik bekannt ist, sie sind aber nicht darauf beschränkt.
  • Wie in 10 gezeigt, kann das Verfahren 1000 mit einer Operation 1002 beginnen, in der codierte Daten, die gleichzeitig aus einer Mehrzahl von Spuren eines Magnetbandmediums ausgelesen werden, beispielsweise von einer spurabhängigen Löschkoeffizientenlogik eines Bandlaufwerks oder einer anderen geeigneten Komponente oder Einheit empfangen werden.
  • in einer Operation 1004 wird eine Decodierung auf Prioritätsgrundlage für die codierten Daten auf Grundlage von Löschkoeffizienten ausgeführt, die mindestens einem Codewort der codierten Daten zugehörig sind.
  • Sämtliche der vorher beschriebenen Ausführungsformen, insbesondere in 7 bis 9, können zum Ausführen der Decodierung auf Prioritätsgrundlage verwendet werden. In einer Ausführungsform kann das Ausführen der Decodierung auf Prioritätsgrundlage ein Berechnen eines Löschkoeffizienten für jedes Symbol in dem mindestens einen Codewort enthalten, wobei jeder Löschkoeffizient ein Maß für eine Zuverlässigkeit eines zugehörigen decodierten Symbols in dem mindestens einen Codewort ist, ein Generieren einer Löschkoeffizientenliste mit den Löschkoeffizienten, die jedem Symbol in dem mindestens einen Codewort zugehörig sind, ein Generieren einer Löschliste mit einem untergeordneten Set von Symbolen aus dem mindestens einen Codewort auf Grundlage der Löschkoeffizientenliste, und Ausführen einer C2-Fehler-und-Lösch-Decodierung unter Verwendung von Löschzeigern, die die dem untergeordneten Set von Symbolen in der Löschliste entsprechen.
  • In dieser Ausführungsform kann die Löschliste eine vorbestimmte Anzahl von Symbolen mit Löschkoeffizienten enthalten, die nicht niedriger als Löschkoeffizienten von Symbolen sind, die nicht für die Löschliste gewählt wurden, wobei ein niedriger Löschkoeffizient eine schwächere Konfidenz angibt, dass ein zugehöriges Symbol zu löschen ist.
  • In einer weiteren Ausführungsform kann das Ausführen der Decodierung auf Prioritätsgrundlage ein Berechnen der vorbestimmten Anzahl von Symbolen in der Löschliste als Funktion eines mindesten Hamming-Abstands, einer Länge des mindestens einen Codeworts, einer Mindestspanne, die zum Korrigieren einer ganzzahligen Anzahl von Bytes von mindestens der Hälfte der Mindestspanne reserviert ist, und der Löschkoeffizientenliste enthalten.
  • In einer weiteren Ausführungsform können alle Symbole mit einem entsprechenden Löschkoeffizienten gleich Null aus der Löschliste ausgeschlossen werden.
  • In einer weiteren Ausführungsform können die Löschkoeffizienten in der Löschkoeffizientenliste in mindestens drei Ebenen quantisiert werden, z.B. P0, P1, P2 usw. In einer Ausführungsform können die mindestens drei Ebenen eine erste Ebene (P0) mit allen Löschkoeffizienten gleich Null enthalten, eine zweite Ebene (P1) mit allen Löschkoeffizienten, für die ein Löschkennzeichen durch einen C1-Decoder ausgelöst wurde, und eine dritte Ebene (P2) mit allen Löschkoeffizienten gleich Eins. In dieser Ausführungsform enthält die Löschliste Symbole des mindestens einen Codeworts, das Löschkoeffizienten in der zweiten und der dritten Ebene in Reaktion auf eine Bestimmung entspricht, dass eine Anzahl von Symbolen, die Löschkoeffizienten in der zweiten und der dritten Ebene entsprechen, eine vorbestimmte Anzahl von Symbolen nicht überschreitet. Des Weiteren enthält die Löschliste Symbole des mindestens einen Codeworts, das Löschkoeffizienten in der dritten Ebene in Reaktion auf eine Bestimmung entspricht, dass eine Anzahl von Symbolen, die Löschkoeffizienten in der zweiten und der dritten Ebene entsprechen, die vorbestimmte Anzahl von Symbolen überschreitet.
  • Gemäß einer weiteren Ausführungsform können die mindestens drei Ebenen eine erste Ebene (P0) mit allen Löschkoeffizienten gleich Null enthalten, eine zweite Ebene (P1) mit allen Löschkoeffizienten, für die ein Löschkennzeichen durch einen C1-Decoder ausgelöst wurde, eine dritte Ebene (P2) mit allen Löschkoeffizienten, für die ein Löschkennzeichen durch einen RLL-Decoder ausgelöst wurde und eine vierte Ebene (P3) mit allen Löschkoeffizienten gleich Eins. In dieser Ausführungsform enthält die Löschliste Symbole des mindestens einen Codeworts, das Löschkoeffizienten in der zweiten, der dritten und der vierten Ebene in Reaktion auf eine Bestimmung entspricht, dass eine Anzahl von Symbolen, die Löschkoeffizienten in der zweiten, der dritten und der vierten Ebene entsprechen, eine vorbestimmte Anzahl von Symbolen nicht überschreitet. Ferner enthält die Löschliste Symbole des mindestens einen Codeworts, das Löschkoeffizienten in der dritten und der vierten Ebene in Reaktion auf eine Bestimmung entspricht, dass die Anzahl von Symbolen, die Löschkoeffizienten in der zweiten, der dritten und der vierten Ebene entsprechen, die vorbestimmte Anzahl von Symbolen überschreitet, und eine Anzahl von Symbolen, die Löschkoeffizienten in der dritten und der vierten Ebene entsprechen, die vorbestimmte Anzahl von Symbolen nicht überschreitet. Des Weiteren enthält die Löschliste Symbole des mindestens einen Codeworts, das Löschkoeffizienten in der vierten Ebene in Reaktion auf eine Bestimmung entspricht, dass eine Anzahl von Symbolen, die Löschkoeffizienten in der dritten und der vierten Ebene entsprechen, die vorbestimmte Anzahl von Symbolen überschreitet.
  • Die vorliegende Erfindung kann ein System, ein Verfahren und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Speichermedien) mit einem computerlesbaren Programmcode darauf enthalten, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Das computerlesbare Speichermedium kann eine konkrete Einheit sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit beibehalten und speichern kann. Ein computerlesbares Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Eine nicht erschöpfende Liste von spezielleren Beispielen für das computerlesbare Speichermedium enthält Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Arbeitsspeicher (SRAM), einen tragbaren CD-ROM, ein DVD-Laufwerk (DVD), einen Speicherstick, eine Diskette, eine mechanisch verschlüsselte Einheit wie beispielsweise Lochkarten oder erhabene Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen und jede geeignete Kombination des Vorgenannten. Ein computerlesbares Speichermedium, wie hierin verwendet, muss nicht als transitorische Signale per se ausgelegt sein, wie beispielsweise Funkwellen oder andere sich frei verbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien verbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch einen Draht übertragen werden.
  • Hierin beschriebene computerlesbare Programmanweisungen können auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten von einem computerlesbaren Speichermedium oder auf einen externen Computer oder eine externe Speichereinheit über ein Netzwerk, zum Beispiel das Internet, ein lokales Netz, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk heruntergeladen werden. Das Netzwerk kann Kupferübertragungsleitungen, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerk-Adapterkarte oder Netzwerk-Schnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen von dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium in der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Computerlesbare Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung können Assembler-Anweisungen, Anweisungssatzarchitektur- (Instruction Set Architecture) (ISA) Anweisungen, Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Zustandseinstellungsdaten oder anderer Quellcode oder Objektcode sein, die in jeder Kombination von einer oder mehreren Programmiersprachen, einschließlich Smalltalk, C++ oder dergleichen, und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen geschrieben sind. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, einschließlich zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmanweisungen unter Verwendung von Zustandsinformationen der computerlesbaren Programmanweisungen zum Personalisieren der elektronischen Schaltung ausführen, um Aspekte der vorliegenden Erfindung auszuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern durch computerlesbare Programmanweisungen umgesetzt werden können.
  • Diese computerlesbaren Programmanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass das computerlesbare Speichermedium mit den darin gespeicherten Anweisungen einen Fertigungsartikel aufweist, einschließlich Anweisungen, welche die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen.
  • Die computerlesbaren Programmanweisungen können auch auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder eine andere Einheit geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführt werden, die Funktionen /Handlungen umsetzen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen außerhalb der Reihenfolge auftreten, die in den Figuren angegeben ist. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block der Blockschaubilder und/oder Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf Grundlage von Hardware umgesetzt werden können, die die angegebenen Funktionen oder Handlungen ausführen oder Kombinationen von spezieller Hardware und Computeranweisungen ausführen.
  • Des Weiteren kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und eine Logik enthalten, die integriert und/oder durch den Prozessor ausführbar ist, um einen oder mehrere der hierin genannten Prozessschritte auszuführen. Mit integriert ist gemeint, dass in den Prozessor eine Logik als Hardware-Logik eingebettet ist, wie beispielsweise eine ASIC, ein FPGA usw. Mit durch den Prozessor ausführbar ist gemeint, dass die Logik eine Hardware-Logik, eine Software-Logik wie beispielsweise Firmware, Teil eines Betriebssystems, Teil eines Anwendungsprogramms usw. oder eine Kombination von Hardware- und Software-Logik ist, auf die vom Prozessor zugegriffen werden kann und die konfiguriert ist, um den Prozessor zu veranlassen, eine Funktionalität nach Ausführung durch den Prozessor auszuführen. Software-Logik kann auf einem lokalen und/oder entfernt angeordneten Arbeitsspeicher jedes in dem Fachgebiet bekannten Arbeitsspeichertyps gespeichert sein. Jeder in dem Fachgebiet bekannte Prozessor kann verwendet werden, wie beispielsweise ein Software-Prozessormodul und/oder ein Hardware-Prozessor wie eine ASIC, ein FPGA, eine CPU, eine integrierte Schaltung (IC), eine Grafikverarbeitungseinheit (GPU) usw.
  • Es ist klar, dass die verschiedenen Merkmale der vorgenannten Systeme und/oder Methodiken auf jede Weise kombiniert werden können, wodurch sie eine Vielzahl von Kombinationen aus den oben dargelegten Beschreibungen erstellen.
  • Ferner ist klar, dass Ausführungsformen der vorliegenden Erfindung in der Form eines Dienstes bereitgestellt werden können, der für den Benutzer als bedarfsabhängiger Dienst (Service-on-Demand) angeboten wird.
  • Zwar wurden oben verschiedene Ausführungsformen beschrieben, doch sollte klar sein, dass sie nur zu Beispielzwecken und nicht zur Einschränkung dargelegt wurden. Daher soll die Breite und der Schutzumfang einer bevorzugten Ausführungsform durch keine der oben beschriebenen beispielhaften Ausführungsformen eingeschränkt werden, sondern nur gemäß den folgenden Ansprüchen und ihren Entsprechungen definiert werden.

Claims (10)

  1. Bandlaufwerk (100), aufweisend: einen Magnetkopf mit einer Mehrzahl von Lesesensoren, wobei jeder Lesesensor konfiguriert ist, um codierte Daten gleichzeitig aus einer Mehrzahl von Spuren eines Magnetbandmediums zu lesen parallel mit allen anderen Lesesensoren der Mehrzahl von Lesesensoren; und einen Controller (128) und eine Logik, die integriert und/oder durch den Controller (128) ausführbar ist, wobei die Logik dazu konfiguriert ist, den Controller (128) zu veranlassen zum: Empfangen der codierten Daten von der Mehrzahl von Lesesensoren, die gleichzeitig aus der Mehrzahl von Spuren des Magnetbandmediums ausgelesen werden; und Ausführen einer Decodierung auf Prioritätsgrundlage für die codierten Daten auf Grundlage von Löschkoeffizienten, die mindestens einem Codewort der codierten Daten zugehörig sind wobei die Logik, die dazu konfiguriert ist, den Controller (128) zu veranlassen die Decodierung auf Prioritätsgrundlage auszuführen, den Controller (128) ferner veranlasst zum: Berechnen eines Löschkoeffizienten für jedes Symbol in dem mindestens einen Codewort, wobei jeder Löschkoeffizient ein Maß für eine Zuverlässigkeit eines zugehörigen decodierten Symbols in dem mindestens einen Codewort ist; Generieren einer Löschkoeffizientenliste mit den Löschkoeffizienten, die jedem Symbol des mindestens einen Codeworts zugehörig sind; Quantisieren der Löschkoeffizienten in der Löschkoeffizientenliste in mindestens drei Ebenen; Generieren einer Löschliste mit einem untergeordneten Set von Symbolen aus dem mindestens einen Codewort auf Grundlage der Löschkoeffizientenliste; und Ausführen einer C2-Fehler-und-Lösch-Decodierung unter Verwendung von Löschzeigern, die die dem untergeordneten Set von Symbolen in der Löschliste entsprechen.
  2. Bandlaufwerk (100) nach Anspruch 1, wobei die Logik ferner konfiguriert ist zum Berechnen einer Anzahl von Symbolen des mindestens einen zu löschenden Codeworts (L) auf Grundlage mindestens eines Hamming-Abstands (dmin), einer Länge des mindestens einen Codeworts (N), einer Mindestspanne (M), die für die Korrektur von mindestens untersten (M/2) Symbolen des mindestens einen Codeworts reserviert ist, einer Gesamtanzahl von Symbolen in einem C1-Codewort mit dem Löschkoeffizienten 1 (D), einer maximalen Anzahl von gelöschten Symbolen (F), einer Summe von Löschkoeffizienten in einem Bereich, der durch F definiert ist, wobei die Werte der Löschkoeffizienten ungleich 1 sind (B), einer Summe aller Löschkoeffizienten mit einem Wert zwischen 0 und 1 (A+B), und der Löschkoeffizientenliste (W), wobei L = D + H = D + Untergrenze ((F-D) B/(A+B)).
  3. Bandlaufwerk (100) nach Anspruch 1, wobei die Löschliste eine vorbestimmte Anzahl von Symbolen mit Löschkoeffizienten enthält, die nicht niedriger als Löschkoeffizienten von Symbolen sind, die nicht für die Löschliste gewählt wurden, wobei ein niedriger Löschkoeffizient eine schwächere Konfidenz angibt, dass ein zugehöriges Symbol zu löschen ist.
  4. Bandlaufwerk (100) nach Anspruch 3, wobei die Logik, die zum Ausführen der Decodierung auf Prioritätsgrundlage konfiguriert ist, ferner zum Berechnen der vorbestimmten Anzahl von Symbolen in der Löschliste als Funktion eines mindesten Hamming-Abstands, einer Länge des mindestens einen Codeworts, einer Mindestspanne, die zum Korrigieren einer ganzzahligen Anzahl von Bytes von mindestens der Hälfte der Mindestspanne reserviert ist, und der Löschkoeffizientenliste konfiguriert ist.
  5. Bandlaufwerk (100) nach Anspruch 1, wobei die Logik, die zum Ausführen der Decodierung auf Prioritätsgrundlage konfiguriert ist, ferner zum Ausschließen aller Symbole mit einem entsprechenden Löschkoeffizienten gleich Null konfiguriert ist.
  6. Bandlaufwerk (100) nach Anspruch 1, wobei die Logik, wobei die mindestens drei Ebenen eine erste Ebene mit allen Löschkoeffizienten gleich Null, eine zweite Ebene mit allen Löschkoeffizienten, für die ein Löschkennzeichen durch einen C1-Decoder ausgelöst wurde, und eine dritte Ebene mit allen Löschkoeffizienten gleich Eins enthalten.
  7. Bandlaufwerk (100) nach Anspruch 6, wobei die Löschliste Symbole des mindestens einen Codeworts enthält, das Löschkoeffizienten in der zweiten und der dritten Ebene in Reaktion auf eine Bestimmung entspricht, dass eine Anzahl von Symbolen, die Löschkoeffizienten in der zweiten und der dritten Ebene entsprechen, eine vorbestimmte Anzahl von Symbolen nicht überschreitet, und wobei die Löschliste Symbole des mindestens einen Codeworts enthält, das Löschkoeffizienten in der dritten Ebene in Reaktion auf eine Bestimmung entspricht, dass eine Anzahl von Symbolen, die Löschkoeffizienten in der zweiten und der dritten Ebene entsprechen, die vorbestimmte Anzahl von Symbolen überschreitet.
  8. Bandlaufwerk (100) nach Anspruch 1, wobei die mindestens drei Ebenen eine erste Ebene mit allen Löschkoeffizienten gleich Null, eine zweite Ebene mit allen Löschkoeffizienten, für die ein Löschkennzeichen durch einen C1-Decoder ausgelöst wurde, eine dritte Ebene mit allen Löschkoeffizienten, für die ein Löschkennzeichen durch einen lauflängenbegrenzten (RLL) Decoder ausgelöst wurde und eine vierte Ebene mit allen Löschkoeffizienten gleich Eins enthalten, wobei die Löschliste Symbole des mindestens einen Codeworts enthält, das Löschkoeffizienten in der zweiten, der dritten und der vierten Ebene in Reaktion auf eine Bestimmung entspricht, dass eine Anzahl von Symbolen, die Löschkoeffizienten in der zweiten, der dritten und der vierten Ebene entsprechen, eine vorbestimmte Anzahl von Symbolen nicht überschreitet, wobei die Löschliste Symbole des mindestens einen Codeworts enthält, das Löschkoeffizienten in der dritten und der vierten Ebene in Reaktion auf eine Bestimmung entspricht, dass die Anzahl von Symbolen, die Löschkoeffizienten in der zweiten, der dritten und der vierten Ebene entsprechen, die vorbestimmte Anzahl von Symbolen überschreitet, und eine Anzahl von Symbolen, die Löschkoeffizienten in der dritten und der vierten Ebene entsprechen, die vorbestimmte Anzahl von Symbolen nicht überschreitet, und wobei die Löschliste Symbole des mindestens einen Codeworts enthält, das Löschkoeffizienten in der vierten Ebene in Reaktion auf eine Bestimmung entspricht, dass eine Anzahl von Symbolen, die Löschkoeffizienten in der dritten und der vierten Ebene entsprechen, die vorbestimmte Anzahl von Symbolen überschreitet.
  9. Durch einen Controller (128) umgesetztes Verfahren, wobei das Verfahren aufweist: Empfangen von codierten Daten von einer Mehrzahl von Lesesensoren, die gleichzeitig aus einer Mehrzahl von Spuren eines Magnetbandmediums ausgelesen werden; und Ausführen einer Decodierung auf Prioritätsgrundlage für die codierten Daten auf Grundlage von Löschkoeffizienten, die mindestens einem Codewort der codierten Daten zugehörig sind, durch: Berechnen eines Löschkoeffizienten für jedes Symbol in dem mindestens einen Codewort, wobei jeder Löschkoeffizient ein Maß für eine Zuverlässigkeit eines zugehörigen decodierten Symbols in dem mindestens einen Codewort ist; Generieren einer Löschkoeffizientenliste mit den Löschkoeffizienten, die jedem Symbol des mindestens einen Codeworts zugehörig sind; Quantisieren der Löschkoeffizienten in der Löschkoeffizientenliste in mindestens drei Ebenen; Generieren einer Löschliste mit einem untergeordneten Set von Symbolen aus dem mindestens einen Codewort auf Grundlage der Löschkoeffizientenliste; und Ausführen einer C2-Fehler-und-Lösch-Decodierung unter Verwendung von Löschzeigern, die die dem untergeordneten Set von Symbolen in der Löschliste entsprechen.
  10. Computerprogrammprodukt, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit darin verkörperten Programmanweisungen aufweist, wobei die verkörperten Programmanweisungen durch einen Controller (128) ausführbar sind, um den Controller (128) zu veranlassen zum: Empfangen von codierten Daten von einer Mehrzahl von Lesesensoren durch den Controller (128), die gleichzeitig aus einer Mehrzahl von Spuren eines Magnetbandmediums ausgelesen werden; und Ausführen einer Decodierung auf Prioritätsgrundlage durch den Controller (128) für die codierten Daten auf Grundlage von Löschkoeffizienten, die mindestens einem Codewort der codierten Daten zugehörig sind, wobei die verkörperten Programmanweisungen ferner ausführbar sind, um den Controller (128) zu veranlassen zum: Berechnen eines Löschkoeffizienten für jedes Symbol in dem mindestens einen Codewort, wobei jeder Löschkoeffizient ein Maß für eine Zuverlässigkeit eines zugehörigen decodierten Symbols in dem mindestens einen Codewort ist; Generieren einer Löschkoeffizientenliste mit den Löschkoeffizienten, die jedem Symbol des mindestens einen Codeworts zugehörig sind; Quantisieren der Löschkoeffizienten in der Löschkoeffizientenliste in mindestens drei Ebenen; Generieren einer Löschliste mit einem untergeordneten Set von Symbolen aus dem mindestens einen Codewort auf Grundlage der Löschkoeffizientenliste; und Ausführen einer C2-Fehler-und-Lösch-Decodierung unter Verwendung von Löschzeigern, die die dem untergeordneten Set von Symbolen in der Löschliste entsprechen.
DE102016220802.0A 2015-11-19 2016-10-24 Decodierung auf Prioritätsgrundlage Active DE102016220802B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/946,726 US9477552B1 (en) 2015-11-19 2015-11-19 Priority-based decoding
US14/946,726 2015-11-19

Publications (2)

Publication Number Publication Date
DE102016220802A1 DE102016220802A1 (de) 2017-05-24
DE102016220802B4 true DE102016220802B4 (de) 2019-02-14

Family

ID=57137635

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016220802.0A Active DE102016220802B4 (de) 2015-11-19 2016-10-24 Decodierung auf Prioritätsgrundlage

Country Status (3)

Country Link
US (1) US9477552B1 (de)
DE (1) DE102016220802B4 (de)
GB (1) GB2545964B (de)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4336612A (en) 1978-01-17 1982-06-22 Mitsubishi Denki Kabushiki Kaisha Error correction encoding and decoding system
DE10050746A1 (de) 1999-10-13 2001-05-17 Quantum Corp Systeme und Verfahren zum Lesen von kodierten Informationen, die zufälligen Fehlern und Sprungfehlern unterworfen sind
EP1901294A1 (de) 2005-06-10 2008-03-19 International Business Machines Corporation Fehlerkorrektureinrichtung, verfahren und programm

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07111815B2 (ja) * 1984-07-23 1995-11-29 株式会社日立製作所 デイジタル信号記録方式
TWI241073B (en) * 2005-01-03 2005-10-01 Sunplus Technology Co Ltd Decoding device for product code decoding and method thereof
US7634706B1 (en) 2005-11-22 2009-12-15 Seagate Technology Llc Majority-detected erasure enhanced error correction
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
US8286060B2 (en) * 2008-07-30 2012-10-09 Lsi Corporation Scheme for erasure locator polynomial calculation in error-and-erasure decoder

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4336612A (en) 1978-01-17 1982-06-22 Mitsubishi Denki Kabushiki Kaisha Error correction encoding and decoding system
DE10050746A1 (de) 1999-10-13 2001-05-17 Quantum Corp Systeme und Verfahren zum Lesen von kodierten Informationen, die zufälligen Fehlern und Sprungfehlern unterworfen sind
EP1901294A1 (de) 2005-06-10 2008-03-19 International Business Machines Corporation Fehlerkorrektureinrichtung, verfahren und programm

Also Published As

Publication number Publication date
DE102016220802A1 (de) 2017-05-24
US9477552B1 (en) 2016-10-25
GB2545964A (en) 2017-07-05
GB2545964B (en) 2021-05-05

Similar Documents

Publication Publication Date Title
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE112014002870B4 (de) Kombinations-Fehler- und Löschdecodierung für Produktcodes
DE112016003638B4 (de) Auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes
DE112013001025B4 (de) Kombinierte Soft-Erkennung/Soft-Decodierung in Bandlaufwerk-Speicherkanälen
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
DE112012000385B4 (de) Korrigieren von Auslöschungen in Speicher-Arrays
DE112012006014B4 (de) Verteilte Codewortteile
DE112013005453B4 (de) Rekonstruierende Fehlerbehebungsprozedur (ERP) für mehrerer Datensätze unter Verwendung eines reservierten Puffers
DE102013020712B4 (de) Techniken zum Speichern von Bits in Speicherzellen mit Hängenbleiben-auf-0-oder-1-Fehlern
DE102013016681B4 (de) Codieren und Decodieren von Daten zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE112018005762T5 (de) Neuschreiben von datenobjekten auf speichermedien mit sequenziellem zugriff
DE112011101852B4 (de) Decodieren von LDPC-Code
DE2914515A1 (de) Verfahren und vorrichtung fuer ein wirksames fehlerentdeckungs- und korrektursystem
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102012208711B4 (de) Vorrichtung zum Erzeugen einer Prüfsumme
DE2162833A1 (de) Einrichtung zum Codieren und Decodieren eines aus k Bytes mit je b Bits bestehenden Datenblocks
DE102016205281B4 (de) Fehlersicherung von unter verwendung von headern mit variabler länge gespeicherten daten
DE2263488C2 (de) Einrichtung zur Erkennung und Korrektur von Fehlern in zwei fehlerbehafteten Spuren eines Vielspur-Datensystems
DE112011100199T5 (de) Integrierter Daten- und Vorsatzschutz für Bandlaufwerke
DE69814465T2 (de) Verfahren und gerät zur datenspeicherung auf magnetischen medien, die fehlerkorrekturkodes enthalten
DE102016107718A1 (de) Auslesen von Fehlervektoren aus einer Speichereinheit
DE102017129990A1 (de) Logisches format, bei dem laterales codieren genutzt wird, zum speichern von daten auf magnetband
DE102017126911A1 (de) Verknüpfter Speichersystem- und Hostsystem-Fehlerkorrekturcode
DE102016220802B4 (de) Decodierung auf Prioritätsgrundlage
DE102020120211A1 (de) Polarer neuronaler Netzwerk-Decodierer für Speichervorrichtungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
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