DE112013005453B4 - Rekonstruierende Fehlerbehebungsprozedur (ERP) für mehrerer Datensätze unter Verwendung eines reservierten Puffers - Google Patents

Rekonstruierende Fehlerbehebungsprozedur (ERP) für mehrerer Datensätze unter Verwendung eines reservierten Puffers Download PDF

Info

Publication number
DE112013005453B4
DE112013005453B4 DE112013005453.1T DE112013005453T DE112013005453B4 DE 112013005453 B4 DE112013005453 B4 DE 112013005453B4 DE 112013005453 T DE112013005453 T DE 112013005453T DE 112013005453 B4 DE112013005453 B4 DE 112013005453B4
Authority
DE
Germany
Prior art keywords
record
records
read
ecc
data
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
DE112013005453.1T
Other languages
English (en)
Other versions
DE112013005453T5 (de
Inventor
Takashi Katagiri
Pamela R. Nylander-Hill
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 DE112013005453T5 publication Critical patent/DE112013005453T5/de
Application granted granted Critical
Publication of DE112013005453B4 publication Critical patent/DE112013005453B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/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

Abstract

Ein System zum Lesen von Daten, wobei das System aufweist: Logik, die dazu konfiguriert ist, eine Mehrzahl von Datensätzen einmal oder mehrere Male zu lesen (502), wobei jeder Datensatz eine Mehrzahl von Bereichen aufweist, die miteinander kombiniert im Ganzen den Datensatz bilden, wobei Hardware-Einstellungen in einem Versuch geändert werden, den wenigstens einen der Mehrzahl der Datensätze besser zu lesen; Logik, die dazu konfiguriert ist, einen oder mehrere Bereiche von wenigstens einem der Mehrzahl der Datensätze in einem reservierten Datenpuffer zu speichern (504), wenn die einen oder mehreren Bereiche mit dem C1-Fehlerkorrekturcode basierend auf einer Zeilenparität (106) (ECC, Error Correction Code) korrigierbar sind, um einen oder mehrere gespeicherte Bereiche zu bilden, wobei der eine oder die mehreren gespeicherten Bereiche bei erneutem Lesen mit anderen Hardware-Einstellungen nur dann überschrieben werden, wenn wenigstens ein entsprechender Bereich von dem einen oder den mehreren Bereichen, die mit C1-ECC korrigierbar sind, weniger korrigierte Fehler darin aufweisen als der eine oder die mehreren gespeicherten Bereiche; Logik, die dazu konfiguriert ist, für jeden der Mehrzahl der Datensätze, von denen alle Bereiche davon im reservierten Datenpuffer gespeichert sind, alle gespeicherten Bereiche davon zu aggregieren (506), um einen oder mehrere zusammengesetzte Datensätze zu bilden; Logik, die dazu konfiguriert ist, zu bestimmen (508), ob C2-ECC basierend auf einer Spaltenparität (108) dazu geeignet ist, alle Fehler in dem einen oder den mehreren ...

Description

  • Hintergrund
  • Die vorliegende Erfindung bezieht sich auf Datenspeicher und im Besonderen auf das Lesen von Daten von Band mit Hilfe einer rekonstruierenden Fehlerbehebungsprozedur (ERP bzw. Error Recovery Procedure), um Backhitching (schnelles Rückspulen eines Bandes) während des Lesens von Daten zu reduzieren.
  • Band- und optische Speichergeräte verwenden sehr leistungsstarke Fehlerkorrekturcodes, wie Produkt-Codes oder verkettete Codes zusammen mit Interleaving, um einen sehr hohen Grad an Datenintegrität bereitzustellen. Diese Fehlerkorrekturschemas verwenden in der Regel zwei Fehlerkorrekturcodes (ECCs, Error Correction Codes) als Komponenten-Codes. Zwei wichtige Maße der Fehlerhäufungs(Burst Error)-Performance für mit diesen Schemas geschützte Bandspeichersysteme sind: 1) Breite eines fehlerhaften Streifens, der noch korrigiert werden kann (dies wird auch als „Broken Track Correction”-Fähigkeit bezeichnet), und 2) Länge eines fehlerhaften Streifens, der noch korrigiert werden kann. Ein Broken Track bezieht sich im Allgemeinen auf eine Spur (Track), die aufgrund eines Medienproblems und/oder eines Problems mit dem Readback-Kanal nicht korrekt gelesen werden kann, zum Beispiel da der Kanal Daten aufgrund eines Ausrichtungsproblems oder eines systematischen Problems mit dem Kopf nicht korrekt erfasst.
  • Wenn ein Bandlaufwerk Daten von einem Band liest, oder wenn ein Bandlaufwerk Daten auf ein Band schreibt, wird eine Dateneinheit gelesen oder geschrieben, die als ein „Datensatz” bezeichnet wird. Der Datensatz wird mit verschachtelten Gruppen von Codewörtern kodiert, die in einer ECC-kodierten Matrix der Größe M Byte × N Byte (M × N) angeordnet sind, und wird dann gemäß dem Stand der Technik wie in 1 dargestellt auf Band geschrieben. In dieser Matrix 150 gibt es zwei Kodierungslevel. Der erste Kodierungslevel verwendet die Matrixzeilen 102. Jede Zeile 102 der Matrix enthält die C1-ECC-Zeilenparität 106, die p Bytes von C1-ECC zu den n Bytes der Benutzerdaten hinzufügt (z. B. N = n + p Bytes). Der zweite Kodierungslevel, die C2-ECC-Spaltenparität 108, fügt q Bytes von C2-ECC zu jeder Matrixspalte 104 hinzu. Wenn zum Beispiel q = 12, dann werden durch das Hinzufügen von 12 Bytes von C2-ECC zur Matrix 150 12 Zeilen hinzugefügt (zum Beispiel M = m + q Bytes).
  • Wenn der Datensatz vom Band mit einer hohen Fehlerratenbedingung gelesen wird, ist C1/C-ECC nicht dazu geeignet, die gelesenen Daten zu korrigieren. Zum Beispiel ist in einigen Ansätzen die C1-Kodierung dazu geeignet, 10 fehlerhafte Bytes zu korrigieren, und die C2-Kodierung ist dazu geeignet, 20 fehlerhafte Bytes zu korrigieren. Wenn die fehlerhaften Bytes nicht durch diese Korrekturleistung korrigiert werden können, dann können die Daten nicht von dem Band gelesen werden. In diesem Szenario versucht das Bandlaufwerk dann eine ERP, um den Datensatz mit einer anderen Hardware-Einstellung erneut von Band zu lesen (zum Beispiel mit einer geänderten Bandgeschwindigkeit). ERP wird wiederholt, bis die C1/C2-Kodierung in der Lage ist, die Daten zu korrigieren, oder bis der Zähler der ERP-Wiederholungsversuche einen Grenzwert überschreitet. Wenn der Zähler der Wiederholungsversuche den Grenzwert überschreitet, dann berichtet das Bandlaufwerk für den Lesevorgang einen dauerhaften Fehler.
  • Bei diesem herkömmlichen Ansatz treten verschiedene Probleme auf. Als Erstes, wenn die Fehlerrate durchgängig hoch ist, können C1 und C2 die Daten nicht korrigieren und das Bandlaufwerk kann den Datensatz nicht lesen, was in keinster Weise wünschenswert ist. Zweitens, kann in Bandbereichen, in denen die Fehlerrate aufgrund einer Medienbeschädigung, eines unvollständigen Schreibvorgangs, von Daten, die in älteren Formaten geschriebenen wurden usw. hoch ist, das Laufwerk keine Lesevorgänge mehr durchführen. Drittens können in diesen Fällen viele Datensätze in der Umgebung ERP erfordern. Wenn ein Datensatzfehler mit vielen erneuten Versuchen (vielen Iterationen von ERP) wieder herstellbar ist, kann der nächste Datensatz wahrscheinlich ähnliche wiederholte Versuche zum erfolgreichen Lesen der Daten erfordern. Durch diese Wiederherstellungsvorgänge benötigt das Bandlaufwerk eine lange Zeit zum Lesen der Daten aufgrund der mehrfachen Backhitches, die zum erneuten Lesen der Daten von Band erforderlich sind, was die Host-Performance verschlechtert und die Medien auch weiterhin beschädigen kann.
  • Dementsprechend wäre es vorteilhaft, eine Datenwiederherstellungsprozedur zu haben, die die Effizienz des Lesens gespeicherter Daten vom Band erhöht.
  • Verwandte Technologien sind in folgenden Dokumenten beschrieben:
    Das Dokument DE 10 2007 046 789 A1 beschreibt ein n-dimensionales interaktives ECC-Verfahren und eine Vorrichtung mit kombinierter Lösch- und Fehlerinformation und erneutem Lesen. Die Daten, die von dem Speichermedium gelesen werden, werden als mehrdimensionale Datenstrukturen dargestellt, und die Fehlerbehebungsprozedur wird für jede Dimension der Datenstruktur vorgenommen.
  • Das Dokument EP 1 758 023 B1 beschreibt eine Datenfehlererkennung während eines Schreibens auf ein Medium. Die Datenfehlerkennung weist ein Speichern von Daten in einem ersten Datenpuffer auf, die auf ein Medium geschrieben werden sollen und eine erste digitale Signatur der Daten. Wenn die erste digitale Signatur einer zweiten digitalen Signatur von Daten entspricht, die von dem ersten Puffer gelesen werden, wird eine komprimierte Form der Daten, die aus dem ersten Puffer gelesen werden, in ein FIFO gespeichert.
  • Das Dokument CN 101 101 790 A beschreibt ein Verfahren zur Korrektur eines ECC-Wertes und vergleicht diesen Wert mit dem ECC-Wert der entsprechenden Seite. Wenn der Vergleich einen 1-Bit-Fehler auf der entsprechenden Seite findet, korrigiert das vorgeschlagene Verfahren diesen Fehler und erneuert eine entsprechende Fehler-Seitenliste.
  • Das Dokument US 2008/0222490 A1 beschreibt ein Verfahren und ein System für eine dynamische Anpassung einer ECC-Code-Rate. In einem Ausführungsbeispiel wird die Code-Rate von einer ersten Code-Rate zu einer zweitern Code-Rate in Antwort auf eine Änderung in einer Bit-Fehler-Rate geändert.
  • Das Dokument EP 2 199 911 B1 beschreibt einen Flash-Memory-Controller und ein entsprechendes Verfahren. Das Verfahren nutzt den ECC-Controller, der einen ECC-Codierer, einen ECC-Konstruktor und einen ECC-Decoder aufweist.
  • Kurzzusammenfassung
  • Die oben angesprochene wünschenswerte Datenwiederherstellungsprozedur samt entsprechendem System und Bandlaufwerk wird von den unabhängigen Ansprüchen 1, 7, 13 und 20 beschrieben. Vorteilhafte Ausführungsformen werden von den jeweils abhängigen Ansprüchen beschrieben.
  • Andere Aspekte und Ausführungsformen der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung ersichtlich, die in Verbindung mit den Zeichnungen beispielhaft die Prinzipien der Erfindung veranschaulicht.
  • Kurzbeschreibung der verschiedenen Ansichten der Zeichnungen
  • 1 zeigt eine Matrix oder einen Array eines Datensatzes gemäß dem Stand der Technik.
  • 2A veranschaulicht ein Netzwerkspeichersystem gemäß einer Ausführungsform.
  • 2B veranschaulicht ein vereinfachtes Bandlaufwerk eines bandbasierten Datenspeichersystems gemäß einer Ausführungsform.
  • 3A3B zeigen ein Verfahren zum Lesen von Daten von einem Medium unter Verwendung einer rekonstruierenden Fehlerbehebungsprozedur (ERP) für mehrere Datensätze gemäß einer Ausführungsform.
  • 4 zeigt ein Verfahren zum Lesen von Daten von einem Medium unter Verwendung einer rekonstruierenden ERP für mehrere Datensätze gemäß einer Ausführungsform.
  • 5 zeigt ein Verfahren zum Lesen von Daten von einem Medium unter Verwendung einer rekonstruierenden ERP für mehrere Datensätze gemäß einer Ausführungsform.
  • 6 zeigt ein Verfahren gemäß einer Ausführungsform.
  • Detaillierte Beschreibung
  • Die folgende Beschreibung erfolgt nur zum Zwecke der Veranschaulichung der allgemeinen Prinzipien der vorliegenden Erfindung und ist nicht dazu gedacht, die in diesem Dokument beanspruchten Konzepte der Erfindung einzuschränken. Weiterhin können bestimmte in diesem Dokument beschriebene Merkmale in Kombination mit anderen beschriebenen Merkmalen in jeder der verschiedene möglichen Kombinationen und Vertauschungen verwendet werden.
  • Sofern in diesem Dokument nicht anders angegeben, haben alle Begriffe die breitest mögliche Interpretation einschließlich von Bedeutungen, die aus der Beschreibung impliziert ist, wie auch Bedeutungen, die von Fachleuten verstanden werden und/oder wie sie in Wörterbüchern, Verträgen usw. definiert sind.
  • Es muss auch hervorgehoben werden, dass wie in der Beschreibung und den Ansprüchen im Anhang verwendet, die Singularformen „ein”, „eine”, „einer” und „der/die das“ auch die Pluralbezeichnungen enthalten, sofern nicht anders angegeben. Es versteht sich, dass der Begriff „aufweist“ oder „aufweisend“ bei der Verwendung in dieser Beschreibung zur Angabe des Vorhandenseins angegebener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten verwendet wird, dies aber nicht das Vorhandensein oder das Hinzufügen eines oder mehrerer Merkmale, einer oder mehrerer Ganzzahlen, eines oder mehrerer Schritte, einer oder mehrerer Operationen, eines oder mehrerer Elemente, einer oder mehrerer Komponenten und/oder Gruppen hiervon ausschließt.
  • In einer allgemeinen Ausführungsform weist ein System zum Lesen von Daten von einem Medium Logik auf, die dazu ausgebildet ist, eine Mehrzahl von Datensätzen von einem Medium einmal oder mehrere Male zu lesen, wobei jeder Datensatz eine Mehrzahl von Bereichen aufweist, die miteinander kombiniert im Ganzen einen Datensatz bilden, wobei während jedem Lesevorgang von wenigstens einem der Mehrzahl der Datensätze Einstellungen in einem Versuch geändert werden, den wenigstens einen der Mehrzahl der Datensätze besser von dem Medium zu lesen; Logik, die dazu ausgebildet ist, einen oder mehrere der Bereiche von wenigstens einem der Mehrzahl der Datensätze in einem reservierten Datenpuffer zu speichern, wenn der eine oder die mehreren Bereiche mit dem C1-Fehlerkorrekturcode (ECC) korrigierbar sind, um einen oder mehrere gespeicherte Bereiche zu bilden; Logik, die dazu ausgebildet ist, für jeden der Mehrzahl der Datensätze, von denen alle Bereiche davon im reservierten Datenpuffer gespeichert sind, alle gespeicherten Bereiche davon zu aggregieren, um eine oder mehrere zusammengesetzte Datensätze zu bilden; Logik, die dazu ausgebildet ist, zu bestimmen, ob C2-ECC dazu in der Lage ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; Logik, die dazu ausgebildet ist, beliebige noch vorhandene Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen mit C2-ECC zu korrigieren, um einen korrigierten oder mehrere korrigierte Datensätze zu bilden, und den einen oder die mehreren korrigierten Datensätze an einen Host zu senden, wenn C2-ECC in der Lage ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; und Logik, die dazu ausgebildet ist, wenigstens einen ersten nicht korrigierten Datensatz von dem Medium unter Verwendung einer anderen Einstellung in einer Fehlerbehebungsprozedur (ERP) erneut zu lesen, wenn ein Fehler im ersten nicht korrigierten Datensatz nicht mit C2-ECC korrigierbar ist, oder ein Fehler in einem beliebigen Bereich des ersten nicht korrigierten Datensatzes nicht mit C1-ECC korrigierbar ist, wobei der erste nicht korrigierte Datensatz vor einem beliebigen anderen nicht korrigierten Datensatz auf dem Medium in einer Leserichtung angeordnet ist.
  • In einer anderen allgemeinen Ausführungsform weist ein Bandlaufwerk einen Datenpuffer mit einem reservierten Datenpuffer auf; Logik, die dazu ausgebildet ist, einen anfänglichen Fehlerdatensatz gefolgt von einer Mehrzahl von Datensätzen nach dem anfänglichen Fehlerdatensatz einmal oder mehrere Male mit verschiedenen Einstellungen von einem Medium zu lesen, bis: alle Zeilen des anfänglichen Fehlerdatensatzes in einem reservierten Datenpuffer zusammengesetzt sind und keine nicht korrigierbaren Fehler übrig bleiben, oder wenigstens ein nicht korrigierbarer Datensatz in einer Mehrzahl von zusammengesetzten Datensätzen übrig bleibt, oder eine maximale Anzahl von erneuten Lesevorgängen erreicht wurde; Logik, die dazu ausgebildet ist, nach jedem erneutem Lesen des anfänglichen Fehlerdatensatzes und von einem oder mehreren der Mehrzahl der Datensätze nach dem anfänglichen Fehlerdatensatz in der gleichen Vorwärtsbewegung Zeilen eines jeden Datensatzes, die entweder keine Fehler aufweisen oder mit C1-ECC korrigierbar sind, in den jeweiligen reservierten Datenpufferbereichen zu speichern, sofern eine passende Zeile nicht bereits im reservierten Datenpuffer vorhanden ist, die weniger korrigierte Fehler darin aufweist; Logik, die dazu ausgebildet ist, den anfänglichen Fehlerdatensatz aus den für den anfänglichen Fehlerdatensatz im reservierten Datenpuffer gespeicherten Zeilen zusammenzusetzen, um einen anfänglichen zusammengesetzten Datensatz zu bilden; Logik, die dazu ausgebildet ist, beliebige noch vorhandene Fehler in dem anfänglichen zusammengesetzten Datensatz mit C2-ECC zu korrigieren, um einen anfänglichen rekonstruierten Datensatz zu bilden; und Logik, die dazu ausgebildet ist, den anfänglichen rekonstruierten Datensatz an einen Host zu senden und/oder den anfänglichen rekonstruierten Datensatz in einem Speicher zu speichern.
  • Gemäß einer weiteren allgemeinen Ausführungsform weist ein Verfahren zum Lesen von Daten von einem Medium das Lesen einer Mehrzahl von Datensätzen von einem Medium einmal oder mehrere Male auf, wobei jeder Datensatz eine Mehrzahl von Bereichen aufweist, die miteinander kombiniert im Ganzen den Datensatz bilden, wobei während jedes Lesevorgangs von wenigstens einem der Mehrzahl der Datensätze Einstellungen in einem Versuch geändert werden, den wenigstens einen der Mehrzahl der Datensätze von dem Medium besser zu lesen; das Speichern von einem oder mehreren Bereichen von wenigstens einem der Mehrzahl der Datensätze in einem reservierten Datenpuffer, wenn der eine oder die mehreren Bereiche mit dem C1-ECC korrigierbar sind, um einen oder mehrere gespeicherte Bereiche zu bilden; Aggregieren für jeden der Mehrzahl der Datensätze, von denen alle Bereiche davon im reservierten Datenpuffer gespeichert sind, aller gespeicherten Bereiche davon, um einen oder mehrere zusammengesetzte Datensätze zu bilden; das Bestimmen, ob C2-ECC dazu in der Lage ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; Korrigieren jeglicher noch vorhandener Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen mit C2-ECC, um einen oder mehrere korrigierte Datensätze zu bilden, und Senden des einen oder der mehreren korrigierten Datensätze an einen Host, wenn C2-ECC in der Lage ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; und erneutes Lesen von wenigstens einem ersten nicht korrigierten Datensatz von dem Medium unter Verwendung einer anderen Einstellung in einer ERP, wenn ein Fehler im ersten nicht korrigierten Datensatz nicht mit C2-ECC korrigierbar ist oder ein Fehler in einem beliebigen Bereich des ersten nicht korrigierten Datensatzes nicht mit C1-ECC korrigierbar ist, wobei der erste nicht korrigierte Datensatz vor einem beliebigen anderen nicht korrigierten Datensatz auf dem Medium in einer Leserichtung angeordnet ist.
  • In wiederum einer anderen allgemeinen Ausführungsform weist ein Verfahren zum Lesen von Daten von einem Medium ein Lesen eines anfänglichen Fehlerdatensatzes gefolgt von einer Mehrzahl von Datensätzen nach dem anfänglichen Fehlerdatensatz von einem Medium einmal oder mehrere Male mit verschiedenen Einstellungen auf bis: alle Zeilen des anfänglichen Fehlerdatensatzes in einem reservierten Datenpuffer zusammengesetzt sind und keine nicht korrigierbaren Fehler übrig bleiben, oder wenigstens ein nicht korrigierbarer Datensatz in einer Mehrzahl von zusammengesetzten Datensätzen übrig bleibt, oder eine maximale Anzahl von erneuten Lesevorgängen erreicht wurde; Speichern nach jedem erneutem Lesen des anfänglichen Fehlerdatensatzes und einem oder mehreren der Mehrzahl der Datensätze nach dem anfänglichen Fehlerdatensatz in der gleichen Vorwärtsbewegung von Zeilen eines jeden Datensatzes, die entweder keine Fehler aufweisen oder mit C1-ECC korrigierbar sind, in den jeweiligen reservierten Datenpufferbereichen, sofern eine passende Zeile nicht bereits im reservierten Datenpuffer vorhanden ist, die weniger korrigierte Fehler darin aufweist; Zusammensetzen des anfänglichen Fehlerdatensatzes aus den für den anfänglichen Fehlerdatensatz im reservierten Datenpuffer gespeicherten Zeilen, um einen anfänglichen zusammengesetzten Datensatz zu bilden; Korrigieren jeglicher verbleibender Fehler in dem anfänglichen zusammengesetzten Datensatz mit C2-ECC, um einen anfänglichen rekonstruierten Datensatz zu bilden; und Senden des anfänglichen rekonstruierten Datensatzes an einen Host und/oder Speichern des anfänglichen rekonstruierten Datensatzes in einem Speicher.
  • Wie Fachleute verstehen werden, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden. Demgemäß können Aspekte der vorliegenden Erfindung die Form einer reinen Hardwareausführungsform annehmen, einer reinen Softwareausführungsform (einschließlich Firmware, speicherresidenter Software, Microcode usw.) oder einer Ausführungsform, die Software- und Hardwareaspekte vereint, die im Allgemeinen hier alle als „Logik“, „Schaltkreis“, „Modul“ oder „System“ bezeichnet werden können. Weiterhin können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem computerlesbaren Medium oder mehreren computerlesbaren Medien, die computerlesbaren Programmcode enthalten, ausgeführt ist.
  • Es kann jede Kombination aus einem computerlesbaren Medium oder mehreren computerlesbaren Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, ohne jedoch darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung, -einrichtung oder jede geeignete Kombination der Vorherigen sein. Zu den weiteren speziellen Beispielen (eine nicht erschöpfende Liste) von computerlesbaren Speichermedien gehören folgende: eine elektrische Verbindung mit einem oder mehreren Kabeln, eine tragbare Computerdiskette, eine Festplatte, Direktzugriffsspeicher (RAM bzw. Random Access Memory), Festspeicher (ROM bzw. Read-only Memory), ein löschbarer programmierbarer Festspeicher (EPROM- oder Flash-Speicher), eine Glasfaser, ein tragbarer Compact Disc-Festspeicher (CD-ROM bzw. Compact Disc Read-only Memory), eine optische Speichereinrichtung, eine magnetische Speichereinrichtung oder jede geeignete Kombination der Vorherigen. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder einem Anweisungsausführungseinrichtung enthalten oder speichern kann.
  • Zu den computerlesbaren Signalmedien kann ein weitergeleitetes Datensignal mit computerlesbarem Programmcode darin gehören, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Solch ein weitergeleitetes Signal kann eine beliebige einer Mehrzahl an Formen annehmen, einschließlich, ohne jedoch darauf beschränkt zu sein, eine elektromagnetische Form, eine optische Form oder jede geeignete Kombination davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung oder in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder einer Anweisungsausführungseinrichtung kommunizieren, weiterleiten oder transportieren kann.
  • Auf einem computerlesbaren Medium enthaltener Programmcode kann mit jedem geeigneten Medium übertragen werden, darunter, ohne darauf beschränkt zu sein, Funk, Kabel, Glasfaser, HF usw. oder jede geeignete Kombination aus den Vorherigen.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder beliebigen Kombination einer oder mehreren Programmiersprachen geschrieben sein, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen, wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann ganz auf dem Computer des Benutzers ausgeführt werden, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernten Computer oder ganz auf dem entfernten Computer oder Server. In dem letzteren Szenario kann der entfernte Computer mit dem Computer des Benutzers über jede Art von Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN bzw. Local Area Network) oder ein Weitverkehrsnetzwerk (WAN bzw. Wide Area Network) oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet mit einem Internetdienstanbieter).
  • Aspekte der vorliegenden Erfindung werden im Folgenden mit Bezugnahme auf Flussdiagrammabbildungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagrammabbildungen und/oder der Blockdiagramme und Kombinationen der Blöcke in den Flussdiagrammabbildungen und/oder Blockdiagrammen durch Computerprogrammanweisungen implementiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines allgemeinen Standardcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Implementierung der im Flussdiagramm- und/oder Blockdiagrammblock bzw. -blöcken angegebenen Funktionen/Vorgänge erstellen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einrichtungen anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die auf dem computerlesbaren Medium gespeicherten Anweisungen ein Produkt erzeugen, das Anweisungen aufweist, die die Funktion/den Vorgang implementieren, der/die im Flussdiagramm- und/oder Blockdiagrammblock bzw. -blöcken angegeben sind.
  • Die Computerprogrammanweisungen können auch auf einem Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einrichtungen geladen werden, um die Durchführung einer Reihe operativer Schritte auf dem Computer, anderen programmierbaren Vorrichtungen oder anderen Einrichtungen zu veranlassen, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder der programmierbaren Vorrichtung ausgeführten Anweisungen die Prozesse zum Implementieren der Funktionen/Vorgänge bereitstellen, die in dem Flussdiagramm- und/oder Blockdiagrammblock bzw. -blöcken angegeben sind.
  • Das Flussdiagramm und die Blockdiagramme in den Figuren veranschaulichen die Architektur, Funktionalität und Vorgang möglicher Implementierungen der Systeme, Verfahren und Computerprogrammprodukte gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Flussdiagrammen oder in den Blockdiagrammen ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) aufweist. Es ist ebenso hervorzuheben, dass in einigen alternativen Implementierungen die im Block angegebenen Funktionen nicht in der in den FIG. angegeben Reihenfolge auftreten können. Zum Beispiel können in Abhängigkeit von der beinhalteten Funktionalität zwei aufeinanderfolgende Blöcke im Wesentlichen gleichzeitig ausgeführt werden, oder Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es ist auch hervorzuheben, dass jeder Block in den Blockdiagramm- und/oder Flussdiagrammabbildungen und die Kombinationen der Blöcke in den Blockdiagramm- und/oder Flussdiagrammabbildungen durch hardwarebasierte Spezialsysteme, die die angegebenen Funktionen oder Vorgänge ausführen, oder Kombinationen von Spezialhardware und Computeranweisungen implementiert werden können.
  • Es wird nun auf 2A Bezug genommen. Ein Schema eines Netzwerkspeichersystems 10 wird gemäß einer Ausführungsform dargestellt. Das Netzwerkspeichersystem 10 ist nur ein Beispiel eines geeigneten Speichersystems und soll keine Einschränkung des Verwendungsbereichs oder der Funktionalität der Ausführungsformen der in dem vorliegenden Dokument beschriebenen Erfindung darstellen. Unabhängig davon ist das Netzwerkspeichersystem 10 dazu geeignet, implementiert zu werden und/oder eine beliebige der oben beschriebenen Funktionalitäten auszuführen.
  • Im Netzwerkspeichersystem 10 gibt es ein Computersystem/einen Server 12, das/der mit vielen anderen allgemeinen oder speziellen Computingsystem-Umgebungen oder -konfigurationen betriebsfähig ist. Beispiele bekannter Computing-Systeme, -Umgebungen und/oder -Konfigurationen, die für die Verwendung mit dem Computersystem/Server 12 geeignet sein können, umfassen, ohne darauf beschränkt zu sein, Personalcomputersysteme, Server-Computersysteme, Thin Clients, Thick Clients, Hand-held- oder Laptop-Geräte, Multiprozessor-systeme, Mikroprozessor-basierte Systeme, Settop-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computingumgebungen, die beliebige der obigen Systeme oder Geräte enthalten, und Ähnliches.
  • Das Computersystem/der Server 12 kann im allgemeinen Kontext von vom Computer ausführbaren Anweisungen beschrieben werden, wie Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können die Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakten Datentypen implementieren. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen eingesetzt werden, in denen Aufgaben durch Verarbeitungsgeräte an Fernstandorten ausgeführt werden, die über ein Kommunikationsnetzwerk verbunden sind. In einer verteilten Cloud-Computingumgebung können sich die Programmmodule auf Speichermedien von sowohl lokalen wie entfernten Computersystemen, einschließlich Arbeitsspeicher-Speichergeräten, befinden.
  • Wie in 2A dargestellt, wird ein Computersystem/ein Server 12 im Netzwerkspeichersystem 10 als eine allgemeine Computingeinrichtung dargestellt. Die Komponenten des Computersystems/Servers 12 können aufweisen, ohne jedoch darauf beschränkt zu sein, einen oder mehrere Prozessoren oder Verarbeitungseinheiten 16, einen Systemspeicher 28 und einen Bus 18, der verschiedene Systemkomponenten einschließlich des Systemspeichers 28 mit dem Prozessor 16 verbindet.
  • Der Bus 18 stellt einen oder mehrere eines beliebigen von verschiedenen Typen von Busstrukturen dar, darunter einen Speicherbus oder einen Speichercontroller, einen Peripheriebus, einen beschleunigten Grafikport (AGP bzw. Accelerated Graphics Port) und einen Prozessor oder lokalen Bus, unter Verwendung beliebiger von verschiedenen Busarchitekturen. Zu diesen Architekturen gehören zum Beispiel, ohne darauf beschränkt zu sein, der Industry Standard Architecture(ISA)-Bus, der Micro-Kanal-Architecture(MCA)-Bus, der Enhanced-ISA(EISA)-Bus, der lokale Video-Electronics-Standards-Association(VESA)-Bus und der Peripheral-Component-Interconnects(PCI)-Bus.
  • Das Computersystem/der Server 12 enthält üblicherweise eine Mehrzahl von computerlesbaren Medien. Solche Medien können beliebige verfügbare Medien sein, auf die ein Computersystem/Server 12 zugreifen kann, und dies umfasst sowohl flüchtige wie auch nicht-flüchtige Medien, entfernbare und nicht-entfernbare Medien.
  • Der Systemspeicher 28 kann von einem Computersystem lesbare Medien in der Form von flüchtigem Speicher, wie Direktzugriffsspeicher (RAM) 30 und/oder Cachespeicher 32 aufweisen. Das Computersystem/der Server 12 kann weiterhin andere entfernbare/nicht-entfernbare, flüchtige/nicht-flüchtige Computersystem-Speichermedien beinhalten. Nur als Beispiel kann das Speichersystem 34 zum Lesen von und zum Schreiben auf nicht-entfernbare, nicht-flüchtige Magnetmedien – nicht dargestellt und in der Regel als „Festplatte” bezeichnet – vorgesehen werden, die in einem HDD betrieben werden können. Wenngleich nicht dargestellt, kann ein magnetisches Plattenlaufwerk zum Lesen von und zum Schreiben auf ein entfernbares, nicht-flüchtiges magnetisches Plattenmedium (wie z. B. einer „Diskette“) und ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf ein entfernbares, nicht-flüchtiges optisches Plattenmedium, wie eine CD-ROM, DVD-ROM oder ein anderes optisches Medium vorgesehen sein. In solchen Fällen kann ein jedes mit dem Bus 18 über eine oder mehrere Datenmedienschnittstellen verbunden sein. Wie im Folgenden weiter dargestellt und beschrieben, kann ein Speicher 28 wenigstens ein Programmprodukt mit einer Gruppe von (z. B. wenigstens einem) Programmmodulen enthalten, die dazu ausgebildet sind, die in diesem Dokument beschriebenen Funktionen der Ausführungsformen der Erfindung auszuführen.
  • Ein Programm/Dienstprogramm (bzw. Utility) 40 mit einer Gruppe von (wenigstens einem) Programmmodulen 42 kann beispielsweise im Arbeitsspeicher 28 gespeichert werden, ohne darauf beschränkt zu sein, wie auch ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten. Ein jedes von dem Betriebssystem, einem Anwendungsprogramm oder mehreren Anwendungsprogrammen, weiteren Programmmodulen und Programmdaten oder einer bestimmten Kombination daraus kann eine Implementierung einer Netzwerkumgebung beinhalten. Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Methodologien der Ausführungsformen der Erfindung, wie in diesem Dokument beschrieben, aus.
  • Das Computersystem/der Server 12 kann auch mit einem oder mehreren externen Geräten 14 kommunizieren, wie einer Tastatur, einem Zeigegerät, einem Bildschirm 24 usw.; einem oder mehreren Geräten, die einem Benutzer ermöglichen, mit dem Computersystem/Server 12 zu interagieren; und/oder beliebigen Geräten (z. B. Netzwerkkarte, Modem usw.), die einem Computersystem/Server 12 ermöglichen, mit einem oder mehreren weiteren Computinggeräten zu kommunizieren. Eine solche Kommunikation kann über Input/Output(I/O bzw. Eingabe/Ausgabe)-Schnittstellen 22 erfolgen. Ferner kann ein Computersystem/Server 12 mit einem oder mehreren Netzwerken über einen Netzwerkadapter 20 kommunizieren, wie einem lokalen Netzwerk (LAN), einem allgemeinen Weitbereichsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z. B. das Internet). Wie dargestellt, kommuniziert der Netzwerkadapter 20 mit den anderen Komponenten des Computersystems/Servers 12 über den Bus 18. Es versteht sich, dass obwohl nicht dargestellt, andere Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden können. Zu den Beispielen gehören, ohne jedoch darauf beschränkt zu sein: Microcode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
  • 2B veranschaulicht ein vereinfachtes Bandlaufwerk 100 eines bandbasierten Datenspeichersystems, das gemäß verschiedener Ausführungsformen eingesetzt werden kann. Wenngleich in 2B eine bestimmte Implementierung eines Bandlaufwerks dargestellt wird, ist hervorzuheben, dass die in dem vorliegenden Dokument beschriebenen Ausführungsformen im Kontext eines jeden beliebigen Typs von Bandlaufwerkssystem implementiert werden können.
  • Wie dargestellt, sind eine Bandzuführungs-Cartridge 120 und ein Aufwickelrad 121 vorgesehen, um ein Band 122 zu halten. Eine oder mehrere der Räder können einen Bestandteil einer entfernbaren Kassette bilden und sind nicht notwendigerweise Bestandteil des Systems 100. Das Bandlaufwerk, wie in 2B dargestellt, kann weiterhin Antriebsmotor(en) aufweisen, um die Bandzuführungs-Cartridge 120 und das Aufnahmerad 121 anzutreiben, um das Band 122 über einen Bandkopf 126 eines beliebigen Typs zu führen.
  • Führungen 125 führen das Band 122 über den Bandkopf 126. Ein solcher Bandkopf 126 ist wiederum mit einer Steuereinheit-Baugruppe 128 über ein Kabel 130 verbunden. Die Steuereinheit 128 weist in der Regel einen Servo-Kanal 134 und einen Datenkanal 136 auf, der die Verarbeitung des Datenflusses beinhaltet. Sie steuert die Räderbewegung (in 2B nicht dargestellt) und die Kopffunktionen, wie das Folgen der Spur, das Schreiben, Lesen usw. Das Kabel 130 kann Lese/Schreib-Schaltkreise aufweisen, um auf dem Band 122 aufzunehmende Daten an den Kopf 126 zu übertragen und um Daten zu empfangen, die von dem Kopf 126 von Band 122 gelesen wurden. Ein Aktuator 132 versetzt den Kopf 126 auf eine Gruppe von Spuren auf dem Band 122, um einen Lese- oder einen Schreibvorgang durchzuführen.
  • In einer Ausführungsform kann das Bandlaufwerk 100 einen Datenpuffer 136 aufweisen, auf den über das Bandlaufwerk 100 und die Steuereinheit 128 zugegriffen werden kann. Dieser Datenpuffer 136 kann in einen oder mehrere Abschnitte aufgeteilt werden, wobei ein Abschnitt ein reservierter Datenpuffer 138 ist, der zum Speichern von speziellen Datensätzen während Lesevorgängen vom Band 122 verwendet wird.
  • Eine Schnittstelle kann auch zur Kommunikation zwischen den Bandlaufwerk 100 und einem Host (integriert oder extern) vorgesehen werden, um die Daten zu senden und zu empfangen und den Betrieb des Bandlaufwerks 100 zu steuern und den Status des Bandlaufwerks 100 an den Host zu kommunizieren, wie für Fachleute verständlich ist.
  • Verschiedene Arten von Fehlerkorrekturcode(ECC)-Schemas werden im Datenspeicher verwendet, um sehr geringe Bit-Fehlerraten zu erzielen, zum Beispiel sind Magnetband- und optische Speicherprodukte dazu ausgelegt, unter normalen Betriebsbedingungen Bit-Fehlerraten im Bereich von 1 × 10–17 bis 1 × 10–19 sicherzustellen. Lineare Blockcodes, wie Reed-Solomon(RS)-Codes und Paritätsprüfungscodes mit geringer Dichte (LDPC bzw. Low-Density Parity-Check) sind im Allgemeinen die bevorzugten in Datenspeicherprodukten verwendeten ECC-Schemas.
  • Gemäß einer Ausführungsform verwendet ein rekonstruierendes Datenwiederherstellungsverfahren einen reservierten Datenpufferbereich des Datenpuffers eines Bandlaufwerks, um Daten aus wiederholten Leseversuchen zur Wiederherstellung von Datensätzen zu speichern. Die kodierten Daten werden iterativ rekonstruiert, da die Fehlerbehebungsprozedur (ERP) das erneute Lesen von Datensätzen von einem Band in den reservierten Datenpuffer wiederholt.
  • Nach jedem Lesevorgang der Daten von Band kann bestimmt werden, welche Zeilen – wobei jede Zeile C1-kodierte Daten enthält – zufriedenstellend sind (als gute C1-Zeilen bezeichnet) und welche nicht. Diese Bestimmung kann darauf basieren, ob die C1-Zeile keine Fehler aufweist oder ob die Fehler mit C1-ECC korrigierbar sind. Im ersten Lesevorgang werden alle Zeilen im reservierten Datenpuffer unabhängig von der Qualität des Lesevorgangs gespeichert. In jedem nachfolgendem Lesevorgang der Daten von Band werden jedoch nur diejenigen C1-Zeilen, die besser sind als eine bereits im reservierten Datenpuffer gespeicherte C1-Zeile, in den reservierten Datenpuffer geschrieben, um die aktuell darin gespeicherte C1-Zeile zu ersetzen. In einer Ausführungsform können die C1-Zeilen in dem reservierten Datenpuffer gespeichert werden, nachdem ein ERP-Wiederholungsversuchsschritt abgeschlossen wurde (zum Beispiel ein erneuter Lesevorgang von Daten vom Band).
  • Gemäß einem Szenario, wenn der Fehler zufällig zwischen jedem der ERP-Wiederholungsversuchsschritte auftritt, dann werden verschiedene C1-Zeilen in jedem erneuten ERP-Lesevorgang nicht korrigierbar sein. Demgemäß wird durch Aggregation von guten C1-Zeilen im reservierten Datenpuffer ein kompletter Datenlesevorgang mit guten C1-Zeilen im reservierten Datenpuffer durch wiederholte ERP-Wiederholungsversuchsschritte zusammengestellt. Demgegenüber wird bei herkömmlichen Verfahren ein jeder erneute Lesevorgang separat analysiert und der gesamte Datensatz wird unabhängig von den bereits vorhandenen guten C1-Zeilen als nicht korrigierbar erachtet, wenn eine ausreichende Anzahl von schlechten C1-Zeilen gelesen wurden, und ein anderer ERP-Wiederholungsversuchsschritt wird durchgeführt. Bei dem aktuellen Verfahren kann jeder erneute Lesevorgang gute C1-Zeilen im reservierten Datenpuffer ansammeln, und wenn C2-ECC nachfolgend in der Lage ist, sie zu korrigieren, dann wird der Fehler behoben, die ERP-Wiederholungsversuchsschritte werden beendet und der gesamte rekonstruierte Datensatz wird aus dem reservierten Datenpuffer kopiert und an den Host gesendet.
  • Durch Nutzung dieser hier beschriebenen Verfahren gemäß verschiedener Ausführungsformen zum Lesen von Daten von einem Band ist es möglich, Fehler zu beheben, selbst wenn keine Hardware-Einstellung verfügbar ist, die dazu geeignet ist, die Daten vom Band in einem wiederherstellbaren Zustand in einem einzelnen Wiederholungsversuch zu lesen. Dieses darin begründet, dass die hierin beschriebenen Verfahren mehrere Wiederholungsversuchsschritte verwenden und wiederherstellbare Daten aus jedem erneutem Lesevorgang im reservierten Datenpuffer speichern, um einen gesamten Datensatz zusammenzustellen, der dann wiederherstellbar ist. Wenn zum Beispiel eine erste Hardware-Einstellung wirksam ist, um die Daten für eine erste Hälfte des Datensatzes zu lesen, und eine zweite Hardware-Einstellung wirksam ist, um die Daten für eine zweite Hälfte des Datensatzes zu lesen, sind die hier beschriebenen Verfahren dazu geeignet, den Fehler mit zwei Wiederholungsversuchen zu beheben, die diese beiden verschiedenen Hardware-Einstellungen anwenden, wohingegen ein herkömmliches Verfahren nicht dazu in der Lage wäre, die Daten in den beiden Wiederholungsversuchen zu lesen. Das liegt darin begründet, dass gemäß dem aktuellen Verfahren wenigstens eine dritte Hardware-Einstellungen oder sogar mehrere Hardware-Einstellungen in manchen Fällen erforderlich sein würden, um die Daten für den gesamten Datensatz zu lesen. Wenn keine einzelne Hardware-Einstellung vorhanden ist, die dazu geeignet ist, den gesamten Datensatz mit herkömmlichen Verfahren zu lesen, sind die Daten nicht zum Lesen geeignet.
  • Daher wird durch Verwendung der hier beschriebenen Verfahren gemäß verschiedener Ausführungsformen die für ERP aufgewendete Zeit verkürzt, da gute C1-Zeilen nach jedem erneuten Lesevorgang mit verschiedenen Hardware-Einstellungen (ein erneuter ERP-Wiederholungsversuch) im reservierten Datenpuffer angesammelt werden, und dann zusammengefügt werden, um den gesamten Datensatz zu rekonstruieren. Auf diese Weise kann die Anzahl der wiederholten ERP-Wiederholungsversuche insgesamt zur Behebung des Fehlers beitragen und zu einer schnelleren Wiederherstellung der gelesenen Daten führen. Bei Verwendung aktueller Verfahren kann der Datensatz nicht wiederhergestellt werden, außer die vom Band in einem einzelnen ERP-Wiederholungsversuch gelesenen Daten weisen weniger Fehler-Bytes auf als der zulässige C1/C2-Grenzwert. Demgemäß werden unter Verwendung herkömmlicher Verfahren ERP-Wiederholungsversuche mehrere Male wiederholt, bis das Laufwerk ein geeignete Hardware-Einstellung findet, um den fehlerhaften Datensatz vollständig in einem einzelnem erneuten Leseversuch zu lesen. Wenn zum Beispiel in dem oben beschriebenen Szenario eine erste Hardware-Einstellung wirksam ist, um die Daten für eine erste Hälfte des Datensatzes zu lesen, und eine zweite Hardware-Einstellung wirksam ist, um die Daten für eine zweite Hälfte des Datensatzes zu lesen, sind herkömmliche Verfahren nicht dazu geeignet, den Fehler mit diesen zwei Wiederholungen zu behandeln, die die zwei verschiedenen Hardware-Einstellungen anwenden, und müssen stattdessen wenigstens eine dritte Hardware-Einstellung versuchen. Wenn diese Einstellung nicht dazu geeignet ist, den Fehler für den gesamten Datensatz zu beheben, dann muss eine vierte Hardware-Einstellung oder weitere Hardware-Einstellungen müssen versucht werden. Durch diesen Prozess kann gezeigt werden, dass herkömmliche Verfahren nicht in der Lage sind, trotz einer Reihe von modifizierten Hardware-Einstellungen, einen solchen Datensatz erfolgreich in einem einzelnen erneuten Lesevorgang zu lesen. Dies erhöht die Zeit zur Behebung des Fehlers für den gesamten Datensatz im Vergleich zu dem, was mit dem hier beschriebenen Verfahren möglich ist.
  • Datensätze werden auf Band geschrieben, und jeder Datensatz besitzt eine Nummer (Datensatznummer), die Datensätzen sequenziell ab dem Beginn des Bandes zugewiesen wird. Wenn zum Beispiel das Bandlaufwerk versucht, den Datensatz #N (DS#N) zu lesen, kann DS#N entweder ohne Fehler gelesen werden, mit Fehler gelesen werden, die mit C1/C2-ECC korrigierbar sind, oder kann aufgrund einer hohen Fehlerzahl nicht gelesen werden (zum Beispiel kann C1/C2-ECC die Fehler nicht korrigieren). Selbst wenn nicht alle Daten durch C1/C2-ECC wiederhergestellt werden können, können einige gute C1-Zeilen immer noch von Band gelesen werden, und diese guten C1-Zeilen können vom Band im reservierten Datenpuffer auf dem Bandlaufwerk gespeichert werden. Auf den ersten Lesewiederholungsversuch vom Band folgend, können in einem Ansatz alle C1-Zeilen im reservierten Datenpuffer gespeichert werden.
  • Jede C1-Zeile verfügt über Informationen, die die Datensatznummer angibt, aus dem die C1-Zeile gelesen wurde (zu welchem Datensatz die C1-Zeile gehört), und das Bandlaufwerk kann dies zur Prüfung der Gültigkeit der C1-Zeile verwenden (DS#N oder nicht). Wenn die C1-Zeile zu DS#N gehört, dann kann in einem anderen Ansatz das Syndrom der C1-Zeile geprüft werden, und das Syndrom kann angeben, ob der Fehler über die C1-ECC-Korrekturleistung korrigierbar ist. Nach der Verifizierung kopiert das Bandlaufwerk die C1-Zeile in den reservierten Datenpufferbereich. Wenn die nächste ERP ebenso versucht, DS#N von Band zu lesen, sind die Validitätsprüfungen der C1-Zeile und der Datensatznummer bereits abgeschlossen, was Zeit spart. Wenn neue gute C1-Zeilen vorhanden sind, werden diese neuen guten C1-Zeilen ebenso in den reservierten Datenpuffer kopiert (aggregiert). Wenn eine ausreichende Anzahl von C1-Zeilen so aggregiert sind, versucht das Laufwerk dann die Daten über C2-ECC zu korrigieren. Wenn mit C2-ECC alle Fehler in den aggregierten C1-Zeilen korrigiert werden können, gibt dies an, dass das Bandlaufwerk einen gesamten Datensatz erfolgreich rekonstruiert hat, und das Bandlaufwerk kann dann diesen Datensatz an den Host übertragen.
  • In Bandbereichen, in denen die Fehlerrate aufgrund einer Medienbeschädigung, eines unvollständigen Schreibvorgangs, von Daten, die in älteren Formaten geschriebenen wurden usw. hoch ist, kann das Laufwerk möglicherweise viele Datensätze in der Umgebung dieses Bandbereichs nicht mehr erfolgreich lesen. Dies wird als Fehlerhäufung (Error Burst) bezeichnet. In diesen Fällen sind die gleichen Wiederherstellungsprozeduren oftmals für jeden der problematischen Datensätze erfolgreich; mit dem aktuellen Verfahren wird jedoch jeder problematische Datensatz einzelnen in der numerischen Folge wiederhergestellt, ohne eine erfolgreiche Wiederherstellung der vorhergehenden Datensätze zu berücksichtigen. Wenn daher jede Fehlerbehebungssitzung viele Wiederholungsversuche (viele Iterationen von ERP) für jeden Datensatz erfordert, dann benötigt das Bandlaufwerk aufgrund der mehreren Backhitches, die zum erneuten Lesen eines einzelnen Datensatzes von Band erforderlich sind, lange Zeit, um Daten in diesem Bandbereich erfolgreich zu lesen. Dies verschlechtert die Host-Performance und kann auch die Medien weiter beschädigen.
  • Wenn gemäß einer Ausführungsform bestimmte Kriterien erfüllt wurden (zum Beispiel Erfassung einer Fehlerhäufung oder eines bestimmten Cartridge-Typs), dann kann ein rekonstruierendes Datenwiederherstellungsverfahren auf mehrere Datensätze in einem einzelnen Lesevorgang angewendet werden (zum Beispiel wird alles gleichzeitig in einer ERP-Sitzung, in einer einzelnen Aktion, in der gleichen Vorwärtsbewegung usw. gelesen). Das ERP-Verfahren kann für mehrere Datensätze durchgeführt werden, die direkt auf den anfänglichen Fehlerdatensatz während des gleichen ERP-Wiederholungsversuches folgen und in wirksamer Weise mehrere Datensätze wiederherstellen, ohne dass jeder Datensatz in einer anderen ERP-Sitzungen gelesen oder erneut gelesen werden muss. In der Regel versucht ein Laufwerk nicht, mehrere Datensätze in der gleichen Vorwärtsbewegung wiederherzustellen; stattdessen ist es üblich, Beschädigungen in einem Datensatz zu beheben, bevor zum nächsten Datensatz weitergegangen wird. Dies liegt darin begründet, dass wenn ein Datensatz nicht durch die ERP wiederhergestellt werden kann (er hat zum Beispiel zu viele nicht korrigierbare Fehler), dann wird davon ausgegangen, dass der nächste Datensatz bzw. die nächsten Datensätze ebenso nicht wieder herstellbar sein können. Aus diesem Grund wird in der Regel gemäß herkömmlichen Verfahren angenommen, dass kein Grund besteht, den Lesevorgang über einen beschädigten Datensatz hinaus in der gleichen Vorwärtsbewegung fortzusetzen.
  • In Situationen jedoch, in denen eine rekonstruierende Wiederherstellung von Daten als wirksam erachtet wird, ist gemäß einer Ausführungsform eine rekonstruierende Datenwiederherstellungs-ERP in der Lage, „gute” C1-Zeilen für mehrere Datensätze gleichzeitig (zum Beispiel während des gleichen ERP-Schritts) zu speichern und anzusammeln. Nachdem der anfängliche Fehlerdatensatz mit dem angesammelten Daten wiederhergestellt werden konnte, kann der rekonstruierte Datensatz dann an den Host übertragen werden. Zu diesem Zeitpunkt werden die Gruppen von Datensätzen analysiert, die gute C1-Zeilen in ihren jeweiligen reservierten Datenpuffer bei jedem Wiederholungsversuch des anfänglichen Fehlerdatensatzes angesammelt haben. Das Laufwerk kann dann erfassen, ob der nächste Datensatz, ein Datensatz irgendwo in der Mitte der Gruppe von Datensätzen oder der letzte Datensatz der mehreren Datensätze ebenso eine Beschädigung oder einen Fehler aufweist. Wenn ja, dann werden die guten C1-Zeilen, die bereits in den jeweiligen reservierten Datenpufferbereichen davon angesammelt wurden, sofort geprüft, um festzustellen, ob ausreichend gute verwendbare C1-Zeilen vorliegen, um die nachfolgenden Datensätze ohne weitere ERP (und Backhitches) zu korrigieren.
  • Der erste Datensatz in der Gruppe der mehreren Datensätze, der nicht erfolgreich gelesen wurde oder der nicht aus den angesammelten Daten rekonstruiert werden kann, führt dazu, dass eine zweite ERP-Sitzung beginnt. Die zweite ERP-Sitzung markiert diesen neuen Fehlerdatensatz als den anfänglichen Fehlerdatensatz und nachfolgende Backhitches und Lesewiederholungsversuche können auch dazu führen, dass mehrere nachfolgende Datensätze in der gleichen Vorwärtsbewegung gelesen werden. Dieses Verfahren ist aus zwei Gründen besonders wirksam bei der Reduzierung von Backhitches. Wenn als Erstes alle der mehreren Datensätze erfolgreich gelesen werden können, dann kann das Laufwerk die Bewegung nach dem letzten Datensatz neu starten. Zweitens, wenn eine zweite ERP-Sitzung für einen Datensatz an einer beliebigen Stelle zwischen den mehreren Datensätzen durchgeführt werden muss, dann muss das Laufwerk nur den bestimmten Datensatz und nicht den anfänglichen Fehlerdatensatz neu positionieren. Dieses Verfahren ist im Vergleich zu herkömmlichen Verfahren in der Lage, die erforderliche Zeit, die für die Wiederherstellung von Daten in einem Bandbereich mit hohen Fehlerraten benötigt wird, erheblich zu reduzieren.
  • Wenn eine Wiederherstellung für den anfänglichen Fehlerdatensatz durchgeführt wird, dann wird das hier gemäß verschiedenen Ausführungsformen beschriebene rekonstruierende ERP-Verfahren für mehrere Datensätze während des gleichen ERP-Wiederholungsversuches versucht. Die insgesamt zum Lesen der mehreren Datensätze verstrichene Zeit wird geringer sein als die bei einem herkömmlichen Verfahren benötigte Gesamtzeit, bei dem das Medium für jeden ERP-Leseversuch eines einzelnen Datensatzes zurückgespielt wird, bis er gelesen wird, und dann das Medium erneut für jeden erneuten ERP-Leseversuch für den nächsten Datensatz zurückgespult wird usw. Wenn zum Beispiel ein ERP-Wiederholungsversuch 3 Sekunden dauert und das vorgeschlagene rekonstruierende ERP-Verfahren zwei erneute Versuche verwendet (Backhitch und dann erneutes Lesen der Datensätze), um den Fehler zu beheben, dann beträgt die für diese Wiederherstellung aufgewendete Zeit 3·2 = 6 Sekunden. In einem Fall, in dem zehn Datensätze ebenso eine Fehlerbehebung erfordern (für den gleichen Fehler oder für verschiedene Fehler), vergehen dann 10·3·2 = 60 Sekunden, um die Fehler zu beheben, wenn für einen jeden der zehn Datensätze bei einem herkömmlichen ERP-Verfahren ERP versucht wird. Wenn die Verwendung der vorgeschlagenen rekonstruierenden ERP versucht, mehrere Datensätze gleichzeitig zu lesen (10 Datensätze werden gleichzeitig gelesen), beträgt die verstrichene Zeit zum Wiederherstellen der 10 Datensätze immer noch 3·2 = 6 Sekunden, da kein zeitlicher Unterschied beim Lesen eines Datensatzes und der zehn Datensätze gleichzeitig von Band besteht. Die meiste Zeit, die bei einem Lesevorgang verstreicht, ist auf das Backhitching des Mediums zurückzuführen. Bei einem Bandmedium ist das Zurückspulen (Backhitching) der Zustand, indem die Bandbewegung umgekehrt wird, um die gleiche Bandposition noch einmal zu lesen, was etwa 3 Sekunden dauert, wobei aber die zum Lesen der Daten benötigte Zeit etwa 0,0 x Sekunden beträgt (wobei x eine Zahl zwischen 1 bis 9 ist). Aufgrund dieses rekonstruierenden ERP-Verfahrens wird die in einer Fehleranhäufungssituation verstrichene Zeit auf etwa 1/10 eines herkömmlichen Verfahrens reduziert, zum Beispiel gleicht die beim rekonstruierenden ERP-Verfahren verstrichene Zeit in etwa dem Kehrwert der Anzahl der zu lesenden mehreren Datensätze (1/10 in diesem Beispiel).
  • Es wird nun auf 3A3B Bezug genommen. Ein Verfahren 300 von einer mehrere Datensätze rekonstruierenden ERP wird gemäß einer Ausführungsform dargestellt. Das Verfahren 300 kann in verschiedenen Ausführungsformen gemäß der vorliegenden Erfindung unter anderem in einer beliebigen der in 1 bis 2B dargestellten Umgebungen ausgeführt werden. Es können natürlich mehr oder weniger Vorgänge als die im Besonderen in 3A bis 3B beschriebenen im Verfahren 300 enthalten sein, wie für Fachleute bei Lektüre der vorliegenden Beschreibungen verständlich ist.
  • Es wird nun auf 3A Bezug genommen. In Vorgang 302 wird ein erster Zähler (dargestellt durch y) auf null gesetzt (y = 0). Der erste Zähler kann zum Zählen einer Anzahl von erneuten Leseversuchen des anfänglichen Fehlerdatensatzes zusammen mit einem oder mehreren einer Mehrzahl von nachfolgenden Datensätzen von dem Medium zur gleichen Zeit verwendet werden.
  • In Vorgang 304 wird der anfängliche Fehlerdatensatz (DS#N) vom Medium gelesen, gefolgt vom Lesen einer Mehrzahl von nachfolgenden Datensätzen. Für jeden nachfolgenden erneuten Lesevorgang wird der gleiche Datensatz (DS#N) von dem Medium gelesen, aber er wird unter Verwendung anderer Einstellungen gelesen, die auch für die Mehrzahl der Datensätze gelten, die in der gleichen Vorwärtsbewegung gelesen werden. DS#N kann an einem Beginn des Mediums, an einer Position in der Mitte oder am Ende des Mediums liegen. Die anfängliche fehlerhafte DS#N wird erneut gelesen, bis eine maximal zulässige Anzahl von Datensatzlesevorgängen (ERPmax) erreicht wird, oder bis DS#N korrekt rekonstruiert werden kann, je nachdem, was als Erstes eintritt.
  • In Vorgang 306 wird bestimmt, ob der anfängliche Fehlerdatensatz DS#N vom Medium gelesen werden kann, was angibt, dass keine Fehler im Datensatz vorliegen. Ist dies der Fall, dann geht das Verfahren 300 zu Vorgang 312 weiter und endet. In Vorgang 312 endet das Verfahren 300, wobei der Datensatz wiederhergestellt ist. In einem Ansatz kann der Datensatz an den Host gesendet werden. Andernfalls, wenn der Datensatz nicht fehlerfrei gelesen werden kann, geht das Verfahren 300 zu Vorgang 308 weiter.
  • In Vorgang 308 wird bestimmt, ob der erste Zähler kleiner ist als die maximal zulässige Anzahl von Datensatz-Lesevorgängen (ERP-Zyklen), zum Beispiel y < ERPmax. Wenn der erste Zähler gleich der maximal zulässigen Anzahl von Datensatz-Lesevorgängen ist, wie in Vorgang 310 dargestellt, wird der Datensatz DS#N nicht wiederhergestellt, ist nicht lesbar, und das Verfahren endet. In einem Ansatz kann der Host über den misslungenen Lesevorgang des Datensatzes informiert werden.
  • Wenn in Vorgang 314 der erste Zähler kleiner ist als die maximal zulässige Anzahl von Datensatz-Lesevorgängen (ERPmax), wird ein dritter Zähler auf 0 (z = 0) festgelegt, mit dem die maximale Anzahl der Datensätze gezählt wird, die in den Lesewiederholungsversuchen in der Vorwärtsbewegung gelesen werden sollen. Das Verfahren 300 setzt mit dem Vorgang 316 fort, und wobei ein zweiter Zähler auf 0 (x = 0) festgelegt wird, mit dem die Gesamtzeilen des Datensatz-Arrays gezählt werden können. Dann geht das Verfahren 300 zu Vorgang 318 weiter.
  • In Vorgang 318 wird bestimmt, ob der zweite Zähler kleiner ist als die gesamten Zeilen in dem Datensatz-Array, zum Beispiel x < Rowstotal für DS#N. Ist dies der Fall, geht das Verfahren 300 zu Vorgang 320 weiter; andernfalls geht das Verfahren zu Vorgang 328 weiter.
  • In einem optionalen Vorgang 320 wird mit einer Validitätsprüfung bestimmt, ob die aktuelle Zeile, die Zeile(x), zum anfänglichen Fehlerdatensatz (DS#N) gehört. Wenn die Zeile zum anfänglichen Fehlerdatensatz gehört, geht das Verfahren 300 zu Vorgang 322 weiter; andernfalls geht das Verfahren zu Vorgang 326 weiter.
  • In Vorgang 322 wird bestimmt, ob Fehler in der aktuellen Zeile mit C1-ECC für die Zeile in einem Prozess behoben werden können, der als Syndrom-Prüfung bezeichnet wird, was ausführlicher mit Bezugnahme auf 6 beschrieben wird. Es wird weiterhin 3A Bezug genommen. Wenn Fehler in der aktuellen Zeile behoben werden können, geht das Verfahren 300 zu Vorgang 324 weiter; andernfalls geht das Verfahren zu Vorgang 326 weiter.
  • In Vorgang 324 wird die aktuelle Zeile kopiert und im reservierten Datenpuffer gespeichert, um in den gesamten Datensatz zusammengestellt zu werden, nachdem alle Zeilen darin gespeichert wurden und nur behebbare Fehler darin enthalten sind.
  • In Vorgang 326 wird der zweite Zähler um 1 erhöht, zum Beispiel x = x + 1. Dies führt dazu, dass die nächste Instanz der Vorgänge 316 bis 324 für die nächste Zeile des Datensatzes durchzuführen ist.
  • In Vorgang 328 wird bestimmt, ob der dritte Zähler kleiner als eine Gesamtzahl der Datensätze ist, die nachfolgend auf den anfänglichen Fehlerdatensatz (M) gelesen werden, zum Beispiel z < M. Wenn der dritte Zähler kleiner ist als die Gesamtzahl der in der gleichen Vorwärtsbewegung gelesenen Datensätze, die auf den anfänglichen Fehlerdatensatz folgen, dann müssen mehr Datensätze geprüft werden, und der dritte Zähler wird in Vorgang 330 um 1 erhöht, z. B. z = z + 1. Dann geht das Verfahren 300 zu Vorgang 332 weiter, wo der nächste Datensatz DS#N + z von dem Medium gelesen wird, und das Verfahren 300 geht zu Vorgang 316, um den zweiten Zähler zurückzusetzen.
  • Wenn der dritte Zähler gleich (oder größer) als die Gesamtzahl der in der gleichen Vorwärtsbewegung gelesenen Datensätze ist, die auf den anfänglichen Fehlerdatensatz (M) folgen, geht das Verfahren 300 zu Zeiger A weiter, was in 3B beschrieben wird.
  • Es wird auf 3B Bezug genommen. Von Zeiger A aus geht das Verfahren 300 zu Vorgang 334 weiter, wo ein vierte Zähler auf 0 gesetzt wird, zum Beispiel i = 0, was zum Zählen vom ersten Fehlerdatensatz zum ersten nicht wiederherstellbaren Datensatz in der Mehrzahl der Datensätze verwendet werden kann, die in der gleichen Vorwärtsbewegung gelesen werden, oder zum letzten Datensatz in der Mehrzahl, wenn alle Lesevorgänge erfolgreich waren. Dann wird in Vorgang 336 mit C2-ECC versucht, alle Fehler in dem aggregierten Datensatz DS#N+i zu korrigieren, da alle Zeilen im Datensatz nun im reservierten Datenpuffer gespeichert wurden. In der ersten Iteration, wobei i = 0, wird der Datensatz DS#N, der anfängliche Fehlerdatensatz, geprüft.
  • In Vorgang 338 wird bestimmt, ob alle Fehler im Datensatz DS#N + i mit C2-ECC behoben werden können. Ist dies der Fall, geht das Verfahren 300 zu Vorgang 340 weiter; andernfalls geht das Verfahren zu Vorgang 344 weiter.
  • In Vorgang 340 wird der vierte Zähler um 1 erhöht, zum Beispiel i = i + 1. Dann wird in Vorgang 342 bestimmt, ob der vierte Zähler kleiner oder gleich der Gesamtzahl der gelesenen Datensätze (M) ist, zum Beispiel i ≤ M. Wenn der vierte Zähler kleiner oder gleich der Gesamtzahl der gelesenen Datensätze ist, geht das Verfahren 300 in einer Schleife zurück zu Vorgang 336, um den nächsten Datensatz zu prüfen.
  • Wenn die Gesamtanzahl der Datensätze geprüft wurde, geht das Verfahren 300 zu Vorgang 344 weiter, wo bestimmt wird, ob der vierte Zähler größer als 0 ist, zum Beispiel i ≥ 0. Ist dies der Fall, dann wird, wie in Vorgang 346 gezeigt, der anfängliche Fehlerdatensatz wie auch wenigstens ein weiterer in der Mehrzahl der in der gleichen Vorwärtsbewegung gelesenen Datensätze wiederhergestellt (hat Fehler darin korrigiert) oder wurde korrekt gelesen, und das Verfahren 300 endet.
  • Andernfalls, wie in Vorgang 348 gezeigt, wird der erste Zähler um 1 erhöht, z. B. y = y+1, und das Verfahren 300 geht zu Vorgang 350 weiter, wo die Laufwerkeinstellungen geändert werden, um einen erneuten Lesevorgang des anfänglichen Fehlerdatensatzes und der Mehrzahl von einem nachfolgenden Datensatz bzw. der nachfolgenden Datensätze mit weniger Fehlern zu versuchen (oder wenigstens einige Zeilen von einem oder mehreren der Datensätze, die zuvor nicht mit einem korrigierbaren Fehler gelesen wurden).
  • Nach der Vorgang 350 geht das Verfahren 300 zu Zeiger B weiter und kehrt zu 3A zurück, um wieder bei Vorgang 304 weiterzumachen.
  • Gemäß dem Verfahren 300 können weniger erneute Lesevorgänge über die Mehrzahl der Datensätze erforderlich sein, um korrigierbare Daten vom Band in den reservierten Datenpuffer zu verschieben, da es nicht erforderlich ist, eine herkömmliche ERP-Wiederherstellung für jeden Datensatz in Folge durchzuführen. Eine erfolgreiche ERP-Wiederherstellung für den anfänglichen Fehlerdatensatz kann gleichzeitig die reservierten Datenpufferbereiche einer Mehrzahl von nachfolgenden Datensätzen mit ausreichend guten C1-Zeilen füllen, um eine erfolgreiche C2-Verifizierung ohne weitere Bandbewegung zu ermöglichen, die auf die Rekonstruktion des Datensatzes erfolgt.
  • Es wird auf 4 Bezug genommen, wo ein Verfahren 400 zum Lesen von Daten von einem Medium unter Verwendung einer rekonstruierenden ERP für mehrere Datensätze gemäß einer Ausführungsform dargestellt ist. Das Verfahren 400 kann gemäß der vorliegenden Erfindung unter anderem in einer beliebigen der in 1 bis 3 dargestellten Umgebungen in verschiedenen Ausführungsformen durchgeführt werden. Es können natürlich mehr oder weniger Vorgänge als die im Besonderen in 4 beschriebenen im Verfahren 400 enthalten sein, wie für Fachleute bei Lektüre der vorliegenden Beschreibungen verständlich ist.
  • Ein jeder der Schritte des Verfahrens 400 kann von jeder geeigneten Komponente der Betriebsumgebung durchgeführt werden. Zum Beispiel kann in verschiedenen nicht einschränkenden Ausführungsformen das Verfahren 400 teilweise oder ganz durch ein C1/C2-Dekodierungssystem, ein Bandlaufwerk, ein Festplattenlaufwerk, ein optisches Laufwerk, einen Controller, einen Prozessor (wie eine CPU, ein ASIC, ein FPGA usw.) durchgeführt werden, die eingebettet sein können und/oder in einem System arbeiten usw.
  • Wie in 4 dargestellt, kann das Verfahren 400 bei Vorgang 402 beginnen, wo ein anfänglicher Fehlerdatensatz gefolgt von einer Mehrzahl von Datensätzen von einem Medium in einem Schritt und möglicherweise mehrere Male unter Verwendung verschiedener Einstellungen gelesen wird, bis entweder: alle Zeilen des anfänglichen Fehlerdatensatzes in einem reservierten Datenpuffer angesammelt sind und keine nicht korrigierbaren Fehler übrig sind, oder wenigstens ein nicht korrigierbarer Datensatz in einer Mehrzahl von angesammelten Datensätzen übrig bleibt, oder eine maximale Anzahl von erneuten Lesevorgängen erreicht wurde (ERP wird beendet).
  • Die verschiedenen Einstellungen können eine Veränderung an jeder geeigneten Einstellung umfassen, wie eine beliebige der folgenden: einer Mediumgeschwindigkeit beim Lesen, einer Korrekturleistung des Datenflusses, Kanal-Parametern, Servo-Tracking usw.
  • Die maximale Anzahl der erneuten Lesevorgänge kann eine Hardware-Einstellung eines Laufwerks sein, eine bestimmte Anzahl basierend auf vergangenen Versuchen, eine Benutzereinstellung oder eine Zahl, die von jedem anderen in der Technik bekannten Verfahren abgeleitet ist. In einer anderen Ausführungsform kann die Zahl ein dynamischer Parameter sein, der den erneuten Lesevorgängen zugeordnet ist oder auf einem Aspekt davon basiert, wie eine kleine Verbesserung beim Lesen der Daten, eine Länge der für die erneuten Lesevorgänge aufgewendeten Zeit, die Bedeutung eines Datensatzes usw.
  • In einer Ausführungsform kann das Medium ein Magnetband sein, und das Verfahren 400 kann von einem Bandlaufwerk durchgeführt werden.
  • In einer Ausführungsform kann das mehrmalige Lesen der Mehrzahl der Datensätze weiterhin das Lesen aller nachfolgenden Datensätze bis und einschließlich eines anfänglichen nicht korrigierten Datensatzes von dem Medium aufweisen. Der anfängliche nicht korrigierte Datensatz weist gemäß einer Ausführungsform einen Fehler auf, der nicht mit C2-ECC korrigierbar ist, oder einen Fehler in einer beliebigen Zeile, der nicht mit C1-ECC korrigierbar ist.
  • In Vorgang 404 sind nach jedem erneuten Lesevorgang des anfänglichen Fehlerdatensatzes und einem oder mehreren der Mehrzahl der Datensätze nach dem anfänglichen Fehlerdatensatz in der gleichen Vorwärtsbewegung Zeilen eines jeden Datensatzes, die entweder keine Fehler aufweisen oder Fehler in jeder Zeile aufweisen, die mit C1-ECC korrigierbar sind, in ihren jeweiligen reservierten Datenpufferbereichen gespeichert, sofern nicht eine passende Zeile bereits im reservierten Datenpuffer vorhanden ist, die weniger korrigierte Fehler darin aufweist. Eine passende Zeile ist eine Zeile, die an der gleichen Position im Datensatz-Array positioniert ist. Wenn zum Beispiel Zeile 1 des Datensatzes (die drei korrigierte Fehler darin enthält) bereits im reservierten Datenpuffer gespeichert ist, und Zeile 1 erneut mit anderen Einstellungen gelesen wird und nur zwei korrigierte Fehler darin enthält, dann wird die gespeicherte Zeile 1 durch die erneut gelesene Zeile 1 überschrieben.
  • In einem Ansatz können alle Zeilen der Mehrzahl der Datensätze an ihre jeweiligen reservierten Datenpufferbereiche nach einem ersten Lesen der Mehrzahl von Datensätzen von dem Medium kopiert werden, sodass die Gesamtheit von jedem der Datensätze im reservierten Datenpuffer (in deren entsprechenden Bereiche) gespeichert wird, dann kann in nachfolgenden Lesevorgängen jede Zeile eines beliebigen Datensatzes verbessert werden (zum Beispiel weniger korrigierte Fehler in jeder Zeile).
  • Gemäß einer Ausführungsform kann jede Zeile eine C1-kodierte Zeile in einem Array, der einen Datensatz darstellt, aufweisen.
  • In Vorgang 406 wird der anfängliche Fehlerdatensatz aus den für den anfänglichen Fehlerdatensatz im reservierten Datenpuffer gespeicherten Zeilen zusammengesetzt, um einen anfänglichen zusammengesetzten Datensatz zu bilden. Weiterhin, bei Bedarf oder optional, kann ein jeder der Mehrzahl der Datensätze nachfolgend auf den anfänglichen Fehlerdatensatz aus den für jeden Datensatz im reservierten Datenpuffer gespeicherten Zeilen zusammengesetzt werden, um eine Mehrzahl von zusammengesetzten Datensätzen zu bilden, solange ausreichend Zeilen für die nachfolgenden Datensätze verfügbar sind. Jeder zusammengesetzte Datensatz weist nur Zeilen auf, die mit C1-ECC korrigierbar sind, wodurch komplette Datensätze mit Zeilen bereitgestellt werden, bei denen alle Fehler in jeder Zeile korrigierbar sind.
  • In Vorgang 408 werden alle verbleibenden Fehler im anfänglichen zusammengesetzten Datensatz mit C2-ECC korrigiert, um einen anfänglichen rekonstruierten Datensatz zu bilden. Weiterhin werden, wenn möglich, alle verbleibenden Fehler in der Mehrzahl der zusammengesetzten Datensätze mit C2-ECC korrigiert, um eine Mehrzahl von rekonstruierten Datensätzen zu bilden. Auf diese Weise sind keine Fehler mehr in den rekonstruierten Datensätzen vorhanden oder die Fehler, die in der Mehrzahl der rekonstruierten Datensätze zum Zeitpunkt der Wiederherstellung (Rekonstruktion) des anfänglichen Fehlerdatensatzes übrig bleiben, können nicht korrigiert werden.
  • In Vorgang 410 wird der anfängliche rekonstruierte Datensatz an einen Host und/oder an einen Speicher gesendet, wie ein Bandlaufwerk, einen Server usw. Darüber hinaus, wenn verfügbar, wird die Mehrzahl der rekonstruierten Datensätze ebenso an den Host gesendet und/oder im Speicher gespeichert. Der erste Datensatz in der Mehrzahl der Datensätze, der nicht korrekt gelesen werden kann, wird der Ausgangspunkt für die nächste Wiederherstellungssitzung.
  • Es wird nun auf 5 Bezug genommen, wo ein Verfahren 500 zum Lesen von Daten von einem Medium unter Verwendung einer rekonstruierenden ERP für mehrere Datensätze gemäß einer Ausführungsform dargestellt ist. Gemäß einer weiteren Ausführungsform, wenn bestimmte Kriterien erfüllt wurden (zum Beispiel Erfassung einer Fehlerhäufung oder eines bestimmten Cartridge-Typs), dann kann ein rekonstruierendes Datenwiederherstellungsverfahren auf mehrere Datensätze in einem einzelnen Lesevorgang angewendet werden (zum Beispiel werden alle gleichzeitig in einer ERP-Sitzung, in einer einzelnen Aktion, in der gleichen Vorwärtsbewegung usw. gelesen). Das Verfahren 500 kann gemäß der vorliegenden Erfindung unter anderem in einer der in 1 bis 3 dargestellten Umgebungen in verschiedenen Ausführungsformen ausgeführt werden. Es können natürlich mehr oder weniger Vorgänge als die im Besonderen in 5 beschriebenen, im Verfahren 500 enthalten sein, wie für Fachleute bei Lektüre der vorliegenden Beschreibungen verständlich ist.
  • Ein jeder der Schritte des Verfahrens 500 kann von jeder geeigneten Komponente der Betriebsumgebung durchgeführt werden. Zum Beispiel kann in verschiedenen nicht einschränkenden Ausführungsformen das Verfahren 500 teilweise oder ganz durch ein C1/C2-Dekodierungssystem, ein Bandlaufwerk, ein Festplattenlaufwerk, ein optisches Laufwerk, einen Controller, einen Prozessor (wie eine CPU, ein ASIC, ein FPGA usw.) durchgeführt werden, die eingebettet sein können und/oder in einem System arbeiten usw.
  • Wie in 5 dargestellt, kann ein Verfahren 500 mit dem Vorgang 502 beginnen, wo eine Mehrzahl von Datensätzen von einem Medium einmal oder mehrere Male gelesen wird, wobei jeder Datensatz eine Mehrzahl von Bereichen aufweist, die zusammen kombiniert im Ganzen den Datensatz bilden. Ebenso werden während eines jeden Lesevorgangs von wenigstens einem der Mehrzahl der Datensätze Einstellungen in einem Versuch geändert, den wenigstens einen der Mehrzahl der Datensätze besser vom Medium zu lesen. Jeder Bereich kann ein beliebiger Teil des Datensatzes sein, und der Datensatz kann durch eine beliebige Struktur dargestellt sein. Mit besser lesbar wird bezeichnet, das weniger Fehler in dem gelesenen Datensatz vorliegen, indem die Einstellungen angepasst werden, mit denen der Datensatz von dem Medium gelesen wird.
  • Die verschiedenen Einstellungen können eine Änderung in jeder geeigneten Einstellung umfassen, wie eine beliebige der folgenden: eine Mediumgeschwindigkeit beim Lesen, einer Korrekturleistung des Datenflusses, Kanal-Parametern, Servo-Tracking usw.
  • In einer Ausführungsform kann ein jeder Bereich eine Zeile in einem Array sein, der einen Datensatz darstellt, wie im vorliegenden Dokument ausführlicher beschrieben. Im Besonderen kann jeder Bereich eine C1-kodierte Zeile in einem Array sein, der einen Datensatz darstellt. Darüber hinaus kann jede Zeile des Arrays einen Header zusammen mit kodierten Daten und darin verschachtelten C1-Codewörtern aufweisen. In einer anderen Ausführungsform kann jeder Bereich eine Spalte im Array sein, in dem die C1- mit den C2-Schritten vertauscht werden.
  • In einem optionalen Vorgang 504 werden ein oder mehrere Bereiche von wenigstens einem der Mehrzahl der Datensätze in einem reservierten Datenpuffer gespeichert, wenn die einen oder mehreren Bereiche mit C1-ECC korrigierbar sind, um einen oder mehrere gespeicherte Bereiche zu bilden; Auf diese Weise werden die korrigierbaren Bereiche der Datensätze ganz im reservierten Datenpuffer gespeichert, und Bereiche können überschrieben werden, wenn sie besser sind als ein bereits im reservierten Datenpuffer gespeicherter Bereich.
  • Der reservierte Datenpuffer kann Teil eines größeren Datenpuffer eines Mediumlaufwerks sein, wie eines Bandlaufwerks, wenn das Medium ein Band ist, oder kann ein getrennter Speicher zum Speichern darauf sein, entweder im Laufwerk oder für das zum Lesen des Datensatzes verwendete Laufwerk zugreifbar.
  • In Vorgang 506 werden für jeden der Mehrzahl der Datensätze, von denen alle Bereiche davon im reservierten Datenpuffer gespeichert sind, alle gespeicherten Bereiche davon aggregiert, um einen oder mehrere zusammengesetzte Datensätze zu bilden. Dies bedeutet, dass etwaige in dem Bereich vorhandene Fehler mit der C1-Kodierung des Bereichs korrigiert werden können, ohne sich auf eine beliebige C2-Kodierung des Datensatzes zu verlassen. Sollte der Bereich nicht mit der C1-Kodierung korrigierbar sein, wird der Bereich nicht im reservierten Datenpuffer gespeichert.
  • In einer Ausführungsform wird, wenn ein Bereich bereits im reservierten Datenpuffer vorhanden ist, der einem gelesenen Bereich entspricht, der einen korrigierbaren Fehler darin aufweist, der vorhandene Bereich überschrieben, wenn der zugehörige Bereich aus dem einen oder mehreren Bereichen (dem gelesenen Bereich mit dem korrigierbaren Fehler) weniger korrigierte Fehler darin enthält als der vorhandene Bereich. Wenn zum Beispiel ein gespeicherter Bereich drei korrigierte Fehler aufweist, und ein gelesener Bereich nur zwei korrigierte Fehler aufweist, wird der gespeicherte Bereich im reservierten Datenpuffer mit dem gelesenen Bereich überschrieben.
  • Anders ausgedrückt, ein oder mehrere gespeicherte Bereiche können überschrieben werden, wenn wenigstens ein entsprechender Bereich von dem einen oder den mehreren Bereichen, die mit C1-ECC korrigierbar sind, weniger korrigierte Fehler darin aufweisen als der eine oder die mehreren gespeicherten Bereiche.
  • In Vorgang 508 wird bestimmt, ob C2-ECC dazu ausgestaltet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren. Auf diese Weise kann der gesamte Datensatz aus „guten” Bereichen rekonstruiert werden, die eine korrigierbare Anzahl von Fehlern darin haben, nachdem alle Bereiche des einen oder den mehreren zusammengesetzten Datensätzen im reservierten Datenpuffer gespeichert wurden und mit C1-ECC korrigierbar sind.
  • In Vorgang 510 werden alle noch vorhandenen Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen mit C2-ECC korrigiert, um einen oder mehrere korrigierte Datensätze zu bilden, und die einen oder mehreren korrigierten Datensätze werden an einen Host gesendet, wenn C2-ECC dazu geeignet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren. Auf diese Weise können sie unter Verwendung der C2-Kodierung über Bereiche korrigiert werden, wenn einige Fehler in dem Datensatz nach dem Zusammensetzen der Bereiche zur Bildung des gesamten Datensatzes übrig bleiben. Wenn die Bereiche zum Beispiel Zeilen sind, dann erfolgt die C2-Kodierung über die Spalten und kann zum Korrigieren jeglicher verbleibender Fehler verwendet werden.
  • Das erneute Lesen des ersten nicht korrigierten Datensatzes von dem Medium kann gemäß einer Ausführungsform weiterhin aufweisen das erneute Lesen einer Anzahl von Datensätzen nachfolgend auf den ersten nicht korrigierten Datensatz von dem Medium.
  • In Vorgang 512 wird wenigstens ein erster nicht korrigierter Datensatz erneut von dem Medium mit einer anderen Einstellung in einer ERP gelesen, wenn ein Fehler in dem ersten nicht korrigierten Datensatz nicht mit C2-ECC korrigierbar ist, oder wenn ein Fehler in einem beliebigen Bereich des ersten nicht korrigierten Datensatzes nicht mit C1-ECC korrigierbar ist. Der erste nicht korrigierte Datensatz wird vor einem beliebigen anderen nicht korrigierten Datensatz auf dem Medium in einer Leserichtung positioniert. Eine Leserichtung bezieht sich auf eine logische Richtung, in der sich das Medium normalerweise während eines Lesevorgangs bewegt, wie zum Beispiel einer Vorwärtsrichtung für ein Band. Wenn ein Band zurückgespült wird, wird die Richtung, in die sich das Band während des Rückspulenvorgangs bewegt, nicht als Leserichtung des Bands betrachtet. Ebenso wird für eine Festplatte die Richtung, in die sich der Kopf während eines Lesevorgangs bewegt, während die Festplatte rotiert, als eine Leserichtung bezeichnet, während jede andere Richtung, in die sich der Kopf bewegt, während er den nächsten Datensatz sucht, nicht als eine Leserichtung betrachtet wird.
  • In einem Ansatz werden alle Bereiche der Mehrzahl von Datensätzen in dem reservierten Datenpuffer nach einem ersten Lesen der Mehrzahl von Datensätzen von dem Medium gespeichert.
  • Gemäß einer Ausführungsform kann das Verfahren 500 wiederholt werden, bis alle korrigierten Datensätze an den Host gesendet wurden, oder eine Anzahl von zulässigen erneuten Leseversuchen eines anfänglichen Fehlerdatensatzes erreicht wird und dies dem Host als nicht lesbar berichtet wird. Die Anzahl der zulässigen erneuten Versuche kann eine Hardware-Einstellung eines Laufwerks sein, eine bestimmte Anzahl basierend auf vergangenen Versuchen, eine Benutzereinstellung oder eine von jedem anderen in der Technik bekannten Verfahren abgeleitete Zahl.
  • Anders ausgedrückt, wird wenigstens ein Bereich der Mehrzahl der Datensätze von dem Medium neu gelesen, und der eine Bereich oder die mehreren gespeicherten Bereiche im reservierten Datenpuffer werden mit Bereichen überschrieben, die weniger korrigierte Fehler darin enthalten, und es wird bestimmt, ob C2-ECC dazu geeignet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren, bis entweder alle korrigierten Datensätze an den Host gesendet wurden, oder bis eine Anzahl von zulässigen erneuten Wiederholungsversuchen erreicht wird, und eine oder mehrere der Mehrzahl der Datensätze dem Host als nicht lesbar berichtet wird bzw. werden.
  • In einem Ansatz kann das Medium ein Magnetband sein und das Verfahren 500 kann von einem Bandlaufwerk durchgeführt werden.
  • Es wird nun auf 6 Bezug genommen, wo eine Syndrom-Prüfung ausführlicher erläutert wird. Wenn die Daten von dem Medium in Form eines Datensatzes gelesen werden, wird der Datensatz an den Laufwerkpuffer übertragen. Eine jede Zeile des Datensatzes weist wenigstens die folgenden Informationen auf: Header-Informationen, Schreibdurchgangsnummer, Datensatznummer, Indikator des nicht korrigierten oder korrigierten Status und korrigierte Bytes der C1-Kodierung. Mithilfe der obigen Informationen ist in einer Ausführungsform das Laufwerk dazu in der Lage, zu verifizieren, dass eine aktuell gelesene Zeile besser als eine zuvor im reservierten Datenpuffer gespeicherte Zeile ist. Dieser Prozess kann wie in 6 dargestellt sein, oder in jeder anderen in der Technik bekannten Weise durchgeführt werden.
  • In 6 beginnt das Verfahren 600 mit Vorgang 602, wo bestimmt wird, ob die C1-Zeile (die aktuelle aus dem Datensatz gelesene Zeile für die restliche Beschreibung des Verfahrens 600) nach dem Lesen des Datensatzes von Band aktualisiert wurde. D.h., während einiger Lesevorgänge von Datensätzen kann eine bestimmte Zeile nicht lesbar sein, und falls sie dies nicht ist, endet das Verfahren 600 bei Vorgang 612, da keine Zeile für einen Vergleich vorhanden ist.
  • In Vorgang 604 wird bestimmt, ob der Header für die C1-Zeile akzeptiert werden kann. Jede Zeile weist Header-Informationen auf, und diese Header-Informationen erleichtern die Bestimmung, ob die korrekte Zeile im Puffer gespeichert ist. Ist dies nicht der Fall, endet das Verfahren bei Vorgang 612.
  • In Vorgang 606 wird bestimmt, ob die Datensatznummer für die C1-Zeile akzeptiert werden kann. Die Datensatznummer wird ab Beginn des Mediums zugewiesen, wie von 0 bis N. Das Laufwerk weiß, welcher Datensatz im Puffer bearbeitet wird, und es wird bestimmt, ob die Datensatznummer der C1-Zeile mit der im Puffer übereinstimmt. Ist dies nicht der Fall, endet das Verfahren bei Vorgang 612.
  • In Vorgang 608 wird bestimmt, ob der Schreibdurchgang der C1-Zeile akzeptiert werden kann. Der Schreibdurchgang bezieht sich auf Informationen, die die Generierung des Datensatzes auf dem Medium angeben. Wenn die Datensatznummer die gleiche ist, ist der Datensatz mit einem höheren Schreibdurchgang neuer, wodurch er zum künftigen Datensatz wird. Da das Laufwerk den Schreibdurchgang des Zieldatensatzes kennt, wenn die Schreibdurchgangsnummer der C1-Zeile kleiner ist als der gespeicherte Datensatz, wird die C1-Zeile als älter verworfen und das Verfahren endet bei Vorgang 612.
  • In Vorgang 610 wird bestimmt, ob die Anzahl der Fehler in der C1-Zeile kleiner ist als eine maximale Anzahl der korrigierbaren Fehler, was durch die C1-Kodierung der Zeile im Datensatz bestimmt wird. Dies wird oftmals als Syndrom-Prüfung bezeichnet. Ist dies nicht der Fall, endet das Verfahren bei Vorgang 612.
  • Bei Vorgang 612 wird die C1-Zeile nicht im Puffer gespeichert und das Verfahren 600 endet, da die C1-Zeile schlechter ist als die aktuell im Puffer gespeicherte Zeile.
  • In Vorgang 614 werden das C1-korrigierte Byte bzw. Bytes basierend auf der C1-Kodierung zur Fehlerkorrektur in der C1-Zeile erhalten.
  • In Vorgang 616 wird bestimmt, ob die Anzahl der korrigierten Byte(s) für die C1-Zeile kleiner ist als die Anzahl der korrigierten Byte(s) für die gespeicherte Zeile. Ist dies der Fall, so geht das Verfahren 600 zu Verfahren 618 weiter, wo die C1-Zeile im Puffer gespeichert ist (und überschreibt möglicherweise eine aktuelle Zeile im Puffer, die der C1-Zeile entspricht). Ist dies nicht der Fall, endet das Verfahren bei Vorgang 612.
  • Das Flussdiagramm und die Blockdiagramme in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Implementierungen der Systeme, Verfahren und Computerprogrammprodukte gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Flussdiagrammen oder Blockdiagrammen ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) aufweist. Es ist ebenso hervorzuheben, dass in einigen alternativen Implementierungen die im Block angegebenen Funktionen nicht in der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können in Abhängigkeit von der beinhalteten Funktionalität zwei aufeinanderfolgende Blöcke im Wesentlichen gleichzeitig ausgeführt werden, oder Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es ist auch hervorzuheben, dass jeder Block in den Blockdiagramm- und/oder Flussdiagrammabbildungen und die Kombinationen der Blöcke in den Blockdiagrammund/oder Flussdiagrammabbildungen durch hardwarebasierte Spezialsysteme, die die angegebenen Funktionen oder Vorgänge ausführen, oder Kombinationen von Spezialhardware und Computeranweisungen implementiert werden können.
  • Es ist offensichtlich, dass die verschiedenen Merkmale der obigen Systeme und/oder Methodologien in beliebiger Weise kombiniert werden können, wodurch eine Mehrzahl von Kombinationen aus den oben dargestellten Beschreibungen erstellt wird.
  • Es ist weiterhin hervorzuheben, dass Ausführungsformen der vorliegenden Erfindung in der Form eines für einen Kunden erbrachten Service bereitgestellt werden können, um einen Service-on-Demand anzubieten.
  • Wenngleich verschiedene Ausführungsformen oben beschrieben wurden, versteht es sich, dass sie nur in beispielhafter Form und nicht als Einschränkung dargestellt wurden. Somit sind die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch eine beliebige der oben beschriebenen beispielhaften Ausführungsformen beschränkt, sondern sie sollen nur gemäß der folgenden Ansprüche und deren Entsprechungen definiert werden.

Claims (23)

  1. Ein System zum Lesen von Daten, wobei das System aufweist: Logik, die dazu konfiguriert ist, eine Mehrzahl von Datensätzen einmal oder mehrere Male zu lesen (502), wobei jeder Datensatz eine Mehrzahl von Bereichen aufweist, die miteinander kombiniert im Ganzen den Datensatz bilden, wobei Hardware-Einstellungen in einem Versuch geändert werden, den wenigstens einen der Mehrzahl der Datensätze besser zu lesen; Logik, die dazu konfiguriert ist, einen oder mehrere Bereiche von wenigstens einem der Mehrzahl der Datensätze in einem reservierten Datenpuffer zu speichern (504), wenn die einen oder mehreren Bereiche mit dem C1-Fehlerkorrekturcode basierend auf einer Zeilenparität (106) (ECC, Error Correction Code) korrigierbar sind, um einen oder mehrere gespeicherte Bereiche zu bilden, wobei der eine oder die mehreren gespeicherten Bereiche bei erneutem Lesen mit anderen Hardware-Einstellungen nur dann überschrieben werden, wenn wenigstens ein entsprechender Bereich von dem einen oder den mehreren Bereichen, die mit C1-ECC korrigierbar sind, weniger korrigierte Fehler darin aufweisen als der eine oder die mehreren gespeicherten Bereiche; Logik, die dazu konfiguriert ist, für jeden der Mehrzahl der Datensätze, von denen alle Bereiche davon im reservierten Datenpuffer gespeichert sind, alle gespeicherten Bereiche davon zu aggregieren (506), um einen oder mehrere zusammengesetzte Datensätze zu bilden; Logik, die dazu konfiguriert ist, zu bestimmen (508), ob C2-ECC basierend auf einer Spaltenparität (108) dazu geeignet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; Logik, die dazu konfiguriert ist, alle noch vorhandenen Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen mit C2-ECC zu korrigieren (510), um einen oder mehrere korrigierte Datensätze zu bilden, und um den einen oder die mehreren korrigierten Datensätze an einen Host zu senden, wenn C2-ECC dazu geeignet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; und Logik, die dazu konfiguriert ist, wenigstens einen ersten nicht korrigierten Datensatz unter Verwendung einer anderen Hardware-Einstellung in einer Fehlerbehebungsprozedur (ERP, Error Recovery Procedure) erneut zu lesen (512), wenn ein Fehler im ersten nicht korrigierten Datensatz nicht mit C2-ECC korrigierbar ist, oder wenn ein Fehler in einem beliebigen Bereich des ersten nicht korrigierten Datensatzes nicht mit C1-ECC korrigierbar ist, wobei der erste nicht korrigierte Datensatz vor einem beliebigen anderen nicht korrigierten Datensatz in einer Leserichtung angeordnet ist.
  2. Das System nach Anspruch 1, wobei die Logik, die dazu konfiguriert ist, den wenigstens ersten nicht korrigierten Datensatz erneut zu lesen, weiterhin Logik aufweist, die dazu konfiguriert ist, alle Datensätze nach dem ersten nicht korrigierten Datensatz erneut zu lesen.
  3. Das System nach Anspruch 1, das weiterhin aufweist Logik, die dazu konfiguriert ist, alle Bereiche der Mehrzahl von Datensätzen in dem reservierten Datenpuffer nach einem ersten Lesen der Mehrzahl von Datensätzen zu speichern.
  4. Das System nach Anspruch 1, wobei jeder Bereich eine C1-kodierte Zeile in einem Array ist, der einen Datensatz darstellt.
  5. Das System nach Anspruch 1, wobei wenigstens ein Bereich der Mehrzahl der Datensätze erneut gelesen wird, der eine oder die mehreren gespeicherten Bereiche in dem reservierten Datenpuffer mit Bereichen überschrieben wird, die weniger korrigierte Fehler darin enthalten, und es bestimmt wird, ob C2-ECC dazu geeignet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren, bis entweder alle korrigierten Datensätze an den Host gesendet wurden, oder bis eine Anzahl von zulässigen erneuten Leseversuchen erreicht wird und eine der Mehrzahl der Datensätze dem Host als nicht lesbar berichtet wird.
  6. Das System nach Anspruch 1, wobei die Datensätze von einem Magnetband gelesen werden und wobei verschiedene Einstellungen eine Änderung aufweisen von wenigstens einem von: einer Bandgeschwindigkeit beim Lesen, einer Korrekturleistung des Datenflusses, Kanal-Parametern und Servo-Tracking.
  7. Ein Bandlaufwerk, das aufweist: einen Datenpuffer, der einen reservierten Datenpuffer aufweist; Logik, die dazu konfiguriert ist, einen anfänglichen fehlerhaften Datensatz gefolgt von einer Mehrzahl von Datensätzen nach dem anfänglichen fehlerhaften Datensatz einmal oder mehrere Male mit verschiedenen Hardware-Einstellungen zu lesen (402), bis: alle Zeilen des ursprünglichen fehlerhaften Datensatzes in einem reservierten Datenpuffer zusammengesetzt sind und keine nicht korrigierbaren Fehler mehr übrig sind, oder wenigstens ein nicht korrigierbarer Datensatz in einer Mehrzahl von zusammengesetzten Datensätzen übrig bleibt, oder eine maximale Anzahl von erneuten Lesevorgängen erreicht wurde; Logik, die dazu konfiguriert ist, nach jedem erneuten Lesen des anfänglichen fehlerhaften Datensatzes und einem oder mehreren der Mehrzahl der Datensätze nach dem anfänglichen fehlerhaften Datensatz in der gleichen Vorwärtsbewegung Zeilen eines jeden Datensatzes, die entweder keine Fehler aufweisen oder mit dem C1-Fehlerkorrekturcode (ECC) korrigierbar sind, in ihren jeweiligen reservierten Datenpufferbereichen zu speichern (404), sofern nicht bereits eine passende Zeile im reservierten Datenpuffer vorhanden ist, die weniger korrigierte Fehler darin aufweist; Logik, die dazu konfiguriert ist, den anfänglichen fehlerhaften Datensatz aus den für den anfänglichen fehlerhaften Datensatz im reservierten Datenpuffer gespeicherten Zeilen zusammenzusetzen (406), um einen anfänglichen zusammengesetzten Datensatz zu bilden; Logik, die dazu konfiguriert ist, noch vorhandene Fehler im anfänglichen zusammengesetzten Datensatz mit C2-ECC zu korrigieren (408), um einen anfänglichen rekonstruierten Datensatz zu bilden; und Logik, die dazu konfiguriert ist, den anfänglichen rekonstruierten Datensatz an einen Host zu senden (410) und/oder den anfänglichen rekonstruierten Datensatz in einem Speicher zu speichern.
  8. Das Bandlaufwerk nach Anspruch 7, wobei die Logik, die dazu konfiguriert ist, mehrere Male die Mehrzahl der Datensätze nach dem anfänglichen fehlerhaften Datensatz zu lesen, weiterhin aufweist Logik, die dazu konfiguriert ist, alle Datensätze nachfolgend auf und einschließlich eines ersten nicht korrigierten Datensatzes zu lesen, wobei der erste nicht korrigierte Datensatz einen Fehler aufweist, der nicht mit C2-ECC korrigierbar ist, oder einen Fehler in einer beliebigen Zeile, der nicht mit C1-ECC korrigierbar ist.
  9. Das Bandlaufwerk nach Anspruch 7, das weiterhin aufweist Logik, die dazu konfiguriert ist, alle Zeilen der Mehrzahl von Datensätzen in die jeweiligen reservierten Datenpufferbereiche nach einem ersten Lesen der Mehrzahl von Datensätze zu kopieren.
  10. Das Bandlaufwerk nach Anspruch 7, wobei der anfängliche fehlerhaften Datensatz und die Datensätze von einem Magnetband gelesen werden.
  11. Das Bandlaufwerk nach Anspruch 7, wobei jede Zeile eine C1-kodierte Zeile in einem Array aufweist, der einen Datensatz darstellt.
  12. Das Bandlaufwerk nach Anspruch 7, wobei verschiedene Einstellungen eine Änderung aufweisen von wenigstens einem von: Geschwindigkeit beim Lesen, einer Korrekturleistung des Datenflusses, Kanal-Parametern und Servo-Tracking.
  13. Ein Verfahren zum Lesen von Daten, wobei das Verfahren aufweist: Lesen (502) einer Mehrzahl von Datensätzen einmal oder mehrere Male, wobei jeder Datensatz eine Mehrzahl von Bereichen aufweist, die miteinander kombiniert im Ganzen den Datensatz bilden, wobei Hardware-Einstellungen in einem Versuch geändert werden, den wenigstens einen der Mehrzahl der Datensätze besser zu lesen; Speichern (504) von einem oder mehreren Bereichen von wenigstens einem der Mehrzahl der Datensätze in einem reservierten Datenpuffer, wenn die einen oder mehreren Bereiche mit dem C1-Fehlerkorrekturcode basierend auf einer Zeilenparität (106) (ECC) korrigierbar sind, um einen oder mehrere gespeicherte Bereiche zu bilden, wobei der eine oder die mehreren gespeicherten Bereiche bei erneutem Lesen mit anderen Hardware-Einstellungen nur dann überschrieben werden, wenn wenigstens ein entsprechender Bereich von dem einen oder den mehreren Bereichen, die mit C1-ECC korrigierbar sind, weniger korrigierte Fehler darin aufweist als der eine oder die mehreren gespeicherten Bereiche; Aggregieren (506) für jeden der Mehrzahl der Datensätze, von denen alle Bereiche davon im reservierten Datenpuffer gespeichert sind, alle gespeicherten Bereiche davon, um einen oder mehrere zusammengesetzte Datensätze zu bilden; Bestimmen (508), ob C2-ECC basierend auf einer Spaltenparität (108) dazu geeignet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; Korrigieren (510) aller noch vorhandenen Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen mit C2-ECC, um einen korrigierten oder mehrere korrigierte Datensätze zu bilden, und Senden des einen oder der mehreren korrigierten Datensätze an einen Host, wenn C2-ECC dazu geeignet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren; und erneutes Lesen (512) von wenigstens einem ersten nicht korrigierten Datensatz unter Verwendung einer anderen Einstellung in einer Fehlerbehebungsprozedur (ERP), wenn ein Fehler im ersten nicht korrigierten Datensatz nicht mit C2-ECC korrigierbar ist, oder wenn ein Fehler in einem beliebigen Bereich des ersten nicht korrigierten Datensatzes nicht mit C1-ECC korrigierbar ist, wobei der erste nicht korrigierte Datensatz vor einem beliebigen anderen nicht korrigierten Datensatz in einer Leserichtung angeordnet ist.
  14. Das Verfahren nach Anspruch 13, wobei das erneute Lesen des wenigstens ersten nicht korrigierten Datensatzes weiterhin das erneuet Lesen aller Datensätze nach dem ersten nicht korrigierten Datensatz aufweist.
  15. Das Verfahren nach Anspruch 13, das weiterhin das Speichern aller Bereiche der Mehrzahl von Datensätzen in dem reservierten Datenpuffer nach einem ersten Lesen der Mehrzahl von Datensätze aufweist.
  16. Das Verfahren nach Anspruch 13, wobei jeder Bereich eine C1-kodierte Zeile in einem Array ist, der einen Datensatz darstellt.
  17. Das Verfahren nach Anspruch 13, wobei wenigstens ein Bereich der Mehrzahl der Datensätze erneut gelesen wird, der eine oder die mehreren gespeicherten Bereiche in dem reservierten Datenpuffer mit Bereichen überschrieben wird bzw. werden, die weniger korrigierte Fehler darin enthalten, und es bestimmt wird, ob C2-ECC dazu geeignet ist, alle Fehler in dem einen oder den mehreren zusammengesetzten Datensätzen zu korrigieren, bis entweder alle korrigierten Datensätze an den Host gesendet wurden oder bis eine Anzahl von zulässigen Wiederholungsversuchen erreicht wird, und einer der Mehrzahl der Datensätze dem Host als nicht lesbar berichtet wird.
  18. Das Verfahren nach Anspruch 13, wobei die Datensätze von einem Magnetband gelesen werden.
  19. Das Verfahren nach Anspruch 13, wobei verschiedene Einstellungen eine Änderung aufweisen von wenigstens einem von: Geschwindigkeit beim Lesen, einer Korrekturleistung des Datenflusses, Kanal-Parametern und Servo-Tracking.
  20. Ein Verfahren zum Lesen von Daten, wobei das Verfahren beinhaltet: Lesen (402) eines anfänglichen fehlerhaften Datensatzes gefolgt von einer Mehrzahl von Datensätzen nach dem anfänglichen fehlerhaften Datensatz einmal oder mehrere Male mit verschiedenen Hardware-Einstellungen bis: alle Zeilen des ursprünglichen fehlerhaften Datensatzes in einem reservierten Datenpuffer zusammengesetzt sind und keine nicht korrigierbaren Fehler mehr übrig sind, oder wenigstens ein nicht korrigierbarer Datensatz in einer Mehrzahl von zusammengesetzten Datensätzen übrig bleibt, oder eine maximale Anzahl von erneuten Lesevorgängen erreicht wurde; Speichern (404), nach jedem erneutem Lesen des anfänglichen fehlerhaften Datensatzes und eines oder mehrerer der Mehrzahl der Datensätze nach dem anfänglichen fehlerhaften Datensatz in der gleichen Vorwärtsbewegung von Zeilen eines jeden Datensatzes, die entweder keine Fehler aufweisen oder mit dem C1-Fehlerkorrekturcode (ECC) korrigierbar sind, in ihren jeweiligen reservierten Datenpufferbereichen, sofern nicht eine passende Zeile bereits im reservierten Datenpuffer vorhanden ist, die weniger korrigierte Fehler darin aufweist; Zusammensetzen (406) des anfänglichen fehlerhaften Datensatzes aus den für den anfänglichen fehlerhaften Datensatz im reservierten Datenpuffer gespeicherten Zeilen, um einen anfänglichen zusammengesetzten Datensatz zu bilden; Korrigieren (408) von beliebigen noch vorhandenen Fehlern im anfänglichen zusammengesetzten Datensatz mit C2-ECC, um einen anfänglichen rekonstruierten Datensatz zu bilden; und Senden (410) des anfänglichen rekonstruierten Datensatzes an einen Host und/oder Speichern des anfänglichen rekonstruierten Datensatzes in einem Speicher.
  21. Das Verfahren nach Anspruch 20, wobei das Lesen der Mehrzahl von Datensätzen nach dem anfänglichen fehlerhaften Datensatz mehrere Male weiterhin aufweist ein Lesen aller Datensätze nachfolgend und einschließlich eines ersten nicht korrigierten Datensatzes, wobei der erste nicht korrigierte Datensatz einen Fehler aufweist, der nicht mit C2-ECC korrigierbar ist, oder einem Fehler in einer beliebigen Zeile, der nicht mit C1-ECC korrigierbar ist.
  22. Das Verfahren nach Anspruch 20, das weiterhin ein Kopieren aller Zeilen der Mehrzahl von Datensätzen in den reservierten Datenpuffer nach einem ersten Lesen der Mehrzahl von Datensätze aufweist.
  23. Das Verfahren nach Anspruch 20, wobei der anfängliche fehlerhaften Datensatz und die Datensätze von einem Magnetband gelesen werden und wobei jede Zeile eine C1-kodierte Zeile in einem Array aufweist, der einen Datensatz darstellt.
DE112013005453.1T 2012-11-14 2013-10-10 Rekonstruierende Fehlerbehebungsprozedur (ERP) für mehrerer Datensätze unter Verwendung eines reservierten Puffers Active DE112013005453B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/676,493 US8793552B2 (en) 2012-11-14 2012-11-14 Reconstructive error recovery procedure (ERP) for multiple data sets using reserved buffer
US13/676,493 2012-11-14
PCT/CN2013/084934 WO2014075522A1 (en) 2012-11-14 2013-10-10 Reconstructive error recovery procedure (erp) for multiple data sets using reserved buffer

Publications (2)

Publication Number Publication Date
DE112013005453T5 DE112013005453T5 (de) 2015-08-13
DE112013005453B4 true DE112013005453B4 (de) 2017-03-02

Family

ID=50682941

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013005453.1T Active DE112013005453B4 (de) 2012-11-14 2013-10-10 Rekonstruierende Fehlerbehebungsprozedur (ERP) für mehrerer Datensätze unter Verwendung eines reservierten Puffers

Country Status (4)

Country Link
US (2) US8793552B2 (de)
DE (1) DE112013005453B4 (de)
GB (1) GB2523281B (de)
WO (1) WO2014075522A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5949928B2 (ja) * 2012-09-18 2016-07-13 日産自動車株式会社 故障記録装置および故障記録方法
US8793552B2 (en) 2012-11-14 2014-07-29 International Business Machines Corporation Reconstructive error recovery procedure (ERP) for multiple data sets using reserved buffer
US9053748B2 (en) 2012-11-14 2015-06-09 International Business Machines Corporation Reconstructive error recovery procedure (ERP) using reserved buffer
JP5457612B1 (ja) * 2013-06-28 2014-04-02 楽天株式会社 情報提供装置、情報提供方法、および情報提供プログラム
US8810944B1 (en) 2013-07-16 2014-08-19 International Business Machines Corporation Dynamic buffer size switching for burst errors encountered while reading a magnetic tape
US9141478B2 (en) 2014-01-07 2015-09-22 International Business Machines Corporation Reconstructive error recovery procedure (ERP) using reserved buffer
US9582360B2 (en) 2014-01-07 2017-02-28 International Business Machines Corporation Single and multi-cut and paste (C/P) reconstructive error recovery procedure (ERP) using history of error correction
US10276204B1 (en) 2018-04-24 2019-04-30 International Business Machines Corporation Behavioral model for dynamic tension compensation
US10854239B1 (en) * 2019-07-31 2020-12-01 Facebook, Inc. Adaptive-rate error correction layer for tape storage
US11797396B2 (en) * 2020-07-30 2023-10-24 Seagate Technology Llc Decoding policy management to support multiple decoding schemes in a single buffer space
US11121729B1 (en) * 2020-07-30 2021-09-14 Seagate Technology Llc Read channel buffer management for higher throughput decoding
US11120831B1 (en) * 2020-08-25 2021-09-14 International Business Machines Corporation Compensation for expansion and contraction across the width of a magnetic tape
US11789795B2 (en) 2021-11-08 2023-10-17 International Business Machines Corporation Using a cut and paste segment for reading a standard housekeeping data set
TWI764856B (zh) * 2021-12-13 2022-05-11 慧榮科技股份有限公司 記憶體控制器與資料處理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101101790A (zh) * 2006-07-07 2008-01-09 乐金电子(昆山)电脑有限公司 与非闪存的读取方法
DE102007046789A1 (de) * 2006-10-10 2008-04-17 O-Mass As N-dimensionales iteratives ECC-Verfahren und Vorrichtung mit kombinierter Lösch- und Fehlerinformation und erneutem Lesen
US20080222490A1 (en) * 2007-03-08 2008-09-11 Peter Leung Method, apparatus, and system for dynamic ecc code rate adjustment
EP1758023B1 (de) * 2005-08-04 2009-04-08 Certance LLC Datenfehlererkennung während eines Schreibzykluses
EP2199911B1 (de) * 2008-12-22 2010-09-01 Industrial Technology Research Institute Flash-Speichersteuerung, Steuerung für fehlerkorrigierten Code darin und zugehörige Verfahren und Systeme

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4697266A (en) 1983-03-14 1987-09-29 Unisys Corp. Asynchronous checkpointing system for error recovery
US5247523A (en) 1989-07-12 1993-09-21 Hitachi, Ltd. Code error correction apparatus
US5369641A (en) * 1991-11-12 1994-11-29 Storage Technology Corporation Method and apparatus for detecting and correcting errors in data on magnetic tape media
JP3154607B2 (ja) 1993-12-28 2001-04-09 三菱電機株式会社 誤り訂正復号装置及び誤り訂正復号方法
US5844919A (en) 1996-09-16 1998-12-01 Cirrus Logic, Inc. Sector and track level error correction system for disc storage systems
US5983384A (en) * 1997-04-21 1999-11-09 General Electric Company Turbo-coding with staged data transmission and processing
US5996105A (en) * 1997-11-14 1999-11-30 Cirrus Logic, Inc. ECC system employing a data buffer for storing codeword data and a syndrome buffer for storing error syndromes
EP1067547A1 (de) 1999-06-28 2001-01-10 Hewlett-Packard Company Datensatzrückgewinnung durch kodewortüberlagerung
US6751771B2 (en) 2000-02-11 2004-06-15 Mediatek, Inc. Method and apparatus for error processing in optical disk memories
EP1146650A1 (de) * 2000-04-10 2001-10-17 Hewlett-Packard Company, A Delaware Corporation Fehlerkorrektur für Datenauzeichnung und Übertragung
US6738942B1 (en) 2000-06-02 2004-05-18 Vitesse Semiconductor Corporation Product code based forward error correction system
US6624958B1 (en) 2000-06-27 2003-09-23 Hewlett-Packard Development Company, L.P. Debris detection and error recovery method for tape drives
US6779149B1 (en) 2000-07-31 2004-08-17 Oak Technology, Inc. Burst error correction on DVD data
TW569188B (en) 2001-02-07 2004-01-01 Media Tek Inc Method and apparatus for error processing in optical disk memories
US7139842B2 (en) 2001-03-30 2006-11-21 Intel Corporation Method and apparatus for intersystem cut/copy and paste
US6882608B2 (en) 2001-06-01 2005-04-19 Matsushita Electric Industrial Co., Ltd. Optical disc controller and optical disc apparatus using the same
US6862149B2 (en) 2001-06-18 2005-03-01 Hewlett-Packard Development Company, L.P. Searching for append point in data storage device
US6757848B2 (en) 2001-06-19 2004-06-29 Hewlett-Packard Development Company, L.P. Recovery of user data from partially incorrect data set in tape data storage system
US6978414B2 (en) 2001-07-17 2005-12-20 Hewlett-Packard Development Company, L.P. Method and apparatus for protecting against errors occurring in data storage device buffers
US6958873B2 (en) 2001-07-31 2005-10-25 Hewlett-Packard Development Company, L.P. Data rewrite control in data transfer and storage apparatus
JP3760899B2 (ja) 2002-07-23 2006-03-29 ソニー株式会社 データ記録再生装置及びデータ記録再生方法、並びにコンピュータ・プログラム
KR100546314B1 (ko) 2003-02-08 2006-01-26 삼성전자주식회사 저장 장치 및 저장 장치에서의 독출 에러 복구 방법
US20050149819A1 (en) 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
KR101024916B1 (ko) 2004-03-19 2011-03-31 엘지전자 주식회사 1회 기록 가능한 고밀도 광디스크의 데이터 기록 방법 및장치
KR100915650B1 (ko) * 2004-12-28 2009-09-04 인터내셔널 비지네스 머신즈 코포레이션 정보 기록 장치, 그 데이터 흐름 제어기, 및 그 데이터흐름의 제어 방법
CN101228583B (zh) 2005-06-10 2010-12-08 国际商业机器公司 用于纠错的装置、方法
US7280293B2 (en) 2005-07-18 2007-10-09 International Business Machines Corporation Multi-level mapping of tape error recoveries
JP4432088B2 (ja) 2007-02-28 2010-03-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 一連の処理を所定の順序で行うための処理システム、ストレージ装置、及び方法
US7877662B2 (en) * 2007-03-23 2011-01-25 International Business Machines Corporation Reverse concatenation for product codes
US8195978B2 (en) 2008-05-16 2012-06-05 Fusion-IO. Inc. Apparatus, system, and method for detecting and replacing failed data storage
WO2010004936A1 (ja) 2008-07-08 2010-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション テープ媒体の走行速度調整装置、走行速度調整方法、及び走行速度調整プログラム
US8245111B2 (en) * 2008-12-09 2012-08-14 Intel Corporation Performing multi-bit error correction on a cache line
US7965462B2 (en) * 2009-01-09 2011-06-21 International Business Machines Corporation Storing partial data sets to magnetic tape
JP5536565B2 (ja) 2010-06-30 2014-07-02 インターナショナル・ビジネス・マシーンズ・コーポレーション テープ媒体にデータを書き込む装置及び方法
TW201314442A (zh) 2011-09-30 2013-04-01 Askey Technology Jiangsu Ltd 手持式電子產品的讀寫測試方法
US8707144B2 (en) * 2011-10-17 2014-04-22 Lsi Corporation LDPC decoder with targeted symbol flipping
US9053748B2 (en) 2012-11-14 2015-06-09 International Business Machines Corporation Reconstructive error recovery procedure (ERP) using reserved buffer
US8793552B2 (en) 2012-11-14 2014-07-29 International Business Machines Corporation Reconstructive error recovery procedure (ERP) for multiple data sets using reserved buffer
US8810944B1 (en) 2013-07-16 2014-08-19 International Business Machines Corporation Dynamic buffer size switching for burst errors encountered while reading a magnetic tape
US9582360B2 (en) 2014-01-07 2017-02-28 International Business Machines Corporation Single and multi-cut and paste (C/P) reconstructive error recovery procedure (ERP) using history of error correction
US9141478B2 (en) 2014-01-07 2015-09-22 International Business Machines Corporation Reconstructive error recovery procedure (ERP) using reserved buffer

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1758023B1 (de) * 2005-08-04 2009-04-08 Certance LLC Datenfehlererkennung während eines Schreibzykluses
CN101101790A (zh) * 2006-07-07 2008-01-09 乐金电子(昆山)电脑有限公司 与非闪存的读取方法
DE102007046789A1 (de) * 2006-10-10 2008-04-17 O-Mass As N-dimensionales iteratives ECC-Verfahren und Vorrichtung mit kombinierter Lösch- und Fehlerinformation und erneutem Lesen
US20080222490A1 (en) * 2007-03-08 2008-09-11 Peter Leung Method, apparatus, and system for dynamic ecc code rate adjustment
EP2199911B1 (de) * 2008-12-22 2010-09-01 Industrial Technology Research Institute Flash-Speichersteuerung, Steuerung für fehlerkorrigierten Code darin und zugehörige Verfahren und Systeme

Also Published As

Publication number Publication date
GB2523281B (en) 2016-12-14
DE112013005453T5 (de) 2015-08-13
US10110257B2 (en) 2018-10-23
US20140136919A1 (en) 2014-05-15
GB2523281A (en) 2015-08-19
US20140189460A1 (en) 2014-07-03
GB201509708D0 (en) 2015-07-22
US8793552B2 (en) 2014-07-29
WO2014075522A1 (en) 2014-05-22

Similar Documents

Publication Publication Date Title
DE112013005453B4 (de) Rekonstruierende Fehlerbehebungsprozedur (ERP) für mehrerer Datensätze unter Verwendung eines reservierten Puffers
DE112012000385B4 (de) Korrigieren von Auslöschungen in Speicher-Arrays
DE112014002870B4 (de) Kombinations-Fehler- und Löschdecodierung für Produktcodes
DE102015201384B4 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE112011103295B4 (de) Decodieren in Solid-State-Speichereinheiten
DE112010003645B4 (de) Festkörper-Speichersystem mit Parallelem Zugriff aus Mehreren Flash/PCM-Einrichtungen
DE112016003638B4 (de) Auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
DE69626130T2 (de) Datenintegritätscode und querüberprüfender code mit logischer blockadresse
DE112012006153B4 (de) Rekonstruktion von Codewörtern unter Verwendung eines Seitenkanals
DE112011100371T5 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE112011100199B4 (de) Integrierter Daten- und Kopfdatenschutz für Bandlaufwerke
DE102013016147A1 (de) Skalierbare Reparaturblockfehlerkorrektur für mehrere sequenzielle Datenblöcke in einem magnetischen Datenspeichergerät
US9564171B2 (en) Reconstructive error recovery procedure (ERP) using reserved buffer
DE112018005762B4 (de) Neuschreiben von datenobjekten auf speichermedien mit sequenziellem zugriff
DE112010003345T5 (de) Datenspeichersystem und Verfahren für das Betreiben eines Datenspeichersystems
DE2421112A1 (de) Speicheranordnung
DE102016108733A1 (de) Steuern einer redundanten Anordnung von unabhängigen Festplatten (RAID), welche ein Nur-Lese-Flash-Datenspeichergerät einschließt
DE69832791T2 (de) Verbessertes Datenschreiben auf Datenspeichermedium
DE102013016681A1 (de) Codieren und Decodieren von Daten zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102016107718A1 (de) Auslesen von Fehlervektoren aus einer Speichereinheit
DE102007007546A1 (de) Fehlerkorrekturcode-Striping
DE112014002403B4 (de) Hochleistungs-Lese-Modifizier-Schreib-System mit Zeilenratenzusammenführung von Datenrahmensegmenten in Hardware
DE102017129990A1 (de) Logisches format, bei dem laterales codieren genutzt wird, zum speichern von daten auf magnetband
DE112016002305T5 (de) Reduktion der Schreibverstärkung in einem Objektspeicher

Legal Events

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

Free format text: PREVIOUS MAIN CLASS: G06F0011070000

Ipc: G11B0020180000

R016 Response to examination communication
R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

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