DE102004063571A1 - System und Verfahren zum Konfigurieren einer Festkörperspeicherungsvorrichtung mit Fehlerkorrekturcodierung - Google Patents

System und Verfahren zum Konfigurieren einer Festkörperspeicherungsvorrichtung mit Fehlerkorrekturcodierung Download PDF

Info

Publication number
DE102004063571A1
DE102004063571A1 DE102004063571A DE102004063571A DE102004063571A1 DE 102004063571 A1 DE102004063571 A1 DE 102004063571A1 DE 102004063571 A DE102004063571 A DE 102004063571A DE 102004063571 A DE102004063571 A DE 102004063571A DE 102004063571 A1 DE102004063571 A1 DE 102004063571A1
Authority
DE
Germany
Prior art keywords
storage device
solid state
error correction
state storage
ecc
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
DE102004063571A
Other languages
English (en)
Inventor
Sarah Brandenberger
Terrel Munden
Jonathan Jedwab
James Davis
David Banks
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 Development Co LP
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 Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE102004063571A1 publication Critical patent/DE102004063571A1/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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test

Landscapes

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

Abstract

Ein System zum Konfigurieren von Festkörperspeicherungsvorrichtungen weist eine Festkörperspeicherungsvorrichtung und ein Fehlerkorrekturcode-Auswahlsystem (ECC-Auswahlsystem) auf. Das ECC-Auswahlsystem ist konfiguriert, um automatisch einen Satz eines Fehlerkorrekturcodes, basierend auf einer Fehlerrate der Speicherungsvorrichtung, auszuwählen. Das ECC-Auswahlsystem ist ferner konfiguriert, um den ausgewählten Satz des Fehlerkorrekturcodes in der Festkörperspeicherungsvorrichtung zu installieren.

Description

  • Ausführungsbeispiele der vorliegenden Erfindung beziehen sich im Allgemeinen auf Datenspeicherungsvorrichtungen und insbesondere auf Systeme und Verfahren zum Konfigurieren von Festkörperspeicherungsvorrichtungen mit einer Fehlerkorrekturcodierung.
  • Eine typische Festkörperspeicherungsvorrichtung weist eines oder mehrere Arrays von Speicherzellen zum Speichern von Daten auf. Existierende Halbleitertechniken schaffen flüchtige Festkörperspeicherungsvorrichtungen, die geeignet sind zum relativ kurzzeitigen Speichern von Daten, wie z. B. einen dynamischen Direktzugriffsspeicher (DRAM; DRAM = Dynamic Random Access Memory), oder Vorrichtungen für eine relativ gesehen längere Speicherung von Daten, wie z. B. einen statischen Direktzugriffsspeicher (SDRAM) oder einen nichtflüchtigen Flashspeicher und eine elektrisch löschbare, programmierbare Nur-Lese-Speicher-Vorrichtung (EEPROM).
  • Eine magnetoresistive Speicherungsvorrichtung wurde als ein neuer Typ von nichtflüchtiger Festkörperspeicherungsvorrichtung entwickelt. Die magnetoresistive Festkörperspeicherungsvorrichtung ist ebenfalls bekannt als eine magnetische Direktzugriffsspeichervorrichtung (MRAM-Vorrichtung). MRAM-Vorrichtungen weisen einen relativ niedrigen Leistungsverbrauch und relativ schnelle Zugriffszeiten auf, insbesondere für Datenschreiboperationen, die MRAM-Vorrichtungen ideal geeignet für sowohl Kurzzeit- als auch Langzeit-Speicherungsanwendungen machen.
  • Ein Problem entsteht insofern, dass MRAM-Vorrichtungen einem physischen Ausfall unterliegen, der zu einem unakzep tablen Verlust von gespeicherten Daten führen kann. Physische Ausfälle innerhalb einer MRAM-Vorrichtung können aus vielen Ursachen resultieren, einschließlich Herstellungsmängeln, interner Wirkungen, wie z. B. Rauschen bei einem Leseprozess, Umweltauswirkungen, wie z. B. Temperatur und elektromagnetisches Umgebungsrauschen oder altern der verwendeten Vorrichtung. Ausfälle können allgemein entweder als systematische Ausfälle oder zufällige Ausfälle klassifiziert werden. Systematische Ausfälle beeinträchtigen eine bestimmte Speicherungszelle oder eine bestimmte Gruppe von Speicherungszellen durchweg. Zufällige Ausfälle treten vorübergehend auf und sind nicht durchweg wiederholbar. Systematische Ausfälle können als ein Ergebnis von Herstellungsmängeln und Alterung resultieren. Zufällige Ausfälle treten ansprechend auf interne Auswirkungen und auch externe Umgebungsauswirkungen auf.
  • Gegenwärtig verfügbare Herstellungstechniken für MRAM-Vorrichtungen unterliegen Einschränkungen, und folglich sind Herstellungserträge von akzeptablen MRAM-Vorrichtungen relativ niedrig. Obwohl bessere Herstellungstechniken entwickelt werden, neigen diese dazu, Herstellungs-Komplexität und -Kosten zu erhöhen. Es ist ferner wünschenswert, die Zellendichte zu erhöhen, die auf einem Substrat gebildet ist, wie z. B. Silizium, aber wenn sich die Dichte erhöht, werden Herstellungstoleranzen immer schwieriger zu steuern, was zu höheren Fehlerraten und niedrigeren Vorrichtungserträgen führt.
  • Gegenwärtig ist eine Fehlerkorrekturcodierung, implementiert mit einem Speicher zum Beseitigen von Herstellungsdefekten, die die Speichergenauigkeit beeinträchtigen, von einer vorbestimmten Größe, unabhängig von der Ebene der Genauigkeit des Speichers oder der beabsichtigten Anwendung des Speichers. Üblicherweise ist die eine vorbestimmte Größe die leistungsstärkste Ebene des verfügbaren ECC. Wenn jedoch die tatsächliche Defektebene der MRAM-Vorrichtung nicht berücksichtigt wird, kann eine Fehlerkorrekturcodie rung mit einer höheren Ebene einer Korrekturfähigkeit („Leistungsebene") für eine Verwendung mit einer MRAM-Vorrichtung installiert werden, die benötigt wird, um eine akzeptabel genaue Vorrichtung bereitzustellen. Auf ähnliche Weise, wenn die beabsichtigte Anwendung der MRAM-Vorrichtung nicht berücksichtigt wird, vor dem Installieren der Fehlerkorrekturcodierung, kann eine Fehlerkorrekturcodierung, die in der Lage zu einer höheren Genauigkeitsebene ist als für die beabsichtigte Anwendung notwendig ist, implementiert werden. Die Verwendung einer übermäßig korrigierenden („höhere" Leistungsebene als notwendig) ECC kann die Geschwindigkeit von Operationen unnötigerweise verlangsamen, die durch die Vorrichtung durchgeführt werden, mit der die ECC verwendet wird, und erfordert mehr Leistung, um die Maschine zu betreiben, in der die Vorrichtung installiert ist.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren und ein System zum Konfigurieren von Festkörperspeicherungsvorrichtungen und ein computerlesbares Medium mit verbesserten Charakteristika zu schaffen.
  • Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 oder 8, ein System gemäß Anspruch 12 oder 20 und ein computerlesbares Medium gemäß Anspruch 16 gelöst.
  • Die vorliegende Offenbarung bezieht sich auf Systeme und Verfahren zum Konfigurieren von Festkörperspeicherungsvorrichtungen mit einer Fehlerkorrekturcodierung.
  • Ein System gemäß einem exemplarischen Ausführungsbeispiel der vorliegenden Offenbarung weist eine Festkörperspeicherungsvorrichtung und ein Auswahlsystem für einen Fehlerkorrekturcode (ECC) auf. Das ECC-Auswahlsystem ist konfiguriert, um automatisch einen Satz eines Fehlerkorrekturcodes basierend auf einer Fehlerrate der Speicherungsvorrichtung auszuwählen. Das ECC-Auswahlsystem ist ferner konfiguriert, um den ausgewählten Satz eines Fehlerkorrekturcodes in der Festkörperspeicherungsvorrichtung zu installieren.
  • Exemplarische Ausführungsbeispiele der Erfindung sind besser verständlich Bezug nehmend auf die nachfolgenden Zeichnungen. Die Komponenten in den Zeichnungen sind nicht notwendigerweise maßstabsgetreu, wobei die Betonung stattdessen auf der klaren Darstellung der Prinzipien der vorliegenden Erfindung liegt.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein schematisches Diagramm eines Ausführungsbeispiels eines ECC-Auswahlsystems gemäß der vorliegenden Erfindung;
  • 2 eine schematische Darstellung eines Verarbeitungssystems zum Implementieren eines Ausführungsbeispiels eines ECC-Auswahlsystems;
  • 3 ein Flussdiagramm, das eine repräsentative Funktionalität des Ausführungsbeispiels des ECC-Auswahlsystems darstellt, das in 2 gezeigt ist;
  • 4 ein schematisches Diagramm, das eine MRAM-Vorrichtung zeigt, die ein Array aus Speicherungszellen umfasst;
  • 5 die MRAM-Vorrichtung aus 4 detaillierter;
  • 6 eine logische Datenstruktur, die beim Speichern von Daten in der MRAM-Vorrichtung aus 4 verwendet wird; und
  • 7 ein Flussdiagramm zum Auswählen einer Leistungsebenen-konfigurierten ECC zur Verwendung mit der MRAM-Vorrichtung aus 4.
  • Die offenbarte Vorrichtung, die Systeme und die Verfahren können verwendet werden, um einen geeigneten Fehlerkorrekturcode (ECC) für eine Installation und Verwendung mit einer Festkörperspeicherungsvorrichtung auszuwählen. Festkörperspeicherungsvorrichtungen können mit einer Fehlerkorrekturcodierung verwendet werden, um die Ernsthaftigkeit von Fehlern in der Festkörperspeicherungsvorrichtung zu verringern, so wie sie hergestellt wurde oder sich im Lauf der Zeit verschlechtert hat. Wie hierin verwendet, können verschiedene Informationen im Hinblick sowohl auf die Festkörperspeicherungsvorrichtung als auch ihre beabsichtigte Verwendung analysiert werden, um einen geeigneten Fehlerkorrekturcode auszuwählen.
  • Bezug nehmend nun auf die Zeichnungen, in denen gleiche Bezugszeichen entsprechende Komponenten in den verschiedenen Ansichten anzeigen, ist 1 ein schematisches Diagramm, das ein Ausführungsbeispiel eines Speicherungsvorrichtungs-Konfigurationssystems 90 zeigt. Wie in 1 gezeigt ist, weist das System 90 ein ECC-Auswahlsystem 100 auf, das mit einer Speicherungsvorrichtung 102 kommuniziert, mit der das ECC-Auswahlsystem 100 verwendet wird. Das ECC-Auswahlsystem 100 kann ferner Informationen 104 empfangen, die der Anwendung der Speicherungsvorrichtung 102 entsprechen, mit der der ausgewählte ECC implementiert wird.
  • 2 ist eine schematische Darstellung eines Verarbeitungssystems 202 zum Implementieren von zumindest einem Abschnitt eines Ausführungsbeispiels eines ECC-Auswahlsystems 100. Das ECC-Auswahlsystem 100 kann in Software, Firmware, Hardware oder einer Kombination derselben implementiert sein. Wenn es in Software implementiert ist, kann das ECC-Auswahlsystem 100 ein Programm sein, das durch das Verarbeitungssystem 202 ausführbar ist, das schematisch in 2 gezeigt ist.
  • Im Allgemeinen, im Hinblick auf die Hardwarearchitektur, umfasst das System 202 aus 2 einen Prozessor 204, einen Speicher 206 und eine oder mehrere Eingabe- und/oder Ausgabe-Vorrichtungen (I/O-Vorrichtungen) 208 (oder Peripheriegeräte), die kommunikativ über eine lokale Schnittstelle 210 gekoppelt sind. Die lokale Schnittstelle 210 kann z. B. einer oder mehrere Busse oder andere verdrahtete oder drahtlose Verbindungen sein. Die lokale Schnittstelle 210 kann zusätzliche Elemente umfassen, die für eine leichte Beschreibung weggelassen sind. Diese zusätzlichen Elemente können zum Beispiel Steuerungen, Puffer (Cache-Speicher), Treiber, Repeater und/oder Empfänger sein. Ferner kann die lokale Schnittstelle Adress-, Steuerungs- und/oder Daten-Verbindungen umfassen, um entsprechende Kommunikationen zwischen den Komponenten des Systems 202 zu ermöglichen.
  • Der Prozessor 204 kann eine Hardwarevorrichtung sein, die konfiguriert ist, um Software auszuführen, die in einem Speicher 206 gespeichert sein kann. Der Prozessor 204 kann ein kundenspezifisch hergestellter oder handelsüblich erhältlicher Prozessor, eine zentrale Verarbeitungseinheit (CPU; CPU = Central Processing Unit) oder ein Hilfsprozessor unter verschiedenen Prozessoren sein.
  • Ein Speicher 206 kann eine beliebige Kombination von flüchtigen Speicherelementen (z. B. Direktzugriffsspeicher (RAM, wie z. B. DRAM, SRAM)) und/oder nichtflüchtigen Speicherelementen (z. B. ROM, Festplatte, Band, CDROM) umfassen. Ferner kann der Speicher elektronische, magnetische, optische und/oder andere Typen von Speicherungsmedien einlagern. Es wird darauf hingewiesen, dass der Speicher 206 eine verteilte Architektur haben kann, wobei verschiedene Komponenten entfernt voneinander positioniert sind aber durch den Prozessor 204 zugegriffen werden können.
  • Die Software in dem Speicher 206 kann eines oder mehrere separate Programme umfassen, wobei jedes derselben eine geordnete Auflistung von ausführbaren Anweisungen zum Implementieren logischer Funktionen aufweist. Die Software in dem Speicher 206 umfasst ein ECC-Auswahlsystem 100 und ein geeignetes Betriebssystem (O/S) 212. Das Betriebssystem 212 steuert die Ausführung anderer Computerprogramme, wie z. B. des ECC-Auswahlsystems 100. Das Betriebssystem 212 kann ferner Planung, Eingabe-/Ausgabe-Steuerung, Datei- und Daten-Verwaltung, Speicherverwaltung und Kommunikationssteuerung und verwandte Dienste bereitstellen.
  • Die I/O-Vorrichtung(en) 208 können Eingabevorrichtungen umfassen, wie z. B. ein Tastenfeld und/oder einen Empfänger. Die I/O-Vorrichtung(en) 208 können ferner Ausgabevorrichtungen umfassen, wie z. B. eine Anzeigevorrichtung und/oder z. B. einen Sender. Die I/O-Vorrichtung(en) 208 können ferner Vorrichtungen umfassen, die konfiguriert sind, um sowohl Eingaben als auch Ausgaben zu kommunizieren, wie z. B. ein Netzwerkkommunikationstor.
  • Wenn das System 202 in Betrieb ist, ist der Prozessor 204 konfiguriert, um Software auszuführen, die in dem Speicher 206 gespeichert ist, Daten zu und von dem Speicher 206 zu kommunizieren und allgemeine Operationen des Computers 202 zu steuern. Das ECC-Auswahlsystem 100 und das O/S 202, ganz oder teilweise, werden durch den Prozessor 204 gelesen, vielleicht in dem Prozessor 204 gepuffert und dann ausgeführt.
  • Wenn das ECC-Auswahlsystem 100 in Software implementiert ist, kann es auf einem computerlesbaren Medium zur Verwendung durch oder in Verbindung mit einem computerverwandten System oder Verfahren gespeichert sein. In dem Kontext dieses Dokuments ist ein computerlesbares Medium eine elektronische, magnetische, optische oder andere physische Vorrichtung oder Einrichtung, die ein Computerprogramm zur Verwendung durch oder in Verbindung mit einem computerverwandten System oder Verfahren enthalten oder speichern kann. Das ECC-Auswahlsystem 100 kann in einem computerlesbaren Medium zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungs-System, einer -Einrichtung oder einer -Vorrichtung verkörpert sein, wie z. B. einem computerbasierten System, einem prozessorenthaltenden System oder einem anderen System, das die Anweisungen aus dem Anweisungsausführungs-System, der -Einrichtung oder der -Vorrichtung abrufen und diese Anweisungen ausführen kann.
  • Wie hierin verwendet, kann ein „computerlesbares Medium" eine Einrichtung sein, die ein Informationsprogramm zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungs-System, einer -Einrichtung oder einer Vorrichtung speichern, kommunizieren, verbreiten oder transportieren kann. Somit kann ein computerlesbares Medium z. B., aber nicht ausschließlich, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleiter-System, eine -Einrichtung oder eine -Vorrichtung oder ein Ausbreitungsmedium sein. Es wird darauf hingewiesen, dass das computerlesbare Medium sogar Papier oder ein anderes geeignetes Medium sein könnte, auf das das Programm gedruckt ist, da das Programm elektronisch erfasst werden könnte, über ein optisches Abtasten des Papiers oder eines anderen Mediums, dann kompiliert, interpretiert oder anderweitig auf geeignete Weise verarbeitet werden könnte, falls nötig, und dann in einen Computerspeicher gespeichert werden könnte.
  • Wenn es in Hardware implementiert ist, kann das ECC-Auswahlsystem 100 mit einer oder einer Kombination aus verschiedenen Techniken implementiert sein. Beispielsweise können die nachfolgenden Techniken, die in der Technik bekannt sind, verwendet werden: eine oder mehrere diskrete Logikschaltungen, die Logikgatter zum Implementieren logischer Funktionen auf Datensignale hin aufweist, eine anwendungsspezifische integrierte Schaltung (ASIC; ASIC Appli cation Specific Integrated Circuit), die geeignete kombinatorische Logikgatter aufweist, eines oder mehrere programmierbare Gatearrays (PGA) und ein feldprogrammierbares Gatearray (SPGA).
  • Wie durch Block 302 aus 3 dargestellt ist, kann das ECC-Auswahlsystem aus der Speicherungsvorrichtung 202 oder einer anderen Komponente Informationen 104 im Hinblick auf die Anwendung der Speicherungsvorrichtung 102 empfangen. Bei Block 304 kann der geeignete ECC ausgewählt werden, zumindest teilweise basierend auf den Informationen, die bei Block 302 empfangen werden. Wenn z. B. die empfangenen Informationen anzeigen, dass die Speicherungsvorrichtung 102 mit einer hohen Mangelebene hergestellt wurde, oder dass die Speicherungsvorrichtung 102 sich verschlechtert und im Lauf der Zeit eine hohe Mangelebene entwickelt hat, und die Anwendung, mit der die Speicherungsvorrichtung 102 implementiert wird, einen hohen Genauigkeitspegel erfordert, wird ein sehr robuster ECC ausgewählt. Bei Block 306 gibt das ECC-Auswahlsystem 100 den ausgewählten ECC für eine Installation frei.
  • Eine beispielhafte MRAM-Vorrichtung 400 wird Bezug nehmend auf 4 beschrieben. Die ECC-Auswahlverfahren, die bei einem Ausführungsbeispiel der vorliegenden Erfindung angepasst werden, versuchen, die nachteiligen Wirkungen eines physischen Ausfalls zu reduzieren, wobei berücksichtigt wird, dass solche physische Ausfälle von Vorrichtung zu Vorrichtung variieren, während Speicher- und Leistungs-Verwendung minimiert wird, um eine gewünschte Fehlerkorrektur zu erreichen. Eine ECC-Auswahl kann ebenfalls durch Berücksichtigen der beabsichtigten Benutzeranwendung der MRAM-Vorrichtung erreicht werden.
  • Die MRAM-Vorrichtung 400 aus 4 weist ein Array 402 aus Speicherungszellen 404 auf. Das Array 402 ist mit einer Steuerung 406 gekoppelt, die unter anderen Steuerungselementen eine ECC-Codierungs- und -Decodierungs-Einheit 408 umfasst. Während einer Operation führt die Einheit 408 eine Fehlerkorrektur unter Verwendung des ECC durch, der durch das ECC-Auswahlsystem 100 (1) ausgewählt und installiert wird, wie hierin nachfolgend detaillierter beschrieben wird. Die Steuerung 406 und das Array 402 können auf einem einzelnen Substrat gebildet sein, oder können separat angeordnet sein. Das gemeinsam zugewiesene U.S.-Patent Nr. 6,169,686 offenbart ein Beispiel einer magnetoresistiven Festkörperspeicherungsvorrichtung, die geeignet zur Verwendung bei Ausführungsbeispielen der vorliegenden Erfindung ist, deren Offenbarung hierin durch Bezugnahme aufgenommen ist.
  • Bei einem Ausführungsbeispiel weist das Array 402 im Bereich von 1.024 × 1.024 Speicherungszellen 404 auf, von denen nur einige dargestellt sind. Es sollte darauf hingewiesen werden, dass das Array 402 jedoch eine beliebige Anzahl von Speicherungszellen 404 aufweisen kann. Die Speicherungszellen 404 sind jeweils an einem Schnittpunkt zwischen Steuerungsleitungen 410 und 412 gebildet. Bei diesem Beispiel sind die Steuerungsleitungen 410 in Zeilen angeordnet und die Steuerungsleitungen 412 sind in Spalten angeordnet. Die Steuerungsleitungen 410 und 412 sind allgemein orthogonal, aber andere kompliziertere Gitterstrukturen sind ebenfalls möglich. Die Zeilen- und Spalten-Leitungen 410, 412 sind mit Steuerungsschaltungen 414 gekoppelt, die eine Mehrzahl von Lese-/Schreib-Steuerschaltungen umfassen. Abhängig von der Implementierung wird z. B. eine Lese-/Schreib-Steuerschaltung pro Spalte bereitgestellt, oder Lese-/Schreib-Steuerschaltungen werden gemultiplext oder zwischen Spalten gemeinschaftlich verwendet.
  • Bei einem Vorrichtungszugriff, wie z. B. einer Schreiboperation oder einer Leseoperation, wird eine Zeile 410 und eine oder mehrere Spalten 412 durch die Steuerungsschaltungen 414 ausgewählt, um auf die erforderliche Speicherungs-Zelle oder -Zellen 404 zuzugreifen (oder umgekehrt eine Spalte und mehrere Zeilen, abhängig von der Ausrichtung des Arrays). Die MRAM-Vorrichtung kann z. B. eine minimale Distanz m, wie z. B. 64 Zellen, zwischen den ausgewählten Spaltenleitungen 412 aufweisen, um eine Kreuzzelleninterferenz zu minimieren. Wenn gegeben ist, dass jedes Array 402 Zeilen der Länge l aufweist, wie z. B. 1.024 Speicherungszellen, ist es möglich, gleichzeitig auf bis l/m = 1.024/64 = 16 eindeutig adressierbare Zellen aus dem Array 402 zuzugreifen.
  • Jede Speicherungszelle 404 speichert ein Datenbit, das einen numerischen Wert darstellt, wie z. B. einen Binärwert, d. h. 1 oder 0. Als solches umfasst jede Speicherungszelle zwei Filme, die eine von zwei stabilen Magnetisierungsausrichtungen annehmen, bekannt als parallel und antiparallel. Die Magnetisierungsausrichtung beeinträchtigt den Widerstand der Speicherungszelle 404. Wenn die Speicherungszelle 404 in dem antiparallelen Zustand vorliegt, ist der Widerstand am höchsten, und wenn die Magnetspeicherzelle 404 in dem parallelen Zustand vorliegt, ist der Widerstand am niedrigsten. Der antiparallele Hochwiderstandszustand definiert eine „0"-Logikzustand, und der parallele Niedrigwiderstandszustand definiert einen „1"-Logikzustand oder umgekehrt. Bei einem Ausführungsbeispiel wird der Widerstand jeder Speicherungszelle 404 gemäß eine Phänomen bestimmt, bekannt als Spin-Tunnelbildung, und die Zellen werden als magnetische Tunnelübergangs-Speicherungszellen bezeichnet. Der Zustand der Speicherungszelle wird bestimmt durch Messen des Erfassungsstroms (proportional zum Widerstand) oder eines verwandten Parameters, wie z. B. der Ansprechzeit auf die Entladung einer bekannten Kapazität, was einen oder mehrere Parameterwerte für jede Speicherzelle 404 ergibt. Ein logischer Wert kann dann aus dem einen oder den mehreren Parameterwerten hergeleitet werden. Abhängig von dem Wesen und dem Aufbau der MRAM-Vorrichtung 100 kann die Leseoperation mehrere Schritte aufweisen oder kombinierte Lese- und Rückschreib-Aktionen erfordern.
  • 5 stellt ein Ausführungsbeispiel einer MRAM-Vorrichtung detaillierter dar. Ein Makro-Array 500 wird gebildet, das eine große Mehrzahl von individuellen Arrays 402 aufweist, wobei jedes derselben gebildet ist, wie oben für 4 erörtert wurde. Die Arrays 402 liefern eine Kompaktdatenspeicherung für die MRAM-Vorrichtung. Der Einfachheit halber zeigt 5 nur einen Abschnitt des Makroarrays.
  • Die Arrays 402 können in Schichten hergestellt werden. Bei dem Beispiel aus 4 werden vier Arrays 402 schichtweise angeordnet, um einen Stapel zu bilden. Bei einer Beispielvorrichtung, die in der Lage zum Speichern von 128 Megabyte Originalinformationen ist, könnten tatsächlich 160 Megabyte Informationen gespeichert werden, geeignet codiert, wie später beschrieben wird, unter Verwendung von 1.280 Arrays, die in einem Makroarray angeordnet sind, das 16 Arrays breit mal 20 Arrays hoch mit 4 Stapelschichten ist. Ferner kann die MRAM-Vorrichtung mehr als ein solches Makroarray aufweisen.
  • Bezug nehmend auf 5 weist ein Verfahren zum Zugreifen auf die MRAM-Vorrichtung 400 das Auswählen einer Zeile 410 in jedem einer Mehrzahl von Arrays 402 und das Auswählen mehrerer Spalten 412 aus jedem der Mehrzahl von Arrays auf, um dadurch eine Mehrzahl von Speicherungszellen 404 auszuwählen. Die Zellen 404, auf die innerhalb von jedem der Mehrzahl von Arrays 402 zugegriffenen wurde, entsprechen einem kleinen Abschnitt einer Dateneinheit. Zusammen liefern die zugegriffenen Zellen 404 eine gesamte Dateneinheit, wie z. B. eine gesamte Sektoreinheit, oder zumindest einen wesentlichen Abschnitt der Einheit. Vorzugsweise ist jedes der Mehrzahl von Arrays 402 im Wesentlichen gleichzeitig zugreifbar. Daher wird die Vorrichtungszugriffsgeschwindigkeit für eine Leseoperation oder eine Schreiboperation erhöht. Dieser Vorrichtungszugriff kann als eine Scheibe durch das Makroarray bezeichnet werden.
  • Wie in 5 gezeigt ist, kann dieselbe Zeilenadresse und dieselben Spaltenadressen in jedem der Mehrzahl von Arrays ausgewählt werden. Eine Dateneinheit ist über eine Mehrzahl von Arrays gespeichert, unter Verwendung derselben Zeilen- und Spalten-Adressen innerhalb jedem der Mehrzahl von Arrays.
  • Wie in 5 gezeigt ist, sind die Arrays 402 in Schichten angeordnet, um Stapel zu bilden. Nur auf eines der Arrays innerhalb jedes Stapels wird vorzugsweise gleichzeitig zugegriffen. Die Mehrzahl von Arrays kann verwendet werden, um eine Sektordateneinheit jeweils in unterschiedlichen Stapeln zu speichern (d. h. keines der ausgewählten Mehrzahl von Arrays ist in demselben Stapel). Ferner können Arrays 402, die alle in derselben Schicht sind, ausgewählt werden. Zum Beispiel kann ein Array 402 aus jedem Stapel ausgewählt werden, wobei die Arrays jeweils in derselben Schicht innerhalb des Stapels vorliegen. Bei dem Beispiel aus 5 wurde das oberste Array 402 innerhalb jedes Stapels ausgewählt.
  • Die Anzahl der Arrays 402, die in dem Makroarray 500 verfügbar sind, kann auf die Größe einer Sektordateneinheit abgestimmt sein, die in der Vorrichtung gespeichert werden soll. Hier kann die Gesamtanzahl von Arrays derart vorgesehen sein, dass unter Berücksichtigung der Anzahl von Zellen 404, auf die gleichzeitig in einem Array 402 zugegriffen werden kann, eine Sektoreinheit unter Verwendung von Zellen innerhalb aller Arrays 402 einer einzelnen Schicht der Vorrichtung gespeichert ist, um eine gesamte Sektordateneinheit zu speichern. Bei anderen Ausführungsbeispielen kann eine reziproke, ganzzahlige Sektordateneinheit (z. B. ein Halb oder ein Drittel oder ein Viertel einer Sektoreinheit) gleichzeitig zugreifbar sein.
  • Es wird darauf hingewiesen, dass Ausfälle auftreten können, die die Fähigkeit der Vorrichtung beeinträchtigen, Daten zuverlässig in den Speicherungszellen 404 zu speichern. Bei einem Ausführungsbeispiel kann die Vorrichtung 400 Schreib-/Lese-Operationen an verschiedenen ausgewählten Zellen durchführen, um nach Fehlern zu testen, die aus einem physischen Ausfall innerhalb der Vorrichtung 400 resultieren. Bei einem Ausführungsbeispiel wird eine Zelle 404 mit einem bekannten Wert geschrieben, wie z. B. einer logischen „1". Wenn die Zelle 404 einen logischen Wert von „0" zurückliest, dann liegt ein Defekt in der getesteten Zelle 404 vor. Auf ähnliche Weise würde das Schreiben einer „0" in eine Zelle 404 und das Zurücklesen einer „1" ebenfalls einen Ausfall anzeigen. Die Zelle 404 kann einmal beschrieben und wiederholt gelesen werden, oder kann erneut beschrieben werden nach jedem Lesen, je nach Bedarf, um die Integrität der Zelle 404 beizubehalten. Obwohl hierin das Testen einer Zelle 404 erörtert wurde, kann eine Vorrichtung durch Testen von Zeilen und/oder Spalten von Zellen 404 getestet werden.
  • Es ist vielleicht nicht notwendig, eine Fehlerkorrektur für jedes Datenbit bereitzustellen. Obwohl die Speicherungszellen der MRAM-Vorrichtung verwendet werden können, um Daten gemäß einem geeigneten logischen Layout zu speichern, können Daten in grundlegende Teileinheiten (z. B. Bytes) organisiert werden, die wiederum in größere logische Dateneinheiten (z. B. Sektoren) gruppiert werden. Ein physischer Ausfall kann viele Bytes und möglicherweise viele Sektoren beeinträchtigen. Das Behalten von Informationen über jede kleine logische Teileinheit (z. B. Bytes), die durch physische Ausfälle beeinträchtigt ist, ist vielleicht nicht effizient, auf Grund der Menge von betroffenen Daten. Versuche, eine Liste aller solchen logischen Einheiten zu erzeugen, die auf Grund von einem physischen Ausfall unbenutzbar wurden, können eine Menge an Verwaltungsdaten erzeugen, die zu groß ist, um effizient gehandhabt zu werden. Ferner, abhängig davon, wie die Daten auf der Vorrichtung organisiert sind, kann ein einzelner physischer Ausfall potentiell eine große Anzahl von logischen Dateneinheiten beeinträchtigen, so dass ein Vermeiden der Ver wendung aller Bytes, Sektoren oder anderer Einheiten, die durch einen Ausfall beeinträchtigt sind, die Speicherungskapazität der Vorrichtung wesentlich reduziert.
  • Ein Ausführungsbeispiel der vorliegenden Erfindung verwendet eine Fehlerkorrekturcodierung, um eine magnetoresistive Festkörperspeicherungsvorrichtung zu schaffen, die fehlertolerant ist, vorzugsweise, um sowohl zufällige Ausfälle als auch systematische Ausfälle zu tolerieren und sich von denselben zu erholen. Eine Fehlerkorrekturcodierung umfasst allgemein das Empfangen von Originalinformationen, die gespeichert werden sollen, und das Codieren der Originaldaten in codierte Daten, was ermöglicht, dass Fehler identifiziert und idealerweise korrigiert werden. Die codierten Daten werden in der Festkörperspeicherungsvorrichtung gespeichert. Zur Lesezeit werden die Originalinformationen durch eine Fehlerkorrekturdecodierung der codierten gespeicherten Daten wiedergewonnen. Ein breiter Bereich von ECC-Schemata ist verfügbar und kann alleine oder in Kombination verwendet werden. Dieser breite Bereich von ECC-Schemata variiert in der Größe und führt dadurch zu variierenden Leistungs- und Zeit-Anforderungen von der Vorrichtung, auf der sie verwendet werden. Geeignete ECC-Schemata umfassen sowohl Schemata mit Einzelbitsymbolen (z. B. BCH) als auch Schemata mit Mehrfachbitsymbolen (z. B. Reed-Solomon).
  • 6 zeigt eine beispielhafte logische Datenstruktur, die verwendet wird, wenn Daten in der MRAM-Vorrichtung 402 (4) gespeichert werden. Originalinformationen 600 werden in vorbestimmten Einheiten empfangen, wie z. B. einem Sektor, der 512 Bytes aufweist. Eine Fehlerkorrekturcodierung wird durchgeführt, um ECC-codierte Daten zu erzeugen, in diesem Fall einen codierten Sektor 602. Der codierte Sektor 602 weist eine Mehrzahl von Symbolen 606 auf, die ein einzelnes Bit (z. B. ein BCH-Code mit Einzelbitsymbolen) sein können oder mehrere Bits aufweisen können (z. B. einen Reed-Solomon-Code unter Verwendung von Mehrfachbitsymbolen). Bei einem exemplarischen Reed-Solomon- Codierungsschema weist jedes Symbol 606 acht Bits auf, und wie in 6 gezeigt ist, weist jeder codierte Sektor 602 vier Codewörter 604 auf, wobei jedes im Bereich von 144 bis 160 Symbolen aufweist. Die acht Bits, die jedem Symbol entsprechen, können in acht Speicherungszellen 404 gespeichert sein, die eine Symbolgruppe genannt werden können. Ein physischer Ausfall, der eine dieser acht Speicherungszellen in einer Symbolgruppe direkt oder indirekt beeinträchtigt, kann dazu führen, dass eines oder mehrere der Bits unzuverlässig oder unlesbar werden.
  • Ein beispielhaftes Ausführungsbeispiel der vorliegenden Erfindung kann ein ECC-Schema mit Mehrfachbitsymbolen verwenden. Wenn sich Herstellungsprozesse und Vorrichtungsentwurf im Lauf der Zeit ändern, kann es geeigneter werden, Speicherungsorte zu organisieren, die bitbasierte Fehler erwarten, und dann ein ECC-Schema unter Verwendung von Einzelbitsymbolen anzuwenden, und zumindest einige der nachfolgenden Ausführungsbeispiele können an Einzelbitsymbole angewendet werden.
  • Eine Fehlerkorrekturdecodierung von jedem Block von gespeicherten ECC-codierten Daten ermöglicht, dass ausgefallene Symbole 606 identifiziert und korrigiert werden. Ein Decodieren kann unabhängig für jeden Block von ECC-codierten Daten durchgeführt werden, wie z. B. einen ECC-codierten Sektor 602 oder bei dem beispielhaften Ausführungsbeispiel für jedes Codewort 604. Somit bildet der codierte Sektor 602 oder vorzugsweise jedes ECC-Wort 604 die Dateneinheit, die in der Vorrichtung gespeichert werden soll.
  • Ein Reed-Solomon-Schema ist ein Beispiel eines linearen Fehlerkorrekturcodes, der bis zu einer vorbestimmten Maximalanzahl von ausgefallenen Symbolen 606 innerhalb jedes unabhängig decodierbaren Blocks von ECC-codierten Daten mathematisch identifiziert und vollständig korrigiert, abhängig von der Leistung des Codes. Zum Beispiel kann ein [160,128,33] Reed-Solomon-Code, der Codewörter erzeugt, die einhundertundsechzig 8-Bit-Symbole aufweisen, die einhundertachtundzwanzig Originalinformationsbytes und einer minimalen Distanz von dreiunddreißig Symbole entsprechen, bis zu sechzehn Symbolfehler lokalisieren und korrigieren.
  • Es ist wünschenswert, die Speichermenge zu minimieren, die verwendet wird, um den ECC zu speichern, sowie die Leistung und die Zeitmenge zu minimieren, die erforderlich ist, um den ECC zu betreiben. Als solches sind ECCs mit variierenden Leistungspegeln verfügbar. Im Allgemeinen ist ein ECC mit hohem Leistungspegel in der Lage zu einer umfassenderen Fehlerkorrektur als ein ECC mit niedrigem Leistungspegel. Der Leistungspegel des ECC, der implementiert werden soll, wird bestimmt durch die Ernsthaftigkeit der Ausfälle in der Vorrichtung 400 und/oder die Ebene der Genauigkeit, die von der Vorrichtung 400 benötigt wird.
  • 7 stellt ein Verfahren zum Bestimmen des gewünschten Leistungsebenen-ECC dar. Zuerst wird eine Vorrichtung 400 bei Block 702 ausgewählt. Zum Beispiel kann die Vorrichtung 400 von einer Fertigungslinie nach der Herstellung ausgewählt werden oder durch einen Benutzer eines Endprodukts ausgewählt werden, in dem die Vorrichtung 400 installiert ist. Die Vorrichtung 400 kann ebenfalls zum Testen durch Betreiben eines Selbsttests periodisch über der Zeit ausgewählt werden. Wie vorangehend adressiert wurde, weist eine solche Vorrichtung 400 üblicherweise nach der Herstellung einige Defekte auf, und die Vorrichtung 400 kann sich ebenfalls verschlechtern und im Lauf der Zeit Defekte aus verschiedenen Gründen entwickeln.
  • Die Vorrichtung 400 wird bei Block 704 nach Defekten getestet, auf die oben offenbarte Weise, wie z. B. mit einer Schreib-/Leseoperation, oder auf eine geeignete Weise. Durch Testen der Einheit nach Defekten kann bestimmt werden, wie fehlerhaft die Einheit ist, und daher zu welchem Ausmaß die Vorrichtung eine Fehlerkorrekturcodierung benötigt, um eine weniger fehlerhafte Vorrichtung 400 bereitzu stellen oder eine Vorrichtung 400, die eine Fehlerrate bei oder unter einer gewünschten Schwelle aufweist. Eine Vorrichtung 400 kann ferner auf die hierin offenbarte Weise getestet werden, periodisch durch die Verwendung der Vorrichtung 400. Bei einem Ausführungsbeispiel können die Ergebnisse von aufeinanderfolgenden Tests an einer Vorrichtung 400 verglichen werden und eine Verschlechterungsrate kann bestimmt werden. Diese Verschlechterungsrate kann dann als ein Faktor beim Auswählen des gewünschten ECC-Schemas verwendet werden. Die vorgesehene Anwendung der Einheit kann ferner, oder als eine Alternative zum Testen, bei Block 406 analysiert werden.
  • Basierend auf den gewünschten Auswahlfaktoren wird ein ECC-Schema mit einer gegebenen Leistungspegelkonfiguration bei Block 708 ausgewählt. Eine Vorrichtung 400 mit einer wesentlichen Anzahl von Defekten, wie durch das Testen 704 offenbart wird, kann einen ECC mit höherem Leistungspegel erfordern, während eine weniger fehlerhafte Vorrichtung 400 einen weniger leistungsstarken ECC erfordern kann. Eine weniger intensive Anwendung für die Speicherungsvorrichtung 400 kann einen niedrigeren Pegel einer Fehlerkorrektur tolerieren. Zum Beispiel kann die Verwendung der Speicherungsvorrichtung 400 für die Speicherung von Bildern auf einer Digitalkamera einen niedrigeren Pegel einer Fehlerkorrektur tolerieren als die Verwendung der Speichereinheit für Finanz- oder Sicherheits-Anwendungen. Durch Berücksichtigen von Informationen, wie z. B. der Defekte der Vorrichtung, der Änderung oder Erhöhung bei den Defekten und/oder der beabsichtigten Anwendung der Einheit kann eine geeignete Leistungspegel-konfigurierte Fehlerkorrekturcodierung bei Block 708 ausgewählt werden. Es ist wünschenswert, einen ECC auszuwählen, der den benötigten Pegel an Fehlerkorrektur liefert, ohne das System mit mehr Fehlerkorrektur als nötig zu belasten. Nach der Auswahl des gewünschten ECC 708 kann der ECC in der Speicherungsvorrichtung 400 installiert werden 710. Es wird darauf hingewiesen, dass die Auswahl des ECC, der installiert werden soll, automatisch durch ein ECC-Auswahlsystem 100 durchgeführt werden kann, basierend auf einem oder mehreren vordefinierten Kriterien, wie oben beschrieben ist, oder alternativ kann ein Benutzer den gewünschten ECC manuell auswählen und eine Eingabe liefern, die den gewünschten ECC anzeigt, der in der Speicherungsvorrichtung 400 installiert werden soll.
  • Um das beispielhafte Verfahren zum Auswählen eines gewünschten ECC-Leistungspegels besser darzustellen, wird eine exemplarische Verwendung und Operation des ECC-Auswahlsystems 100, gezeigt durch 2, beschrieben. Zu darstellenden Zwecken sei angenommen, dass die Speicherungsvorrichtung 400, gezeigt durch 2, bei einer Anwendung verwendet werden soll, bei der es wünschenswert ist, dass die Vorrichtung 400 eine Fehlerrate unter einer spezifizierten Schwelle aufweist, hierin nachfolgend bezeichnet als „Terror". Diese Schwelle kann innerhalb des Speichers 206 des ECC-Auswahlsystems 100 gespeichert sein. Diesbezüglich kann das ECC-Auswahlsystem 100 die gewünschten Schwellen für verschiedene Anwendungen speichern, und das ECC-Auswahlsystem 100 kann konfiguriert sein, um eine der gespeicherten Schwellen für jede der Speicherungsvorrichtungen 400 auszuwählen, die durch das System 100 basierend auf der beabsichtigten Anwendung für die Vorrichtung 400 gehandhabt werden, wie nachfolgend detaillierter beschrieben wird.
  • Anfänglich empfängt das ECC-Auswahlsystem 100 Informationen, die die vorgesehene Anwendung der Speicherungsvorrichtung 400 anzeigen. Basierend auf diesen Informationen gewinnt das ECC-Auswahlsystem 100 die Schwelle wieder, die mit der vorgesehenen Anwendung korreliert ist (d. h. das Auswahlsystem 100 gewinnt Terror bei dem zugehörigen Beispiel wieder). Das ECC-Auswahlsystem 100 testet ferner die Speicherungsvorrichtung 400, um die tatsächliche Fehlerrate der Vorrichtung zu bestimmen. Das ECC-Auswahlsystem 100 wählt dann ein ECC-Schema oder einen Leistungspegel aus, der der Vorrichtung 400 eine Fehlerrate bei oder unter Terror liefert.
  • Als ein Beispiel kann das ECC-Auswahlsystem 100 die tatsächliche Fehlerrate mit Terror vergleichen. Wenn die Differenz zwischen der tatsächlichen Fehlerrate und Terror klein ist, dann kann das ECC-Auswahlsystem 100 ein erstes ECC-Schema auswählen. Wenn jedoch die Differenz zwischen der tatsächlichen Fehlerrate und Terror groß ist (z. B. über einer spezifizierten Schwelle), dann kann die ECC-Auswahl 100 statt dessen ein zweites ECC-Schema auswählen, das robuster ist als das erste ECC-Schema. Tatsächlich kann das ECC-Auswahlsystem 100 die wahrscheinliche Fehlerrate schätzen, die jedes mögliche ECC-Schema ergibt, und dann das ECC-Schema auswählen, das schätzungsweise eine Fehlerrate liefert, die unter Terror liegt. Um die Auswirkung auf das Verhalten der Speicherungsvorrichtung 400 zu minimieren, kann das ECC-Auswahlsystem 100 das ECC-Schema auswählen, das schätzungsweise die höchste Fehlerrate liefert, die unter Terror liegt. Bei anderen Ausführungsbeispielen können jedoch andere Techniken zum Auswählen eines geeigneten ECC-Schemas implementiert sein. Zum Beispiel kann ein robusteres ECC-Schema für die Speicherungsvorrichtung 400 ausgewählt werden, wenn das System 100 Informationen empfängt, die anzeigen, dass die Verschlechterung der Vorrichtung 400 relativ hoch ist (z. B. eine spezifizierte Schwelle überschreitet).
  • Nach dem Auswählen eines ECC-Schemas, wie oben beschrieben ist, installiert dann das ECC-Auswahlsystem 100 in der Speicherungsvorrichtung 400 einen Satz von ECC zum Implementieren des ausgewählten ECC-Schemas. Während der Operation der Vorrichtung 400 korrigiert der installierte ECC Fehler, die innerhalb der Vorrichtung 400 auftreten, derart, dass die tatsächliche Fehlerrate der Vorrichtung unter Terror bleibt. Nach einer verlängerten Nutzungsperiode kann die Vorrichtung 400 jedoch durch das ECC-System 100 erneut getestet werden, um zu bestimmen, ob ein robusteres ECC- Schema benötigt wird, um die Fehlerrate der Vorrichtung unter Terror zu halten.
  • Es sollte darauf hingewiesen werden, dass das Vorhandensein von Kurzschluss-Bit- und Leerlauf-Bit-Ausfällen, die relativ wenig Codewörtern zugeordnet sind, die Gesamtfehlerrate der Vorrichtung 400 bedeutend beeinträchtigen kann. Die Fehlerrate der Vorrichtung kann bedeutend reduziert werden, durch Erfassen von Codewörtern, bei der Herstellung oder periodisch während der Verwendung, die Kurzschluss-Bit- und Leerlauf-Bit-Ausfällen zugeordnet sind, und dann Ausschließen solcher Wörter aus der nachfolgenden Verwendung. Techniken zum Erreichen des Vorangehenden werden in den gemeinsam zugewiesenen U.S.-Patentanmeldungen Nr. 2003/0023922 A1, 2003/0023925 A1 und 2003/0023928 A1 detaillierter beschrieben, die alle hierin durch Bezugnahme aufgenommen sind.
  • Eine magnetoresistive Festkörperspeicherungsvorrichtung und ein Verfahren zum Auswählen einer Fehlerkorrekturcodierung basierend zumindest auf Defekten oder alternativ einer beabsichtigten Verwendung der Vorrichtung wird beschrieben. Die Speicherungsvorrichtung ist in der Lage, eine relativ große Anzahl von Fehlern zu tolerieren, die sowohl systematische Ausfälle als auch vorübergehende Ausfälle umfassen, während sie erfolgreich in Betrieb bleiben und den Verlust von Originaldaten durch die Verwendung einer Fehlerkorrekturcodierung minimieren. Einfachere und kostengünstigere Herstellungstechniken werden verwendet und/oder der Vorrichtungsertrag und die Vorrichtungsdichte werden erhöht. Eine Fehlerkorrektur-Codierung und -Decodierung ermöglicht, dass Datenblöcke, z. B. Sektoren oder Codewörter, in Verwendung bleiben, wo anderweitig der gesamte Block verworfen werden kann, wenn nur ein Ausfall auftritt. Da Verfeinerungen bei dem Herstellungsprozess die durchschnittliche Anzahl von fehlerhaften Zellen reduzieren, kann der Fehlerkorrektur-Mehraufwand in den gespeicherten codierten Daten reduziert werden und/oder reduzierte Vorrichtungsfehlerraten können für denselben Mehraufwand erhalten werden.
  • Die vorangehende Beschreibung wurde zu Zwecken der Darstellung und der Beschreibung präsentiert. Sie soll nicht ausschließend sein oder die Erfindung auf die präzisen offenbarten Formen einschränken. Modifikationen und Abweichungen im Hinblick auf die obigen Lehren sind möglich. Das Ausführungsbeispiel oder die Ausführungsbeispiele, die erörtert wurden, und ihre praktische Anwendung, wurde jedoch für exemplarische Ausführungsbeispiele der Erfindung ausgewählt und beschrieben, um dadurch Fachleuten auf dem Gebiet zu ermöglichen, die Erfindung bei verschiedenen Ausführungsbeispielen und mit verschiedenen Modifikationen zu verwenden, wie sie für die bestimmte gedachte Verwendung geeignet sind.

Claims (22)

  1. Verfahren zum Konfigurieren einer Festkörperspeicherungsvorrichtung, das folgende Schritte aufweist: Bereitstellen einer Festkörperspeicherungsvorrichtung; Analysieren einer Fehlerrate der Festkörperspeicherungsvorrichtung; und Auswählen, basierend auf der Fehlerrate, einer Fehlerkorrekturcode-Leistungsebene, um die Festkörperspeicherungsvorrichtung mit einer vorbestimmten Fehlerrate bereitzustellen.
  2. Verfahren gemäß Anspruch 1, bei dem das Analysieren der Fehlerrate der Festkörperspeicherungsvorrichtung ferner folgende Schritte aufweist: Testen der Festkörperspeicherungsvorrichtung nach Defekten; Bestimmen der Fehlerrate der Festkörperspeicherungsvorrichtung basierend auf dem Testen; und Vergleichen der Fehlerrate der Festkörperspeicherungsvorrichtung mit der vorbestimmten Fehlerrate.
  3. Verfahren gemäß Anspruch 2, bei dem das Testen ferner das Durchführen einer Lese-/Schreib-Vergleich-Operation an der zumindest einen ausgewählten Zelle aufweist.
  4. Verfahren gemäß einem der Ansprüche 1 bis 3, das ferner das Analysieren einer beabsichtigten Benutzeranwendung der Festkörperspeicherungsvorrichtung aufweist, bei dem das Auswählen ferner auf der beabsichtigten Benutzeranwendung basiert.
  5. Verfahren gemäß einem der Ansprüche 1 bis 4, bei dem das Auswählen ferner das Schalten eines Auswahleinrichtungshebels aufweist, um einem gewünschten Fehlerkorrekturcode auszuwählen.
  6. Verfahren gemäß einem der Ansprüche 1 bis 5, bei dem die Festkörperspeicherungsvorrichtung eine Mehrzahl von magnetoresistiven Speicherungszellen aufweist.
  7. Verfahren gemäß einem der Ansprüche 1 bis 6, das ferner das Bestimmen einer Verschlechterungsrate der Speicherungsvorrichtung aufweist, bei dem das Auswählen ferner auf der Verschlechterungsrate basiert.
  8. Verfahren zum Konfigurieren einer Festkörperspeicherungsvorrichtung, das folgende Schritte aufweist: Bestimmen eines Werts, der eine Fehlerrate für eine Festkörperspeicherungsvorrichtung anzeigt (102); Auswählen eines Satzes eines Fehlerkorrekturcodes basierend auf dem Wert; und Installieren des ausgewählten Satzes des Fehlerkorrekturcodes in der Festkörperspeicherungsvorrichtung.
  9. Verfahren gemäß Anspruch 8, bei dem das Auswählen ferner auf einer vorgesehenen Anwendung für die Festkörperspeicherungsvorrichtung basiert.
  10. Verfahren gemäß Anspruch 8 oder 9, das ferner das Vergleichen des Werts mit einer vorbestimmten Schwelle aufweist, wobei das Auswählen auf dem Vergleichen basiert.
  11. Verfahren gemäß einem der Ansprüche 8 bis 10, das ferner folgende Schritte aufweist: Bestimmen eines Werts, der eine Verschlechterungsrate der Speicherungsvorrichtung anzeigt; und Vergleichen des Werts, der die Verschlechterungsrate anzeigt, mit einer Schwelle, wobei das Auswählen auf dem Vergleichen basiert.
  12. System (90) zum Konfigurieren von Festkörperspeicherungsvorrichtungen, das folgende Merkmale aufweist: eine Festkörperspeicherungsvorrichtung (102); und ein Fehlerkorrekturcode- (ECC-) Auswahlsystem (100), das konfiguriert ist, um automatisch einen Satz eines Fehlerkorrekturcodes auszuwählen, basierend auf einer Fehlerrate der Speicherungsvorrichtung, wobei das ECC-Auswahlsystem ferner konfiguriert ist, um den ausgewählten Satz des Fehlerkorrekturcodes in der Festkörperspeicherungsvorrichtung zu installieren.
  13. System gemäß Anspruch 12, bei dem das ECC-Auswahlsystem ferner konfiguriert ist, um Informationen zu empfangen, die eine beabsichtigte Anwendung für die Speicherungsvorrichtung anzeigen, und den Satz des Fehlerkorrekturcodes basierend auf den Informationen auszuwählen.
  14. System gemäß Anspruch 12 oder 13, bei dem das ECC-Auswahlsystem konfiguriert ist, um einen Wert zu bestimmen, der die Fehlerrate anzeigt, und den Wert mit einer vorbestimmte Schwelle zu vergleichen.
  15. System gemäß einem der Ansprüche 12 bis 14, bei dem das ECC-Auswahlsystem konfiguriert ist, um den Satz des Fehlerkorrekturcodes basierend auf einer Ver schlechterungsrate der Speicherungsvorrichtung auszuwählen.
  16. Computerlesbares Medium, das ein Fehlerkorrekturcode-Auswahlsystem (100) zur Verwendung mit einer Festkörperspeicherungsvorrichtung aufweist, wobei das computerlesbare Medium folgende Merkmale aufweist: eine Logik, die konfiguriert ist, um Informationen (104) zu empfangen, die der Festkörperspeicherungsvorrichtung entsprechen; eine Logik, die konfiguriert ist, um die Informationen zu analysieren, die der Festkörperspeicherungsvorrichtung entsprechen; und eine Logik, die konfiguriert ist, um einen Satz eines Fehlerkorrekturcodes zur Verwendung mit der Festkörperspeicherungsvorrichtung basierend auf den Informationen auszuwählen, die gemäß der Festkörperspeicherungsvorrichtung empfangen werden.
  17. Computerlesbares Medium gemäß Anspruch 16, bei dem die Informationen eine Fehlerrate für die Speicherungsvorrichtung anzeigen.
  18. Computerlesbares Medium gemäß Anspruch 17, bei dem die Informationen ferner eine beabsichtigte Anwendung für die Speicherungsvorrichtung anzeigen.
  19. Computerlesbares Medium gemäß Anspruch 18, bei dem die Informationen ferner eine Verschlechterungsrate für die Speicherungsvorrichtung anzeigen.
  20. System zum Konfigurieren von Festkörperspeicherungsvorrichtungen, das folgende Merkmale aufweist: eine Einrichtung zum Testen einer Festkörperspeicherungsvorrichtung und zum Bestimmen eines Werts, der eine Fehlerrate für die Speicherungsvorrichtung anzeigt; eine Einrichtung zum Vergleichen des Werts mit einer vorbestimmten Schwelle; eine Einrichtung zum Auswählen eines Satzes eines Fehlerkorrekturcodes basierend auf der Vergleichseinrichtung; und eine Einrichtung zum Installieren des ausgewählten Satzes des Fehlerkorrekturcodes in der Speicherungsvorrichtung.
  21. System gemäß Anspruch 20, bei dem die Auswahleinrichtung ferner konfiguriert ist, um den Fehlerkorrekturcode basierend auf einer beabsichtigten Anwendung für die Speicherungsvorrichtung auszuwählen.
  22. System gemäß Anspruch 20 oder 21, bei dem die Auswahleinrichtung ferner konfiguriert ist, um den Fehlerkorrekturcode basierend auf einer Verschlechterungsrate für die Speicherungsvorrichtung auszuwählen.
DE102004063571A 2004-01-29 2004-12-30 System und Verfahren zum Konfigurieren einer Festkörperspeicherungsvorrichtung mit Fehlerkorrekturcodierung Withdrawn DE102004063571A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/767,188 2004-01-29
US10/767,188 US7210077B2 (en) 2004-01-29 2004-01-29 System and method for configuring a solid-state storage device with error correction coding

Publications (1)

Publication Number Publication Date
DE102004063571A1 true DE102004063571A1 (de) 2005-08-25

Family

ID=34807647

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004063571A Withdrawn DE102004063571A1 (de) 2004-01-29 2004-12-30 System und Verfahren zum Konfigurieren einer Festkörperspeicherungsvorrichtung mit Fehlerkorrekturcodierung

Country Status (3)

Country Link
US (1) US7210077B2 (de)
JP (1) JP2005216301A (de)
DE (1) DE102004063571A1 (de)

Families Citing this family (164)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7865809B1 (en) 2004-03-11 2011-01-04 Super Talent Electronics, Inc. Data error detection and correction in non-volatile memory devices
CN101031971A (zh) * 2004-08-02 2007-09-05 皇家飞利浦电子股份有限公司 数据存储和重放设备
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
US20070011513A1 (en) * 2005-06-13 2007-01-11 Intel Corporation Selective activation of error mitigation based on bit level error count
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
KR101208312B1 (ko) * 2006-05-12 2012-12-05 애플 인크. 조절가능한 용량을 가진 메모리 디바이스
WO2007132456A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
US8171380B2 (en) * 2006-10-10 2012-05-01 Marvell World Trade Ltd. Adaptive systems and methods for storing and retrieving data to and from memory cells
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US8151163B2 (en) * 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
JP4692843B2 (ja) * 2006-12-28 2011-06-01 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR100842680B1 (ko) * 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
JP4925301B2 (ja) * 2007-02-07 2012-04-25 株式会社メガチップス 半導体メモリシステム
US8019959B2 (en) * 2007-02-09 2011-09-13 Marvell World Trade Ltd. Nonvolatile memory system
US8122323B2 (en) * 2007-03-08 2012-02-21 Intel Corporation Method, apparatus, and system for dynamic ECC code rate adjustment
DE102007011801B4 (de) * 2007-03-12 2009-04-02 Qimonda Ag Schaltung zum Erzeugen eines Fehlercodierungsdatenblocks, Vorrichtung mit der Schaltung, Vorrichtung zum Erzeugen eines Fehlercodierungsdatenblocks
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US8429493B2 (en) 2007-05-12 2013-04-23 Apple Inc. Memory device with internal signap processing unit
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8095851B2 (en) * 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
WO2009037697A2 (en) 2007-09-20 2009-03-26 Densbits Technologies Ltd. Improved systems and methods for determining logical values of coupled flash memory cells
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8527819B2 (en) 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
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
US8270246B2 (en) 2007-11-13 2012-09-18 Apple Inc. Optimized selection of memory chips in multi-chips memory devices
US8429492B2 (en) * 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
WO2009072103A2 (en) 2007-12-05 2009-06-11 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
WO2009072102A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
WO2009074979A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Chien-search system employing a clock-gating scheme to save power for error correction decoder and other applications
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
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8493783B2 (en) 2008-03-18 2013-07-23 Apple Inc. Memory device readout using multiple sense times
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
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
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US8332725B2 (en) 2008-08-20 2012-12-11 Densbits Technologies Ltd. Reprogramming non volatile memory portions
US8213229B2 (en) * 2008-08-22 2012-07-03 HGST Netherlands, B.V. Error control in a flash memory device
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
KR101059673B1 (ko) * 2008-12-26 2011-08-25 서울대학교산학협력단 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법
KR101042197B1 (ko) * 2008-12-30 2011-06-20 (주)인디링스 메모리 컨트롤러 및 메모리 관리 방법
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
KR20100104623A (ko) * 2009-03-18 2010-09-29 삼성전자주식회사 데이터 처리 시스템 및 그것의 부호율 제어 스킴
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
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
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
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
US8370702B2 (en) * 2009-06-10 2013-02-05 Micron Technology, Inc. Error correcting codes for increased storage capacity in multilevel memory devices
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8615700B2 (en) * 2009-08-18 2013-12-24 Viasat, Inc. Forward error correction with parallel error detection for flash 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
US8868821B2 (en) 2009-08-26 2014-10-21 Densbits Technologies Ltd. Systems and methods for pre-equalization and code design for a flash memory
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
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
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
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
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8607124B2 (en) 2009-12-24 2013-12-10 Densbits Technologies Ltd. System and method for setting a flash memory cell read threshold
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8572311B1 (en) 2010-01-11 2013-10-29 Apple Inc. Redundant data storage in multi-die memory systems
US8447916B2 (en) * 2010-02-17 2013-05-21 Microsoft Corporation Interfaces that facilitate solid state storage configuration
US8341502B2 (en) 2010-02-28 2012-12-25 Densbits Technologies Ltd. System and method for multi-dimensional decoding
US8516274B2 (en) 2010-04-06 2013-08-20 Densbits Technologies Ltd. Method, system and medium for analog encryption in a flash memory
US8527840B2 (en) 2010-04-06 2013-09-03 Densbits Technologies Ltd. System and method for restoring damaged data programmed on a flash device
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
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
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
WO2011159806A2 (en) * 2010-06-15 2011-12-22 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8539311B2 (en) 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US8468431B2 (en) 2010-07-01 2013-06-18 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
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8493781B1 (en) 2010-08-12 2013-07-23 Apple Inc. Interference mitigation using individual word line erasure operations
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
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
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
GB2498298B (en) * 2010-09-29 2017-03-22 Ibm Decoding in solid state memory devices
US9229808B2 (en) * 2010-10-01 2016-01-05 Pure Storage, Inc. Reconstruct reads in a raid array with dynamic geometries
KR101606718B1 (ko) * 2010-10-27 2016-03-28 엘에스아이 코포레이션 플래시 메모리 기반 데이터 저장을 위한 적응적 ecc 기술들
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
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
KR101750457B1 (ko) * 2010-12-30 2017-06-23 삼성전자주식회사 Ecc를 이용하는 메모리 장치 및 그 시스템
US10079068B2 (en) 2011-02-23 2018-09-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Devices and method for wear estimation based memory management
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
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies 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
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. 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
US8667211B2 (en) 2011-06-01 2014-03-04 Densbits Technologies Ltd. System and method for managing a non-volatile memory
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
WO2013032663A2 (en) * 2011-09-01 2013-03-07 Rambus Inc. Variable code rate transmission
US8553468B2 (en) 2011-09-21 2013-10-08 Densbits Technologies Ltd. System and method for managing erase operations in a non-volatile memory
US9203900B2 (en) * 2011-09-23 2015-12-01 Netapp, Inc. Storage area network attached clustered storage system
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
JP5768022B2 (ja) 2012-03-19 2015-08-26 株式会社東芝 メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法
US8769387B1 (en) * 2012-03-20 2014-07-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration System for configuring modular telemetry transponders
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
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
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
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
US8898549B2 (en) * 2013-02-12 2014-11-25 Seagate Technology Llc Statistical adaptive error correction for a flash memory
TWI502597B (zh) * 2013-05-13 2015-10-01 Univ Nat Taiwan Science Tech 非揮發性記憶體的資料反轉與回復方法
CN103269230B (zh) * 2013-05-28 2017-02-22 中国科学院自动化研究所 一种自适应调整纠错码的容错系统及方法
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
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
US9323609B2 (en) * 2013-11-15 2016-04-26 Intel Corporation Data storage and variable length error correction information
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
JP6347527B2 (ja) * 2014-04-25 2018-06-27 Quadrac株式会社 通信システム及び通信装置
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US10116336B2 (en) * 2014-06-13 2018-10-30 Sandisk Technologies Llc Error correcting code adjustment for a data storage device
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
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
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 株式会社東芝 キャッシュメモリシステム
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US11515891B2 (en) * 2020-12-22 2022-11-29 Intel Corporation Application of low-density parity-check codes with codeword segmentation
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5961660A (en) * 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
JP3184129B2 (ja) * 1997-09-29 2001-07-09 甲府日本電気株式会社 記憶装置
US6169686B1 (en) 1997-11-20 2001-01-02 Hewlett-Packard Company Solid-state memory with magnetic storage cells
US6560725B1 (en) * 1999-06-18 2003-05-06 Madrone Solutions, Inc. Method for apparatus for tracking errors in a memory system
US6279072B1 (en) * 1999-07-22 2001-08-21 Micron Technology, Inc. Reconfigurable memory with selectable error correction storage
JP2002056671A (ja) * 2000-08-14 2002-02-22 Hitachi Ltd ダイナミック型ramのデータ保持方法と半導体集積回路装置
US6941505B2 (en) * 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method
US7032158B2 (en) * 2001-04-23 2006-04-18 Quickshift, Inc. System and method for recognizing and configuring devices embedded on memory modules
US20030023922A1 (en) * 2001-07-25 2003-01-30 Davis James A. Fault tolerant magnetoresistive solid-state storage device
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code

