DE60316171T2 - Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem - Google Patents

Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem Download PDF

Info

Publication number
DE60316171T2
DE60316171T2 DE60316171T DE60316171T DE60316171T2 DE 60316171 T2 DE60316171 T2 DE 60316171T2 DE 60316171 T DE60316171 T DE 60316171T DE 60316171 T DE60316171 T DE 60316171T DE 60316171 T2 DE60316171 T2 DE 60316171T2
Authority
DE
Germany
Prior art keywords
zone
memory
zones
physical
blocks
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.)
Expired - Lifetime
Application number
DE60316171T
Other languages
English (en)
Other versions
DE60316171D1 (de
Inventor
Carlos J. Los Gatos Gonzalez
Kevin M. San Jose Conley
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.)
SanDisk Corp
Original Assignee
SanDisk Corp
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=32230329&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60316171(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by SanDisk Corp filed Critical SanDisk Corp
Application granted granted Critical
Publication of DE60316171D1 publication Critical patent/DE60316171D1/de
Publication of DE60316171T2 publication Critical patent/DE60316171T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Processing And Handling Of Plastics And Other Materials For Molding In General (AREA)
  • Automatic Assembly (AREA)
  • Moulds For Moulding Plastics Or The Like (AREA)
  • Investigating Or Analyzing Materials By The Use Of Electric Means (AREA)
  • Ventilation (AREA)
  • Safety Devices In Control Systems (AREA)

Description

  • Die vorliegende Erfindung betrifft allgemein digitale Massendatenspeichersysteme und spezieller Systeme und Verfahren, um zu ermöglichen, dass die den Speicherbereichen eines nichtflüchtigen Speichersystems zugeordnete Abnutzung automatisch über dessen Speicherbereiche verteilt wird.
  • Die Nutzung von nichtflüchtigen Speichersystemen wie beispielsweise Flash-Speichersystemen nimmt aufgrund der kompakten physischen Größe solcher Speichersysteme und der Möglichkeit, nichtflüchtige Speicher wiederholt neu zu programmieren, zu. Die kompakte physische Größe von Flash-Speichersystemen ermöglicht die Nutzung solcher Speichersysteme in Geräten, die zunehmende Verbreitung erfahren. Geräte, bei denen Flash-Speichersysteme genutzt werden, sind Digitalkameras, digitale Videokameras, digitale Musikabspielgeräte, tragbare Personalcomputer und GPS-Geräte, aber nicht ausschließlich. Durch die Möglichkeit der wiederholten Neuprogrammierung nichtflüchtiger Speicher, die in Flash-Speichersystemen enthalten sind, können Flash-Speichersysteme immer wieder genutzt werden.
  • Wenngleich nichtflüchtige Speicher oder spezieller nichtflüchtige Speicherzellen in Flash-Speichersystemen wiederholt programmiert und gelöscht werden können, kann jede Zelle oder physische Speicherstelle nur eine gewisse Anzahl von Malen gelöscht werden, bevor die Zelle abgenutzt ist. Bei einigen Systemen kann eine Zelle bis zu ungefähr zehntausendmal gelöscht werden, bevor die Zelle als unbrauchbar betrachtet wird. Bei anderen Systemen kann eine Zelle bis zu einhundertausendmal oder sogar bis zu einer Million Mal gelöscht werden, bevor die Zelle als verschlissen betrachtet wird. Wenn eine Zelle abgenutzt ist, wodurch ein Nutzungsausfall oder eine deutliche Leistungsverschlechterung in einem Teil des Gesamtspeichervolumens des Flash-Speichersystems bewirkt wird, kann dies für einen Nutzer des Flash-Speichersystems nachteilige Auswirkungen haben, da beispielsweise gespeicherte Daten verloren gehen oder es unmöglich ist, Daten zu speichern.
  • Die Abnutzung an Zellen oder physischen Speicherstellen in einem Flash-Speichersystem variiert in Abhängigkeit davon, wie oft jede der Zellen programmiert wird. Wenn eine Zelle oder allgemeiner ein Speicherelement einmal programmiert wird und danach effektiv niemals umprogrammiert wird, wird die dieser Zelle zuzuordnende Abnutzung allgemein relativ gering sein. Wenn eine Zelle jedoch wiederholt beschrieben und gelöscht wird, wird der dieser Zelle zuzuordnende Verschleiß im Allgemeinen relativ hoch sein. Da von Hosts, z. B. Systemen, die auf ein Flash-Speichersystem zugreifen oder ein solches nutzen, um auf Daten zuzugreifen, die in einem Flash-Speichersystem gespeichert sind, logische Blockadressen (LBAs) genutzt werden, werden, wenn ein Host wiederholt dieselben LBAs nutzt, um Daten zu schreiben und zu überschreiben, wiederholt dieselben physischen Speicherstellen oder -zellen in dem Flash-Speichersystem beschrieben und gelöscht, wie für Fachleute auf dem Gebiet klar sein wird.
  • Wenn einige Zellen effektiv verschlissen sind, während andere Zellen relativ unabgenutzt sind, beeinträchtigt das Vorhandensein der abgenutzten Zellen allgemein das Gesamtleistungsverhalten des Flash-Speichersystems. Neben der Verschlechterung des Leistungsverhaltens, das mit den abgenutzten Zellen an sich in Zusammenhang steht, kann das Gesamtleistungsverhalten des Flash-Speichersystems negativ beeinflusst werden, wenn eine unzureichende Anzahl von nicht abgenutzten Zellen zur Verfügung steht, um gewünschte Daten zu speichern. Oft kann ein Flash-Speichersystem als unbrauchbar erachtet werden, wenn in dem Flash-Speichersystem eine kritische Anzahl von abgenutzten Zeilen vorhanden ist, selbst wenn viele andere Zellen in dem Flash-Speichersystem relativ unabgenutzt sind.
  • Um die Wahrscheinlichkeit zu erhöhen, dass Zellen in einem Flash-Speichersystem relativ gleichmäßig abgenutzt werden, werden häufig Abnutzungsausgleichsvorgänge ausgeführt. Abnutzungsausgleichsvorgänge sind im Allgemeinen dafür ausgelegt zu ermöglichen, dass die Zellen, die bestimmten LBAs zugeordnet sind, in solcher Weise ausgetauscht werden, dass dieselben LBAs nicht immer denselben Zellen zugeordnet sind. Durch Änderung der Zellenzuordnungen für LBAs ist es weniger wahrscheinlich, dass eine bestimmte Zelle viel eher abgenutzt wird, als andere Zellen abgenutzt werden.
  • Ein herkömmlicher Abnutzungsausgleichsprozess beinhaltet das Austauschen physischer Speicherstellen, auf welche zwei relativ große Teile von Verbraucher- oder Host-LBAs abgebildet sind. Das bedeutet, die LBAs, die relativ großen Abschnitten von Speicherzellen zugeordnet sind, werden ausgetauscht. Ein solcher auch als "Swapping" bezeichneter Austausch wird über einen manuellen Befehl von einem Verbraucher initiiert, z. B. durch die Nutzung eines Hosts, und ist infolgedessen für den Verbraucher nicht transparent. Außerdem sind Austauschvorgänge, die mit dem Verschieben von Daten zwischen zwei relativ großen Abschnitten von Speicherzellen einhergehen, zeitaufwendig und daher ineffizient. Außerdem kann das Leistungsverhalten des gesamten Flash-Speichersystems durch Swapping-Vorgänge mit relativ langer Dauer, welche beträchtliche Ressourcen in Anspruch nehmen, beispielsweise Zeit und Verarbeitungsleistung, die dem gesamten Flash-Speichersystem zuzuordnen sind, negativ beeinflusst werden. Das Verschieben von Daten von einer ersten Speicherzelle beinhaltet typischerweise das Kopieren der Daten an eine andere Speicherstelle und das Löschen der Daten von der ersten Speicherstelle.
  • Es ist möglich, einen Abnutzungsausgleich zu vermeiden, indem man die Zellen einfach verschleißen lässt. Sobald die Zellen effektiv abgenutzt sind, können die Sektoren, die den Zellen zugeordnet sind, durch Abbilden der den Sektoren zugeordneten Adressen auf Reservebereiche neu zugeordnet werden. Da die Anzahl an Reservebereichen oder -zellen begrenzt oder wertvoll ist, ist es möglich, dass nicht immer Reservebereiche vorhanden sind, auf welche Sektoren, die unbrauchbaren Zellen zugeordnet sind, abgebildet werden können. Außerdem ist es möglich, wenn Sektoren erst dann effektiv neu abgebildet werden, nachdem Zellen unbrauchbar geworden sind, dass sich das Leistungsverhalten des Flash-Speichersystems insgesamt verschlechtert.
  • Es wird daher ein Verfahren und eine Vorrichtung zum effizienten und transparenten Ausführen eines Abnutzungsausgleichs in einem Flash-Speichersystem benötigt. Das bedeutet, es wird ein automatisierter Abnutzungsausgleichsprozess benötigt, welcher das Leistungsverhalten eines Flash-Speichersystems nicht negativ beeinflusst, wobei gleichzeitig eine gleichmäßigere Abnutzung der physischen Speicherzellen, die dem Flash-Speichersystem zugeordnet sind, begünstigt wird.
  • Die EP 0 544 252 offenbart ein Speichersystem, bei welchem Daten zu Teilen des Speichers geleitet werden, in welchen die geringste Anzahl von Programmierungsvorgängen erfolgt ist.
  • Die vorliegende Erfindung bezieht sich auf ein Verfahren zum Ausführen eines automatischen Abnutzungsausgleichs in einem nichtflüchtigen Speichersystem. Das Verfahren lässt sich auf ein Speichersystem anwenden, das eine Mehrzahl von Einheiten aus löschbaren und erneut programmierbaren, nichtflüchtigen Speicherzellen umfasst, die benachbarte physikalische Adressen aufweisen, die in Zonen gegliedert werden, mit Adressgrenzen zwischen diesen, und wobei auf jede der Zonen ein verschiedener Bereich von logischen Adressen abgebildet wird. Das Verfahren umfasst das Neuzuweisen der Grenzadressen, um zumindest eine Einheit aus jeder der Zonen zu löschen und die zumindest eine Einheit zu einer angrenzenden Zone hinzuzufügen, ohne die Anzahl der Einheiten in den einzelnen Zonen zu verändern; danach das Zugreifen auf die Zonen, um Daten in die neu zugewiesenen Speicherzelleneinheiten in diesen zu programmieren oder Daten aus diesen zu lesen, entsprechend den logischen Adressen der Daten; und umfasst das wiederholte Neuzuweisen der Grenzadressen und Zugreifen auf die Zonen, zumindest bis die Speicherzelleneinheiten alle aus ihren Zonen in angrenzende Zonen verschoben worden sind, um dadurch die Nutzung der Einheiten, auf welche über die logischen Adressen zugegriffen wird, zu verteilen. Bei bevorzugten Ausführungsformen der Erfindung umfasst das Neuzuweisen der Grenzadressen das Löschen einer Anzahl von Einheiten aus jeder der Zonen, die weniger als zehn Prozent der Einheiten in der Zone ausmacht, sowie das Hinzufügen der Anzahl von Einheiten zu einer angrenzenden Zone.
  • Ein erfindungsgemäßes Verfahren zum Ausführen eines automatisierten Abnutzungsausgleichs in einem Speichersystem, das eine erste Zone umfasst, welche eine erstes Speicherelement aufweist, das Inhalte umfasst, sowie eine zweite Zone, umfasst das Identifizieren des ersten Speicherelements und das Assoziieren der Inhalte des ersten Speicherelements mit der zweiten Zone, bei gleichzeitigem Disassoziieren der Inhalte des ersten Speicherelements von der ersten Zone. Bei einer Ausführungsform beinhaltet das Assoziieren der Inhalte des ersten Speicherelements mit der zweiten Zone das Kopieren der Inhalte eines zweiten Speicherelements in ein drittes Speicherelement und danach das Verschieben der Inhalte des ersten Speicherelements in das zweite Speicherelement.
  • Durch Verschieben relativ kleiner Datenmengen in unterschiedliche Speicherelemente, z. B. physische Blöcke, während eines Abnutzungsausgleichsprozesses unter Nutzung eines sukzessiven, automatischen Abnutzungsausgleichsprozesses, kann bei einer Ausführungsform der Erfindung eine gleichmäßigere Abnutzung der Speicherelemente in einem Speicherbauelement erreicht werden, da Speicherelemente, die logischen Blockadressen zugeordnet sind, die oft beschrieben und gelöscht werden, durch Speicherelemente ersetzt werden können, welche nicht oft beschrieben und gelöscht worden sind, bevor sie den logischen Blockadressen zugeordnet werden, welche oft beschrieben und gelöscht werden. Analog können Speicherelemente, die logischen Blockadressen zugeordnet sind, welche selten beschrieben und gelöscht werden, durch Speicherelemente ersetzt werden, die logischen Blockadressen zugeordnet waren, die öfter beschrieben und gelöscht werden, wodurch ebenfalls eine einheitlichere Abnutzung der Speicherelemente ermöglicht wird. Wenn relativ geringe Datenmengen zu anderen Speicherelementen verschoben werden, können die der Ausführung des Abnutzungsausgleichs zuzuordnenden Leistungseinbußen deutlich reduziert werden.
  • Bei einem Zonenmigrationsschema umfasst ein Speichersystem, das Informationen speichert, eine erste Zone mit einem ersten Speicherelement sowie eine zweite Zone mit einem zweiten Speicherelement. Das erste Speicherelement ist dafür ausgelegt, Inhalte zu enthalten, z. B. Dateninformationen. Ein Abnutzungsausgleichsprozessor des Speichersystems ist dafür ausgelegt, das erste Speicherelement zu identifizieren und die Inhalte des ersten Speicherelements dem zweiten Speicherelement zuzuordnen. Bei einer Ausführungsform umfasst die zweite Zone ein drittes Speicherelement, und der Abnutzungsausgleichsprozessor kopiert die Inhalte des zweiten Speicherelements in das dritte Speicherelement, löscht das zweite Speicherelement und kopiert die Inhalte des ersten Speicherelements in das zweite Speicherelement. Bei einer solchen Ausführung kann das Speichersystem Abbildungsinformationen umfassen, welche von dem Abnutzungsausgleichsprozessor aktualisiert werden, sodass sie angeben, dass das zweite Speicherelement der ersten Zone zugeordnet ist, und angeben, dass die Zuordnung des ersten Speicherelements zu der ersten Zone aufgehoben ist.
  • Ein Verfahren zum Ausführen eines automatisierten Abnutzungsausgleichs in einem Speichersystem kann ein Zonenaustauschschema beinhalten, welches umfasst, eine erste Zone festzulegen, die dem Speichersystem zugeordnet ist, und eine zweite Zone festzulegen, die ebenfalls dem Speichersystem zugeordnet ist. Die erste Zone umfasst ein erstes Speicherelement, das erste Inhalte enthält, und die zweite Zone umfasst ein zweites Speicherelement, das zweite Inhalte enthält. Das Verfahren umfasst außerdem das Speichern der ersten Inhalte in dem zweiten Speicherelement und das Speichern der zweiten Inhalte in dem ersten Speicherelement. Sobald die Inhalte gespeichert sind, wird, wenn auf die ersten Inhalte zugegriffen wird, auf die ersten Inhalte in dem zweiten Speicherelement zugegriffen, und wenn auf die zweiten Inhalte zugegriffen wird, auf die zweiten Inhalte in dem ersten Speicherelement zugegriffen. Bei einer Ausführungsform werden im Wesentlichen sämtliche originalen Inhalte von Speicherelementen in der ersten Zone in Speicherelemente in der zweiten Zone gespeichert, und im Wesentlichen sämtliche originalen Inhalte der Speicherelemente in der zweiten Zone werden in den Speicherelementen in der ersten Zone gespeichert.
  • Weitere Aspekte, Vorteile und Merkmale der vorliegenden Erfindung sind in der folgenden Beschreibung exemplarischer Beispiele derselben umfasst.
  • Die Erfindung kann am besten unter Bezugnahme auf die folgende Beschreibung verstanden werden, die in Verbindung mit den beigefügten Zeichnungen gegeben wird, in welchen:
  • 1a eine schematische Darstellung eines allgemeinen Hostsystems ist, das ein nichtflüchtiges Speicherbauelement enthält.
  • 1b stellt eine schematische Darstellung eines Speichersystems dar, z. B. des Speicherbauelements 120 aus 1a.
  • 2 stellt eine schematische Darstellung einer Ausführungsform eines nichtflüchtigen Speichersystems dar, bei welchem ein Abnutzungsausgleichsschema mit direkter Adressierung implementiert werden kann.
  • 3a ist eine schematische Darstellung einer Ausführungsform eines nichtflüchtigen Speichers, der physische Speicherstellen und Sektorensätze umfasst.
  • 3b stellt eine schematische Darstellung einer Ausführungsform eines nichtflüchtigen Speichers dar, welcher physische Speicherstellen und Sektorensätze umfasst, z. B. des nichtflüchtigen Speichers 304 aus 3a, nachdem Sektorensätze vertauscht worden sind.
  • 4 ist ein Prozessablaufdiagramm, welches die Schritte darstellt, die mit dem Festlegen von Sektorensätzen in einem nichtflüchtigen Speicher, der einem Abnutzungsausgleichsprozess unterzogen werden soll, verknüpft sind.
  • 5 ist ein Prozessablaufdiagramm, welches die Schritte darstellt, die mit dem Abnutzungsausgleichsprozess verknüpft sind, d. h. dem Schritt 428 aus 4.
  • 6 ist eine schematische Darstellung einer Ausführungsform eines nichtflüchtigen Speichersystems, das Zonen umfasst.
  • 7 ist ein Prozessablaufdiagramm, welches die Schritte darstellt, die mit einem allgemeinen Abnutzungsausgleichsprozess in einem zoneninternen Löschgruppenbildungskontext verknüpft sind.
  • 8 ist ein Prozessablaufdiagramm, welches die Schritte darstellt, die mit einem Verfahren zur Ausführung eines Abnutzungsausgleichs im Kontext eines Zonenaustauschs verknüpft sind.
  • 9 ist ein Prozessablaufdiagramm, welches die Schritte darstellt, die mit einem Verfahren des Abnutzungsausgleichs unter Nutzung einer Zonengrenze-Migration verknüpft sind.
  • 10 ist eine schematische Darstellung des Anfangszustands eines Speicherbauelements sowie des Zustands des Speicherbauelements nach einem Zonengrenze-Migrationsprozess oder -Prozessen, z. B. dem Prozess 900 aus 9.
  • 11a ist eine schematische Darstellung des Anfangszustands eines Speicherbauelements vor einem Zonengrenze-Migrationsprozess.
  • 11b ist eine schematische Darstellung eines Speicherbauelements, d. h. des Bauelements 1100 aus 11a, während anfänglicher Schritte einer Zonengrenze-Migration.
  • 11c ist eine schematische Darstellung eines Speicherbauelements, d. h. des Bauelements 1100 aus 11a, nachdem anfängliche Schritte einer Zonengrenze-Migration erfolgt sind.
  • 12a ist eine schematische Darstellung einer Zone, die physische Blöcke umfasst, vor einem zoneninternen Abnutzungsausgleichsprozess.
  • 12b ist eine schematische Darstellung einer Zone, d. h. der Zone 1200 aus 12a, die physische Blöcke umfasst, nach einem zoneninternen Abnutzungsausgleichsprozess.
  • 13a ist eine schematische Darstellung von Zonen, welche physische Blöcke umfassen, vor einem Zonenaustausch-Abnutzungsausgleichsprozess.
  • 13b ist eine schematische Darstellung von Zonen, d. h. den Zonen 1300 aus 13a, welche physische Blöcke umfassen, nach einem Zonenaustausch-Abnutzungsausgleichsprozess.
  • A. SPEICHERORGANISATION UND GRUNDLEGENDE DEFINITIONEN
  • Die vorliegenden Ausführungsformen beziehen sich auf einen Abnutzungsausgleich in Speichersystemen, bei denen mit zunehmender Anzahl von Lösch- und Schreibzyklen eine Verschlechterung des Leistungsverhaltens über die Zeit hin möglich ist. Wenngleich die vorliegend beschriebenen Ausführungsformen Speichersysteme auf Basis von nichtflüchtigen EEPROMs beschreiben, sind die verschiedenen Aspekte der vorliegenden Erfindung auf jede Art von Speichermedium anwendbar, das einer "Abnutzung" unterliegt. Beispielsweise stellt ein Phasenänderungsspeicher einen aufkommenden Typ in der Technologie nichtflüchtiger Speicher dar. Informationen werden durch Änderung der Phase eines gegebenen Materials gespeichert. Solche Systeme unterliegen ebenfalls einer "Abnutzung", wobei das Speichermedium mit zunehmender Anzahl der Zyklen, die das Medium durchlaufen hat, immer weniger in der Lage ist, Informationen zu speichern. Die vorliegenden Erfindungen lassen sich in einfacher Weise auf solche Technologien anwenden.
  • Bei einer Ausführungsform können nichtflüchtige Speicherzellen in Flash-Speichersystemen wiederholt programmiert und gelöscht werden, obgleich jede Zelle nur eine bestimmte Anzahl von Malen gelöscht werden kann, bevor die Zelle abgenutzt ist. Wenn eine Zelle abgenutzt ist, tritt eine relativ deutliche Verschlechterung des Leistungsverhaltens ein, die dem Teil des Gesamtspeichervolumens des Flash-Speichersystems zuzuordnen ist, der die abgenutzte Zelle umfasst, und Daten, die in diesem Teil gespeichert sind, können verloren gehen oder es kann unmöglich werden, Daten in diesem Teil zu speichern. Ein automatischer Abnutzungsausgleichsprozess, welcher das Leistungsverhalten eines Flash-Speichersystems nicht wesentlich negativ beeinflusst, ermöglicht, dass ein Abnutzungsausgleich sowohl effizient als auch im Wesentlichen regelmäßig stattfindet. Infolgedessen können Zellen, die dem Flash-Speichersystem zugeordnet sind, gleichmäßiger abnutzen, d. h. bestimmte Zellen werden im Allgemeinen nicht viel schneller abnutzen als andere Zellen. Somit kann die Nutzungszeit des Flash-Speichersystems verlängert werden, und zwar ohne wesentliche Einbuße im Leistungsverhalten. Da außerdem der Abnutzungsausgleich im Wesentlichen automatisch erfolgt, wird es für einen Nutzer unnötig, daran zu denken, einen Abnutzungsausgleichsprozess auszulösen.
  • Nehmen wir zunächst auf 1a Bezug, so soll ein allgemeines Hostsystem, das ein nichtflüchtiges Speicherbauelement, z. B. eine Speicherkarte wie etwa eine CompactFlash-Speicherkarte umfasst, beschrieben werden. Ein Host- oder Computersystem 100 umfasst im Allgemeinen einen Systembus 104, der es einem Mikroprozessor 108, einem Direktzugriffsspeicher (RAM) 112 und Eingabe/Ausgabeschaltungen 116 ermöglicht, zu kommunizieren. Es sollte erkannt werden, dass das Hostsystem 100 im Allgemeinen weitere Komponenten umfassen kann, z. B. Displayeinrichtungen und Vernetzungseinrichtungen, welche zum Zwecke der Veranschaulichung nicht gezeigt sind.
  • Das Hostsystem 100 kann allgemein in der Lage sein, Informationen zu erfassen oder zu speichern, darunter, aber nicht ausschließlich, Standbilddaten, Audiodaten und Videobilddaten. Solche Informationen können in Echtzeit erfasst werden und können drahtlos an das Hostsystem 100 übermittelt werden. Wenngleich das Hostsystem 100 im Wesentlichen ein beliebiges System darstellen kann, stellt das Hostsystem 100 typischerweise ein solches System wie eine digitale Kamera, eine Videokamera, ein zellulares Kommunikationsgerät, einen tragbaren Rechner, ein Audioabspielgerät oder ein Videoabspielgerät dar. Es sollte jedoch erkannt werden, dass das Hostsystem 100 allgemein im Wesentlichen ein beliebiges System umfassen kann, das Daten oder Informationen speichert und Daten oder Informationen abruft. Es kann auch ein System darstellen, das entweder nur Daten erfasst oder nur Daten abruft. Das bedeutet, das Hostsystem 100 kann ein zweckbestimmtes System darstellen, das Daten speichert, oder das Hostsystem 100 kann ein zweckbestimmtes System darstellen, das Daten liest. Beispielsweise kann das Hostsystem 100 eine Speicherbeschreibungseinrichtung darstellen, die nur dafür ausgelegt ist, Daten zu schreiben oder zu speichern. Alternativ kann das Hostsystem 100 ein solches Gerät wie einen MP3-Player darstellen, der typischerweise dafür ausgelegt ist, Daten zu lesen oder abzurufen, und nicht Daten zu erfassen.
  • Ein nichtflüchtiges Speicherbauelement 120 ist zur Kopplung mit dem Bus 104 ausgelegt, um Informationen zu speichern. Ein optionaler Schnittstellenschaltungsblock 130 kann dem nichtflüchtigen Speicherbauelement 120 ermöglichen, mit dem Bus 104 zu kommunizieren. Wenn er vorhanden ist, dient der Schnittstellenschaltungsblock 130, z. B. eine Schnittstelle, dazu, die Belastung auf dem Bus 104 zu reduzieren. Das nichtflüchtige Speicherbauelement 120 umfasst einen nichtflüchtigen Speicher 124 sowie ein Speichersteuerungssystem 128. Bei einer Ausführungsform kann das nichtflüchtige Speicherbauelement 120 auf einem einzelnen Chip oder Baustein implementiert sein. Alternativ kann das nichtflüchtige Speicherbauelement 120 auf einem Mehrchipmodul oder als mehrere diskrete Komponenten implementiert sein. Eine Ausführungsform eines nichtflüchtigen Speicherbauelements 120 soll nachstehend mit Bezug auf 1b detaillierter beschrieben werden. Das nichtflüchtige Speicherbauelement 120 kann im Wesentlichen jedes geeignete nichtflüchtige Speicherbauelement darstellen, z. B. eine entfernbare Speicherkarte oder ein eingebettetes Teilsystem.
  • Der nichtflüchtige Speicher 124 ist dafür ausgelegt, Daten in solcher Weise zu speichern, dass gegebenenfalls auf die Daten zugegriffen werden kann und diese gelesen werden können. Die Prozesse des Speicherns von Daten, des Lesens von Daten und des Löschens von Daten werden im Allgemeinen durch das Speichersteuerungssystem 128 gesteuert. Bei einer Ausführungsform organisiert das Speichersteuerungssystem 128 den Betrieb des nichtflüchtigen Speichers 124 in solcher Weise, dass dessen Standzeit im Wesentlichen maximiert wird, indem grundsätzlich bewirkt wird, dass Abschnitte des nichtflüchtigen Speichers 124 im Wesentlichen gleichmäßig abgenutzt werden.
  • Es ist allgemein beschrieben worden, dass das nichtflüchtige Speicherbauelement 120 ein Speichersteuerungssystem 128, d. h. einen Controller, umfasst. Speziell kann das nichtflüchtige Speicherbauelement 120 getrennte Chips für die Funktionen des nichtflüchtigen Speichers 124 und des Controllers 128 umfassen. Während beispielsweise nichtflüchtige Speicherbauelemente, darunter, aber nicht ausschließlich, PC-Karten, CompactFlash-Karten, MultiMedia-Karten und Secure Digital-Karten Controller umfassen, die auf einem separaten Chip implementiert sind, ist es möglich, dass andere nicht-flüchtige Speicherbauelemente keine Controller umfassen, die auf einem separaten Chip implementiert sind. Bei einer Ausführungsform, bei welcher das nichtflüchtige Speicherbauelement 120 keine separaten Speicher- und Controllerchips umfasst, können die Speicher- und die Controllerfunktion auf einem einzelnen Chip integriert sein. Außerdem kann der Controller in dem Hostsystem angesiedelt sein, und das nichtflüchtige Speicherbauelement 120 kann mit dem im Host vorgesehenen Controller über einen Verbinder oder eine andere Art von Schnittstelle verbunden werden. Unabhängig davon umfasst der Schutzumfang der vorliegenden Erfindungen sämtliche unterschiedliche Formen und Kombinationen eines Speichersystems, bei welchem der Grad der Abnutzung in einem Speichermedium durch ein Steuersystem gesteuert wird. Beispielsweise kann der Controller als Software in dem Mikroprozessor des Hostsystems implementiert sein.
  • Bezug nehmend auf 1b soll das nichtflüchtige Speicherbauelement 120 detaillierter entsprechend einer Ausführungsform der vorliegenden Erfindung beschrieben werden. Es sollte erkannt werden, dass 1b eine Ausführungsform des nichtflüchtigen Speicherbauelements 120 zeigt, die einen einzelnen Flash-Speicherchip 124 und einen separaten Controller 128 umfasst. Der Speicher 124 kann ein Array aus Speicherzellen darstellen, zusammen mit geeigneter Adressierungs- und Steuerschaltung, die auf einem Halbleitersubstrat ausgebildet sind, wobei in den einzelnen Speicherzellen ein oder mehr Datenbits gespeichert werden, indem in einzelnen Speicherelementen der Speicherzellen einer von zwei oder mehr Pegeln oder Ladungsverteilungen gespeichert werden. Ein nichtflüchtiger, elektrisch löschbarer und programmierbarer Flash-Nur-Lese-Speicher (EEPROM) stellt ein Beispiel eines üblichen Speichertyps für solche Systeme dar.
  • Bei der beschriebenen Ausführungsform kommuniziert der Controller 128 über einen Bus 15 mit einem Hostcomputer oder einem anderen System, welches das Speichersystem nutzt, um Daten zu speichern. Der Bus 15 stellt im Allgemeinen einen Teil des Busses 104 aus 1a dar. Das Steuersystem 128 steuert außerdem den Betrieb des Speichers 124, welcher ein Speicherzellenarray 11 umfassen kann, um Daten zu schreiben, die von dem Host bereitgestellt werden, Daten zu lesen, die von dem Host angefordert werden, und verschiedene Wartungsfunktionen beim Betreiben des Speichers 124 auszuführen. Das Steuerungssystem 128 kann einen Allzweck-Mikroprozessor oder Mikrocontroller umfassen, dem Speicher, verschiedene Logikschaltungen und dergleichen zugeordnet sind. Außerdem sind oft eine oder mehrere Zustandsmaschinen umfasst, um die Funktionsweise spezieller Routinen zu steuern.
  • Das Speicherzellenarray 11 wird von dem Steuerungssystem 128 typischerweise über Adressdecoder 17 adressiert. Die Decoder 17 können die korrekten Spannungen an Wort- und Bitleitungen des Arrays 11 anlegen, um Daten in eine Gruppe von Speicherzellen, die von dem Steuerungssystem 128 adressiert wird, zu programmieren, Daten aus dieser zu lesen oder eine solche zu löschen. Zusätzliche Schaltungen 19 können Datenregister umfassen, um Daten temporär zu speichern, die gelesen oder geschrieben werden, Programmiertreiber, welche die Spannungen kontrollieren, die an Elemente des Arrays angelegt werden, welche von den Daten abhängen, die in eine adressierte Gruppe von Zellen programmiert werden, sowie Zustandsmaschinen zum Steuern der Abfolge der verschiedenen Spannungen und Steuersignale. Die Schaltungen 19 können außerdem Leseverstärker und weitere Schaltungen umfassen, die erforderlich sind, um Daten aus einer adressierten Gruppe von Speicherzellen zu lesen. Daten, die in das Array 11 programmiert werden sollen, oder Daten, die kürzlich aus dem Array 11 gelesen worden sind, werden typischerweise in einem Pufferspeicher 21 in dem Steuerungssystem 128 gespeichert. Das Steuerungssystem 128 enthält üblicherweise außerdem verschiedene Register zum temporären Speichern von Befehls- und Statusdaten und dergleichen.
  • Bei einer speziellen Ausführungsform ist das Array 11 in eine große Anzahl von BLÖCKEN 0 – N von Speicherzellen unterteilt. Bei einer bevorzugten Ausführungsform stellt ein Block eine Löscheinheit dar, die minimale Anzahl von Speicherzellen, die zusammen gelöscht werden. Jeder Block ist typischerweise in eine Anzahl von Speicherseiten unterteilt, die ebenfalls in 1b dargestellt sind. Eine Speicherseite stellt die minimale Programmierungseinheit dar, und in jeder Speicherseite wird/werden typischerweise ein oder mehrere Sektor(en) von Nutzerdaten gespeichert. Ein Sektor stellt die kleinste Einheit von logischen Daten dar, die der Host adressieren wird oder zu dem nichtflüchtigen Speicher oder von diesem weg übertragen wird. Bei Plattenlaufwerk-Anwendungen sind dies typischerweise 512 Byte. Bei einigen nichtflüchtigen Speichern ist eine partielle Seitenprogrammierung möglich, wobei die einzelnen Bits, die nach einer ersten Programmierung in einem gelöschten Zustand verbleiben, bei nachfolgenden Seitenprogrammierungsvorgängen programmiert werden können, ohne zuerst die Seite zu löschen. Bei einigen Mehrzustandsspeichern kann es sogar möglich sein, dass Bits, die bereits in einem niedrigeren Programmierungszustand programmiert sind, in nachfolgenden Seitenprogrammierungsvorgängen in einen höheren Zustand programmiert werden. Bei diesen Speichern können Sektoren oder sogar Teile von Sektoren zu unterschiedlichen Zeitpunkten programmiert werden. Dennoch bleibt eine Speicherseite die grundlegende Programmierungseinheit; es handelt sich lediglich darum, dass einige Bits ausgeblendet werden und später programmiert werden. Die vorliegenden Erfindungen können auf jedes geeignete Speichersystem angewandt werden, unabhängig von der physischen Implementierung der Lösch-, Lese- und/oder Schreibeinheiten.
  • Wie in 1b der beschriebenen Ausführungsform gezeigt ist, kann eine Speicherseite sowohl Nutzerdaten als auch Overheaddaten umfassen. Overheaddaten umfassen typischerweise einen Fehlerkorrekturcode (ECC), der anhand der Nutzerdaten, die in der Speicherseite enthalten sind, berechnet worden ist, und der ECC kann einige der oder die gesamten Overheaddaten ausmachen. Ein Abschnitt 23 des Steuerungssystems 128 berechnet den ECC, wenn Daten in das Array 11 programmiert werden, und überprüft den ECC auch, wenn Daten aus dem Array 11 gelesen werden. Die Overheaddaten können außerdem die logische Adresse der Nutzerdaten, die physischen Adressen der Speicherseite und/oder des Blocks, Adressabbildungsinformationen, die Anzahl der Löschzyklen, die der physische Block erfahren hat, Verschlüsselungsinformationen und/oder andere Statistik oder Daten umfassen. In jeder Speicherseite kann ein Teil der oder können sämtliche Overheaddaten gespeichert sein, wie in 1b dargestellt ist. Alternativ kann ein Teil der oder können sämtliche Overheaddaten an einer spezifischen Speicherstelle in jedem Block gespeichert sein, oder sie können sogar in einem Block getrennt von den Nutzerdaten gespeichert sein.
  • Meistens ist in jeder Speicherseite ein Datensektor umfasst, eine Speicherseite kann stattdessen aber auch aus zwei oder mehr Sektoren gebildet werden, oder eine Speicherseite kann kleiner als ein Sektor sein. Beispielsweise beschreiben die US-Patente 5,890,192 und 5,430,859 das Programmieren und Lesen von Daten in Einheiten so genannter Chunks, wobei ein Chunk einen Bruchteil eines Sektors darstellt. Bei einigen Speichersystemen ist ein Sektor in einer Speicherseite umfasst, und eine Speicherseite kann einen Block bilden. Üblicher ist es, dass bei NAND-Speichersystemen ein oder mehrere Sektoren in jeder Speicherseite enthalten sind und 8, 16 oder 32 Speicherseiten einen Block bilden. Bei anderen Speichersystemen werden Blöcke aus einer relativ großen Anzahl von Speicherseiten, beispielsweise 512, 1024 oder noch mehr Speicherseiten, gebildet. Die Anzahl der Blöcke wird derart gewählt, dass eine gewünschte Datenspeicherkapazität für das Speichersystem bereitgestellt wird. Das Array 11 ist typischerweise in einige Unterarrays (nicht gezeigt) unterteilt, von denen jedes einen Teil der Blöcke enthält, wobei diese in gewisser Weise unabhängig voneinander arbeiten, um den Grad der Parallelität bei der Ausführung verschiedener Speicheroperationen zu erhöhen. Ein Beispiel für die Nutzung mehrerer Unterarrays ist in dem bereits erwähnten US-Patent 5,890,192 beschrieben.
  • Wenn ein spezieller Abschnitt, z. B. eine Gruppe von Speicherelementen, des nichtflüchtigen Speichers 124 wiederholt programmiert und gelöscht wird, dann wird dieser spezielle Abschnitt im Allgemeinen schneller abgenutzt als ein Abschnitt, der nicht ständig programmiert wird. Um die Abnutzung unterschiedlicher Bereiche in dem nichtflüchtigen Speicher 124 effektiv "auszugleichen", kann automatisch ein Abnutzungsausgleich in solcher Weise ausgeführt werden, dass Abschnitte, die wiederholt programmiert wurden, weniger programmiert werden, während Abschnitte, die weniger häufig programmiert wurden, genutzt werden können, anstatt die Abschnitte, die wiederholt programmiert wurden, einem weiteren Takt auszusetzen.
  • Im Allgemeinen kann, um einen Abnutzungsausgleich auszuführen, eine logische Adresse (z. B. eine logische Blockadresse und/oder Zylinder-Kopf-Sektor-Adresse), die einer oder mehreren physischen Speicherstellen zugeordnet ist, z. B. einer oder mehreren Zellen oder Speicherelementen, die eine vorgegebene Anzahl von Malen programmiert worden sind, einer anderen physischen Speicherstelle neu zugeordnet werden, die nicht wiederholt programmiert worden ist. Zum Beispiel können die Inhalte der am häufigsten programmierten physischen Speicherstelle mit den Inhalten der am wenigsten programmierten physischen Speicherstelle ausgetauscht werden, um zu bewirken, dass die Abnutzung der physischen Speicherstellen im Wesentlichen ausgeglichen wird. Ein solcher Prozess kann in einem Abnutzungsausgleichsschema mit direkt abbildender Adressierung erfolgen, bei welchem eine gegebene logische Adresse für "lange" Zeitspannen einer spezifischen physischen Speicherstelle zugeordnet ist, bis diese durch ein spezielles Ereignis wie etwa den Abnutzungsausgleich neu zugeordnet wird. Dieses Schema wird bisweilen als (statische) assoziative Abbildung bezeichnet.
  • Der Abnutzungsausgleich kann auch in Systemen ausgeführt werden, bei denen eine indirekte Adressierung genutzt wird, um logische auf physikalische Adressen abzubilden. In diesen Systemen wird eine gegebene logische Adresse zu unterschiedlichen Zeitpunkten auf unterschiedliche physische Speicherstellen abgebildet, wobei diese oft mit jeder logischen Aktualisierung wechseln. Typischerweise bildet eine Ansammlung von temporär ungenutzten, aber physikalisch gelöschten Blöcken eine Löschgruppe. Bei Abnutzungsausgleichsschemata mit Löschgruppenbildung können die Inhalte der am stärksten abgenutzten physischen Speicherstelle in einem Bereich zu einer gelöschten physischen Speicherstelle in dem gleichen Bereich verschoben werden, um die Geschwindigkeit zu vermindern, mit welcher die am stärksten abgenutzte physische Speicherstelle abgenutzt wird, oder die Zonen können ausgetauscht oder umdefiniert werden, um zu verhindern, dass bestimmte physische Speicherstellen viel schneller als andere physische Speicherstellen abgenutzt werden.
  • Die vorliegenden Erfindungen können ferner in Systemen implementiert werden, in denen Zonen eines physischen Speichers genutzt werden. Eine Zone kann eine beliebig unterteilte Teilmenge des physischen Speichers oder Speichersystems darstellen, auf welche ein spezifizierter Bereich logischer Blöcke abgebildet wird. In einer Zone kann eine größere Anzahl von physischen Blöcken umfasst sein, als die Anzahl der auf diese abgebildeten logischen Blöcke beträgt, um zusätzliche, im Voraus gelöschte Blöcke bereitzustellen. Zum Beispiel kann ein Speichersystem, in dem 64 Megabyte Daten gespeichert werden können, in vier Zonen unterteilt sein, wobei sich pro Zone 16 Megabyte Daten speichern lassen. Der Bereich von logischen Blöcken wird dann ebenfalls in vier Gruppen unterteilt, eine Gruppe für die jeweiligen physischen Blöcke der vier Zonen. Die logischen Blöcke werden bei einer typischen Implementierung in solcher Weise eingeschränkt, dass die Daten eines jeweiligen Blocks niemals außerhalb einer einzelnen physische Zone geschrieben werden, auf welche die logischen Blöcke abgebildet sind. Bei einem Speicherzellenarray, das in Ebenen (Teilarrays) unterteilt ist, die jeweils ihre eigenen Adressierungs-, Programmierungs- und Leseschaltungen aufweisen, umfasst jede Zone vorzugsweise Blöcke von mehreren Ebenen, typischerweise die gleiche Anzahl von Blöcken aus jeder der Ebenen. Die Zonen werden in erster Linie genutzt, um die Adressverwaltung zu vereinfachen, beispielsweise die Übersetzung von logisch zu physikalisch, was zu kleineren Übersetzungstabellen, weniger benötigtem RAM-Speicher, um diese Tabellen zu halten, und schnelleren Zugriffszeiten zum Adressieren des momentan aktiven Bereichs des Speichers führt, wegen ihrer restriktiven Natur können sie aber zu einem suboptimalen Abnutzungsausgleich führen.
  • Da die Größen von Speichersystemen zunehmen (sie übersteigen heute 1 Gigabyte Speicher), kann ein Abnutzungsausgleich über den gesamten physischen Speicher hin schwerfällig sein, zeitaufwendig sein und übermäßig viel Speicherplatz beanspruchen, um Abnutzungsstatistiken zu unterhalten. Ein Abnutzungsausgleich kann aber innerhalb einer Zone (zonenintern) ausgeführt werden, durch einen Abnutzungsausgleich für die Löscheinheiten innerhalb einer Zone, oder zwischen Zonen (interzonal), durch Abnutzungsausgleich für die Löscheinheiten zwischen Zonen, oder durch Austauschen ganzer Zonen, wenn eine Zone stärker abgenutzt ist als eine andere Zone. Bei einer weiteren Variante kann ein dynamischer oder versetzter Zonen-Abnutzungsausgleich implementiert werden. Bei einer solchen Ausführungsform ist die Speicherstelle für die Zone nicht statisch. Bei einer Anordnung, die nicht der vorliegenden Erfindung entspricht, kann es vorteilhaft sein, eine oder mehrere Löscheinheiten aus einer ersten Zone einer zweiten Zone zuzuweisen, wodurch bewirkt wird, dass die zweite Zone größer als die erste Zone ist. Außerdem ist es möglich, dass die physischen Speicherstellen für eine Zone anfangs in einem physischen Abschnitt des Speichers beginnen, nach einem Abnutzungsausgleichsvorgang kann sich die Zone aber innerhalb des Speichers verschoben haben, entweder um einen Versatzbetrag oder vollständig. Dies kann erfordern, dass andere Zonen gleichermaßen um einen Versatzbetrag oder einen anderen Schritt verschoben werden, um eine vollständige Nutzung des physischen Speichers zu ermöglichen.
  • Ein Schema mit direkt abbildender Adressierung wird nachstehend mit Bezug auf die 2 bis 5 beschrieben, während ein Schema mit Löschgruppenbildung später mit Bezug auf die 6 bis 10 beschrieben wird.
  • B. ABNUTZUNGSAUSGLEICH MIT DIREKTER ABBILDUNG
  • Bei einem Schema mit direkt abbildender Adressierung werden die Daten, die einer bestimmten logischen Adresse des Host zugeordnet sind (z. B. einer logischen Blockadresse oder LBA) im Allgemeinen an einer spezifischen physischen Speicherstelle gespeichert, selbst nach wiederholten Schreib-/Lösch-Zyklen. Die beschriebene Ausführungsform wird unter Bezugnahme auf logische Blockadressen diskutiert, es kann aber jede Art von logischer Adresse genutzt werden. Wenn das Hostsystem an die gleiche logische Blockadresse schreibt und erneut schreibt, werden die Daten an dieselbe physikalische Adresse geschrieben. Typischerweise wird der physische Speicher, der an der physikalischen Adresse liegt, gelöscht und wird danach mit den neuen und/oder aktualisierten Daten, welche der LBA zugeordnet sind, erneut beschrieben. Die Zuordnung von logischer zu physikalischer Adresse bleibt im Allgemeinen bestehen, bis die der LBA zugeordnete Abbildung verändert wird, beispielsweise im Ergebnis einer Abnutzungsausgleichsprozedur. Da es möglich ist, dass bestimmte LBAs wiederholt programmiert werden, können die diesen LBAs zugeordneten physischen Speicherstellen relativ schnell abgenutzt werden. Durch neues Abbilden einer wiederholt programmierten LBA auf eine physische Speicherstelle, die zuvor einer selten programmierten und somit selten gelöschten physischen Speicherstelle entsprach, kann die Abnutzung für die beiden physischen Speicherstellen ausgeglichen werden.
  • 2 stellt eine schematische Darstellung eines nichtflüchtigen Speichersystems dar, in welchem ein Abnutzungsausgleichsschema mit direkter Adressierung implementiert werden kann. Ein nichtflüchtiges Speichersystem 200 umfasst einen nichtflüchtigen Speicher 204, der durch einen Speicher-Controller 208 gesteuert, z. B. zugeordnet, wird. Firmware 211, die eine Abnutzungsausgleichsfunktionalität oder einen Abnutzungs ausgleichsprozessor 212 umfassen kann, arbeitet mit dem Speicher-Controller 208 zusammen, um einen Abnutzungsausgleichsprozess an dem nichtflüchtigen Speicher 204 auszuführen. Alternativ kann der Abnutzungsausgleich durch Schaltungselemente, Firmware, Software oder eine beliebige Kombination dieser ausgeführt werden. Abbildungsinformationen 214 werden von dem Speicher-Controller 208 genutzt, um LBAs auf physische Speicherstellen in dem nichtflüchtigen Speicher 204 abzubilden.
  • Der nichtflüchtige Speicher 204 ist im Allgemeinen in Ebenen 218a218d unterteilt. Jede Ebene kann eine beliebige Anzahl von Löscheinheiten, z. B. Blöcken, enthalten, welche physische Speicherseiten enthalten. Der Block 226a stellt einen von mehreren Blöcken dar, welcher der Ebene 218a zugeordnet ist. Analog stellt der Block 226b einen von mehreren Blöcken dar, welcher der Ebene 218b zugeordnet ist. Jeder Block enthält eine oder mehr Speicherseiten: eine Speicherseite 222a und eine Speicherseite 222b stellen zwei Speicherseiten dar, welche dem oberen Block der Ebene 218a zugeordnet sind. Jeweilige Blöcke aus zwei oder mehr unterschiedlichen Ebenen können kombiniert werden, um einen Metablock zu bilden. Beispielsweise können die Blöcke 226a, 226b, 226c und 226d kombiniert werden, um den Metabiock 226 zu bilden. Bei der beschriebenen Ausführungsform ist der Speicher-Controller 208 im Zusammenwirken mit dem Abnutzungsausgleichsprozessor 212 dafür ausgelegt, Blöcke oder Metablöcke effektiv auszutauschen. Der Austausch von Blöcken geht mit dem Austausch der Dateninhalte in den Blöcken einher, sodass sich die physischen Speicherstellen von Blöcken, und in einigen Fällen Metablöcken, in Bezug auf die LBAs, die den Sektoren, Blöcken oder Metablöcken zugeordnet sind, ändern. Die direkte Abbildung wird üblicherweise in einigen NOR-Speichern genutzt, bei welchen eine einzelne Speicherseite einen Block bildet und die Basiseinheit sowohl zum Schreiben als auch zum Löschen eine Speicherseite darstellt.
  • 3a ist eine schematische Darstellung einer Ausführungsform eines nichtflüchtigen Speichers, der physische Speicherstellen und Sektorensätze umfasst. Ein nichtflüchtiger Speicher 304 umfasst physische Speicherstellen 306, welche Daten in Sektorensätzen 310 enthalten. Wenngleich im Wesentlichen beliebige Sektorensätze 310 vertauscht oder anderweitig ausgetauscht werden können, wird typischerweise der Sektorensatz 310, welcher sich an der physischen Speicherstelle 306 befindet, die am meisten abgenutzt ist oder die höchste Zyklenzahl aufweist, mit dem Sektorensatz 310 vertauscht, der an einer anderen physischen Speicherstelle 306 angeordnet ist, welche die geringste Abnutzung aufweist. Es sollte erkannt werden, dass, wenn keine Informationen zur Zyklenzahl vorhanden sind, die Speicherstellen stochastisch ausgewählt werden können oder algorithmisch ausgewählt werden können.
  • Zum Zwecke der Erörterung sei die physische Speicherstelle "0" 306a am stärksten abgenutzt, während die physische Speicherstelle "N" 306c am geringsten abgenutzt sei. Das bedeutet, die an der physischen Speicherstelle "0" 306a enthaltenen Daten wurden recht häufig gelöscht, während die an der physischen Speicherstelle "N" 306c enthalten Daten weniger häufig gelöscht wurden. Um also die den physischen Speicherstellen 306 in dem nichtflüchtigen Speicher 304 zuzuordnende Abnutzung auszugleichen, können die Inhalte der physischen Speicherstelle "0" 306a mit den Inhalten der physischen Speicherstelle "N" 306c in einem Abnutzungsausgleichsprozess vertauscht werden. Mit anderen Worten kann der Sektorensatz "A" 310a mit dem Sektorensatz "B" 310c ausgetauscht werden, sodass der Sektorensatz "A" 310a an der physischen Speicherstelle "N" 306c gespeichert wird und der Sektorensatz "B" 310c an der physischen Speicherstelle "0" 306a gespeichert wird, wie in 3b gezeigt ist, wobei diese logischen Blockadressen des Host zugeordnet sind, die ebenfalls vertauscht werden. Daher wird, wenn der Sektorensatz "A" 310a das nächste Mal gelöscht werden soll, der Löschvorgang in Bezug auf die physische Speicherstelle "N" 306c stattfinden. Dementsprechend wird sich die der physischen Speicherstelle "N" 306c zugeordnete Zyklenzahl um eins erhöhen, da die Zyklenzahl allgemein die Anzahl der Lösch- und Schreibzyklen verfolgt, die einer speziellen physischen Speicherstelle 306 zugeordnet sind.
  • Allgemein kann bei einem Schema mit direkter Adressierung ein Abnutzungsausgleichsprozess automatisch initiiert werden, wenn eine Auslösebedingung erfüllt ist. Die Auslösebedingung kann das Ende einer vorgegebenen Zeitspanne darstellen oder kann darin bestehen, dass die Zyklenzahl für eine oder mehrere physische Speicherstellen einen relativen oder absoluten Schwellwert erreicht oder dass für eine oder mehr physische Speicherstellen festgestellt wird, dass diese ein deutlich verschlechtertes Leistungsverhalten zeigen. Er kann ausgelöst werden, wenn eine bestimmte Anzahl von Schreibvorgängen des Host stattfindet. Andere Methoden, die genutzt werden, um einen Abnutzungsausgleichsprozess zu initiieren, bestehen, wenngleich nicht ausschließlich, im Verfolgen einer Anzahl von Operationen des Host und Initiieren des Abnutzungsausgleichs, wenn die Anzahl der Hostoperationen eine bestimmte Anzahl erreicht, und im Generieren von Zufalls- oder Pseudozufallszahlen, die genutzt werden, um die Abnutzungsausgleichsprozesse zu beginnen.
  • Mit Bezugnahme auf 4 sollen die Schritte beschrieben werden, die mit dem Festlegen eines oder mehrerer Sektoren in einem nichtflüchtigen Speicher, die einem Abnutzungsausgleichsprozess unterzogen werden sollen, verknüpft sind. Ein Prozess 400 zum Festlegen eines oder mehrerer Sektoren, die ausgetauscht werden sollen, beginnt in Schritt 404, in welchem festgestellt wird, ob eine Auslösebedingung erfüllt ist. Das bedeutet es wird festgestellt, ob ein Abnutzungsausgleichsprozess initiiert werden soll. Eine solche Feststellung kann durch den Speicher-Controller erfolgen, der den nichtflüchtigen Speicher steuert. Bei der beschriebenen Ausführungsform besteht die Feststellung, ob eine Auslösebedingung erfüllt ist, darin festzustellen, ob eine vorgegebene Zeitspanne abgelaufen ist, z. B. seit dem letzten Abnutzungsausgleichsprozess. Alternativ kann das Hostsystem bestimmen, wann ein Abnutzungsausgleichsvorgang initiiert werden soll. Bei noch einer weiteren Ausführungsform kann der Nutzer die Option haben, einen Abnutzungsausgleich zu initiieren, und bei einer solchen Ausführungsform kann der Speicher-Controller oder das Hostsystem den Nutzer auf entsprechende Zeiten hinweisen, um einen Abnutzungsausgleichsvorgang zu initiieren.
  • Wenn festgestellt wird, dass eine vorgegebene Zeitspanne nicht abgelaufen ist, kann eine weitere Feststellung erfolgen, z. B. zu einem geringfügig späteren Zeitpunkt, um festzustellen, ob die vorgegebene Zeitspanne abgelaufen ist. Alternativ werden, wenn festgestellt wird, dass die vorgegebene Zeitspanne abgelaufen ist, dann in Schritt 408 die Aktivzahlen oder Zyklenzahlen für jede physische Speicherstelle in dem nichtflüchtigen Speicher oder für jede physische Speicherstelle in einem gewissen Bereich, um die Suchzeiten zu begrenzen, eingeholt. Sobald die Aktivzahlen eingeholt sind, wird in Schritt 412 die Aktivzahl mit dem höchsten Wert, welche die stärkste bekannte Abnutzung anzeigt, festgestellt. Analog wird in Schritt 416 die Aktivzahl mit dem geringsten Wert oder die geringste bekannte Abnutzung festgestellt. Natürlich können Näherungen an die höchste oder niedrigste Aktivzahl (beispielsweise ausreichend hoch oder ausreichend niedrig) genutzt werden, insbesondere wenn ein Suchalgorithmus genutzt wird.
  • In Schritt 420 wird der eine oder werden die mehreren Sektoren, der/die an der physischen Speicherstelle mit der höchsten Aktivzahl gespeichert ist/sind, als Sektorensatz "A" festgelegt, während der Satz von Sektoren, der an der physischen Speicherstelle mit der niedrigsten Aktivzahl gespeichert ist, als ein Sektorensatz "B" festgelegt wird, und zwar in Schritt 424. Sobald der Sektorensatz "A" und der Sektorensatz "B" festgelegt sind, wird in Schritt 428 ein Abnutzungsausgleichsprozess in Bezug auf die physischen Speicherstellen mit der höchsten und der niedrigsten Aktivzahl ausgeführt. Ein geeigneter Abnutzungsausgleichsprozess wird nachstehend mit Bezug auf 5 diskutiert. Nachdem der Abnutzungsausgleichsprozess ausgeführt ist, ist der Prozess des Festlegens von Sektorensätzen, die einem Abnutzungsausgleichsprozess unterzogen werden sollen, beendet.
  • 5 stellt ein Prozessablaufdiagramm dar, welches ein Beispiel für die Schritte veranschaulicht, die mit einem Abnutzungsausgleichsprozess verknüpft sind, d. h. dem Schritt 428 der Ausführungsform aus 4. Ein Abnutzungsausgleichsprozess 428 beginnt bei Schritt 504, in welchem der Sektorensatz "A" kopiert wird, beispielsweise aus dem physischen Bereich mit der höchsten Aktivzahl in einen Reservebereich oder einen Bereich in dem nichtflüchtigen Speicher, in welchem momentan im Wesentlichen keine Informationen gespeichert sind. Sobald der Sektorensatz "A" in den Reserverebereich kopiert ist, wird die physische Speicherstelle, die dem ursprünglichen Sektorensatz "A" zugeordnet ist, gelöscht, und zwar in Schritt 508. In Schritt 512 wird der Sektorensatz "B" an die physische Speicherstelle kopiert, die zuvor durch den Sektorensatz "A" belegt war. Sobald der Sektorensatz "B" kopiert ist, wird die physische Speicherstelle, aus Welcher der Sektorensatz "B" kopiert wurde, gelöscht, und zwar in Schritt 516. Nachdem die physische Speicherstelle, von welcher der Sektorensatz "B" kopiert wurde, gelöscht ist, wird der Sektorensatz "A", welcher in dem Reservebereich gespeichert ist, an die physische Speicherstelle kopiert, die zuvor durch den Sektorensatz "B" belegt war, und zwar in Schritt 520. Danach, in Schritt 524, kann der Reservebereich gelöscht werden.
  • Damit ein Host oder spezieller ein Host-Computersystem, welches auf den nichtflüchtigen Speicher zugreift, in der Lage ist, angeforderte Informationen in dem nichtflüchtigen Speicher zu lokalisieren, nachdem der Abnutzungsausgleich erfolgt ist, werden die Abbildungsinformationen, welche dem Speicher-Controller ermöglichen, auf die korrekten Informationen zuzugreifen, in Schritt 528 aktualisiert. Die Abbildungsinformationen werden in solcher Weise aktualisiert, dass die LBAs des Host, die genutzt werden, um auf die in den Sektorensätzen "A" und "B" gespeicherten Informationen zuzugreifen, auf die neuen physischen Speicherstellen zugreifen, an welchen die Sektorensätze "A" und "B" gespeichert sind, nachdem der Abnutzungsausgleichsprozess erfolgt ist. Sobald die Abbildungsinformationen aktualisiert sind, ist der Prozess des Ausführens einer Abnutzungsausgleichsprozedur beendet. Die Abbildungsinformationen können in einer Tabelle 214 in einem flüchtigen RAM gespeichert werden, wie in 2, und/oder können partiell oder vollständig in dem nichtflüchtigen Speicher enthalten sein.
  • Wenngleich ein Abnutzungsausgleichsprozess in einem Kontext mit direkter Adressierung als Austausch zweier Sektorensätze beschrieben worden ist, kann ein solcher Abnutzungsausgleichsprozess allgemein das Austauschen einer beliebigen Anzahl von Sektorensätzen beinhalten. Zum Beispiel kann zusätzlich zum Austauschen des Sektorensatzes an der physischen Speicherstelle, der die höchste Aktivzahl zugeordnet ist, und den Sektoren an der physischen Speicherstelle, der die niedrigste Aktivzahl zugeordnet ist, der Sektorensatz an der physischen Speicherstelle, der die zweithöchste Aktivzahl zugeordnet ist, außerdem mit dem Sektorensatz an der physischen Speicherstelle, der die zweitniedrigste Aktivzahl zugeordnet ist, ausgetauscht werden. Das bedeutet, es können mehrere Iterationen eines Abnutzungsausgleichsprozesses entweder parallel oder seriell erfolgen. Ferner können, anstatt dass während eines Abnutzungsausgleichsprozesses der Sektorensatz an der physischen Speicherstelle, der die höchste Aktivzahl zugeordnet ist, mit dem Sektorensatz an der physischen Speicherstelle, der die niedrigste Aktivzahl zugeordnet ist, ausgetauscht werden, im Wesentlichen beliebige zwei Sektorensätze vertauscht werden, und diese können zufällig oder auf Grundlage irgendeines deterministischen Verfahrens ausgewählt werden.
  • C. LÖSCHGRUPPENBILDUNG
  • Wie bereits erwähnt, kann, anstatt dass ein Abnutzungsausgleichsprozess in ein Schema mit direkter Adressierung integriert wird, ein Abnutzungsausgleichsprozess stattdessen in ein Schema mit Löschgruppenbildung integriert werden. Bei einem Schema mit Löschgruppenbildung werden Sektoren typischerweise zu logischen Blöcken gruppiert, die nicht-statisch physischen Blöcken zugeordnet werden. Logische Blöcke enthalten im Allgemeinen Daten für einen Bereich von Host-LBAs, werden aber jedes Mal, wenn Daten für diese LBAs geschrieben oder aktualisiert werden, an unterschiedlichen physischen Speicherstellen in einem Flash-Speichersystem gespeichert. Jeder physische Block kann ein Feld für eine logische Adresse oder eine andere Identifikation seiner physischen Inhalte enthalten. Es ist oft zweckmäßig, diese Abbildungsinformationen in einer Tabelle in einem flüchtigen Speicherbereich zu halten, auf den der Controller günstig zugreifen kann. Bei einigen Ausführungsformen wird die Tabelle jedes Mal aufgestellt, wenn das Flash-Speichersystem angeschaltet wird, um die Notwendigkeit zum ständigen Suchen unterschiedlicher logischer Blöcke zu reduzieren, wenn auf unterschiedliche LBAs zugegriffen wird. Die Informationen, die notwendig sind, um eine solche Tabelle aufzustellen, können auch in dem nichtflüchtigen Speicher gespeichert werden, entweder mit den eigentlichen Nutzerdaten oder getrennt von diesen.
  • Bei einer Art von nichtflüchtigem Speichersystem ist das Array in Zonen gegliedert. 6 stellt eine schematische Darstellung eines nichtflüchtigen Speichersystems dar, das solche Zonen umfasst. Ein nichtflüchtiges Speichersystem 600 umfasst einen nichtflüchtigen Speicher 604, der von einem Speicher-Controller 608 gesteuert werden kann. Der Speicher-Controller 608 nutzt einen Abnutzungsausgleichsprozessor 610, um einen Abnutzungsausgleichsprozess an dem nichtflüchtigen Speicher 604 auszuführen. Ein flüchtiger Speicher 612, auf den der Speicher-Controller 608 zugreifen kann, kann Abbildungsinformationen wie beispielsweise eine Abbildung von logischen auf physikalische Adressen enthalten. Der nichtflüchtige Speicher 604 ist in Zonen 614 unterteilt. Die Größe der Zonen 614 wie auch die Anzahl der Zonen 614 kann in Abhängigkeit von sowohl der Größe des nichtflüchtigen Speichers 604 als auch der Anforderungen an das nichtflüchtige Speichersystem 600 variieren. Die Zonen 614 sind im Allgemeinen in physische Blöcke 618 unterteilt, welche bei einer Ausführungsform zu Metablöcken gruppiert sein können, wie bereits beschrieben worden ist. Jeder Block oder Metablock enthält eine oder mehrere Gruppen (Speicherseiten) 622 mit jeweils einem oder mehreren Datensektoren. Bei einer typischen Anwendung von Speicherzellenarray-Zonen wird ein spezifischer nicht überlappender Bereich von logischen Blockadressen (LBAs) des Host auf jede der physischen Zonen abgebildet, und diese Abbildung ändert sich nicht. Eine Zone kann auf diese Weise derart definiert werden, dass sie Blöcke von zwei oder mehr Speicherebenen in einer Speicherarchitektur, bei der mehrere Ebenen genutzt werden, umfasst, wobei jede Zone typischerweise die gleiche Anzahl von Blöcken umfasst, mit denselben relativen physikalischen Adressen in den einzelnen Zonen. Eine physische Zone ist als ein Block definiert, auf welchen einer der diskreten Bereiche von Host-LBAs abgebildet ist, und als solches kann er logisch umkonfiguriert werden. Typischerweise werden die physischen Blockadressen derart ausgewählt, dass sie für jede Zone zusammenhängend sind, dies stellt aber kein Erfordernis dar.
  • Bei einem Schema mit Löschgruppenbildung kann ein Abnutzungsausgleich entweder innerhalb einer Zone 614 oder zwischen Zonen 614 erfolgen. Beispielsweise kann innerhalb einer Zone 614 eine Gruppe von Sektoren 622 in solcher Weise zwischen physischen Blöcken 618 verschoben werden, dass kein einziger physischer Block 618 viel schneller als andere physische Blöcke 618 in derselben Zone 614 abgenutzt wird. Ein solches zoneninternes Löschgruppenbildungsschema wird nachstehend mit Bezug auf 7 beschrieben. Wenn ein Abnutzungsausgleich zwischen zwei Zonen 614 erfolgt, kann die Speicherstelle von Zonen 614 derart verschoben werden, dass im Wesentlichen verhindert wird, dass eine einzelne Zone 614 viel schneller als andere Zonen 614 abgenutzt wird, wie später mit Bezug auf die 8 und 9 beschrieben wird.
  • 1. Zoneninterner Abnutzungsausgleich
  • Während eines zoneninternen Abnutzungsausgleichsprozesses verbleiben die logischen Blöcke allgemein innerhalb einer einzelnen Zone und infolgedessen werden die Zonengrenzen, welche die Zone definieren, effektiv nicht verschoben. Die logischen Zuordnungen zu physischen Adressen innerhalb der Zone werden jedoch verschoben. 12a stellt eine schematische Darstellung einer Zone dar, welche physische Blöcke umfasst, bevor ein zoneninterner Abnutzungsausgleichsprozess stattfindet. Innerhalb einer Zone 1200 können physische Blöcke 1202 logische Inhalte oder Inhalte umfassen, die logischen Blöcken 1206 zugeordnet sind. Anfänglich kann ein physischer Block 1202a Daten umfassen, welche dem logischen Block 1206a zugehören, während der physische Block 1202b effektiv einen gelöschten Block darstellen kann, d. h. es ist möglich, dass der logische Block 1206b im Wesentlichen keinen Inhalt aufweist. Ein zoneninterner Abnutzungsausgleich kann es ermöglichen, die logischen Blöcke 1206 effektiv innerhalb der Zone 1200 zu verschieben, wie in 12b gezeigt ist. Wie gezeigt ist werden, wenn ein zoneninterner Abnutzungsausgleich erfolgt, die Inhalte des logischen Blocks 1206a in den physischen Block 1206b verschoben, wodurch bewirkt wird, dass der physische Block 1202a gelöscht wird. Der gelöschte physische Block 1202a umfasst effektiv den logischen Block 1206b, der im Wesentlichen keinen Inhalt aufweist. Somit stellt der physische Block 1202a einen gelöschten Block dar, während der physische Block 1206b dem logischen Block 1206a zugeordnet ist. Es sollte erkannt werden, dass Datenstrukturen, die Abbildungsinformationen enthalten, welche der Zone 1200 zugeordnet sind, derart aktualisiert werden können, dass sie die neue Speicherstelle für Daten, die dem logischen Block 1206a zugeordnet sind, enthalten.
  • Mit Bezugnahme auf 7 sollen die Schritte beschrieben werden, die mit einem beispielhaften allgemeinen Abnutzungsausgleichsprozess in einem zoneninternen Löschgruppenbildungskontext verknüpft sind. Ein Prozess 700 beginnt bei Schritt 702, in welchem festgestellt wird, ob ein Abnutzungsausgleichsprozess ausgeführt werden soll. Wenngleich diese Feststellung mithilfe einer Reihe von unterschiedlichen Verfahren oder Auslöseereignissen erfolgen kann, einschließlich jener, die zuvor bei dem Abnutzungsausgleichsprozess mit direkter Adressierung beschrieben worden sind, erfolgt diese Feststellung bei der beschriebenen Ausführungsform über die Nutzung von Zufalls- oder Pseudozufallszahlen. Bei einer Ausführungsform kann eine Zone ein gesamtes Bauelement oder mehrere Bauelemente umfassen.
  • In Schritt 703 wird festgestellt, dass ein Abnutzungsausgleich ausgeführt werden soll. Bei der beschriebenen Ausführungsform kann eine solche Feststellung die Verwendung einer Maske beinhalten, um die Wahrscheinlichkeit zu reduzieren, eigentlich auf das Auslöseereignis zu reagieren. Wenn beispielsweise eine Zahl, die gewisse Kombinationen von '1' und '0' enthält, als Maske für eine UND-Verknüpfung gegenüber der zum Auslösen genutzten Zufallszahl genutzt wird, werden bestimmte Auslöseereignisse ignoriert und ein Abnutzungsausgleich wird nicht ausgeführt. Der Prozessablauf kehrt dann zu Schritt 702 zurück, in welchem eine weitere Feststellung dazu erfolgt, ob es zweckmäßig ist, einen Abnutzungsausgleich auszuführen. Alternativ wird, wenn in Schritt 703 bestimmt wird, dass ein Abnutzungsausgleich erfolgen soll, dann in Schritt 704 eine Abnutzungsausgleichsprozedur beginnen, in welcher ein Sektorensatz "A" in eine Löschgruppe kopiert wird, die innerhalb der gleichen Zone wie der Sektorensatz "A" liegt. Die Löschgruppe stellt sämtliche anderen gelöschten Blocks in der Zone dar. Der Sektorensatz "A" kann generell im Wesentlichen unter Nutzung eines beliebigen Verfahrens ausgewählt werden. Zum Beispiel kann der Sektorensatz "A" zufällig ausgewählt werden oder der Sektorensatz "A" kann deterministisch ausgewählt werden.
  • Nachdem der Sektorensatz "A" in die Löschgruppe kopiert ist, wird in Schritt 708 die physische Speicherstelle, die zuvor den Sektorensatz "A" enthielt, gelöscht. Insofern wird die gelöschte physische Speicherzelle oder der gelöschte Block effektiv zu einem Teil der Löschgruppe. Sobald die physische Speicherstelle, die zuvor den Sektorensatz "A" enthielt, gelöscht ist, ist der Prozess der Ausführung eines Abnutzungsausgleichsprozesses als Teil eines Löschgruppenbildungsschemas beendet. Es sollte verstanden werden, dass etwaige Datenstrukturen, die Abbildungsinformationen enthalten, im Allgemeinen derart aktualisiert werden, dass sie die neue Speicherstelle des Sektorensatzes "A" wiedergeben.
  • Mit einem zoneninternen Abnutzungsausgleich wird es im Allgemeinen möglich, die Abnutzung im Wesentlichen gleichmäßig in einer gegebenen Zone zu verteilen. Wenn jedoch eine gegebene Zone viel öfter als andere Zonen programmiert oder gelöscht wird, kann die Abnutzung während eines Abnutzungsausgleichsprozesses zwischen unterschiedlichen Zonen verteilt werden. Da logische Zonen typischerweise festgelegte Bereiche von Host-LBAs enthalten, kann das Verteilen der Abnutzung auf unterschiedliche Zonen mit dem Verschieben der physischen Grenzen der Zonen einhergehen.
  • Es sei außerdem angemerkt, dass die vorliegend beschriebenen Verfahren zum zoneninternen Abnutzungsausgleich auf ein Speichersystem angewendet werden können, das eine einzige Zone aufweist. Ferner wird ein weiteres Beispiel eines Einzelzonen- oder zoneninternen Abnutzungsausgleichs im nachstehenden Absatz 4 beschrieben.
  • 2. Zonenaustausch
  • Wenn die Abnutzung physischer Blocks derart erfolgt, dass zu erwarten ist, dass im Wesentlichen nur ein Teil eines Bauelementes stark genutzt wird, kann in vorteilhafter Weise ein Abnutzungsausgleichsprozess genutzt werden, welcher den Austausch einer stark abgenutzten Zone mit einer leichter abgenutzten Zone beinhaltet. Ein Abnutzungsausgleichsprozess, bei dem ein Zonenaustausch genutzt wird, ermöglicht es, die physischen Speicherstellen zweier Zonen zu vertauschen. Sobald ein Abnutzungsausgleichsprozess oder -vorgang initiiert wird, werden die Inhalte von Blöcken in jeder Zone in die andere Zone kopiert. Da typischerweise für Zonen, die eine relativ große Datenmenge enthalten, eine beträchtliche Zeit erforderlich sein kann, um diese auszutauschen, sollte verstanden werden, dass ein Zonenaustausch im Hintergrund standardmäßiger Aktivitäten, an denen ein nichtflüchtiges Speicherbauelement beteiligt ist, ausgeführt werden kann.
  • Um im Wesentlichen zu verhindern, dass auf Daten, die verschoben werden, zugegriffen wird, und um weiter im Wesentlichen zu verhindern, dass die Inhalte des nichtflüchtigen Speicherbauelements durch eine Abschaltung des nichtflüchtigen Speicherbauelements in der Mitte eines Abnutzungsausgleichsvorgangs unzugänglich werden, können verschiedene Datenstrukturen implementiert werden. Beispielsweise können Datenstrukturen angeben, auf welcher Stufe sich ein Abnutzungsausgleichsprozess befindet, sodass ein Zugriff auf Daten in Abhängigkeit von der momentanen Stufe des Abnutzungsausgleichsprozesses im Wesentlichen eingeschränkt werden kann. Verschiedene Datenstrukturen können auch ermöglichen, dass eine Feststellung dahingehend erfolgen kann, wann sich ein Austauschvorgang im Verlauf befindet, und können Informationen enthalten, die genutzt werden können, um einen unterbrochenen Austauschvorgang fortzusetzen.
  • Wenn zwei Zonen dafür ausgewählt werden, während eines Abnutzungsausgleichs die Speicherstellen auszutauschen, entweder zufällig oder deterministisch, können Blöcke aus jeder Zone in die andere kopiert werden. Während des Zonenaustauschs können Blöcke abwechselnd vom Beginn der einen Zone in eine andere kopiert werden, sodass der physische Beginn jeder Zone während eines Zonenaustauschs Blöcke enthält, die zu der anderen Zone gehören. 13a stellt eine schematische Darstellung einer beispielhaften Zone dar, die physische Blöcke umfasst, und zwar vor einem Abnutzungsausgleichsprozess mit Zonenaustausch. Die physischen Zonen 1300 umfassen physische Blöcke 1310, 1320. Speziell umfasst eine Zone "A" 1300a physische Blöcke 1310, während eine Zone °B" 1300b physische Blöcke 1320 umfasst. In einem Anfangszustand befindet sich eine erste logische Zone, die einen ersten logischen Block 1314a umfasst im Wesentlichen vollständig in der Zone "A" 1300a, während sich eine zweite logische Zone, die logische Blöcke 1314b–d umfasst, im Wesentlichen vollständig in einer Zone "B" 1300b befindet. Wie gezeigt stellt der physische Block 1320c anfangs einen gelöschten Block dar.
  • Während eines Zonenaustausch werden die Inhalte der logischen Blöcke 1314 zwischen den Zonen 1300 verschoben. Bei einem spezifischen Beispiel können die Inhalte, die dem logischen Block 1314b zugeordnet sind, der in einem physischen Block 1320a gespeichert ist, in einen verfügbaren gelöschten Block in der gleichen Zone verschoben werden, beispielsweise den physischen Block 1320c, um Platz zu schaffen, damit der Austausch beginnt. Der physische Block 1320a wird dann gelöscht. Die Inhalte, die dem logischen Block 1314a zugeordnet sind, werden dann zwischen den Zonen aus dem physischen Block 1310a in den gelöschten physischen Block 1320a verschoben, und die Inhalte des logischen Blocks 1314c werden zwischen den Zonen aus dem physischen Block 1320c in den physischen Block 1310a verschoben. Der physische Block 1310c kann dann gelöscht werden und wird für eine nächste Runde von Datenaustauschvorgängen zwischen den Zonen verfügbar. 13b stellt die Zonen 1300 aus 13a nach diesen anfänglichen Schritten dar, die das Austauschen zweier logischer Datenblöcke 1314a und 1314c zwischen den Zonen 1300a und 1300b beinhalten. Wie gezeigt ist, ist der logische Block 1314c der Zone "A" 1300a zugeordnet, während der logische Block 1314a der Zone "B" 1300b zugeordnet ist. Nach einem Zonenaustauschprozess verbleiben die logischen Blöcke 1314b, 1314d der Zone "B" 1300b zugeordnet, wenngleich die logischen Blöcke 1314b, 1314d in anderen physischen Blöcken 1320 enthalten sind.
  • Im Allgemeinen verschiebt sich während des Verlaufs eines Zonenaustauschs eine Austauschgrenze. Die Austauschgrenze stellt einen Block in einer gegebenen Zone dar, welcher eine Grenze insofern zieht, dass im Wesentlichen sämtliche vorhergehenden, Daten enthaltenden Blöcke Daten aufweisen, die aus einer anderen Zone kopiert worden sind. Vor den mit dem Zonenaustausch verknüpften anfänglichen Schritten stellt, wie in 13a gezeigt ist, der physische Block 1310a eine Austauschgrenze in Zone "A" 1300a dar, und eine Austauschgrenze in Zone "B" 1300b ist der physische Block 1320a. Nach den anfänglichen Schritten jedoch, die mit dem Zonenaustauschverknüpft sind, stellt, wie in 13b gezeigt ist, der physische Block 1310b eine Austauschgrenze in der Zone "A" 1300a dar, während der physische Block 1320b eine Austauschgrenze in der Zone "B" 1300b darstellt.
  • Nehmen wir als nächstes auf 8 Bezug, so sollen die Schritte beschrieben werden, die mit einem beispielhaften Verfahren des Ausführens eines Abnutzungsausgleichs verknüpft sind, der einen Zonenaustausch umfasst. Ein Prozess 800 beginnt bei Schritt 802, in welchem festgestellt wird, ob ein Abnutzungsausgleichsprozess ausgeführt werden soll. Wie bereits beschrieben, kann eine solche Feststellung unter Nutzung einer Reihe unterschiedlicher Verfahren erfolgen, bei der beschriebenen Ausführungsform erfolgt diese Feststellung über die Nutzung einer Zufalls- oder Pseudozufallszahl. In Schritt 803 erfolgt eine Feststellung in Bezug darauf, ob ein Abnutzungsausgleich ausgeführt werden soll, und zwar basierend auf Informationen, die in Schritt 802 untersucht werden. Wenn festgestellt wird, dass kein Abnutzungsausgleich ausgeführt werden soll, kehrt der Prozessablauf zu Schritt 802 zurück, bei welchem eine weitere Feststellung dazu erfolgt, ob es zweckmäßig ist, einen Abnutzungsausgleich auszuführen. Eine solche nachfolgende Feststellung kann nach einer gewissen Zeitspanne erfolgen.
  • Alternativ wird, wenn in Schritt 803 festgestellt wird, dass ein Abnutzungsausgleich ausgeführt werden soll, dann in Schritt 804 eine Abnutzungsausgleichsprozedur beginnen, in welcher die Inhalte eines physischen Blocks in einer ersten Zone, z. B. der Zone "B", an einer der Zone "B" zugeordneten Austauschgrenze in einen gelöschten Block in der Zone "B" kopiert wird. Wenn der physische Block an der Zonengrenze bereits gelöscht ist, ist dieser Schritt nicht notwendig. Die Austauschgrenze kann vor dem Beginn des Prozesses 800 den ersten physischen Block der Zone "B" darstellen. Sobald die Inhalte des physischen Blocks in Schritt 804 kopiert worden sind, wird der physische Block an der Austauschgrenze in Zone "B" in Schritt 808 gelöscht. Durch das Löschen des physischen Blocks an der Austauschgrenze in Zone "B" wird effektiv ein Platz am Beginn der Zone "B" frei gemacht. Nachdem der physische Block an der Austauschgrenze in Zone "B" gelöscht ist, werden die Inhalte des physischen Blocks an einer Austauschgrenze in einer zweiten Zone, z. B. der Zone "A", an der Austauschgrenze in den gelöschten physischen Block an der Austauschgrenze in Zone "B" kopiert, und zwar in Schritt 812. Das bedeutet, die Inhalte eines "Quellblocks" werden in einen "Zielblock" kopiert. Sobald die Inhalte des physischen Blocks an der Austauschgrenze in Zone "A" kopiert sind, wird der physische Block an der Austauschgrenze in Zone "A" gelöscht, und zwar in Schritt 816. Danach, in Schritt 820, werden die Abbildungsinformationen aktualisiert. Im Allgemeinen umfasst das Aktualisieren der Abbildungsinformationen das Aktualisieren sämtlicher Datenstrukturen, welche Abbildungsinformationen für Blöcke enthalten, in welche Daten kopiert worden sind, wie auch im Hinblick auf den gelöschten Zustand der Blöcke, die gelöscht worden sind. Diese Abbildungsinformationen können in einem nichtflüchtigen Speicher oder in einem flüchtigen Speicher eines Controllers gespeichert werden.
  • Beim Aktualisieren der Abbildungsinformationen werden die Inhalte der physischen Blöcke an der Austauschgrenze, die der Zone "B" zugeordnet ist, in Schritt 824 in den gelöschten Block an der Austauschgrenze in Zone "A" kopiert. Es sollte verstanden werden, dass sich die der Zone "B" zugeordnete Austauschgrenze in Schritt 824 von der der Zone "B" zugeordneten Austauschgrenze in Schritt 804 unterscheidet, da die Austauschgrenze effektiv verschoben wurde, als die der Zone "A" zugeordneten Inhalte in den physischen Block an der ursprünglich der Zone "B" zugeordneten Austauschgrenze kopiert wurden. Analog verschiebt sich effektiv auch die der Zone "A" zugeordnete Austauschgrenze, wenn der Zone "B" zugeordnete Inhalte in einen physischen Block kopiert werden, der zuvor Teil der Zone "A" war.
  • In Schritt 828 wird der physische Block an der der Zone "B" zugeordneten Austauschgrenze gelöscht, d. h. der Quellblock, aus welchem in Schritt 824 Inhalte kopiert wurden, wird gelöscht. Danach, in Schritt 832, werden die Abbildungsinformationen aktualisiert, sodass sie die physischen Speicherstellen angeben, an welchen spezifische Informationen, z. B. kopierte Inhalte, angeordnet sind, und um den gelöschten Zustand anzugeben, der den physischen Blöcken zugeordnet ist, die gelöscht wurden. Danach wird in Schritt 836 festgestellt, ob Zone "A" und Zone "B" vollständig ausgetauscht wurden. Das bedeutet, es wird festgestellt, ob sämtliche Inhalte, die sich zuvor in Zone "A" befanden, in Zone "B" kopiert worden sind, und ob sämtliche Inhalte, die sich zuvor in Zone "B" befanden, in Zone "A" kopiert worden sind.
  • Wenn in Schritt 836 festgestellt wird, dass Zone "A" und Zone "B" vollständig ausgetauscht worden sind, ist der Prozess der Ausführung eines Abnutzungsausgleichs im Kontext mit einem Zonenaustausch beendet. Alternativ wird, wenn in Schritt 836 festgestellt wird, dass Zone "A" und Zone "B" nicht vollständig ausgetauscht worden sind, der Prozessablauf zu Schritt 812 zurückkehren, in welchem die Inhalte des physischen Blocks an der Austauschgrenze von Zone "A" in den gelöschten Block an der Austauschgrenze in Zone "B" kopiert werden. Während des Abnutzungsausgleichsprozesses müssen nichtflüchtige Tabellen unterhalten werden, welche den Fortschritt aufzeichnen, sodass der Prozess nach einem Energieausfall oder wenn der Abnutzungsausgleichsprozess durch einen Hostzugriff temporär unterbrochen wurde, fortgesetzt werden kann.
  • Die Geschwindigkeit, mit welcher der Zonenaustausch erfolgt, kann breit variieren. Bei einer Ausführungsform kann die Rate, mit welcher Inhalte von Blöcken ausgetauscht werden, in solcher Weise angepasst werden, dass der Austausch sukzessive über eine Anzahl von Hostoperationen hin erfolgt. Es sollte erkannt werden, dass, wenn ein Austauschvorgang im Hintergrund von Hostoperationen ausgeführt wird, Operationen erfolgen können, während der Prozess des Austauschs von Zonen vonstatten geht. In einem solchen Fall funktioniert ein Speicherbauelement in solcher Weise, dass die nicht zusammenhängende physische Speicherstelle der Inhalte der Zone geringe Auswirkung auf den Betrieb des Speicherbauelements hat. Mit anderen Worten umfasst eine Zone temporär zwei getrennte physische Bereiche, aber Algorithmen, welche die Zonenverwaltung steuern, können in der gleichen Weise arbeiten.
  • Der Zonenaustausch ist im Hinblick auf den Austausch der Speicherstellen zweier Zonen in solcher Weise beschrieben worden, dass die logischen Blöcke aus einer Zone in die andere Zone kopiert werden. Allgemein kann ein Zonenaustausch das Austauschen der Speicherstellen von mehr als zwei Zonen beinhalten. Beispielsweise können die Inhalte einer ersten Zone in eine zweite Zone kopiert werden, die Inhalte der zweiten Zone können in eine dritte Zone kopiert werden und die Inhalte der dritten Zone können in die erste Zone kopiert werden. Effektiv können die Speicherstellen von im Wesentlichen einer beliebigen Anzahl von Zonen ausgetauscht werden, wenngleich verstanden werden sollte, dass die Anzahl der Zonen auf Grundlage dessen festgelegt werden kann, was als eine akzeptable Leistungseinbuße betrachtet wird. Das bedeutet, das Austauschen der Speicherstellen von mehr als zwei Zonen gleichzeitig kann zu einer Leistungseinbuße führen, die in einigen Fällen möglicherweise als nicht akzeptabel betrachtet wird.
  • Analog können während eines allumfassenden Zonenaustauschprozesses die Inhalte von mehr als einem Block zwischen Zonen ausgetauscht werden. Mit anderen Worten sollte erkannt werden, dass, wenngleich für einen Zonenaustauschprozess beschrieben worden ist, dass er das Austauschen der Inhalte von jeweils einem Block zwischen Zonen beinhaltet, stattdessen jeweils zwei oder mehr Blöcke zwischen Zonen ausgetauscht werden können.
  • 3. Zonengrenze–Migration
  • Anstatt die Zonen während eines Zonenaustausch-Abnutzungsausgleichsprozesses vollständig auszutauschen, z. B. eine am stärksten abgenutzte Zone mit einer am wenigsten abgenutzten Zone, können die Zonen stattdessen effektiv wandern, als Teil eines Zonenmigrations-Abnutzungsausgleichsprozesses. Das bedeutet, die den Zonen zugeordneten Grenzen können in solcher Weise verschoben werden, dass ein physischer Block oder dass physische Blöcke, der/die ursprünglich Teil einer Zone war(en), Teil einer anderen Zone werden. Durch Verschieben der Zonengrenzen können physische Blöcke, die physischen Zonen zugeordnet waren, die zuvor wiederholt programmiert und gelöscht worden sind, zu physischen Blöcken werden, die weniger häufig programmiert und gelöscht werden. Daher kann die Abnutzung von physischen Blöcken in einem Speicherbauelement gleichmäßiger über das Bauelement verteilt werden. Die Verteilung der Abnutzung von physischen Blöcken über das Bauelement ist insbesondere sinnvoll, wenn zu erwarten ist, dass verschiedene Bereiche der Karte relativ stark genutzt werden. Wenn eine Verschiebungsperiode ausreichend kurz ist, kann im Wesentlichen ein Abnutzungsausgleich in minimalem Umfang garantiert werden.
  • Ein Abnutzungsausgleichsprozess, bei dem eine Zonengrenze-Migration genutzt wird oder effektiv die Grenzen logischer Zonen verschoben werden, ermöglicht es, die physischen Speicherstellen von logischen Zonen sukzessive auszutauschen. Zonengrenzen können lokalisiert werden, indem Sektoren aus Blöcken in Intervallen gelesen werden, die im Wesentlichen gleich der Größe einer Zone sind. Ein Header, der jedem Block zugeordnet ist, kann ein Zonenfeld zeigen. Sobald ein Block aus einer Zone lokalisiert worden ist, können die Grenzen gefunden werden, indem zumindest die Header von zusammenhängenden Blöcken in jeder Richtung gelesen werden, bis ein Block aus jeder der benachbarten Zonen gefunden ist. Alternativ können im Wesentlichen sämtliche Abbildungsinformationen in Tabellen in einem nichtflüchtigen Speicher gespeichert werden. Wenn die Zonengrenzen einer Zone bekannt sind und eine festgelegte Zonengröße bekannt ist, können die den anderen Zonen zugeordneten Zonengrenzen im Allgemeinen bestimmt werden, ohne dass Sektoren aus Blöcken in Intervallen gelesen werden, die im Wesentlichen gleich der festgelegten Größe der Zonen sind. Das bedeutet, wenn die Größe und die Reihenfolge der Zonen bekannt ist, wird es durch Lesen der Inhalte eines Blocks, der einen Header aufweist, welcher die Nummer eines logischen Blocks sowie einer logischen Zone zugeordnete Zoneninformationen enthält, möglich, die Zonengrenzen zu lokalisieren. Im Allgemeinen kann der Header eines Blocks eine absolute Nummer des logischen Blocks umfassen, welche es ermöglicht, die Position des Blocks zu bestimmen, oder eine relative Nummer des logischen Blocks, die zusammen mit Zoneninformationen genutzt werden kann, um die Bestimmung der physischen Speicherstelle von Zonen zu erleichtern.
  • Mit Bezug auf 9 sollen die Schritte beschrieben werden, die mit einem beispielhaften Verfahren des Abnutzungsausgleichs unter Nutzung einer Zonengrenze-Migration verknüpft sind. Ein Prozess 900 beginnt in Schritt 902, in welchem festgestellt wird, ob ein Abnutzungsausgleichsprozess ausgeführt werden soll. Während diese Feststellung unter Nutzung einer Reihe unterschiedlicher Verfahren erfolgen kann, z. B. deterministischer Verfahren, erfolgt eine solche Feststellung bei der beschriebenen Ausführungsform über die Nutzung von Zufalls- oder Pseudozufallszahlen.
  • In Schritt 903 wird festgestellt, ob ein Abnutzungsausgleich ausgeführt werden soll. Wenn festgestellt wird, dass kein Abnutzungsausgleich ausgeführt werden soll, kehrt der Prozessablauf zu Schritt 902 zurück, in welchem eine weitere Feststellung dahingehend erfolgt, ob es zweckmäßig ist, einen Abnutzungsausgleich auszuführen. Alternativ wird, wenn in Schritt 903 festgestellt wird, dass ein Abnutzungsausgleich ausgeführt werden soll, in Schritt 904 effektiv eine Abnutzungsausgleichsprozedur beginnen, wobei festgestellt wird, ob der erste physische Block, der in der logischen Zone "X" liegt, gelöscht ist. Das bedeutet, es wird festgestellt, ob der erste physische Block am Beginn der logischen Zone "X", d. h. an einer unteren Zonengrenze der Zone "X", gelöscht ist.
  • Wenn festgestellt wird, dass der erste physische Block in Zone "X" nicht gelöscht ist, dann wird damit angezeigt, dass der erste physische Block in Zone "X" Informationen enthält. Dementsprechend geht der Prozessablauf zu Schritt 908 über, in welchem die Inhalte des physischen Blocks am Beginn der logischen Zone "X" in einen im Wesentlichen beliebigen verfügbaren Block in der Zone "X" kopiert werden. Sobald die Inhalte des physischen Blocks in den gelöschten Block in Zone "X" kopiert sind, wird der physische Block am Beginn der Zone "X" gelöscht, und zwar in Schritt 912.
  • Nachdem der physische Block am Beginn der Zone "X" in Schritt 912 gelöscht ist, werden die Inhalte des ersten physischen Blocks am Beginn der logischen Zone "X-1" in den neu gelöschten Block in Zone "X" kopiert. Beispielsweise werden, Bezug nehmend auf 6, nachdem der physische Block am Beginn der Zone "0" 614a gelöscht ist, die Inhalte des ersten physischen Blocks am Beginn der Zone "N" 614c in den gelöschten Block kopiert. Infolgedessen sind die logische Zone "X" und die logische Zone "X-1" effektiv um einen physischen Block verschoben. Die Abbildungen der LBAs auf physische Blöcke in speziellen Zonen werden dann in Schritt 920 aktualisiert, sodass sie anzeigen, dass die Inhalte, die sich in dem ersten physischen Block aus Zone "X" befanden, in Schritt 908 verschoben worden sind, und dass die Inhalte des ersten physischen Blocks am Beginn der Zone "X-1" ebenfalls verschoben worden sind.
  • In Schritt 924 wird festgestellt, sobald die Abbildung der physischen Speicherstellen aktualisiert ist, ob weitere Zonen verschoben werden sollen. Wenn festgestellt wird, dass keine weiteren Zonen verschoben werden sollen, besteht die Anzeige darin, dass sämtliche Zonen um einen physischen Block verschoben worden sind, und der Prozess des Verschiebens von Zonen in solcher Weise, dass die Zonengrenzen im Wesentlichen wandern, ist abgeschlossen. Alternativ wird, wenn festgestellt wird, dass weitere Zonen zu verschieben sind, danach eine neue Zone "X" und eine neue Zone "X-1" identifiziert, und zwar Schritt 928. Der Prozessablauf kehrt dann zu Schritt 904 zurück, in welchem festgestellt wird, ob der erste physische Block in Zone "X" gelöscht ist.
  • Kehren wir zu Schritt 904 zurück, so besteht, wenn festgestellt wird, dass der erste physische Block in Zone "X" gelöscht ist, die Anzeige darin, dass der erste physische Block in Zone "X" zum Kopieren in diesen zur Verfügung steht. Insofern geht der Prozessablauf in Schritt 904 zu Schritt 916 über, in welchem die Inhalte des ersten physischen Blocks am Beginn der Zone "X-1" in den ersten physischen Block in Zone "X" kopiert werden.
  • 10 stellt eine schematische Darstellung des Anfangszustands eines Speicherbauelements sowie des Zustand des Speicherbauelements nach dem/den beispielhaften Zonengrenze-Migrationsprozess oder -Prozessen, z. B. dem Prozess 900 aus 9, dar. Ein Bauelement 1000' ist anfangs in eine beliebige Anzahl von Zonen 1004' unterteilt, z. B. fünf Zonen. Nachdem ein oder mehr Zyklen oder Iterationen einer Zonengrenze-Migration abgeschlossen sind, z. B. nachdem jede Zone effektiv um zumindest einen physischen Block verschoben worden ist, sind die Zonengrenzen in solcher Weise gewandert, dass sich die Zonen 1004'' in dem Bauelement 1000'' effektiv um einen oder mehrere physische Blöcke verschoben haben. Wie gezeigt ist, bewirkt eine Zonengrenze-Migration, dass die Zone "4" 1004e' in nicht zusammenhängende physische Blöcke verschoben wird, sodass sie eine Zone "4" 1004e'' und 1004e' bildet.
  • Generell kann ein Zonengrenze-Migrationsprozess in solcher Weise wiederholt werden, dass nach mehreren Iterationen eines Zonengrenze-Migrationsprozesses keine physischen Blöcke, die sich anfänglich in einer gegebenen Zone befanden, in dieser Zone verbleiben. Das bedeutet, die physischen Speicherstellen von Zonen können durch ein gesamtes Speicherbauelement hindurch sukzessive jeweils um einen physischen Block verschoben werden. Die Zonengrenzen können auch in solcher Weise verschoben werden, dass zu einem gewissen Zeitpunkt nach mehreren Iterationen eines Zonengrenze-Migrationsprozesses die physischen Speicherstellen von Zonen die gleichen sind wie die physischen Speicherstellen von Zonen, bevor ein Zonengrenze-Migrationsprozess initiiert worden ist.
  • Die Zeitspanne zwischen aufeinander folgenden Zonengrenze-Migrationsprozessen kann in Abhängigkeit von den Anforderungen an ein Gesamtsystem variieren. Bei einer Ausführungsform kann die Rate, mit welcher Zonen unter Nutzung eines Zonengrenze-Migrationsprozesses verschoben werden, in solcher Weise angepasst werden, dass bis zum Ende der Standzeit eines Speicherbauelements eine gegebene Zone im Wesentlichen das gesamte Bauelement durchquert hat, und nicht mehr. Bei einer weiteren Ausführungsform kann die Rate so gering wie möglich sein, um die mit dem Abnutzungsausgleich verbundene Leistungseinbuße im Wesentlichen zu minimieren und um jede zusätzliche Abnutzung aufgrund des Zonengrenze-Migrationsprozesses selbst effektiv zu minimieren. Es sollte jedoch verstanden werden, dass die Rate, mit welcher Zonen verschoben werden, entsprechend den Überlegungen hinsichtlich des Leistungsverhaltens angepasst werden kann oder dass die Rate willkürlich festgelegt werden kann.
  • Mit Bezug auf die 11a–c soll ein Beispiel für eine Verschiebung einer Zonengrenze während eines Zonengrenze-Migrationsprozesses beschrieben werden. Wie in 11a gezeigt ist, ist ein physisches Bauelement 1100 anfänglich in eine beliebige Anzahl von logischen Zonen 1104 unterteilt. Bei der beschriebenen Ausführungsform umfasst das Bauelement 1100 drei logische Zonen, wenngleich die Anzahl der Zonen 1104 breit variieren kann. Jede der logischen Zonen 1104 wird typischerweise aus einer Mehrzahl von Blöcken gebildet, die zusammenhängende physische Adressen aufweisen, welche durch Zonengrenzen getrennt sind, außer was zusätzliche Blöcke betrifft, die überall in den Zonen verstreut sein können, und zwar aufgrund einer Zuweisung einiger Blöcke zum Speichern von Systeminformationen, einer Zuweisung zu einer Löschgruppe und des Vorhandenseins defekter Blöcke. Jede logische Zone 1104 wird derart definiert, dass sie bestimmte festgelegte physische Blöcke 1106 umfasst. Der vollständige Bereich von logischen Blockadressen (LBAs) der Hostdaten wird typischerweise in eine Anzahl von Segmenten von zusammenhängenden LBAs unterteilt, die gleich der Anzahl der physischen Speicherzonen ist, wobei jedes LBA-Segment auf eine andere der logischen Zonen 1104 abgebildet wird.
  • 11b stellt eine schematische Darstellung des Bauelements 1100 aus 11a während anfänglicher Zonengrenze-Migrationsschritte entsprechend der beschriebenen Ausführungsform dar. Zu Beginn werden die Inhalte des Blocks 1106a, eines ersten physischen Blocks der Zone 1104a, der an der Austauschgrenze 1108c liegt, in einen gelöschten Block 1106c verschoben, und zwar als Schritt (1), der durch den Pfeil 1124 angegeben ist. Wenn kein gelöschter Block in der Zone 1104a zur Verfügung steht, wird zunächst für die gesamte Zone ein Konsolidierungsprozess ausgeführt, um Speicherseiten mit gültigen Daten in weniger Blöcken zu komprimieren und somit einen oder mehrere Blöcke freizumachen, die dann gelöscht werden. In dem unwahrscheinlichen Fall, dass sich dadurch kein gelöschter Block ergibt, muss dann ein genutzter Block in der Zone in eine andere Zone verschoben werden oder die Zonengrenze muss derart erweitert werden, dass sie zusätzliche Blöcke umfasst, aus welchen ein gelöschter Block gefunden werden kann. Als Schritt (2) werden die Inhalte des Blocks 1106e, einem ersten physischen Block, welcher der Zone 1104c zugeordnet ist und an der Austauschgrenze 1108b liegt, in den Block 1106a verschoben, wie durch den Pfeil 1126 angegeben ist, und der erste physische Block 1106e der Zone 1104c wird danach gelöscht.
  • Als Schritt (3) können die Inhalte des Blocks 1106d, eines ersten physischen Blocks der Zone 1104b, der an der Austauschgrenze 1108a liegt, in den ersten physischen Block verschoben werden, welcher der Zone 1104c zugeordnet ist, wodurch der erste physische Block der Zone 1104d effektiv gelöscht hinterlassen wird, wie durch den Pfeil 1128 angegeben ist. Sobald die Inhalte des Blocks 1106d, die dem physischen Block an der Austauschgrenze 1108a zugeordnet sind, verschoben sind, werden in Schritt (4) die Inhalte des Blocks 1106b in den ersten physischen Block 1106d der Zone 1104b verschoben, wie durch den Pfeil 1130 angegeben ist.
  • Wie in 11c gezeigt ist, sind, wenn die Inhalte der Blöcke 1106 verschoben oder kopiert und gelöscht worden sind, die logischen Zonengrenzen effektiv verschoben. Die physischen Zonengrenzen für jede der logischen Zonen 1104 sind effektiv um einen physischen Block verschoben. Beispielsweise haben sich die Grenzen 1108c und 1108a der logischen Zonen derart verschoben oder sind gewandert, dass die Zone 1104a verschoben ist. In gleicher Weise haben sich auch die Zonen 1104b, 1104c verschoben, ebenfalls aufgrund der Migration der logischen Zonengrenzen 1108a, 1108b und 1108c. Diese Verschiebung oder Migration wird dadurch erreicht, dass Daten zwischen den Blöcken wie beschrieben verschoben werden und außerdem der Bereich von LBAs für jede Zone auf einen Satz von Blöcken neu abgebildet wird, der den zu der Zone hinzugefügten Block enthält, bei dem aber der aus der Zone entfernte Block weggelassen ist. Wenngleich für die Zonengrenze-Migration beschrieben worden ist, dass die Grenze einer Zone jeweils um einen physischen Block verschoben wird, kann eine Zonengrenze auch jeweils um mehr als einen Block verschoben werden, aber nur um einen geringen Anteil der Anzahl von Blöcken in einer Zone, beispielsweise weniger als 10, 5 oder 2 Prozent. Das Ziel besteht darin, die Grenzmigration jeweils für eine geringe Anzahl von Blöcken während Perioden auszuführen, in denen der Host kein Programmieren oder kein Lesen von Daten anfordert und in denen der Controller keine anderweitigen Operationen mit höherer Priorität ausführt. Der Abnutzungsausgleich wird somit ausgeführt, ohne das Gesamtleistungsverhalten des Speichers negativ zu beeinflussen.
  • Außerdem kann, was die Zonengrenze-Migration betrifft, wenn gelöschte Blöcke, die einem Speicherbauelement zugeordnet sind, in einer separaten Gruppe unterhalten werden, z. B. nicht in einzelnen Zonen unterhalten werden, die Gruppe von gelöschten Blöcken während der Zonengrenze-Migration als eine Zone behandelt werden.
  • 4. Abnutzungsausgleich für einzelne Zonen
  • Ein Abnutzungsausgleichsprozess ähnlich dem mit Bezug auf die 911c beschriebenen kann auch bei einem Speichersystem mit einer einzigen Zone angewandt werden. Die sich verschiebenden logischen Grenzen, die zuvor beschrieben wurden, stellen physische Zeiger dar, welche die unmittelbar an sie angrenzenden Blöcke angeben, und zwar zur Abnutzungsausgleichsbearbeitung. Bei einer einzigen Zone durchläuft ein solcher Zeiger die Speicherzellenblöcke in irgendeiner deterministischen Weise, beispielsweise indem er jeweils über die Blöcke hin in der Reihenfolge der physischen Adressen dieser um eins inkrementiert wird. Wenn die Kriterien zum Ausführen eines Abnutzungsausgleichsvorgangs erfüllt sind, wird ein Prozess in dem Block, auf den momentan gezeigt wird, initiiert. Wenn dieser nicht gelöscht ist, werden dessen Inhalte in einen Block innerhalb der Zone kopiert, der sich in einem gelöschten Zustand befindet, nämlich einen Block in einer Löschgruppe. Die Adresstabellen werden danach aktualisiert, sodass sie diese Änderung der Speicherstelle für die kopierten Daten widerspiegeln, und der ursprüngliche Block wird gelöscht. Der Zeiger bewegt sich dann zu dem nächsten Block, um eine Auslösung des nächsten Abnutzungsausgleichszyklus abzuwarten, zu welchem Zeitpunkt der Prozess mit diesem nächsten Block wiederholt wird. Wenn sich der Block, auf den gezeigt wird, anfangs in einem gelöschten Zustand befindet, bewegt sich der Zeiger lediglich zu dem nächsten Block weiter, ohne dass ein Abnutzungsausgleich stattfindet. Wenn der Zeiger vor dem Ende der Standzeit des Speichersystems einmal sämtliche Blöcke in der Zone durchlaufen hat, kann er dann seinen Zyklus wiederholen.
  • Man wird erkennen, dass dieser Abnutzungsausgleichsprozess ausgeführt wird, ohne dass darauf Bezug genommen wird, wie viele Male die einzelne Blöcke gelöscht und erneut programmiert worden sind (Aktivzahlen). Eine Schwellbedingung zum Ausführen des Abnutzungsausgleichsvorgangs kann die Programmierung einer vorgegebenen Anzahl von Blöcken in der Löschgruppe seit dem letzten Abnutzungsausgleichsvorgang darstellen. Das bedeutet, die Abnutzungsausgleichsoperationen werden an den Blöcken, auf die gezeigt wird, in Intervallen einer vorgegebenen Anzahl von Blockprogrammierungsvorgängen ausgeführt. Außerdem können, anstatt dass jeweils einzelne Blöcke behandelt werden, alternativ in den einzelnen Abnutzungsausgleichsoperationen zwei oder mehr Blöcke umfasst werden.
  • Die in den vorangegangenen Absätzen dieses Abschnitts beschriebenen Prozesse können auch auf ein Mehrzonensystem angewandt werden, bei dem ein Abnutzungsausgleich innerhalb jeder Zone stattfindet, ohne dass die Zonengrenzen verändert werden.
  • 5. Aktivzahlen
  • Es sollte erkannt werden, dass, anstatt Aktivzahlen auf Basis physischer Blöcke zu unterhalten, Aktivzahlen in Bezug auf logische Blöcke unterhalten werden könnten. Das Unterhalten von Aktivzahlen für logische Blöcke, z. B. das Unterhalten relativer Aktivzahlen, macht es möglich, die vor kürzester Zeit verschobenen und die vor längster Zeit verschobenen logischen Blöcke zu verfolgen. Bei einer Ausführungsform können die logischen Blöcke effektiv auf Grundlage dessen, vor wie langer Zeit die Blöcke verschoben wurden, in Mengen gruppiert werden. Sämtliche Blöcke in einer Zone können einen anfänglichen relativen Aktivzahlwert erhalten, und jedes Mal, wenn ein Block verschoben wird, kann die relative Aktivzahl auf den Wert der vor kürzester Zeit verschobenen Menge oder Gruppe aktualisiert werden, welcher im Allgemeinen um eins über dem Basiswert liegt. Sobald sich eine bestimmte Anzahl von Blöcken in der vor kürzester Zeit verschobenen Gruppe befinden, kann der Wert für die vor kürzester Zeit verschobene Gruppe inkrementiert werden, und etwaige Blöcke, die danach verschoben werden, können auf den neuen Wert der Gruppe aktualisiert werden. Infolgedessen können getrennte Gruppen oder Mengen logischer oder physischer Blöcke mit einer relativ klaren Unterscheidung zwischen vor kürzester Zeit verschobenen und vor längster Zeit verschobenen Blöcken erzeugt werden. Im Allgemeinen lässt man den relativen Aktivzahlwert eines Blocks überschlagen, um die Verwendung relativ kleiner Zahlenfelder zu ermöglichen. Die Werte können in solcher Weise verwaltet werden, dass im Wesentlichen immer eine große Menge an ungenutzten Werten zwischen den vor kürzester Zeit und den vor längster Zeit genutzten Werten vorhanden ist, um eine Unterscheidung zwischen einem niedrigen Wert, der einen vor längster Zeit verschobenen Block anzeigt, und einem niedrigen Wert, der einen vor kürzester Zeit verschobenen Block anzeigt, bei einem kürzlich überschlagenen numerischen Feld zu ermöglichen.
  • Wenn relative Aktivzahlen implementiert werden, können im Wesentlichen sämtliche Blöcke bei einem Basiswert von '0' beginnen, wenn es acht mögliche Werte gibt, bei einem spezifischen Beispiel z. B. die Werte '0' bis '7'. Sieben der acht Werte können genutzt werden, während ein Wert reserviert wird, um eine Lücke zwischen dem Wert, welcher die vor kürzester Zeit programmierten Blöcke repräsentiert, und dem Wert, welcher die Blöcke identifiziert, die die ältesten Daten enthalten, bereitzustellen. Bei diesem Beispiel erhalten Blöcke, die beschrieben werden, einen neuen Wert '1', um anzugeben, dass sie die vor kürzester Zeit neu programmierten darstellen. Sobald eine bestimmte vorgegebene Anzahl von Blöcken auf den neuen Wert '1' aktualisiert worden ist, können Blöcke, die neu programmiert werden, einen neuen Wert '2' erhalten. Ein Wert '3' kann schließlich neu programmierten Blöcken zugeordnet werden, sobald die gleiche oder eine andere vorgegebene Anzahl von Blöcken einen Wert '2' besitzt. Dies setzt sich fort, wobei die nächste Gruppennummer Blöcken zugeordnet wird, die neu programmiert werden, nachdem jeweils eine vorgegebene Anzahl von Blöcken neu programmiert worden ist. An einem gewissen Punkt wird der Zähler überschlagen, sodass die vor längster Zeit genutzten Blöcke einen Wert '2' aufweisen, die vor jüngster Zeit verschobenen Blöcke einen Wert '0' aufweisen und der Wert '1' eine Lücke zwischen den beiden bereitgestellt, sodass sich die Werte für die Blöcke mit den ältesten und den neusten Daten deutlich identifizieren lassen.
  • Schließlich werden sämtliche Blöcke in der ältesten Menge umgeschrieben sein. Falls dies nicht durch Schreibvorgänge des Host, durch unwiederbringliches Löschen oder durch irgendeinen anderen Mechanismus geschieht, dann durch einen Abnutzungsausgleich. Bei dem vorstehenden Beispiel wird die Menge '2' welche die ältesten Blöcke enthält, dann leer sein, und dieser Wert kann als Lücke dienen, während die Menge '1' genutzt werden kann, um die vor kürzester Zeit beschriebenen Blöcke zu identifizieren. Eine größere Lücke als Eins zwischen genutzten Wertebereichen (Mengen) kann sich bei einem Fall ergeben, bei welchem Blöcke aus der vor mittlerer Zeit verschobenen Gruppe durch einen Host- oder irgendeinen anderen Mechanismus schneller aktualisiert werden, als ein Abnutzungsausgleichsvorgang die vor längster Zeit verschobenen Blöcke verschiebt. Es können absolute Aktivzahlen verfügbar sein, in welchem Fall das System vorzugsweise Informationen bezüglich der Nutzung logischer oder physischer Blöcke nutzen kann, um Entscheidungen zu steuern.
  • Bei einem zoneninternen Abnutzungsausgleichsschema kann ein Block dafür ausgewählt werden, in einen gelöschten Block verschoben zu werden. Wenn relative logische Aktivzahlen implementiert sind, kann das zoneninterne Abnutzungsausgleichsschema einen logischen Block aus einer vor längster Zeit verschobenen Gruppe oder aus einer Gruppe mit dem niedrigsten Wert auswählen. Sobald der ausgewählte Block verschoben ist, erhält der ausgewählte Block einen Wert einer vor jüngster Zeit verschobenen Gruppe. Generell werden die logischen Blöcke, auf die am häufigsten von dem Host zugegriffen wird, einen Wert aufweisen, der angibt, dass die Blöcke vor jüngster Zeit verschoben worden sind, und somit können sie nicht von einem Abnutzungsausgleichssystem zur Verschiebung ausgewählt werden. Gleichzeitig werden logische Blöcke, auf die am seltensten durch den Host zugegriffen wird, tendenziell einen niedrigeren Wert aufweisen, der letztendlich anzeigt, dass die Blöcke vor längster Zeit verschoben worden sind. Die logischen Blöcke mit einem vor längster Zeit verschobenen Wert werden typischerweise seit gewisser Zeit keinen Zugriff erlebt haben, und infolgedessen werden andere Blöcke in derselben Zeitspanne einen höheren Abnutzungsgrad erreicht haben. Sobald die logischen Blöcke mit weniger häufigen Zugriffen in gelöschte physische Blöcke verschoben sind, werden die logischen Blöcke mit weniger häufigen Zugriffen typischerweise an ihren momentanen physischen Speicherstellen verbleiben, bis sie durch einen Abnutzungsausgleich erneut verschoben werden. Das bedeutet, ein physischer Block, in welchem ein logischer Block mit weniger häufigen Zugriffen angesiedelt ist, wird im Allgemeinen keinen Zugriff erfahren, während der zuvor belegte physische Block in eine Löschgruppe transferiert werden kann, zur zukünftigen Nutzung, und daher eine stärkere Abnutzung erfahren wird.
  • Für eine Löschgruppe aus gelöschten physischen Blöcken ist allgemein beschrieben worden, dass sie innerhalb einer Zone enthalten ist. Bei einer Ausführungsform kann eine Gruppe aus gelöschten Blöcken separat von Zonen in einem Speicherbauelement unterhalten werden. Solche gelöschten Blöcke können auf bedarfsmäßiger Grundlage aus einer physisch zusammenhängenden Gruppe von Blöcken in dem Speicherbauelement zugewiesen werden.
  • D. ZUSAMMENFASSUNG
  • Wenngleich die bevorzugten Ausführungsformen der vorliegenden Erfindung allgemein im Zusammenhang mit einem Satz von Sektoren beschrieben worden sind, kann die Anzahl der Sektoren in einem Sektorensatz eine beliebige geeignete Anzahl größer oder gleich Eins darstellen. Die effizienteste Anzahl von Sektoren in einem Sektorensatz hängt jedoch typischerweise von der Anzahl der Sektoren in einer Löscheinheit und der Anzahl von Löscheinheiten in dem physischen Speicherarray ab.
  • Für die verschiedenen Abnutzungsausgleichsprozesse wurde beschrieben, dass sie zur Implementierung in Bezug auf nichtflüchtige Speichersysteme wie beispielsweise Flash-Speicherkarten geeignet sind. Generell können Abnutzungsausgleichsprozesse auf im Wesentlichen beliebige geeignete nichtflüchtige Speichersysteme angewandt werden. Geeignete nichtflüchtige Speichersysteme sind eingebettete Speicher und Speicherlaufwerke, aber nicht ausschließlich. Bei einer Ausführungsform können solche nichtflüchtigen Speicherelemente entfernbar mit Hostsystemen gekoppelt werden, und bei einer weiteren Ausführungsform kann das nichtflüchtige Speichersystem ein eingebettetes System in einem Hostsystem darstellen. Außerdem können Abnutzungsausgleichsprozesse auf verschiedene flüchtige Speichersysteme angewandt werden.
  • Während für nichtflüchtige Speichersysteme beschrieben worden ist, dass sie Speicher-Controller umfassen, sollte verstanden werden, dass die Abnutzungsausgleichsprozesse auch auf nichtflüchtige Speichersysteme angewandt werden können, die keine Speicher-Controller umfassen. Geeignete Speichersysteme, welche Controller nutzen, sind PC-Karten, CompactFlash-Karten, MultiMedia-Karten und Secure Digital-Karten, aber nicht ausschließlich. Speichersysteme, welche die vorstehend beschriebenen Abnutzungsausgleichsprozesse nutzen können und keine den Speichersystemen zugehörigen Controller nutzen, können Controller nutzen, die einem Host zugeordnet sind, z. B. einem Host-Computersystem, um einen Abnutzungsausgleich zu implementieren, beispielsweise SmartMedia-Karten und MemoryStick-Karten. Mit anderen Worten ist es möglich, dass ein Host direkt einen Speicher adressiert und verwaltet, in welchem ein Abnutzungsausgleich stattfinden soll. Außerdem kann ein primärer Prozessor, der in dem Hostsystem angesiedelt ist, als Speicher-Controller für das Speichersystem agieren, egal ob das Speichersystem einen Controller enthält oder nicht.
  • Wenngleich nur einige wenige Ausführungsformen der vorliegenden Erfindung beschrieben worden sind, sollte verstanden werden, dass die vorliegende Erfindung in vielen anderen spezifischen Formen verkörpert sein kann, ohne dass vom Schutzumfang der vorliegenden Erfindung abgewichen wird. Beispielsweise sollte verstanden werden, dass, wenngleich der Abnutzungsausgleich im Zusammenhang mit einer direkten Adressierung und mit Löschgruppenbildung als im Wesentlichen automatischer Prozess beschrieben worden ist, dieser Abnutzungsausgleich auch einen vom Nutzer gesteuerten Prozess darstellen kann. Mit anderen Worten ist es möglich, dass ein Nutzer festlegt, wann ein Abnutzungsausgleichprozess ausgelöst wird, indem er über eine Hostschnittstelle einen Befehl ausgibt.
  • Generell können die Schritte, die mit den verschiedenen Prozessen und Verfahren des Abnutzungsausgleichs im Zusammenhang stehen, breit variieren. Es können generell Schritte hinzugefügt, entfernt, verändert und umgeordnet werden, ohne dass vom Schutzumfang der vorliegenden Erfindung abgewichen wird. Beispielsweise braucht es nicht notwendig zu sein, die Abbildungsinformationen zu aktualisieren, wenn Zonengrenzen verschoben oder Zonen ausgetauscht werden. Wenn einzelne physische Blöcke einen bestimmten Indikator dafür aufweisen, zu welcher logischen Zone die physischen Blöcke gehören, dann ist es möglicherweise nicht notwendig, den Fortschritt eines Austauschs oder einer Migration effektiv zu protokollieren. Es können auch Schritte zu den verschiedenen Verfahren und Prozessen hinzugefügt werden, um der Aktualisierung von Datenstrukturen oder den Abbildungen Rechnung zu tragen, welche die Lokalisierung verschiedener logischer Blöcke ermöglichen, ohne dass vom Schutzumfang der vorliegenden Erfindung abgewichen wird. Ferner kann in eine spezifische Implementierung eine Mehrzahl von Ausführungsformen integriert sein.
  • Die vorliegenden Beispiele sind daher als veranschaulichend und nicht als einschränkend zu betrachten, und die Erfindung ist nicht auf die vorliegend angegebenen Details beschränkt, sondern kann innerhalb des Schutzumfangs der anhängenden Ansprüche modifiziert werden.

Claims (8)

  1. Verfahren zum Betreiben eines Speichersystems, das eine Mehrzahl von Einheiten aus löschbaren und erneut programmierbaren, nichtflüchtigen Speicherzellen umfasst, die benachbarte physikalische Adressen aufweisen, die in Zonen (1104a, 1104b, 1104c) gegliedert werden, mit Adressgrenzen zwischen diesen, und wobei auf jede der Zonen (1104a, 1104b, 1104c) ein verschiedener Bereich von logischen Adressen abgebildet wird, wobei das Verfahren umfasst: Neuzuweisen der Grenzadressen, um zumindest eine Einheit aus jeder der Zonen (1104a, 1104b, 1104c) zu löschen und die zumindest eine Einheit zu einer angrenzenden Zone (1104a, 1104b, 1104c) hinzuzufügen, ohne die Anzahl der Einheiten in den einzelnen Zonen (1104a, 1104b, 1104c) zu verändern; danach Zugreifen auf die Zonen (1104a, 1104b, 1104c), um Daten in die neu zugewiesenen Speicherzelleneinheiten in diesen zu programmieren oder Daten aus diesen zu lesen, entsprechend der logischen Adressen der Daten; und wiederholtes Neuzuweisen der Grenzadressen und Zugreifen auf die Zonen (1104a, 1104b, 1104c), zumindest bis die Speicherzelleneinheiten alle aus ihren Zonen (1104a, 1104b, 1104c) in angrenzende Zonen (1104a, 1104b, 1104c) verschoben worden sind, um dadurch die Nutzung der Einheiten, auf welche über die logischen Adressen zugegriffen wird, zu verteilen.
  2. Verfahren nach Anspruch 1, wobei das Neuzuweisen der Grenzadressen das Löschen einer Anzahl von Einheiten aus jeder der Zonen (1104a, 1104b, 1104c) umfasst, die weniger als zehn Prozent der Einheiten in der Zone (1104a, 1104b, 1104c) ausmacht, sowie das Hinzufügen der Anzahl von Einheiten zu einer angrenzenden Zone (1104a, 1104b, 1104c).
  3. Verfahren nach Anspruch 1, wobei die Zonen (1104a, 1104b, 1104c) derart gebildet werden, dass sich Teile ihrer Speicherzelleneinheiten in einer individuellen Mehrzahl von Speicherebenen befinden, und wobei das Neuzuweisen der Grenzadressen das Löschen von zumindest einer Einheit aus jedem Teil der Zonen (1104a, 1104b, 1104c) in jeder der Speicherebenen umfasst, sowie das Hinzufügen der zumindest einen Einheit zu einem angrenzenden Teil einer anderen Zone (1104a, 1104b, 1104c) in der gleichen Ebene.
  4. Verfahren nach Anspruch 1, wobei die Speicherzelleneinheiten einzeln eine Mehrzahl gleichzeitig löschbarer Speicherzellen umfassen.
  5. Verfahren nach Anspruch 4, wobei die Speicherzelleneinheiten einzeln eine Mehrzahl von Speicherseiten umfassen, die individuell mit Daten programmiert werden können.
  6. Verfahren nach Anspruch 1, wobei das Neuzuweisen der Grenzadressen das Kopieren etwaiger Daten, die in der zumindest einen Einheit gespeichert sind, aus jeder der Zonen (1104a, 1104b, 1104c) in die hinzugefügte Einheit der angrenzenden Zone (1104a, 1104b, 1104c) umfasst.
  7. Verfahren nach Anspruch 1, wobei die löschbaren und erneut programmierbaren, nichtflüchtigen Speicherzellen physikalisch in Einheiten mit einer minimalen Anzahl von Speicherzellen gegliedert werden, die gleichzeitig löschbar sind, wobei das Verfahren ferner umfasst: Richten von Host-Zugriffsanforderungen zum Programmieren oder zum Lesen von Daten in einem von drei oder mehr sich nicht überlappenden Bereichen von logischen Speicheradressen an eine eindeutige logische Gruppe einer entsprechenden Anzahl von logischen Gruppen von Speicherzellen-Löscheinheiten, Abbilden von Zugriffsanforderungen von den logischen Gruppen auf verschiedene physikalische Gruppen aus einer Mehrzahl von Löscheinheiten, wobei die physikalischen Gruppen die Zonen (1104a, 1104b, 1104c) bilden, und zwischen den Daten-Programmier- oder Lesevorgängen, die durch Host-Zugriffsanforderungen bewirkt werden, wiederholtes Neuabbilden der logischen Gruppen auf die physikalischen Gruppen (1104a, 1104b, 1104c) durch Entfernen eines Teils der einzelnen physikalischen Gruppen (1104a, 1104b, 1104c), der zumindest jeweils eine Löscheinheit umfasst, und Hinzufügen der entfernten Löscheinheiten zu angrenzenden Gruppen der physikalischen Gruppen (1104a, 1104b, 1104c) in solcher Weise, dass eine einheitliche Anzahl von Löscheinheiten in den einzelnen physikalischen Gruppen (1104a, 1104b, 1104c) aufrechterhalten wird, wodurch die Nutzung der Löscheinheiten im Zeitverlauf über das System hin ausgeglichen wird.
  8. Verfahren nach Anspruch 1, ferner umfassend: Definieren einer Mehrzahl von Zonen (1104a, 1104b, 1104c), sodass diese individuell einen Teil einer Mehrzahl von Blöcken aus gleichzeitig löschbaren Speicherzellen von jeder von mehreren Ebenen umfassen, Abbilden eines unterschiedlichen Teils eines Bereichs von logischen Adressen auf jede der Zonen (1104a, 1104b, 1104c), und wiederholtes Neudefinieren der einzelnen Zonen (1104a, 1104b, 1104c) durch Entfernen zumindest eines Blocks aus diesen in jeder Ebene und Hinzufügen der entfernten Blöcke zu anderen der Zonen (1104a, 1104b, 1104c) in ihren gleichen Ebenen in solcher Weise, dass die Mehrzahl von Zonen (1104a, 1104b, 1104c) mit der spezifizierten Mehrzahl von Blöcken in jeder der Mehrzahl von Ebenen beibehalten wird, wodurch die Nutzung der Blöcke bei verschiedenen Bereichen der Bereiche von logischen Adressen im Zeitverlauf über das Array hin verteilt wird.
DE60316171T 2002-10-28 2003-10-09 Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem Expired - Lifetime DE60316171T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US42217302P 2002-10-28 2002-10-28
US422173P 2002-10-28
PCT/US2003/032050 WO2004040586A1 (en) 2002-10-28 2003-10-09 Automated wear leveling in non-volatile storage systems

Publications (2)

Publication Number Publication Date
DE60316171D1 DE60316171D1 (de) 2007-10-18
DE60316171T2 true DE60316171T2 (de) 2008-05-29

Family

ID=32230329

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60316171T Expired - Lifetime DE60316171T2 (de) 2002-10-28 2003-10-09 Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem

Country Status (9)

Country Link
US (2) US7120729B2 (de)
EP (1) EP1556868B1 (de)
JP (1) JP4518951B2 (de)
KR (2) KR101122511B1 (de)
CN (1) CN100483552C (de)
AT (1) ATE372578T1 (de)
AU (1) AU2003282544A1 (de)
DE (1) DE60316171T2 (de)
WO (1) WO2004040586A1 (de)

Families Citing this family (267)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8171203B2 (en) * 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6901498B2 (en) * 2002-12-09 2005-05-31 Sandisk Corporation Zone boundary adjustment for defects in non-volatile memories
TWI243303B (en) * 2003-11-14 2005-11-11 Hon Hai Prec Ind Co Ltd System and method for managing flash file stored in a flash memory
JP4347707B2 (ja) * 2004-01-09 2009-10-21 パナソニック株式会社 情報記録媒体のフォーマット方法および情報記録媒体
JP2006024024A (ja) * 2004-07-08 2006-01-26 Toshiba Corp 論理ディスク管理方法及び装置
JP4561246B2 (ja) * 2004-08-31 2010-10-13 ソニー株式会社 メモリ装置
US7590918B2 (en) * 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
US7509526B2 (en) * 2004-09-24 2009-03-24 Seiko Epson Corporation Method of correcting NAND memory blocks and to a printing device employing the method
US7441067B2 (en) * 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US7395404B2 (en) * 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7386655B2 (en) 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
JP4665539B2 (ja) * 2005-01-31 2011-04-06 ソニー株式会社 メモリ制御装置、メモリ制御方法、プログラム
US8108691B2 (en) 2005-02-07 2012-01-31 Sandisk Technologies Inc. Methods used in a secure memory card with life cycle phases
US8321686B2 (en) 2005-02-07 2012-11-27 Sandisk Technologies Inc. Secure memory card with life cycle phases
US8423788B2 (en) 2005-02-07 2013-04-16 Sandisk Technologies Inc. Secure memory card with life cycle phases
US20060236025A1 (en) * 2005-04-18 2006-10-19 Intel Corporation Method and apparatus to control number of erasures of nonvolatile memory
US7685360B1 (en) 2005-05-05 2010-03-23 Seagate Technology Llc Methods and structure for dynamic appended metadata in a dynamically mapped mass storage device
US7916421B1 (en) * 2005-05-05 2011-03-29 Seagate Technology Llc Methods and structure for recovery of write fault errors in a dynamically mapped mass storage device
US7743409B2 (en) 2005-07-08 2010-06-22 Sandisk Corporation Methods used in a mass storage device with automated credentials loading
JP4679581B2 (ja) * 2005-07-29 2011-04-27 パナソニック株式会社 メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及び不揮発性メモリのアドレス管理方法
US7680980B2 (en) * 2005-08-12 2010-03-16 Kabushiki Kaisha Toshiba Image forming apparatus
KR101014179B1 (ko) * 2005-09-14 2011-02-14 디스크레틱스 테크놀로지스 엘티디. 플래시 대용량 저장 메모리를 가진 보안 장치를 위한 보안 및 적응형 시스템 구조
US20070061597A1 (en) * 2005-09-14 2007-03-15 Micky Holtzman Secure yet flexible system architecture for secure devices with flash mass storage memory
US8966284B2 (en) 2005-09-14 2015-02-24 Sandisk Technologies Inc. Hardware driver integrity check of memory card controller firmware
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
KR100848315B1 (ko) * 2005-12-08 2008-07-24 한국전자통신연구원 이중 저널링을 이용한 데이터 저장 공간 확보 방법
JP2007164318A (ja) * 2005-12-12 2007-06-28 Renesas Technology Corp 記憶装置
US7245556B1 (en) * 2005-12-28 2007-07-17 Sandisk Corporation Methods for writing non-volatile memories for increased endurance
US20070150644A1 (en) * 2005-12-28 2007-06-28 Yosi Pinto System for writing non-volatile memories for increased endurance
US7599261B2 (en) * 2006-01-18 2009-10-06 International Business Machines Corporation Removable storage media with improved data integrity
US20070174549A1 (en) * 2006-01-24 2007-07-26 Yevgen Gyl Method for utilizing a memory interface to control partitioning of a memory module
US8756399B2 (en) * 2006-01-25 2014-06-17 Seagate Technology Llc Mutable association of a set of logical block addresses to a band of physical storage blocks
US20070208904A1 (en) * 2006-03-03 2007-09-06 Wu-Han Hsieh Wear leveling method and apparatus for nonvolatile memory
US8296497B2 (en) * 2006-03-14 2012-10-23 Stmicroelectronics Pvt. Ltd. Self-updating memory controller
US20070255889A1 (en) * 2006-03-22 2007-11-01 Yoav Yogev Non-volatile memory device and method of operating the device
JP4863749B2 (ja) * 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
KR101185617B1 (ko) 2006-04-04 2012-09-24 삼성전자주식회사 외부 메모리의 부하를 줄일 수 있는 웨어 레벨링 기법에의한 플래시 파일 시스템의 동작 방법
US7467253B2 (en) * 2006-04-13 2008-12-16 Sandisk Corporation Cycle count storage systems
US7451264B2 (en) * 2006-04-13 2008-11-11 Sandisk Corporation Cycle count storage methods
JP4804218B2 (ja) * 2006-05-11 2011-11-02 株式会社日立製作所 記憶媒体への書き込み回数を管理する計算機システム及びその制御方法
FR2901035B1 (fr) * 2006-05-11 2008-07-11 St Microelectronics Sa Procede et dispositif de gestion d'une table de correspondance d'acces a une memoire
US7778077B2 (en) * 2006-05-15 2010-08-17 Sandisk Corporation Non-volatile memory system with end of life calculation
EP2024839B1 (de) 2006-05-15 2014-07-02 SanDisk Technologies Inc. Nichtflüchtiges speichersystem mit lebensdauerberechnung
US7523013B2 (en) * 2006-05-15 2009-04-21 Sandisk Corporation Methods of end of life calculation for non-volatile memories
US7349254B2 (en) * 2006-05-31 2008-03-25 Qimonda Flash Gmbh & Co. Kg Charge-trapping memory device and methods for its manufacturing and operation
US20080046630A1 (en) * 2006-08-21 2008-02-21 Sandisk Il Ltd. NAND flash memory controller exporting a logical sector-based interface
US20080046641A1 (en) * 2006-08-21 2008-02-21 Sandisk Il Ltd. NAND flash memory controller exporting a logical sector-based interface
US20080052524A1 (en) * 2006-08-24 2008-02-28 Yoram Cedar Reader for one time password generating device
US20080072058A1 (en) * 2006-08-24 2008-03-20 Yoram Cedar Methods in a reader for one time password generating device
US20080091871A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Non-volatile memory with worst-case control data management
US20080091901A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US20080126685A1 (en) * 2006-11-24 2008-05-29 Radoslav Danilak System, method, and computer program product for reducing memory write operations using an instruction set
US7904764B2 (en) * 2006-11-24 2011-03-08 Sandforce, Inc. Memory lifetime gauging system, method and computer program product
US7809900B2 (en) * 2006-11-24 2010-10-05 Sandforce, Inc. System, method, and computer program product for delaying an operation that reduces a lifetime of memory
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
US8090980B2 (en) * 2006-12-08 2012-01-03 Sandforce, Inc. System, method, and computer program product for providing data redundancy in a plurality of storage devices
US7904672B2 (en) * 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
US9153337B2 (en) * 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
KR100881669B1 (ko) * 2006-12-18 2009-02-06 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
US7710777B1 (en) * 2006-12-20 2010-05-04 Marvell International Ltd. Semi-volatile NAND flash memory
US8356152B2 (en) * 2006-12-27 2013-01-15 Intel Corporation Initiative wear leveling for non-volatile memory
US8423794B2 (en) 2006-12-28 2013-04-16 Sandisk Technologies Inc. Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications
TW200828320A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Method for performing static wear leveling on flash memory
CN100504814C (zh) * 2007-01-17 2009-06-24 忆正存储技术(深圳)有限公司 闪存的区块管理方法
KR20080072201A (ko) * 2007-02-01 2008-08-06 삼성전자주식회사 메모리 포맷이 가능한 디지털 전자기기, 메모리 포맷 방법,그리고, 저장기능을 가지는 디지털 전자기기 및 저장방법
KR100882740B1 (ko) * 2007-02-22 2009-02-09 삼성전자주식회사 맵 히스토리 기반의 불휘발성 메모리의 매핑 방법 및 저장장치
US7731365B2 (en) * 2007-03-19 2010-06-08 Johnson&Johnson Vision Care, Inc. Method of fitting contact lenses
US7689762B2 (en) 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
US20080294813A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Managing Housekeeping Operations in Flash Memory
US20080294814A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Flash Memory System with Management of Housekeeping Operations
JP4444314B2 (ja) 2007-07-13 2010-03-31 株式会社東芝 半導体メモリ情報蓄積装置とその書き込み制御方法
KR100857761B1 (ko) * 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
CN100538662C (zh) 2007-07-05 2009-09-09 炬力集成电路设计有限公司 一种基于局部采样的存储器的磨损平衡方法
JP5039463B2 (ja) * 2007-07-12 2012-10-03 株式会社日立製作所 記録装置および記録方法
KR101447188B1 (ko) * 2007-07-31 2014-10-08 삼성전자주식회사 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
TWI373772B (en) * 2007-10-04 2012-10-01 Phison Electronics Corp Wear leveling method and controller using the same
CN101409108B (zh) * 2007-10-09 2011-04-13 群联电子股份有限公司 平均磨损方法及使用此方法的控制器
US20090106522A1 (en) * 2007-10-18 2009-04-23 Sony Corporation Electronic system with dynamic selection of multiple computing device
CN101419834B (zh) * 2007-10-22 2011-03-30 群联电子股份有限公司 平均磨损方法及使用此方法的控制器
US8296498B2 (en) * 2007-11-13 2012-10-23 Sandisk Technologies Inc. Method and system for virtual fast access non-volatile RAM
US7849275B2 (en) 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
WO2009067558A2 (en) 2007-11-19 2009-05-28 Nexxus Lighting, Inc. Apparatus and method for thermal dissipation in a light
US7903486B2 (en) * 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
EP2220430A4 (de) * 2007-11-19 2010-12-22 Nexxus Lighting Inc Vorrichtung und verfahren zur wärmeverwaltung von leuchtdioden
US9183133B2 (en) 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US7636258B2 (en) * 2007-12-12 2009-12-22 Qimonda Flash Gmbh Integrated circuits, memory controller, and memory modules
US8656083B2 (en) * 2007-12-21 2014-02-18 Spansion Llc Frequency distributed flash memory allocation based on free page tables
US8352671B2 (en) 2008-02-05 2013-01-08 Spansion Llc Partial allocate paging mechanism using a controller and a buffer
US8095724B2 (en) * 2008-02-05 2012-01-10 Skymedi Corporation Method of wear leveling for non-volatile memory and apparatus using via shifting windows
US8332572B2 (en) 2008-02-05 2012-12-11 Spansion Llc Wear leveling mechanism using a DRAM buffer
US8275945B2 (en) * 2008-02-05 2012-09-25 Spansion Llc Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer
US8209463B2 (en) * 2008-02-05 2012-06-26 Spansion Llc Expansion slots for flash memory based random access memory subsystem
US8914340B2 (en) * 2008-02-06 2014-12-16 International Business Machines Corporation Apparatus, system, and method for relocating storage pool hot spots
US8423739B2 (en) * 2008-02-06 2013-04-16 International Business Machines Corporation Apparatus, system, and method for relocating logical array hot spots
DE102008009768B4 (de) * 2008-02-19 2011-04-07 Texas Instruments Deutschland Gmbh Inkrementierender Zähler mit verlängerter Schreiblebensdauer
JP5010505B2 (ja) * 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
US8560761B2 (en) * 2008-03-31 2013-10-15 Spansion Llc Memory resource management for a flash aware kernel
KR101437123B1 (ko) * 2008-04-01 2014-09-02 삼성전자 주식회사 메모리 시스템 및 그것의 마모도 관리 방법
US20090254729A1 (en) * 2008-04-07 2009-10-08 Skymedi Corporation Method of wear leveling for a non-volatile memory
US20090259819A1 (en) * 2008-04-09 2009-10-15 Skymedi Corporation Method of wear leveling for non-volatile memory
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
US8082385B2 (en) * 2008-05-02 2011-12-20 Sony Corporation Systematic memory shift for pre-segmented memory
US8055835B2 (en) * 2008-06-23 2011-11-08 International Business Machines Corporation Apparatus, system, and method for migrating wear spots
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US20100017807A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for transparent communication between a storage device and an application
US20100017566A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for interfacing computing device hardware of a computing device and an operating system utilizing a virtualization layer
US20100017588A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for providing an extended capability to a system
TWI389125B (zh) * 2008-07-18 2013-03-11 A Data Technology Co Ltd 記憶體儲存裝置及其控制方法
KR20100013485A (ko) 2008-07-31 2010-02-10 삼성전자주식회사 메모리 장치 및 웨어 레벨링 방법
CN101640069B (zh) * 2008-08-01 2013-12-18 群联电子股份有限公司 用于闪速存储器的平均磨损方法与平均磨损系统
US20100064093A1 (en) * 2008-09-09 2010-03-11 Radoslav Danilak System, method, and computer program product for converting data in a binary representation to a non-power of two representation
US8601682B2 (en) * 2008-09-11 2013-12-10 Nexxus Lighting, Incorporated Process of manufacturing a light
TWI364661B (en) * 2008-09-25 2012-05-21 Silicon Motion Inc Access methods for a flash memory and memory devices
KR100974215B1 (ko) * 2008-10-02 2010-08-06 주식회사 하이닉스반도체 반도체 스토리지 시스템 및 그 제어 방법
TWI470428B (zh) * 2008-10-03 2015-01-21 Phison Electronics Corp 用於非揮發性記憶體的資料程式規劃系統、記憶體管理方法及其控制器
US9128821B2 (en) * 2008-10-10 2015-09-08 Seagate Technology Llc Data updating in non-volatile memory
US8285970B2 (en) 2008-11-06 2012-10-09 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
US8275933B2 (en) 2008-11-10 2012-09-25 Fusion-10, Inc Apparatus, system, and method for managing physical regions in a solid-state storage device
US20100125696A1 (en) * 2008-11-17 2010-05-20 Prasanth Kumar Memory Controller For Controlling The Wear In A Non-volatile Memory Device And A Method Of Operation Therefor
US20100146236A1 (en) * 2008-12-08 2010-06-10 Radoslav Danilak System, method, and computer program product for rendering at least a portion of data useless in immediate response to a delete command
WO2010067361A1 (en) 2008-12-10 2010-06-17 Amir Ban Method and device of managing a reduced wear memory
US8316201B2 (en) * 2008-12-18 2012-11-20 Sandisk Il Ltd. Methods for executing a command to write data from a source location to a destination location in a memory device
US7940568B1 (en) 2008-12-30 2011-05-10 Micron Technology, Inc. Dynamic polarization for reducing stress induced leakage current
US8040744B2 (en) 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8250293B2 (en) * 2009-01-19 2012-08-21 Qimonda Ag Data exchange in resistance changing memory for improved endurance
US20100199020A1 (en) * 2009-02-04 2010-08-05 Silicon Storage Technology, Inc. Non-volatile memory subsystem and a memory controller therefor
KR20100091544A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 메모리 시스템 및 그 마모도 관리 방법
JP5185156B2 (ja) * 2009-02-24 2013-04-17 株式会社東芝 メモリコントローラおよび半導体記憶装置
US8090899B1 (en) 2009-03-04 2012-01-03 Western Digital Technologies, Inc. Solid state drive power safe wear-leveling
US8239614B2 (en) 2009-03-04 2012-08-07 Micron Technology, Inc. Memory super block allocation
KR101038991B1 (ko) * 2009-03-10 2011-06-03 주식회사 하이닉스반도체 메모리 영역의 균등한 사용을 위한 반도체 스토리지 시스템및 그 제어 방법
KR101586047B1 (ko) 2009-03-25 2016-01-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US20100250830A1 (en) * 2009-03-27 2010-09-30 Ross John Stenfort System, method, and computer program product for hardening data stored on a solid state disk
US8230159B2 (en) 2009-03-27 2012-07-24 Lsi Corporation System, method, and computer program product for sending logical block address de-allocation status information
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
US8090905B2 (en) * 2009-03-27 2012-01-03 Sandforce, Inc. System, method, and computer program product for converting logical block address de-allocation information in a first format to a second format
US8176295B2 (en) 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
US8065469B2 (en) * 2009-04-20 2011-11-22 Imation Corp. Static wear leveling
US8250282B2 (en) * 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US20100318719A1 (en) * 2009-06-12 2010-12-16 Micron Technology, Inc. Methods, memory controllers and devices for wear leveling a memory
US8639877B2 (en) * 2009-06-30 2014-01-28 International Business Machines Corporation Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks
US20110004720A1 (en) * 2009-07-02 2011-01-06 Chun-Ying Chiang Method and apparatus for performing full range random writing on a non-volatile memory
US20110004718A1 (en) * 2009-07-02 2011-01-06 Ross John Stenfort System, method, and computer program product for ordering a plurality of write commands associated with a storage device
US9792074B2 (en) * 2009-07-06 2017-10-17 Seagate Technology Llc System, method, and computer program product for interfacing one or more storage devices with a plurality of bridge chips
US8140712B2 (en) * 2009-07-17 2012-03-20 Sandforce, Inc. System, method, and computer program product for inserting a gap in information sent from a drive to a host device
US8516166B2 (en) * 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US8601202B1 (en) * 2009-08-26 2013-12-03 Micron Technology, Inc. Full chip wear leveling in memory device
US8036016B2 (en) * 2009-09-01 2011-10-11 Micron Technology, Inc. Maintenance process to enhance memory endurance
US8234520B2 (en) 2009-09-16 2012-07-31 International Business Machines Corporation Wear leveling of solid state disks based on usage information of data and parity received from a raid controller
US8169833B2 (en) * 2009-10-01 2012-05-01 Micron Technology, Inc. Partitioning process to improve memory cell retention
US8108737B2 (en) * 2009-10-05 2012-01-31 Sandforce, Inc. System, method, and computer program product for sending failure information from a serial ATA (SATA) solid state drive (SSD) to a host device
US8526605B2 (en) * 2009-10-09 2013-09-03 Seagate Technology Llc Data encryption to provide data security and memory cell bit wear leveling
EP2317443A1 (de) 2009-10-29 2011-05-04 Incard SA Verfahren zur Ausführung von Datenaktualisierungen in einer IC-Karte
US8013762B2 (en) * 2009-11-03 2011-09-06 Seagate Technology Llc Evaluating alternative encoding solutions during data compression
US8560770B2 (en) * 2009-11-13 2013-10-15 Seagate Technology Llc Non-volatile write cache for a data storage system
US8495281B2 (en) * 2009-12-04 2013-07-23 International Business Machines Corporation Intra-block memory wear leveling
US8285946B2 (en) * 2009-12-15 2012-10-09 International Business Machines Corporation Reducing access contention in flash-based memory systems
TWI484334B (zh) * 2009-12-24 2015-05-11 Univ Nat Taiwan 非揮發記憶體的區域式管理方法
US8595411B2 (en) 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
US8443263B2 (en) 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
TWI447735B (zh) * 2010-02-05 2014-08-01 Phison Electronics Corp 記憶體管理與寫入方法及其可複寫式非揮發性記憶體控制器與儲存系統
JP2011164994A (ja) 2010-02-10 2011-08-25 Toshiba Corp メモリシステム
US8856488B2 (en) 2010-02-11 2014-10-07 Memory Technologies Llc Method for utilizing a memory interface to control partitioning of a memory module
JP5130313B2 (ja) * 2010-04-02 2013-01-30 株式会社日立製作所 管理システム及び計算機システムの管理方法
CN102375693A (zh) * 2010-08-16 2012-03-14 成都市华为赛门铁克科技有限公司 损耗均衡处理方法和系统以及固态硬盘
CN102446071B (zh) * 2010-09-30 2014-10-08 环鸿科技股份有限公司 取得一存储器状态资讯的接取方法、电子装置及程序产品
US8660608B2 (en) * 2010-11-12 2014-02-25 Apple Inc. Apparatus and methods for recordation of device history across multiple software emulations
TWI473105B (zh) * 2011-01-18 2015-02-11 Macronix Int Co Ltd 具有錯誤自動檢查與更正位元之三維記憶體結構
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
EP2672389B1 (de) * 2011-01-31 2019-02-27 Mitsubishi Electric Corporation Speichersteuerung
CN102081576B (zh) * 2011-03-01 2012-07-11 华中科技大学 一种闪存的磨损平衡方法
US8732538B2 (en) 2011-03-10 2014-05-20 Icform, Inc. Programmable data storage management
JP2012203443A (ja) 2011-03-23 2012-10-22 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
US8495386B2 (en) * 2011-04-05 2013-07-23 Mcafee, Inc. Encryption of memory device with wear leveling
US8762625B2 (en) * 2011-04-14 2014-06-24 Apple Inc. Stochastic block allocation for improved wear leveling
US8862902B2 (en) * 2011-04-29 2014-10-14 Seagate Technology Llc Cascaded data encryption dependent on attributes of physical memory
US8806171B2 (en) * 2011-05-24 2014-08-12 Georgia Tech Research Corporation Systems and methods providing wear leveling using dynamic randomization for non-volatile memory
US20120303878A1 (en) * 2011-05-26 2012-11-29 International Business Machines Corporation Method and Controller for Identifying a Unit in a Solid State Memory Device for Writing Data to
US9514838B2 (en) * 2011-05-31 2016-12-06 Micron Technology, Inc. Apparatus including memory system controllers and related methods for memory management using block tables
KR20120136197A (ko) * 2011-06-08 2012-12-18 삼성전자주식회사 비휘발성 메모리에 대한 웨어 레벨링 방법
CN102841852B (zh) 2011-06-24 2015-06-17 华为技术有限公司 磨损均衡方法、存储装置及信息系统
US8626991B1 (en) * 2011-06-30 2014-01-07 Emc Corporation Multi-LUN SSD optimization system and method
JP5673396B2 (ja) * 2011-07-04 2015-02-18 富士通株式会社 情報処理システム、情報処理プログラム、情報処理方法
CN102955743A (zh) * 2011-08-25 2013-03-06 建兴电子科技股份有限公司 固态储存装置及其损耗平均控制方法
EP2662774A4 (de) * 2011-10-27 2014-01-08 Huawei Tech Co Ltd Verfahren zur steuerung von puffer-mapping und puffersystem
US9268686B2 (en) 2011-12-05 2016-02-23 Intel Corporation Background reordering—a preventive wear-out control mechanism with limited overhead
US9208070B2 (en) * 2011-12-20 2015-12-08 Sandisk Technologies Inc. Wear leveling of multiple memory devices
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
JP5952036B2 (ja) * 2012-03-13 2016-07-13 株式会社メガチップス 半導体メモリのリユース処理装置、及び半導体メモリ
JP5956791B2 (ja) * 2012-03-13 2016-07-27 株式会社メガチップス 半導体メモリのリユース処理装置、及び半導体メモリ
US11024352B2 (en) * 2012-04-10 2021-06-01 Samsung Electronics Co., Ltd. Memory system for access concentration decrease management and access concentration decrease method
US8750045B2 (en) 2012-07-27 2014-06-10 Sandisk Technologies Inc. Experience count dependent program algorithm for flash memory
TWI509615B (zh) * 2012-08-03 2015-11-21 Phison Electronics Corp 資料儲存方法、記憶體控制器與記憶體儲存裝置
KR20140031688A (ko) * 2012-09-05 2014-03-13 삼성전자주식회사 스토리지 시스템을 위한 마모 관리 장치 및 방법
US20140129758A1 (en) * 2012-11-06 2014-05-08 Spansion Llc Wear leveling in flash memory devices with trim commands
US8954694B2 (en) 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US9430339B1 (en) 2012-12-27 2016-08-30 Marvell International Ltd. Method and apparatus for using wear-out blocks in nonvolatile memory
CN103914401B (zh) * 2013-01-06 2017-05-10 北京忆恒创源科技有限公司 具有多处理器的存储设备
CN103914409B (zh) * 2013-01-06 2017-05-10 北京忆恒创源科技有限公司 用于具有多处理器的存储设备的方法
US11249652B1 (en) * 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9465732B2 (en) * 2013-03-15 2016-10-11 Sandisk Technologies Llc Binning of blocks for dynamic linking
US9195590B2 (en) * 2013-08-29 2015-11-24 Micron Technology, Inc. Sub-sector wear leveling in memories
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
GB201322075D0 (en) 2013-12-13 2014-01-29 Ibm Device for selecting a level for at least one read voltage
KR20150095360A (ko) * 2014-02-13 2015-08-21 에스케이하이닉스 주식회사 저항성 메모리 장치 및 동작 방법
TWI548991B (zh) * 2014-02-14 2016-09-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
US9230689B2 (en) 2014-03-17 2016-01-05 Sandisk Technologies Inc. Finding read disturbs on non-volatile memories
US10068639B2 (en) 2014-04-29 2018-09-04 International Business Machines Corporation Out-of-place presetting based on indirection table
US9471428B2 (en) 2014-05-06 2016-10-18 International Business Machines Corporation Using spare capacity in solid state drives
US20150339223A1 (en) * 2014-05-22 2015-11-26 Kabushiki Kaisha Toshiba Memory system and method
US9471451B2 (en) 2014-06-18 2016-10-18 International Business Machines Corporation Implementing enhanced wear leveling in 3D flash memories
US10261899B2 (en) * 2014-09-03 2019-04-16 Infineon Technologies Ag Method, device and system for data processing using dedicated mapping between logical and physical addresses
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9875039B2 (en) 2014-09-30 2018-01-23 Sandisk Technologies Llc Method and apparatus for wear-leveling non-volatile memory
US10365859B2 (en) * 2014-10-21 2019-07-30 International Business Machines Corporation Storage array management employing a merged background management process
US9563373B2 (en) 2014-10-21 2017-02-07 International Business Machines Corporation Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management
US9830087B2 (en) * 2014-11-13 2017-11-28 Micron Technology, Inc. Memory wear leveling
US9978440B2 (en) 2014-11-25 2018-05-22 Samsung Electronics Co., Ltd. Method of detecting most frequently accessed address of semiconductor memory based on probability information
US9990279B2 (en) 2014-12-23 2018-06-05 International Business Machines Corporation Page-level health equalization
US10339048B2 (en) 2014-12-23 2019-07-02 International Business Machines Corporation Endurance enhancement scheme using memory re-evaluation
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US10013177B2 (en) * 2015-04-20 2018-07-03 Hewlett Packard Enterprise Development Lp Low write amplification in solid state drive
US9760437B2 (en) 2015-07-01 2017-09-12 International Business Machines Corporation Error correction based on thermal profile of flash memory device
KR102513491B1 (ko) * 2015-07-15 2023-03-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9942324B2 (en) * 2015-08-05 2018-04-10 Futurewei Technologies, Inc. Rebalancing and elastic storage scheme with elastic named distributed circular buffers
WO2017058184A1 (en) * 2015-09-30 2017-04-06 Hewlett Packard Enterprise Development Lp Remapping operations
US9971685B2 (en) * 2016-04-01 2018-05-15 Intel Corporation Wear leveling based on a swapping operation between sets of physical block addresses of a non-volatile memory
US10031845B2 (en) * 2016-04-01 2018-07-24 Intel Corporation Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
US9842059B2 (en) * 2016-04-14 2017-12-12 Western Digital Technologies, Inc. Wear leveling in storage devices
US10121555B2 (en) * 2016-05-26 2018-11-06 Advanced Micro Devices, Inc. Wear-limiting non-volatile memory
US10248571B2 (en) * 2016-08-11 2019-04-02 Hewlett Packard Enterprise Development Lp Saving position of a wear level rotation
US11556462B2 (en) * 2016-08-24 2023-01-17 Futurewei Technologies, Inc. Wear-leveling method for cross-point memory for multiple data temperature zones
US10430085B2 (en) * 2016-11-08 2019-10-01 Micron Technology, Inc. Memory operations on data
US10261876B2 (en) * 2016-11-08 2019-04-16 Micron Technology, Inc. Memory management
US10248333B1 (en) * 2017-02-07 2019-04-02 Crossbar, Inc. Write distribution techniques for two-terminal memory wear leveling
US10409714B1 (en) 2017-02-09 2019-09-10 Crossbar, Inc. Logical to physical translation for two-terminal memory
US10019332B1 (en) * 2017-03-10 2018-07-10 Western Digital Technologies, Inc. Non-volatile memory with program failure recovery
US10198195B1 (en) * 2017-08-04 2019-02-05 Micron Technology, Inc. Wear leveling
US10642727B1 (en) 2017-09-27 2020-05-05 Amazon Technologies, Inc. Managing migration events performed by a memory controller
US10459662B1 (en) 2017-09-27 2019-10-29 Amazon Technologies, Inc. Write failure handling for a memory controller to non-volatile memory
US20190129627A1 (en) * 2017-10-31 2019-05-02 EMC IP Holding Company LLC Method and system for wear-leveling using a multi-gap progress field
US10606743B2 (en) * 2017-12-05 2020-03-31 Micron Technology, Inc. Data movement operations in non-volatile memory
US11048644B1 (en) 2017-12-11 2021-06-29 Amazon Technologies, Inc. Memory mapping in an access device for non-volatile memory
CN107918530A (zh) * 2018-01-12 2018-04-17 江苏华存电子科技有限公司 一种非易失性存储器的磨损均衡方法和装置
US10635327B2 (en) * 2018-01-31 2020-04-28 Western Digital Technologies, Inc. Data availability during memory inaccessibility
US10585795B2 (en) * 2018-05-31 2020-03-10 Micron Technology, Inc. Data relocation in memory having two portions of data
CN108920386B (zh) * 2018-07-20 2020-06-26 中兴通讯股份有限公司 面向非易失性内存的磨损均衡及访问方法、设备和存储介质
US10761739B2 (en) 2018-08-23 2020-09-01 Micron Technology, Inc. Multi-level wear leveling for non-volatile memory
US11537307B2 (en) * 2018-08-23 2022-12-27 Micron Technology, Inc. Hybrid wear leveling for in-place data replacement media
KR102545189B1 (ko) 2018-09-07 2023-06-19 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
US10902929B1 (en) * 2019-08-29 2021-01-26 Micron Technology, Inc. Zone swapping for wear leveling memory
US11402999B2 (en) 2019-12-03 2022-08-02 Burlywood, Inc. Adaptive wear leveling using multiple partitions
CN111639041B (zh) * 2020-05-29 2022-04-08 深圳宏芯宇电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制器
US11429543B2 (en) * 2020-10-22 2022-08-30 Micron Technology, Inc. Managed NAND flash memory region control against endurance hacking
CN112558878B (zh) * 2020-12-16 2023-07-04 北京华弘集成电路设计有限责任公司 一种基于不同类型存储机制的空间调换方法
US11842062B2 (en) 2022-02-09 2023-12-12 Western Digital Technologies, Inc. Method of handling irregular MetaBlock wear leveling and UGSD boot time improvement

Family Cites Families (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4093985A (en) * 1976-11-05 1978-06-06 North Electric Company Memory sparing arrangement
DE2840305C3 (de) 1978-09-15 1981-03-26 Siemens AG, 1000 Berlin und 8000 München Verfahren zum Programmieren von wiederholt beschreibbaren Festwertspeichern
JPS5580164A (en) * 1978-12-13 1980-06-17 Fujitsu Ltd Main memory constitution control system
JPS5764383A (en) * 1980-10-03 1982-04-19 Toshiba Corp Address converting method and its device
DE3123444A1 (de) * 1981-06-12 1983-01-05 Siemens AG, 1000 Berlin und 8000 München Verfahren und anordnung zum nichtfluechtigen speichern des zaehlerstandes einer elektronischen zaehlschaltung
DE3123654A1 (de) * 1981-06-15 1983-01-20 Vdo Adolf Schindling Ag, 6000 Frankfurt Schaltungsanordnung zur speicherung eines mehrstelligen dekadischen zaehlwerts einer von einem fahrzeug zurueckgelegten wegstrecke
US4430727A (en) * 1981-11-10 1984-02-07 International Business Machines Corp. Storage element reconfiguration
DE3200872A1 (de) 1982-01-14 1983-07-21 Sartorius GmbH, 3400 Göttingen Elektronische waage
US4530054A (en) * 1982-03-03 1985-07-16 Sperry Corporation Processor-addressable timestamp for indicating oldest written-to cache entry not copied back to bulk memory
JPS58189890A (ja) * 1982-04-30 1983-11-05 Hitachi Ltd 階層記憶装置
JPS58215794A (ja) 1982-06-08 1983-12-15 Toshiba Corp 不揮発性メモリ装置
JPS58215795A (ja) 1982-06-08 1983-12-15 Toshiba Corp 不揮発性メモリ装置
NL8202365A (nl) * 1982-06-11 1984-01-02 Philips Nv Serie-parallel-serie schuifregistergeheugen, hetwelk redundante parallelgeschakelde opslagregisters bevat, en afbeeldtoestel, voorzien van een zodanig georganiseerd beeldgeheugen.
JPS5945695A (ja) 1982-09-07 1984-03-14 Fujitsu Ltd Icメモリ
JPS59162695A (ja) 1983-03-07 1984-09-13 Nec Corp 記憶装置
JPS6049218A (ja) * 1983-08-30 1985-03-18 Nippon Denso Co Ltd 車両用走行距離計
US4612640A (en) * 1984-02-21 1986-09-16 Seeq Technology, Inc. Error checking and correction circuitry for use with an electrically-programmable and electrically-erasable memory array
JPS60179857A (ja) 1984-02-28 1985-09-13 Fujitsu Ltd キヤツシユ装置の制御方式
GB2171543B (en) * 1985-02-27 1988-04-20 Hughes Microelectronics Ltd Counting circuit which provides for extended counter life
US4718041A (en) * 1986-01-09 1988-01-05 Texas Instruments Incorporated EEPROM memory having extended life
US4953073A (en) * 1986-02-06 1990-08-28 Mips Computer Systems, Inc. Cup chip having tag comparator and address translation unit on chip and connected to off-chip cache and main memories
JPH07109717B2 (ja) 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
JP2685173B2 (ja) 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
JPS63183700A (ja) 1987-01-26 1988-07-29 Mitsubishi Electric Corp Eepromアクセス方法
US4924375A (en) 1987-10-23 1990-05-08 Chips And Technologies, Inc. Page interleaved memory access
US4899272A (en) * 1987-10-23 1990-02-06 Chips & Technologies, Inc. Addressing multiple types of memory devices
JPH0778997B2 (ja) * 1987-10-30 1995-08-23 株式会社東芝 不揮発性半導体メモリ
US4803707A (en) * 1987-12-21 1989-02-07 Ncr Corporation Nonvolatile electronic odometer with excess write cycle protection
JPH0793823B2 (ja) * 1988-02-01 1995-10-09 株式会社日立製作所 電圧形インバータのpwm制御装置
US5053990A (en) * 1988-02-17 1991-10-01 Intel Corporation Program/erase selection for flash memory
JPH01235075A (ja) 1988-03-14 1989-09-20 Fuji Xerox Co Ltd ディスクメモリ制御装置
US4922456A (en) * 1988-04-29 1990-05-01 Scientific-Atlanta, Inc. Method of reducing wearout in a non-volatile memory with double buffer
US5043940A (en) * 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5168465A (en) * 1988-06-08 1992-12-01 Eliyahou Harari Highly compact EPROM and flash EEPROM devices
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5268870A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
JP2685825B2 (ja) * 1988-08-12 1997-12-03 株式会社東芝 不揮発性半導体メモリ
JPH0283892A (ja) * 1988-09-20 1990-03-23 Fujitsu Ltd 半導体記憶装置
US5193071A (en) * 1988-12-22 1993-03-09 Digital Equipment Corporation Memory apparatus for multiple processor systems
JPH02189790A (ja) 1989-01-18 1990-07-25 Mitsubishi Electric Corp ダイナミック形半導体記憶装置
US4947410A (en) * 1989-02-23 1990-08-07 General Motors Corporation Method and apparatus for counting with a nonvolatile memory
EP0618535B1 (de) * 1989-04-13 1999-08-25 SanDisk Corporation EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
US5172338B1 (en) * 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US5163021A (en) * 1989-04-13 1992-11-10 Sundisk Corporation Multi-state EEprom read and write circuits and techniques
JPH0373496A (ja) 1989-05-16 1991-03-28 Seiko Epson Corp Eeprom書込装置
JPH0692898B2 (ja) * 1989-05-31 1994-11-16 日本精機株式会社 電子式オドメータ
FR2647941B1 (fr) * 1989-06-06 1991-08-30 Gemplus Card Int Procede d'effacement de points memoire, dispositif destine a sa mise en oeuvre, et son utilisation dans un dispositif a memoire non alimente
JPH0325798A (ja) 1989-06-23 1991-02-04 Ricoh Co Ltd Eepromを使用した記憶装置
JPH0330034A (ja) 1989-06-28 1991-02-08 Hitachi Ltd 光デイスクフアイル管理方法
JPH0748320B2 (ja) * 1989-07-24 1995-05-24 セイコー電子工業株式会社 半導体不揮発性メモリ
US5065364A (en) * 1989-09-15 1991-11-12 Intel Corporation Apparatus for providing block erasing in a flash EPROM
US5200959A (en) 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
US5134589A (en) * 1989-10-30 1992-07-28 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device having a flash write function
JPH03283094A (ja) 1990-03-29 1991-12-13 Nec Corp 半導体メモリ
JPH0498342A (ja) * 1990-08-09 1992-03-31 Mitsubishi Electric Corp 半導体記憶装置
JPH04123243A (ja) 1990-09-14 1992-04-23 Toshiba Corp データ書込装置
US5303198A (en) * 1990-09-28 1994-04-12 Fuji Photo Film Co., Ltd. Method of recording data in memory card having EEPROM and memory card system using the same
US5222193A (en) * 1990-12-26 1993-06-22 Intel Corporation Training system for neural networks and the like
US5222109A (en) 1990-12-28 1993-06-22 Ibm Corporation Endurance management for solid state files
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
GB2251324B (en) 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
JP3137993B2 (ja) 1991-01-16 2001-02-26 富士通株式会社 不揮発性半導体記憶装置
US5272669A (en) * 1991-02-20 1993-12-21 Sundisk Corporation Method and structure for programming floating gate memory cells
US5295255A (en) * 1991-02-22 1994-03-15 Electronic Professional Services, Inc. Method and apparatus for programming a solid state processor with overleaved array memory modules
US5270979A (en) * 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
US5663901A (en) * 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
FR2675287B1 (fr) 1991-04-15 1993-06-18 Bull Sa Circuit coupleur et son utilisation dans une carte et procede.
DE4215063C2 (de) 1991-05-10 1999-11-25 Intel Corp Einrichtung und Verfahren zum Seitenwechsel bei einem nicht-flüchtigen Speicher
JP2582487B2 (ja) 1991-07-12 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
JP2549034B2 (ja) 1991-07-22 1996-10-30 株式会社メルコ 記憶装置
US5430859A (en) * 1991-07-26 1995-07-04 Sundisk Corporation Solid state memory system including plural memory chips and a serialized bus
US5245572A (en) * 1991-07-30 1993-09-14 Intel Corporation Floating gate nonvolatile memory with reading while writing capability
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5263003A (en) * 1991-11-12 1993-11-16 Allen-Bradley Company, Inc. Flash memory circuit and method of operation
JP3231832B2 (ja) 1991-11-26 2001-11-26 株式会社日立製作所 フラッシュメモリを記憶媒体とした半導体ディスク
JPH05151097A (ja) * 1991-11-28 1993-06-18 Fujitsu Ltd 書換回数制限型メモリのデータ管理方式
JP3122201B2 (ja) 1991-11-30 2001-01-09 株式会社東芝 メモリカード装置
JPH05176564A (ja) * 1991-12-26 1993-07-13 Aisin Seiki Co Ltd 放射圧を利用したアクチュエータ
US5267218A (en) * 1992-03-31 1993-11-30 Intel Corporation Nonvolatile memory card with a single power supply input
US5341489A (en) * 1992-04-14 1994-08-23 Eastman Kodak Company Memory card with programmable interleaving
KR0121800B1 (ko) 1992-05-08 1997-11-22 사또오 후미오 메모리 카드장치
US5280447A (en) * 1992-06-19 1994-01-18 Intel Corporation Floating gate nonvolatile memory with configurable erasure blocks
JP3105092B2 (ja) * 1992-10-06 2000-10-30 株式会社東芝 半導体メモリ装置
JP3177015B2 (ja) * 1992-10-14 2001-06-18 株式会社東芝 半導体メモリ装置の制御方法
ATE153149T1 (de) * 1993-01-21 1997-05-15 Apple Computer Vorrichtung und verfahren zur datensicherung von speichereinheiten in einem rechnernetzwerk
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
AU6987694A (en) 1993-05-11 1994-12-12 Norand Corporation Premises, peripheral and vehicular local area networking
DE69321245T2 (de) * 1993-12-29 1999-04-29 Sgs Thomson Microelectronics Integrierte Programmierschaltung für eine elektrisch programmierbare Halbleiterspeicheranordnung mit Redundanz
US5726937A (en) * 1994-01-31 1998-03-10 Norand Corporation Flash memory system having memory cache
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
JP3219699B2 (ja) * 1996-09-17 2001-10-15 三洋電機株式会社 半導体メモリ装置
GB2317721B (en) * 1996-09-30 2001-09-12 Nokia Mobile Phones Ltd Memory device
JP3130258B2 (ja) * 1996-10-25 2001-01-31 インターナショナル・ビジネス・マシーンズ・コーポレ−ション ディスク装置及びデータ・リアサイン方法
US5890192A (en) * 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US6034897A (en) * 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
DE19718479C1 (de) * 1997-04-30 1998-09-24 Siemens Ag Chipkarte mit Speicherzugriffsmaximierung und Protokollierung
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
JP4079506B2 (ja) * 1997-08-08 2008-04-23 株式会社東芝 不揮発性半導体メモリシステムの制御方法
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6085102A (en) * 1997-08-29 2000-07-04 Motorola, Inc. Method and apparatus for providing coverage in a selective messaging system
JP3544859B2 (ja) 1998-05-11 2004-07-21 富士通株式会社 不揮発性半導体メモリを使用した2次記憶装置
FR2787601A1 (fr) * 1998-12-22 2000-06-23 Gemplus Card Int Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire
JP2000285688A (ja) * 1999-04-01 2000-10-13 Mitsubishi Electric Corp 不揮発性半導体記憶装置
JP2001067258A (ja) * 1999-08-25 2001-03-16 Mitsubishi Electric Corp フラッシュメモリ内蔵半導体装置及びフラッシュメモリアドレス変換方法
US6141251A (en) * 2000-01-28 2000-10-31 Silicon Storage Technology, Inc. Non-volatile memory array having an index used in programming and erasing
US6535851B1 (en) * 2000-03-24 2003-03-18 Speechworks, International, Inc. Segmentation approach for speech recognition systems
KR100644602B1 (ko) * 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6676281B2 (en) * 2001-05-23 2004-01-13 Sea Gull Lighting Products, Inc. Rail lighting system
US6675281B1 (en) * 2002-01-22 2004-01-06 Icreate Technologies Corporation Distributed mapping scheme for mass storage system
US7234036B1 (en) * 2002-10-28 2007-06-19 Sandisk Corporation Method and apparatus for resolving physical blocks associated with a common logical block
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US7096313B1 (en) * 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
US7039788B1 (en) * 2002-10-28 2006-05-02 Sandisk Corporation Method and apparatus for splitting a logical block
US7103732B1 (en) * 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
US6985992B1 (en) * 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US7254668B1 (en) * 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems

Also Published As

Publication number Publication date
CN1720590A (zh) 2006-01-11
JP4518951B2 (ja) 2010-08-04
JP2006504201A (ja) 2006-02-02
EP1556868A1 (de) 2005-07-27
US20070083698A1 (en) 2007-04-12
WO2004040586A1 (en) 2004-05-13
KR101174308B1 (ko) 2012-08-16
US20040083335A1 (en) 2004-04-29
KR20110093916A (ko) 2011-08-18
AU2003282544A1 (en) 2004-05-25
US7120729B2 (en) 2006-10-10
ATE372578T1 (de) 2007-09-15
KR101122511B1 (ko) 2012-03-15
CN100483552C (zh) 2009-04-29
EP1556868B1 (de) 2007-09-05
US7552272B2 (en) 2009-06-23
KR20050083850A (ko) 2005-08-26
DE60316171D1 (de) 2007-10-18

Similar Documents

Publication Publication Date Title
DE60316171T2 (de) Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem
DE60319407T2 (de) Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems
DE60317551T2 (de) Aufrechterhaltung gleichförmiger löschhäufigkeit in einem nichtflüchtigen speichersystem
DE60319563T2 (de) Verwaltung der anzahl von löschungen in einem nicht-fluchtigem speicher
DE19782041B4 (de) Verfahren zum Durchführen eines kontinuierlichen Überschreibens einer Datei in einem nicht-flüchtigen Speicher
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE69635962T2 (de) Flash-Speicher-Massenspeichersystem und Verfahren dafür
DE112006004187B4 (de) Verfahren, nicht-flüchtige Speichervorrichtung und Computersystem zum initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher
DE60217883T2 (de) Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher
DE69839126T2 (de) Verschiebung aufeinander folgender sektoren innerhalb eines datenblocks in einem flash-massenspeicher
DE69034191T2 (de) EEPROM-System mit aus mehreren Chips bestehender Blocklöschung
DE60019903T2 (de) Speichersystem
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
EP2401680B1 (de) Verfahren zur verwaltung von flashspeichern mit gemischten speichertypen
DE102006003261A1 (de) Speichersystem und Verfahren zur Datenzusammenführung
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE102009034836A1 (de) Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher
DE102005031525A1 (de) Verfahren und System zur Steuerung eines Flashspeichers und Speichersystem
DE102006005876A1 (de) Flashspeicher-Steuervorrichtung, Vorrichtung zum Steuern eines Flashspeichers, Flashspeicher-System und Verfahren zum Verwalten von Abbildungsdaten eines Flashspeichers
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE102009048179A1 (de) Prozess und Verfahren für eine Löschstrategie in Festkörperplatten
EP2215636B1 (de) VERFAHREN ZUR GLEICHMÄßIGEN NUTZUNG MEHRERER FLASHSPEICHERCHIPS
WO2006072549A1 (de) Verfahren zur umsetzung von logischen in reale blockadressen in flashspeichern
DE102014101185A1 (de) Verfahren zur Verwaltung von Flash-Speichern mit gemischten Speichertypen unter Verwendung einer fein-granulierten Zuordnung logischer auf physikalische Speicheradressen

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: SANDISK CORP., MILPITAS, CALIF., US

8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1556868

Country of ref document: EP

Representative=s name: PATENTANWAELTE MAXTON LANGMAACK & PARTNER, DE