DE102017126911A1 - Verknüpfter Speichersystem- und Hostsystem-Fehlerkorrekturcode - Google Patents

Verknüpfter Speichersystem- und Hostsystem-Fehlerkorrekturcode Download PDF

Info

Publication number
DE102017126911A1
DE102017126911A1 DE102017126911.8A DE102017126911A DE102017126911A1 DE 102017126911 A1 DE102017126911 A1 DE 102017126911A1 DE 102017126911 A DE102017126911 A DE 102017126911A DE 102017126911 A1 DE102017126911 A1 DE 102017126911A1
Authority
DE
Germany
Prior art keywords
data
record
ecc parity
storage device
parity 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.)
Pending
Application number
DE102017126911.8A
Other languages
English (en)
Inventor
Satoshi Yamamoto
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102017126911A1 publication Critical patent/DE102017126911A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/102Error in check bits
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Human Computer Interaction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

Hier werden Verbesserungen zum Bereitstellen einer Fehlerkorrektur beim Schreiben und Lesen von Daten auf eine und von einer Datenspeichervorrichtung beschrieben. In einer Implementierung wird eine Codierermatrix verwendet, um für einen Datensatz erste Fehlerkorrekturcode-Paritätsdaten (ECC-Paritätsdaten) auf einem Hostsystem und zweite ECC-Paritätsdaten für Spuren auf einer Datenspeichervorrichtung, die mit dem Hostsystem gekoppelt ist, zu erzeugen. Nach dem Erzeugen kann die Datenspeichervorrichtung den Datensatz und die ersten und zweiten ECC-Paritätsdaten auf Speichermedien für die Vorrichtung speichern. Wenn ein Lesevorgang erforderlich ist, kann die Speichervorrichtung eine erste Version des Datensatzes mit den ersten und zweiten ECC-Paritätsdaten an das Hostsystem liefern, wodurch es dem Hostsystem ermöglicht wird, die Paritätsdaten zu verwenden, um eine korrigierte Version des Datensatzes zu erzeugen.

