DE60319407T2 - Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems - Google Patents

Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems Download PDF

Info

Publication number
DE60319407T2
DE60319407T2 DE60319407T DE60319407T DE60319407T2 DE 60319407 T2 DE60319407 T2 DE 60319407T2 DE 60319407 T DE60319407 T DE 60319407T DE 60319407 T DE60319407 T DE 60319407T DE 60319407 T2 DE60319407 T2 DE 60319407T2
Authority
DE
Germany
Prior art keywords
elements
deleted
block
blocks
count
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 - Fee Related
Application number
DE60319407T
Other languages
English (en)
Other versions
DE60319407D1 (de
Inventor
Robert Danville CHANG
Bahman San Jose Qawami
Farshid Los Altos Hills SABET-SHARGHI
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
Application filed by SanDisk Corp filed Critical SanDisk Corp
Application granted granted Critical
Publication of DE60319407D1 publication Critical patent/DE60319407D1/de
Publication of DE60319407T2 publication Critical patent/DE60319407T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • 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/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching 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/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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
    • 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

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)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Non-Volatile Memory (AREA)
  • Filling Or Discharging Of Gas Storage Vessels (AREA)
  • Radiation-Therapy Devices (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf die schwebende amerikanische Patentanmeldung ... (Anwaltsakte SANDP005/SDK0278.000US) mit dem Titel „Automated wear levelling in non-volatile storage systems"; die schwebende amerikanische Patentanmeldung 10/281,739 (Anwaltsakte SANDP023/SDK0366. 000US) mit dem Titel „Wear-levelling in not-volatile systems", eingereicht am 28. Oktober 2002; die schwebende amerikanische Patentanmeldung 10/281,824 (Anwaltsakte SANDP026/SDK0366.003) mit dem Titel „Tracking the least frequently erased blocks in non-volatile memory systems", eingereicht am 28. Oktober 2002; die schwebende amerikanische Patentanmeldung 10/281,631 (Anwaltsakte SANDP028/SDK0371.000US) mit dem Titel „Method and apparatus for splitting a logical block", eingereicht am 28. Oktober 2002; die schwebende amerikanische Patentanmeldung 10/281,855 (Anwaltsakte SANDP029/DSK0410.000US) mit dem Titel „Method and apparatus for grouping pages within a block", eingereicht am 28. Oktober 2002; die schwebende amerikanische Patentanmeldung 10/281,762 (Anwaltsakte SANDP030/SDK0416.000US) mit dem Titel „Method and apparatus for resolving physical blocks associated with a common logigal block", eingereicht am 28. Oktober 2002; das amerikanische Patent 6,081,447 und das amerikanische Patent 6,230,233 .
  • Die vorliegende Erfindung betrifft generell Massenspeichersysteme von digitalen Daten. Genauer gesagt bezieht sich die vorliegende Erfindung auf Systeme und Verfahren, mit denen der zugehörige Verschleiß von Speicherbereichen in einem nichtflüchtigen Speichersystem über im wesentlichen sämtliche Speicherbereiche verteilt werden kann.
  • Die Verwendung von nichtflüchtigen Speichersystemen, wie Flash-Speichersystemen, nimmt aufgrund der kompakten physikalischen Größe von derartigen Speichersystemen und der Fähigkeit, dass der nichtflüchtige Speicher auf wiederholte Weise neu programmiert werden kann, zu. Die kompakte physikalische Größe von Flash-Speichersystemen erleichtert die Verwendung von derartigen Speichersystemen in Vorrichtungen, deren Verbreitung stark ansteigt. Vorrichtungen, die Flash-Speichersysteme benutzen, umfassen Digitalkameras, Digitalcamcorder, digitale Musikabspielgeräte, manuell gehaltene Personalcomputer und Globalpositionierungsvorrichtungen, sind jedoch hierauf nicht beschränkt. Durch die Fähigkeit einer wiederholten Neuprogrammierung von nichtflüchtigen Speichern, die in Flash-Speichersystemen enthalten sind, können Flash-Speichersysteme benutzt und wiederverwendet werden.
  • Generell können Flash-Speichersysteme Flash-Speicherkarten und Flash-Speicherchipsätze umfassen. Flash-Speicherchipsätze besitzen generell Flash-Speicherkomponenten und Steuerkomponenten. Typischerweise kann ein Flash-Speicherchipsatz in ein eingebettetes System eingebaut werden. Die Hersteller von derartigen Einheiten oder Wirtsystemen beschaffen sich typischerweise einen Flash-Speicher in Komponentenform sowie andere Komponenten und bauen dann den Flash-Speicher sowie andere Komponenten in ein Wirtsystem ein.
  • Obwohl nichtflüchtige Speicher- oder genauer gesagt Flash-Speicherblöcke in Flash-Speichersystemen auf wiederholte Weise programmiert und gelöscht werden können, kann jeder Block oder jeder physikalische Ort nur eine bestimmte Anzahl von Malen gelöscht werden, bevor der Block verschleißt, d. h. bevor der Speicher kleiner zu werden beginnt. Mit anderen Worten, jeder Block besitzt eine Programmier- und Löschzyklusgrenze. Bei einigen Speichern kann ein Block bis zu etwa 10.000mal gelöscht werden, bevor der Block als unbrauchbar angesehen wird. Bei anderen Speichern kann ein Block bis zu etwa 100.000mal oder sogar bis zu etwa 1.000.000mal gelöscht werden, bevor der Block als verschlissen angesehen wird. Wenn ein Block verschlissen ist und auf diese Weise einen Gebrauchsverlust oder eine signifikante Leistungsverschlechterung eines Abschnittes des Gesamtspeichervolumens des Flash-Speichersystems verursacht, kann ein Benutzer des Flash-Speichersystems nachteilig beeinflusst werden, beispielsweise durch den Verlust von gespeicherten Daten oder durch das Unvermögen zum Speichern von Daten.
  • Der Verschleiß von Blöcken oder physikalischen Orten innerhalb eines Flash-Speichersystems hängt davon ab, wie viel ein jeder Block programmiert wird. Wenn ein Block oder allgemeiner ein Speicherelement einmal programmiert und dann niemals auf wirksame Weise neu programmiert wird, ist die Anzahl der Programmierungs- und Löschzyklen und somit der mit diesem Block verbundene Verschleiß relativ gering. Wenn jedoch ein Block wiederholt beschrieben und gelöscht wird, d. h. einem Zyklus ausgesetzt wird, ist der Verschleiß eines derartigen Blockes generell relativ hoch. Da logische Blockadressen (LBAs) von Wirten, d. h. Systemen, die auf ein Flash-Speichersystem zugreifen oder dieses benutzen, verwendet werden, um auf in einem Flash-Speichersystem gespeicherte Daten zuzugreifen, werden die gleichen physikalischen Orte oder Blöcke im Flash-Speichersystem auf wiederholte Weise beschrieben und gelöscht, wenn ein Wirt auf wiederholte Weise die gleichen LBAs zum Einschreiben und Überschreiben von Daten benutzt, wie dies dem Fachmann bekannt ist.
  • Wenn einige Blöcke effektiv verschlissen sind, während andere Blöcke noch relativ wenig Verschleiß aufweisen, wird durch das Vorhandensein der verschlissenen Blöcke generell die Gesamtleistung des Flash-Speichersystems nachteilig beeinflusst. Zusätzlich zur Verschlechterung der Leistung der verschlissenen Blöcke selbst kann die Gesamtleistung des Flash-Speichersystems negativ beeinflusst werden, wenn nur eine unzureichende Anzahl von Blöcken, die nicht verschlissen sind, zum Speichern von gewünschten Daten zur Verfügung steht. Oft kann ein Flash-Speichersystem als unbrauchbar angesehen werden, wenn eine kritische Anzahl von verschlissenen Blöcken im Flash-Speichersystem vorhanden ist, selbst wenn viele andere Zellen im Flash-Speichersystem einen re lativ geringen Verschleiß besitzen. Wenn ein Flash-Speichersystem, das eine beträchtliche Anzahl von Blöcken mit relativ geringem Verschleiß besitzt, als unbrauchbar angesehen wird, werden viele auf das Flash-Speichersystem zurückgehenden Ressourcen effektiv vergeudet.
  • Um die Wahrscheinlichkeit zu erhöhen, dass Blöcke in einem Flash-Speichersystem ziemlich gleichmäßig verschleißen, werden oft Verschleißnivellierungsvorgänge durchgeführt. Verschleißnivellierungsvorgänge finden generell Anwendung, wie dem Fachmann bekannt ist, um eine Veränderung der physikalischen Orte oder Blöcke, die speziellen LBAs zugeordnet sind, so zu ermöglichen, dass die gleichen LBAs nicht immer den gleichen physikalischen Orten oder Blöcken zugeordnet sind. Durch Veränderung der Block-Assoziationen der LBAs ist es weniger wahrscheinlich, dass ein spezieller Block verschleißt, bevor andere Blöcke verschleißen.
  • Ein herkömmlicher Verschleißnivellierungsprozess umfasst das Vertauschen der physikalischen Orte, für die zwei relativ große Anteile des Wirt-File-Systems oder der LBAs gemappt sind. Mit anderen Worten, diejenigen LBAs, die relativ großen Abschnitten von Speicherzellen zugeordnet sind, werden vertauscht. Eine solche Vertauschung wird durch einen manuell eingegebenen Befehl von einem Wirtsystem, d. h. durch die Verwendung eines Wirtes, initiiert und ist für das Wirtsystem nicht transparent. Auch sind Tauschoperationen, die die Bewegung von Daten zwischen zwei relativ großen Abschnitten von Speicherzellen erfordern, zeitraubend und somit ineffizient. Ferner kann das Verhalten des gesamten Flash-Speichersystems durch Tauschvorgänge einer rela tiv langen Zeitdauer, die signifikante Ressourcen verbrauchen, welche dem gesamten Flash-Speichersystem zugeordnet sind, nachteilig beeinflusst werden. Wie der Fachmann weiß, umfasst das Bewegen von Daten von einem ersten Ort typischerweise das Einkopieren der Daten in einen anderen Ort und das Löschen der Daten vom ersten Ort.
  • Bei einem anderen herkömmlichen Verschleißnivellierungsprozess lässt man die Blöcke verschleißen. Wenn die Blöcke einmal wirksam verschlissen sind, können die den Blöcken zugeschriebenen Sektoren durch Mapping der zu den Sektoren gehörenden Adressen auf Ersatzbereiche umgeschrieben werden, wenn die Blöcke, in denen die Sektoren gespeichert worden sind, verschlissen oder unbrauchbar geworden sind. Da die Anzahl der Ersatzbereiche oder Blöcke begrenzt und wertvoll ist, können nicht immer Ersatzbereiche vorhanden sein, auf die mit unbrauchbaren Blöcken verbundene Sektoren gemappt werden können. Des weiteren ermöglicht das wirksame erneute Mapping von Sektoren nur nach dem Unbrauchwerden von Blöcken generell eine Verschlechterung des Verhaltens des gesamten Flash-Speichersystems.
  • Die US-A-5930193 beschreibt ein Speichersystem mit einer Vielzahl von physikalischen Blöcken, zu denen Löschungszählungen gehören. Die physikalischen Blöcke sind in Abhängigkeit von der Größe ihrer Löschungszählungen in Gruppen klassifiziert. Die US-A-5568423 , die US-A-5737742 , die US-A-5485595 und die US-A-5832493 beschreiben Verschleißnivellierungstechniken für Flash-Speicher.
  • Wünschenswert sind daher ein Verfahren und eine Vorrichtung zum wirksamen und im wesentlichen transparenten Durchführen einer Verschleißnivellierung in einem Flash-Speichersystem. Erforderlich ist daher ein Verschleißnivellierungsprozess, der einen gleichmäßigeren Verschleiß in physikalischen Orten, die zum Flash-Speichersystem gehören, fördert, ohne hierzu einen signifikanten Gebrauch von Rechnerressourcen zu benötigen.
  • Die vorliegende Erfindung betrifft ein System und ein Verfahren zum Durchführen einer Verschleißnivellierung in einem nichtflüchtigen Speichersystem. Gemäß einem Aspekt der vorliegenden Erfindung wird ein Verfahren zum Verarbeiten von Elementen, die in einem nichtflüchtigen Speicher eines Speichersystems vorhanden sind, zur Verfügung gestellt, das die folgenden Schritte umfasst: Erhalten von Löschungszählungen, die zu einer Vielzahl von Elementen gehören, wobei jedes Element, das in der Vielzahl der Elemente enthalten ist, eine zugehörige Löschungszählung aufweist und die zugehörige Löschungszählung eines jeden Elementes die Anzahl von Malen anzeigt, die das Element gelöscht worden ist, wobei die Vielzahl der Elemente gelöschte Elemente und Daten enthaltende Elemente umfasst; Definieren eines ersten Satzes von gelöschten Elementen durch Auswählen von gelöschten Elementen mit den höchsten zugehörigen Löschungszählungen; Speichern der zum ersten Satz gehörenden Löschungszählungen in einer Speicherkomponente innerhalb einer Tabelle, wobei die Speicherkomponente zum Speichersystem gehört; und Sortieren der gelöschten Elemente im ersten Satz der gelöschten Elemente gemäß der Löschungszählung, die zu jedem gelöschten Element im ersten Satz gehört, dadurch gekenn zeichnet, dass das Verfahren des weiteren die folgenden Schritte umfasst: Identifizieren eines ersten Elementes, das im ersten Satz der gelöschten Elemente enthalten ist und die niedrigste Löschungszählung besitzt, die zum ersten Satz von gelöschten Elementen gehört; Dissoziieren des ersten Elementes vom ersten Satz der gelöschten Elemente und Assoziieren eines zweiten Elementes aus der Vielzahl der Elemente mit dem ersten Satz von gelöschten Elementen, wobei die Löschungszählung, die zum zweiten Element gehört, höher ist als die Löschungszählung, die zum ersten Element gehört.
  • Bei einer Ausführungsform umfasst das Verfahren das Erhalten einer durchschnittlichen Löschungszählung, die zur Vielzahl der Elemente gehört. Bei einer derartigen Ausführungsform umfasst das Gruppieren der Anzahl der Elemente das Vergleichen der Löschungszählungen, die zur Vielzahl der Elemente gehören, mit der durchschnittlichen Löschungszählung und das Identifizieren der Anzahl der gelöschten Elemente als die Elemente, die aus der Vielzahl der gelöschten Elemente ausgewählt wurden, welche zugehörige Löschungszählungen aufweisen, die um mehr als ein vorgegebener Grenzwert größer sind als die durchschnittliche Löschungszählung.
  • Durch das Aufrechterhalten von verschlissenen Elementen, d. h. erweiterten Blöcken, eines nichtflüchtigen Speichers in einer Gruppe von verschlissenen Elementen kann der Verschleiß der verschlissenen Elemente im wesentlichen dadurch gemanagt werden, dass eine Zuordnung der verschlissenen Elemente für eine Benutzung verhindert wird, bis weniger verschlissene Elemente schließlich verschlissener werden. Somit kann der Verschleiß von sämtlichen Elementen ausgeglichen werden, da die öfter gelöschten Elemente oft in wirksamer Weise an einer Benutzung gehindert werden und somit wieder gelöscht werden, bis andere Elemente benutzt und öfter gelöscht worden sind. Die Gesamtlebensdauer eines Mediums, beispielsweise einer Vorrichtung, die einen eingebetteten Flash-Speicher oder eine Flash-Speicherkarte aufweist, kann generell erweitert werden, wenn Blöcke, die relativ hohe Löschungszählungen besitzen, im wesentlichen an einer Benutzung gehindert werden, bis die Blöcke nicht länger Löschungszählungen aufweisen, die als relativ hoch angesehen werden.
  • Gemäß einem anderen Aspekt der vorliegenden Erfindung wird ein Speichermanagementsystem zur Verarbeitung von Elementen, die in einem nichtflüchtigen Speicher eines Speichersystems enthalten sind, zur Verfügung gestellt, wobei das Speichermanagementsystem umfasst: Einrichtungen zum Erhalten von Löschungszählungen, die zu einer Vielzahl von Elementen gehören, wobei jedes Element, das in der Vielzahl der Elemente enthalten ist, eine zugehörige Löschungszählung aufweist, wobei die zugehörige Löschungszählung eines jeden Elementes die Anzahl von Malen anzeigt, die das Element gelöscht worden ist, und wobei die Vielzahl der Elemente gelöschte Elemente und Daten enthaltende Elemente umfasst; Einrichtungen zum Definieren eines ersten Satzes von gelöschten Elementen durch Auswählen von gelöschten Elementen mit den höchsten zugehörigen Löschungszählungen relativ zu den Löschungszählungen, die zu der Vielzahl der Elemente gehören; Einrichtungen zum Speichern der Löschungszählun gen, die zum ersten Satz gehören, als Teil einer Datenstruktur in einer Speicherkomponente, wobei die Speicherkomponente zum Speichersystem gehört; und Einrichtungen zum Sortieren der gelöschten Elemente im ersten Satz von gelöschten Elementen in Abhängigkeit von der Löschungszählung, die zu jedem gelöschten Element gehört, gekennzeichnet durch Einrichtungen zum Identifizieren eines ersten gelöschten Elementes innerhalb des ersten Satzes von gelöschten Elementen unter Verwendung der sortierten Eingänge, wobei das erste gelöschte Element die niedrigste Löschungszählung besitzt, die zum ersten Satz von gelöschten Elementen gehört; und Einrichtungen zum Entfernen des ersten gelöschten Elementes vom ersten Satz der gelöschten Elemente in Abhängigkeit von einer zugehörigen Löschungszählung eines zweiten Elementes, die die zugehörige Löschungszählung des identifizierten ersten Elementes übersteigt, und zum nachfolgenden Addieren des zweiten Elementes zum ersten Satz der gelöschten Elemente.
  • Zum besseren Verständnis der Erfindung dient die nachfolgende Beschreibung von Ausführungsformen der Erfindung in Verbindung mit den beigefügten Zeichnungen. Hiervon zeigen:
  • 1a eine schematische Darstellung eines Wirtsystems, das eine nichtflüchtige Speichervorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung aufweist;
  • 1b eine schematische Darstellung einer Spei chervorrichtung, d. h. einer Speichervorrichtung 120 der 1a, gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 2 eine schematische Darstellung eines Teiles eines Flash-Speichers gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 3 ein Prozessablaufdiagramm, das die Schritte zeigt, die zur Verarbeitung einer Initialisierungsanforderung in Bezug auf ein Flash-Speichersystem gehören, gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 4 ein Prozessablaufdiagramm, das die Schritte zeigt, die zu einem Verfahren zum Verarbeiten eines statischen Blockes gemäß einer Ausführungsform der vorliegenden Erfindung gehören;
  • 5a eine schematische Blockdarstellung eines Systemspeichers gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 5b eine schematische Darstellung von normalen Blöcken, am wenigsten häufig gelöschten Blöcken und am häufigsten gelöschten Blöcken gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 6 eine schematische Darstellung eines Verfah rens zur Durchführung einer Blockvertauschung oder Aktualisierung im Systemspeicher eines Gesamtspeichersystems, um für einen gleichmäßigeren Verschleiß der Blöcke zu sorgen, gemäß einer Ausführungsform der vorliegenden Erfindung; und
  • 7 eine schematische Blockdarstellung eines Systemaufbaus gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Nichtflüchtige Speicherblöcke in Flash-Speichersystemen können auf wiederholte Weise programmiert und gelöscht werden, obwohl jeder Block generell nur eine endliche Anzahl von Malen gelöscht werden kann, bevor der Block verschleißt. Wenn ein Block verschleißt, tritt eine relativ signifikante Leistungsverschlechterung des Abschnittes des Gesamtspeichervolumens des Flash-Speichersystems, der den verschlissenen Block enthält, auf, und in diesem Abschnitt gespeicherte Daten können verlorengehen oder es kann unmöglich werden, Daten in diesem Abschnitt zu speichern.
  • Um die Wahrscheinlichkeit zu erhöhen, dass Blöcke in einem Flash-Speichersystem gleichmäßiger verschleißen, können sie gleichmäßiger benutzt werden. Indem man ermittelt, wie viele Male jeder Block gelöscht worden ist, beispielsweise durch die Nutzung einer Löschungszählung, kann ein Speicher innerhalb eines Systems gleichmäßiger genutzt werden. Über eine Löschungszählungsmanagementtechnik kann man eine Löschungszählung, die feststellt, wie viele Male ein spezieller Block gelöscht worden ist, in einem dem Block zugeord neten redundanten Bereich speichern. Im Systemspeicher können Tabellen errichtet werden, die es ermöglichen, Blöcke, die sich im Gebrauch befinden, auf wirksame Weise von Blöcken zu trennen, die relativ hohe Löschungszählungen besitzen, und von Blöcken, die relativ niedrige Löschungszählungen aufweisen. Wenn ein im Gebrauch befindlicher Block gelöscht wird, kann der Block entweder zu einer Tabelle von Blöcken, die relativ hohe Löschungszählungen besitzen, oder zu einer Tabelle von Blöcken, die relativ niedrige Löschungszählungen aufweisen, „addiert" werden. In entsprechender Weise können Blöcke entweder von der Tabelle von Blöcken, die relativ hohe Löschungszählungen besitzen, oder von der Tabelle von Blöcken, die relativ niedrige Löschungszählungen aufweisen, in eine Blockmappingtabelle „bewegt" werden, d. h. einen Satz von Tabellen von Blöcken, die sich im Gebrauch befinden, um nahezu jeden Block, der von der Blockmappingtabelle umgeschrieben worden ist, zu ersetzen.
  • Durch das Kategorisieren von Blöcken können Blöcke gleichmäßiger benutzt werden, da der Gebrauch eines jeden Blockes wirksamer gemanagt werden kann, um den Verschleiß innerhalb der Blöcke zu vergleichmäßigen. Ferner können durch das Kategorisieren von Blöcken in Tabellen Blöcke mit einer niedrigen Löschungszählung und Blöcke mit einer hohen Löschungszählung ohne weiteres identifiziert werden, so dass kein signifikanter Rechenaufwand erforderlich ist. Die Verschleißnivellierung wird daher relativ effizient durchgeführt. Als Folge davon kann die Lebensdauer des Flash-Speichersystems wesentlich verlängert werden, ohne die Leistung des Systems auf signifikante Weise zu beeinträchtigen.
  • Flash-Speichersysteme oder genereller nichtflüchtige Speichervorrichtungen besitzen im allgemeinen Flash-Speicherkarten und Chipsätze. Typischerweise finden Flash-Speichersysteme in Verbindung mit einem Wirtsystem Verwendung, so dass das Wirtsystem Daten in die Flash-Speichersysteme einschreiben oder aus diesen auslesen kann. Einige Flash-Speichersysteme besitzen jedoch einen eingearbeiteten Flash-Speicher und Software, die auf einen Wirt einwirkt, um im wesentlichen als Steuereinheit für den eingearbeiteten Flash-Speicher zu wirken. Es wird nunmehr anfangs auf 1a Bezug genommen. In Verbindung hiermit wird ein generelles Wirtsystem beschrieben, das eine nichtflüchtige Speichervorrichtung, d. h. eine Compact-Flash-Speicherkarte oder ein eingebettetes System, umfasst. Ein Wirt- oder Computersystem 100 besitzt generell einen Systembus 104, der eine Kommunikation zwischen einem Mikroprozessor 108, einem RAM 112 und Eingabe/Ausgabeschaltungen 116 ermöglicht. Es versteht sich, dass das Wirtsystem 100 auch andere Komponenten aufweisen kann, d. h. Anzeigevorrichtungen und Netzwerkvorrichtungen, die zu Darstellungszwecken nicht gezeigt sind.
  • Allgemein gesagt kann das Wirtsystem 100 in der Lage sein, Informationen zu gewinnen, die Standbildinformationen, Audioinformationen und Videobildinformationen umfassen, jedoch hierauf nicht beschränkt sind. Solche Informationen können in Realzeit gewonnen und drahtlos dem Wirtsystem 100 zugeführt werden. Obwohl es sich bei dem Wirtsystem 100 im wesentlichen um irgendein System handeln kann, ist dies typischerweise ein solches System, wie eine Digitalkamera, eine Videokamera, eine zellulare Kommunikationsvorrichtung, ein Audiospieler oder ein Videospieler. Es versteht sich jedoch, dass das Wirtsystem 100 im wesentlichen generell irgendein System sein kann, das Daten oder Informationen speichert und Daten oder Informationen zurückgewinnt.
  • Das Wirtsystem 100 kann auch ein System sein, das entweder nur Daten gewinnt oder nur Daten zurückerlangt. Mit anderen Worten, das Wirtsystem 100 kann ein spezielles System sein, das Daten speichert, oder es kann ein spezielles System sein, das Daten liest. Beispielsweise kann das Wirtsystem 100 ein Speicherschreiber sein, der nur Daten schreibt oder speichert. Alternativ dazu kann das Wirtsystem 100 eine Vorrichtung, wie ein MP3-Player, sein, die typischerweise Daten liest oder zurückerlangt und nicht Daten gewinnt.
  • Eine nichtflüchtige Speichervorrichtung 120, bei der es sich bei einer Ausführungsform um eine entfernbare nichtflüchtige Speichervorrichtung handelt, kommuniziert mit einem Bus 104 zum Speichern von Informationen. Ein optionaler Eingabe/Ausgabe-Schaltungsblock 116 kann es einer nichtflüchtigen Speichervorrichtung 120 ermöglichen, indirekt mit dem Bus 104 zu kommunizieren. Wenn vorhanden, dient der Eingabe/Ausgabe-Schaltungsblock 116 dazu, die Belastung des Busses 104 zu reduzieren, wie dies der Fachmann weiß. Die nichtflüchtige Speichervorrichtung 120 besitzt einen nichtflüchtigen Speicher 124 und ein optionales Speichersteuersystem 128. Bei einer Ausführungsform kann die nichtflüchtige Speichervorrichtung 120 auf einem einzigen Chip oder einer Die verwirklicht sein. Alternativ dazu kann die nichtflüchtige Speichervorrichtung 120 auf einem Multichipmodul oder auf einer Vielzahl von diskreten Komponenten realisiert sein, die einen Chipsatz bilden und zusammen als nichtflüchtige Speichervorrichtung 120 verwendet werden können. Eine Ausführungsform der nichtflüchtigen Speichervorrichtung 120 wird nachfolgend in größeren Einzelheiten in Verbindung mit 1b erläutert.
  • Der nichtflüchtige Speicher 124, d. h. der Flash-Speicher, wie ein NAND-Flash-Speicher, dient dazu, Daten zu speichern, so dass erforderlichenfalls auf diese Daten zugegriffen werden kann und diese Daten gelesen werden können. Die im nichtflüchtigen Speicher 124 gespeicherten Daten können auch, falls geeignet, gelöscht werden, obwohl es sich versteht, dass einige Daten im nichtflüchtigen Speicher 124 nicht löschbar sein können. Die Prozesse des Speicherns von Daten, des Lesens von Daten und des Löschens von Daten werden generell vom Speichersteuersystem 128 oder, wenn das Speichersteuersystem 128 nicht vorhanden ist, durch Software, die vom Mikroprozessor 108 ausgeführt wird, gesteuert. Die Operation des nichtflüchtigen Speichers 124 kann so gemanagt werden, dass die Lebensdauer des nichtflüchtigen Speichers 124 beträchtlich maximiert wird, indem bewirkt wird, dass Sektionen des nichtflüchtigen Speichers 124 im wesentlichen gleichmäßig verschleißen.
  • Die nichtflüchtige Speichervorrichtung 120 wurde so beschrieben, dass sie ein optionales Speichersteuersystem 128, d. h. eine Steuereinheit, aufweist. Oft kann eine nichtflüchtige Speichervorrichtung 120 separate Chips für Funktionen des nichtflüchtigen Speichers 124 und des Speichersteuersystems 128, d. h. der Steuereinheit, enthalten. Während beispielsweise nichtflüchtige Speichervorrichtungen, die PC-Karten, Compact-Flash-Karten, Multimediakarten und Sicherungsdigitalkarten umfassen, aber hierauf nicht beschränkt sind, Steuereinheiten aufweisen, die auf einem separaten Chip realisiert sein können, können andere nichtflüchtige Speichervorrichtungen keine Steuereinheiten besitzen, die auf einem separaten Chip realisiert sind. Bei einer Ausführungsform, bei der die nichtflüchtige Speichervorrichtung 120 keine separaten Speicher- und Steuerchips enthält, können die Speicher- und Steuerfunktionen in einen einzigen Chip integriert sein, wie dies der Fachmann weiß. Alternativ dazu kann die Funktionalität eines Speichersteuersystems 128 vom Mikroprozessor 108 übernommen werden, wie beispielsweise bei einer Ausführungsform, bei der die nichtflüchtige Speichervorrichtung 120 keine Speichersteuereinheit 128 aufweist, wie vorstehend erläutert.
  • In Verbindung mit 1b wird eine nichtflüchtige Speichervorrichtung 120 gemäß einer Ausführungsform der vorliegenden Erfindung in größeren Einzelheiten beschrieben. Wie vorstehend erläutert, besitzt die nichtflüchtige Speichervorrichtung 120 einen nichtflüchtigen Speicher 124 und kann ein Speichersteuersystem 128 aufweisen. Der Speicher 124 und das Steuersystem 128 oder die Steuereinheit können Primärkomponenten der nichtflüchtigen Speichervorrichtung 120 sein, obwohl die nichtflüchtige Speichervorrichtung 120 auch kein Steuersystem 128 aufweisen kann, wenn der Speicher 124 eine eingebettete NAND-Vorrichtung ist. Bei dem Speicher 124 kann es sich um eine Reihe von Speicherzellen handeln, die auf einem Halbleitersubstrat ausgebildet sind, wobei ein oder mehrere Datenbits in den einzelnen Speicherzellen gespeichert sind, indem ein Ladungsniveau von zwei oder mehr Ladungsniveaus bei einzelnen Speicherelementen oder Speicherzellen gespeichert ist. Ein nichtflüchtiger, elektrisch löschbarer und programmierbarer Read-only-Memory-Flash-Speicher (EEPROM) ist ein Beispiel eines allgemeinen Speichertyps für derartige Systeme.
  • Wenn vorhanden, kommuniziert das Steuersystem 128 über einen Bus 15 mit einem Wirtcomputer oder einem anderen System, das das Speichersystem zum Speichern von Daten benutzt. Der Bus 15 ist generell ein Teil des Busses 104 der 1a. Das Steuersystem 128 steuert ferner die Funktionsweise des Speichers 124, der eine Speicherzellenanordnung 11 aufweisen kann, um vom Wirt vorgesehene Daten einzuschreiben, vom Wirt angeforderte Daten auszulesen und diverse Haushaltsfunktionen im Betriebsspeicher 124 durchzuführen. Das Steuersystem 128 besitzt generell einen Allzweckmikroprozessor, dem ein nichtflüchtiger Softwarespeicher, diverse logische Schaltungen u. ä. zugeordnet sind. Eine oder mehrere Status-Maschinen sind oft ebenfalls vorhanden, um die Performance von speziellen Programmen zu steuern.
  • Die Speicherzellenanordnung 11 wird auf typische Weise vom Steuersystem 128 oder Mikroprozessor 108 über Adressdecoder 17 adressiert. Die Decoder 17 legen die korrekten Spannungen an Gate- und Bit-Leitungen der Anordnung 11, um Daten für eine Gruppe von Speicherzellen, die vom Steuersystem 128 adressiert werden, zu programmieren, hiervon auszulesen oder eine entsprechende Gruppe zu löschen. Zusätzliche Schaltungen 19 umfassen Programmiertreiber, die Spannungen steuern, die an Elemente der Anordnung gelegt werden, welche von den Daten abhängen, die in eine adressierte Gruppe von Zellen programmiert werden. Die Schaltungen 19 umfassen ferner Abtastverstärker und andere Schaltungen, die erforderlich sind, um Daten von einer adressierten Gruppe von Speicherzellen zu lesen. Daten, die in der Anordnung 11 zu programmieren sind, oder Daten, die kürzlich auf der Anordnung 11 gelesen wurden, werden typischerweise in einem Pufferspeicher 21 im Steuersystem 128 gespeichert. Das Steuersystem 128 enthält des weiteren üblicherweise diverse Register zum zeitweisen Speichern von Befehls- und Zustandsdaten u. ä.
  • Die Anordnung 11 ist in eine große Anzahl von BLÖCKEN 0-N Speicherzellen unterteilt. Wie für Flash-EEPROM-Systeme übliche, ist der Block typischerweise die kleinste Einheit zum Löschen. Mit anderen Worten, jeder Block enthält die minimale Anzahl von Speicherzellen, die zusammen gelöscht werden. Jeder Block ist typischerweise in eine Anzahl von Seiten aufgeteilt, wie ebenfalls in 2 gezeigt. Eine Seite ist typischerweise die kleinste Einheit zum Programmieren. Mit anderen Worten, bei einem Basisprogrammiervorgang werden Daten in ein Minimum von einer Seite von Speicherzellen eingeschrieben oder hiervon ausgelesen. Ein oder mehrere Datensektoren sind typischerweise in jeder Seite gespeichert. Wie in 1b gezeigt, besitzt ein Sektor Benutzerdaten und Overhead-Daten. Overhead-Daten umfassen typischerweise einen Fehlerkorrekturcode (ECC), der aus den Benutzerdaten und den Overhead-Daten der Seite berechnet wurde. Ein Abschnitt 23 des Steuersystems 128 berechnet den ECC, wenn Daten in die Anordnung 11 programmiert werden, und überprüft auch den ECC, wenn Daten aus der Anordnung 11 gelesen werden. Alternativ dazu werden die ECCs in anderen Seiten oder anderen Blöcken als die Benutzerdaten, zu denen sie gehören, gespeichert.
  • Ein Sektor von Benutzerdaten entspricht typischerweise 512 Bytes entsprechend der Größe eines Sektors in Magnetplattenantrieben. Overhead-Daten entsprechen typischerweise weiteren 16 Bytes. Ein Datensektor ist üblicherweise in jeder Seite enthalten. Es können jedoch auch zwei oder mehr Sektoren eine Seite bilden. Irgendeine Anzahl von Seiten kann generell einen Block bilden. Beispielsweise kann ein Block aus acht Seiten bis zu 512, 1.024 oder mehr Seiten gebildet sein. Die Anzahl der Blöcke wird ausgewählt, um eine gewünschte Datenspeicherkapazität für das Speichersystem vorzusehen. Die Anordnung 11 ist typischerweise in einige Unteranordnungen (nicht gezeigt) aufgeteilt, von denen jede einen Anteil der Blöcke enthält, die etwas unabhängig voneinander operieren, um den Parallelitätsgrad bei der Ausführung von verschiedenen Speicheroperationen zu erhöhen. Ein Beispiel für die Verwendung von mehreren Unteranordnungen ist in der US-PS 5 890 192 beschrieben.
  • Wenn eine spezielle Sektion, d. h. ein Speicherelement, eines nichtflüchtigen Speichers 124 kontinuierlich programmiert wird, d. h. auf wiederholte Weise beschrieben und gelöscht wird, verschleißt dieser spezielle Bereich generell schneller als ein Bereich, der nicht kontinuierlich programmiert wird. Um auf wirksame Weise den Vergleich von un terschiedlichen Bereichen in einem nichtflüchtigen Speicher 124 „zu nivellieren", kann eine Verschleißnivellierung im wesentlichen so automatisch durchgeführt werden, dass Bereiche, die kontinuierlich programmiert werden, weniger programmiert werden, während Bereiche, die nicht kontinuierlich programmiert werden, mehr programmiert werden können.
  • Um generell eine Verschleißnivellierung durchzuführen, kann ein Block, d. h. ein Satz von Sektoren, die einem physikalischen Ort zugeordnet sind, welcher auf wiederholte Weise programmiert wird, mit einem Block vertauscht werden, der einem physikalischen Ort zugeordnet ist, der nicht wiederholt programmiert wird. Mit anderen Worten, ein physikalischer Block, der wiederholt programmiert und somit gelöscht worden ist, kann mit einem physikalischen Block vertauscht werden, der weniger oft programmiert und gelöscht worden ist.
  • Um sofort ermitteln zu können, ob ein spezieller physikalischer Block auf wiederholte Weise programmiert und gelöscht worden ist, kann bei einer Ausführungsform der vorliegenden Erfindung eine Löschungszählung im Block gespeichert werden. Mit anderen Worten, ein Zähler, der verfolgt, wie viele Male ein Block gelöscht worden ist, kann aufrechterhalten und jedes Mal dann erhöht werden, wenn der Block gelöscht wird. Eine derartige Löschungszählung kann benutzt werden, um die Ermittlung zu erleichtern, ob ein spezieller Block mit einem anderen Block, der weniger oft gelöscht wurde, vertauscht werden soll. 2 ist eine schematische Darstellung eines Abschnittes eines Flash-Speichers gemäß einer Ausführungsform der vorliegenden Erfindung. Der Flash-Speicher 200 kann in Seiten 204 aufgeteilt sein. Jede Seite 204, die generell etwa 512 Bytes von Benutzerdaten enthält, umfasst effektiv einen redundanten Bereich 206, d. h. die Seite 204a besitzt einen redundanten Bereich 206a. Jeder redundante Bereich 206 oder Overhead-Bereich kann bis zu etwa sechzehn Bytes an Informationen enthalten, die typischerweise einen Gruppenidentifikator 216, einen Aktualisierungsindex 212 und eine Löschungszählung 214 enthalten, jedoch hierauf nicht beschränkt sind.
  • Typischerweise ist jede beliebige Anzahl von Seiten 204 in einem Block 210 enthalten. Um die Darstellung zu vereinfachen, wird gezeigt, dass sich die Seiten 204a, 204b im Block 210 befinden, obwohl es sich versteht, dass die Anzahl der Seiten 204 im Block 210 stark variieren kann. Bei der beschriebenen Ausführungsform kann der Block 210 etwa 32 Seiten enthalten. Wenn beispielsweise der Flash-Speicher 200 etwa 512 Megabits (Mb) besitzt, kann der Flash-Speicher 200 effektiv in etwa 4.096 Blöcke von jeweils 32 Seiten aufgeteilt sein.
  • Wie vorstehend erläutert, kann die Löschungszählung 214 jedes Mal dann erhöht werden, wenn Benutzerdaten von einem zugehörigen Block gelöscht werden. Beispielsweise kann die Löschungszählung 214, die dem Block 210 zugeordnet ist, jedes Mal erhöht werden, wenn Daten vom Block 210 gelöscht werden. Da jede Seite 204a, 204b, die im Block 210 enthalten ist, generell eine Löschungszählung 214 besitzt, kann die zu jeder Seite 204a, 204b gehörende Löschungszählung 214 erhöht werden, wenn der Block 210 gelöscht wird. Wenn ein Daten enthaltender Block gelöscht wird, werden sowohl der Datenbereich als auch der redundante Bereich gelöscht oder geleert. Der gelöschte Block wird Ersatzblockpools hinzugefügt, die die gelöschten Blöcke enthalten, welche kleinere Löschungszählungen im Vergleich zu den gelöschten Blöcken von anderen Tabellen aufweisen. Die Ersatzblocktabelle ist im wesentlichen die LFEB(der am wenigsten häufig gelöschte Block)-Tabelle. Bei einer Ausführungsform der vorliegenden Erfindung wird der gelöschte Block, der eine große Löschungszählung besitzt, dem Pool hinzugefügt, der die gelöschten Blöcke enthält, die im Vergleich zu den gelöschten Blöcken von anderen Tabellen eine größere Löschungszählung besitzen. Dieser Pool ist die MFEB(der am häufigsten gelöschte Block)-Tabelle. Die Löschungszählung des gerade gelöschten Blockes wird um eins erhöht und in Abhängigkeit vom Wert der Zählung in der LEEB- oder MFEB-Tabelle aufbewahrt.
  • Auf eine Löschungszählung, wie die Löschungszählung 214, kann während einer Initialisierungsanforderung zugegriffen werden. Eine Initialisierungsanforderung kann beispielsweise gemacht werden, wenn ein System, d. h. ein System, das den eingebetteten Flash-Speicher enthält, in Betrieb genommen wird, wenn Ersatzblöcke in einem System gering frequentiert sind, wenn ein Benutzer eine Anforderung zum Ausgleich der Blockzuordnung macht und wenn ein Benutzer eine Anforderung macht, dass die Blocknutzung gleichmäßiger erfolgen soll. 3 ist ein Prozessablaufdiagramm, das die mit der Bearbeitung einer Initialisierungsanforderung in Bezug auf ein Flash-Speichersystem verbundenen Schritte gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • Generell kann eine Initialisierungsanforderung entweder von einem Benutzer oder im wesentlichen automatisch von einer Steuereinheit, die dem Flash-Speichersystem zugeordnet ist, d. h. periodisch oder beim Eintreten eines Auslösezustandes, initiiert werden. Ein Prozess 300 zur Beantwortung einer Initialisierungsanforderung beginnt mit Schritt 304, in dem eine Initialisierungsanforderung wirksam empfangen wird. Eine Initialisierungsanforderung kann von einer Steuereinheit oder einem Prozessor, die bzw. der mit dem Flash-Speicher, der initiiert werden soll, in Verbindung steht, empfangen werden. Eine solche Anforderung kann beispielsweise von einem Benutzer über einen Wirt beim Einschalten eingegeben werden oder beim Ausgleich einer Blockzuordnung.
  • Wenn die Initialisierungsanforderung empfangen worden ist, wird in Schritt 306 eine Durchschnittslöschungszählung erhalten. Bei einer Ausführungsform wird die Durchschnittslöschungszählung in einem Löschungszählungsblock gespeichert, der in den dem System zugeordneten NAND-Speicher geschrieben wird. Der Löschungszählungsblock (ECB), der die Durchschnittslöschungszählung und die Löschungszählung eines jeden Blocks enthält, wird in einem Block des Flash-Speichers gespeichert. Wenn ein Löschungszählungsblock erzeugt wird, d. h. wenn das System anfangs formatiert wird, werden die Durchschnittlöschungszählung und die Löschungszählung eines jeden Blockes in der Tabelle typischerweise auf einen Wert von Null initialisiert. Nach dem Berechnen der Durchschnittslöschungszählung werden Löschungszählungen für im wesentlichen sämtliche Blöcke im System erhalten. Wie vorstehend in Verbindung mit 2 beschrieben wurde, wurde die Löschungszählung für einen spezielle Daten enthaltenden Block in einem redundanten Bereich gespeichert, der diesem Block zugeordnet ist. Daher kann das Erhalten der Löschungszählung für im wesentlichen sämtliche Blöcke, die Daten enthalten, das Zugreifen auf einen zu jedem Block gehörenden redundanten Bereich und das Speichern einer jeden Löschungszählung im Löschungszählungsblock bei der Initialisierungsanforderung umfassen.
  • Bei einer Initialisierungsanforderung wird die Löschungszählung eines gelöschten Blockes von einem Löschungszählungsblock erhalten. Dieser Löschungszählungsblock behält generell seinen Wert bei, da der redundante Bereich dieses Blockes gelöscht ist. Wenn das Gesamtsystem stillgesetzt wird, wird typischerweise eine Beendigungsanforderung erzeugt, so dass die Löschungszählungstabelle aktualisiert wird, um die letzte Löschungszählung von im wesentlichen sämtlichen Blöcken zu enthalten. Zu irgendeinem vorgegebenen Zeitpunkt gehört ein Block zu einer Tabelle der am häufigsten gelöschten Blöcke, einer Tabelle der am wenigsten häufig gelöschten Blöcke, einem Löschungszählungsblock oder einer Blockmappingtabelle. Die Löschungszählung eines Blockes, der zu einem Löschungszählungsblock gehört, wird in einem redundanten Bereich des Blockes gespeichert. Die Löschungszählung eines Blockes, der Daten enthält, gehört oft zu einer Blockmappingtabelle und wird im redundanten Bereich gespeichert. Die Löschungszählung eines gelöschten Blockes, der zu einer Blockmappingtabelle gehört, besitzt eine Löschungszählung von Null, da der Block niemals effektiv genutzt wurde. Das Erhalten von Löschungszählungen von Blöcken in der Tabelle der am wenigsten häufig gelöschten Blöcke oder der Tabelle der am häufigsten gelöschten Blöcke beinhaltet das Erhalten des Wertes von der Tabelle, da jeder Tabelleneingang generell sowohl die Blocknummer eines gelöschten Blockes als auch dessen Löschungszählung enthält.
  • Nach der Beendigung der Bearbeitung einer Initialisierungsanforderung muss die Löschungszählung des gelöschten Blockes nicht unbedingt im Löschungszählungsblock aktualisiert sein. Der Löschungszählungsblock behält seinen Wert bei, da der redundante Bereich dieses Blockes gelöscht ist. Wenn das System stillgesetzt wird, kann eine Beendigungsanforderung gemacht werden, so dass der Löschungszählungsblock aktualisiert wird, um die letzte gelöschte Zählung sämtlicher Blöcke zu enthalten. Die Löschungszählung eines gelöschten Blockes, die zu einem am wenigsten häufig gelöschten Block gehört, wird aus der Tabelle der am wenigsten häufig gelöschten Blöcke zurückgewonnen, während die Löschungszählung eines gelöschten Blockes, der zu einem am häufigsten gelöschten Block gehört, aus der Tabelle der am häufigsten gelöschten Blöcke zurückgewonnen wird. Die Löschungszählung der verbleibenden gelöschten Blöcke wird generell aus dem Löschungszählungsblock gewonnen.
  • In Schritt 320 wird eine Blockmappingtabelle im NAND-Speicher zugeordnet. Wie der Fachmann weiß, kann eine Blockmappingtabelle angeordnet werden, um ein Mapping zwischen einer Logikblockadresse (LBA) und einer physikalischen Blockadresse (PBA) vorzusehen. Ferner werden auch eine Tabelle für am häufigsten gelöschte Blöcke und eine Ta belle für am wenigsten häufig gelöschte Blöcke in Schritt 320 zugeteilt.
  • Eine Tabelle der am häufigsten gelöschten Blöcke wird typischerweise dimensioniert oder auf sonstige Weise konfiguriert, um auf wirksame Weise Informationen zu erhalten, die sich auf gelöschte Blöcke beziehen, die am häufigsten gelöscht wurden. Mit anderen Worte, ein am häufigsten gelöschter Block wird angeordnet, um Informationen, d. h. Löschungszählungen und Mappinginformationen, die sich auf gelöschte Blöcke mit den höchsten Löschungszählungen im System beziehen, zu halten. In entsprechender Weise wird eine Tabelle für am wenigsten häufig gelöschte Blöcke generell dimensioniert oder auf sonstige Weise konfiguriert, um Informationen aufzunehmen, die sich auf gelöschte Blöcke mit den geringsten Löschungszählungen beziehen. Obwohl die Größe der Tabelle der am häufigsten gelöschten Blöcke und die Größe der Tabelle der am wenigsten häufig gelöschten Blöcke in großem Umfang variieren kann, hängen die Größen von der Anzahl der Blöcke ab, die als am häufigsten gelöscht bezeichnet werden, und der Anzahl der Blöcke, die als am wenigsten häufig gelöscht bezeichnet werden. Typischerweise ist die Tabelle der am häufigsten gelöschten Blöcke generell so dimensioniert, dass sie Informationen für weniger gelöschte Blöcke aufnimmt als die Tabelle für die am wenigsten häufig gelöschten Blöcke. Beispielsweise kann die Tabelle für die am häufigsten gelöschten Blöcke so dimensioniert sein, dass sie Informationen für etwa achtzehn gelöschte Blöcke aufnimmt, während die Tabelle für die am wenigsten häufig gelöschten Blöcke so dimensioniert sein kann, dass sie Informationen in Bezug auf etwa siebzig ge löschte Blöcke aufnimmt. Alternativ dazu kann die Tabelle für die am häufigsten gelöschten Blöcke so dimensioniert sein, dass sie Informationen für etwa zehn gelöschte Blöcke aufnimmt, während die Tabelle für die am wenigsten häufig gelöschten Blöcke so dimensioniert sein kann, dass sie Informationen für etwa fünfzig gelöschte Blöcke aufnimmt.
  • Nachdem die Tabellen in Schritt 320 zugeteilt worden sind, werden in Schritt 324 gelöschte Blöcke identifiziert. Dann können in Schritt 328 „N" gelöschte Blöcke auf die am häufigsten gelöschten Blöcke und im wesentlichen auf die Tabelle der am häufigsten gelöschten Blöcke umgeschrieben werden. Bei einer Ausführungsform kann es sich bei den „N" gelöschten Blöcken um die „N" gelöschten Blöcke mit den höchsten Löschungszählungen, die durch einen Vergleich sämtlicher Löschungszählungen ermittelt wurden, handeln. Alternativ dazu kann das Speichern der „N" gelöschten Blöcke in der Tabelle der am häufigsten gelöschten Blöcke auf der Basis eines Vergleiches gegenüber der durchschnittlichen Löschungszählung, die in Schritt 306 erhalten wurde, bestimmt werden. Beispielsweise können die „N" gelöschten Blöcke „N" gelöschte Blöcke sein, die eine Löschungszählung aufweisen, die um mindestens einen vorgegebenen Prozentsatz, d. h. etwa 25 höher ist als die durchschnittliche Löschungszählung.
  • Wenn die Tabelle der am häufigsten gelöschten Blöcke wirksam besiedelt worden ist, können „M" gelöschte Blöcke identifiziert und auf wirksame Weise in Schritt 332 auf die Tabelle der am wenigsten häufig gelöschten Blöcke umgeschrieben werden. Die „M" gelöschten Blöcke können generell die „M" gelöschten Blöcke mit den niedrigsten Löschungszählungen sämtlicher gelöschten Blöcke, die zum System gehören, sein, oder die „M" gelöschten Blöcke können „M" gelöschte Blöcke sein, die eine Löschungszählung besitzen, die um mindestens einen vorgegebenen Prozentsatz geringer ist als die durchschnittliche Löschungszählung. Bei den „M" gelöschten Blöcken handelt es sich in wirksamer Weise um Ersatzblöcke, die in geeigneter Weise auf die Blockmappingtabelle umgeschrieben werden.
  • Zurückbleibende gelöschte Blöcke, d. h. gelöschte Blöcke, die nicht auf die Tabelle der am wenigsten häufig gelöschten Blöcke oder die Tabelle der am häufigsten gelöschten Blöcke umgeschrieben worden sind, werden in Schritt 336 zusammen mit „ungelöschten" Blöcken auf die Blockmappingtabelle übertragen bzw. umgeschrieben. Mit anderen Worten, verbleibende gelöschte Blöcke sowie Blöcke, die andere Daten als in den zugehörigen Redundantenbereichen enthalten, werden mit der Blockmappingtabelle assoziiert.
  • Nachdem die Blockmappingtabelle, die Tabelle für die am wenigsten häufig gelöschten Blöcke und die Tabelle für die am häufigsten gelöschten Blöcke auf wirksame Weise besiedelt worden sind, d. h. mit Löschungszählungen und Mappinginformationen, die sich auf entsprechende Blöcke beziehen, kann eine durchschnittliche Löschungszählung in Schritt 338 bestimmt werden. Das Ermitteln der Durchschnittslöschungszählung umfasst typischerweise das Summieren der Löschungszählungen von einzelnen Blöcken, die in Schritt 308 erhalten wurden, und das Teilen der Summe durch die Gesamtzahl der Blöcke.
  • Die in Schritt 338 berechnete durchschnittliche Löschungszählung wird im Löschungszählungsblock, der zum System gehört, gespeichert. Wie vorstehend erwähnt, wird die durchschnittliche Löschungszählung in einem Löschungszählungsblock gespeichert, der in den NAND-Speicher geschrieben wurde, welcher zum System gehört. Nach dem Speichern der durchschnittlichen Löschungszählung im Löschungszählungsblock können statische Blöcke oder Blöcke, die Daten enthalten und eine relativ niedrige zugehörige Löschungszählung aufweisen, in Schritt 34 bearbeitet werden. Die zu einem Verfahren der Bearbeitung eines statischen Blockes gehörenden Schritte werden nachfolgend in Verbindung mit 4 erläutert. Wenn die statischen Blöcke einmal bearbeitet worden sind, ist die Bearbeitung einer Initialisierungsanforderung beendet.
  • Innerhalb einer Gruppe von Blöcken, die zu einem Flash-Speicher gehören, gibt es zu irgendeinem vorgegebenen Zeitpunkt üblicherweise Blöcke, die gelöscht sind, und Blöcke, die Daten, d. h. Nutzerdaten, enthalten. Einige der Blöcke, die Date enthalten, können als „normale" Blöcke angesehen werden, während andere als statische Blöcke angesehen werden können. Statische Blöcke sind Blöcke, die Daten enthalten, die selten verändert werden. Mit anderen Worten, statische Blöcke werden selten gelöscht. Typischerweise können statische Blöcke zu relativ alten Dokumenten gehören, die in einem Flash-Speicher gespeichert sind, zu einem ausführbaren Programm, das im Flash-Speicher gespeichert ist, oder zu einem Betriebssystem, das im Flash-Speicher gespeichert ist. Ein statischer Block kann generell eine Löschungszäh lung aufweisen, die wesentlich niedriger ist als die Löschungszählung des größeren Teiles der Blöcke im Flash-Speicher. Bei einer Ausführungsform kann ein Block, der Daten enthält, als statischer Block angesehen werden, wenn die Löschungszählung des Blockes unter einem bestimmten Prozentsatz, d. h. etwa 20%, der durchschnittlichen Löschungszählung, die zu einem Flash-Speichersystem gehört, liegt.
  • Da ein statischer Block Daten enthält, die kaum verändert werden, können die im statischen Block enthaltenen Daten in einen Block kopiert werden, der eine relativ hohe Löschungszählung besitzt. Mit anderen Worten, wenn der Inhalt eines speziellen physikalischen Blockes relativ statisch ist und daher generell nicht verändert wird, kann der Inhalt auf wirksame Weise auf einen anderen physikalischen Block, der eine relativ hohe Löschungszählung besitzt, umgeschrieben werden, damit der ursprüngliche physikalische Block, der eine relativ niedrige Löschungszählung besitzt, benutzt werden kann, um einen Inhalt zu speichern, der häufiger verändert wird. In Verbindung mit 4 werden die zur Bearbeitung eines statischen Blockes gehörenden Schritte, d. h. der Schritt 342 in 3, in Verbindung mit einer Ausführungsform der vorliegenden Erfindung beschrieben. Ein Prozess 342 zur Bearbeitung eines statischen Blockes eines Systems beginnt mit Schritt 404, in dem auf die Löschungszählung eines Blockes, d. h. des Blockes „A", zugegriffen wird. Wenn einmal der Zugriff auf die Löschungszählung des Blockes „A" erfolgt ist, wird in Schritt 408 eine Ermittlung durchgeführt, ob die Löschungszählung des Blo ckes „A" im Vergleich zur durchschnittlichen Löschungszählung, die zum System gehört, sehr niedrig ist.
  • Obwohl eine Bestimmung, ob die Löschungszählung des Blockes „A" im Vergleich zur durchschnittlichen Löschungszählung niedrig ist, auf im wesentlichen jedem geeigneten Kriterium basieren kann, wird bei einer Ausführungsform die Bestimmung auf der Basis durchgeführt, ob die Löschungszählung von Block „A" einen Wert besitzt, der geringer ist als ein Wert, der zu einem Teil der durchschnittlichen Löschungszählung gehört. Beispielsweise kann die Löschungszählung des Blockes „A" als niedrig angesehen werden, wenn die Löschungszählung weniger als ein vorgegebener Prozentsatz der durchschnittlichen Löschungszählung beträgt.
  • Wenn in Schritt 408 ermittelt wird, dass die Löschungszählung von Block „A" im Vergleich zur durchschnittlichen Löschungszählung nicht sehr niedrig ist, erfolgt die Anzeige, dass Block „A" höchstwahrscheinlich nicht ein statischer Block ist. Obwohl Block „A" noch ein statischer Block sein kann, wenn die Löschungszählung von Block „A" nicht als sehr niedrig angesehen wird, löst die Löschungszählung von Block „A" in solch einem Fall nicht auf wirksame Weise ein Vertauschen des Blockes „A" mit einem anderen Block aus. Daher ist der Prozess der Bearbeitung eines statischen Blockes beendet.
  • Wenn alternativ dazu in Schritt 408 ermittelt wird, dass die Löschungszählung von Block „A" im Vergleich zur durchschnittlichen Löschungszählung sehr niedrig ist, folgt hieraus, dass der Inhalt von Block „A" in einen Block mit einer relativ hohen Löschungszählung eingeschrieben werden kann, so dass Block „A" mit seiner niedrigen Löschungszählung auf freie Weise Daten speichern kann, die relativ häufig verändert werden. Mit anderen Worten, die Anzeige, wenn die Löschungszählung von Block „A" im Vergleich zur durchschnittlichen Löschungszählung sehr niedrig ist, ist, dass Block „A" ein statischer Block ist. Der Prozess bewegt sich dabei von Schritt 408 zu Schritt 412, in dem Block „A" als statischer Block identifiziert wird. Wenn einmal Block „A" als ein statischer Block identifiziert worden ist, kann ein Block, nämlich Block „B", von einer Gruppe der am häufigsten gelöschten Blöcke erhalten werden, wie durch die Tabelle der am häufigsten gelöschten Blöcke in Schritt 416 identifiziert.
  • Nachdem Block „B erhalten worden ist, wird der Inhalt von Block „A" in Schritt 420 in Block „B" kopiert. Mit anderen Worten, die in Block „A" enthaltenen Nutzerdaten werden in Schritt 420 in Block „B" kopiert. Wenn der Inhalt von Block „A" einmal in Block „B" kopiert worden ist, wird Block „A" in Schritt 424 gelöscht. Wenn Block „A" gelöscht ist, wird typischerweise die zu Block „A" gehörende Löschungszählung erhöht. Ein Block, d. h. Block „C", kann in Schritt 428 so von der Gruppe der am wenigsten häufig gelöschten Blöcke in die Gruppe der am häufigsten gelöschten Blöcke bewegt werden, so dass die Assoziation von Block „C" von der Tabelle der am wenigsten häufig gelöschten Blöcke wirksam zur Tabelle der am häufigsten gelöschten Blöcke verändert wird. Mit anderen Worten, Block „C" wird von der Tabelle der am wenigsten häufig gelöschten Blöcke dissoziiert und mit der Tabelle der am häufigsten gelöschten Blöcke assoziiert.
  • Durch eine derartige Bewegung kann ein Raum in der Tabelle der am wenigsten häufig gelöschten Blöcke auf wirksame Weise zur Aufnahme von Block „A", der eine niedrige Löschungszählung besitzt und somit einer der am wenigsten häufig gelöschten Blöcke im System ist, geöffnet werden.
  • Nach dem Bewegen von Block „C" aus der Gruppe der am wenigsten häufig gelöschten Blöcke heraus oder nach dem sonstigen Dissoziieren von Block „C" von der Tabelle der am wenigsten häufig gelöschten Blöcke bewegt sich der Prozess von Schritt 428 zu Schritt 432, in dem Block „A" wirksam von der Blockmappingtabelle in die Tabelle der am wenigsten häufig gelöschten Blöcke bewegt wird. Dann wird in Schritt 434 Block „B", der Inhalt enthält, der vorher in Block „A" enthalten war, mit der Blockmappingtabelle assoziiert. Wie der Fachmann weiß, umfasst die „Bewegung" von Block „B" in die Blockmappingtabelle typischerweise das Aktualisieren des Mappings der Adresse eines logischen Blockes, die mit Block „A" assoziiert war, derart, dass sie nunmehr mit Block „B" assoziiert ist. Wenn Informationen in Bezug auf Block „C" in der Tabelle der am häufigsten gelöschten Blöcke vorhanden sind, sind die Informationen in Bezug auf Block „B" in der Blockmappingtabelle vorhanden und Informationen in Bezug auf Block „A" in der Tabelle der am wenigsten häufig gelöschten Blöcke vorhanden, so dass der Prozess der Bearbeitung eines statischen Blockes beendet ist. Es versteht sich, dass der Prozess 342 wiederholt werden kann, bis im wesentlichen sämtliche statischen Blöcke, die zum System gehören, identifiziert und bearbeitet worden sind.
  • Generell können eine Blockmappingtabelle, eine Tabelle für am wenigsten häufig gelöschte Blöcke und eine Tabelle für am häufigsten gelöschte Blöcke im Systemspeicher, d. h. RAM 112 von 1a, erzeugt werden, wenn eine Initialisierungsanforderung an ein gesamtes Flash-Speichersystem gesendet wird. Zum Erstellen der Tabellen kann zuerst Raum im Systemspeicher zugewiesen werden, um die Tabellen aufzunehmen.
  • Wie vorstehend erwähnt, werden eine Blockmappingtabelle, eine Tabelle für am wenigsten häufig gelöschte Blöcke und eine Tabelle für am häufigsten gelöschte Blöcke im Systemspeicher erzeugt, wie dies auch bei einer durchschnittlichen Löschungszählung der Fall ist. Eine durchschnittliche Löschungszählung und die Löschungszählung eines jeden Blockes werden ebenfalls in den Löschungszählungsblock eingeschrieben. 5a ist eine schematische Blockdiagrammdarstellung eines Systemspeichers gemäß einer Ausführungsform der vorliegenden Erfindung. Ein Systemspeicher 454 und ein Flash-Speicher 460 sind im Gesamtsystem enthalten und können beispielsweise wirksam Komponenten einer Speicherkarte oder Komponenten einer Wirtvorrichtung bilden, in die der Flash-Speicher 460 eingebettet ist. Der Systemspeicher 454 ist so ausgebildet, dass er eine Blockmappingtabelle 462 speichert, mit der Blöcke assoziiert sein können. Typischerweise kann die Blockmappingtabelle 462 benutzt werden, um LBSs mit physikalischen Blöcken, die zum Flash-Speicher 460 gehören, zu assoziieren.
  • Der Systemspeicher 454 hält ferner eine Tabelle 466 für am wenigsten häufig gelöschte Blöcke und eine Tabelle 470 für am häufigsten gelöschte Blöcke, die wie die Blockmappingtabelle 462 generell in Abhängigkeit von einer Initialisierungsanforderung geformt werden. Eine durchschnittliche Löschungszählung 474, die die durchschnittliche Löschungszählung von Blöcken im Flash-Speicher 460 hält, wird erzeugt, wenn ein gesamtes Flash-Speichersystem formatiert wird. Bei einer Ausführungsform ist ein Löschungszählungsblock 480 so ausgebildet, dass er die Löschungszählungen von im wesentlichen sämtlichen Blöcken im Flash-Speicher 460 enthält. Jedes Mal dann, wenn eine Initialisierungsanforderung gemacht wird, kann eine aktualisierte durchschnittliche Löschungszählung berechnet und im Löschungszählungsblock 480 gespeichert werden.
  • 5b ist eine schematische Darstellung einer Gruppe von „normalen" Blöcken, einer Gruppe von am wenigsten häufig gelöschten Blöcken und einer Gruppe von am häufigsten gelöschten Blöcken gemäß einer Ausführungsform der vorliegenden Erfindung. Eine Gruppe von Blöcken 502 besitzt Blöcke 514, bei denen es sich um normale oder statische Blöcke handeln kann, die generell Nutzerdaten enthalten, welche gelöscht werden können, jedoch nicht in die Kategorien eines am wenigsten häufig gelöschten Blockes oder eines am häufigsten gelöschten Blockes fallen. Eine Gruppe von am wenigsten häufig gelöschten Blöcken 506 umfasst generell Blöcke 518, die die niedrigsten Löschungszählungen in einem Gesamtsystem besitzen, während eine Gruppe von am häufigsten gelöschten Blöcken 510 generell Blöcke 522 umfasst, die die höchsten Löschungszählungen der gelöschten Blöcke im Gesamtsystem besitzen. Generell werden die Blöcke 518 effektiv als Ersatzblöcke verwendet.
  • Wenn ein Block 514 gelöscht ist, kann ermittelt werden, ob der gelöschte Block 514 eine relativ niedrige zugehörige Löschungszählung oder eine relativ hohe zugehörige Löschungszählung besitzt. Wenn der gelöschte Block 514 eine relativ niedrige zugehörige Löschungszählung hat, kann der gelöschte Block 514 zur Gruppe der am wenigsten häufig gelöschten Blöcke 506 addiert werden. Wenn andererseits der gelöschte Block 514 eine relativ hohe zugehörige Löschungszählung aufweist, kann der gelöschte Block 514 auf die Gruppe der am häufigsten gelöschten Blöcke 510 umgeschrieben werden.
  • Die Gruppe der am wenigsten häufig gelöschten Blöcke 506, die im wesentlichen irgendeine geeignete Größe besitzen kann, kann eine sortierte Gruppe sein. Mit anderen Worten, die Blöcke 518 können auf der Basis von Löschungszählungen im wesentlichen sortiert sein. Die Sortierung wird typischerweise in einer entsprechenden Tabelle (nicht gezeigt) für am wenigsten häufig gelöschte Blöcke, die mit Blöcken 518 assoziierte Eingänge enthält, reflektiert. Beispielsweise können jedes Mal dann, wenn ein neuer Block 518 in die Gruppe der am wenigsten häufig gelöschten Blöcke 506 bewegt, hierzu addiert oder auf sonstige Weise hiermit assoziiert wird, die Blöcke 518 im wesentlichen auf der Basis von Löschungszählungen sortiert werden, so dass der am wenigsten häufig gelöschte Block 518 in der Gruppe der am wenigsten häufig gelöschten Blöcke 506 der nächste Block 518 sein kann, der umzuschreiben ist, beispielsweise auf die Gruppe 502. Mit anderen Worten, wenn ein neuer Block erforderlich ist, in den Daten zu kopieren sind, wird der am we nigsten häufig gelöschte Block 518 der Blöcke 518 unter Verwendung einer Tabelle für die am wenigsten häufig gelöschten Blöcke identifiziert und aus der Gruppe der am wenigsten häufig gelöschten Blöcke 506 genommen. Wenn ein Block 514, der Daten enthält, die nicht gebraucht werden, gelöscht wird, kann dieser Block 514 typischerweise in einer Gruppe von am wenigsten häufig gelöschten Blöcken 506 gespeichert und die Tabelle für die am wenigsten häufig gelöschten Blöcke kann entsprechend aktualisiert werden, d. h. ein Eingang, der dem addierten Block entspricht, kann in der Tabelle für die am wenigsten häufig gelöschten Blöcke vorhanden sein.
  • Blöcke 522 in der Gruppe der am häufigsten gelöschten Blöcke 510 können wie die Blöcke 518, die in der Gruppe der am wenigsten häufig gelöschten Blöcke 506 gespeichert sind, ebenfalls im wesentlichen auf der Basis von Löschungszählungen sortiert sein. Diese Sortierung wird typischerweise durchgeführt, indem Eingänge in einer Tabelle (nicht gezeigt) für am häufigsten gelöschte Blöcke, die zur Identifizierung der Blöcke 522 dient, sortiert werden. Bei einer Ausführungsform kann eine durchschnittliche Löschungszählung, die zu den Blöcken 522 gehört, berechnet werden, d. h. es kann eine durchschnittliche Löschungszählung für die Gruppe der am häufigsten gelöschten Blöcke 510 ermittelt werden. Wenn ein Block 514 aus der Gruppe 502 gelöscht wird und festgestellt wird, dass die Löschungszählung des gelöschten Blockes 514 die durchschnittliche Löschungszählung für die Gruppe der am häufigsten gelöschten Blöcke 510 um mehr als einen vorgegebenen Prozentsatz, d. h. um mehr als etwa 20 übersteigt, kann der gelöschte Block 514 zur Gruppe der am häufigsten gelöschten Blöcke 510 addiert werden. Wenn ein neuer Block 522 auf wirksame Weise zur Gruppe der am häufigsten gelöschten Blöcke 510 addiert wird, kann ein Block 522 in der Gruppe der am häufigsten gelöschten Blöcke 510, der die niedrigste Löschungszählung aufweist, wieder in die Gruppe 502 umgeschrieben werden. Derartige Rückumschreibungen werden typischerweise durch das Aktualisieren einer zugehörigen Blockmappingtabelle, Tabelle für am wenigsten häufig gelöschte Blöcke und Tabelle für am häufigsten gelöschte Blöcke reflektiert (nicht gezeigt).
  • Das Tauschen von Blöcken zwischen der Gruppe 502, der Gruppe der am wenigsten häufig gelöschten Blöcke 506 und den am häufigsten gelöschten Blöcken 510 kann generell durchgeführt werden, wenn ein Block 514, der in der Gruppe 502 vorhanden ist, gelöscht oder aktualisiert werden soll. Alternativ dazu kann das Tauschen oder Aktualisieren von Blöcken im wesentlichen immer dann durchgeführt werden, wenn ein Ersatzblock in der Gruppe 502 zur Verwendung zugewiesen werden soll. In Verbindung mit 6 wird nunmehr ein Verfahren zur Durchführung eines Blockaustausches oder einer Blockaktualisierung in einem Gesamtspeichersystem, wie einem Wirtsystem mit eingebettetem Flash-Speicher, um einen gleichmäßigeren Verschleiß der Blöcke zu erzielen, gemäß einer Ausführungsform der vorliegenden Erfindung beschrieben. Ein Prozess 600 zur Durchführung eines Blockaustausches oder einer Aktualisierung beginnt in Schritt 604, in dem ein Block, d. h. Block „Y", von einer Blockmappingtabelle „erhalten" oder unter Verwendung der Blockmappingtabelle auf sonstige Weise identifiziert wird. Der erhaltene Block ist derjenige Block, der auf der Blockmappingtabelle zum Kopieren oder Aktualisieren seines Inhaltes wirksam ausgetauscht werden soll.
  • Wenn Block „Y" erhalten worden ist, wird ein Block, d. h. Block „X", aus der Tabelle für die am wenigsten häufig gelöschten Blöcke auf wirksame Weise erhalten. Mit anderen Worten, ein Ersatzblock wird aus der Gruppe der am wenigsten häufig gelöschten Blöcke unter Verwendung der Tabelle für die am wenigsten häufig gelöschten Blöcke erhalten, um einen geeigneten Ersatzblock zu identifizieren. Generell ist der Block „X" der Block mit der niedrigsten Löschungszählung in der Gruppe der am wenigsten häufig gelöschten Blöcke, obwohl Block „X" im wesentlichen irgendein Block sein kann, der mit der Gruppe der am wenigsten häufig gelöschten Blöcke und damit der Tabelle für die am wenigsten häufig gelöschten Blöcke assoziiert ist. Der Inhalt oder genauer gesagt der Dateninhalt, der in Block „Y" gespeichert ist, oder ein neuer Inhalt, der den ursprünglichen Inhalt von Block „Y" ersetzen soll, wird in Schritt 612 in Block „X" kopiert.
  • Nachdem der Inhalt von Block „Y" in Block „X" kopiert worden ist, wird Block „X" im Schritt 616 wirksam in die Blockmappingtabelle bewegt oder hiermit assoziiert. Mit anderen Worten, zum Block „Y" und zum Block „X" gehörende Mappings werden wirksam aktualisiert, so dass ein LBA, der vorher zu Block „Y" gemappt wurde, zu Block „X" gemappt wird. Wenn Block „X" wirksam in die Blockmappingtabelle bewegt worden ist, wird Block „Y" in Schritt 620 gelöscht. Speziell kann der Dateninhalt, d. h. der Nutzerinhalt, der in Block „Y" gespeichert ist, unter Verwendung von irgend einer geeigneten Technik gelöscht werden. Die zu Block „Y" gehörende Löschungszählung, die im redundanten Bereich, der zu Block „Y" gehört, gespeichert wurde, wird dann in Schritt 624 erhöht, um anzuzeigen, dass Block „Y" wiederum gelöscht worden ist. Es versteht sich, dass bei einer Ausführungsform eine Löschungszählung für „Y", die auf wirksame Weise in einem Löschungszählungsblock gespeichert wurde, aktualisiert werden kann.
  • In Schritt 628 wird der Block mit der niedrigsten Löschungszählung in der Tabelle für die am häufigsten gelöschten Blöcke identifiziert. Wie vorstehend beschrieben, werden bei einer Ausführungsform Blöcke, auf die in der Tabelle für die am häufigsten gelöschten Blöcke Bezug genommen wird, in Abhängigkeit von ihren entsprechenden Löschungszählungen sortiert. Das Sortieren der Blöcke kann das Positionieren der Referenzen für die Blöcke innerhalb der Tabelle für die am häufigsten gelöschten Blöcke in Abhängigkeit von den Löschungszählungen der Blöcke umfassen. Das Identifizieren des Blockes mit der niedrigsten Löschungszählung umfasst daher generell das Zugreifen auf die Blockreferenz in der Position in der Tabelle für die am häufigsten gelöschten Blöcke, die so angeordnet ist, dass sie die Blockreferenz mit der niedrigsten Löschungszählung aufnimmt.
  • Wenn der Block mit der niedrigsten Löschungszählung, auf die in der Tabelle für die am häufigsten gelöschten Blöcke Bezug genommen wird, identifiziert ist, bewegt sich der Prozess von Schritt 628 zu Schritt 632, in dem festgestellt wird, ob die Löschungszählung von Block „Y" größer ist als die Löschungszählung des Blocks mit der niedrigsten Löschungszählung, auf den in der Tabelle für die am häufigsten gelöschten Blöcke Bezug genommen wurde. Wenn festgestellt wird, dass die Löschungszählung von Block „Y" nicht größer ist als die Löschungszählung des Blockes mit der niedrigsten Löschungszählung, auf den in der Tabelle für die am häufigsten gelöschten Blöcke Bezug genommen wurde, folgt die Anzeige, dass Block „Y" nicht als häufig zu löschen angesehen wird. Daher rückt das Verfahren von Schritt 632 zu Schritt 636 vor, in dem Block „Y" in die Gruppe der am wenigsten häufig gelöschten Blöcke und wirksam in die Tabelle für die am wenigsten häufig gelöschten Blöcke bewegt wird, d. h. ein Eingang entsprechend Block „Y" wird zu der Tabelle für die am wenigsten häufig gelöschten Blöcke addiert. Es versteht sich, dass bei einer Ausführungsform das Bewegen von Block „Y" in die Gruppe der am wenigsten häufig gelöschten Blöcke das Umsortieren von im wesentlich sämtlichen Blockreferenzen in der Tabelle für die am wenigsten häufig gelöschten Blöcke unter Verwendung der Löschungszählung eines jeden Blockes umfassen kann. Nachdem Block „Y" wirksam in die Tabelle für die am wenigsten häufig gelöschten Blöcke bewegt worden ist, ist der Prozess des Austauschens oder Aktualisierens der Blöcke beendet.
  • Es wird nunmehr wieder auf Schritt 632 Bezug genommen. Wenn die Ermittlung in Schritt 632 ergibt, dass die Löschungszählung von Block „Y" die niedrigste Löschungszählung, die zur Tabelle für die am häufigsten gelöschten Blöcke gehört, übersteigt, erfolgt die Anzeige, dass Block „Y" in die Gruppe der am häufigsten gelöschten Blöcke und wirksam in die Tabelle für die am häufigsten gelöschten Blöcke bewegt werden sollte. Damit für die Bezugnahme von „Y" in der Tabelle für die am häufigsten gelöschten Blöcke Raum vorhanden ist, muss ein Block, d. h. der Block mit der niedrigsten Löschungszählung, auf den in der Tabelle für die am häufigsten gelöschten Blöcke Bezug genommen wurde, wirksam aus der Tabelle für die am häufigsten gelöschten Blöcke entfernt werden. In Schritt 640 wird der Block mit der niedrigsten Löschungszählung, auf den in der Tabelle für die am häufigsten gelöschten Blöcke Bezug genommen wurde, in die Gruppe der am wenigsten häufig gelöschten Blöcke und wirksam in die Tabelle für die am wenigsten häufig gelöschten Blöcke bewegt. Das Bewegen des Blockes in die Gruppe der am wenigsten häufig gelöschten Blöcke kann das Resortieren der Blockreferenzen in der Tabelle für die am wenigsten häufig gelöschten Blöcke in Abhängigkeit von der Löschungszählung eines jeden Blockes umfassen.
  • Nachdem der Block mit der niedrigsten Löschungszählung in der Tabelle für die am häufigsten gelöschten Blöcke auf wirksame Weise aus der Tabelle für die am häufigsten gelöschten Blöcke entfernt worden ist, wird der Block „Y" in Schritt 644 wirksam in die Tabelle für die am häufigsten gelöschten Blöcke bewegt. Bei einer Ausführungsform kann das Bewegen des Blockes „Y" in die Gruppe der am häufigsten gelöschten Blöcke und somit in die Tabelle für die am häufigsten gelöschten Blöcke das Resortieren der am häufigsten gelöschten Blöcke gemäß der Löschungszählung eines jeden Blockes einschließlich von Block „Y" umfassen. Wenn Block „Y" wirksam in die Tabelle für die am häufigsten gelöschten Blöcke bewegt worden ist, ist der Prozess des Austauschens oder Aktualisierens der Blöcke beendet.
  • Generell wird die Funktionalität für die Aufrechterhaltung von Tabellen, die Handhabung von Initialisierungsanforderungen und die Durchführung der Verschleißnivellierung, d. h. für die Antwort auf Anforderungen zum Austauschen oder Aktualisieren von Blöcken, in Software, d. h. als Programmcodevorrichtungen, oder als Firmware für ein Wirtsystem zur Verfügung gestellt. Eine Ausführungsform einer geeigneten Systemarchitektur, die zur Software oder zur für ein Wirtsystem vorgesehenen Firmware gehört und eine Verschleißnivellierung ermöglicht, ist in 7 gezeigt. Eine Systemarchitektur 700 umfasst generell eine Vielzahl von Modulen, die einen Anwendungsschnittstellenmodul 704, einen Systemmanagermodul 708, einen Datenmanagermodul 712, einen Datenintegritätsmanager 716 und einen Vorrichtungsmanager- und Schnittstellenmodul 720 aufweisen können, jedoch hierauf nicht beschränkt sind. Generell kann die Systemarchitektur 700 durch Verwendung von Softwarecodevorrichtungen oder Firmware verwirklicht werden, auf die ein Prozessor, d. h. der Prozessor 108 in 1a, zugreifen kann.
  • Generell kann der Anwendungsschnittstellenmodul 704 so angeordnet sein, dass er mit dem Wirt, dem Betriebssystem oder dem Nutzer direkt kommuniziert. Der Anwendungsschnittstellenmodul 704 steht ferner in Verbindung mit dem Systemmanagermodul 708 und dem Datenmanagermodul 712. Wenn der Nutzer einen Flash-Speicher auslesen, beschreiben oder formatieren will, sendet er Anforderungen an das Betriebssystem, wobei die Anforderungen zum Anwendungsschnittstellenmodul 704 geleitet werden. Der Anwendungsschnittstellenmodul 704 leitet die Anforderungen in Abhängigkeit von den selben an den Systemmanagermodul 708 oder den Datenmanagermodul 712.
  • Der Systemmanagermodul 708 besitzt einen Systeminitialisierungsuntermodul 724, einen Löschungszählungsblockmanagementuntermodul 726 und einen Strommanagementblockuntermodul 730. Der Systeminitialisierungsuntermodul 724 ist generell so angeordnet, dass er die Bearbeitung einer Initialisierungsanforderung ermöglicht, und steht typischerweise mit dem Löschungszählungsblockmanagementuntermodul 726 in Verbindung. Bei einer Ausführungsform ermöglicht der Systeminitialisierungsuntermodul 724 eine Aktualisierung der Löschungszählungen von Blöcken und ist im wesentlichen verantwortlich für die Erzeugung einer Tabelle für die am wenigsten häufig gelöschten Blöcke und einer Tabelle für die am häufigsten gelöschten Blöcke.
  • Der Löschungszählungsblockmanagementuntermodul 726 besitzt Funktionalität zur Speicherung der Löschungszählungen von Blöcken und Funktionalität zur Berechung und Aktualisierung einer durchschnittlichen Löschungszählung unter Verwendung von individuellen Löschungszählungen. Mit anderen Worten, der Löschungszählungsblockmanagementuntermodul 726 ermöglicht auf wirksame Weise die Aufrechterhaltung einer durchschnittlichen Löschungszählung. Ferner synchronisiert bei einer Ausführungsform der Löschungszählungsblockmanagementuntermodul 726 im wesentlichen die Löschungszählung von im wesentlichen sämtlichen Blöcken in einem Löschungszählungsblock während des Einschaltens eines Gesamtsystems. Während der Löschungszählungsblockmanagementuntermodul 726 so angeordnet sein kann, dass er die Speicherung einer durch schnittlichen Löschungszählung in einem Löschungszählungsblock bewirkt, versteht es sich, dass stattdessen der Strommanagementblockuntermodul 730 dazu verwendet werden kann, um die Speicherung der durchschnittlichen Löschungszählung zu ermöglichen.
  • Zusätzlich dazu, dass er in Verbindung mit dem Anwendungsschnittstellenmodul 704 steht, steht der Systemmanagermodul 708 auch in Verbindung mit dem Datenmanagermodul 712 sowie mit dem Vorrichtungsmanager- und Schnittstellenmodul 720. Der Datenmanagermodul 712, der sowohl mit dem Systemmanagermodul 708 als auch mit dem Anwendungsschnittstellenmodul 704 kommuniziert, kann Funktionalität besitzen, um für ein Seiten- oder Blockmapping zu sorgen. Der Datenmanagermodul 712 kann auch Funktionalität aufweisen, die mit dem Betriebssystem und Datei-System-Schnittstellenschichten assoziiert ist.
  • Der Vorrichtungsmanager- und Schnittstellenmodul 720, der mit dem Systemmanagermodul 708, dem Datenmanager 712 und dem Datenintegritätsmanager 716 in Verbindung steht, sieht typischerweise eine Flash-Speicher-Schnittstelle vor und besitzt Funktionalität, die mit Hardwareabstraktionen assoziiert ist, d. h. eine I/O-Schnittstelle. Der Datenintegritätsmanagermodul 716 stellt neben anderen Funktionen eine ECC-Handhabung zur Verfügung.
  • Obwohl nur einige Ausführungsformen der vorliegenden Erfindung beschrieben wurden, versteht es sich, dass die vorliegende Erfindung auch in vielen anderen speziellen Ausführungsformen verwirklicht werden kann, ohne den Umfang der vorliegenden Erfindung, der durch die Patentansprüche definiert ist, zu verlassen. Beispielsweise können anstelle der Übertragung von Blöcken auf eine Tabelle für die am häufigsten gelöschten Blöcke und eine Tabelle für die am wenigsten häufig gelöschten Blöcke auf der Basis eines Vergleiches eines jeden Blockes mit einer durchschnittlichen Löschungszählung stattdessen Blöcke auf eine Tabelle für am häufigsten gelöschte Blöcke und eine Tabelle für am wenigsten häufig gelöschte Blöcke auf der Basis einer im wesentlichen absoluten Bestimmung, welche Blöcke die höchsten Löschungszählungen und welche Blöcke die niedrigsten Löschungszählungen besitzen, übertragen werden. Mit anderen Worten, anstatt einzelne Blocklöschungszählungen mit einer durchschnittlichen Löschungszählung zu vergleichen, können Blocklöschungszählungen wirksam miteinander verglichen werden, um eine geeignete Tabelle zu bestimmen, in die ein Block einzusetzen ist.
  • Eine Tabelle für am wenigsten häufig gelöschte Blöcke wurde generell als Haltereferenzen für Blöcke mit einer relativ niedrigen Löschungszählung, wie Ersatzblöcke, beschrieben. Ersatzblöcke werden durch die Verwendung einer Blockmappingtabelle wirksam einer Verwendung zugeführt, so dass im wesentlichen jedes Mal dann, wenn ein Ersatzblock benötigt wird, der Block mit der niedrigsten Löschungszählung, auf den in der Tabelle für die am wenigsten häufig gelöschten Blöcke Bezug genommen wird, zur Verwendung vorgesehen wird. Mit anderen Worten, wenn ein in einer Blockmappingtabelle identifizierter Block ausgetauscht werden soll, wird eine Referenz auf den Block mit der niedrigsten Löschungszählung in der Gruppe der am wenigsten häufig gelöschten Blöcke in die Blockmappingtabelle bewegt. Es versteht sich jedoch, dass im wesentlichen jeder Block generell aus der Gruppe der am wenigsten häufig gelöschten Blöcke während eines Blockaustausch- oder Aktualisierungsprozesses genommen werden kann. Das Auswählen von im wesentlichen jedem Block aus den am wenigsten häufig gelöschten Blöcken unter Verwendung der Tabelle für die am wenigsten häufig gelöschten Blöcke zur Bewegung in die Blockmappingtabelle kann den mit einem Gesamtsystem assoziierten Overhead reduzieren, da die Blöcke in der Tabelle für die am wenigsten häufig gelöschten Blöcke nicht notwendigerweise sortiert werden müssen.
  • Durch das Identifizieren und Bearbeiten von statischen Blöcken wird generell die Fähigkeit erhöht, dass Blöcke in einem Gesamtspeichersystem gleichmäßig verschlissen werden können. Bei einer Ausführungsform werden jedoch statische Blöcke nicht notwendigerweise identifiziert und bearbeitet. Wenn beispielsweise eine relativ niedrige Zahl von statischen Blöcken in einem System antizipiert wird, kann die Identifizierung und Bearbeitung von statischen Blöcken im wesentlichen eliminiert werden, ohne den Umfang der vorliegenden Erfindung, wie in den Patentansprüchen definiert ist, zu verlassen.
  • Während beschrieben wurde, dass nichtflüchtige Speichersysteme durch assoziierte Speichersteuereinheiten oder unter Verwendung von Software oder Firmware, die zu einem Wirtsystem gehören, gesteuert werden, versteht es sich, dass Verschleißnivellierungsprozesse, die ein Löschungszählungsmanagement beinhalten, auch bei nichtflüchtigen Speichersystemen Anwendung finden können, die in Verbindung mit Steuereinheiten stehen, die im wesentlichen extern für die nichtflüchtigen Speichersysteme sind. Geeignete Speichersysteme, die die Steuereinheiten verwenden, sind PC-Karten, Compact-Flash-Karten, Multimediakarten, Sicherheitsdigitalkarten und eingebettete Chipsätze, die Flash-Speicher und eine Flash-Speichersteuereinheit umfassen, sind jedoch hierauf nicht beschränkt. Speichersysteme, die durch die Verwendung von Software oder Firmware, mit denen ein Wirtsystem beschickt ist, gesteuert werden, umfassen eingebettete Speichervorrichtungen. Bei einer Ausführungsform können Speichersysteme, die die vorstehend beschriebenen Löschungsmanagementtechniken verwenden können und keine Steuereinheiten nutzen, die zu den Speichersystemen gehören, Steuereinheiten verwenden, die zu einem Wirt, d. h. einem Wirtcomputersystem, gehören, um eine Verschleißnivellierung zu realisieren. Mit anderen Worten, ein Wirt kann direkt einen Speicher adressieren und managen, in dem eine Verschleißnivellierung durchgeführt werden soll, und zwar durch die Verwendung einer Steuereinheit für den Wirt.
  • Generell können die Schritte der verschiedenen Verfahren und Prozesse zur Verschleißnivellierung stark variieren. Es können Schritte hinzugefügt werden, entfernt werden, verändert werden und neu befohlen werden, ohne den Umfang der vorliegenden Erfindung, der durch die Patentansprüche definiert ist, zu verlassen. Beispielsweise muss das Bearbeiten von statischen Blöcken nicht unbedingt in der Bearbeitung einer Initialisierungsanforderung eingeschlossen sein. Auch kann bei einer Ausführungsform die Bestimmung, ob auf wirksame Weise ein neu gelöschter Block in einer Tabelle für am häufigsten gelöschte Blöcke angeordnet wird, auf anderen Kriterien basieren als darauf, ob der gelöschte Block eine Löschungszählung besitzt, die größer ist als die niedrigste Löschungszählung, die zur Tabelle für die am häufigsten gelöschten Blöcke gehört. Beispielsweise kann eine derartige Bestimmung darauf basieren, ob die Löschungszählung des gelöschten Blockes eine durchschnittliche Löschungszählung von im wesentlichen sämtlichen Blöcken, die zur Tabelle für die am häufigsten gelöschten Blöcke gehören, um einen bestimmten Prozentsatz, d. h. etwa 20%, übersteigt. Wenn die Löschungszählung des gelöschten Blockes die durchschnittliche Löschungszählung um mehr als den bestimmten Prozentsatz übersteigt, kann der Block mit der niedrigsten Löschungszählung, auf den in der Tabelle für die am häufigsten gelöschten Blöcke Bezug genommen wird, in eine Tabelle für am wenigsten häufig gelöschte Blöcke bewegt werden, während der gelöschte Block in die Tabelle für am häufigsten gelöschte Blöcke bewegt wird. Daher sind die vorliegenden Ausführungsbeispiele lediglich beispielhafter Art und nicht einschränkend, und ist die Erfindung nicht auf die hier wiedergegebenen Einzelheiten beschränkt, sondern kann innerhalb des Umfanges der beigefügten Patentansprüche modifiziert werden.

Claims (10)

  1. Verfahren zum Verarbeiten von Elementen (11), die in einem nichtflüchtigen Speicher (124) eines Speichersystems (100, 120) vorhanden sind, mit den folgenden Schritten: Erhalten (308) von Löschungszählungen, die zu einer Vielzahl von Elementen gehören, wobei jedes Element, das in der Vielzahl der Elemente enthalten ist, eine zugehörige Löschungszählung (214) aufweist und die zugehörige Löschungszählung eines jeden Elementes die Anzahl von Malen anzeigt, die das Element gelöscht worden ist, und wobei die Vielzahl der Elemente gelöschte Elemente und Daten enthaltende Elemente umfasst; Definieren (328) eines ersten Satzes (510) von gelöschten Elementen durch Auswählen von gelöschten Elementen mit den höchsten zugehörigen Löschungszählungen; Speichern der zum ersten Satz gehörenden Löschungszählungen in einer Speicherkomponente (214) innerhalb einer Tabelle, wobei die Speicherkomponente zum Speichersystem gehört; und Sortieren der gelöschten Elemente im ersten Satz der gelöschten Elemente gemäß der Löschungszählung, die zu jedem gelöschten Element im ersten Satz gehört; dadurch gekennzeichnet, dass das Verfahren des weiteren die folgenden Schritte umfasst: Identifizieren eines ersten Elementes (522), das im ersten Satz der gelöschten Elemente enthalten ist und die niedrigste Löschungszählung besitzt, die zum ersten Satz von gelöschten Elementen gehört; Dissoziieren des ersten Elementes vom ersten Satz der gelöschten Elemente; und Assoziieren eines zweiten Elementes (514) aus der Vielzahl der Elemente mit dem ersten Satz von gelöschten Elementen, wobei die Löschungszählung, die zum zweiten Element gehört, höher ist als die Löschungszählung, die zum ersten Element gehört.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Schritt des Definierens eines ersten Satzes von gelöschten Elementen umfasst: das Vergleichen der Löschungszählungen, die zu der Vielzahl der Elemente gehören; und das Identifizieren einer vorgegebenen Anzahl von gelöschten Elementen mit den höchsten zugehörigen Löschungszählungen.
  3. Verfahren nach Anspruch 1, des weiteren gekennzeichnet durch: das Erhalten (306) einer durchschnittlichen Löschungszählung, die zur Vielzahl der Elemente gehört; und dass der Schritt des Definierens eines ersten Satzes von gelöschten Elementen umfasst: das Vergleichen der Löschungszählungen, die zur Vielzahl der gelöschten Elemente gehören, mit der durchschnittlichen Löschungszählung; und das Identifizieren bis zu einer vorgegebenen Anzahl von gelöschten Elementen mit zugehörigen Löschungszählungen, die um mehr als einen vorgegebenen Grenzwert größer sind als die durchschnittliche Löschungszählung.
  4. Verfahren nach Anspruch 1, das des weiteren umfasst: das Berechnen einer durchschnittlichen Löschungszählung, die zum ersten Satz der gelöschten Elemente gehört; das Bestimmen, ob die Löschungszählung, die zu einem zweiten gelöschten Element, das in der Vielzahl der Elemente enthalten ist, gehört, größer ist als die durchschnittliche Löschungszählung; das Dissoziieren des ersten Elementes vom ersten Satz der gelöschten Elemente in Abhängigkeit von der Bestimmung, dass die Löschungszählung, die zum zweiten Element gehört, größer ist als die durchschnittliche Löschungszählung; und das Assoziieren des zweiten Elementes mit dem ersten Satz von gelöschten Elementen in Abhängigkeit von der Bestimmung, dass die Löschungszählung, die zum zweiten Element gehört, größer ist als die durchschnittliche Löschungszählung.
  5. Verfahren nach einem der Ansprüche 1 bis 4, bei dem die Vielzahl der Elemente von Blöcken gebildet ist und der erste Satz der gelöschten Elemente ein Satz von am häufigsten gelöschten Blöcken ist.
  6. Speichermanagementsystem zum Verarbeiten von Elementen, die in einem nichtflüchtigen Speicher (124) eines Speichersystems (100, 120) enthalten sind, wobei das Speichermanagementsystem umfasst: Einrichtungen (726) zum Erhalten von Löschungszählungen, die zu einer Vielzahl von Elementen gehören, wobei jedes Element, das in der Vielzahl der Elemente enthalten ist, eine zugehörige Löschungszählung (214) aufweist, wobei die zugehörige Löschungszählung eines jeden Elementes die Anzahl von Malen anzeigt, die das Element gelöscht worden ist, und wobei die Vielzahl der Elemente gelöschte Elemente und Daten enthaltende Elemente umfasst; Einrichtungen (726) zum Definieren eines ersten Satzes (510) von gelöschten Elementen durch Auswählen von gelöschten Elementen mit den höchsten zugehörigen Löschungszählungen relativ zu den Löschungszählungen, die zu der Vielzahl der Elemente gehören; Einrichtungen (726) zum Speichern der Löschungszählungen, die zum ersten Satz gehören, als Teil einer Datenstruktur (470) in einer Speicherkomponente, wobei die Speicherkomponente zum Speichersystem gehört; und Einrichtungen (726) zum Sortieren der gelöschten Elemente im ersten Satz von gelöschten Elementen in Abhängigkeit von der Löschungszählung, die zu jedem gelöschten Element gehört; gekennzeichnet durch Einrichtungen (726) zum Identifizieren eines ersten gelöschten Elementes (522) innerhalb des ersten Satzes von gelöschten Elementen unter Verwendung der sortierten Eingänge, wobei das erste gelöschte Element die niedrigste Löschungszählung besitzt, die zum ersten Satz von gelöschten Elementen gehört; und Einrichtungen (726) zum Entfernen des ersten gelöschten Elementes vom ersten Satz der gelöschten Elemente in Abhängigkeit von einer zugehörigen Löschungszählung eines zweiten Elementes, die die zugehörige Löschungszählung des identifizierten ersten Elementes übersteigt, und zum nachfolgenden Addieren des zweiten Elementes zum ersten Satz der gelöschten Elemente.
  7. Speichermanagementsystem nach Anspruch 6, des weiteren dadurch gekennzeichnet, dass die Einrichtungen zum Definieren eines ersten Satzes von gelöschten Elementen umfassen: Einrichtungen (726) zum Vergleichen der Löschungszählungen, die zur Vielzahl der Elemente gehören; und Einrichtungen (726) zum Identifizieren einer vorgegebenen Anzahl von gelöschten Elementen mit den höchsten zugehörigen Löschungszählungen.
  8. Speichermanagementsystem nach Annspruch 6, des weiteren gekennzeichnet durch Einrichtungen (726) zum Erhalten einer durchschnittlichen Löschungszählung, die zur Vielzahl der Elemente gehört, wobei die Einrichtungen zum Definieren eines ersten Satzes von gelöschten Elementen Einrichtungen zum Vergleichen der Löschungszählungen, die zu der Vielzahl der gelöschten Elemente gehören, mit der durchschnittlichen Löschungszählung und Einrichtungen zum Identifizieren bis zu einer vorgegebenen Anzahl von gelöschten Elementen, die zugehörige Löschungszählungen besitzen, die um mehr als ein vorgegebener Grenzwert größer sind als die durchschnittliche Löschungszählung, umfassen.
  9. Speichersystem, das ein Speichermanagementsystem nach Anspruch 6 aufweist und des weiteren umfasst: einen nichtflüchtigen Speicher (124), der die Speicherelemente aufweist; und eine Systemspeicherkomponente (454) zum Speichern der Löschungszählungen der Speicherelemente.
  10. Speichermanagementsystem nach Anspruch 6, bei dem jede der Einrichtungen zum Erhalten, zum Definieren, zum Speichern, zum Sortieren, zum Identifizieren und zum Entfernen Softwarecodevorrichtungen zum Durchführen dieser Funktionen aufweist und das System des weiteren umfasst: einen Prozessor (108; 208) zum Ausführen der Codevorrichtungen; und einen Softwarespeicher zum Speichern der Codevorrichtungen.
DE60319407T 2002-10-28 2003-09-10 Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems Expired - Fee Related DE60319407T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US281670 2002-10-28
US10/281,670 US6973531B1 (en) 2002-10-28 2002-10-28 Tracking the most frequently erased blocks in non-volatile memory systems
PCT/US2003/028502 WO2004040585A1 (en) 2002-10-28 2003-09-10 Tracking the most frequently erased blocks in non-volatile storage systems

Publications (2)

Publication Number Publication Date
DE60319407D1 DE60319407D1 (de) 2008-04-10
DE60319407T2 true DE60319407T2 (de) 2009-03-19

Family

ID=32228770

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60319407T Expired - Fee Related DE60319407T2 (de) 2002-10-28 2003-09-10 Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems

Country Status (10)

Country Link
US (1) US6973531B1 (de)
EP (1) EP1559113B1 (de)
JP (2) JP2006504221A (de)
KR (1) KR20050059314A (de)
CN (1) CN1701390A (de)
AT (1) ATE387714T1 (de)
AU (1) AU2003270545A1 (de)
DE (1) DE60319407T2 (de)
TW (1) TWI267866B (de)
WO (1) WO2004040585A1 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112010002663B4 (de) * 2009-07-29 2015-01-22 SK Hynix Inc. Speichermanagementsysteme, Verfahren zur Verbesserung der Schreib-Lösch-Ausdauerlebenszeit von Speichervorrichtungen und Computerprogrammprodukt
DE102021116828A1 (de) 2021-06-30 2023-01-05 Harman Becker Automotive Systems Gmbh Verfahren und Vorrichtung zur Überwachung einer Nutzlast eines Speichermediums

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004040586A1 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Automated wear leveling in non-volatile storage systems
US7328301B2 (en) * 2003-04-07 2008-02-05 Intel Corporation Dynamically mapping block-alterable memories
US7139863B1 (en) * 2003-09-26 2006-11-21 Storage Technology Corporation Method and system for improving usable life of memory devices using vector processing
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US7315917B2 (en) 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US7224604B2 (en) * 2005-03-14 2007-05-29 Sandisk Il Ltd. Method of achieving wear leveling in flash memory using relative grades
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7640389B2 (en) * 2006-02-28 2009-12-29 Freescale Semiconductor, Inc. Non-volatile memory having a multiple block erase mode and method therefor
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
JP5171840B2 (ja) * 2006-11-24 2013-03-27 サンドフォース インコーポレイテッド メモリの寿命を縮める動作を遅延させる方法及びストレージシステム
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
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
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US7904764B2 (en) * 2006-11-24 2011-03-08 Sandforce, Inc. Memory lifetime gauging system, method and computer program product
KR101490327B1 (ko) 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
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
US8356152B2 (en) * 2006-12-27 2013-01-15 Intel Corporation Initiative wear leveling for non-volatile memory
TW200828320A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Method for performing static wear leveling on flash memory
CN101211314B (zh) * 2006-12-31 2010-07-14 创惟科技股份有限公司 闪存资料读写寿命提升方法
CN100504814C (zh) 2007-01-17 2009-06-24 忆正存储技术(深圳)有限公司 闪存的区块管理方法
US7731365B2 (en) * 2007-03-19 2010-06-08 Johnson&Johnson Vision Care, Inc. Method of fitting contact lenses
KR20080085574A (ko) * 2007-03-20 2008-09-24 삼성전자주식회사 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
US8041883B2 (en) * 2007-05-09 2011-10-18 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US7882301B2 (en) * 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
US7991942B2 (en) * 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US7743203B2 (en) * 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
US20080294814A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Flash Memory System with Management of Housekeeping Operations
US20080294813A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Managing Housekeeping Operations in Flash Memory
KR100857761B1 (ko) * 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
CN100538662C (zh) * 2007-07-05 2009-09-09 炬力集成电路设计有限公司 一种基于局部采样的存储器的磨损平衡方法
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
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
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
KR101401560B1 (ko) * 2007-12-13 2014-06-03 삼성전자주식회사 반도체 메모리 시스템 및 그것의 마모도 관리 방법
US8656083B2 (en) * 2007-12-21 2014-02-18 Spansion Llc Frequency distributed flash memory allocation based on free page tables
JP4762261B2 (ja) * 2008-03-12 2011-08-31 株式会社東芝 メモリシステム
JP2009266349A (ja) 2008-04-28 2009-11-12 Toshiba Corp 不揮発性半導体記憶装置
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US20100017588A1 (en) * 2008-07-15 2010-01-21 Radoslav Danilak System, method, and computer program product for providing an extended capability to a system
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
KR20100013485A (ko) 2008-07-31 2010-02-10 삼성전자주식회사 메모리 장치 및 웨어 레벨링 방법
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
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
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
US8094500B2 (en) 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8291152B2 (en) 2009-01-07 2012-10-16 Silicon Motion, Inc. Method for operating non-volatile memory and data storage system using the same
TWI409819B (zh) 2009-03-03 2013-09-21 Silicon Motion Inc 平均地使用一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
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
US8671258B2 (en) 2009-03-27 2014-03-11 Lsi Corporation Storage system logical block address de-allocation management
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
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
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
CN101989458B (zh) * 2009-07-31 2013-10-30 慧帝科技(深圳)有限公司 平均地使用一闪存的多个区块的方法、记忆装置及控制器
KR20110024832A (ko) * 2009-09-03 2011-03-09 주식회사 하이닉스반도체 데이터 머지 효율이 향상된 반도체 스토리지 시스템 및 그 제어 방법
KR101086876B1 (ko) * 2009-09-30 2011-11-25 주식회사 하이닉스반도체 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
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
JP2011081561A (ja) * 2009-10-06 2011-04-21 Canon Inc 情報処理装置
TW201120898A (en) * 2009-12-07 2011-06-16 Jmicron Technology Corp Mehtod for wear-leveling and apparatus thereof
US8677054B1 (en) * 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US9170933B2 (en) 2010-06-28 2015-10-27 International Business Machines Corporation Wear-level of cells/pages/sub-pages/blocks of a memory
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
KR20120096212A (ko) * 2011-02-22 2012-08-30 삼성전자주식회사 비휘발성 메모리 장치, 메모리 컨트롤러, 및 이들의 동작 방법
GB2490991B (en) * 2011-05-19 2017-08-30 Ibm Wear leveling
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
KR101989018B1 (ko) * 2012-06-25 2019-06-13 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
US8750045B2 (en) 2012-07-27 2014-06-10 Sandisk Technologies Inc. Experience count dependent program algorithm for flash memory
CN102929794B (zh) * 2012-09-26 2015-12-02 惠州市德赛西威汽车电子股份有限公司 一种eeprom的存储方法
KR20150044753A (ko) * 2013-10-17 2015-04-27 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
TWI517165B (zh) * 2014-03-31 2016-01-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US9875039B2 (en) 2014-09-30 2018-01-23 Sandisk Technologies Llc Method and apparatus for wear-leveling non-volatile memory
US9830087B2 (en) * 2014-11-13 2017-11-28 Micron Technology, Inc. Memory wear leveling
US10338817B2 (en) 2014-12-30 2019-07-02 Sandisk Technologies Llc Systems and methods for storage recovery
US9766819B2 (en) 2014-12-30 2017-09-19 Sandisk Technologies Llc Systems and methods for managing storage endurance
US10101939B2 (en) * 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
HUE056995T2 (hu) * 2016-12-09 2022-04-28 Hoffmann La Roche Legalább egy orvosi mûvelet elvégzésére szolgáló eszköz
US10552145B2 (en) * 2017-12-12 2020-02-04 Cypress Semiconductor Corporation Memory devices, systems, and methods for updating firmware with single memory device
CN111261218B (zh) * 2020-04-27 2020-08-21 深圳市芯天下技术有限公司 多颗Norflash样品同时测试的方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07109717B2 (ja) 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
JP2685173B2 (ja) 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
EP0618535B1 (de) 1989-04-13 1999-08-25 SanDisk Corporation EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
US5222109A (en) 1990-12-28 1993-06-22 Ibm Corporation Endurance management for solid state files
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5438573A (en) 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6125435A (en) 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5860082A (en) 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
US5715193A (en) * 1996-05-23 1998-02-03 Micron Quantum Devices, Inc. Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks
US5956473A (en) * 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
US5832493A (en) 1997-04-24 1998-11-03 Trimble Navigation Limited Flash file management system
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
US6260156B1 (en) 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
JP2002032256A (ja) * 2000-07-19 2002-01-31 Matsushita Electric Ind Co Ltd 端末装置
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112010002663B4 (de) * 2009-07-29 2015-01-22 SK Hynix Inc. Speichermanagementsysteme, Verfahren zur Verbesserung der Schreib-Lösch-Ausdauerlebenszeit von Speichervorrichtungen und Computerprogrammprodukt
DE102021116828A1 (de) 2021-06-30 2023-01-05 Harman Becker Automotive Systems Gmbh Verfahren und Vorrichtung zur Überwachung einer Nutzlast eines Speichermediums

Also Published As

Publication number Publication date
ATE387714T1 (de) 2008-03-15
EP1559113A1 (de) 2005-08-03
US6973531B1 (en) 2005-12-06
AU2003270545A1 (en) 2004-05-25
TWI267866B (en) 2006-12-01
WO2004040585A1 (en) 2004-05-13
TW200418038A (en) 2004-09-16
CN1701390A (zh) 2005-11-23
JP2010015591A (ja) 2010-01-21
JP2006504221A (ja) 2006-02-02
EP1559113B1 (de) 2008-02-27
DE60319407D1 (de) 2008-04-10
KR20050059314A (ko) 2005-06-17

Similar Documents

Publication Publication Date Title
DE60319407T2 (de) Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems
DE60319563T2 (de) Verwaltung der anzahl von löschungen in einem nicht-fluchtigem speicher
DE60317551T2 (de) Aufrechterhaltung gleichförmiger löschhäufigkeit in einem nichtflüchtigen speichersystem
DE60316171T2 (de) Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem
DE112006004187B4 (de) Verfahren, nicht-flüchtige Speichervorrichtung und Computersystem zum initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher
DE69233228T2 (de) Datenverwaltungssystem für Halbleiterspeicher mit beschränkter Programmierung und I.C. Speicherkarte mit solchem Datenverwaltungssystem
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE69635962T2 (de) Flash-Speicher-Massenspeichersystem und Verfahren dafür
DE112011102160B4 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE112014004761T5 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE102005031525A1 (de) Verfahren und System zur Steuerung eines Flashspeichers und Speichersystem
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE102006003261A1 (de) Speichersystem und Verfahren zur Datenzusammenführung
DE102010018765A1 (de) Speichervorrichtung und Speicherverfahren
DE102006005877A1 (de) Adresszuordnungstabelle und Verfahren zum Erzeugen einer Adresszuordnungstabelle
DE102009048179A1 (de) Prozess und Verfahren für eine Löschstrategie in Festkörperplatten
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112020002792T5 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112020005092T5 (de) Konstruktion einer blockvorrichtung
DE112022000468T5 (de) Unterschiedliche schreibpriorisierung in zns-vorrichtungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee