DE10233648A1 - Dynamischer Fehlerkorrekturcode mit variabler Länge - Google Patents

Dynamischer Fehlerkorrekturcode mit variabler Länge

Info

Publication number
DE10233648A1
DE10233648A1 DE10233648A DE10233648A DE10233648A1 DE 10233648 A1 DE10233648 A1 DE 10233648A1 DE 10233648 A DE10233648 A DE 10233648A DE 10233648 A DE10233648 A DE 10233648A DE 10233648 A1 DE10233648 A1 DE 10233648A1
Authority
DE
Germany
Prior art keywords
error correction
redundancy
correction code
storage device
module
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.)
Withdrawn
Application number
DE10233648A
Other languages
English (en)
Inventor
Kenneth Kay Smith
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10233648A1 publication Critical patent/DE10233648A1/de
Withdrawn legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

Datenspeichermedien, wie z. B. ein Silizium-basierter nichtflüchtiger Speicher, sind gemäß einer Datenstruktur definiert, die einen Nutzlastabschnitt und einen Redundanzabschnitt enthält. Ein Teiler, der den Nutzlast- und den Redundanzabschnitt unterteilt, kann dynamisch neu angeordnetet werden, wodurch die Größe der Redundanz verändert wird, um die Verwendung eines Fehlerkorrekturcodes zu ermöglichen, der ausgewählt ist, um die Datenintegrität zu liefern, die ansprechend auf veränderte Bedingungen erforderlich ist.

Description

  • Diese Erfindung bezieht sich auf einen dynamischen Fehlerkorrekturcode mit variabler Länge. Insbesondere bezieht sich diese Erfindung auf ein System und ein Verfahren, durch die die Raummenge, die Fehlerkorrekturcodes gewidmet ist, dynamisch ansprechend auf Veränderungen in dem Speichermedium verändert werden kann.
  • Es ist für Silizium-basierte nichtflüchtige Speicher üblich, eine Datenschutzstrategie zu verwenden, durch die Datenfehler erfaßt und in einigen Fällen korrigiert werden können. Herkömmliche Datenschutzstrategien schützen eine Daten-"Nutzlast" (Nutzinformationen, Payload) mit einem Fehlerkorrekturcode (ECC), der in einem Bereich enthalten ist, der als "Redundanz" bekannt ist. Während die Redundanz für eine größere Datenintegrität sorgt, fügt sie außerdem einen Mehraufwand hinzu, was zu zusätzlichen Speicherkosten und einer zusätzlichen Prozessorzeit führt.
  • Die Menge von erforderlicher Redundanz hängt von der Anwendung ab. Häufig ist eine 8-Bit-Nutzlast einer 1-Bit- Redundanz oder einem Paritätsbit zugeordnet. Ähnlich kann auch eine größere Menge von Informationen geschützt werden. Es ist z. B. üblich, daß eine Nutzlast von 512 Bytes durch eine Redundanz mit 5% bis 20% dieser Länge geschützt wird. In diesem Zusammenhang kann eine Effizienzrate als die Daten- oder Nutzlastlänge über der Summe der Nutzlastlänge und der Redundanz definiert werden. Eine Effizienzrate von 80% bis 95% ist häufig. Da Effizienzraten wesentlich kleiner als 100% sind, ist es klar, daß wesentliche Betriebsmittel gegenwärtig der Fehlererfassung und -korrektur gewidmet sind.
  • Die Menge von Betriebsmitteln, die einer Redundanz gewidmet ist, basiert häufig auf der grundlegenden Fehlerrate des Datenspeichermediums. Die grundlegende Fehlerrate eines Datenspeichermediums ist die Rate, mit der Fehler innerhalb des Mediums zu finden sind. Die grundlegende Fehlerrate hängt von einer Anzahl von Faktoren ab. Der Technologietyp, das Alter des Mediums, die Anzahl von Schreib-/Lese- Operationen und andere Faktoren können z. B. die grundlegende Fehlerrate beeinflussen. Zusätzlich kann eine zusammengesetzte Speichervorrichtung, wie z. B. eine Flash- Karte, die aus mehreren integrierten Schaltungen gebildet ist, eine komplexe Fehlerrate aufweisen, die die verschiedenen einzelnen Raten jeder integrierten Schaltung wiederspiegelt.
  • Die grundlegende Fehlerrate hängt insbesondere von Faktoren ab, die eine Funktion der Zeit sind. Die grundlegende Fehlerrate von Speichervorrichtungen, die auf bestimmten Technologien basieren, kann sich z. B. mit der Zeit ansprechend auf eine Verschlechterung einer Isolierungsschicht erhöhen. Folglich könnte ein Redundanzpegel, der zu dem Zeitpunkt der Herstellung geeignet für die grundlegende Fehlerrate ist, nach einem bestimmten Zeitraum nicht angemessen sein. Ein Redundanzpegel jedoch, der zu einem bestimmten Zeitpunkt in der Zukunft angemessen ist, kann z. B. während des Zeitraums, in dem die Vorrichtung sehr wahrscheinlich verwendet wurde, nämlich unmittelbar nach der Herstellung, übermäßig sein.
  • Die grundlegende Fehlerrate kann schwierig zu bestimmen sein. Ein statistisch gültiger Probenraum von Schreib- und Lese-Operationen kann z. B. schwierig und teuer zu erhalten sein. Außerdem neigen erhaltene Daten dazu, nicht schlüssig zu sein, da die Fehlerrate nicht konstant ist. Aufgrund dieser Unsicherheit und den Kosten eines Datenausfalls als Ergebnis nicht erfaßter oder korrigierter Fehler ist es üblich, die zu erwartende Fehlerrate zu schätzen und dem Medium eine übermäßige Redundanz zu widmen.
  • Während eine übermäßige Redundanz häufig ist, ist es auch möglich, daß eine nicht ausreichende Redundanz der Erfassung und Korrektur von Fehlern, die auftreten, gewidmet ist. Dies ist insbesondere bei Speichertechnologien der Fall, bei denen die Fehlerrate nicht konstant ist, wobei Anstiege der grundlegenden Fehlerrate mit der Zeit schließlich die bereitgestellte Redundanz überschreiten. Bei derartigen Anwendungen können Abschnitte einer Speichervorrichtung verloren gehen, die funktionieren würden, wenn eine zusätzliche Redundanz verwendet würde.
  • Folglich wäre es von Vorteil, einen Fehlerkorrekturcode mit variabler Länge und ein Verfahren zur Verwendung zu entwickeln, das dynamisch die verfügbare Redundanz verändert, um ein Ersetzen eines ersten ECC durch einen zweiten ECC ansprechend auf sich verändernde Fehlerraten zu ermöglichen, und das eine effizientere Zuteilung von Speicher zwischen Nutzlast und Redundanz ermöglicht.
  • Es ist die Aufgabe der vorliegenden Erfindung, eine Datenstruktur mit verbesserten Charakteristika, ein verbessertes Verfahren, ein System mit verbesserten Charakteristika oder ein computerlesbares Medium mit verbesserten Charakteristika zu schaffen.
  • Diese Aufgabe wird durch eine Datenstruktur gemäß Anspruch 1, ein Verfahren gemäß Anspruch 3 oder 9, ein System gemäß Anspruch 13 oder 20 oder ein computerlesbares Medium gemäß Anspruch 21 oder 22 gelöst.
  • Systeme und Verfahren zum dynamischen Zuteilen von Datenspeicher zwischen einer Nutzlast und einer Redundanz sind offenbart. Die dynamische Neuzuteilung wird ansprechend auf veränderte Bedingungen durchgeführt und maximiert eine Datenintegrität und minimiert einen Mehraufwand. Bei einer Implementierung des dynamischen Fehlerkorrekturcodes mit variabler Länge wird die Zuteilung zwischen einer Nutzlast und einer Redundanz, die einen Fehlerkorrekturcode (ECC) enthält, in einem Speichermedium dynamisch ansprechend auf Veränderungen der grundlegenden Fehlerrate des Speichermediums verändert.
  • Während eines Verfahrens, durch das ein Speichermedium hergestellt wird, werden Regionen, die einer Nutzlast und einer Redundanz zugeordnet sind, innerhalb des Mediums definiert. Der relative Raum, der einer Redundanz zugeteilt ist, kann auf dem Technologietyp, einem Test des Speichers, der Verwendung, der die Speichervorrichtung unterzogen wird, und anderen Faktoren basieren. Ein ECC, der konsistent mit der Fehlerrate des Speichermediums ist, und eine Redundanz, die eine ausreichende Größe aufweist, um den ECC unterzubringen, werden ausgewählt.
  • Während des Betriebs einer Vorrichtung, wie z. B. einer Digitalkamera, in der das Speichermedium betriebsbereit ist, wird eine Fehlerverfolgung durchgeführt, um zu bestimmen, ob sich die grundlegende Fehlerrate verändert hat. Ein Eigentest kann ein ausgedehnteres Testen mit einer größeren statistischen Genauigkeit durchführen. Das Medienalter und Benutzungspegel werden überwacht und mit zu erwartenden Verschlechterungsraten basierend auf dem Technologietyp korreliert. Die Verwendung, der der Speicher unterzogen wird, wie z. B. als eine Kamera, ein MP3-Abspielgerät oder ein Handvideospielgerät, wird überwacht.
  • Wenn es notwendig ist, wird die relative Zuteilung von Raum zwischen der Nutzlast und der Redundanz dynamisch eingestellt. Der Raum, der der Redundanz zugeteilt ist, kann dann einem geeigneten ECC zugeordnet sein, der aus einer ECC-Bibliothek ausgewählt wird, die Paritäts-, BCH-(Bose- Chadhuri-Hocquenghem-)Codes und Reed-Solomon-Codecs mit. unterschiedlichen Stärken umfassen kann. Unterschiedliche ECC weisen relative Vorteile und Nachteile angesichts der Stärke ihrer Fehlererfassungs- und Korrekturfähigkeit, ihrer Speicherraumanforderungen und der Geschwindigkeit auf, mit der die ausführbaren Programmschritte, die dem ECC zugeordnet sind, ausgeführt werden.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beigefügten Zeichnungen näher erläutert, wobei die gleichen Zahlen in allen Zeichnungen verwendet werden, um auf gleiche Merkmale und Komponenten zu verweisen. Es zeigen:
  • Fig. 1 eine Darstellung eines einfachen ECC-Codeworts, das einen Nutzlastabschnitt und einen Redundanzabschnitt aufweist;
  • Fig. 2 eine Darstellung einer Datenspeichervorrichtung und einer zugeordneten Datenstruktur, die eine Mehrzahl von Nutzlastdatensegmenten und zugeordneten Redundanzsegmenten aufweist;
  • Fig. 3 einen Graphen, der eine Fehlerrate als eine Funktion der Speicheraktivität darstellt;
  • Fig. 4 einen Graphen, der eine Redundanzrate als eine Funktion der Speicheraktivität darstellt;
  • Fig. 5 ein Blockdiagramm, das die Beziehung zwischen exemplarischen Softwarestrukturen darstellt, die einer Speichervorrichtungsherstellungseinrichtung zugeordnet sind, die einen dynamischen Fehlerkorrekturcode mit variabler Länge unterstützt;
  • Fig. 6 ein Blockdiagramm, das die Beziehung zwischen exemplarischen Softwarestrukturen darstellt, die einer Endbenutzungsvorrichtung, wie z. B. einer Digitalkamera, die einen Datenspeicher verwendet, zugeordnet sind, die einen dynamischen Fehlerkorrekturcode mit variabler Länge unterstützt; und
  • Fig. 7 ein Flußdiagramm, das ein Verfahren zur Verwendung dynamischer Fehlerkorrekturcodes mit variabler Länge darstellt.
  • Übersicht
  • Datenspeichermedien, wie z. B. ein Silizium-basierter nichtflüchtiger Speicher, sind gemäß einer Datenstruktur konfiguriert, die einen Nutzlastabschnitt und einen Redundanzabschnitt unterteilt. Ein Teiler, der den Nutzlast- und den Redundanzabschnitt unterteilt, kann dynamisch zugeteilt sein, wodurch die Größe der Redundanz und die Stärke eines ECC, der in derselben enthalten ist, geeignet ansprechend auf sich verändernde Bedingungen ausgewählt werden können. Unterschiedliche ECCs weisen relative Vorteile und Nachteile hinsichtlich der Stärke ihrer Fehlererfassungs- und Korrekturfähigkeit, ihrer Speicherraumanforderungen und der Geschwindigkeit auf, mit der die ausführbaren Programmschritte, die dem ECC zugeordnet sind, ausgeführt werden.
  • Der Redundanzabschnitt einer Datenstruktur umfaßt Informationen gemäß einem Fehlerkorrekturcode (ECC), der Fehler in dem Speichermedium erfaßt und in einigen Fällen korrigiert. In dem Verlauf der Herstellung von Datenspeichermedien werden der Technologietyp, Ergebnisse des Testens und die Verwendung, der das Datenspeichermedium unterzogen werden soll, betrachtet. Angesichts dieser Faktoren wird eine Entscheidung hinsichtlich der Stärke des erforderlichen Fehlerkorrekturcodes, seiner Raumanforderungen und deshalb der relativen Größen der Nutzlast und der Redundanz durchgeführt.
  • Der Speicher wird dann zur Verwendung in einem System oder einer Vorrichtung, wie z. B. einer Digitalkamera, installiert. Bei einer typischen Anwendung führt der Lebenszyklus des Speichermediums zu einer gewissen Verschlechterung mit der Zeit. Als Antwort wird eine Fehlererfassung, -aufzeichnung und -analyse durchgeführt. Das Medienalter und Verwendungspegel werden überwacht. Speichertests können durchgeführt werden. Ansprechend auf Veränderungen der Speicherzuverlässigkeit kann die Größe der Redundanz hinsichtlich der Nutzlast verändert und ein geeigneterer ECC eingesetzt werden. Dies ermöglicht einen fortlaufenden zuverlässigen Betrieb des Mediums und verzögert die Zeit, zu der schlechte Bereiche des Mediums heraus abgebildet werden müssen oder das Medium ersetzt werden muß.
  • Exemplarische Redundanzzuteilung
  • Fig. 1 zeigt ein Codewort 100, das einen Nutzdaten- oder Nutzlastabschnitt 102 und einen Redundanzabschnitt 104 aufweist. Der Nutzlastabschnitt kann z. B. ein 8-Bit-Daten- Byte sein, wobei die Redundanz ein Paritätsbit umfassen kann. Alternativ könnten sowohl die Nutzlast als auch die Redundanz aus größeren digitalen Speicherbereichen gebildet sein.
  • Ein erster Unterteiler 106 stellt eine logische Unterteilung innerhalb des Codeworts 100 zwischen der Nutzlast 102 und der Redundanz 104 dar. Während eine Vielzahl von Beziehungen zwischen der Nutzlast und der Redundanz möglich ist, ist der Unterteiler 106 so dargestellt, daß er das Codewort in eine 120-Bit-Nutzlast mit einer 8-Bit-Parität unterteilt.
  • Ein zweiter und ein dritter Unterteiler 108, 110 stellen zwei zusätzliche Weisen dar, auf die die Nutzlast und die Redundanz in dem ECC-Codewort unterteilt sein könnten. Die Teiler 108, 110 sind in gestrichelten Linien gezeigt, um zu bedeuten, daß sie Alternativen für den Teiler 106 sind, und daß zu einem bestimmten Zeitpunkt nur ein Teiler verwendet wird, um die Nutzlast und die Redundanz logisch zu unterteilen. Der Teiler 108 ist dargestellt, um das ECC-Codewort in eine 120-Bit-Nutzlast mit einer Redundanz in der Form eines 16-Bit-BCH-(Bose-Chadhuri-Hocquenghem-)Codes zu segmentieren. Es ist wesentlich, daß eine Ersetzung des 16- Bit-BCH-Codes zu einer niedrige m "Rate" führt, d. h. zu einem niedrigeren Verhältnis der Nutzlast zu Nutzlast plus Redundanz. Der stärkere BCH-Code ermöglicht jedoch die erfolgreiche Verwendung von Speicherblöcken, die andernfalls aufgrund einer höheren grundlegenden Fehlerrate nicht verwendbar wären.
  • Ähnlich ist der Teiler 110 dargestellt, um das ECC-Codewort in eine 112-Bit-Nutzlast mit einer Redundanz in der Form eines 24-Bit-Reed-Solomon-Codes zu segmentieren. Ähnlich führt die Verwendung eines Reed-Solomon-Codes zu einer niedrigeren Rate, aber auch zu der Fähigkeit, eine Datenintegrität in einer Umgebung zu liefern, die eine höhere grundlegende Fehlerrate aufweist.
  • Fig. 2 zeigt eine Speicherabbildung, die die logische Zuteilung einer Datenstruktur 200 zeigt, die Speicher in einer Speichervorrichtung 201 darstellt. Die Datenstruktur 200 kann einer oder mehreren integrierten Schaltungen (ICs) oder ähnlichen monolithischen Vorrichtungen zugeordnet sein, bei denen es sinnvoll ist, anzunehmen, daß die grundlegende Fehlerrate im allgemeinen homogen ist. Die Datenstruktur 200 umfaßt einen Datenvorrat oder eine Nutzlast 202 und einen ECC-Vorrat oder eine Redundanz 204. Ein erster Teiler 206 trennt die Nutzlast und die Redundanz. Ein zweiter Teiler 208 und ein dritter Teiler 210 stellen eine Mehrzahl anderer Teiler dar, die verwendet werden könnten, um die Nutzlast und die Redundanz auf eine Weise zu unterteilen, die ihre relativen Größen und deshalb die Rate verändern würde. Der zweite und der dritte Teiler sind in gepunkteten Linien gezeigt, um anzuzeigen, daß sie Alternativen für den ersten Teiler 206 sind, und daß zu einem bestimmten Zeitpunkt nur ein Teiler verwendet werden kann.
  • Der Datenvorrat 202 umfaßt eine Mehrzahl von Datenwörtern 212, die eine Bitlänge aufweisen, die üblicherweise von dem Aufbau der Vorrichtung abhängt, in der der Speicherblock definiert ist. Bei einem exemplarischen Adressierschema sind die Datenwörter aufeinanderfolgend D0, D1, D2, usw. genannt und weisen eine Länge von 16 Bit, 32 Bit, 64 Bit oder eine andere Länge auf.
  • Der Redundanz-Vorrat 204 umfaßt eine Mehrzahl von ECC- Wörtern 214, die aufeinanderfolgend E0, E1, E2, usw. numeriert sind. Jedes ECC-Wort ist einem entsprechenden Datenwort 212 zugeordnet und liefert eine Redundanz für dasselbe. Jedes ECC-Wort ist außerdem einem bestimmten Fehlerkorrekturcode zugeordnet, wobei die Informationen, die in jedem ECC-Wort enthalten sind, gemäß diesem ECC formuliert sind.
  • Der erste Teiler 206 stellt eine logische Unterteilung in dem Block 200 zwischen der Nutzlast 202 und der Redundanz 204 dar. Während eine Vielzahl von Beziehungen zwischen der Nutzlast und der Redundanz möglich ist, ist der Teiler 206 dargestellt, um den Speicherblock in eine Mehrzahl von Nutzlastdatenwörtern D0 . . . Dn zu unterteilen, die jeweils einem Redundanzwort E0 . . . En zugeordnet sind. Die Informationen, die der Redundanz zugeordnet sind, können einen Paritäts- oder eine schwachen BCH-Fehlerkorrekturcode umfassen.
  • Ein zweiter Teiler 208 wird für den ersten eingesetzt, wodurch die Anzahl von Nutzlastdatenwörtern in dem Datenvorrat reduziert wird und die Länge jedes ECC-Wortes, das der Redundanz gewidmet ist, erhöht wird. Jedes Nutzlastdatenwort Dn ist weiterhin einem Redundanzwort En zugeordnet. Wenn jedoch der zweite Teiler anstelle des ersten Teilers verwendet wird, sind weniger Nutzlastdatenwörter vorhanden. Als ein Ergebnis sind weniger ECC-Redundanzwörter, jeweils mit einer größeren Länge, vorhanden. Folglich kann die Redundanz die Form eines stärkeren BCH-Fehlerkorrekturcodes annehmen.
  • Ein dritter Teiler 210 kann für den zweiten Teiler eingesetzt werden, wodurch die relativen Mengen von Nutzlast und Redundanz auf eine Weise verändert werden, die eine zusätzliche Redundanz liefert und den Raum, der der Nutzlast gewidmet ist, reduziert. Als ein Ergebnis kann die Redundanz sehr starke Reed-Solomon-Codecs unterstützen.
  • Der Leser wird erkennen, daß alle Teile naturgemäß vorstellbar sind. Folglich sind ein Bewegen eines Teilers oder ein Ersetzen eines Teilers durch einen anderen Teiler gleichwertig, wobei beide für eine Neuorganisierung der logischen Beziehung zwischen der Nutzlast und der Redundanz symbolisch sind. Insbesondere würde, wenn die Nutzlast und die Redundanz einen Bereich in einer Speichervorrichtung einnehmen, ein Bewegen des Teilers eine logische Verschiebung in dem relativen Adreßraum darstellen, der zwischen der Nutzlast und der Redundanz zugeteilt ist. Ähnlich würde ein Ersetzen eines Teilers durch einen anderen Teiler ein Neuorganisieren des Adreßraums darstellen, der von der Nutzlast und der Redundanz gemeinschaftlich verwendet wird, üblicherweise derart, daß Redundanzinformationen gemäß einem neu ausgewählten ECC in die Redundanz passen würden.
  • Fig. 3 zeigt eine exemplarische graphische Darstellung der grundlegenden Fehlerrate 300 eines Speichermediums. Eine Messung der Aktivität, wie z. B. der Anzahl von Schreib- und Lese-Operationen oder des chronologischen Alters des Mediums, wird auf der horizontalen Achse 302 gemessen. Die grundlegende Fehlerrate ist auf der vertikalen Achse 304 dargestellt.
  • Vor der Verwendung ist eine Schätzung oder Messung 306 einer anfänglichen, grundlegenden Fehlerrate ein Ergebnis des Technologietyps, der Charakteristika einer spezifischen Speichervorrichtung und anderer Faktoren. Nach einem Aktivitätszeitraum zeigt eine erste Schätzung oder Messung 308 der aktualisierten grundlegenden Fehlerrate an, daß ein gewisser Anstieg der Fehlerrate aufgetreten ist. Dies kann das Ergebnis des Alters und der Verwendung des Speichermediums sein. Zweite und dritte Schätzungen oder Messungen 310, 312 der aktualisierten grundlegenden Fehlerrate zeigen üblicherweise an, daß eine zusätzliche Verschlechterung des Speichermediums aufgetreten ist. Es ist allgemein der Fall, daß die grundlegende Fehlerrate konstant oder ansteigend ist. Es ist jedoch selten, daß die Rate abnimmt, obwohl es aufgrund der Verteilung von Fehlern möglich ist, daß aufeinanderfolgende Messungen einen Rückgang der grundlegenden Fehlerrate anzeigen.
  • Fig. 4 zeigt eine exemplarische graphische Darstellung der Redundanzrate 400, die an eine Datenstruktur 200 ansprechend auf den Anstieg der grundlegenden Fehlerrate 300 angelegt wird, wie aus Fig. 3 ersichtlich ist. Eine Messung der Aktivität, wie z. B. der Anzahl von Schreib- und Lese- Operationen oder des chronologischen Alters des Mediums, wird auf der horizontalen Achse 402 gemessen. Der Redundanzpegel ist auf der vertikalen Achse 404 dargestellt.
  • Zu der Zeit, zu der die grundlegende Fehlerrate bei 306 gemessen wurde, ist ein erster Redundanzpegel 406 in der Datenstruktur 200 wiedergegeben. Die Redundanzrate 406 kann einem Teiler 206 zugeordnet sein, der den Block 200 in eine Nutzlast 202 und eine Redundanz 204 unterteilt. Wenn die Fehlerrate relativ niedrig ist, kann der Raumpegel, der der Redundanz zugewiesen ist, ausreichend sein, sogar wenn ein Paritätsbit oder ein schwacher BCH-Code zugeordnet ist.
  • Zu der Zeit, zu der die grundlegende Fehlerrate bei 308 gemessen wurde, wird eine zweite Redundanzrate 408 an die Datenstruktur 200 angelegt. Die zweite Redundanzrate ist einem Teiler 208 zugeordnet, der die Datenstruktur 200 in eine Nutzlast 202 und eine Redundanz 204 unterteilt. Aufgrund des Anstiegs der Fehlerrate 308 gegenüber der Fehlerrate 306 muß der Raum, der der zweiten Redundanz 408 zugeordnet ist, ausreichend sein, um Informationen gemäß einem stärkeren BCH-Code oder ähnlichen Codecs zu enthalten. Wieder Bezug nehmend auf Fig. 2 ist es ersichtlich, daß der Teiler 208 einen größeren Prozentsatz des Speicherblocks 200 an die Redundanz liefert. Als ein Ergebnis ist der Redundanzpegel 408 ausreichend, um einen stärkeren BCH oder ähnliche Codecs zu unterstützen.
  • Ähnlich wird ein dritter Redundanzpegel 410 zu dem Zeitpunkt an die Datenstruktur 200 angelegt, zu dem die grundlegende Fehlerrate bei 310 gemessen wurde. Der dritte Redundanzpegel ist einem Teiler 210 zugeordnet. Aufgrund des Anstiegs der Fehlerrate 310 gegenüber der Fehlerrate 308 kann der Raumpegel, der der Redundanz 410 zugeordnet ist, u. U. ausreichend für die Verwendung eines sehr starken BCH-Codes oder von Reed-Solomon-Codecs sein müssen. Wieder Bezug nehmend auf Fig. 2 ist es ersichtlich, daß der Teiler 210 einen größeren Prozentsatz des Speicherraums 200 an die Redundanz liefert. Als ein Ergebnis ist der Redundanzpegel 410 ausreichend, um den sehr starken BCH und Reed-Solomon- Codecs zu unterstützen.
  • Exemplarischer Redundanzzuteilungsaufbau
  • Die Fig. 5 und 6 zeigen die Beziehung zwischen exemplarischen Softwaremodulen, die die Funktionalität eines dynamischen Fehlerkorrekturcodes mit variabler Länge unterstützen. Die Module, die in den Fig. 5 und 6 zu sehen sind, sind exemplarisch und könnten deshalb vereinigt, fragmentiert oder anderweitig neu angeordnet werden, um zu einer ähnlichen Funktionalität zu führen. Ähnlich könnten, während vorgeschlagene Orte für einige Module angezeigt sind, andere Orte ersetzt werden. Jedes Softwaremodul umfaßt ein Computer- oder Steuerungs-lesbares Medium, das Computer- oder Steuerungs-lesbare Instruktionen aufweist, die, wenn sie durch eine Steuerung in einer Vorrichtung oder einem System ausgeführt werden, zu der beschriebenen Funktionalität führen. Hardwareäquivalente können anstelle der Softwareinstruktionen verwendet werden und können bei manchen Anwendungen eine höhere Geschwindigkeit liefern.
  • Fig. 5 zeigt ein Anfangs-ECC-Zuweisungsmodul 500, das üblicherweise in einer Herstellungseinrichtung 501, in der die Speichervorrichtung 201 hergestellt wird, betriebsfähig ist. Das Anfangs-ECC-Zuweisungsmodul ist zum anfänglichen Anordnen des Teilers angepaßt, der den Nutzlast- und den Redundanzabschnitt der Datenstruktur 200, die der Speichervorrichtung zugeordnet ist, unterteilt. Nachdem ein Raum an einen Redundanzabschnitt zugeteilt ist, wird eine Zuweisung eines ECC durchgeführt. Die Zuweisung basiert teilweise auf einer anfänglichen Bestimmung der Speichervorrichtungstechnologie, einem Speichertest und einer Bestimmung der Verwendung oder Anwendung, der die Speichervorrichtung unterzogen wird. Während dieses Vorgangs steht die Speichervorrichtung üblicherweise in Kommunikation mit Testvorrichtungen, die in einer Herstellungseinrichtung enthalten sind, oder in Kommunikation mit einer Endverwendungsvorrichtung, wie z. B. einer Digitalkamera.
  • Ein Technologietypbestimmungsmodul 502 ist konfiguriert, um den Typ von Technologie zu bestimmen, der in der Speicherspeicherungsvorrichtung 201 verwendet wird. Der Technologietyp kann z. B. als ein MRAM-Speicher von Hewlett-Packard identifiziert sein. Das Technologietyp-Bestimmungsmodul kann schnittstellenmäßig mit einer Speichervorrichtung oder einem anderen Ort verbunden sein, der den Technologietyp der Speichervorrichtung kennt. Die Speichervorrichtung, die Herstellungseinrichtung oder das System oder die Vorrichtung, in die die Speichervorrichtung installiert wurde, wie z. B. eine Kamera, kann z. B. dem Technologietypbestimmungsmodul 502 den Typ von Technologie berichten, der in der Speichervorrichtung verwendet wird.
  • Ein Speichervorrichtungsspeichertestmodul 504 ist konfiguriert, um einen Speichertest an der Speichervorrichtung 201 durchzuführen. Eine Vielzahl geeigneter Speichertests ist bekannt und deshalb hierin nicht beschrieben. Der Speichertest bestimmt die grundlegende Fehlerrate der Speichervorrichtung, wie in Fig. 3 bei 306 ersichtlich ist. Wenn Speicherorte der Speichervorrichtung eine Fehlerrate aufweisen, die unannehmbar hoch ist, kann das Testmodul dieselben aus dem Adreßraum heraus abbilden oder das Medium zurückweisen.
  • Ein Anwendungsbestimmungsmodul 506 ist angepaßt, um die Verwendung zu bestimmen, der die Speichervorrichtung 201 unterzogen wird. Typische Anwendungen können Digitalkameras und MP3-Audiovorrichtungen umfassen. Die Verwendung, der die Speichervorrichtung 201 unterzogen wird, beeinflußt die Stärke der verwendeten Redundanz. Wenn die Endverwendungsvorrichtung z. B. ein Computerprogramm-Videospiel ist, muß die Redundanz robust sein, um zu verhindern, daß ein Fehler das Spiel blockiert. Wenn die Endverwendungsvorrichtung als eine Musikabspielvorrichtung, wie z. B. ein MP3- Abspielgerät, verwendet wird, kann die Redundanz schwächer sein, da ein fallengelassenes Datenpaket u. U. nur zu einem Bruchteil eines ungenauen Tons führen kann.
  • In einer Herstellungseinrichtungseinstellung ist das Anwendungsbestimmungsmodul 506 schnittstellenmäßig mit der Herstellungseinrichtung verbunden, um die Verwendung zu bestimmen, der die Speichervorrichtung 201 unterzogen wird. In einer Endverwendungsvorrichtungseinstellung, in der die Speichervorrichtung 201 in einer Endverwendungsvorrichtung angeordnet ist, wie z. B. einer Digitalkamera, ist das Verwendungsanwendungsbestimmungsmodul 506 schnittstellenmäßig mit der Endverwendungsvorrichtung verbunden, um die Verwendung zu bestimmen.
  • Ein Codezuweisungsmodul 508 ist angepaßt, um einen geeigneten ECC aus denen, die in der ECC-Bibliothek 510 verfügbar sind, auszuwählen, und auch, um einen Pegel der Redundanz auszuwählen, der erforderlich ist, um Informationen gemäß dem ausgewählten Code unterzubringen. Das Codezuweisungsmodul betrachtet den Technologietyp, der durch das Modul 502bestimmt ist, die Speichertestergebnisse, die durch das Modul 504 bestimmt sind, und die Anwendung, die durch das Modul 506 bestimmt ist. Angesichts dieser Eingabe wählt das Codezuweisungsmodul einen geeigneten ECC aus und paßt den Ort des Teilers 206 an, um die erforderliche Redundanz zu liefern, um die Speicherung von Informationen gemäß dem ausgewählten ECC unterzubringen.
  • Die ECC-Bibliothek 510 enthält üblicherweise eine Mehrzahl von ECCs, einschließlich zumindest eines schwächeren Paritätstypcodes 512, zumindest eines stärkeren BCH-Codes 514 und zumindest eines sehr starken Reed-Solomon-Codecs 516. Um einen dieser ECCs auf die Redundanz 204 anzuwenden, die der Datenstruktur 200 zugeordnet ist, kann ein geeigneter Teiler, ähnlich dem Teiler 206, ausgewählt werden, um zu der erforderlichen Teilung zwischen der Nutzlast und der Redundanz in der Datenstruktur 200 zu führen.
  • Fig. 6 zeigt ein Aktualisierungs-ECC-Zuweisungsmodul 600, das insbesondere angepaßt ist, um in einer Endverwendungsvorrichtung 601, wie z. B. einer Digitalkamera oder einer ähnlichen Vorrichtung, zu wirken. Das Aktualisierungs-ECC- Zuweisungsmodul verfolgt Fehler, überwacht das Medienalter und Verwendungspegel, führt einen Eigentest durch und wirkt auf andere Faktoren, die relevant sind, wenn der Speicherzustand und der Bedarf, einen Ersatz-ECC zu installieren, bewertet werden. Falls erforderlich, wählt das ECC- Zuweisungsmodul 600 einen geeigneten ECC unter denen aus, die in der ECC-Bibliothek verfügbar sind. Das Aktualisierungs-ECC-Zuweisungsmodul verändert auch den Ort eines Teilers, wodurch die Menge der Redundanz eingestellt wird, um Informationen gemäß dem neu ausgewählten ECC unterzubringen, und die Kompatibilität zwischen dem neu ausgewählten ECC und dem Raum aufrechtzuerhalten, der dem Redundanzabschnitt der Datenstruktur gewidmet ist.
  • Ein Fehlerverfolgungs-, Analyse und Aufzeichnungsmodul 602 sammelt Fehler in dem Speichermedium und zeichnet dieselben auf. Wenn Fehler durch die Redundanz entdeckt werden, werden die Orte des Auftretens verfolgt und aufgezeichnet.
  • Ein Eigentestmodul 604 liefert einen Speichertest, der die Speichervorrichtung 201 gründlich testen kann.
  • Ein Alter- und Verwendungsverfolgungsmodul 606 berechnet das chronologische Alter der Speichervorrichtung 201 und die Anzahl von Verwendungen. Einige Speichertechnologien verschlechtern sich mit der Zeit und der Verwendung. Durch ein Aufzeichnen dieser Faktoren ist ein zusätzlicher Eingang für das Codeaktualisierungszuweisungsmodul 610 verfügbar, um zu bestimmen, ob ein neuer ECC-Code installiert werden sollte.
  • Ein Speicherungsanwendungsverfolgungsmodul 608 ist schnittstellenmäßig mit der Vorrichtung oder dem System verbunden, in dem die Speichervorrichtung 201 installiert ist, wodurch es ermöglicht wird, daß die Verwendung bestimmt wird, der die Speichervorrichtung unterzogen wird. Wenn z. B. die Speichervorrichtung von einer Digitalkamera zu einer Musikvorrichtung, wie z. B. einem MP3-Abspielgerät, bewegt würde, würde das Speicherungsanwendungsverfolgungsmodul die Veränderung identifizieren und die Informationen aufzeichnen.
  • Ein Codezuweisungsmodul 610 ist angepaßt, um einen geeigneten ECC aus denen auszuwählen, die in der ECC-Bibliothek 612 verfügbar sind, und um den Ort des Teilers 206 zu verändern, wodurch die Menge der Redundanz eingestellt wird, um Informationen gemäß dem neu ausgewählten ECC unterzubringen. Das Codezuweisungsmodul betrachtet die Fehlerinformationen, die durch das Modul 602 geliefert werden, die Testergebnisse, die durch das Modul 604 bestimmt werden, das Speichervorrichtungsalter und Verwendungsinformationen von dem Modul 606 und die Anwendung (z. B. Videospiel, Digitalkamera, Musik-MP3-Abspielgerät, usw.), die durch das Modul 608 bestimmt wird. Angesichts dieser Eingabe wählt das Codezuweisungsmodul 610 einen geeigneten Redundanzcode aus.
  • Die ECC-Bibliothek 612 ist ähnlich wie die bei 510 aus Fig. 5. Paritätscodes 614, BCH-Codes 616 und Reed-Solomon-Codecs 618 oder andere ähnliche ECC- oder Redundanzcodes sind verfügbar.
  • Exemplarisches Verfahren der Redundanzzuteilung
  • Fig. 7 zeigt ein Verfahren 700, durch das die Unterteilung zwischen der Nutzlast und der Redundanz, die einer Datenstruktur 200 einer Speichervorrichtung zugeordnet ist, anfänglich bestimmt werden kann, sowie einen zugewiesenen ECC. Das Verfahren ist zusätzlich angepaßt, um die Unterteilung zwischen der Nutzlast und der Redundanz dynamisch zu verändern und eine Ersetzung eines ECC zu ermöglichen. Die Ersetzung kann ansprechend auf eine Veränderung der grundlegenden Fehlerrate der Speichervorrichtung, eine Veränderung der Verwendung, der die Speichervorrichtung unterzogen wird, eine Veränderung des Alters der Speichervorrichtung oder die Anzahl von durchgeführten Schreib-/Lese- Operationen oder eine andere Veränderung, die die Zuverlässigkeit der Speichervorrichtung beeinflußt, durchgeführt werden. In den meisten Fällen erhöht das Verfahren 700 die Redundanz auf eine Weise, die die Verwendung von stärkeren ECC-Codecs ermöglicht, wodurch die Nutzlebensdauer der Speichervorrichtung erweitert wird. In einigen Fällen können einzelne Blöcke in dem Verfahren weggelassen werden, wenn sie nicht notwendig sind, oder um einen schnelleren Betrieb zu ermöglichen.
  • Bei einem Block 702 bestimmt das Technologietypbestimmungsmodul 502 den Technologietyp der Speichervorrichtung. Die Technologie der Speichervorrichtung beeinflußt den zur Datensicherheit erforderlichen ECC.
  • Bei einem Block 704 führt das Speichervorrichtungsspeichertestmodul 504 einen Speichertest bei der Speichervorrichtung durch und zeichnet die Ergebnisse auf. Nach dem Speichertest werden alle Speicherorte mit einer nicht ausreichenden Zuverlässigkeit aus dem Adreßraum heraus abgebildet oder die Vorrichtung kann zurückgewiesen werden.
  • Bei einem Block 706 bestimmt das Verwendungsanwendungsbestimmungsmodul 506 die Verwendung, der die Speichervorrichtung unterzogen wird. Allgemein sind Daten, die Computerprogramminstruktionen umfassen, relativ intolerant gegenüber Fehlern, während Daten, die verwendet werden, um eine Audio- und/oder Videoausgabe zu unterstützen, bei einigen Anwendungen kleinere Fehler umfassen können und dennoch betriebsbereit sind.
  • Bei einem Block 708 wählt das Codezuweisungsmodul 508 einen ECC aus denen aus, die in der ECC-Bibliothek 510 verfügbar sind, bestimmt den Raum, den die Redundanz erfordert, um den ECC unterzubringen, und führt die geeignete Unterteilung des Speichers durch.
  • Bei einem Block 710 wird die Speichervorrichtung in einer Vorrichtung oder einem System, wie z. B. einer Kamera, einem MP3-Abspielgerät oder einer anderen Vorrichtung, installiert.
  • Bei einem Block 712 beginnt ein Betrieb der Speichervorrichtung. Bei einer typischen Anwendung beginnt der Betrieb der Speichervorrichtung, wenn die Vorrichtung, wie z. B. eine Digitalkamera, angeschaltet wird.
  • Bei einem Block 714 zeichnet das Fehlerverfolgungs-, Analyse und Aufzeichnungsmodul 602 alle Fehler, die durch die Datenspeichervorrichtung gemacht werden, sowie die Zeit ihres Auftretens auf.
  • Bei einem Block 716 testet das Eigentestmodul 604 die Speicherorte der Speichervorrichtung. Die Ergebnisse des Eigentestes werden zur späteren Verwendung aufgezeichnet.
  • Bei einem Block 718 aktualisiert und dokumentiert das Alter- und Verwendungsverfolgungsmodul 606 Daten, die der Zeit und der Verwendung zugeordnet sind. Dokumentierte Daten können folgendes umfassen: das Alter der Speichervorrichtung in Stunden, Tagen oder anderen Einheiten, die Verwendung der Vorrichtung, einschließlich der Anzahl von Stunden hochgefahrenen Betriebs und die Aktivität der Vorrichtung, einschließlich der Anzahl durchgeführter Lese- und Schreib-Operationen.
  • Bei einem Block 720 werden die Fehlerrateninformationen allgemein ausgewertet, um zu bestimmen, ob sich die Fehlerrate wesentlich erhöht hat oder die Anwendung, in der die Speichervorrichtung verwendet wird, sich verändert hat, und insbesondere, um zu bestimmen, ob ein anderer ECC erforderlich ist. Wenn die Fehlerrate allgemein konstant ist, wird die Speichervorrichtung bei Block 712 wiederverwendet. Wenn sich die Fehlerrate jenseits eines Schwellenwertes erhöht hat, wird der ECC bei Block 722 aktualisiert. Wenn sich die Fehlerrate jenseits einer verwaltbaren Rate erhöht hat, wird das Medium aus der Verwendung zurückgezogen.
  • Bei einem Block 722 wertet das Codeaktualisierungszuweisungsmodul 610 die gegenwärtige Redundanz aus und bestimmt, ob eine geeignetere Redundanz statt derselben aufgrund sich verändernder Bedingungen eingesetzt werden sollte. Falls dies der Fall ist, wird ein ECC mit einer geeigneten Stärke ausgewählt. Der Teiler zwischen der Nutzlast und der Redundanz in der Datenstruktur der Speichervorrichtung wird bewegt, um zu der ausreichenden Redundanz zu führen, um die Verwendung des neu ausgewählten ECC zu ermöglichen.
  • Bei einem Block 724 werden, falls nötig, defekte Speicherorte aus dem Adreßraum der Vorrichtung heraus abgebildet.
  • Schlußfolgerung
  • Unter Verwendung einer Fehlerverfolgung, eines Speichertestens und anderer Einrichtungen kann die Geeignetheit des Fehlerkorrekturcodes, der in der Redundanz verwendet wird, die in einer Datenstruktur definiert ist, die einer Speichervorrichtung zugeordnet ist, ausgewertet werden. Wenn ein Anstieg der Fehlerrate angezeigt wird, kann die Datenstruktur dynamisch verändert werden, um einen Speicher zwischen Nutzlast und Redundanz neu zuzuteilen. Der Speicherraum, der der Nutzlast gewidmet ist, kann z. B. gesenkt werden, wobei der Speicherraum, der der Redundanz gewidmet ist, erhöht wird, wodurch die Ersetzung durch einen robusteren Fehlerkorrekturcode ermöglicht wird.
  • Obwohl die Erfindung in einer Sprache beschrieben wurde, die spezifisch für Strukturmerkmale und/oder Methodikschritte ist, wird darauf verwiesen, daß die Erfindung, die in den beigefügten Ansprüchen definiert ist, nicht notwendigerweise auf die spezifischen hierin beschriebenen Merkmale oder Schritte beschränkt ist. Vielmehr sind die spezifischen Merkmale und Schritte als bevorzugte Formen der Implementierung der beanspruchten Erfindung offenbart.

Claims (22)

1. Datenstruktur mit folgenden Merkmalen:
einer Nutzlast (102);
einer Redundanz (104); und
einem Teiler (106) zwischen der Nutzlast und der Redundanz, wobei der Teiler von einem ersten Ort, der ein erstes Verhältnis der Nutzlast (102) zu der Redundanz (104) liefert, zu einem zweiten Ort, der ein zweites Verhältnis der Nutzlast zu der Redundanz (104) liefert, bewegbar ist.
2. Datenstruktur gemäß Anspruch 1, bei der die Redundanz einen ersten Fehlerkorrekturcode, wenn der Teiler an dem ersten Ort (106) ist, und einen zweiter Fehlerkorrekturcode enthält, wenn der Teiler an dem zweiten Ort (108) ist.
3. Verfahren mit folgenden Schritten:
Zuordnen eines anfänglichen Fehlerkorrekturcodes (616) zu einer Redundanz, die in einer Datenspeichervorrichtung (201) definiert ist; und
Ersetzen des anfänglichen Fehlerkorrekturcodes (616) durch einen aktualisierten Fehlerkorrekturcode (618).
4. Verfahren gemäß Anspruch 3, das zusätzlich ein Bewegen eines Teilers (106) aufweist, der zwischen der Redundanz (104) und der Nutzlast (102) definiert ist, um einen Raum zu liefern, der durch den aktualisierten Fehlerkorrekturcode (618) in der Redundanz erfordert wird.
5. Verfahren gemäß Anspruch 3 oder 4, das zusätzlich ein Neuorganisieren eines Adreßraums aufweist, der durch eine Nutzlast (102) und die Redundanz (104) gemeinschaftlich verwendet wird, um einen Raum zu liefern, der durch den aktualisierten Fehlerkorrekturcode (618) in der Redundanz erfordert wird.
6. Verfahren gemäß einem der Ansprüche 3 bis 5, das zusätzlich ein Durchführen eines Speichertests (716) hinsichtlich der Datenspeichervorrichtung (201) aufweist, um zu bestimmen (720), ob der anfängliche Fehlerkorrekturcode ausreichend stark ist.
7. Verfahren gemäß einem der Ansprüche 3 bis 6, das zusätzlich ein Verfolgen von Fehlern aufweist, die durch die Datenspeichervorrichtung (201) gemacht werden, um zu bestimmen, ob der anfängliche Fehlerkorrekturcode ausreichend stark ist.
8. Verfahren gemäß einem der Ansprüche 3 bis 7, das zusätzlich ein Verfolgen der Zeit und der Verwendung der Datenspeichervorrichtung (201) aufweist, um zu bestimmen, ob der anfängliche Fehlerkorrekturcode ausreichend stark ist.
9. Verfahren mit folgenden Schritten:
Definieren einer Nutzlast (102) und einer Redundanz (104) in einer Speichervorrichtung (201), wobei die Redundanz zu der Nutzlast plus der Redundanz ein Verhältnis definiert; und
dynamisches Verändern des Verhältnisses, um eine Menge der Redundanz (104) zu verändern.
10. Verfahren gemäß Anspruch 9, das zusätzlich folgenden Schritt aufweist:
Durchführen eines Speichertests (716) bezüglich der Datenspeichervorrichtung (201), um zu bestimmen, ob das Verhältnis zu einer ausreichenden Redundanz führt.
11. Verfahren gemäß Anspruch 9 oder 10, das zusätzlich folgenden Schritt aufweist:
Verfolgen von Fehlern, die durch die Datenspeichervorrichtung (201) gemacht werden, um zu bestimmen, ob das Verhältnis zu einer ausreichenden Redundanz führt.
12. Verfahren gemäß einem der Ansprüche 9 bis 11, das zusätzlich folgenden Schritt aufweist:
Verfolgen der Zeit und der Verwendung der Datenspeichervorrichtung (201), um zu bestimmen, ob das Verhältnis zu einer ausreichenden Redundanz führt.
13. System mit folgenden Merkmalen:
einem Aktualisierungs-Fehlerkorrekturcode-(ECC-) Zuweisungsmodul (600), um einen aktualisierten Fehlerkorrekturcode (616) zuzuweisen, um einen anfänglichen Fehlerkorrekturcode (614) ansprechend auf eine veränderte Fehlerrate zu ersetzen; und
einer ECC-Bibliothek (612), die zumindest zwei ECCs enthält, aus denen das Aktualisierungs-Fehlerkorrekturzuweisungsmodul (600) auswählen kann.
14. System gemäß Anspruch 13, das zusätzlich ein Anfangs- Fehlerkorrekturcodezuweisungsmodul (500) aufweist, um den anfänglichen Fehlerkorrekturcode ansprechend. auf eine anfängliche Fehlerrate zuzuweisen.
15. System gemäß Anspruch 14, das zusätzlich ein Technologietypbestimmungsmodul (502) aufweist, um eine Technologie einer Speichervorrichtung (201) an das Anfangs- Fehlerkorrekturcodezuweisungsmodul (500) zu berichten, so daß der anfängliche Fehlerkorrekturcode geeignet ausgewählt wird.
16. System gemäß einem der Ansprüche 13 bis 15, das zusätzlich ein Speichervorrichtungsspeichertestmodul (504) aufweist, um einen Speichertest hinsichtlich einer Speichervorrichtung (201) durchzuführen und dem Aktualisierungs-Fehlerkorrekturcodezuweisungsmodul (600) zu berichten.
17. System gemäß einem der Ansprüche 13 bis 16, das zusätzlich ein Anwendungsbestimmungsmodul (506) aufweist, um eine Anwendung zu bestimmen, der eine Speichervorrichtung (201) unterzogen wird, und dem Aktualisierungs-Fehlerkorrekturcodezuweisungsmodul (600) zu berichten.
18. System gemäß einem der Ansprüche 13 bis 17, das zusätzlich ein Fehlerverfolgungs-, Aufzeichnungs- und Analysemodul (602) aufweist, um Informationen über Fehler, die durch eine Speichervorrichtung (201) gemacht werden, an das Aktualisierungs-Fehlerkorrekturcodezuweisungsmodul zu berichten.
19. System gemäß einem der Ansprüche 13 bis 18, das zusätzlich ein Alter- und Verwendungsverfolgungsmodul (606) aufweist, um Informationen über ein Alter und einen Verwendungspegel einer Speichervorrichtung (201) an das Aktualisierungs-Fehlerkorrekturcodezuweisungsmodul zu berichten.
20. System mit folgenden Merkmalen:
einer ECC-Bibliothek (612), die zumindest zwei Fehlerkorrekturcodes enthält;
einem Anfangs-Fehlerkorrekturcodezuweisungsmodul (500), um einen anfänglichen Fehlerkorrekturcode aus der ECC-Bibliothek zuzuweisen, der geeignet für eine zu erwartende anfängliche Fehlerrate ist;
einem Technologietypbestimmungsmodul (502), um eine Technologie einer Speichervorrichtung zu bestimmen und die Technologie an das Anfangs-Fehlerkorrekturcodezuweisungsmodul zu berichten;
einem Anwendungsbestimmungsmodul (506), um eine Anwendung zu bestimmen, der die Speichervorrichtung (201) unterzogen wird, und an das Anfangs-Fehlerkorrekturcodezuweisungsmodul zu berichten;
einem Aktualisierungs-Fehlerkorrekturcodezuweisungsmodul (600), um einen geeigneten aktualisierten Fehlerkorrekturcode aus der ECC-Bibliothek zuzuweisen, ansprechend auf eine veränderte Fehlerrate ist;
einem Speicherungsvorrichtungsspeichertestmodul (504), um einen Speichertest hinsichtlich der Speichervorrichtung durchzuführen und an das Aktualisierungs- Fehlerkorrekturcodezuweisungsmodul zu berichten, so daß eine Entscheidung, um einen aktualisierten Fehlerkorrekturcode zuzuweisen, durchgeführt werden kann;
einem Fehlerverfolgungs-, Aufzeichnungs- und Analysemodul (602), um Informationen über Fehler, die durch die Speichervorrichtung (201) gemacht werden, an das Aktualisierungs-Fehlerkorrekturcodezuweisungsmodul zu berichten, so daß eine Entscheidung, um einen aktualisierten Fehlerkorrekturcode zuzuweisen, durchgeführt werden kann;
einem Alter- und Verwendungsverfolgungsmodul (606), um Informationen über das Alter und den Verwendungspegel der Speichervorrichtung (201) an das Aktualisierungs- Fehlerkorrekturcodezuweisungsmodul zu berichten, so daß eine Entscheidung, um einen aktualisierten Fehlerkorrekturcode zuzuweisen, durchgeführt werden kann; und
einem Anwendungsverfolgungsmodul, um Veränderungen der Anwendung, in der das Speichermodul (201) verwendet wird, an das Aktualisierungs-Fehlerkorrekturcodezuweisungsmodul zu berichten, so daß eine Entscheidung, um einen aktualisierten Fehlerkorrekturcode zuzuweisen, durchgeführt werden kann.
21. Computerlesbares Medium, das auf demselben computerausführbare Instruktionen aufweist, die, wenn sie ausgeführt werden, folgende Schritte durchführen:
Zuordnen (708) eines anfänglichen Fehlerkorrekturcodes zu einer Redundanz (204), die in einer Datenspeicherungsvorrichtung (201) definiert ist;
Zuordnen (722) eines aktualisierten Fehlerkorrekturcodes zu der Redundanz ansprechend auf eine Veränderung einer Fehlerrate, die der Datenspeicherungsvorrichtung (201) zugeordnet ist; und
Bewegen eines Teilers (206), der zwischen der Redundanz und einer Nutzlast (202) in der Datenspeicherungsvorrichtung definiert ist, um einen Raum zu schaffen, der durch Redundanzdaten, die dem aktualisierten Fehlerkorrekturcode zugeordnet sind, benötigt wird.
22. Computerlesbares Medium, das auf demselben computerausführbare Instruktionen aufweist, die, wenn sie ausgeführt werden, folgende Schritte durchführen:
Überwachen einer Fehlerrate einer Speicherungsvorrichtung (201); und
dynamisches Verändern eines Verhältnisses einer Redundanz zu einer Nutzlast, um einen Redundanzpegel zu liefern, der geeignet für die Fehlerrate ist.
DE10233648A 2001-08-16 2002-07-24 Dynamischer Fehlerkorrekturcode mit variabler Länge Withdrawn DE10233648A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/931,776 US6961890B2 (en) 2001-08-16 2001-08-16 Dynamic variable-length error correction code

Publications (1)

Publication Number Publication Date
DE10233648A1 true DE10233648A1 (de) 2003-03-06

Family

ID=25461330

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10233648A Withdrawn DE10233648A1 (de) 2001-08-16 2002-07-24 Dynamischer Fehlerkorrekturcode mit variabler Länge

Country Status (3)

Country Link
US (1) US6961890B2 (de)
JP (1) JP2003131954A (de)
DE (1) DE10233648A1 (de)

Families Citing this family (215)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7068729B2 (en) * 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6725393B1 (en) * 2000-11-06 2004-04-20 Hewlett-Packard Development Company, L.P. System, machine, and method for maintenance of mirrored datasets through surrogate writes during storage-area network transients
US9240810B2 (en) * 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
EP2355360B1 (de) 2002-10-05 2020-08-05 QUALCOMM Incorporated Systematische kodierung und dekodierung von kettenreaktionskoden
US20040083334A1 (en) * 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for managing the integrity of data in non-volatile memory system
US8412879B2 (en) * 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
US7559004B1 (en) 2003-10-01 2009-07-07 Sandisk Corporation Dynamic redundant area configuration in a non-volatile memory system
CN101834610B (zh) 2003-10-06 2013-01-30 数字方敦股份有限公司 通过通信信道接收从源发射的数据的方法和装置
US7325157B2 (en) * 2003-11-03 2008-01-29 Samsung Electronics Co., Ltd Magnetic memory devices having selective error encoding capability based on fault probabilities
US7865809B1 (en) 2004-03-11 2011-01-04 Super Talent Electronics, Inc. Data error detection and correction in non-volatile memory devices
US7210077B2 (en) * 2004-01-29 2007-04-24 Hewlett-Packard Development Company, L.P. System and method for configuring a solid-state storage device with error correction coding
JP4971144B2 (ja) 2004-05-07 2012-07-11 デジタル ファウンテン, インコーポレイテッド ファイルダウンロードおよびストリーミングのシステム
EP1776699A1 (de) * 2004-08-02 2007-04-25 Koninklijke Philips Electronics N.V. Datenspeicher und wiedergabegerät
FR2875352B1 (fr) * 2004-09-10 2007-05-11 St Microelectronics Sa Procede de detection et de correction d'erreurs pour une memoire et circuit integre correspondant
DE102005005631B4 (de) 2005-02-08 2022-08-11 Marcus Janke Speicheranordnung
ITMI20050780A1 (it) * 2005-04-29 2006-10-30 St Microelectronics Srl Metodo di memorizzazione di un array di celle di memoria non-volatile con codice di correzione di errore e relativo dispositivo
JP4936271B2 (ja) * 2006-01-20 2012-05-23 株式会社メガチップス 半導体記憶装置
CN101686107B (zh) 2006-02-13 2014-08-13 数字方敦股份有限公司 使用可变fec开销和保护周期的流送和缓冲
US9270414B2 (en) * 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US7810017B2 (en) * 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
US7685494B1 (en) 2006-05-08 2010-03-23 Marvell International, Ltd. Error correction coding for varying signal-to-noise ratio channels
US8209580B1 (en) * 2006-05-08 2012-06-26 Marvell International Ltd. Error correction coding for varying signal-to-noise ratio channels
US7971129B2 (en) * 2006-05-10 2011-06-28 Digital Fountain, Inc. Code generator and decoder for communications systems operating using hybrid codes to allow for multiple efficient users of the communications systems
JP5183625B2 (ja) * 2006-05-12 2013-04-17 アップル インコーポレイテッド 適応能力を有するメモリ素子
US20070279781A1 (en) * 2006-05-31 2007-12-06 Toshiba America Information Systems, Inc. Channel training method and apparatus
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9178535B2 (en) * 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US20100211690A1 (en) * 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9386064B2 (en) * 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US8024639B2 (en) * 2006-06-23 2011-09-20 Schweitzer Engineering Laboratories, Inc. Software and methods to detect and correct data structure
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US7958433B1 (en) 2006-11-30 2011-06-07 Marvell International Ltd. Methods and systems for storing data in memory using zoning
US8015473B2 (en) 2006-12-19 2011-09-06 Intel Corporation Method, system, and apparatus for ECC protection of small data structures
US8122323B2 (en) * 2007-03-08 2012-02-21 Intel Corporation Method, apparatus, and system for dynamic ECC code rate adjustment
US7958301B2 (en) * 2007-04-10 2011-06-07 Marvell World Trade Ltd. Memory controller and method for memory pages with dynamically configurable bits per cell
US20080288712A1 (en) * 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
AU2008298602A1 (en) * 2007-09-12 2009-03-19 Digital Fountain, Inc. Generating and communicating source identification information to enable reliable communications
WO2009037697A2 (en) 2007-09-20 2009-03-26 Densbits Technologies Ltd. Improved systems and methods for determining logical values of coupled flash memory cells
WO2009095902A2 (en) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
WO2009053961A2 (en) * 2007-10-25 2009-04-30 Densbits Technologies Ltd. Systems and methods for multiple coding rates in flash devices
US20090125790A1 (en) * 2007-11-13 2009-05-14 Mcm Portfolio Llc Method and Apparatus of Automatically Selecting Error Correction Algorithms by a NAND Flash Controller
US8429492B2 (en) * 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
US8453022B2 (en) 2007-12-05 2013-05-28 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
US8335977B2 (en) 2007-12-05 2012-12-18 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells
US8607128B2 (en) 2007-12-05 2013-12-10 Densbits Technologies Ltd. Low power chien-search based BCH/RS decoding system for flash memory, mobile communications devices and other applications
US8276051B2 (en) 2007-12-12 2012-09-25 Densbits Technologies Ltd. Chien-search system employing a clock-gating scheme to save power for error correction decoder and other applications
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
WO2009078006A2 (en) 2007-12-18 2009-06-25 Densbits Technologies Ltd. Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
KR101497073B1 (ko) * 2008-02-29 2015-03-02 삼성전자주식회사 메모리 셀에 저장되는 데이터의 비트 수를 결정하는 장치
US8972472B2 (en) 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US8386868B2 (en) 2008-04-16 2013-02-26 Sandisk Il, Ltd. Using programming-time information to support error correction
US8321757B2 (en) * 2008-06-22 2012-11-27 Sandisk Il Ltd. Method and apparatus for error correction
US8332725B2 (en) 2008-08-20 2012-12-11 Densbits Technologies Ltd. Reprogramming non volatile memory portions
US8949684B1 (en) * 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8804821B2 (en) * 2008-09-26 2014-08-12 Microsoft Corporation Adaptive video processing of an interactive environment
US8243117B2 (en) * 2008-09-26 2012-08-14 Microsoft Corporation Processing aspects of a video scene
KR20100050789A (ko) * 2008-11-06 2010-05-14 삼성전자주식회사 메모리 장치 및 그것을 포함하는 메모리 시스템
TWI396202B (zh) * 2008-11-14 2013-05-11 Phison Electronics Corp 錯誤校正控制器及其快閃記憶體晶片系統與錯誤校正方法
US8473815B2 (en) * 2008-12-22 2013-06-25 Industrial Technology Research Institute Methods and systems of a flash memory controller and an error correction code (ECC) controller using variable-length segmented ECC data
US8555143B2 (en) * 2008-12-22 2013-10-08 Industrial Technology Research Institute Flash memory controller and the method thereof
US8341496B2 (en) * 2009-02-06 2012-12-25 Microsoft Corporation Redundant data in storage medium
US9281847B2 (en) * 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
KR20100104623A (ko) * 2009-03-18 2010-09-29 삼성전자주식회사 데이터 처리 시스템 및 그것의 부호율 제어 스킴
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8321775B2 (en) * 2009-04-21 2012-11-27 Micron Technology, Inc. Non-volatile memory with extended error correction protection
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
CN101882472A (zh) * 2009-05-05 2010-11-10 建兴电子科技股份有限公司 具可变动错误校正码机制的快闪储存装置及其控制方法
FR2945393B1 (fr) * 2009-05-07 2015-09-25 Commissariat Energie Atomique Procede de protection de circuits electroniques, dispositif et systeme mettant en oeuvre le procede
US8566510B2 (en) 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US8321727B2 (en) * 2009-06-29 2012-11-27 Sandisk Technologies Inc. System and method responsive to a rate of change of a performance parameter of a memory
JP5668279B2 (ja) * 2009-08-06 2015-02-12 ソニー株式会社 不揮発性ランダムアクセスメモリおよび不揮発性メモリシステム
EP2299362A3 (de) * 2009-08-18 2011-05-04 ViaSat, Inc. Vorwärtsfehlerkorrektur für Speicher
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US8868821B2 (en) 2009-08-26 2014-10-21 Densbits Technologies Ltd. Systems and methods for pre-equalization and code design for a flash memory
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8305812B2 (en) 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US20110096828A1 (en) * 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US20110072333A1 (en) * 2009-09-24 2011-03-24 Innostor Technology Corporation Control method for flash memory based on variable length ecc
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US8626988B2 (en) 2009-11-19 2014-01-07 Densbits Technologies Ltd. System and method for uncoded bit error rate equalization via interleaving
US8176235B2 (en) 2009-12-04 2012-05-08 International Business Machines Corporation Non-volatile memories with enhanced write performance and endurance
US8176234B2 (en) 2009-12-04 2012-05-08 International Business Machines Corporation Multi-write coding of non-volatile memories
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
US8607124B2 (en) 2009-12-24 2013-12-10 Densbits Technologies Ltd. System and method for setting a flash memory cell read threshold
US8327226B2 (en) * 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
US8341502B2 (en) 2010-02-28 2012-12-25 Densbits Technologies Ltd. System and method for multi-dimensional decoding
US8527840B2 (en) 2010-04-06 2013-09-03 Densbits Technologies Ltd. System and method for restoring damaged data programmed on a flash device
US8516274B2 (en) 2010-04-06 2013-08-20 Densbits Technologies Ltd. Method, system and medium for analog encryption in a flash memory
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US20110252289A1 (en) * 2010-04-08 2011-10-13 Seagate Technology Llc Adjusting storage device parameters based on reliability sensing
US9183134B2 (en) 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
US9021177B2 (en) 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US8799747B2 (en) * 2010-06-03 2014-08-05 Seagate Technology Llc Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
US8533550B2 (en) * 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
US8539311B2 (en) 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US8510639B2 (en) 2010-07-01 2013-08-13 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US20120008414A1 (en) 2010-07-06 2012-01-12 Michael Katz Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US9319448B2 (en) 2010-08-10 2016-04-19 Qualcomm Incorporated Trick modes for network streaming of coded multimedia data
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US8508995B2 (en) 2010-09-15 2013-08-13 Densbits Technologies Ltd. System and method for adjusting read voltage thresholds in memories
US8775868B2 (en) * 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US9229808B2 (en) * 2010-10-01 2016-01-05 Pure Storage, Inc. Reconstruct reads in a raid array with dynamic geometries
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
CN103329103B (zh) * 2010-10-27 2017-04-05 希捷科技有限公司 使用用于基于闪存的数据存储的自适应ecc技术的方法和设备
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
JP5980798B2 (ja) 2010-12-01 2016-08-31 シーゲイト テクノロジー エルエルシーSeagate Technology LLC 独立したシリコン素子の動的な上位レベルの冗長モード管理
JP5720210B2 (ja) * 2010-12-02 2015-05-20 富士通株式会社 アクセス制御装置、誤り訂正制御方法およびストレージ装置
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
CN102081970B (zh) * 2010-12-31 2012-12-19 成都市华为赛门铁克科技有限公司 纠错处理的方法、装置及固态硬盘设备
TW201241615A (en) 2011-01-18 2012-10-16 Lsi Corp Higher-level redundancy information computation
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US10079068B2 (en) 2011-02-23 2018-09-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Devices and method for wear estimation based memory management
US8595597B2 (en) 2011-03-03 2013-11-26 Intel Corporation Adjustable programming speed for NAND memory devices
US8693258B2 (en) 2011-03-17 2014-04-08 Densbits Technologies Ltd. Obtaining soft information using a hard interface
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8667211B2 (en) 2011-06-01 2014-03-04 Densbits Technologies Ltd. System and method for managing a non-volatile memory
US8572466B2 (en) * 2011-06-06 2013-10-29 Micron Technology, Inc. Apparatuses, systems, devices, and methods of replacing at least partially non-functional portions of memory
JP5764392B2 (ja) * 2011-06-13 2015-08-19 株式会社メガチップス メモリコントローラ
US8719648B2 (en) 2011-07-27 2014-05-06 International Business Machines Corporation Interleaving of memory repair data compression and fuse programming operations in single fusebay architecture
US8588003B1 (en) 2011-08-01 2013-11-19 Densbits Technologies Ltd. System, method and computer program product for programming and for recovering from a power failure
US8467260B2 (en) 2011-08-05 2013-06-18 International Business Machines Corporation Structure and method for storing multiple repair pass data into a fusebay
US8484543B2 (en) 2011-08-08 2013-07-09 International Business Machines Corporation Fusebay controller structure, system, and method
US8902653B2 (en) * 2011-08-12 2014-12-02 Micron Technology, Inc. Memory devices and configuration methods for a memory device
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US8537627B2 (en) 2011-09-01 2013-09-17 International Business Machines Corporation Determining fusebay storage element usage
US8553468B2 (en) 2011-09-21 2013-10-08 Densbits Technologies Ltd. System and method for managing erase operations in a non-volatile memory
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US9189329B1 (en) * 2011-10-13 2015-11-17 Marvell International Ltd. Generating error correcting code (ECC) data using an ECC corresponding to an identified ECC protection level
US8959417B2 (en) 2011-11-23 2015-02-17 Marvell World Trade Ltd. Providing low-latency error correcting code capability for memory
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
TW201337936A (zh) * 2012-03-06 2013-09-16 Innodisk Corp 可提升資料校正能力之快閃記憶體裝置
US8862967B2 (en) * 2012-03-15 2014-10-14 Sandisk Technologies Inc. Statistical distribution based variable-bit error correction coding
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8898545B2 (en) * 2012-05-18 2014-11-25 Hitachi, Ltd. Semiconductor storage device and control method of nonvolatile memory
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US8910017B2 (en) 2012-07-02 2014-12-09 Sandisk Technologies Inc. Flash memory with random partition
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
CN102969028A (zh) * 2012-10-18 2013-03-13 记忆科技(深圳)有限公司 一种ecc动态调整方法、系统及闪存
KR102002925B1 (ko) 2012-11-01 2019-07-23 삼성전자주식회사 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9009562B2 (en) 2013-01-30 2015-04-14 Hewlett-Packard Development Company, L.P. Providing memory protection using a modified error correction code
US8918700B2 (en) * 2013-02-11 2014-12-23 Arm Limited Apparatus and method for controlling access to a memory device
US9235468B2 (en) * 2013-04-12 2016-01-12 Qualcomm Incorporated Systems and methods to improve the reliability and lifespan of flash memory
CN103218271B (zh) * 2013-04-18 2015-09-09 华为技术有限公司 一种数据纠错方法及装置
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9152488B2 (en) * 2013-06-25 2015-10-06 Sandisk Technologies Inc. Storage module and low-complexity methods for assessing the health of a flash memory device
US9312886B2 (en) 2013-09-20 2016-04-12 Seagate Technology Llc Storage device with multiple coding redundancies
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
JP5733766B2 (ja) * 2013-11-07 2015-06-10 国立大学法人 東京大学 データ入出力制御装置および半導体記憶装置システム
US9280413B2 (en) * 2013-12-12 2016-03-08 Talkatone, Llc Redundant encoding
US9282133B2 (en) 2013-12-12 2016-03-08 Ooma, Inc. Communicating control information within a real-time stream
US20170269841A1 (en) * 2013-12-20 2017-09-21 Empire Technology Development Llc Data storage in degraded solid state memory
KR102157286B1 (ko) 2013-12-27 2020-09-17 삼성전자주식회사 무선 통신 시스템에서 전송률을 제어하기 위한 방법 및 장치
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US9685242B2 (en) 2014-03-11 2017-06-20 Kabushiki Kaisha Toshiba Memory system
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9575846B2 (en) 2014-07-24 2017-02-21 At&T Intellectual Property I, L.P. Distributed storage of data
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US10983859B2 (en) * 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9513990B2 (en) 2014-09-23 2016-12-06 Empire Technology Development Llc Memory controller with read unit length module
WO2016051599A1 (ja) * 2014-10-03 2016-04-07 株式会社日立製作所 メモリコントローラ及びデータ制御方法
US10229055B2 (en) * 2014-10-29 2019-03-12 Seagate Technology Llc Adaptive spanning control
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US20160299812A1 (en) * 2015-04-08 2016-10-13 Sandisk Enterprise Ip Llc Device-Specific Variable Error Correction
US9768808B2 (en) 2015-04-08 2017-09-19 Sandisk Technologies Llc Method for modifying device-specific variable error correction settings
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
JP6158265B2 (ja) * 2015-09-16 2017-07-05 株式会社東芝 キャッシュメモリシステム
US10063261B1 (en) * 2015-10-13 2018-08-28 Sorenson Ip Holdings Llc Communication endpoints and related methods for forward error correction of packetized data
TWI569279B (zh) 2015-10-15 2017-02-01 財團法人工業技術研究院 記憶體保護裝置與方法
KR20170045803A (ko) * 2015-10-20 2017-04-28 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10346232B2 (en) 2017-08-16 2019-07-09 Western Digital Technologies, Inc. Non-volatile storage with failure prediction
KR20190052754A (ko) * 2017-11-09 2019-05-17 삼성전자주식회사 적응적 온-다이 에러 체크 및 정정을 위한 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US20190243566A1 (en) * 2018-02-05 2019-08-08 Infineon Technologies Ag Memory controller, memory system, and method of using a memory device
US10897273B2 (en) 2018-06-27 2021-01-19 Western Digital Technologies, Inc. System-level error correction coding allocation based on device population data integrity sharing
US10802908B2 (en) 2018-07-31 2020-10-13 Western Digital Technologies, Inc. Data dependent allocation of error correction resources
US11042432B1 (en) * 2019-12-20 2021-06-22 Western Digital Technologies, Inc. Data storage device with dynamic stripe length manager

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1235189A (en) * 1985-01-14 1988-04-12 Haruhiko Akiyama Error correction encoding system
US5912907A (en) * 1993-11-22 1999-06-15 Thomson Consumer Electronics, Inc. Satellite receiver code rate switching apparatus
US5600663A (en) * 1994-11-16 1997-02-04 Lucent Technologies Inc. Adaptive forward error correction system
KR0153938B1 (ko) * 1995-12-21 1998-11-16 양승택 에이티엠 계층 수신 운용 및 유지 보수 셀 처리 장치
US5699365A (en) * 1996-03-27 1997-12-16 Motorola, Inc. Apparatus and method for adaptive forward error correction in data communications
US6477669B1 (en) * 1997-07-15 2002-11-05 Comsat Corporation Method and apparatus for adaptive control of forward error correction codes
US6651213B2 (en) * 2001-03-19 2003-11-18 International Business Machines Corporation Programmable multi-level track layout method and system for optimizing ECC redundancy in data storage devices

Also Published As

Publication number Publication date
US6961890B2 (en) 2005-11-01
US20030037299A1 (en) 2003-02-20
JP2003131954A (ja) 2003-05-09

Similar Documents

Publication Publication Date Title
DE10233648A1 (de) Dynamischer Fehlerkorrekturcode mit variabler Länge
DE602004011097T2 (de) Flash-speicherdatenkorrektur- und scrub-techniken
DE2806024C2 (de)
DE69729771T2 (de) Integrierte Schaltung mit einer eingebauten Selbsttestanordnung
DE102006038033A1 (de) Speicherarray-Architektur und Verfahren zum schnellen Messen von einer Verteilung
DE19722414B4 (de) Verfahren und Vorrichtung zum Testen eines Halbleiterspeichers
CN108682442A (zh) 一种不同封装闪存芯片在线测试和分类方法及测试系统
DE2722124A1 (de) Anordnung zum feststellen des prioritaetsranges in einem dv-system
DE10342275A1 (de) System und Verfahren zum Testen eines oder mehrerer Halbleiterstücke auf einem Halbleiterwafer
DE112021002268T5 (de) Neuronales Regressionsnetzwerk zum Identifizieren von Schwellenspannungen, die beim Lesen von Flash-Speichervorrichtungen zu verwenden sind
DE102006036070A1 (de) Ladungsfallenspeichervorrichtung und Verfahren für deren Herstellung und Betrieb
DE19680641C2 (de) Fehlerspeicher-Analysiervorrichtung in einem Halbleiterspeichertestsystem
DE10250875B4 (de) Vorrichtung und Verfahren zum Konfigurieren einer integrierten Schaltung mit eingebettetem Speicher
DE10319702A1 (de) Verfahren zur Berechnung eines Halbleiterausbeuteverlustes
DE102015105414B4 (de) Bearbeiten eines Zielspeichers
DE112005001496T5 (de) Prüfvorrichtung und Prüfverfahren
DE112021007027T5 (de) Verfahren und vorrichtung zum durchführen eines lesevorgangs von einem flash-speicher unter verwendung vorhergesagter retentions- und lesestörungs- kompensierter schwellenspannungsverschiebungs-versatzwerte
DE112018000884T5 (de) Verfahren und system zur verarbeitung und analyse von nutzererlebnisereignissen
DE19841005B4 (de) Halbleiterplattenlaufwerk und Verfahren zum Erzeugen einer physikalisch/logischen Adressenumsetzungstabelle
DE112020003062T5 (de) Dynamische anpassung einer logischen speicherkapazität für speicherlaufwerke
DE112006002519T5 (de) Prüfvorrichtung, Prüfverfahren, Analysevorrichtung und -programm
DE19959779A1 (de) Vorrichtung zum Erhalten von Fehlverhaltensinformationen sowie diese verwendende Halbleiterspeicher-Prüfvorrichtung
DE19952357A1 (de) Schreibvorrichtung für eine nicht-flüchtige Halbleiter-Speichervorrichtung
EP1665287B1 (de) Verwaltung defekter bl cke in flash-speichern
DE102007041691A1 (de) Datenträgermigrationsprogramm, -verfahren, und -system

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8139 Disposal/non-payment of the annual fee