Description

  • Technischer Hintergrund
  • Speichervorrichtungen wie etwa Festplattenlaufwerke und Festkörperlaufwerke stellen Speichermedien für Hostverarbeitungssysteme zum Speichern und Lesen verschiedener Datenobjekte bereit. Diese Datenobjekte können Bilder, Videos, Textdokumente, Kalkulationstabellen und verschiedene andere Dateitypen enthalten, die von dem Hostverarbeitungssystem verarbeitet werden können. Um Speichermedien für das Hostsystem verfügbar zu machen, können ein oder mehrere der Speichervorrichtungen unter Verwendung eines Kleincomputersystemschnittstellen-Busses (SCSI-Busses), eines seriell angebundenen SCSI-Busses (SAS-Busses), eines Busses zur seriellen Anbindung mit fortgeschrittener Technologie (SATA-Busses), eines Express-Busses zur Verbindung mit Peripheriekomponenten (PCIe-Busses), eines Faserkanals oder einer anderen ähnlichen Schnittstelle oder eines ähnlichen Busses kommunikationstechnisch mit dem System gekoppelt sein.
  • In einigen Beispielen können Speichervorrichtungen Verarbeitungssysteme enthalten, die in der Lage sind, die gespeicherten Daten zu verwalten und zu überwachen, wenn sie auf die Speichermedien geschrieben werden. Insbesondere können die Verarbeitungssysteme in der Lage sein, auf die Speichermedien zu schreibende Daten zu identifizieren, einen Fehlerkorrekturcode (ECC) oder Paritätsdaten für die zu schreibenden Daten zu erzeugen und die Daten mit den ECC-Daten auf die Speichermedien zu schreiben. Diese ECC-Informationen können dann von dem Speichersystem dann, wenn eine Leseanforderung empfangen wird, verwendet werden, um sicherzustellen, dass die korrekten Daten an das Verarbeitungssystem geliefert werden, indem die ECC-Daten auf die Daten angewendet werden und jegliche Fehler innerhalb der Sektoren korrigiert werden. Speichervorrichtungen können jedoch in der Anzahl von Sektoren, die sie für das Hostverarbeitungssystem korrigieren können, beschränkt sein.
  • Ferner können in einigen Implementierungen Schreibverifizierungsfunktionen von Hostverarbeitungssystemen in Bezug auf Speichervorrichtungen verwendet werden, um sicherzustellen, dass geeignete Daten auf die Speichermedien geschrieben werden. Diese Funktion ermöglicht, dass ein Lesebefehl unmittelbar nach einem Schreibbefehl ausgeführt wird, um sicherzustellen, dass die Daten ordnungsgemäß auf die Speichermedien geschrieben worden sind. Dieser zusätzliche Lesebefehl kann jedoch zu Leistungseinbußen auf der Festplatte führen, da jedes Lesen Betriebsmittel beansprucht, die anderen Lese- und Schreiboperationen auf der Vorrichtung zugewiesen werden könnten.
  • Übersicht
  • Die hierin offenbarten Beispiele stellen Verbesserungen beim Verwenden von Fehlerkorrekturcode-Daten (ECC-Daten) beim Schreiben und Lesen von Daten auf eine und von einer Datenspeichervorrichtung bereit. In einer Implementierung enthält eine Rechenvorrichtung ein oder mehrere computerlesbare Speichermedien und ein Verarbeitungssystem, das mit dem einen oder den mehreren computerlesbaren Speichermedien betriebstechnisch gekoppelt ist. Die Rechenvorrichtung enthält ferner Programmbefehle, die auf dem einen oder den mehreren computerlesbaren Speichermedien gespeichert sind, um ein Hostsystem zum Verwalten einer Speicherung von Datensätzen zu betreiben, und die, wenn sie von dem Verarbeitungssystem gelesen und ausgeführt werden, das Verarbeitungssystem mindestens zu Folgendem veranlassen: als Antwort auf eine Leseanforderung bezüglich eines Datensatzes, Empfangen einer ersten Version des Datensatzes, erster Fehlerkorrekturcode-Paritätsdaten (ECC-Paritätsdaten) für den Datensatz, die von dem Hostsystem erzeugt werden, und zweiter ECC-Paritätsdaten für den Datensatz, die von der Datenspeichervorrichtung erzeugt werden, aus einer Datenspeichervorrichtung, wobei die ersten ECC-Paritätsdaten und die zweiten ECC-Paritätsdaten unter Verwendung einer Codierermatrix erzeugt werden. Die Programmbefehle veranlassen das Verarbeitungssystem ferner dazu, mindestens die erste Version des Datensatzes unter Verwendung der ersten ECC-Paritätsdaten, der zweiten ECC-Paritätsdaten und der Codierermatrix zu verarbeiten, um eine zweite Version des Datensatzes zu erzeugen, bei der ein oder mehrere Sektorfehler aus der ersten Version des Datensatzes korrigiert sind.
  • In mindestens einer Implementierung können die Programmbefehle das Verarbeitungssystem ferner dazu veranlassen, als Antwort auf eine Schreibanforderung bezüglich des Datensatzes die ersten ECC-Paritätsdaten für den Datensatz unter Verwendung der Codierermatrix zu erzeugen und den Datensatz und die ersten ECC-Paritätsdaten zum Speichern durch die Datenspeichervorrichtung an die Datenspeichervorrichtung zu senden.
  • Figurenliste
  • Die folgende Beschreibung und die zugehörigen Figuren lehren die beste Art der Erfindung. Um erfinderische Prinzipien zu lehren, können einige herkömmliche Aspekte der besten Art vereinfacht oder weggelassen werden. Die folgenden Ansprüche spezifizieren den Umfang der Erfindung. Es ist zu beachten, dass einige Aspekte der besten Art nicht unter den Umfang der Erfindung fallen können, wie er durch die Ansprüche spezifiziert ist. Somit werden Fachleute auf dem Gebiet Variationen von der besten Art erkennen, die unter den Umfang der Erfindung fallen. Fachleute werden erkennen, dass die nachstehend beschriebenen Merkmale auf verschiedene Arten kombiniert werden können, um mehrere Variationen der Erfindung zu bilden. Infolgedessen ist die Erfindung nicht auf die nachstehend beschriebenen spezifischen Beispiele beschränkt, sondern nur auf die Ansprüche und ihre Äquivalente.
    • 1 zeigt ein System zum Verknüpfen eines Fehlerkorrekturcodes eines Hostsystems und eines Fehlerkorrekturcodes einer Datenspeichervorrichtung gemäß einer Implementierung.
    • 2 veranschaulicht ein Verfahren zum Speichern eines Datensatzes in einer Speichervorrichtung gemäß einer Implementierung.
    • 3 veranschaulicht ein Verfahren zum Lesen eines Datensatzes aus einer Speichervorrichtung gemäß einer Implementierung.
    • 4A und 4B veranschaulichen Betriebsszenarien des Schreibens und Lesens von Daten auf ein und von einem Speichersystem gemäß einer Implementierung.
    • 5 zeigt Übersichten zum Erzeugen eines Fehlerkorrekturcodes gemäß einer Implementierung.
    • 6 veranschaulicht eine Matrix zum Erzeugen von Hostsystem-Fehlerkorrekturcodedaten und Speichervorrichtungs-Fehlerkorrekturcodedaten gemäß einer Implementierung.
    • 7A-7D zeigen einen Überblick über das Identifizieren wiederhergestellter Datensektoren gemäß einer Implementierung.
    • 8 zeigt ein Hostrechensystem gemäß einer Implementierung.
    • 9 zeigt eine Datenspeichervorrichtung gemäß einer Implementierung.
  • Genaue Beschreibung
  • Speichervorrichtungen wie beispielsweise Festplattenlaufwerke und Festkörperlaufwerke werden häufig in Rechensystemen zum Speichern von Datenobjekten für ein Hostverarbeitungssystem verwendet. Diese Datenobjekte enthalten oft Bilder, Videos, Textdokumente, Kalkulationstabellen und verschiedene andere Dateitypen, die von dem Hostverarbeitungssystem verarbeitet werden können. Um eine Speichervorrichtung für das Hostverarbeitungssystem verfügbar zu machen, können die Speichervorrichtungen kommunikationstechnisch mit dem Hostverarbeitungssystem verknüpft sein, um eine Kommunikation zwischen den beiden Systemen zu ermöglichen. Diese Kommunikationsverbindung kann einen Kleincomputersystemschnittstellen-Bus (SCSI-Bus), einen seriell angebundenen SCSI-Bus (SAS-Bus), einen Bus zur seriellen Anbindung mit fortgeschrittener Technologie (SATA-Bus), einen Express-Busses zur Verbindung mit Peripheriekomponenten (PCIe-Bus), einen Faserkanal oder eine andere ähnliche Schnittstelle oder einen ähnlichen Bus umfassen.
  • In dem vorliegenden Beispiel verwenden Hostsysteme und Datenspeichervorrichtungen einen Fehlerkorrekturcode (ECC), um sicherzustellen, dass Daten, die auf Speichermedien auf der Datenspeichervorrichtung geschrieben werden, genau die Daten wiedergeben, deren Speichern angefordert wurde. Insbesondere werden die ECC-Daten verwendet, um jegliche Bits und Sektoren zu korrigieren, die möglicherweise fehlerhaft auf Speichermedien der Datenspeichervorrichtung geschrieben worden sind. Um die ECC-Paritätsdaten effizienter zu verwenden, werden ECC-Paritätsdaten, die von dem Hostsystem erzeugt werden, mit den ECC-Paritätsdaten verknüpft, die von der Datenspeichervorrichtung erzeugt werden. Bei Erzeugen dieser Verknüpfung kann ein Hostsystem ECC-Paritätsdaten, die von der Speichervorrichtung erzeugt werden, in Verbindung mit ECC-Paritätsdaten, die von dem Hostsystem erzeugt werden, verwenden, um jegliche Probleme in Daten zu beheben, die auf den Speichermedien gespeichert sind.
  • In einigen Implementierungen kann das Hostsystem zum Verknüpfen der ECC-Paritätsdaten für die Speichervorrichtung und das Hostsystem dann, wenn ein Schreibvorgang für einen Datensatz erforderlich ist, erste ECC-Paritätsdaten für den Datensatz erzeugen. Nach dem Erzeugen können der Datensatz und die ersten ECC-Paritätsdaten an die Speichervorrichtung geliefert werden, wobei die Speichervorrichtung zweite ECC-Paritätsdaten für den Datensatz erzeugt. In einigen Beispielen können die zweiten ECC-Paritätsdaten für jede der erforderlichen Speicherspuren für den Datensatz erzeugt werden. Wenn die zweiten ECC-Paritätsdaten erzeugt werden, können der Datensatz, die ersten ECC-Paritätsdaten und die zweiten ECC-Paritätsdaten auf den Speichermedien, die der Datenspeichervorrichtung entsprechen, gespeichert werden.
  • Nach dem Speichern kann das Hostsystem eine Leseanforderung zum Abrufen des Datensatzes aus den Speichermedien erzeugen. Als Antwort auf die Anforderung wendet die Speichervorrichtung die zweiten ECC-Paritätsdaten auf den Datensatz an, um in dem Datensatz gefundene Fehler zu korrigieren. Wenn beispielsweise die zweite ECC-Parität für jede Spur vier Sektoren lang ist, dann können die zweiten ECC-Paritätsdaten verwendet werden, um vier oder weniger Sektoren auf dieser speziellen Spur zu reparieren. Wenn jedoch die Fehlersektoren mehr als vier sind, dann ist die durch die Speichervorrichtung erzeugte Spur-ECC-Parität vielleicht nicht in der Lage, die Sektoren ohne Unterstützung durch die Paritätsdaten des Hostsystems zu korrigieren. Nach dem Anwenden kann der Datensatz zusammen mit den ersten ECC-Paritätsdaten und mindestens einem Teil der zweiten ECC-Paritätsdaten an das Hostsystem geliefert werden. Das Hostsystem kann dann eine Codierermatrix (die bei der Erzeugung der ersten ECC-Paritätsdaten und der zweiten ECC-Paritätsdaten verwendet wird), die ersten ECC-Paritätsdaten und die zweiten ECC-Paritätsdaten aus der Datenspeichervorrichtung verwenden, um verbleibende Fehler in dem Datensatz zu korrigieren. In einigen Beispielen kann die Matrix eine Cauchy-Matrix oder eine andere Matrix umfassen, die in der Lage ist, Paritätsdaten zu erzeugen, wenn sie auf einen Datensatz angewendet werden.
  • Um das Verknüpfen von ECC-Paritätsdaten zwischen einer Datenspeichervorrichtung und einem Hostsystem weiter zu veranschaulichen, ist 1 bereitgestellt. 1 zeigt ein System 100 zum Verknüpfen eines Fehlerkorrekturcodes eines Hostsystems und eines Fehlerkorrekturcodes einer Datenspeichervorrichtung gemäß einer Implementierung. Das System 100 enthält eine Datenspeichervorrichtung 110 und ein Hostsystem 120. Die Datenspeichervorrichtung 110 enthält ferner ein Speichersteuersystem 111 und Speichermedien 113, die einen Festplattenspeicher wie z. B. Medien für schindelartig überlappende Magnetaufzeichnung (SMR) enthalten können. Die Datenspeichervorrichtung 110 ist über den Bus 130 kommunikationstechnisch mit dem Hostsystem 120 gekoppelt.
  • Im Betrieb kann die Datenspeichervorrichtung 110 computerlesbare Daten zum späteren Abrufen speichern, also beispielsweise Anwenderdaten, Systemdaten, Auslagerungsdateidaten und dergleichen. Das Hostsystem 120 kann zumindest Datenspeicher- und Abrufoperationen der Datenspeichervorrichtung 110 über den Bus 130 sowie das Senden von Daten an andere Systeme und Einrichtungen wie beispielsweise Verarbeitungssysteme, Netzschnittstellen und dergleichen steuern. Das Hostsystem 120 kann eine zentrale Verarbeitungseinheit (CPU) sowie andere Computerhardware, die in der Lage ist, Dateninteraktionen mit der Datenspeichervorrichtung 110 sowie anderen ähnlichen Systemen zu verwalten, enthalten.
  • Wenn ein Schreiben eines Datensatzes wie etwa eines Datenobjekts, einer Datei oder eines anderen ähnlichen Datensatzes erforderlich ist, kann das Hostsystem 120 ECC-Paritätsdaten für den Datensatz unter Verwendung einer Codierermatrix erzeugen, bevor der Datensatz und die ECC-Paritätsdaten über den Bus 130 an die Datenspeichervorrichtung 110 gesendet werden. Die Datenspeichervorrichtung 110 kann dann, wenn die Daten von dem Hostsystem 120 empfangen werden, unter Verwendung der Codierermatrix zweite ECC-Paritätsdaten erzeugen, wobei die zweiten ECC-Paritätsdaten den Spuren entsprechen, die erforderlich sind, um den Datensatz und die ersten ECC-Paritätsdaten von dem Hostsystem 120 zu speichern. Der Datensatz kann dann mit den durch die Datenspeichervorrichtung 110 und das Hostsystem 120 erzeugten ECC-Daten auf dem Speichermedium 113 gespeichert werden. Nach dem Schreiben kann der Datensatz dann unter Verwendung der hier weiter beschriebenen Operationen aus dem Speichermedium 113 gelesen werden.
  • 2 veranschaulicht ein Verfahren zum Speichern eines Datensatzes in einer Speichervorrichtung gemäß einer Implementierung. Die Operationen von 2 sind im Folgenden unter Bezugnahme auf Systeme und Elemente des Systems 100 von 1 in Klammern angegeben.
  • In 2 erzeugt das Hostsystem 120 als Antwort auf eine Schreibanforderung für das Hostsystem 120 erste ECC-Paritätsdaten für einen Datensatz unter Verwendung einer Codierermatrix wie etwa einer Cauchy-Matrix (201). Diese ECC-Daten können einen oder mehrere Sektoren von Daten enthalten, die in der Lage sind, Fehler in dem Datensatz zu korrigieren, wenn der Datensatz auf Speichermedien geschrieben wird. Sobald die erste ECC-Parität erzeugt ist, kann das Hostsystem 120 den Datensatz mit den ersten ECC-Paritätsdaten an eine geeignete Datenspeichervorrichtung 110 für den Datensatz senden (202).
  • Als Antwort auf das Empfangen des Datensatzes mit den ersten ECC-Paritätsdaten kann die Datenspeichervorrichtung 110 zweite ECC-Paritätsdaten für den Datensatz erzeugen (203). In einigen Implementierungen entsprechen die zweiten ECC-Paritätsdaten Paritätsdaten für Spuren, die beim Schreiben des Datensatzes auf die Speichermedien verwendet werden. Wenn beispielsweise der Datensatz Sektoren auf vier Spuren verwendet hat, dann können die zweiten ECC-Paritätsdaten Paritätsdaten für jede der vier Spuren enthalten. Wenn die zweiten ECC-Paritätsdaten erzeugt werden, umfasst das Verfahren ferner, dass die Datenspeichervorrichtung 110 die Daten in den Speichermedien 113 auf der Datenspeichervorrichtung 110 speichert (204). Diese Konfiguration ermöglicht es auch, dass ein Schreibvorgang auf den Speichermedien 113 durchgeführt wird, ohne dass eine Schreibverifizierungsfunktion verwendet wird, um sicherzustellen, dass die Daten richtig auf die Speichermedien geschrieben wurden.
  • 3 zeigt ein Verfahren zum Lesen eines Datensatzes aus einer Speichervorrichtung gemäß einer Implementierung. Die Operationen von 3 sind im Folgenden unter Bezugnahme auf Systeme und Elemente des Systems 100 von 1 in Klammern angegeben.
  • Nachdem Daten auf die Speichermedien 113 geschrieben worden sind, kann das Hostsystem 120 eine Leseoperation erfordern, um Daten aus den Speichermedien 113 abzurufen. Um diese Operation bereitzustellen, empfangen die Datenspeichervorrichtung 110 und das Speichersteuersystem 111 eine Leseanforderung von dem Hostsystem 120 (301). Als Antwort auf die Anforderung identifiziert die Datenspeichervorrichtung 110 die erforderlichen Daten für die Anforderung und wendet die zweiten ECC-Paritätsdaten (die den von der Speichervorrichtung erzeugten ECC-Daten entsprechen) auf den Datensatz an (302). In einigen Implementierungen können diese ECC-Daten Spurparitätsdaten für den angeforderten Datensatz enthalten, die von dem Hostsystem erzeugt werden. Wenn beispielsweise die zweite ECC-Parität für jede Spur vier Sektoren lang ist, dann können die zweiten ECC-Paritätsdaten verwendet werden, um vier oder weniger Sektoren auf dieser bestimmten Spur zu reparieren. Wenn jedoch die Fehlersektoren mehr als vier sind, dann sind die durch die Speichervorrichtung erzeugten Spur-ECC-Paritätsdaten vielleicht nicht in der Lage, die Sektoren ohne Unterstützung durch die Paritätsdaten des Hostsystems zu korrigieren.
  • Sobald Fehlersektoren in dem angeforderten Datensatz unter Verwendung der Spurparitätsdaten korrigiert worden sind, werden der Datensatz mit den korrigierten Sektoren, die ersten ECC-Paritätsdaten und die zweiten ECC-Paritätsdaten über den Bus 130 an das Hostsystem 120 übertragen (303). Diese Übertragung ermöglicht es dem Hostsystem 120, die von ihm selbst beim Speichern der Daten erzeugten ECC-Daten sowie die ECC-Daten, die von der Speichervorrichtung beim Speichern der Daten erzeugt werden, zu verwenden, um verbleibende Fehler in dem angeforderten Datensatz zu korrigieren.
  • Hier wird das Hostsystem 120 dazu veranlasst, den Datensatz, die ersten ECC-Paritätsdaten (die Fehlerkorrekturdaten aus dem Hostsystem entsprechen) und die zweiten ECC-Paritätsdaten (die Fehlerkorrekturdaten aus der Speichervorrichtung entsprechen) zu empfangen (304). Nach dem Empfangen kann das Hostsystem 120 die ersten ECC-Paritätsdaten und die zweiten ECC-Paritätsdaten in Verbindung mit einer Codierermatrix anwenden, um jegliche verbleibende Fehler, die dem Datensatz entsprechen, zu korrigieren.
  • In einigen Implementierungen kann die Speichervorrichtung, anstatt für jeden der Datenlesevorgänge die ersten ECC-Paritätsdaten mit den zweiten ECC-Paritätsdaten bereitzustellen, die zweiten Paritätsdaten nur bereitstellen, wenn sie benötigt werden. Zum Beispiel kann die Speichervorrichtung bestimmen, ob irgendwelche Fehlersektoren korrigiert werden können, bevor die Sektoren für das Hostsystem 120 bereitgestellt werden. Wenn bestimmt wird, dass alle Sektoren vor dem Übertragen der Daten an das Hostsystem 120 korrigiert werden können, kann es erforderlich sein, dass die Datenspeichervorrichtung 110 nur die Daten und in einigen Beispielen die Paritätsdaten, die von dem Hostsystem 120 erzeugt werden, für die Leseanforderung überträgt. Wenn dagegen die Sektoren nicht alle unter Verwendung der durch das Speichersteuersystem 111 erzeugten Parität auf der Datenspeichervorrichtung 110 repariert werden können, dann kann die Datenspeichervorrichtung 110 die durch die Speichervorrichtung erzeugten Paritätsdaten mit dem Datensatz und ECC-Paritätsdaten, die von dem Host erzeugt werden, bereitstellen.
  • 4A und 4B zeigen Betriebsszenarien 400 und 401 zum Schreiben und Lesen von Daten auf ein und von einem Speichersystem gemäß einer Implementierung. 4A und 4B enthalten das Hostsystem 410 und das Speichersystem 440, wobei das Hostsystem 410 auf ähnliche Weise wie das System 100 von 1 kommunikationstechnisch mit dem Speichersystem 440 gekoppelt ist.
  • Unter Bezugnahme auf das Betriebsszenario 400 von 4A erzeugt das Hostsystem 410 in Schritt 1 ECC-Parität-A-Daten 430 für den Datensatz 420 zum Schreiben in das Speichersystem 440. Parität-A-Daten 430 können einen oder mehrere Sektoren von Paritätsinformationen, die der Gesamtheit des Datensatzes 420 entsprechen, enthalten und unter Verwendung einer Codierermatrix wie etwa einer Cauchy-Matrix erzeugt werden. Sobald die Paritätsdaten für den Datensatz durch das Hostsystem 410 erzeugt worden sind, können der Datensatz 420 und die Parität-A-Daten 430 in Schritt 2 an das Speichersystem 440 übertragen werden. Das Speichersystem 440 erzeugt dann in Schritt 3 Parität-B-Daten 431. Das heißt, für jede durch den Datensatz 420 benötigte Spur kann das Speichersystem 440 einen oder mehrere Sektoren schreiben, um jegliche Fehler in dieser Spur zu korrigieren. Zusätzlich können Parität-A-Daten 430 mit dem Datensatz 420 und den Parität-B-Daten 431 auf die Speichermedien geschrieben werden.
  • Unter Bezugnahme auf 4B beschreibt das Betriebsszenario 401 die Operationen eines Datenlesevorgangs nach dem Schreiben des Datensatzes 420 und der Paritätsdaten 430-431 in das Speichersystem 440. Insbesondere empfängt das Speichersystem 440 eine Leseanforderung von dem Hostsystem 410 und wendet in Schritt 4 Parität-B-Daten 431 an, um jegliche in dem Datensatz 420 identifizierten Fehler zu korrigieren. Wenn beispielsweise ein Fehler in einem ersten Sektor einer ersten Spur gefunden wurde, dann können die entsprechenden Parität-B-Daten 431 für die erste Spur verwendet werden, um den Fehler zu korrigieren. Sobald die Parität-B-Daten 431 auf den Datensatz 420 angewendet worden sind, kann das Speichersystem 440 bei Schritt 5 den Datensatz 440 und die Paritätsdaten 430-431 an das Hostsystem 410 übertragen.
  • In einigen Implementierungen, in denen die Parität-B-Daten 431 alle Fehler in dem Datensatz 420 korrigieren können, können der Datensatz 420 und in einigen Beispielen die Parität-A-Daten 430 ohne Parität-B-Daten 431 an das Hostsystem 410 geliefert werden, da die Daten nicht zur Korrektur von Fehlern in dem Datensatz benötigt werden. Wenn dagegen die Parität-B-Daten 431 nicht in der Lage sind, die Fehler im Datensatz 420 zu beheben, werden die Paritätsdaten A und B beide von dem Hostsystem 410 benötigt, um die verbleibenden Fehler zu beheben.
  • Nachdem der Datensatz 420 und die Paritätsdaten 430-431 von dem Hostsystem 410 empfangen worden sind, kann das Hostsystem 410 hier in Schritt 6 Parität-A-Daten 430 und Parität-B-Daten 431 anwenden, um verbleibende Fehler im Datensatz zu korrigieren. In einigen Implementierungen kann das Hostsystem 410 beim Anwenden von Paritätsdaten 430 und 431 auf den Datensatz die Paritätsdaten in Verbindung mit der Codierermatrix verwenden, die zum Erzeugen der Paritätsdaten verwendet wurde. Diese Codierermatrix kann in einigen Fällen eine Cauchy-Matrix umfassen, von der ein Beispiel in 6 zu finden ist. Insbesondere kann das Hostsystem 410 mathematische Operationen an dem Datensatz unter Verwendung von Paritätsdaten 430-431 und der Codierermatrix durchführen, um wiederhergestellte Datensektoren zu identifizieren.
  • In einigen Implementierungen kann die Version des Datensatzes 420, die in dem Operationsszenario 401 an das Hostsystem 410 geliefert wird, die Fehler enthalten, die unter Verwendung der Parität-B-Daten 431 nicht behoben werden konnten. In anderen Beispielen kann das Speichersystem 440 die Fehlersektoren mit Nullen ersetzen, so dass die Fehler für das Hostsystem 410 leicht identifizierbar und korrigierbar sind.
  • Obwohl in den vorherigen Beispielen von 1-4B beschrieben worden ist, dass die ECC-Daten des Hostsystems mit dem Datensatz auf der Speichervorrichtung gespeichert werden, sollte verstanden werden, dass die ECC-Daten des Hostsystems an anderen Orten gespeichert werden können. Zum Beispiel können die Hostsystem-ECC-Daten an einem getrennten Ort auf der Datenspeichervorrichtung gespeichert werden oder können auf einer sekundären Speichervorrichtung gespeichert werden. Wenn die Hostsystem-ECC-Daten zur Korrektur von Fehlern in einem Datensatz benötigt werden, können die Hostsystem-ECC-Daten daher von dem separaten Ort auf der Datenspeichervorrichtung oder von der sekundären Speichervorrichtung abgerufen werden.
  • 5 zeigt Übersichten zum Erzeugen von Fehlerkorrekturcode gemäß einer Implementierung. Die Betriebsszenarien 501 und 502 umfassen einen Datensatz 510, Hostsystem-ECC-Daten 520 und Speichervorrichtungs-ECC-Daten 521.
  • Im Betrieb kann ein Host einen Schreibbefehl zum Schreiben des Datensatzes 510 auf Speichermedien, die von einer Speichervorrichtung bereitgestellt werden, erzeugen. Um die Daten zu schreiben, kann das Hostsystem Hostsystem-ECC-Daten 520 der Länge E erzeugen, die der Parität des Datensatzes 510 entsprechen. In einem nicht einschränkenden Beispiel kann das Hostsystem einen Abschnitt einer Cauchy-Matrix verwenden, um die Hostsystem-ECC-Daten zu erzeugen, und den Datensatz 510 mit der Transponierten des Hostsystemabschnitts der Cauchy-Matrix multiplizieren, um Hostsystem-ECC-Daten 520 zu bestimmen. Die Gleichung für eine solche Operation kann wie folgt aussehen. D [ 1 × 1 : N ]  X Transponierte von C [ e + 1 : e + E × 1 : N ]
    Figure DE102017126911A1_0001
    wobei C den Abschnitt der Cauchy-Matrix für das Hostsystem darstellt, D die Datenmatrix (Datenmenge) repräsentiert, N die Anzahl der Sektoren in dem Datensatz ist und e die Speichersystem-Paritätszahl für jede Spur repräsentiert. Sobald die Hostsystem-ECC-Daten erzeugt sind, können der Datensatz 510 und die Hostsystem-ECC-Daten 520 an die Datenspeichervorrichtung geliefert werden.
  • Unter Bezugnahme auf das Betriebsszenario 502 kann die Datenspeichervorrichtung, sobald die Daten von dem Hostsystem empfangen worden sind, Spur-ECC-Daten für die in 5 als Speichervorrichtungs-ECC-Daten 521 dargestellten Daten erzeugen. Die Speichervorrichtungs-ECC-Daten 521 können dann mit dem Datensatz 510 und Hostsystem-ECC-Daten 520 auf Speichermedien der Speichervorrichtung gespeichert werden. In einigen Implementierungen kann die Speichervorrichtung beim Erzeugen von Speichervorrichtungs-ECC-Daten 521 einen Abschnitt der Cauchy-Matrix, der der Datenspeichervorrichtung entspricht, identifizieren und diese auf den Datensatz 510 anwenden, um Speichervorrichtungs-ECC-Daten 521 zu erzeugen. Zum Beispiel kann für die erste Spur des Betriebsszenarios 502 ein Abschnitt der Datenmatrix D1 [ 1 × 1 : N1 ]  
    Figure DE102017126911A1_0002
    mit der Transponierte des Abschnitts der Cauchy-Matrix, der der ersten Spur entspricht, C [ 1 : e × 1 : N1 ]
    Figure DE102017126911A1_0003
    multipliziert werden, wobei e die Anzahl der Sektoren für jede Spur ist und N1 die Länge der Daten von dem Host ist, die in jede Spur geschrieben werden können.
  • 6 zeigt eine Matrix 600 zum Erzeugen von Hostsystem-ECC-Daten und Speichervorrichtungs-ECC-Daten gemäß einer Implementierung. Die Matrix 600 ist repräsentativ für eine Cauchy-Matrix, wie sie in 5 beschrieben ist. Die Matrix 600 enthält den Speichermatrixabschnitt 610 und den Hostsystemmatrixabschnitt 620. Die Matrix 600 ist durch die Länge der Paritätsdaten 640 (e+E) und durch die Länge des Datensatzes 630 (N) definiert oder C ist [1:e+E × 1:N]. In dem Beispiel der Matrix 600 repräsentiert e die Anzahl von Paritätssektoren für jede Spur, E repräsentiert die Anzahl von Systemparitätssektoren für den Datensatz und N ist die Gesamtlänge des Datensatzes, der aus Sektorlängen N1, N2, N3 und N4 besteht.
  • Hier umfasst der erste Abschnitt der Matrix einen Speichervorrichtungsmatrixabschnitt 610, der ferner in kleinere Spurabschnitte 650-653 unterteilt sein kann. Diese Abschnitte sind repräsentativ für Abschnitte der Matrix zum Erzeugen von ECC-Paritätsdaten für jede Spur in dem Speichersystem. Zum Beispiel kann der erste Spurabschnitt 650 dem Abschnitt entsprechen, der beim Erzeugen der Parität für die erste Spur für einen Datensatz verwendet wird. Um die ECC-Paritätsdaten für die erste Spur zu erzeugen, kann der Abschnitt des Datensatzes in der ersten Spur mit der Transponierten des ersten Spurabschnitts 650 multipliziert werden. Die ECC-Paritätsdaten für die erste Spur können dann auf die Speichermedien mit der ersten Spur gespeichert werden. Ähnliche Operationen können auch beim Erzeugen der Paritätsdaten für die verbleibenden Spuren für den Datensatz unter Verwendung der Spurabschnitte 651-653 verwendet werden.
  • Zusätzlich zum Erzeugen der ECC-Paritätsdaten für jede der einzelnen Spuren wird die Matrix 600 auch beim Erzeugen von System-ECC-Paritätsdaten verwendet, die von dem Hostsystem erzeugt werden. Hier wird der HostsystemMatrixabschnitt 620 in Verbindung mit dem Datensatz verwendet, um erste Paritätsdaten für den Datensatz zu erzeugen. Insbesondere kann das Hostsystem den Datensatz mit der Transponierten des Hostsystem-Matrixabschnitts 620 multiplizieren, um die System-ECC-Paritätsdaten zu erzeugen. Diese Paritätsdaten können dann mit dem Datensatz an die Speichervorrichtung geliefert werden, was es der Speichervorrichtung ermöglicht, die System-ECC-Paritätsdaten mit dem Datensatz zu speichern.
  • Sobald die Daten auf die Speichermedien der Datenspeichervorrichtung geschrieben worden sind, kann das Hostsystem dann erfordern, dass die Daten von den Speichermedien gelesen werden. Um diese Operation bereitzustellen, kann die Speichervorrichtung zuerst die ECC-Paritätsdaten der Speichervorrichtung auf den Datensatz anwenden, um identifizierbare Fehler zu korrigieren. In einigen Implementierungen, in denen die Vorrichtungs-ECC-Paritätsdaten alle Fehler korrigieren können, sind die System-ECC-Paritätsdaten möglicherweise nicht erforderlich. Wenn jedoch die Vorrichtungs-ECC-Paritätsdaten nicht in der Lage sind, alle Fehler zu korrigieren, können die System-ECC-Paritätsdaten und die Speichervorrichtungs-ECC-Paritätsdaten mit dem Datensatz bereitgestellt werden, wobei der Datensatz Fehlersektoren enthält. Diesen Fehlersektoren können in einigen Implementierungen durch die Datenspeichervorrichtung Nullen zugewiesen werden oder sie können mit den Fehlern durch die Datenspeichervorrichtung an das Hostsystem geliefert werden. In einigen Beispielen kann die Datenspeichervorrichtung ferner eine Liste der Sektoren, die verbleibende Fehler aufweisen, für das Hostsystem bereitstellen.
  • Sobald die erste Version des Datensatzes (mit den enthaltenen Fehlersektoren) zusammen mit den Vorrichtungs- und System-ECC-Paritätsdaten bereitgestellt worden ist, kann das Hostsystem die erste Version des Datensatzes unter Verwendung der ECC-Paritätsdaten und der Matrix 600 verarbeiten, um die verbleibenden Fehler im Datensatz zu beheben. In mindestens einer Implementierung kann das Hostsystem die erste Version des Datensatzes (mit den Fehlern) mit der Transponierten der Matrix 600 multiplizieren, um eine modifizierte System-ECC-Paritätsmatrix PE' zu erzeugen. Die Gleichung würde wie folgt aussehen: D' [ 1 × 1 : N ]  X Transponierte von C [ 1 : e + E × 1 : N ] = PE ' [ 1 × 1 : e + E ] ,
    Figure DE102017126911A1_0004
    wobei D' die Daten der ersten Version des Datensatzes mit Fehlern repräsentiert.
  • Das Hostsystem kann ferner eine integrierte Paritätsmatrix für die Speichervorrichtung für die erste Version des Datensatzes erzeugen, wobei die integrierte Paritätsmatrix unter Verwendung mehrerer Verfahren erhalten werden kann. Unter Bezugnahme auf 6 als ein Beispiel würde das Hostsystem dann, wenn ein Fehlersektor in der zweiten Spur identifiziert würde, Abschnitte des Datensatzes, die der ersten Spur, der dritten Spur und der vierten Spur entsprechen, mit der Transponierten der Spurabschnitte 650 und 652-653 multiplizieren, um eine modifizierte Speichervorrichtungs-ECC-Paritätsmatrix zu erzeugen. Die Gleichung würde wie folgt aussehen: D' [ 1 × 1 : N1 2 * N 1 + 1 : 4 * N1 ]  X Transponierte von C [ 1 × 1 : N1 ,2 * N 1 + 1 : 4 * N1 ] = Pe ' .
    Figure DE102017126911A1_0005
  • Nach der Multiplikation können die ECC-Paritätsdaten, die der zweiten Spur entsprechen, zu der modifizierten Paritätsmatrix Speichervorrichtungs-ECC-addiert werden, um die Speichervorrichtungs-ECC-integrierte Paritätsmatrix Pe" zu erzeugen. Diese Gleichung würde wie folgt aussehen: Pe 2 : [ 1 × 1 : e ] + Pe' [ 1 × 1 : e ] = PE ' ' [ 1 × 1 : e ] .
    Figure DE102017126911A1_0006
  • Nach dem Erzeugen der Speichervorrichtungs-ECC-integrierte Paritätsmatrix Pe" kann die Speichervorrichtungs-ECC-integrierte Paritätsmatrix mit der System-ECC-Paritätsmatrix so zusammengefügt werden, dass Pe" [1 × 1:e] mit System-ECC-Paritätsmatrix PE[1 × 1:E] zusammengefügt wird, um eine Matrix PE"[1 × 1:e+E] zu erzeugen. Die Matrix PE" wird dann zu der modifizierten System-ECC-Paritätsmatrix PE' addiert, um eine integrierte Syndrommatrix PE''' zu erzeugen, wobei PE ' ' [ 1 × 1 : e + E ] + PE' [ 1 × 1 : e + E ] = PE ' ' [ 1 × 1 : e + E ] .
    Figure DE102017126911A1_0007
  • Sobald die integrierte Syndrommatrix PE''' erzeugt ist, wird die Spalte in der Matrix 600, die dem Fehlersektor entspricht, identifiziert, so dass eine Teilmatrix C [1:e+E × 1:e+E] für den Fehler identifiziert wird. Unter erneuter Bezugnahme auf das Beispiel eines Fehlers in dem zweiten Spurabschnitt 651 würde eine Spalte identifiziert werden, die der zweiten Spur entspricht. Dann wird eine Inverse der Teilmatrix genommen und mit der Transponierten der integrierten Syndrommatrix multipliziert, so dass Inverse von C [ 1 : e + E × 1:e + E ]  X Transponierte von PE'' [ 1 × 1:e + E ] = Vektor wieder- hergestellter Datensektoren R [ e + E × 1 ] .
    Figure DE102017126911A1_0008
  • Dieser Vektor wiederhergestellter Datensektoren wird dann verwendet, um eine zweite Version eines Datensatzes mit den erforderlichen korrigierten Sektoren zu erzeugen.
  • Es wird nun auf 7A-7D als weiteres Beispiel des Bestimmens wiederhergestellter Datensektoren, um einen korrigierten Datensatz zu erzeugen, Bezug genommen. 7A-7D zeigen eine Übersicht zum Identifizieren wiederhergestellter Datensektoren gemäß einer Implementierung.
  • Unter Bezugnahme auf 7A umfasst die Operation ein Multiplizieren einer Lesedatenmatrix 710, die den aus der Speichervorrichtung gelesenen Daten entspricht, mit der Transponierten („tr“) der Codierermatrix 715, um eine modifizierte System-ECC-Paritätsmatrix 717 zu erzeugen. Die Datenmatrix 710 kann eine erste Version des Datensatzes enthalten, die aus der Datenspeichervorrichtung gelesen wird, wobei jegliche Sektoren, die nicht durch die ECC-Paritätsdaten der Speichervorrichtung korrigiert werden können, in einigen Beispielen als Nullen bereitgestellt werden können und ferner mit Informationen über die Sektoren, die von der Datenspeichervorrichtung nicht korrigiert werden konnten, an das Hostsystem geliefert werden können.
  • Zusätzlich zu den Operationen von 7A stellt 7B eine Bestimmung einer integrierten Spur-ECC-Matrix 727 dar. Um diese Matrix zum Korrigieren von Datensätzen zu erzeugen, sieht das vorliegende Beispiel vor, dass Lesedaten 720 ohne irgendwelche Spurfehler mit der Transponierten der TeilCodierermatrix 722, die zum Erzeugen von Paritätsdaten für die Datenspeichervorrichtung verwendet wird, multipliziert werden, wobei die TeilCodierermatrix nicht die Abschnitte der Codierermatrix 715 enthält, die zum Erzeugen von Paritätsdaten für Spuren mit Fehlern verwendet wurden. Nach dem Multiplizieren erzeugt diese Funktion die modifizierte Spur-ECC-Matrix 724. Wenn eine zweite Spur eines Vier-Spur-Datenlesevorgangs beispielsweise die Fehler enthielte, dann würden die Lesedaten 720 Daten aus den Spuren eins, drei und vier enthalten. Ebenso würden nur Teile der Matrix, die zum Erzeugen der Parität für die Spur 1, 3 und 4 in der Datenspeichervorrichtung verwendet wurden, für die TeilCodierermatrix 722 verwendet werden. Sobald die modifizierte Spur-ECC-Matrix 724 erzeugt ist, wird sie zu den ECC-Paritätsdaten 725 für eine Spur mit Fehlern addiert, um die integrierte Spur-ECC-Matrix 727 zu erzeugen. Somit würden die ECC-Paritätsdaten 725 unter erneuter Bezugnahme auf das Beispielproblem mit der zweiten Spur Paritätsdaten für die zweite Spur entsprechen.
  • Obwohl dies ein Beispiel zum Erzeugen der integrierten Spur-ECC-Matrix 727 ist, sollte verstanden werden, dass andere Verfahren ebenfalls angewendet werden können. In mindestens einer Implementierung kann dann, wenn ein Datenlesevorgang keine gesamte Spur erfordert, wie etwa dann, wenn die gelesenen Daten alle drei Spuren und einen Teil einer vierten Spur verwenden, die modifizierte Spur-ECC-Matrix wie folgt erzeugt werden. Zuerst können die Speichervorrichtungs-ECC-Paritätsdaten für jede der vollständigen Spuren summiert werden. Unter Bezugnahme auf das Beispiel von drei vollständigen Spuren für einen Datenlesevorgang können die Speichervorrichtungs-ECC-Paritätsdaten für jede dieser Spuren summiert werden. Zweitens können die Teillesedaten, die der Teilspur (in diesem Beispiel der vierten Spur) entsprechen, mit einem Abschnitt der Codierermatrix multipliziert werden. Insbesondere entspricht dieser Abschnitt der Codierermatrix, die verwendet würde, um Speichervorrichtungs-ECC-Paritätsdaten für die Daten der Teilspur zu erzeugen. Nach der Multiplikation kann das Ergebnis zu der Summe, die für die ECC-Paritätsdaten der vollständigen Spuren erzeugt wird, addiert werden, um die integrierte Spur-ECC-Matrix 727 zu erzeugen.
  • Obwohl in dem vorhergehenden Beispiel beschrieben ist, dass eine Teilspur für einen Teil einer Datensatzleseanforderung gelesen wird, sollte verstanden werden, dass ähnliche Operationen angewendet werden können, wenn die Leseanforderung für vollständige Spuren ist. Ferner kann in einigen Implementierungen zumindest ein Teil der Datenoperationen in Bezug auf die Speichervorrichtungs-ECC-Paritätsdaten durch die Speichervorrichtung bereitgestellt werden und die integrierte Spur-ECC-Matrix 727 kann an das Hostsystem geliefert werden. Dementsprechend kann, anstatt die ECC-Paritätsdaten zu liefern, die auf der Platte gespeichert waren, die integrierte Spur-ECC-Matrix an das Hostsystem als die ECC-Paritätsdaten geliefert werden. In einer alternativen Implementierung kann mindestens ein Teil der integrierten ECC-Matrix an das Hostsystem geliefert werden. Nach dem Liefern kann das Hostsystem die Operationen in Bezug auf einen Teil der integrierten ECC-Matrix bereitstellen.
  • Unter Bezugnahme auf 7C kann die integrierte Spur-ECC-Matrix 727 nach ihrem Erzeugen mit einer System-ECC-Paritätsmatrix 730 zusammengefügt werden, wobei die ECC-Paritätsmatrix 730 die von dem Hostsystem erzeugten Fehlerkorrekturdaten für den vollständigen Datensatz darstellt. Diese zusammengefügte Matrix wird dann zu der in 7A erzeugten modifizierten System-ECC-Matrix 717 addiert, um eine integrierte Syndrommatrix 735 zu erzeugen.
  • Unter Bezugnahme auf 7D umfassen die Operationen ferner ein Identifizieren einer Spalte in der Codierermatrix 715, die den Spurfehlern in dem angeforderten Datensatz entspricht. Die inverse Matrix 745 der Spalte aus der Codierermatrix 715 wird dann mit der Transponierten der integrierten Syndrommatrix 735 multipliziert, um einen Vektor von wiederhergestellten Datensektoren 750 zu erzeugen. Dieser Vektor kann dann verwendet werden, um eine korrigierte Version des angeforderten Datensatzes bereitzustellen.
  • 8 zeigt ein Hostrechensystem 800 gemäß einer Implementierung. Das Hostrechensystem 800 ist für ein oder mehrere beliebige Computersysteme repräsentativ, mit denen die verschiedenen hierin offenbarten Betriebsarchitekturen, Prozesse, Szenarien und Abfolgen für ECC-Paritätsoperationen implementiert werden können. Das Hostrechensystem 800 ist ein Beispiel der Hostsysteme 120 und 410, obwohl andere Beispiele existieren können. Das Hostrechensystem 800 enthält eine Kommunikationsschnittstelle 801, eine Anwenderschnittstelle 802 und ein Verarbeitungssystem 803. Das Verarbeitungssystem 803 ist mit der Kommunikationsschnittstelle 801 und der Anwenderschnittstelle 802 verknüpft. Das Verarbeitungssystem 803 enthält eine Verarbeitungsschaltungsanordnung 805 und eine Ablagespeichervorrichtung 806, die die Betriebssoftware 807 speichert. Das Hostrechensystem 800 kann andere gut bekannte Komponenten wie etwa eine Batterie und ein Gehäuse enthalten, die der Übersichtlichkeit halber nicht gezeigt sind.
  • Die Kommunikationsschnittstelle 801 umfasst Komponenten, die über Kommunikationsverbindungen kommunizieren, wie beispielsweise Netzwerkkarten, Anschlüsse, Hochfrequenz (HF), Verarbeitungsschaltungen und Software oder einige andere Kommunikationsvorrichtungen. Die Kommunikationsschnittstelle 801 kann dazu ausgelegt sein, über metallische, drahtlose oder optische Verbindungen zu kommunizieren. Die Kommunikationsschnittstelle 801 kann dazu ausgelegt sein, ein Zeitmultiplexverfahren (TDM), ein Internetprotokoll (IP), Ethernet, optische Netze, drahtlose Protokolle, Kommunikationssignalisierung oder ein anderes Kommunikationsformat - einschließlich Kombinationen davon - zu verwenden. Die Kommunikationsschnittstelle 801 kann ferner eine oder mehrere Schnittstellen zum Kommunizieren mit Kommunikationsnetzen, Speicherdatenbussen, Speicherdatenverbindungen oder anderen Vorrichtungen enthalten. Die Schnittstellen können beliebige serielle oder parallele digitale Schnittstellen oder andere Kommunikations- und Datenschnittstellen umfassen, einschließlich Kombinationen, Variationen und Verbesserungen davon. Beispiele der Kommunikationsschnittstelle 801 enthalten Logik, Übertragungsgatter, Puffer, Netzschnittstellenkartenausrüstung, Sendeempfänger und andere Kommunikationsschaltungen. In diesem Beispiel kann die Kommunikationsschnittstelle 801 verwendet werden, um mit der Datenspeichervorrichtung 900 zu kommunizieren, die in 9 weiter beschrieben ist.
  • Die Anwenderschnittstelle 802 enthält Komponenten, die mit einem Anwender interagieren, um Anwendereingaben zu empfangen und Medien und/oder Informationen darzustellen. Die Anwenderschnittstelle 802 kann einen Lautsprecher, ein Mikrofon, Tasten, Lichter, einen Anzeigebildschirm, einen Berührungsbildschirm, ein Berührungsfeld, ein Mausrad, einen Kommunikationsanschluss oder irgendeine andere Anwender-Eingabe-/Ausgabeeinrichtung - einschließlich Kombinationen davon - umfassen. Die Anwenderschnittstelle 802 kann in einigen Beispielen entfallen.
  • Die Verarbeitungsschaltungsanordnung 805 enthält einen Mikroprozessor und andere Schaltungen, die die Betriebssoftware 807 aus der Ablagespeichervorrichtung 806 abrufen und ausführen. Die Ablagespeichervorrichtung 806 kann flüchtige und nichtflüchtige, entfernbare und nicht entfernbare Medien enthalten, die in einem beliebigen Verfahren oder einer Technologie zum Speichern von Informationen wie etwa computerlesbaren Befehlen, Datenstrukturen, Programmmodulen oder anderen Daten implementiert sind. Die Ablagespeichervorrichtung 806 kann als eine einzelne Speichervorrichtung implementiert sein, kann jedoch auch über mehrere Speichervorrichtungen oder Untersysteme hinweg implementiert sein. Die Ablagespeichervorrichtung 806 kann zusätzliche Elemente enthalten, wie z. B. einen Controller zum Lesen der Betriebssoftware 807. Beispiele für Speichermedien umfassen Direktzugriffsspeicher, Nur-Lese-Speicher, Magnetplatten, optische Platten und Flash-Speicher sowie jede Kombination oder Variation davon oder jede andere Art von Speichermedien. In einigen Implementierungen können die Speichermedien nicht-transitorische Speichermedien sein. In einigen Fällen kann zumindest ein Teil der Speichermedien transitorisch sein. Es versteht sich, dass das Speichermedium in keinem Fall ein sich ausbreitendes Signal ist.
  • Die Verarbeitungsschaltungsanordnung 805 ist typischerweise auf einer Leiterplatte montiert, die auch die Ablagespeichervorrichtung 806 und Teile der Kommunikationsschnittstelle 801 und der Anwenderschnittstelle 802 enthalten kann. Die Betriebssoftware 807 enthält Computerprogramme, Firmware oder irgendeine andere Form von maschinenlesbaren Programmbefehlen. Die Betriebssoftware 807 enthält das Codiermodul 808 und das Lesemodul 809, obwohl eine beliebige Anzahl von Softwaremodulen innerhalb der Anwendung die gleichen Operationen bereitstellen kann. Die Betriebssoftware 807 kann ferner ein Betriebssystem, Dienstprogramme, Treiber, Netzschnittstellen, Anwendungen oder irgendeine andere Art von Software enthalten. Wenn sie von der Verarbeitungsschaltungsanordnung 805 ausgeführt wird, veranlasst die Betriebssoftware 807 das Verarbeitungssystem 803 dazu, das hier beschriebene Hostrechensystem 800 zu betreiben.
  • In einer Implementierung identifiziert das Codiermodul 808 (wenn es von dem Verarbeitungssystem 803 gelesen und ausgeführt wird) eine Anforderung zum Speichern eines Datensatzes in einer Datenspeichervorrichtung. Als Antwort auf die Anforderung erzeugt das Codiermodul 808 unter Verwendung einer Codierermatrix (wie etwa einer Cauchy-Matrix) erste ECC-Paritätsdaten und sendet den Datensatz und die ersten ECC-Paritätsdaten unter Verwendung der Kommunikationsschnittstelle 801 an die Datenspeichervorrichtung.
  • Sobald die Daten in der Datenspeichervorrichtung gespeichert sind, weist das Lesemodul 809 das Verarbeitungssystem 803 an, eine erste Version des Datensatzes von der Datenspeichervorrichtung zusammen mit den ersten ECC-Paritätsdaten und den zweiten ECC-Paritätsdaten, die Spurparitätsdaten auf der Datenspeichervorrichtung entsprechen, anzufordern und zu empfangen, wobei die zweiten ECC-Paritätsdaten unter Verwendung der gleichen Codierermatrix wie die ersten ECC-Paritätsdaten erzeugt werden. Nachdem die Daten unter Verwendung der Kommunikationsschnittstelle 801 empfangen worden sind, weist das Lesemodul 809 das Verarbeitungssystem 803 an, die erste Version des Datensatzes unter Verwendung der ersten ECC-Paritätsdaten, der zweiten ECC-Paritätsdaten und der Codierermatrix zu verarbeiten, um eine zweite Version des Datensatzes zu erzeugen, bei der ein oder mehrere Fehlern aus der ersten Version des Datensatzes korrigiert sind.
  • 9 zeigt eine Datenspeichervorrichtung 900 gemäß einer Implementierung. Die Datenspeichervorrichtung 900 ist repräsentativ für eine oder mehrere beliebige Rechensysteme, mit denen die verschiedenen hierin offenbarten Betriebsarchitekturen, Prozesse, Szenarien und Abfolgen für ECC-Paritätsoperationen einer Datenspeichervorrichtung implementiert werden können. Die Datenspeichervorrichtung 900 ist ein Beispiel der Datenspeichervorrichtung 110 und des Speichersystems 440, obwohl wie hierin beschrieben andere Beispiele existieren können. Die Datenspeichervorrichtung 900 enthält eine Kommunikationsschnittstelle 901 und ein Verarbeitungssystem 903. Das Verarbeitungssystem 903 ist mit der Kommunikationsschnittstelle 901 verbunden. Das Verarbeitungssystem 903 enthält eine Verarbeitungsschaltungsanordnung 905 und eine Ablagespeichervorrichtung 906, die die Betriebssoftware 907 und den Datenspeicher 910 speichert. Die Datenspeichervorrichtung 900 kann andere bekannte Komponenten wie etwa eine Batterie und ein Gehäuse enthalten, die der Übersichtlichkeit halber nicht gezeigt sind.
  • Die Kommunikationsschnittstelle 901 umfasst Komponenten, die über Kommunikationsverbindungen kommunizieren, wie beispielsweise Netzwerkkarten, Anschlüsse, Hochfrequenz (HF), Verarbeitungsschaltungen und Software oder einige andere Kommunikationsvorrichtungen. Die Kommunikationsschnittstelle 901 kann dazu ausgelegt sein, über metallische, drahtlose oder optische Verbindungen zu kommunizieren. Die Kommunikationsschnittstelle 901 kann dazu ausgelegt sein, ein Zeitmultiplexverfahren (TDM), ein Internetprotokoll (IP), Ethernet, optische Netze, drahtlose Protokolle, Kommunikationssignalisierung oder ein anderes Kommunikationsformat - einschließlich Kombinationen davon - zu verwenden. Die Kommunikationsschnittstelle 901 kann ferner eine oder mehrere Schnittstellen zum Kommunizieren mit Kommunikationsnetzen, Speicherdatenbussen, Speicherdatenverbindungen oder anderen Vorrichtungen enthalten. Die Schnittstellen können beliebige serielle oder parallele digitale Schnittstellen oder andere Kommunikations- und Datenschnittstellen umfassen, einschließlich Kombinationen, Variationen und Verbesserungen davon. Beispiele der Kommunikationsschnittstelle 901 enthalten Logik, Übertragungsgatter, Puffer, Netzschnittstellenkartenausrüstung, Sendeempfänger und andere Kommunikationsschaltungen. In diesem Beispiel kann die Kommunikationsschnittstelle 901 verwendet werden, um mit einem Hostsystem wie etwa dem Hostrechensystem 800, das in 8 weiter beschrieben ist, zu kommunizieren.
  • Die Verarbeitungsschaltungsanordnung 905 enthält einen Mikroprozessor und andere Schaltungen, die die Betriebssoftware 907 aus der Ablagespeichervorrichtung 906 abrufen und ausführen und Daten aus dem Datenspeicher 910 in der Ablagespeichervorrichtung 906 abrufen. Die Ablagespeichervorrichtung 906 kann flüchtige und nichtflüchtige, entfernbare und nicht entfernbare Medien enthalten, die in einem beliebigen Verfahren oder einer Technologie zum Speichern von Informationen wie etwa computerlesbaren Befehlen, Datenstrukturen, Programmmodulen oder anderen Daten implementiert sind. Die Ablagespeichervorrichtung 906 kann als eine einzelne Speichervorrichtung implementiert sein, kann jedoch auch über mehrere Speichervorrichtungen oder Untersysteme hinweg implementiert sein. Die Ablagespeichervorrichtung 906 kann zusätzliche Elemente enthalten, wie z. B. einen Controller zum Lesen der Betriebssoftware 907. Beispiele für Speichermedien umfassen Direktzugriffsspeicher, Nur-Lese-Speicher, Magnetplatten, optische Platten und Flash-Speicher sowie jede Kombination oder Variation davon oder jede andere Art von Speichermedien. In einigen Implementierungen können die Speichermedien nicht-transitorische Speichermedien sein. In einigen Fällen kann zumindest ein Teil der Speichermedien transitorisch sein. Es versteht sich, dass das Speichermedium in keinem Fall ein sich ausbreitendes Signal ist.
  • Die Verarbeitungsschaltungsanordnung 905 ist typischerweise auf einer Leiterplatte montiert, die auch die Ablagespeichervorrichtung 906 und Teile der Kommunikationsschnittstelle 901 enthalten kann. Die Betriebssoftware 907 enthält Computerprogramme, Firmware oder irgendeine andere Form von maschinenlesbaren Programmbefehlen. Die Betriebssoftware 907 enthält das Codiermodul 908 und das Lesemodul 909, auch wenn eine beliebige Anzahl von Softwaremodulen innerhalb der Anwendung die gleichen Operationen bereitstellen kann. Die Betriebssoftware 907 kann ferner ein Betriebssystem, Dienstprogramme, Treiber, Netzschnittstellen, Anwendungen oder irgendeine andere Art von Software enthalten. Die Ablagespeichervorrichtung 906 umfasst ferner einen Datenspeicher 910, der Datenobjekte oder Datensätze speichern kann, wenn sie von einem Hostsystem geliefert werden. Wenn sie von der Verarbeitungsschaltungsanordnung 905 ausgeführt wird, weist die Betriebssoftware 907 das Verarbeitungssystem 903 an, die Datenspeichervorrichtung 900 wie hierin beschrieben zu betreiben.
  • In einer Implementierung veranlasst das Codiermodul 908 dann, wenn es von dem Verarbeitungssystem 903 gelesen und ausgeführt wird, das Verarbeitungssystem 903 dazu, eine Schreibanforderung für einen Datensatz oder ein Objekt von einem Hostsystem (wie etwa dem Hostrechensystem 800 von 8) zu identifizieren, und veranlasst ferner das Verarbeitungssystem 903 dazu, über die Kommunikationsschnittstelle 901 den Datensatz und die ersten ECC-Paritätsdaten, die von dem Hostsystem erzeugt werden, zu empfangen. Nach dem Empfangen veranlasst das Codiermodul 908 das Verarbeitungssystem 903 dazu, unter Verwendung eines Teils einer Codierermatrix, die zum Erzeugen der ersten ECC-Paritätsdaten verwendet wurde, zweite ECC-Paritätsdaten für den Datensatz zu erzeugen. Insbesondere werden die zweiten ECC-Paritätsdaten verwendet, um eine Fehlerkorrektur für jede Spur, die zum Schreiben der Daten in den Datenspeicher 910 erforderlich ist, der in einigen Beispielen eine SMR-Platte umfasst, bereitzustellen. Sobald die zweiten ECC-Paritätsdaten erzeugt sind, werden der Datensatz, die ersten ECC-Paritätsdaten und die zweiten ECC-Paritätsdaten in den Datenspeicher 910 geschrieben.
  • Sobald Daten in den Datenspeicher 910 geschrieben sind, weist das Lesemodul 909 (wenn es von dem Verarbeitungssystem 903 gelesen und ausgeführt wird) das Verarbeitungssystem 903 an, eine Leseanforderung für den Datensatz zu identifizieren. Als Antwort auf die Anforderung weist das Lesemodul 909 das Verarbeitungssystem 903 an, die zweiten ECC-Paritätsdaten für den Datensatz anzuwenden, um jegliche Fehler in den Sektoren für den Datensatz zu korrigieren. Nachdem die zweiten ECC-Paritätsdaten auf den Datensatz angewendet worden sind, wird der Datensatz unter Verwendung der Kommunikationsschnittstelle 901 zusammen mit den ersten ECC-Paritätsdaten und den zweiten ECC-Paritätsdaten an ein Hostsystem gesendet. In einigen Implementierungen wird nur ein Teil der zweiten ECC-Paritätsdaten von dem Hostsystem benötigt. Wenn beispielsweise die erste Spur die einzige Spur mit Sektorfehlern ist, dann können die der ersten Spur zugeordneten zweiten ECC-Paritätsdaten der einzige Teil der zweiten ECC-Paritätsdaten sein, die an das Hostsystem geliefert werden, da dies alles ist, was für die Fehlerkorrektur in dem Hostsystem erforderlich ist. In anderen Beispielen kann eine Zusammenfassung an das Hostsystem geliefert werden, wobei die Zusammenfassung eine Summierung der zweiten ECC-Daten für eine oder mehrere Spuren enthält. Wenn beispielsweise ein Datensatz auf drei vollständigen Spuren und einer Teilspur geschrieben wäre, könnte die Datenspeichervorrichtung 900 die zweiten ECC-Daten für die ersten drei Spuren summieren und die Zusammenfassung zur Fehlerkorrektur an das Hostsystem liefern.
  • In einigen Implementierungen kann die Datenspeichervorrichtung 900 nach dem Anwenden der zweiten ECC-Paritätsdaten bestimmen, ob irgendwelche verbleibenden Sektorfehler vorhanden sind. Wenn es keine verbleibenden Sektorfehler gibt, kann die Datenspeichervorrichtung 900 den angeforderten Datensatz ohne irgendwelche der zweiten ECC-Paritätsdaten bereitstellen, da diese nicht erforderlich sind. Wenn dagegen noch Fehler innerhalb des Datensatzes vorhanden sind, dann kann mindestens ein Teil der ECC-Paritätsdaten an das Hostsystem geliefert werden, um wie hierin beschrieben korrigiert zu werden.
  • Die obige Beschreibung und die zugehörigen Figuren lehren die beste Art der Erfindung. Die folgenden Ansprüche spezifizieren den Umfang der Erfindung. Es ist zu beachten, dass einige Aspekte der besten Art nicht unter den Umfang der Erfindung fallen können, wie er durch die Ansprüche spezifiziert ist. Fachleute werden erkennen, dass die oben beschriebenen Merkmale auf verschiedene Arten kombiniert werden können, um mehrere Variationen der Erfindung zu bilden. Daher ist die Erfindung nicht auf die oben beschriebenen spezifischen Ausführungsformen, sondern nur durch die folgenden Ansprüche und ihre Äquivalente beschränkt.

Claims (14)

  1. Rechenvorrichtung, die enthält: ein oder mehrere computerlesbare Speichermedien; ein Verarbeitungssystem, das mit dem einen oder den mehreren computerlesbaren Speichermedien betriebstechnisch gekoppelt ist; und Programmbefehle, die auf dem einen oder den mehreren computerlesbaren Speichermedien gespeichert sind, um ein Hostsystem zum Verwalten einer Speicherung von Datensätzen zu betreiben, und die, wenn sie von dem Verarbeitungssystem gelesen und ausgeführt werden, das Verarbeitungssystem mindestens zu Folgendem veranlassen: als Antwort auf eine Leseanforderung bezüglich eines Datensatzes, Empfangen einer ersten Version des Datensatzes, erster Fehlerkorrekturcode-Paritätsdaten (ECC-Paritätsdaten) für den Datensatz, die von dem Hostsystem erzeugt werden, und zweiter ECC-Paritätsdaten für den Datensatz, die von einer Datenspeichervorrichtung erzeugt werden, aus der Datenspeichervorrichtung, wobei die ersten ECC-Paritätsdaten und die zweiten ECC-Paritätsdaten unter Verwendung einer Codierermatrix erzeugt werden; und Verarbeiten der ersten Version des Datensatzes unter Verwendung der ersten ECC-Paritätsdaten, der zweiten ECC-Paritätsdaten und der Codierermatrix, um eine zweite Version des Datensatzes zu erzeugen, bei der ein oder mehrere Sektorfehler aus der ersten Version des Datensatzes korrigiert sind.
  2. Rechenvorrichtung nach Anspruch 1, wobei die Programmbefehle das Verarbeitungssystem ferner zu Folgendem veranlassen: als Antwort auf eine Schreibanforderung bezüglich des Datensatzes, Erzeugen der ersten ECC-Paritätsdaten für den Datensatz unter Verwendung der Codierermatrix; und Senden des Datensatzes und der ersten ECC-Paritätsdaten an die Datenspeichervorrichtung zum Speichern durch die Datenspeichervorrichtung.
  3. Rechenvorrichtung nach Anspruch 1, wobei die zweiten ECC-Paritätsdaten ECC-Paritätsdaten für Spuren von Speichermedien auf der Datenspeichervorrichtung enthalten, wobei die Spuren Speicherorten für den Datensatz entsprechen.
  4. Rechenvorrichtung nach Anspruch 3, wobei jede Spur der Spuren einen oder mehrere Sektoren des Datensatzes oder der ersten ECC-Paritätsdaten speichert.
  5. Rechenvorrichtung nach Anspruch 1, wobei die erste Version des Datensatzes Fehler enthält, die unter Verwendung der zweiten ECC-Paritätsdaten nicht korrigierbar sind.
  6. Rechenvorrichtung nach Anspruch 1, wobei die Programmbefehle zum Empfangen der ersten Version des Datensatzes aus der Datenspeichervorrichtung das Verarbeitungssystem dazu veranlassen, aus der Datenspeichervorrichtung die erste Version des Datensatzes mit Nullen in Fehlersektoren, die von der Datenspeichervorrichtung unter Verwendung der zweiten ECC-Paritätsdaten nicht korrigierbar sind, zu empfangen.
  7. Rechenvorrichtung nach Anspruch 1, wobei die Programmbefehle zum Empfangen der ersten Version des Datensatzes aus der Datenspeichervorrichtung das Verarbeitungssystem dazu veranlassen, aus der Datenspeichervorrichtung die erste Version des Datensatzes mit fehlenden Sektoren, die Sektoren entsprechen, die von der Datenspeichervorrichtung unter Verwendung der zweiten ECC-Paritätsdaten nicht korrigierbar sind, zu empfangen.
  8. Rechensystem zum Verwalten einer Datenparität für Datensätze, wobei das Rechensystem umfasst: ein Datenspeichervorrichtung; und ein Hostverarbeitungssystem, das mit der Datenspeichervorrichtung kommunikationstechnisch gekoppelt ist und zu Folgendem ausgelegt ist: als Antwort auf eine Leseanforderung bezüglich eines Datensatzes, Empfangen einer ersten Version des Datensatzes, erster Fehlerkorrekturcode-Paritätsdaten (ECC-Paritätsdaten) für den Datensatz, die von dem Hostsystem erzeugt werden, und zweiter ECC-Paritätsdaten für den Datensatz, die von der Datenspeichervorrichtung erzeugt werden, aus der Datenspeichervorrichtung, wobei die ersten ECC-Paritätsdaten und die zweiten ECC-Paritätsdaten unter Verwendung einer Codierermatrix erzeugt werden; und Verarbeiten der ersten Version des Datensatzes unter Verwendung der ersten ECC-Paritätsdaten, der zweiten ECC-Paritätsdaten und der Codierermatrix, um eine zweite Version des Datensatzes zu erzeugen, bei der ein oder mehrere Sektorfehler aus der ersten Version des Datensatzes korrigiert sind.
  9. Rechensystem nach Anspruch 8, wobei das Hostverarbeitungssystem ferner zu Folgendem ausgelegt ist: als Antwort auf eine Schreibanforderung bezüglich des Datensatzes, Erzeugen der ersten ECC-Paritätsdaten für den Datensatz; und Senden des Datensatzes und der ersten ECC-Paritätsdaten an die Datenspeichervorrichtung zum Speichern durch die Datenspeichervorrichtung.
  10. Rechensystem nach Anspruch 9, wobei die Datenspeichervorrichtung zu Folgendem ausgelegt ist: Empfangen des Datensatzes und der ersten ECC-Paritätsdaten; Erzeugen der zweiten ECC-Paritätsdaten für den Datensatz; und Speichern des Datensatzes, der ersten ECC-Paritätsdaten und der zweiten ECC-Paritätsdaten.
  11. Rechensystem nach Anspruch 10, wobei die Datenspeichervorrichtung, die zum Speichern des Datensatzes, der ersten ECC-Paritätsdaten und der zweiten ECC-Paritätsdaten ausgelegt ist, zum Speichern des Datensatzes, der ersten ECC-Paritätsdaten und der zweiten ECC-Paritätsdaten in Medien für schindelartig überlappende Magnetaufzeichnung der Datenspeichervorrichtung ausgelegt ist.
  12. Rechensystem nach Anspruch 8, wobei die zweiten ECC-Paritätsdaten ECC-Paritätsdaten für Spuren von Speichermedien auf der Datenspeichervorrichtung enthalten, wobei die Spuren Speicherorten für den Datensatz entsprechen.
  13. Rechensystem nach Anspruch 12, wobei jede Spur der Spuren einen oder mehrere Sektoren des Datensatzes oder der ersten ECC-Paritätsdaten speichert.
  14. Rechensystem nach Anspruch 8, wobei die erste Version des Datensatzes Fehler enthält, die unter Verwendung der zweiten ECC-Paritätsdaten nicht korrigierbar sind.
DE102017126911.8A 2016-11-15 2017-11-15 Verknüpfter Speichersystem- und Hostsystem-Fehlerkorrekturcode Pending DE102017126911A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/351,620 2016-11-15
US15/351,620 US10284230B2 (en) 2016-11-15 2016-11-15 Linked storage system and host system error correcting code

Publications (1)

Publication Number Publication Date
DE102017126911A1 true DE102017126911A1 (de) 2018-05-17

Family

ID=62026338

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017126911.8A Pending DE102017126911A1 (de) 2016-11-15 2017-11-15 Verknüpfter Speichersystem- und Hostsystem-Fehlerkorrekturcode

Country Status (3)

Country Link
US (1) US10284230B2 (de)
CN (1) CN108073471B (de)
DE (1) DE102017126911A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877835B2 (en) * 2018-07-19 2020-12-29 Micron Technology, Inc. Write buffer management
JP2022029558A (ja) * 2020-08-05 2022-02-18 株式会社東芝 磁気ディスク装置及びエラー訂正方法
US11929093B2 (en) 2022-03-22 2024-03-12 Western Digital Technologies, Inc. Overlapping processing of data tracks
US11948602B2 (en) 2022-06-29 2024-04-02 Western Digital Technologies, Inc. Offset spiral data track format for data storage devices

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040033554A (ko) * 2002-10-15 2004-04-28 삼성전자주식회사 에러 정정 부호화 장치 및 그 방법
KR20040067102A (ko) * 2003-01-21 2004-07-30 엘지전자 주식회사 고밀도 광디스크의 에러정정 블록 엔코딩 및 디코딩 방법
US20050149819A1 (en) * 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
KR101300810B1 (ko) * 2006-04-03 2013-08-26 삼성전자주식회사 데이터 인코딩 및 디코딩 방법과 그 장치, 저장 매체, 및저장 매체 구동 시스템
US8046660B2 (en) * 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US8316277B2 (en) * 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
US8201068B2 (en) * 2009-01-06 2012-06-12 Mediatek Inc. Method for generating parity-check matrix
US8988800B1 (en) * 2009-09-15 2015-03-24 Marvell International Ltd. Error correction for storage devices
JP2011065599A (ja) * 2009-09-18 2011-03-31 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
KR101644656B1 (ko) * 2009-11-02 2016-08-10 삼성전자주식회사 선형 블록 부호를 사용하는 통신 시스템에서 패리티 검사 행렬을 생성하는 방법과 이를 이용한 채널 부호화/복호화 장치 및 방법
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
CN101840366B (zh) * 2010-05-13 2012-05-23 上海交通大学 环链式n+1位奇偶校验码的存储方法
US8560892B2 (en) * 2010-12-14 2013-10-15 Medtronic, Inc. Memory with selectively writable error correction codes and validity bits
US8433979B2 (en) * 2011-02-28 2013-04-30 International Business Machines Corporation Nested multiple erasure correcting codes for storage arrays
US8621317B1 (en) * 2011-07-25 2013-12-31 Google Inc. Modified orthogonal coding techniques for storing data
CN102523006A (zh) * 2011-12-31 2012-06-27 中国科学院上海微系统与信息技术研究所 一种级联编码器及实现方法
US9203434B1 (en) * 2012-03-09 2015-12-01 Western Digital Technologies, Inc. Systems and methods for improved encoding of data in data storage devices
CN102929741B (zh) * 2012-09-29 2013-12-25 邹粤林 一种提高闪存芯片纠错码使用效率的方法、系统及控制器
US9021339B2 (en) * 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
KR102004928B1 (ko) * 2012-12-04 2019-07-29 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법
US20140223255A1 (en) * 2012-12-18 2014-08-07 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US9214963B1 (en) * 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
CN104424127A (zh) * 2013-08-23 2015-03-18 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
US9213595B2 (en) * 2013-10-15 2015-12-15 International Business Machines Corporation Handling errors in ternary content addressable memories
JP6212396B2 (ja) * 2014-01-08 2017-10-11 ルネサスエレクトロニクス株式会社 データ処理装置
CN104281499B (zh) * 2014-10-28 2017-10-13 苏州工业职业技术学院 基于奇偶校验的raid条带镜像数据分布方法
US9870284B2 (en) * 2015-05-27 2018-01-16 International Business Machines Corporation First responder parities for storage array
US9530442B1 (en) * 2015-09-23 2016-12-27 Western Digital Technologies, Inc. Enhanced low overhead data protection in data storage drives

Also Published As

Publication number Publication date
US10284230B2 (en) 2019-05-07
CN108073471B (zh) 2021-06-25
US20180137006A1 (en) 2018-05-17
CN108073471A (zh) 2018-05-25

Similar Documents

Publication Publication Date Title
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE112014002870B4 (de) Kombinations-Fehler- und Löschdecodierung für Produktcodes
DE102013017179B4 (de) DMA-Integritätsprüfungseinheit
DE102012214324B4 (de) Verfahren und Vorrichtung zur Erleichterung der Datenüberprüfung mithilfe einer Prüfsumme in Verbindung mit einem Sidefile
DE102017126911A1 (de) Verknüpfter Speichersystem- und Hostsystem-Fehlerkorrekturcode
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
DE102006039473B4 (de) Datenspeichersystem und Verfahren zum Übertragen von Daten in einen Datenspeicher
DE102013215055B4 (de) Schaltungsanordnung, Vorrichtung, Verfahren und Computerprogramm mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern
DE102013020712B4 (de) Techniken zum Speichern von Bits in Speicherzellen mit Hängenbleiben-auf-0-oder-1-Fehlern
DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
DE112012006014B4 (de) Verteilte Codewortteile
DE112007003015B4 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE102005052698A1 (de) Verfahren zur Verarbeitung von nichtflüchtig gespeicherten Daten
DE19700510A1 (de) Speicherkarte mit Fehlerkorrekturfähigkeit und zugehöriges Fehlerkorrekturverfahren
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102013201174A1 (de) Online-Überprüfung einer Standby-Datenbank in physischen Replikationsumgebungen mit Protokollversand
DE102016108733A1 (de) Steuern einer redundanten Anordnung von unabhängigen Festplatten (RAID), welche ein Nur-Lese-Flash-Datenspeichergerät einschließt
DE112020001219T5 (de) Aufgeschobene Fehlercodekorrektur mit verbesserter effektiver Datenbandbreitenleistung
DE112014002403B4 (de) Hochleistungs-Lese-Modifizier-Schreib-System mit Zeilenratenzusammenführung von Datenrahmensegmenten in Hardware
DE102018124836A1 (de) Neuartiger speicherbaustein
DE102012213788A1 (de) Ende-zu-Ende-Datenschutz bei gleichzeitiger Unterstützung mehrerer CRC-Algorithmen
DE102019123510A1 (de) Nichtflüchtige Speichervorrichtung und Speichersystem, das die nichtflüchtige Speichervorrichtung umfasst
DE112017002940T5 (de) Standard- und Nicht-Standard-Datenzugriff auf verstreute Speichernetzwerke
US8838615B2 (en) Computer implemented method for automatically managing stored checkpoint data

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE