DE112019000131T5 - Zuordnung von fehlercodekorrektur auf systemebene basierend auf der gemeinsamen nutzung der datenintegrität der vorrichtungspopulation - Google Patents

Zuordnung von fehlercodekorrektur auf systemebene basierend auf der gemeinsamen nutzung der datenintegrität der vorrichtungspopulation Download PDF

Info

Publication number
DE112019000131T5
DE112019000131T5 DE112019000131.0T DE112019000131T DE112019000131T5 DE 112019000131 T5 DE112019000131 T5 DE 112019000131T5 DE 112019000131 T DE112019000131 T DE 112019000131T DE 112019000131 T5 DE112019000131 T5 DE 112019000131T5
Authority
DE
Germany
Prior art keywords
data
data storage
ecc
storage devices
stored
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
DE112019000131.0T
Other languages
English (en)
Inventor
Bernd Lamberts
Remmelt Pit
Timothy Lieber
Robert M. Lester
Zarko Popov
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 DE112019000131T5 publication Critical patent/DE112019000131T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/356Unequal error protection [UEP]
    • 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/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

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

Abstract

Ein dynamisches, skalierbares Fehlerkorrekturcodierungsschema (ECC-Schema) für ein Datenspeichersystem beinhaltet eine Systemsteuerung, die einen Typ und/oder einen Betrag von ECC, die zum Rekonstruieren von Daten erforderlich sind, die auf (einer) bestimmten Datenspeichervorrichtung(en) gespeichert werden sollen, basierend auf Betriebsdaten-Integritätsinformationen, auf die von dem Array von Datenspeichervorrichtungen zugegriffen wird, vorhersagt. Daher braucht Redundanz nur zugewiesen werden, wenn dies erforderlich ist. Die Vorrichtungen können gemäß gemeinsamen Merkmalen logisch in Teilmengen gruppiert werden, wobei die für eine Vorrichtung in einer Teilmenge gemachte Vorhersage auf den Datenintegritätsinformationen aus dieser Teilmenge sowie aus anderen relevanten Teilmengen basieren kann.

Description

  • GEBIET DER AUSFÜHRUNGSFORMEN
  • Ausführungsformen der Erfindung können sich allgemein auf Datenspeichersysteme und insbesondere auf Fehlerkorrekturcodierung (ECC) beziehen, die auf Datenintegritätsinformationen von den Systemspeichervorrichtungen basiert.
  • HINTERGRUND
  • Es besteht eine kommerzielle Nachfrage nach digitalen Datenspeichersystemen mit hoher Kapazität, bei denen mehrere Datenspeichervorrichtungen (DSDs) in einem gemeinsamen Gehäuse untergebracht sind. Datenspeichersysteme schließen häufig große Gehäuse ein, in denen mehrere Regale untergebracht sind, in denen Reihen von DSDs montiert sind. In der Vergangenheit weisen Speichersysteme streng autonome, unabhängig gestaltete Fehlerredundanzschemata auf. Dies führt zu Überlappungen und verminderter Effizienz im Gesamtsystem. Beispielsweise kann die Vorrichtung Parität zuweisen, um Fehler vor beliebigen Komponenten für beliebige Daten zu schützen, unabhängig davon, ob dies erforderlich ist oder ob der Host diese Daten möglicherweise benötigt. Somit kann diese Fehlerkorrekturcodierung auf der Vorrichtung den Fehler-Footprint (d. h. das kleinste Fehlerereignis), die aufgerufene Latenz und die Kosten des Systems erhöhen.
  • Alle in diesem Abschnitt beschriebenen Ansätze sind Ansätze, die verfolgt werden könnten, aber nicht notwendigerweise Ansätze, die zuvor konzipiert oder verfolgt wurden. Daher sollte, sofern nicht anders angegeben, nicht angenommen werden, dass jeder der in diesem Abschnitt beschriebenen Ansätze lediglich aufgrund seiner Aufnahme in diesen Abschnitt als Stand der Technik qualifiziert ist.
  • Figurenliste
  • Ausführungsformen werden exemplarisch und nicht beschränkt in den Abbildungen der beigefügten Zeichnungen, in denen gleiche Bezugszeichen verwendet werden, um ähnliche Elemente zu bezeichnen, dargestellt:
    • 1A ist eine Draufsicht, die ein Festplattenlaufwerk (HDD) gemäß einer Ausführungsform veranschaulicht;
    • 1B ist ein Blockdiagramm, das ein Festkörperlaufwerk (HDD) gemäß einer Ausführungsform veranschaulicht;
    • 2 ist eine perspektivische Ansicht, die ein Datenspeichersystem gemäß einer Ausführungsform veranschaulicht;
    • 3 ist ein Blockdiagramm, das eine Datenspeichersystemarchitektur gemäß einer Ausführungsform veranschaulicht; und
    • 4 ist ein Flussdiagramm, das ein Verfahren zum Zuweisen einer Fehlerkorrekturcodierung (ECC) auf Systemebene basierend auf Informationen zur Vorrichtungsdatenintegrität gemäß einer Ausführungsform veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Es werden Ansätze zur Fehlerkorrekturcodierung (ECC) basierend auf Datenintegritätsinformationen von den Systemspeichervorrichtungen beschrieben. In der folgenden Beschreibung werden zu Zwecken der Erklärung zahlreiche spezifische Details dargelegt, um ein gründliches Verständnis der Ausführungsformen der hierin beschriebenen Erfindung bereitzustellen. Es wird jedoch ersichtlich sein, dass die Ausführungsformen der hierin beschriebenen Erfindung ohne diese spezifischen Details praktiziert werden können. In anderen Fällen sind bekannte Strukturen und Vorrichtungen in Blockdiagrammform gezeigt, um zu vermeiden, dass die Ausführungsformen der hierin beschriebenen Erfindung unnötig unklar werden.
  • Datenspeichersystem
  • Es besteht eine kommerzielle Nachfrage nach digitalen Datenspeichersystemen mit hoher Kapazität, bei denen mehrere Datenspeichervorrichtungen (DSDs) in einem gemeinsamen Gehäuse untergebracht sind. Datenspeichersysteme schließen häufig große Gehäuse ein, in denen mehrere Regale untergebracht sind, in denen Reihen von DSDs montiert sind. 2 ist eine perspektivische Ansicht, die ein Datenspeichersystem gemäß Ausführungsformen veranschaulicht. Ein Datenspeichersystem 200 weist ein Systemgehäuse 202 (oder ein „Rack 202“) auf, in dem mehrere Datenspeichersystemregale 204 beherbergt sind. Jedes Regal 204 kann in einen entsprechenden Schlitz innerhalb des Racks 202 platziert oder eingeschoben werden. Das Rack 202 bringt weiterhin eine Systemsteuerung unter und kann weiterhin Switches, (einen) Speicherserver, (einen) Anwendungsserver, eine Stromversorgung, Lüfter usw. unterbringen.
  • 3 ist ein Blockdiagramm, das eine Datenspeichersystemarchitektur gemäß einer Ausführungsform veranschaulicht. Die beispielhafte Architektur 300 zeigt ein Datenspeichersystem 200, das mehrere Datenspeichervorrichtungen (DSDs) 304a (DSD1), 304b (DSD2) und 304n (DSDn) aufweist, wobei n eine beliebige Anzahl von DSDs darstellt, die von Implementierung zu Implementierung variieren kann. Jede DSD 304a-304n wird von einer Systemsteuerung 312 über eine Kommunikationsschnittstelle 322 gemäß einem entsprechenden Kommunikationsprotokoll 323 gesteuert und kommuniziert mit dieser. Jede DSD 304a, 304b, 304n schließt einen entsprechenden nichtflüchtigen Speicher (NVM) 306 ein, der von einer jeweiligen DSD-Steuerung 308 gesteuert wird, die ein DSD-ECC-Modul 310 einschließt. Jedes DSD-ECC-Modul 310 (das beispielsweise Bestandteil eines entsprechenden System-on-Chip (SoC) sein kann, wie eines Teils des Datenkanals oder der Festplattensteuerung im Kontext einer HDD), ist in der Lage, eine „Track-ECC“-Verarbeitung durchzuführen, d. h. ECC-Codierung/Decodierung auf Datenspurebene, unter Verwendung von Prozeduren, wie sie auf dem Fachgebiet bekannt sind. Die Systemsteuerung 312 schließt Speicher 313, ein System-ECC-Modul 314, das einen ECC-Codierer 316, einen ECC-Decodierer 318 und eine ECC-Regelmaschine 320 einschließt, von denen jedes eine prozedurale Funktionalität darstellt, die eine ECC-Paritätscodierung und -decodierung beinhaltet, ein, wie an anderer Stelle hierin ausführlicher beschrieben.
  • Verarbeitung, Funktionen, Prozeduren, Aktionen, Verfahrensschritte und dergleichen, die hier als von der Systemsteuerung 312 oder von einer DSD 304a-304n ausgeführt oder ausführbar beschrieben werden, können die Inkraftsetzung durch Ausführen einer oder mehrerer Folgen von Anweisungen einschließen, die in einer oder mehreren Speichereinheiten gespeichert sind und die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, eine solche Ausführung bewirken. Die Systemsteuerung 312 kann in jeder beliebigen Form und/oder Kombination von Hardware, Software und Firmware ausgeführt sein. Beispielsweise und gemäß einer Ausführungsform weist die Systemsteuerung 312 eine anwendungsspezifische integrierte Schaltung (ASIC) auf, die mindestens eine Speichereinheit zum Speichern solcher Anweisungen (wie Firmware als ein nicht einschränkendes Beispiel) und mindestens einen Prozessor zum Ausführen solcher Anweisungen, Ermöglichen der ECC-Paritätszuweisung, -codierung, -decodierung und eine Anwendung aufweist, um beschädigte gespeicherte Daten wiederherzustellen, indem beschädigte oder verlorene Daten wie angefordert durch Schreiben in ihre ursprüngliche Form umgewandelt werden.
  • Das Datenspeichersystem 200 kann kommunikativ mit einem Host 350 gekoppelt sein, der in einer Hardwaremaschine, auf der ausführbarer Code ausführbar ist (als nicht einschränkende Beispiele ein Computer oder Hardwareserver und dergleichen), oder als Softwareanweisungen ausgeführt sein kann, die durch einen oder mehrere Prozessoren (als nicht einschränkende Beispiele einen Softwareserver wie einen Datenbankserver, einen Anwendungsserver, einen Medienserver und dergleichen) ausführbar sind. Der Host 350 stellt im Allgemeinen einen Client des Datenspeichersystems 200 dar und hat die Fähigkeit, Lese- und Schreibanforderungen an das Datenspeichersystem 200 zu stellen. Es ist zu beachten, dass die Systemsteuerung 312 auch als „Host“ bezeichnet werden kann, da der Begriff häufig allgemein in Bezug auf jede Vorrichtung verwendet wird, die E/A-Aufrufe an eine Datenspeichervorrichtung oder ein Array von Vorrichtungen tätigt.
  • Einleitung
  • Wenn hierin der Begriff „im Wesentlichen“ verwendet wird, versteht man darunter ein Merkmal, das weitgehend oder nahezu strukturiert, eingerichtet, dimensioniert usw. ist, bei dem aber Fertigungstoleranzen und dergleichen in der Praxis zu einer Situation führen können, in der die Struktur, Konfiguration, Abmessung usw. nicht immer oder notwendigerweise genau wie angegeben ist. Zum Beispiel würde die Beschreibung einer Struktur als „im Wesentlichen vertikal“ diesem Begriff ihre klare Bedeutung zuweisen, sodass die Seitenwand für alle praktischen Zwecke vertikal ist, aber nicht genau bei 90 Grad.
  • Fehlerkorrekturcodierung (ECC) (oder „Fehlerkorrekturcode“, „Fehlerkorrigierungscode“ usw.) bezieht sich im Allgemeinen auf Schemata, Techniken, Prozeduren, Codierung/Decodierung und dergleichen zum Korrigieren (d. h. Rekonstruieren oder „Wiederherstellen“) beschädigter Daten. Beschädigte Daten können das Ergebnis einer fehlerhaften Datenübertragung oder unerwünschter Bitflips (Bitfehler) sein, die auftreten, nachdem Daten in einen nichtflüchtigen Speicher gespeichert (d. h. geschrieben) wurden, oder unerwünschter Bitlöschungen, die auftreten, nachdem Daten in einen nichtflüchtigen Speicher gespeichert wurden, wie NVM 306 der DSDs 304a, 304b, 304n (3). ECC wird in der Regel implementiert, indem zusätzliche codierte Daten (manchmal allgemein als „Parität“, „Paritätsdaten“, „Paritätsinformationen“, „Paritätsbits“ und dergleichen bezeichnet) zu zugeordneten Daten hinzugefügt oder angehängt werden, sodass die Daten dann wiederhergestellt werden können, wenn eine Anzahl von Fehlern (bis zur Fähigkeit der verwendeten Parität) in die Daten eingeführt werden.
  • Beispielsweise kann eine „Schreibüberprüfungs“-Funktion in bestimmten Datenspeicherkontexten verwendet werden, um die Datenzuverlässigkeit (sogenannte „Datenintegrität“) sicherzustellen, kann jedoch die Systemleistung negativ beeinflussen, indem der Schreibbefehlsdurchsatz verringert wird. Die Aufrechterhaltung der Datenintegrität hat daher ihre eigenen Kompromisse und Herausforderungen, und man kann in Betracht ziehen, Ressourcen für erweiterte ECC-Schemata, um beschädigte Daten wiederherzustellen, Vorrang zu geben über die Zuweisung von Ressourcen für die Datenintegrität auf der Speichervorrichtung. Anders ausgedrückt kann man bereit sein, eine geringere Datenintegrität an der Speichervorrichtung zu akzeptieren, z. B. an dem nichtflüchtigen Speicher 306 der DSD 304a-304n (3), um die Ausführung zu erhöhen, während man sich weiterhin auf die Wiederherstellung von beschädigten Daten über unabhängigere, intelligentere und szenariospezifischere ECC-Schemata verlässt.
  • Intelligente Fehlerkorrekturcodierung auf Systemebene
  • Wie bereits erwähnt, verfügen historische Speichersysteme über streng autonome, unabhängig gestaltete Fehlerredundanzschemata, was zu Überlappungen und einer verringerten Effizienz des Gesamtsystems führen kann. Im Gegensatz dazu kann eine erweiterte ganzheitliche Ansicht der Datenintegrität an und unter unterschiedlichen Speichervorrichtungen, wie sie im gesamten Speichersystem verteilt sind, zu einem effizienteren und zuverlässigeren Gesamtspeichersystem führen.
  • Die Datenspeichervorrichtungen, wie die DSDs 304a-304n (3), die Bestandteil eines Datenspeichersystems 200 (2 und 3) sind, können als empfindliche Sensoren von Faktoren angesehen werden, welche die mit jeder DSD verbundene Datenintegrität beeinflussen können, wie Temperatur, Luftstrom, Vibration und dergleichen im Zusammenhang mit HDDs und Alter, Speicherzyklen und dergleichen im Zusammenhang mit SSDs. Darüber hinaus können die DSDs 304a-304n in Form von HDDs Informationsquellen bezüglich Positionsfehlersignalen (PES) und der dazu beitragenden Faktoren sein, die einem bestimmten Kopf oder einer bestimmten Region von Medien entsprechen. Daher können Datenintegritätsinformationen, in die jeder DSD intern offengelegt sein können, und Kombinationen davon, wenn sie mit einer Systemsteuerung wie der Steuerung 312 (3) geteilt werden, eine kostengünstige, aber wertvolle erweiterte Sicht auf die Symptome der Datenverschlechterung auf Vorrichtungsebene zur Verwendung als informierter und effizienter ECC-Kontrollpunkt auf Systemebene bereitstellen. Möglicherweise sind auch zusätzliche Informationen zu den auf Systemebene verfügbaren DSDs verfügbar, z. B. für die Systemsteuerung, die zur intelligenten prädiktiven ECC-Entscheidungsfindung auf Systemebene beitragen und/oder kombiniert werden können. Beispielsweise können im Zusammenhang mit HDDs der Systemsteuerung Informationen wie der Formfaktor der Speichervorrichtung, die Anzahl der Festplatten (und/oder Aktuatoren), die Drehzahl der Festplatten (Umdrehung pro Minute) und andere übliche Informationen und andere übliche Variationen zwischen HDD-Modellen und möglicherweise auch die Position jeder Speichervorrichtung innerhalb eines bestimmten Regals und innerhalb des System-Racks (z. B. Rack 202 von 2), relative Nähe zu Lüftern, Lüfterdrehzahl, relative Nähe zu Wärmequellen und andere Faktoren außerhalb jeder Vorrichtung offengelegt werden. Es ist zu beachten, dass die DSDs 304a-304n sowie die Steuerung 312 so programmiert sein können, dass sie im Laufe der Zeit „lernen“. Daher sind Faktoren, welche die mit jeder DSD verbundene Datenintegrität beeinflussen können, unter Umständen nicht statisch, d. h. solche Faktoren (und darauf basierende ECC-Entscheidungen) können dynamisch sein.
  • 4 ist ein Flussdiagramm, das ein Verfahren zum Zuweisen einer Fehlerkorrekturcodierung (ECC) auf Systemebene basierend auf Informationen zur Vorrichtungsdatenintegrität gemäß einer Ausführungsform veranschaulicht.
  • In Block 402 stellt eine Vielzahl von Datenspeichervorrichtungen, die Bestandteil eines Datenspeichersystems sind, der Systemsteuerungsschaltlogik Zugriff auf jeweilige Datenintegritätsinformationen bereit. Beispielsweise und gemäß einer Ausführungsform können die DSDs 304a-304n (3) des Datenspeichersystems 200 (2, 3) ein Nachrichtenprotokoll (das z. B. vorhanden sein kann oder das speziell auf diesen Zweck zugeschnitten und über ein vorhandenes oder anderes Kommunikationsprotokolls überlagert sein kann) an die Systemsteuerung 312 (3) initiieren (oder die Systemsteuerung 312 kann betrieben werden, um das Nachrichtenprotokoll zu initiieren), z. B. über einen gemeinsamen Kommunikationskanal oder Bus und/oder einen dedizierten Kommunikationskanal oder Bus, über den die DSDs 304a-304n (oder zumindest eine Teilmenge der DSDs 304a-304n) über die jeweilige Kommunikationsschnittstelle 322 (3) jeweilige Datenintegrität, Datentauglichkeit und Datenrisikoinformationen an die Steuerung 312 melden. Alternativ können beispielsweise und gemäß einer Ausführungsform die Datenintegritäts-, Datentauglichkeits- und Datenrisikoinformationen auf jeder entsprechenden DSD 304a-304n oder auf einer anderen der nicht entsprechenden DSDs 304a-304n oder anderswo gespeichert werden, woher die Steuerung 312 auf solche Datenintegritätsinformationen zugreifen/diese lesen kann.
  • Im Allgemeinen kennzeichnen die Datenintegritäts-, Tauglichkeits- und Risikoinformationen die Wahrscheinlichkeit oder das Risiko, dass ein Lesefehler (z. B. beschädigte Daten aufgrund von Bitflips, Bitlöschungen und dergleichen) auftritt, wenn die jeweilige DSD einen Lesevorgang durchführt, gemäß einer Ausführungsform. Anders ausgedrückt kann jede DSD 304a-304n der Steuerung 312 einen Satz von Betriebsmetriken bereitstellen, die ihre jeweilige Lesesignalintegrität messen. Darüber hinaus kann die Systemsteuerung 312 zuweilen entscheiden, die Metriken zu ändern, die sie bei der ECC-Entscheidungsfindung verwendet, basierend auf, als nicht einschränkende Beispiele, der Bedeutung der entsprechenden gespeicherten Daten, den Kosten, die mit dem Ersetzen oder Wiederherstellen der gespeicherten Daten von anderen Quellen verbunden sind und dergleichen.
  • Als ein nicht einschränkendes Beispiel kann jede oder eine beliebige DSD 304a-304n eine Rohsignalintegrität bereitstellen, die einem HDD-Sektor entspricht, beispielsweise in Form eines lokalen Iterationszählers, der eine Signalqualitätsmetrik hinsichtlich der Schwierigkeit oder Verarbeitungsintensität des Lesekanals ist, Bits zu decodieren. Als ein anderes nicht einschränkendes Beispiel kann jede oder eine beliebige DSD 304a-304n Datenintegritäts-, Tauglichkeits-, Risikoinformationen bezüglich benachbarter Spurstörungen (ATI) und/oder Fernspurstörungen (FTI) und/oder Track Squeeze und deren Auswirkungen (z. B. Amplitudenänderung, Löschbandbreite, Bytefehlerrate) bereitstellen, um nur einige zu nennen. Andere Datenintegritätsmetriken, die von den DSDs 304a-304n für diesen Zweck mit der Steuerung 312 geteilt werden können, können als nicht einschränkende Beispiele Grenze für Zonensignal-Rausch-Verhältnis (SNR) pro Kopf oder pro Zone, Informationen über Schreibsperrvorschub und intelligente Schreibüberprüfungsoperationen im Zusammenhang mit HDD mit Shingled Magnetic Recording (SMR), Plattenlade-/-entladezonen für HDDs und dergleichen sein.
  • Im Allgemeinen sind die Arten von Datenintegritäts-, Tauglichkeits- und Risikoinformationen, welche die DSDs 304a-304n der Steuerung 312 bereitstellen können, im Kontext des lokalen Wissens, über das die DSD über sich selbst verfügt, und mit dem Ziel, Informationen bereitzustellen, die es der Steuerung 312 ermöglichen, eine relevante Risikobewertung und -vorhersage in Bezug auf die Qualität eines in der DSD erzeugten Lesesignals durchzuführen, relativ unbegrenzt. Dies bedeutet nicht, dass die Informationen, die von den DSDs 304a-304n an die Steuerung 312 geliefert werden, willkürlich sind, vielmehr würde das gesamte Systemdesign, die Entwicklung und Implementierung der hier beschriebenen Techniken von einem integrierten Ansatz profitieren, welche Arten von Informationen für jede DSD verfügbar sind und für die Systemsteuerung für Bewertungs- und Vorhersagezwecke wertvoll sind.
  • Bei Block 404 bestimmt die Steuerungsschaltlogik basierend auf den Datenintegritätsinformationen von mindestens einer Teilmenge der Vielzahl von Datenspeichervorrichtungen einen Typ und/oder einen Betrag einer Fehlerkorrekturcodierung (ECC), die Daten entspricht, die auf einer oder mehreren der Datenspeichervorrichtungen gespeichert werden sollen. Basierend auf den Datenintegritäts-, Tauglichkeits- und Risikoinformationen, welche die Population der DSDs 304a-304n mit der Steuerung 312 in Block 402 (oder mindestens einer Teilmenge solcher geteilten Informationen) geteilt hat, wertet die ECC-Regelmaschine 320 (3) der Steuerung 312 solche Informationen aus, um die Wahrscheinlichkeit oder das Risiko eines Fehlers, der einem Lesevorgang einer gegebenen DSD 304a-304n entspricht, vorherzusagen. Dann kann die Steuerung 312 auf der Grundlage der Ergebnisse ihrer Bewertung (die weiterhin auf anderen Informationen als den in Block 402 gesammelten Informationen basieren können) eine fundierte Entscheidung darüber treffen, welche Art und/oder welcher Betrag, welche Stufe, welcher Grad von ECC (als nicht einschränkende Beispiele Low Density Parity Check-Code (LDPC-Code) auf der niedrigsten Ebene, Code auf Blockebene über N logische Blockadressen (LBAs) auf der nächsten Ebene, Löschcodierung implementiert als verteilter Code über mehrere DSDs auf der nächsten Ebene, ein RAID-Schema und dergleichen) geeignet ist, um das damit verbundene Risiko einer Datenbeschädigung zu handhaben, und die Steuerung 312 kann dann verfolgen, für welche Daten zusätzliche Parität zugewiesen wird. Angenommen beispielsweise, eine Basislinienparität von 1x Bytes codierter Parität für Daten auf einer bestimmten DSD, wenn die von dieser DSD geteilten Datenintegritäts-, Tauglichkeits- und Risikoinformationen zu einer Schlussfolgerung oder Vorhersage der Steuerung 312 führt, dass die Daten auf dieser bestimmten DSD kompromittiert sind oder altern (z. B. durch thermischen Zerfall, Squeeze usw.), kann die Regelmaschine 320 der Steuerung 312 bestimmen, dass beispielsweise 2x Bytes oder sogar 4x Bytes codierter Parität, für zu dieser bestimmten DSD neu geschriebene Daten geeignet sind.
  • Gemäß einer Ausführungsform werden die mehreren DSDs 304a bis 304n logisch in Teilmengen gemäß einer oder mehreren gemeinsamen Eigenschaften (z. B. Vibrationsumgebung, Alter, Laufwerktyp usw.) gruppiert und die in Block 404 durchgeführte Bestimmung für eine bestimmte Teilmenge der DSDs 304a-304n oder für eine bestimmte DSD 304a-304n innerhalb der Teilmenge basiert auf den geteilten Datenintegritätsinformationen von dieser bestimmten Teilmenge. Alternativ basiert gemäß einer Ausführungsform die in Block 404 durchgeführte Bestimmung für eine bestimmte Teilmenge von DSDs 304a-304n oder für eine bestimmte DSD 304a-304n innerhalb der Teilmenge auf den geteilten Datenintegritätsinformationen von dieser bestimmten Teilmenge und von einer oder mehreren zusätzliche Teilmengen der DSDs 304a-304n.
  • Die Systemsteuerung 312 hat wahrscheinlich Wissen, das den DSDs 304a-304n nicht zur Verfügung steht, das sie benutzen kann, um die Bestimmung bei Block 404 vorzunehmen. Als ein nicht einschränkendes Beispiel kann die Steuerung 312 Wissen über die Zeitkritikalität bestimmter Daten haben, beispielsweise basierend auf Informationen in einer Schreibanforderung vom Host 350 (3), auf deren Grundlage die Steuerung 312 die gewünschte ECC bestimmt. Beispielsweise kann Daten, für die Leselatenz unerwünschter ist, wiederum ein maximaler ECC-Schutz zugewiesen werden. Als ein anderes nicht einschränkendes Beispiel hat die Steuerung 312 Kenntnis darüber, ob Redundanz (z. B. ECC-Parität) für bestimmte Daten bereits in einem anderen Kontext vorhanden ist. Beispielsweise kann die Steuerung 312 wissen, dass der Löschcodierungsschutz bereits in größerem Maßstab verfügbar ist, beispielsweise in einem Archivkontext, und dass die Leselatenz nicht von größter Bedeutung ist, basierend darauf, dass die Steuerung 312 auf zusätzlichen ECC-Schutz verzichtet, da die Daten bereits durch diese andere Form des ECC-Schutzes geschützt sind. Gemäß einer Ausführungsform wird die dem Block 404 zugeordnete Verarbeitung als Hintergrundprozess kontinuierlich ausgeführt, oder wenn Bandbreite verfügbar ist. Alternativ wird gemäß einer Ausführungsform die dem Block 404 zugeordnete Verarbeitung als Reaktion auf eine Schreibanforderung vom Host 350 ausgeführt, wobei die Schreibanforderung zum Ausschreiben in das Speichervorrichtungsarray in eine Warteschlange gestellt werden kann, während eine solche Verarbeitung durchgeführt wird.
  • In Block 406 berechnet die Steuerung 312 die in Block 404 bestimmte ECC, und in Block 408 werden Daten auf einer oder mehreren der DSDs 304a-304n gespeichert (geschrieben) und die entsprechende berechnete ECC wird darauf gespeichert (geschrieben). Beispielsweise und gemäß einer Ausführungsform kann die ECC auf der entsprechenden DSD 304a-304n gespeichert werden, auf der die entsprechenden Daten gespeichert werden. Alternativ können beispielsweise und gemäß einer Ausführungsform die Daten auf einer DSD 304a-304n gespeichert werden, während die entsprechende ECC auf einer anderen DSD 304a-304n gespeichert wird, von der die Daten selbst gespeichert werden (oder anderswo für die Steuerung 312 zugänglich sind). Gemäß einer Ausführungsform wird in Block 408 die ECC auf einer virtuellen Spur gespeichert, d. h. einer Spur, die logisch einer bestimmten Anzahl von HDD-Sektoren einer größeren Sektorgruppe zugeordnet ist. Beispielsweise kann die ECC auf einer Spur gespeichert werden, die von der Spur getrennt ist, auf der die entsprechenden Daten gespeichert sind, und für jeweils 100 Sektoren einer 500-Sektor-Gruppe, als ein nicht einschränkendes Beispiel. Somit muss nicht eine gesamte Spur gelesen werden, um zu der Parität zu gelangen, die in der Regel am Ende der Spur gespeichert ist, auf der die entsprechenden Daten gespeichert sind.
  • Als Reaktion auf eine Datenleseanforderung von einem Client, wie beispielsweise dem Host 350, sendet die Steuerung 312 eine Leseanforderung an die eine oder mehreren DSDs 304a-304n, auf denen die Daten gespeichert sind, und die eine oder die mehreren DSDs 304a-304n geben die angeforderten Daten und die entsprechende ECC an die Steuerung 312 zurück, und die Steuerung 312 decodiert die ECC, um die angeforderten Daten zu rekonstruieren oder zu perfektionieren. Gemäß einer Ausführungsform geben die DSDs 304a-304n eine Form der angeforderten Daten zurück, unabhängig davon, ob der Lesevorgang erfolgreich war. Das heißt, im Fall eines teilweise fehlgeschlagenen Lesevorgangs können die DSDs 304a-304n „Dummy“-Daten für die fehlgeschlagenen Sektoren zurückgeben, und die Steuerung 312 erkennt und korrigiert die Datenfehler basierend auf der verfügbaren ECC. Darüber hinaus kann Redundanz oder Parität, die häufig verwendet wird, von der Steuerung 312 (z. B. im Speicher 313) und/oder den DSDs 304a-304n zwischengespeichert werden, um ihre Verfügbarkeit zu verbessern.
  • Der dynamische und skalierbare Ansatz zur Fehlerkorrekturcodierung (ECC) basierend auf Datenintegritätsinformationen von den Systemspeichervorrichtungen, wie hierin beschrieben, stellt im Vergleich zu herkömmlichen Ansätzen ein zuverlässigeres Datenspeichersystem bereit, und daher ein verfügbareres Datenspeichersystem über den beabsichtigten oder spezifizierten oder ausgeschriebenen oder garantierten Betriebslebenszyklus. Dies ist zumindest teilweise darauf zurückzuführen, dass die Systemsteuerung 312 eine ganzheitliche Ansicht der Datensignalintegrität des Arrays von Datenspeichervorrichtungen 304a-304n im Hinblick auf die informative und praktische Rückmeldung der Datenintegrität erhält, welche die Population der Vorrichtungen 304a-304n an die Steuerung 312 meldet oder anderweitig mit dieser teilt. Daher wird innerhalb des Speichersystems ein optimaleres ECC-Schema verwendet, z. B. muss in Szenarien, in denen die Datenintegrität stark ist, nur eine erforderliche Menge an ECC generiert werden, und in Szenarien, in denen die Datenintegrität beeinträchtigt ist, kann so viel ECC wie erforderlich generiert werden, und Lesefehler werden verhindert. Anders ausgedrückt, die Art und Menge der ECC wird genauer an die tatsächlich benötigte Datenredundanz angepasst, da die Art und der Betrag der benötigten ECC auf der Grundlage von „echtem“ Betriebswissen von dem und über das Vorrichtungenarray bestimmt/vorhergesagt wird. Somit bietet dieser flexible und anpassungsfähige Ansatz für ECC weiterhin einen geringeren Rechenaufwand und ein effizienteres ECC-Framework, bei dem die Codierung nur dann generiert wird, wenn und wo dies erforderlich ist. Darüber hinaus bietet die Bestimmung auf Systemebene, wann und wo und wie viel Codierung erforderlich ist, ein leistungsfähigeres Datenspeichersystem, da die ECC-Berechnung und -Verarbeitung nur minimale Auswirkungen auf E/A-Operationen der Vorrichtungen hat.
  • Physische Beschreibung eines illustrativen Betriebskontextes
  • Konfiguration des Festplattenlaufwerks
  • Ausführungsformen können im Kontext eines Datenspeichersystems verwendet werden, in dem mehrere Datenspeichervorrichtungen (DSDs) verwendet werden, wie Festplattenlaufwerke (HDDs) sowie Festkörperspeichervorrichtungen (oder „Festkörperlaufwerke“ (SSDs)) und/oder Hybridlaufwerke. Somit ist gemäß einer Ausführungsform eine Draufsicht, die ein HDD 100 veranschaulicht, in 1A gezeigt, um einen beispielhaften Betriebskontext zu veranschaulichen.
  • 1A veranschaulicht die funktionale Anordnung von Komponenten des HDD 100, einschließlich eines Gleiters 110b, der einen magnetischen Lese-Schreibkopf 110a einschließt. Zusammenfassend können der Gleiter 110b und der Kopf 110a als Kopfgleiter bezeichnet werden. Das HDD 100 schließt mindestens eine Kopf-Kardan-Aufhängung (HGA) 110 ein, die den Kopfgleiter, eine an dem Kopfgleiter typischerweise über eine Biegung befestigte Führungsaufhängung 110c und einen Lastbalken 110d, der an der Führungsaufhängung 110c befestigt ist, einschließt. Das HDD 100 schließt auch mindestens ein Aufzeichnungsmedium 120 ein, das drehbar an einer Spindel 124 montiert ist, und einen Antriebsmotor (nicht sichtbar), der an der Spindel 124 befestigt ist, um das Medium 120 zu drehen. Der Lese-Schreibkopf 110a, der auch als ein Wandler bezeichnet werden kann, schließt ein Schreibelement und ein Leseelement zum jeweiligen Schreiben und Lesen von Informationen ein, die auf dem Medium 120 des HDD 100 gespeichert sind. Das Medium 120 oder eine Vielzahl von Plattenmedien kann mit einer Plattenklemme 128 an der Spindel 124 befestigt werden.
  • Das HDD 100 schließt weiterhin einen Arm 132, der an der HGA 110 befestigt ist, einen Schlitten 134, einen Schwingspulenmotor (VCM), der einen Anker 136 einschließlich einer Schwingspule 140, die an dem Schlitten 134 befestigt ist, und einen Stator 144 einschließlich einem Schwingspulenmagneten (nicht sichtbar) ein. Der Anker 136 des VCM ist am Schlitten 134 befestigt und so eingerichtet, dass er den Arm 132 und den HGA 110 bewegt, um auf Abschnitte des Mediums 120 zuzugreifen, die alle gemeinsam auf einem Drehzapfen 148 mit einer dazwischen angeordneten Drehlageranordnung 152 montiert sind. Im Fall eines HDD mit mehreren Festplatten kann der Schlitten 134 als „E-Block“ oder Kamm bezeichnet werden, da der Schlitten so angeordnet ist, dass er eine Reihe von Armen trägt, die ihm das Aussehen eines Kamms verleihen.
  • Eine Anordnung aufweisend eine Kopf-Kardan-Aufhängung (z. B. HGA 110) einschließlich einer Vorrichtung, mit welcher der Kopfgleiter gekoppelt ist, einen Betätigungsarm (z. B. der Arm 132) und/oder Lastbalken, mit dem die Biegung gekoppelt ist, und ein Stellglied (z. B. VCM), mit dem der Betätigungsarm gekoppelt ist, kann zusammenfassend als Kopfstapelbaugruppe (HSA) bezeichnet werden. Eine HSA kann jedoch mehr oder weniger Komponenten als die beschriebenen einschließen. Beispielsweise kann sich eine HSA auf eine Anordnung beziehen, die weiterhin elektrische Verbindungskomponenten einschließt. Im Allgemeinen ist eine HSA die zum Bewegen des Kopfgleiters eingerichtete Anordnung, um auf Teile des Mediums 120 für Lese- und Schreibvorgänge zuzugreifen.
  • Mit weiterer Bezugnahme auf 1A werden elektrische Signale (z. B. Strom zu der Schwingspule 140 des VCM), die ein Schreibsignal zum und ein Lesesignal vom Kopf 110a aufweisen, über eine flexible Kabelanordnung (FCA) 156 (oder „Flexkabel“) übertragen. Die Verbindung zwischen dem flexiblen Kabel 156 und dem Kopf 110a kann ein Arm-Elektronik (AE)-Modul 160 einschließen, das einen integrierten Vorverstärker für das Lesesignal sowie andere elektronische Komponenten des Lese- und Schreibkanals aufweisen kann. Das AE-Modul 160 kann wie gezeigt am Schlitten 134 befestigt sein. Das flexible Kabel 156 kann mit einem elektrischen Verbinderblock 164 gekoppelt sein, der in einigen Konfigurationen eine elektrische Verbindung durch eine elektrische Durchführung bereitstellt, die durch ein HDD-Gehäuse 168 bereitgestellt wird. Das HDD-Gehäuse 168 (oder „Gehäusebasis“ oder „Basisplatte“ oder einfach „Basis“) in Verbindung mit einer HDD-Abdeckung bietet ein halb abgedichtetes (oder in einigen Konfigurationen hermetisch abgedichtetes) Schutzgehäuse für die Informationsspeicherkomponenten des HDD 100.
  • Andere elektronische Komponenten, einschließlich einer Festplattensteuerung und Servoelektronik mit einem digitalen Signalprozessor (DSP), stellen elektrische Signale an den Antriebsmotor, die Schwingspule 140 des VCM und den Kopf 110a der HGA 110 bereit. Das dem Antriebsmotor bereitgestellt elektrische Signal ermöglicht es dem Antriebsmotor, sich zu drehen und ein Drehmoment für die Spindel 124 bereitzustellen, das wiederum auf das Medium 120 übertragen wird, das an der Spindel 124 befestigt ist. Dadurch dreht sich das Medium 120 in eine Richtung 172. Das sich drehende Medium 120 erzeugt ein Luftpolster, das als Luftlager wirkt, auf dem die Luftlagerfläche (ABS) des Gleiters 110b läuft, sodass der Gleiter 110b über der Oberfläche des Mediums 120 fliegt, ohne mit einer dünnen Magnetaufzeichnungsschicht in Kontakt zu kommen, in der Informationen aufgezeichnet werden. In ähnlicher Weise erzeugt bei einem HDD, bei dem ein leichteres Gas als Luft verwendet wird, wie Helium als ein nicht einschränkendes Beispiel, das sich drehende Medium 120 ein Gaskissen, das als Gas- oder Fluidlager wirkt, auf dem der Gleiter 110b läuft.
  • Das elektrische Signal, das an die Schwingspule 140 des VCM bereitgestellt wird, ermöglicht es dem Kopf 110a des HGA 110, auf eine Spur 176 zuzugreifen, auf der Informationen aufgezeichnet werden. Somit schwingt der Anker 136 des VCM durch einen Bogen 180, wodurch der Kopf 110a der HGA 110 auf verschiedene Spuren auf dem Medium 120 zugreifen kann. Informationen werden auf das Medium 120 in einer Vielzahl von radial ineinander geschachtelten Spuren in Sektoren auf dem Medium 120, wie Sektor 184, gespeichert. Entsprechend besteht jede Spur aus einer Vielzahl von sektorierten Spurabschnitten (oder „Spursektor“), wie einem sektorierten Spurabschnitt 188. Jeder sektorierte Spurabschnitt 188 kann aufgezeichnete Informationen beinhalten, und einen Header mit Fehlerkorrekturcode-Informationen und ein Servo-Burst-Signalmuster, wie beispielsweise ein ABCD-Servo-Burst-Signalmuster, das Informationen sind, welche die Spur 176 identifizieren. Beim Zugreifen auf die Spur 176, liest das Leseelement des Kopfes 110a der HGA 110 das Servo-Burst-Signalmuster, das der Servoelektronik ein Positions-Fehlersignal (PES) liefert, welches das der Schwingspule 140 des VCM zugeführte elektrische Signal steuert und somit dem Kopf 110a ermöglicht, der Spur 176 zu folgen. Nach dem Finden der Spur 176 und dem Identifizieren eines bestimmten sektorierten Spurabschnitts 188, liest der Kopf 110a entweder Informationen aus der Spur 176 oder schreibt Informationen auf die Spur 176 in Abhängigkeit von Anweisungen, welche die Plattensteuerung von einem externen Agenten, zum Beispiel einem Mikroprozessor eines Computersystems, erhält.
  • Die elektronische Architektur einer Festplatte weist eine Vielzahl von elektronischen Komponenten zur Durchführung ihrer jeweiligen Funktionen zum Betrieb des HDD auf, wie eine Festplattensteuerung („HDC“), eine Schnittstellensteuerung, ein Arm-Elektronikmodul, einen Datenkanal, einen Motortreiber, einen Servoprozessor, Pufferspeicher, usw. Zwei oder mehr derartiger Komponenten können auf einer einzigen integrierten Leiterplatte kombiniert werden, die als „System auf einem Chip“ („SOC“) bezeichnet wird. Einige, wenn nicht alle solcher elektronischer Komponenten sind typischerweise auf einer Leiterplatte angeordnet, die mit der Unterseite eines HDD, wie zum Beispiel mit dem HDD-Gehäuse 168, gekoppelt ist.
  • Konfiguration des Festkörperlaufwerks
  • 1B ist ein Blockdiagramm, das einen beispielhaften Betriebskontext veranschaulicht, mit dem Ausführungsformen der Erfindung implementiert werden können. 1B zeigt eine arttypische SSD-Architektur 150 mit einer SSD 152, die über eine primäre Kommunikationsschnittstelle 156 kommunikativ mit einem Host 154 gekoppelt ist. Ausführungsformen sind nicht auf eine Konfiguration beschränkt, wie sie in 1B dargestellt ist, vielmehr können Ausführungsformen mit anderen SSD-Konfigurationen als den in 1B veranschaulichten implementiert werden. Beispielsweise können Ausführungsformen implementiert werden, um in anderen Umgebungen zu arbeiten, die zum Schreiben und Lesen von Daten auf nichtflüchtigen Speicherkomponenten beruhen.
  • Der Host 154 stellt grob jede Art von Computerhardware, -software oder -firmware (oder eine beliebige Kombination des Vorstehenden) dar, die unter anderem Daten-E/A-Anforderungen oder -Aufrufe an eine oder mehrere Speichervorrichtungen sendet. Beispielsweise kann der Host 154 ein Betriebssystem sein, das auf einem Computer, einem Tablet, einem Mobiltelefon oder allgemein einem beliebigen Rechnertyp ausgeführt wird, der Speicher enthält oder mit diesem zusammenwirkt, wie beispielsweise dem Host 350 (3). Die primäre Schnittstelle 156, die den Host 154 mit der SSD 152 koppelt, kann beispielsweise der interne Bus eines Speichersystems oder ein Kommunikationskabel oder eine drahtlose Kommunikationsverbindung oder dergleichen sein.
  • Die in 1B dargestellte beispielhafte SSD 152 schließt eine Schnittstelle 160, eine Steuerung 162 (z. B. eine Steuerung mit darin enthaltener Firmware-Logik), einen Funktionsblock zur Adressierung 164, einen Datenpuffer-Cache 166, einen Fehlerkorrekturcode (ECC) 168 und eine oder mehrere nichtflüchtige Speicherkomponenten 170a, 170b-170n ein.
  • Die Schnittstelle 160 ist in diesem Zusammenhang ein Interaktionspunkt zwischen Komponenten, nämlich SSD 152 und Host 154, und ist sowohl auf Hardware- als auch auf Softwareebene anwendbar. Dies ermöglicht einer Komponente die Kommunikation mit anderen Komponenten über ein Eingabe-/Ausgabesystem und ein zugehöriges Protokoll. Eine Hardwareschnittstelle wird in der Regel durch die mechanischen, elektrischen und logischen Signale an der Schnittstelle und das Protokoll zu deren Sequenzierung beschrieben. Einige nicht einschränkende Beispiele für übliche und standardmäßige Schnittstellen schließen SCSI (Small Computer System Interface), SAS (Serial Attached SCSI) und SATA (Serial ATA) ein.
  • Eine SSD 152 schließt eine Steuerung 162 ein, welche die Elektronik enthält, welche die nichtflüchtigen Speicherkomponenten (z. B. NAND-Flash) mit dem Host verbrückt, wie den nichtflüchtigen Speicher 170a, 170b, 170n mit dem Host 154. Die Steuerung ist normalerweise ein eingebetteter Prozessor, der Code auf Firmware-Ebene ausführt, und ist ein wichtiger Faktor für die SSD-Ausführung.
  • Die Steuerung 162 ist über einen Funktionsblock zur Adressierung 164 mit dem nichtflüchtigen Speicher 170a, 170b, 170n über eine Schnittstelle verbunden. Die Funktion zur Adressierung 164 wird beispielsweise betrieben, um Zuordnungen zwischen logischen Blockadressen (LBAs) vom Host 154 zu einer entsprechenden physischen Blockadresse auf der SSD 152, nämlich auf dem nichtflüchtigen Speicher 170a, 170b, 170n der SSD 152, zu verwalten. Da die nichtflüchtige Speicherseite und die Hostsektoren unterschiedlich groß sind, muss eine SSD eine Datenstruktur aufbauen und verwalten, die es ihr ermöglicht, zwischen dem Host, der Daten in einen Sektor schreibt oder Daten aus einem Sektor liest, und der physischen nichtflüchtigen Speicherseite, auf der diese Daten tatsächlich platziert sind, zu übersetzen. Diese Tabellenstruktur oder „Zuordnung“ kann für eine Sitzung im flüchtigen Speicher 172 der SSD, wie DRAM oder eine andere lokale flüchtige Speicherkomponente, auf welche die Steuerung 162 und die Adressierung 164 zugreifen können, erstellt und verwaltet werden. Alternativ kann die Tabellenstruktur über Sitzungen im nichtflüchtigen Speicher der SSD, wie dem nichtflüchtigen Speicher 170a, 170b-170n, dauerhafter beibehalten werden.
  • Die Adressierung 164 interagiert zusätzlich zum nichtflüchtigen Speicher 170a, 170b-170n mit dem Datenpuffer-Cache 166 und dem Fehlerkorrekturcode (ECC) 168. Der Datenpuffer-Cache 166 einer SSD 152 verwendet in der Regel DRAM als Cache, ähnlich dem Cache in Festplattenlaufwerken. Der Datenpuffer-Cache 166 dient als Puffer oder Staging-Bereich für die Übertragung von Daten zu und von den nichtflüchtigen Speicherkomponenten sowie als Cache zum Beschleunigen zukünftiger Anforderungen für die zwischengespeicherten Daten. Der Datenpuffer-Cache 166 wird in der Regel mit einem flüchtigen Speicher implementiert, sodass die darin gespeicherten Daten nicht dauerhaft im Cache gespeichert sind, d. h. die Daten sind nicht persistent.
  • ECC 168 ist ein System zum Hinzufügen redundanter Daten oder Paritätsdaten zu einer Nachricht, sodass sie von einem Empfänger selbst dann wiederhergestellt werden kann, wenn entweder während des Übertragungsprozesses oder während der Speicherung eine Reihe von Fehlern aufgetreten sind.
  • Schließlich enthält die SSD 152 eine oder mehrere nichtflüchtige Speicherkomponenten 170a, 170b-170n. Für ein nicht einschränkendes Beispiel können die nichtflüchtigen Speicherkomponenten 170a, 170b-170n als Flash-Speicher (z. B. NAND- oder NOR-Flash) oder andere Arten von Solid-State-Speichern implementiert werden, die jetzt oder in Zukunft verfügbar sind. Die nichtflüchtigen Speicherkomponenten 170a, 170b-170n sind die tatsächlichen elektronischen Speicherkomponenten, auf denen Daten dauerhaft gespeichert sind. Die nichtflüchtigen Speicherkomponenten 170a, 170b-170n der SSD 152 können als analog zu den Festplatten in Festplattenlaufwerkspeichervorrichtungen (HDD-Speichervorrichtungen) angesehen werden.
  • Darüber hinaus können die hierin enthaltenen Verweise auf eine Datenspeichervorrichtung eine Multimedium-Speichervorrichtung (oder eine „Multimedium-Vorrichtung“, die manchmal als „Multi-Tier-Vorrichtung“ oder „Hybrid-Laufwerk“ bezeichnet werden kann) umfassen. Eine Multimedium-Speichervorrichtung bezieht sich allgemein auf eine Speichervorrichtung mit der Funktionalität von sowohl einer herkömmlichen HDD (siehe z. B. HDD 100) kombiniert mit einer SSD (siehe z. B. SSD 150) unter Verwendung eines nichtflüchtigen Speichers, wie Flash oder eines anderen Festkörperspeichers (z. B. integrierte Schaltungen), der elektrisch löschbar und programmierbar ist. Da sich Betrieb, Verwaltung und Steuerung der verschiedenen Arten von Speichermedien in der Regel unterscheiden, kann der Solid-State-Teil eines Hybridantriebs seine eigene entsprechende Steuerungsfunktionalität beinhalten, die zusammen mit der Festplattenfunktionalität in eine einzige Steuerung integriert werden kann. Eine Multimedium-Speichervorrichtung kann so konzipiert und eingerichtet sein, dass sie den Solid-State-Teil auf verschiedene Weise betreibt und nutzt, wie als nicht einschränkende Beispiele, indem sie den Festkörperspeicher als Cache-Speicher verwendet, zum Speichern häufig abgerufener Daten, zum Speichern 1/0-intensiver Daten, zum Speichern von Metadaten, die Nutzlastdaten entsprechen (z. B. zur Unterstützung beim Decodieren der Nutzlastdaten) und dergleichen. Weiterhin kann eine Multimedium-Speichervorrichtung im Wesentlichen als zwei Speichervorrichtungen in einem einzigen Gehäuse konzipiert und konfiguriert werden, d. h. ein traditionelles HDD und ein SSD, mit entweder einer oder mehreren Schnittstellen für die Hostverbindung.
  • Erweiterungen und Alternativen
  • In der vorangehenden Beschreibung wurden Ausführungsformen der Erfindung unter Bezugnahme auf zahlreiche spezifische Details beschrieben, die von Implementierung zu Implementierung variieren können. Daher können verschiedene Modifikationen und Änderungen daran vorgenommen werden, ohne von dem breiteren Geist und Schutzumfang der Ausführungsformen abzuweichen. Somit ist der einzige und ausschließliche Indikator für das, was die Erfindung ist und von den Anmeldern als Erfindung bezeichnet wird, die Reihe der Ansprüche, die sich aus dieser Anmeldung ergeben, in der spezifischen Form, in der diese Ansprüche geltend gemacht werden, einschließlich einer späteren Korrektur. Alle hierin ausdrücklich dargelegten Definitionen für Begriffe, die in solchen Ansprüchen enthalten sind, regeln die Bedeutung der in den Ansprüchen verwendeten Begriffe. Daher sollte keine Einschränkung, kein Element, keine Eigenschaft, kein Merkmal, kein Vorteil oder Attribut, das nicht ausdrücklich in einem Anspruch erwähnt wird, den Schutzumfang eines solchen Anspruchs in irgendeiner Weise einschränken. Die Beschreibung und die Zeichnungen sind demgemäß eher in einem veranschaulichenden als in einem einschränkenden Sinn zu betrachten.
  • Außerdem können in dieser Beschreibung bestimmte Prozessschritte in einer bestimmten Reihenfolge ausgeführt werden und alphabetische und alphanumerische Bezugszeichen können verwendet werden, um bestimmte Schritte zu identifizieren. Sofern in der Beschreibung nicht ausdrücklich angegeben, sind Ausführungsformen nicht unbedingt auf eine bestimmte Reihenfolge der Durchführung solcher Schritte beschränkt. Insbesondere dienen die Bezugszeichen lediglich der bequemen Identifizierung von Schritten und sind nicht dazu bestimmt, eine bestimmte Reihenfolge der Durchführung solcher Schritte festzulegen oder zu verlangen.