Also Published As

Publication number Publication date
US7210077B2 (en) 2007-04-24
US20050172179A1 (en) 2005-08-04
JP2005216301A (ja) 2005-08-11

Similar Documents

Publication Publication Date Title
DE102004063571A1 (de) System und Verfahren zum Konfigurieren einer Festkörperspeicherungsvorrichtung mit Fehlerkorrekturcodierung
DE10233642B4 (de) Fehlerkorrektur-Kodierung und -Dekodierung in einer Festkörper-Speicherungsvorrichtung
DE102006033649B4 (de) Speicherbauelement und Verfahren zum Konfigurieren eines Speicherbauelements
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE102013222321B4 (de) Elektronisches Gerät mit einer Vielzahl von Speicherzellen und mit physikalisch unklonbarer Funktion
DE602004011097T2 (de) Flash-speicherdatenkorrektur- und scrub-techniken
DE102008003944B4 (de) Speichersystem und Programmierverfahren für ein Speichersystem
DE102008030264B4 (de) Verfahren zum Lesen eines Flashspeichers und Speichersystem
DE102017104257A1 (de) Auf Zellenstrom basierende Bitleitungsspannung
DE102020115736A1 (de) Halbleiterspeichervorrichtung und Verfahren zum Betreiben der Halbleiterspeichervorrichtungen
DE102011075966B4 (de) Verbesserter Mehrpegelspeicher
DE69022287T2 (de) Halbleiterspeicheranordnung mit selbstkorrigierender Funktion.
DE102005052698A1 (de) Verfahren zur Verarbeitung von nichtflüchtig gespeicherten Daten
DE112010004863T5 (de) Datenverwaltung in Festkörperspeichersystemen
DE102008030858A1 (de) Speicher mit dynamischer Redundanzkonfigurierung
DE102008003113A1 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE102008031288A1 (de) Speichervorrichtung und Verfahren zum Testen einer Speichervorrichtung
DE3209679A1 (de) Halbleiter-speichereinrichtung
DE112020004922T5 (de) Speicherungsvorrichtung mit erhöhter beständigkeit
DE102020119694A1 (de) Verfahren zur Steuerung einer Operation einer nichtflüchtigen Speichervorrichtung unter Verwendung von Maschinenlernen und Speichersystem
DE102015113414A1 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE112020003489T5 (de) Speichersteuerung und verfahren zum decodieren von speichervorrichtungen mit vorzeitigem hartdecodierabbruch
DE102018123887A1 (de) Nichtflüchtiges Speichersystem. das fehlerhafte Blöcke regeneriert
DE102019116097A1 (de) Vorprogramm-lesevorgang zur behebung von wortleitungsfehlern

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal