-
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.
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
mit der Transponierte des Abschnitts der Cauchy-Matrix, der der ersten Spur entspricht,
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:
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:
-
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:
-
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
-
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
-
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.