Claims (26)

  1. Verfahren, aufweisend: eine Vielzahl von Datenspeichervorrichtungen, die Bestandteil eines Datenspeichersystems sind und den Zugriff auf jeweilige Datenintegritätsinformationen für eine Steuerungsschaltlogik des Datenspeichersystems bereitstellen; die Steuerungsschaltlogik, die basierend mindestens teilweise auf den Datenintegritätsinformationen von mindestens einer Teilmenge der Vielzahl von Datenspeichervorrichtungen einen Typ und/oder eine Menge der Fehlerkorrekturcodierung (ECC) bestimmt, die Daten entspricht, die auf einer oder mehreren der Vielzahl von Datenspeichervorrichtungen gespeichert werden sollen, um Lesevorgangsfehler zu verhindern; die Steuerungsschaltlogik, welche die bestimmten ECC berechnet; und Speichern von Daten und Speichern der entsprechenden berechneten ECC auf einer oder mehreren der Vielzahl von Datenspeichervorrichtungen.
  2. Verfahren gemäß Anspruch 1, wobei das Bestimmen als Reaktion auf eine Schreibanforderung von einem Client durchgeführt wird.
  3. Verfahren gemäß Anspruch 1, wobei das Bestimmen als ein Hintergrundprozess durchgeführt wird.
  4. Verfahren gemäß Anspruch 1, weiterhin aufweisend: als Reaktion auf eine Datenleseanforderung von einem Client, Anfordern durch die Steuerungsschaltlogik eines Lesevorgangs von einer oder mehreren der Datenspeichervorrichtungen, auf denen die angeforderten Daten gespeichert sind; Zurückgeben, durch die eine oder die mehreren Datenspeichervorrichtungen, der angeforderten Daten und der entsprechenden ECC an die Steuerungsschaltlogik; und Decodieren durch die Steuerungsschaltlogik der ECC.
  5. Verfahren gemäß Anspruch 1, wobei: die Vielzahl von Datenspeichervorrichtungen gemäß einem oder mehreren gemeinsamen Merkmalen logisch in Teilmengen gruppiert ist; und das Bestimmen für eine bestimmte Teilmenge von Datenspeichervorrichtungen auf den Datenintegritätsinformationen aus dieser bestimmten Teilmenge basiert.
  6. Verfahren gemäß Anspruch 1, wobei: die Vielzahl von Datenspeichervorrichtungen nach einem oder mehreren gemeinsamen Merkmalen logisch in Teilmengen gruppiert ist; und das Bestimmen für eine bestimmte Teilmenge von Datenspeichervorrichtungen auf den Datenintegritätsinformationen aus dieser bestimmten Teilmenge und von einer oder mehreren zusätzlichen Teilmengen von Datenspeichervorrichtungen basiert.
  7. Verfahren gemäß Anspruch 1, wobei die Datenintegritätsinformationen von einer Datenspeichervorrichtung die Signalintegrität kennzeichnen, die dieser Datenspeichervorrichtung entspricht.
  8. Verfahren gemäß Anspruch 7, wobei die Datenintegritätsinformationen von einer Datenspeichervorrichtung einen lokalen Iterationszähler aufweisen, der mindestens einem Abschnitt eines Speichermediums dieser Datenspeichervorrichtung entspricht.
  9. Verfahren gemäß Anspruch 7, wobei die Datenintegritätsinformationen von einer Datenspeichervorrichtung eine Metrik aufweisen, die eine benachbarte Spurinterferenz kennzeichnet, die mindestens einem Abschnitt eines Speichermediums dieser Datenspeichervorrichtung entspricht.
  10. Verfahren gemäß Anspruch 1, wobei das Bestimmen weiterhin auf der Zeitkritikalität der Daten basiert, die auf der einen oder den mehreren Datenspeichervorrichtungen gespeichert werden sollen.
  11. Verfahren gemäß Anspruch 1, wobei das Bestimmen weiterhin auf der Verfügbarkeit einer anderen Fehlerkorrekturcodierung basiert, die den Daten entspricht, die auf der einen oder den mehreren Datenspeichervorrichtungen gespeichert werden sollen.
  12. Verfahren gemäß Anspruch 1, wobei das Bestimmen weiterhin auf der Sicherstellung der betrieblichen Verfügbarkeit des Datenspeichersystems während seines spezifizierten Lebenszyklus basiert.
  13. Verfahren gemäß Anspruch 1, wobei: das Speichern der ECC auf einer ECC-Spur gespeichert wird, die logisch einer bestimmten Anzahl von Festplattenlaufwerksdatensektoren einer größeren Datensektorgruppierung zugeordnet ist; und die ECC-Spur eine andere Spur als eine Spur ist, auf der entsprechende Daten gespeichert sind.
  14. Verfahren gemäß Anspruch 1, wobei das Bereitstellen des Zugriffs auf die jeweiligen Datenintegritätsinformationen eine oder mehrere der Vielzahl von Datenspeichervorrichtungen einschließt, die jeweilige Datenintegritätsinformationen an die Steuerungsschaltlogik melden.
  15. Verfahren gemäß Anspruch 1, wobei das Bereitstellen des Zugriffs auf die jeweiligen Datenintegritätsinformationen einschließt, dass die Steuerungsschaltlogik die Datenintegritätsinformationen liest, die auf einer oder mehreren der Vielzahl von Datenspeichervorrichtungen gespeichert sind.
  16. Verfahren gemäß Anspruch 1, wobei das Speichern das Speichern der berechneten ECC auf der Datenspeichervorrichtung einschließt, auf der die entsprechenden Daten gespeichert sind.
  17. Verfahren gemäß Anspruch 1, wobei das Speichern das Speichern der Daten auf einer ersten Datenspeichervorrichtung und das Speichern der entsprechenden berechneten ECC auf einer anderen zweiten Datenspeichervorrichtung einschließt.
  18. Datenspeichersystem, aufweisend: eine Vielzahl von Datenspeichervorrichtungen; und eine Systemsteuerungsschaltlogik, die einen Speicher und einen oder mehrere Prozessoren aufweist und eine oder mehrere Folgen von Befehlen verkörpert, die, wenn sie von dem einem oder den mehreren Prozessoren ausgeführt werden, das Ausführen von Folgendem bewirken: Zugreifen auf jeweilige Datentauglichkeitsinformationen, die Daten entsprechen, die auf mindestens einer Teilmenge der Vielzahl von Datenspeichervorrichtungen gespeichert sind; Bestimmen, mindestens teilweise basierend auf den aufgerufenen Datentauglichkeitsinformationen, eines Typs und/oder einer Menge der Fehlerkorrekturcodierung (ECC), die Daten entsprechen, die auf einer oder mehreren der Vielzahl von Datenspeichervorrichtungen gespeichert werden sollen, um Lesevorgangsfehler zu verhindern; Berechnen der bestimmten ECC; und als Reaktion auf einen Datenschreibbefehl von einem Client, Befehlen des Schreibens von Daten und Schreibens der entsprechenden berechneten ECC auf eine oder mehrere der Vielzahl von Datenspeichervorrichtungen.
  19. Datenspeichersysteme gemäß Anspruch 18, wobei die eine oder die mehreren Folgen von Befehlen weiterhin das Ausführen von Folgendem bewirken: als Reaktion auf eine Datenleseanforderung von dem Client, Anfordern eines Lesevorgangs von einer oder mehreren der Datenspeichervorrichtungen, auf denen die angeforderten Daten gespeichert sind; Empfangen von der einen oder den mehreren Datenspeichervorrichtungen der angeforderten Daten und der entsprechenden ECC; und Decodieren der ECC.
  20. Datenspeichersystem gemäß Anspruch 18, wobei: die eine oder die mehreren Folgen von Befehlen eine weitere Ausführung der logischen Gruppierung der Vielzahl von Datenspeichervorrichtungen in Teilmengen basierend auf einem oder mehreren gemeinsamen Merkmalen bewirken; und das Bestimmen für eine bestimmte Teilmenge von Datenspeichervorrichtungen auf den Datentauglichkeitsinformationen von mindestens dieser bestimmten Teilmenge basiert.
  21. Datenspeichersystem gemäß Anspruch 18, wobei die Datentauglichkeitsinformationen von einer Datenspeichervorrichtung ein Risiko von Datenlesefehlern kennzeichnen, das dieser Datenspeichervorrichtung entspricht.
  22. Datenspeichersystem gemäß Anspruch 18, wobei die Vielzahl von Datenspeichervorrichtungen mindestens zwei Arten von Vorrichtungen aus einer Gruppe aufweist, die aus rotierenden Magnetspeichermedium-Vorrichtungen, FestkörperspeicherVorrichtungen und Multimedium-Vorrichtungen besteht.
  23. Datenspeichersystem gemäß Anspruch 18, wobei das Bestimmen weiterhin auf der Sicherstellung der betrieblichen Verfügbarkeit des Datenspeichersystems während seines garantierten Lebenszyklus basiert.
  24. Fabrikat einer elektronischen Steuerung eines Datenspeichersystems, das eine oder mehrere Folgen von Befehlen verkörpert, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, das Ausführen von Folgendem bewirken: Zugreifen auf jeweilige Datenrisikoinformationen, die Daten entsprechen, die auf mindestens einer Teilmenge einer Vielzahl von Datenspeichervorrichtungen gespeichert sind, unter der Steuerung des Steuerungsfabrikats; und Vorhersagen, mindestens teilweise basierend auf den Datenrisikoinformationen aus mindestens einer Teilmenge der Vielzahl von Datenspeichervorrichtungen, die den Zugriff auf die Datenrisikoinformationen bereitstellen, ob eine zusätzliche Fehlerkorrekturcodierung (ECC) für die Daten gewünscht wird, die Daten entspricht, die auf einer oder mehreren der Vielzahl von Datenspeichervorrichtungen gespeichert werden sollen, um Lesevorgangsfehler zu verhindern.
  25. Fabrikat einer elektronischen Steuerung eines Datenspeichersystems gemäß Anspruch 24, wobei die eine oder die mehreren Folgen von Befehlen weiterhin das Ausführen von Folgendem bewirken: als Reaktion auf die Vorhersage, dass eine zusätzliche ECC erwünscht ist, Berechnen der zusätzlichen ECC; als Reaktion auf einen Datenschreibbefehl von einem Systemclient, Befehlen des Schreibens von Daten und Schreibens der entsprechenden zusätzlichen ECC auf eine oder mehrere der Datenspeichervorrichtungen; als Reaktion auf eine Datenleseanforderung von dem Systemclient, Anfordern einer Lesevorgang von einer oder mehreren der Datenspeichervorrichtungen, auf denen die angeforderten Daten gespeichert sind; Empfangen von der einen oder den mehreren Datenspeichervorrichtungen der angeforderten Daten und der entsprechenden zusätzlichen ECC; und Decodieren der zusätzlichen ECC, um die angeforderten Daten zu rekonstruieren.
  26. Fabrikat einer elektronischen Steuerung eines Datenspeichersystems gemäß Anspruch 24, wobei die eine oder die mehreren Folgen von Befehlen weiterhin das Ausführen von Folgendem bewirken: als Reaktion auf die Vorhersage, dass keine zusätzliche ECC erwünscht ist, und als Reaktion auf eine Datenleseanforderung von einem Systemclient, Anfordern eines Lesevorgangs von einer oder mehreren der Datenspeichervorrichtungen, auf denen die angeforderten Daten gespeichert sind; Empfangen der angeforderten Daten und der ECC, die bereits zum Schutz der Daten vorhanden ist, von einer oder mehreren Datenspeichervorrichtungen; und Decodieren der bereits vorhandenen ECC, um die angeforderten Daten zu rekonstruieren.
DE112019000131.0T 2018-06-27 2019-03-04 Zuordnung von fehlercodekorrektur auf systemebene basierend auf der gemeinsamen nutzung der datenintegrität der vorrichtungspopulation Pending DE112019000131T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/020,853 US10897273B2 (en) 2018-06-27 2018-06-27 System-level error correction coding allocation based on device population data integrity sharing
US16/020,853 2018-06-27
PCT/US2019/020607 WO2020005339A1 (en) 2018-06-27 2019-03-04 System-level error correction coding allocation based on device population data integrity sharing

Publications (1)

Publication Number Publication Date
DE112019000131T5 true DE112019000131T5 (de) 2020-07-02

Family

ID=68986798

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000131.0T Pending DE112019000131T5 (de) 2018-06-27 2019-03-04 Zuordnung von fehlercodekorrektur auf systemebene basierend auf der gemeinsamen nutzung der datenintegrität der vorrichtungspopulation

Country Status (4)

Country Link
US (1) US10897273B2 (de)
CN (1) CN111344788B (de)
DE (1) DE112019000131T5 (de)
WO (1) WO2020005339A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802908B2 (en) 2018-07-31 2020-10-13 Western Digital Technologies, Inc. Data dependent allocation of error correction resources
US20230044165A1 (en) * 2021-08-06 2023-02-09 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for remote data transfers to memory

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961890B2 (en) 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
US20050120265A1 (en) 2003-12-02 2005-06-02 Pline Steven L. Data storage system with error correction code and replaceable defective memory
US7810017B2 (en) 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
US7730344B1 (en) * 2006-08-28 2010-06-01 Marvell International Ltd. System and method for error correction
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US7900118B2 (en) 2007-02-12 2011-03-01 Phison Electronics Corp. Flash memory system and method for controlling the same
US8046380B2 (en) 2008-04-08 2011-10-25 Quantum Corporation Data storage system
WO2009155963A1 (en) 2008-06-23 2009-12-30 Ericsson Hungary Ltd Improving transmission of media streams of broadcast services in a multimedia broadcast transmission system
US8255774B2 (en) 2009-02-17 2012-08-28 Seagate Technology Data storage system with non-volatile memory for error correction
US8418021B2 (en) * 2009-03-27 2013-04-09 Mediatek Inc. Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof
US8266498B2 (en) * 2009-03-31 2012-09-11 Freescale Semiconductor, Inc. Implementation of multiple error detection schemes for a cache
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
WO2011031260A1 (en) 2009-09-10 2011-03-17 Hewlett-Packard Development Company, L.P. Memory subsystem having a first portion to store data with error correction code information and a second portion to store data without error correction code information
JP5523120B2 (ja) * 2010-01-14 2014-06-18 三菱電機株式会社 誤り訂正符号化方法、誤り訂正復号方法、誤り訂正符号化装置、および、誤り訂正復号装置
US8327226B2 (en) 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
US8856439B2 (en) 2010-12-03 2014-10-07 Lsi Corporation Method and device for utilizing application-level prior knowledge for selectively storing data in higher performance media
US9106264B2 (en) 2011-01-04 2015-08-11 Lsi Corporation Encoding and decoding in flash memories using convolutional-type low-density parity check codes
US9112537B2 (en) 2011-12-22 2015-08-18 Intel Corporation Content-aware caches for reliability
US8910017B2 (en) 2012-07-02 2014-12-09 Sandisk Technologies Inc. Flash memory with random partition
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9384002B2 (en) * 2012-11-16 2016-07-05 International Business Machines Corporation Speculative finish of instruction execution in a processor core
US9032271B2 (en) 2012-12-07 2015-05-12 Western Digital Technologies, Inc. System and method for lower page data recovery in a solid state drive
US20160132388A1 (en) 2013-06-14 2016-05-12 Samsung Electronics Co., Ltd Semiconductor memory device and ecc method thereof
US9201728B2 (en) 2013-09-12 2015-12-01 Seagate Technology Llc Memory device with variable code rate
US9558066B2 (en) 2014-09-26 2017-01-31 Intel Corporation Exchanging ECC metadata between memory and host system
US9984768B2 (en) 2014-10-20 2018-05-29 Sandisk Technologies Llc Distributing storage of ECC code words
US9786386B2 (en) 2015-02-27 2017-10-10 Microsoft Technology Licensing, Llc Dynamic approximate storage for custom applications
US9690656B2 (en) 2015-02-27 2017-06-27 Microsoft Technology Licensing, Llc Data encoding on single-level and variable multi-level cell storage
CN107771124A (zh) 2015-05-01 2018-03-06 材料科学公司 包括铝板和胶粘剂芯的层合体
US10223197B2 (en) 2015-08-06 2019-03-05 Nxp B.V. Integrated circuit device and method for applying error correction to SRAM memory
US9916199B2 (en) 2016-03-30 2018-03-13 Intel Corporation Method and apparatus for an error tolerance aware data retention scheme in a storage device for multi-scale error tolerant data
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10069597B2 (en) 2016-09-07 2018-09-04 Western Digital Technologies, Inc. Aggregated metadata transfer at a data storage device

Also Published As

Publication number Publication date
US20200007169A1 (en) 2020-01-02
WO2020005339A1 (en) 2020-01-02
CN111344788B (zh) 2021-11-23
CN111344788A (zh) 2020-06-26
US10897273B2 (en) 2021-01-19

Similar Documents

Publication Publication Date Title
JP4547357B2 (ja) 記憶データ構造用の冗長性
CN111508532B (zh) 用于磁存储介质的健康管理
US10614852B2 (en) Data-center drive with split-actuator that increases read/write performance via data striping
EP2972751B1 (de) Verfahren und vorrichtung zur reduzierung der zugriffszeit in einer datenspeichervorrichtung mittels codierter suche
US8028137B2 (en) System and method of selective data mirroring in a data storage device
US9070390B2 (en) Modified areal densities for degraded storage device read heads
DE102016011401A1 (de) Erweiterter Datenschutz mit niedrigem Mehraufwand in Datenspeichereinrichtungen
US20160217040A1 (en) Raid parity stripe reconstruction
CN106463145B (zh) 用于硬盘驱动器和混合驱动器的高速缓存系统和方法
US8122322B2 (en) System and method of storing reliability data
DE112014001305T5 (de) Auswahl einer redundanten Datenspeicherkonfiguration auf der Grundlage verfügbaren Speicherplatzes
CN101004935A (zh) 信息记录装置及其控制方法
US10275309B2 (en) Multi-layer integrated zone partition system error correction
DE112019000131T5 (de) Zuordnung von fehlercodekorrektur auf systemebene basierend auf der gemeinsamen nutzung der datenintegrität der vorrichtungspopulation
DE112019005558T5 (de) Verwendung einer auf fehlerkorrektur basierenden metrik zur identifizierung schlecht funktionierender datenspeichervorrichtungen
US6584544B1 (en) Method and apparatus for preparing a disk for use in a disk array
US7644206B2 (en) Command queue ordering by positionally pushing access commands
US9804781B2 (en) Storage media performance management
US11016665B2 (en) Event-based dynamic memory allocation in a data storage device
US11157364B1 (en) Distributed error correction coding for parallel storage devices
US8736993B2 (en) Failure-resistant multi-LUN hard disk drive
US10628051B2 (en) Reducing a data storage device boot time
US10635321B2 (en) Reducing a data storage device readying time
US11593204B2 (en) Fleet health management device classification framework
DE112021000148T5 (de) Elektronische vorrichtung mit infrarot-leuchtdiode zur datenübertragung

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE