DE102007006307A1 - Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, Aufzeichnungsmedium und nichtflüchtigen Speicherelement - Google Patents

Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, Aufzeichnungsmedium und nichtflüchtigen Speicherelement Download PDF

Info

Publication number
DE102007006307A1
DE102007006307A1 DE102007006307A DE102007006307A DE102007006307A1 DE 102007006307 A1 DE102007006307 A1 DE 102007006307A1 DE 102007006307 A DE102007006307 A DE 102007006307A DE 102007006307 A DE102007006307 A DE 102007006307A DE 102007006307 A1 DE102007006307 A1 DE 102007006307A1
Authority
DE
Germany
Prior art keywords
block
data
log
reusable
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102007006307A
Other languages
English (en)
Other versions
DE102007006307A8 (de
Inventor
Jung-Been Hwaseong Im
Hye-Young Kim
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102007006307A1 publication Critical patent/DE102007006307A1/de
Publication of DE102007006307A8 publication Critical patent/DE102007006307A8/de
Withdrawn 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
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/7205Cleaning, compaction, garbage collection, erase control

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)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

Ein Verfahren zum Betreiben eines nichtflüchtigen Speicherelements beinhaltet die Schritte: Vereinigen erster Daten, die in einem ersten Log-Block des nichtflüchtigen Speicherelements gespeichert sind, mit zweiten Daten, die in einem ersten Datenblock des nichtflüchtigen Speicherelements gespeichert sind, indem die ersten Daten und die zweiten Daten in einem zweiten Datenblock des nichtflüchtigen Speicherelements aufgezeichnet werden; Bestimmen einer Anzahl sauberer Seiten in dem ersten Log-Block; und Bestimmen, ob die Anzahl sauberer Seiten einen Referenzwert übersteigt.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, ein Aufzeichnungsmedium und ein nichtflüchtiges Speicherelement.
  • Flashspeicherelemente sind nichtflüchtige Speicherelemente, in die Daten elektrisch geschrieben oder aus denen Daten elektrisch gelöscht werden können. Auf Flashspeichern basierende Speicherelemente verbrauchen typischerweise weniger Energie und/oder sind kleiner als äquivalente Magnetplattenspeicherelemente. Aus diesem Grund ersetzen auf Flashspeichern basierende Speicherelemente Magnetplattenspeicherelemente in vielen existierenden und neuen Anwendungen.
  • Flashspeicherelemente erlauben in der Regel nicht, Daten zu überschreiben, wie dies bei Magnetplattenspeicherelementen getan werden kann. Folglich werden zum Ersetzen von Daten, die in einem Flashspeicherelement gespeichert sind, die gespeicherten Daten zunächst gelöscht, und anschließend werden die neuen Daten in die gelöschten Speicherzellen programmiert. Die „Lösch"-Operation kann die Speicherzelle des Flashspeicherelements in ihren Anfangszustand zurückführen. Somit weisen Flashspeicherelemente im Allgemeinen drei Betriebsmodi auf: einen Programmier- oder Schreibmodus, einen Löschmodus und einen Lesemodus. Vorliegend wird eine gelöschte Flashspeicherzelle oder ein gelöschter Flashspeicherblock auch als eine „saubere" Zelle bzw. ein „sauberer" Block bezeichnet.
  • Die Löschoperation dauert typischerweise länger als die Programmier- oder Schreiboperation. Weiterhin wird die Löschoperation typischerweise in viel größeren Blockeinheiten durchgeführt als die Programmier- oder Leseoperationen. Im Ergebnis bedeutet dies, dass Teile des Flashspeichers, für die ein Löschen nicht angefordert wurde, während einer Blocklöschoperation gelöscht werden können. Wenn dies geschieht, müssen die Bereiche des Blocks, für die eine Leseoperation nicht angefordert worden war, möglicherweise wiederhergestellt werden, indem die Daten in einen anderen Block programmiert werden.
  • Häufige Löschoperationen können zu einer unnötigen Zunahme eines „Löschzählwerts" eines Flashspeicherelements führen. Der „Löschzählwert" ist ein Parameter, der die Lebensdauer eines Flashspeicherelements signifikant beeinflussen kann. Wenn der Löschzahlwert und ein Programmierzählwert eines Flashspeicherelements zunehmen, nimmt die erwartete Lebensdauer des Elements (die Zeit, während der der Flashspeicher ordnungsgemäß arbeitet) ab.
  • 1 ist ein Blockschaltbild zur Darstellung des Speicherzellenbereichs eines herkömmlichen Flashspeicherelements. Wie in 1 gezeigt, kann der Speicherzellenbereich des Flashspeicherelements in eine Mehrzahl von logischen Gebieten bzw. Bereichen unterteilt sein, die ein Abbildungsgebiet, ein Log-Blockgebiet, ein Datenblockgebiet, ein löschbares Blockgebiet und ein freies Blockgebiet beinhalten. Jedes Gebiet kann ein oder mehrere Speicherblöcke beinhalten. Vorliegend werden die Speicherblöcke in dem Log-Blockgebiet als „Log-Blöcke", die Speicherblöcke in den Datenblockgebiet als „Datenblöcke", die Speicherblöcke in dem löschbaren Blockgebiet als „löschbare Blöcke" und die Speicherblöcke in dem freien Blockgebiet als „freie Blöcke" bezeichnet.
  • Ein Datenblock speichert normale Daten. Ein Log-Block wird dazu verwendet, einen Teil oder die Gesamtheit eines Datenblocks zu aktualisieren, indem der aktualisierte Inhalt in dem Log-Block aufgezeichnet wird. Dementsprechend entspricht ein Log-Block wenigstens einem Datenblock und speichert aktualisierte Seiten des entsprechenden Datenblocks oder der entsprechenden Datenblöcke. Auf Seiten, die in dem Log-Block gespeichert sind, wird gegenüber entsprechenden Seiten, die in dem Datenblock gespeichert sind, bevorzugt zugegriffen. Daten in einem Log-Block können periodisch mit Daten in dem entsprechenden Datenblock oder den entsprechenden Datenblöcken vereinigt (merge) werden.
  • 2 ist ein Zustandsdiagramm zur Darstellung der Zustandsübergänge von Speicherblöcken eines herkömmlichen Flashspeicherelements, wenn Speicherblöcke miteinander vereinigt werden. Die herkömmlichen Zustandsübergänge, die in 2 dargestellt sind, sind in der koreanischen Patentveröffentlichung Nr. 10-2002-0092487 offenbart. Wie in 2 gezeigt, wird beispielsweise ein Log-Block, der einer einfachen Vereinigungsoperation unterzogen wird, zu einem löschbaren Block. Ein löschbarer Block ist ein Block, der gelöscht werden muss, bevor er wieder verwendet werden kann.
  • 3 ist ein schematisches Diagramm zur Darstellung von Log-Blöcken nach einer herkömmlichen einfachen Vereinigung. Wie in 3 gezeigt, können die Log-Blöcke nach herkömmlichen einfachen Vereinigungsoperationen unterschiedliche darin programmierte Datenmenge aufweisen. Insbesondere können einige Log-Blöcke eine beträchtliche Datenmenge speichern, während andere Log-Blöcke nur eine geringe Datenmenge speichern (z.B. eine oder zwei Seiten). Nach der einfachen Vereinigung werden die Log-Blöcke vollständig verworfen und einem Abfallpool zugeordnet (d.h. die Log-Blöcke werden als löschbare Blöcke definiert). Die löschbaren Blöcke können anschließend gelöscht werden, wonach sie zu freien Blöcken werden, wie in 2 gezeigt.
  • Der Erfindung liegt das technische Problem zugrunde, ein Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, ein Aufzeichnungsmedium und ein nichtflüchtiges Speicherelement anzugeben, die die Lebensdauer von Flashspeichern mit begrenztem Programmier-/Löschzählwert verlängern und die Leistungsfähigkeit verbessern.
  • Die Erfindung löst dieses Problem durch ein Verfahren zum Betreiben eines nichtflüchtigen Speicherelements mit den Merkmalen des Patentanspruchs 1, des Patentanspruchs 12 oder des Patentanspruchs 18, ein Aufzeichnungsmedium mit dem Merkmalen des Patentanspruchs 9 und ein nichtflüchtiges Speicherelement mit den Merkmalen des Patentanspruchs 10 oder des Patentanspruchs 23.
  • Vorteilhafte Ausgestaltungen der Erfindung sind in den Unteransprüchen angegeben, deren Wortlaut hiermit durch Bezugnahme in die Beschreibung aufgenommen wird, um unnötige Textwiederholungen zu vermeiden.
  • Gemäß einiger Ausgestaltungen der vorliegenden Erfindung schafft diese Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, das einen ersten Datenblock, der erste Daten speichert, und einen ersten Log-Block, der eine aktualisierte Version wenigstens einiger der ersten Daten speichert, aufweist. Gemäß dieser Verfahren werden gültige Abschnitte der ersten Daten in dem ersten Datenblock in einen freien Block kopiert, der keine Daten enthält, um einen zweiten Datenblock zu erzeugen. Die aktualisierte Version wenigstens einiger der ersten Daten aus dem ersten Log-Block wird in den zweiten Datenblock kopiert. Der erste Log-Block wird in Abhängigkeit davon, dass wenigstens eine vorbestimmte Bedingung erfüllt ist, als ein Log-Block bestimmt, der wieder verwendbar ist, ohne dass die Daten daraus gelöscht werden. Das nichtflüchtige Speicherelement kann beispielsweise ein Flashspeicherelement umfassen.
  • Bei einigen Ausgestaltungen kann der erste Log-Block als Log-Block bestimmt werden, der wieder verwendbar ist, ohne dass Daten daraus gelöscht werden, indem eine Menge an sauberem (freiem) Speicher in dem ersten Log-Block bestimmt und anschließend die bestimmte Menge an sauberem Speicher mit einem vorbestimmten Referenzwert verglichen wird. Wenn die bestimmte Menge an sauberem Speicher in dem ersten Log-Block den vorbestimmten Referenzwert übertrifft, wird der erste Log-Block als ein Log-Block bestimmt, der wieder verwendbar ist, ohne dass die Daten daraus gelöscht werden. Die Menge an sauberem Speicher kann eine Anzahl sauberer Seiten in dem ersten Log-Block sein. Der erste Log-Block kann als ein wieder verwendbarer Log-Block bestimmt werden, indem beispielsweise ein Identifizier des ersten Log-Blocks (z.B. eine physikalische Blocknummer) und eine Startadresse einer sauberen Seite, die dem ersten Log-Block zugeordnet ist, in einer Wiederverwendungspool-Tabelle aufgezeichnet werden. Bei dem vorbestimmten Referenzwert kann es sich beispielsweise um etwa die Hälfte einer Gesamtseitenzahl in dem ersten Log-Block handeln.
  • Gemäß einigen Ausgestaltungen können die Verfahren weiterhin ein Aufzeichnen einer aktualisierten Version wenigstens einiger von zweiten Daten, die in einem zweiten Datenblock gespeichert sind, in dem wieder verwendbaren Log-Block beinhalten, ohne dass die ersten Daten aus dem wieder verwendbaren Log-Block gelöscht werden. Dies kann beispielsweise dadurch erreicht werden, dass die aktualisierte Version wenigstens einiger der zweiten Daten empfangen wird und dass anschließend bestimmt wird, dass die aktualisierte Version wenigstens einiger der zweiten Daten in einem neuen Log-Block gespeichert werden soll, der kein freier Speicherblock ist. Der wieder verwendbare Log-Block wird dann als der neue Log-Block ausgewählt, und die aktualisierte Version wenigstens einiger von zweiten Daten, die in dem zweiten Datenblock gespeichert sind, wird in dem wieder verwendbaren Log-Block aufgezeichnet.
  • Weitere Ausgestaltungen der vorliegenden Erfindung schaffen Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, die ein Aufzeichnen von ersten Daten in einem ersten Speicherblock des nichtflüchtigen Speicherelements beinhalten, wobei der erste Speicherblock sowohl gelöschte Seiten als auch solche Seiten enthält, die zweite, zuvor aufgezeichnete Daten enthalten, die nicht länger gültig sind. Bei diesen Verfahren kann der erste Speicherblock, bevor die Daten in dem ersten Speicherblock aufgezeichnet werden, in Abhängigkeit von einem Bestimmen, dass eine Anzahl von gelöschten Seiten in dem ersten Speicherblock einen Referenzwert übersteigt, als ein wieder verwendbarer Speicherblock bestimmt werden. Eine erste Adresse des ersten Speicherblocks kann gespeichert werden, die eine erste Seite aus einer Gruppe gelöschter Seiten des ersten Speicherblocks bestimmt.
  • Gemäß weiterer Ausgestaltungen der vorliegenden Erfindung werden Verfahren zum Betreiben eines nichtflüchtigen Speicherelements geschaffen, die ein Vereinigen erster Daten, die in einem ersten Log-Block des nichtflüchtigen Speicherelements gespeichert sind, mit zweiten Daten beinhalten, die in einem ersten Datenblock des nichtflüchtigen Speicherelements gespeichert sind, indem die ersten Daten und die zweiten Daten in einem zweiten Datenblock des nichtflüchtigen Speicherelements aufgezeichnet werden. Dann wird die Anzahl von sauberen Seiten in dem ersten Log-Block bestimmt und mit einem Referenzwert verglichen. Wenn die Anzahl sauberer Seiten den Referenzwert übersteigt, wird der erste Log-Block einem wieder verwendbaren Log-Blockpool zugewiesen (allokiert). Wenn stattdessen die Anzahl sauberer Seiten kleiner oder gleich dem Referenzwert ist, wird der erste Log-Block einem löschbaren Log-Blockpool zugewiesen.
  • Gemäß weiterer Ausgestaltungen der vorliegenden Erfindung werden nichtflüchtige Speicherelemente geschaffen, die einen ersten Speicher beinhalten, in dem ein Programm gespeichert ist, einen zweiten Speicher, der einen Datenblock und einen Log-Block aufweist, in dem Daten zum Aktualisieren des Datenblocks aufgezeichnet sind, und einen Prozessor, der dazu ausgebildet ist, das Programm auszuführen, um den zweiten Speicher zu verwalten. Bei diesen Ausgestaltungen kann der Prozessor dazu ausgebildet sein, gültige Daten in einen ersten Datenblock und gültige Daten in einen ersten Log-Block, der dem ersten Datenblock zugeordnet ist, in einen freien Datenblock, der keine Daten enthält, zu kopieren, um einen zweiten Datenblock zu erzeugen, und auf der Grundlage vorbestimmter Bedingungen den ersten Log-Block nach Löschen der Daten aus dem ersten Log-Block als einen freien Block zu allokieren oder den ersten Log-Block ohne Löschen der Daten aus dem ersten Log-Block als einen zweiten Log-Block zu allokieren. In derartigen Elementen kann der erste Speicher beispielsweise ein Nurlesespeicher und der zweite Speicher ein Flashspeicher sein.
  • Gemäß weiteren Ausgestaltungen der vorliegenden Erfindung werden nichtflüchtige Speicherelemente geschaffen, die einen Speicherzellenbereich aufweisen, der in einer Mehrzahl von logischen Gebieten unterteilt ist, die ein Log-Blockgebiet, ein Datenblockgebiet, ein löschbares Blockgebiet, ein freies Blockgebiet und ein wieder verwendbares Blockgebiet umfassen, wobei die nichtflüchtigen Speicherelemente weiterhin einen Prozessor aufweisen. In diesem Elemente kann das Datenblockgebiet eine Mehrzahl von Datenblöcken beinhalten, die Daten speichern, die in das nichtflüchtige Speicherelement eingegeben werden. Das Log-Blockgebiet kann eine Mehrzahl von Log-Blöcken beinhalten, die Aktualisierungen für die in dem Datenblockgebiet gespeicherten Daten speichern. Das löschbare Blockgebiet kann eine Mehrzahl von löschbaren Blöcken enthalten, die darauf warten, gelöscht zu werden. Das freie Blockgebiet kann eine Mehrzahl von gelöschten Speicherblöcken enthalten. Das wieder verwendbare Blockgebiet kann wenigstens einen ersten Log-Block enthalten, der dem wieder verwendbaren Blockgebiet zugewiesen wurde, ohne einer Löschoperation unterzogen worden zu sein, nachdem aktualisierte Daten in dem ersten Log-Block als Teil einer Vereinigungsoperation in einem anderen Block aufgezeichnet wurden.
  • Vorteilhafte Ausgestaltungen der Erfindungen, wie weiter unten detailliert beschrieben, sowie zum Erleichtern des Verständnisses der Erfindung beschriebene Ausgestaltungen des Standes der Technik sind in den Zeichnungen dargestellt. Es zeigt/zeigen:
  • 1 ein Blockschaltbild zur Darstellung eines Speicherzellengebiets eines herkömmlichen Flashspeicherelements;
  • 2 ein Zustandsdiagramm zur Darstellung von Zustandsübergängen von Speicherblöcken eines herkömmlichen Flashspeicherelements, wenn Speicherblöcke gemäß herkömmlicher Verfahren miteinander vereinigt werden;
  • 3 ein schematisches Diagramm zur Darstellung der Allokierung von Log-Blöcken eines Flashspeicherelements, nachdem herkömmliche einfache Vereinigungsoperationen durchgeführt wurden;
  • 4 ein Blockschaltbild zur Darstellung eines Speicherzellenbereichs eines Flashspeicherelements gemäß einiger Ausgestaltungen der vorliegenden Erfindung;
  • 5 ein schematisches Diagramm zur Darstellung von Datenvereinigungsoperationen, die dazu verwendet werden können, Speicherblöcke gemäß einiger Ausgestaltungen der vorliegenden Erfindung zu vereinigen;
  • 6 ein Zustandsdiagramm zur Darstellung von Zustandsübergängen von Speicherblöcken von Flashspeicherelementen gemäß einiger Ausgestaltungen der vorliegenden Erfindung;
  • 7 ein Flussdiagramm zur Darstellung von Verfahren zum Verarbeiten eines Log-Blocks nach einer einfachen Vereinigungsoperation gemäß einiger Ausgestaltungen der vorliegenden Erfindung;
  • 8 ein schematisches Diagramm zur Darstellung der Allokierung von Log-Blöcken nach einer einfachen Vereinigungsoperation gemäß einiger Ausgestaltungen der vorliegenden Erfindung;
  • 9 ein Blockschaltbild zur Darstellung einer Wiederverwendbarkeitstabelle gemäß einiger Ausgestaltungen der vorliegenden Erfindung; und
  • 10 ein Flussdiagramm zur Darstellung von Verfahren zum Allokieren eines neuen Log-Blocks gemäß einiger Ausgestaltungen der vorliegenden Erfindung.
  • Wie oben beschrieben, wird gemäß der herkömmlichen Technologie ein Log-Block nach einer einfachen Vereinigungsoperation verworfen (zum Löschen allokiert), was beinhaltet, dass der Log-Block abgeschlossen ist, selbst wenn nur in einem kleinen Teil des Log-Blocks Daten aufgezeichnet wurden. Dadurch steigt der Löschzählwert herkömmlicher Flashspeicherelemente. Wie vorliegend beschrieben, schaffen Ausgestaltungen der vorliegenden Erfindung nichtflüchtige Speicherelemente, die eine erhöhte Leistungsfähigkeit und/oder Lebensdauer aufweisen können, da diese Elemente Log-Blöcke wieder verwendet, die gemäß herkömmlicher Technik verworfen werden, um den Löschzählwert des Elements zu verringern. Hiermit im Zusammenhang stehende Verfahren zum Verwalten derartiger nichtflüchtiger Speicherelemente sind ebenfalls offenbart.
  • 4 ist ein Blockschaltbild zur Darstellung eines Speicherzellenbereichs eines Flashspeicherelements gemäß einiger Ausgestaltungen der vorliegenden Erfindung. Wie in 4 gezeigt, kann der Speicherzellenbereich des Flashspeicherelements in ein Abbildungsgebiet, ein Log-Blockgebiet, ein Datenblockgebiet, ein löschbares Blockgebiet, ein wieder verwendbares Blockgebiet und ein freies Blockgebiet unterteilt sein. Alle diese Gebiete können logisch definiert sein. Daraus ergibt sich, dass diese Gebiete physikalisch vermischt und/oder diskontinuierlich sein können.
  • Das Abbildungsgebiet kann dazu verwendet werden, Adressumwandlungsinformationen für jeden Block zu speichern, um eine Blockadressierung zu ermöglichen. Das Abbildungsgebiet kann weiterhin Tabellen, Listen und/oder andere Datenstrukturen speichern, die dazu verwendet werden können, die Speicherblöcke in jedem Gebiet zu verwalten.
  • Das Log-Blockgebiet enthält Log-Blöcke, die vorliegend noch detaillierter beschrieben werden. Das Datenblockgebiet wird zum Aufzeichnen normaler Daten verwendet. Das löschbare Blockgebiet enthält Blöcke, die darauf warten, gelöscht zu werden. Vorliegend werden diese Blöcke als löschbare Blöcke oder verworfene Blöcke bezeichnet. Ein löschbarer Block kann durch Löschen der darin enthaltenen Daten zu einem freien Block werden. Das freie Blockgebiet enthält freie Blöcke, die als Log-Blöcke oder Datenblöcke allokiert werden können. Die freien Blöcke können auch dem Abbildungsgebiet zugewiesen werden. Die freien Blöcke enthalten keine Daten (ein freier Block ist ein Block, aus dem alle Daten, die zuvor darin gespeichert waren, gelöscht wurden). Das wieder verwendbare Blockgebiet enthält Blöcke, die dem Log-Blockgebiet zugewiesen werden (oder darin erhalten bleiben) können, ohne zunächst eine Löschoperation an ihnen durchzuführen.
  • Wie oben bemerkt wurde, können in einem herkömmlichen Flashspeicherelement, wie beispielsweise einem herkömmlichen NAND-Flashspeicherelement, Daten typischerweise nicht überschreiben werden. Wenn aktualisierte Daten empfangen werden, können diese in einem temporären Speicherblock gespeichert werden, der als ein Log-Block bezeichnet wird. Da nur eine endliche Anzahl von Log-Blöcken in einem Flashspeicherelement zur Verfügung steht, können an einem bestimmten Punkt alle Log-Blöcke teilweise und/oder vollständig gefüllt sein. Um sicher zu stellen, dass Log-Blöcke zum Aufzeichnen von neu en oder aktualisierten Daten verfügbar sind, können periodisch Daten, die in einem Log-Block gespeichert sind, mit Daten verglichen werden, die in einem entsprechenden Datenblock gespeichert sind, um (1) unveränderte Informationen in den Datenblock (bei denen es sich um gültige Daten handelt, da die Daten nicht aktualisiert wurden) und (2) aktualisierte Daten in dem Log-Block (bei denen es sich auch um gültige Daten handelt, die die alten Daten in dem Datenblock ersetzen müssen) zu identifizieren. Sobald diese Identifikation abgeschlossen ist, können der Datenblock und der Log-Block zu einem einzigen Block vereinigt werden, um beispielsweise den Log-Block zu leeren. Diese Prozedur wird als eine „Datenvereinigung" oder einfach als eine „Vereinigung" bezeichnet. Drei unterschiedliche Arten von Vereinigungsoperationen können durchgeführt werden. Diese drei Arten von Vereinigungen werden als einfach Vereinigungen (simple merge), Kopiervereinigungen (copy merge) und Umlade- oder Swapvereinigungen (swap merge) bezeichnet, die jeweils weiter unten detailliert beschrieben werden.
  • 5 ist ein schematisches Diagramm zur Darstellung dreier beispielhafter Vereinigungen eines Log-Blocks mit einem entsprechenden Datenblock gemäß einiger Ausgestaltungen der vorliegenden Erfindung.
  • Wie in 5 gezeigt, werden bei einer Swapvereinigung alle Daten in einem Datenblock mit Daten ersetzt oder aktualisiert, die in einem entsprechenden Log-Block gespeichert sind. Da eine Swapvereinigung kein Vereinigen ausgewählter Daten aus zwei verschiedenen Blöcken (sondern stattdessen das Ersetzen aller Daten in einem Datenblock mit denjenigen Daten, die in einem entsprechenden Log-Block gespeichert sind) beinhaltet, kann die Swapvereinigung durchgeführt werden, indem einfach das Speicherblockmapping verändert wird, sodass der Log-Block als ein Datenblock bestimmt wird. Dementsprechend kann eine Swapvereinigung durchgeführt werden, ohne dass tatsächlich Daten kopiert oder erneut geschrieben werden müssen. Eine Swapvereinigung kann nur unter bestimmten Umständen durchgeführt werden, beispielsweise wenn jede Seite in dem Datenblock nur einmal aktualisiert wurde und wenn der Log-Block und der Datenblock die gleiche Seitenanordnung aufweisen. Die Mappingersetzung kann beispielsweise durchgeführt werden, indem die Adressumwandlungsinformationen in dem Abbildungsgebiet des Flashspeicherelements aktualisiert werden, sodass der Log-Block auf eine logischen Adresse abgebildet wird, die durch einen Benutzer angefordert wurde. Da eine Swapvereinigung nur ein Blockmapping beinhaltet, erfordert sie nicht, dass ein zusätzlicher Speicherblock durchgeführt wird. Nachdem die Swapvereinigung abgeschlossen ist, wird der Log-Block zu einem Datenblock, und der Datenblock kann verworfen werden (der Datenblock wird zu einem löschbaren Block, der darauf wartet, gelöscht zu werden).
  • Die Kopiervereinigung wird durchgeführt, wenn aktualisierte Daten beispielsweise für einen oberen Adressbereich des Datenblocks empfangen werden. Die aktualisierten Daten können beispielsweise in einem oberen Adressbereich eines Log-Blocks aufgezeichnet werden. Die Kopiervereinigung wird verwendet, um die Daten, die in dem Rest des Datenblocks gespeichert sind, beispielsweise in einen unteren Adressbereich desjenigen Log-Blocks zu kopieren, der die aktualisierten Daten enthält. Wie in 5 gezeigt, sind die Daten in dem oberen Adressbereich des Log-Blocks (die aktualisierten Daten) gültig, wenn nur die Daten in dem oberen Adressbereich des Datenblocks aktualisiert werden müssen. Andererseits müssen diejenigen Daten, die gegenwärtig in dem oberen Adressbereich in dem Datenblock gespeichert sind, aktualisiert werden und sind somit ungültig, während diejenigen Daten, die in dem unteren Adressbereich des Datenblocks gespeichert sind, gültig bleiben (da für diese Daten keine aktualisierten Daten empfangen wurden). Somit werden durch die Kopiervereinigung die gültigen Daten sowohl aus dem Log-Block als auch aus dem zugehörigen Datenblock miteinander in einem einzigen Block vereinigt (in diesem Beispiel dem Log-Block), indem die gültigen Daten aus dem Datenblock in den Log-Block kopiert werden. Die Kopiervereinigung braucht keinen zusätzlichen (dritten) Block mit einzubeziehen. Die Kopiervereinigung kann dann abgeschlossen werden, indem das Speicherblockmapping modifiziert wird, um den Log-Block als einen Datenblock neu zu bestimmen. Nachdem die Kopiervereinigung abgeschlossen ist, kann der Datenblock verworfen werden.
  • Eine einfache Vereinigung kann durchgeführt werden, wenn Daten in einem Datenblock diskontinuierlich aktualisiert werden. Mit einer einfachen Vereinigung wird ein neuer Datenblock gebildet, indem gültige Daten aus dem Log-Block (empfangene aktualisierte Daten) und gültige Daten aus dem entsprechenden Datenblock (Daten, die nicht aktualisiert wurden) in einen dritten Block kopiert (aufgezeichnet) werden. Nachdem die einfache Vereinigung abgeschlossen ist, wird der Datenblock verworfen (er wird zu einem löschbaren Block) und der Log-Block geht entweder in einen löschbaren Block oder in einen wieder verwendbaren Block über. Die einfache Vereinigung kann durchgeführt werden, wenn die Seitenanordnung in dem Log-Block sich von der Seitenanordnung in dem Datenblock unterscheidet.
  • 6 zeigt die Zustandsübergänge von Speicherblöcken gemäß einigen Ausgestaltungen der vorliegenden Erfindung. Wie in 6 gezeigt, kann ein Log-Block entweder durch eine Swapvereinigung oder eine Kopiervereinigung in einen Datenblock übergehen und kann durch eine einfache Vereinigung in einen löschbaren Block oder einen wieder verwendbaren Block übergehen. Ein wieder verwendbarer Block kann durch eine Programmieroperation in einen Log-Block übergehen. Wie ebenfalls in 6 gezeigt, wird ein Datenblock nach einer Swapvereinigung, einer einfachen Vereinigung oder einer Kopiervereinigung verworfen und geht somit in einen löschbaren Block über. Ein löschbarer Block geht durch eine Löschoperation in einen freien Block über. Ein freier Block kann durch eine Programmieroperation in einen Log-Block oder durch eine einfache Vereinigung in einen Datenblock übergehen.
  • Um den Datenvereinigungsprozess zu verwalten, kann das Flashspeicherelement einen zugeordneten Prozessor (nicht gezeigt) aufweisen. Dieser Prozessor muss auf Informationen betreffend jeden Block zugreifen. Dementsprechend können eine oder mehrere Tabellen zum Verwalten jedes Speichergebiets in dem Flashspeicherelement unterhalten werden. Beispielsweise kann eine Freier-Block-Verwaltungstabelle, die eine Liste von freien Blöcken enthält, eine Löschbarer-Block-Verwaltungstabelle, die eine Liste von löschbaren Blöcken enthält, eine Log-Block-Verwaltungstabelle, die eine Liste von Log-Blöcken enthält, und eine Datenblock-Verwaltungstabelle, die eine Liste von Datenblöcken enthält, unterhalten werden. Jede der Tabellen kann unter Verwendung einer Datenstruktur, wie beispielsweise eines Feldes, einer verketteten Liste, einer Reihe oder dergleichen, implementiert werden und kann beispielsweise eine physikalische Blocknummer (physical block number – PBN) oder andere Eigenschaften speichern, die mit einem jeweiligen Block verknüpft sind. Eine solche Datenstruktur zum Verwalten verworfener Blöcke wird vorliegend als ein Abfallpool (garbage pool) bezeichnet.
  • Um Flashspeicher gemäß einiger Ausgestaltungen der vorliegenden Erfindung zu verwalten, kann eine Wiederverwendbarer-Block-Verwaltungstabelle unterhalten werden, die eine Liste von wieder verwendbaren Blöcken enthält. Die Wiederverwendbarer-Block-Verwaltungstabelle kann ebenfalls als eine Datenstruktur in Form eines Feldes, einer verketteten Liste, einer Reihe oder dergleichen implementiert werden. Die Wiederverwendbarer-Block-Verwaltungstabelle kann sowohl eine PBN oder andere Eigenschaften eines wieder verwendbaren Blocks als auch eine Startadresse einer leeren Seite in dem Block speichern. Die Datenstruktur zum Verwalten wieder verwendbarer Blöcke wird vorliegend auch als ein Wiederverwendungspool (reuse pool) bezeichnet. Alle der vorstehend beschriebenen Tabellen können beispielsweise in dem Abbildungsgebiet des Flashspeicherelements gespeichert werden.
  • 7 ist ein Flussdiagramm eines Verfahrens zum Verarbeiten eines Log-Blocks nach einer einfachen Vereinigung gemäß einiger Ausgestaltungen der vorliegenden Erfindung. Wie in 7 gezeigt, wird zunächst eine einfache Vereinigung durchgeführt (Block 110). Nach der einfachen Vereinigung wird aus dem Log-Block ein ungültiger Log-Block, der keine gültigen Daten enthält. Dann wird die Menge an leerem Speicher (die Anzahl „sauberer" Seiten, in die keine Daten geschrieben wurden, seit die Seite zuletzt gelöscht wurde) in dem ungültigen Log-Block detektiert (Block 120). Dann wird die erkannte Anzahl sauberer Seiten mit einem vorbestimmten Referenzwert verglichen, beispielsweise einem Referenzseitenzählwert (Block 130). Wenn die Anzahl sauberer Seiten größer ist als der Referenzseitenzählwert, wird der ungültige Log-Block zusammen mit einer „Saubere-Seite-Startadresse", welche die Adresse der ersten sauberen Seite angibt, dem Wiederverwendungspool zugewiesen (Block 140). Ein wieder verwendbarer Block, der in dem Wiederverwendungspool angeordnet ist, kann als ein Log-Block verwendet werden, ohne dass daran zunächst eine Löschoperation durchgeführt werden muss.
  • Wenn die Anzahl sauberer Seiten kleiner oder gleich dem Referenzseitenzählwert ist, wird der ungültige Log-Block dem Abfallpool zugewiesen (Block 150).
  • 8 ist ein schematisches Diagramm zur Darstellung der Zustände einer Mehrzahl von beispielhaften Log-Blöcken, nachdem einfache Vereinigungsoperationen gemäß einiger Ausgestaltungen der vorliegenden Erfindung durchgeführt wurden. Wie in 8 gezeigt, wird eine Mehrzahl von Log-Blöcken einfachen Vereinigungsoperationen unterzogen. Einige der Log-Blöcke enthielten eine relativ große Datenmenge, während andere Log-Blöcke nur relativ kleine Datenmenge enthielten. Unter Verwendung herkömmlicher Flashspeicherelement-Speicherverwaltungstechniken würden alle Log-Blöcke ungeachtet der Menge an programmierten Daten in jedem Log-Block verworfen und dem Abfallpool zugewiesen.
  • Gemäß einiger Ausgestaltungen der vorliegenden Erfindung werden die Log-Blöcke jedoch nach der einfachen Vereinigung in Abhängigkeit von der Datenmenge klassifiziert, die in jedem Log-Block programmiert worden war. Insbesondere wenn die Anzahl von Seiten in dem Log-Block, die programmierte Daten enthalten, den Referenzwert übersteigt, wird der Log-Block dem Abfallpool zugewiesen. Wenn die Anzahl von Seiten in dem Log-Block, die programmierte Daten enthalten, kleiner oder gleich dem Referenzwert ist, wird der Log-Block stattdessen dem Wiederverwendungspool zugewiesen.
  • Unter weiterer Bezugnahme auf 8 werden die Log-Blöcke mit PBNs von 4, 20, 11 bzw. 13 dem Abfallpool zugewiesen, und die Log-Blöcke mit PBNs von 10, 1, 2 bzw. 5 werden dem Wiederverwendungspool zugewiesen. In 8 stellen die Bezeichnungen <12>, <10>, <4> und <12> eine Startadresse einer sauberen Seite (Saubere-Seite-Startadresse) in einem entsprechenden Block dar. In dieser beispielhaften Ausgestaltung ist der Referenzwert auf 50% (also 1/2) der Gesamtanzahl von Seiten in einem Block eingestellt. Allerdings kann der Referenzwert auf andere Werte eingestellt sein.
  • 9 zeigt eine Wiederverwendbarer-Block-Verwaltungstabelle gemäß einigen Ausgestaltungen der vorliegenden Erfindung. Wenn ein Log-Block dem Wiederverwendungspool zugewiesen wird, werden die PBN des Log-Blocks und eine Startadresse der ersten sauberen Seite in dem Log-Block (eine Saubere-Seite-Startnummer) gemeinsam in der Wiederverwendbarer-Block-Verwaltungstabelle aufgezeichnet.
  • 10 ist ein Flussdiagramm zur Darstellung von Verfahren zum Allokieren eines neuen Log-Blocks gemäß einiger Ausgestaltungen der vorliegenden Erfindung. Wie in 10 gezeigt, wird eine Anforderung zum Aufzeichnen oder Aktualisieren von in dem Flashspeicher gespeicherten Daten empfangen (Block 200). In Abhängigkeit von dieser Anforderung wird eine Entscheidung getroffen, ob ein neuer Log-Block zum Aufzeichnen der Daten erforderlich ist oder nicht (Block 210). Wenn ein neuer Log-Block nicht erforderlich ist, kehrt das Verfahren nach Block 200 zurück, wo schließlich eine weitere Anforderung zum Aufzeichnen von Daten empfangen wird. Wenn stattdessen bestimmt wird, dass ein neuer Log-Block erforderlich ist, wird anschließend bestimmt, ob ein leerer Block erforderlich ist, in dem noch keine Daten geschrieben wurden (also ein freier Block) (Block 220). Wenn ein leerer Block erforderlich ist, wird anschließend eine Bestimmung vorgenommen, ob ein freier Block gegenwärtig verfügbar ist oder nicht (Block 230). Wenn ein freier Block verfügbar ist, wird dieser als der neue Log-Block allokiert, in dem die aktualisierten Daten aufgezeichnet werden sollen (Block 260). Wenn stattdessen ein freier Block nicht verfügbar ist, wird anschließend ein Block aus dem Abfallpool ausgewählt (Block 240) und der ausgewählte Block wird gelöscht, um den freien Block zu erzeugen (Block 250), welcher dann als der Log-Block allokiert wird (Block 260).
  • Wenn die Anforderung zum Aufzeichnen von Daten eine Adresse spezifiziert, die der ersten Seite eines Blocks entspricht, ist es typischerweise erforderlich, im Entscheidungsblock 220 gemäß 10 einen leeren Block zu erhalten. Allerdings ist in anderen Fällen ein leerer Block nicht erforderlich. In dieser Situation fährt das Verfahren gemäß 10 ausgehend vom Entscheidungsblock 220 mit Entscheidungsblock 270 fort, wo bestimmt wird, ob wenigstens ein wieder verwendbarer Block in dem Wiederverwendungspool existiert. Ist dies der Fall, wird ein wieder verwendbarer Block aus dem Wiederverwendungspool ausgewählt (Block 280), und der ausgewählte Block wird als ein Log-Block wieder verwendet (Block 290). Der Log-Block weist eine zugehörige Saubere-Seite-Startadresse (oder eine Saubere-Seite-Startnummer) auf, und Daten werden beginnend bei derjenigen sauberen Seite geschrieben, die der Saubere-Seite-Startnummer entspricht.
  • Das vorstehend beschriebene Verfahren zum Verwalten von Flashspeichern gemäß einiger Ausgestaltungen der vorliegenden Erfindung kann für ein Element auf Flashspeicherbasis verwendet werden.
  • Das auf Flashspeicher basierende Element umfasst wenigstens einen Flashspeicher und einen Prozessor zum Verwalten des Flashspeichers und kann beispielsweise als Smart Card oder secure digital(SD)-Karte ausgebildet sein. Das auf Flashspeicher basierende Element kann weiterhin Speicher, z.B. Nurlesespeicher (ROM), zum Speichern eines Programms aufweisen. Zur Vereinfachung der Beschreibung wird der Speicher zum Speichern eines Programms als ein erster Speicher und der Flashspeicher als ein zweiter Speicher in dem auf Flashspeicher basierenden Element bezeichnet.
  • Das vorstehend beschriebene Verfahren zum Verwalten von Flashspeicher gemäß einiger Ausgestaltungen der vorliegenden Erfindung kann in Form eines Programms implementiert sein, das in dem ersten Speicher gespeichert ist und auf dem Prozessor abläuft. Der Prozessor kann den zweiten Speicher verwalten, indem er das Programm ausführt, das in dem ersten Speicher gespeichert ist.
  • Ein Verfahren zum Verwalten von Flashspeicher gemäß einiger Ausgestaltungen der vorliegenden Erfindung kann in Form eines Programms ausgebildet und in einem Aufzeichnungsmedium gespeichert sein.
  • Gemäß einiger Ausgestaltungen der vorliegenden Erfindung werden unter Log-Blöcken, die aufgrund einer Vereinigungsoperation ungültig werden, solche Log-Blöcke, die mehr als einen vorbestimmten Prozentanteil an sauberen Seiten enthalten, nicht gelöscht und stattdessen als neue Log-Blöcke wieder verwendet, sodass ein Löschzählwert des Elements reduziert wird. Als ein Ergebnis hiervon kann die Lebensdauer eines Flashspeichers mit einem begrenzten Programmier-/Löschzählwert verlängert werden. Zusätzlich kann ein neuer Log-Block aus dem Wiederverwendungspool ausgewählt und ohne Durchführen einer Löschoperation unmittelbar verwendet werden. Dementsprechend ist keine Zeit für das Löschen erforderlich, sodass die Leistungsfähigkeit verbessert werden kann. Wenn die Zufälligkeit eines Musters aufge zeichneter Daten zunimmt, kann die Häufigkeit zunehmen, mit der einfache Vereinigungen von Log-Blöcken beträchtliche Menge ungenutzten Speicherplatzes aufweisen. Die vorliegende Erfindung kann besonders effizient sein, wenn die Häufigkeit einfacher Vereinigungen hoch ist, wenn die Blockabmessungen groß sind und/oder wenn die Anzahl von ungenutzten Log-Blöcken und freien Blöcken gering ist.
  • Die vorliegende Erfindung wurde vorliegend unter Bezugnahme auf Blockschaltbilder und/oder Flussdiagramme von Verfahren, Vorrichtungen und/oder Computerprogrammprodukten gemäß Ausgestaltungen der Erfindung beschrieben. Es sei darauf hingewiesen, dass ein Block in den Blockschaltbildern und/oder Flussdiagrammen sowie Kombinationen von Blöcken in den Blockschaltbildern und/oder Flussdiagrammen in Form von Computerprogrammanweisungen implementiert sein kann bzw. können. Diese Computerprogrammanweisungen können an einen Prozessor oder eine andere programmierbare Datenverarbeitungsvorrichtung geliefert werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die durch den Prozessor oder die andere programmierbare Datenverarbeitungsvorrichtung ausgeführt werden, Mittel (Funktionen) und/oder Strukturen zum Implementieren der Funktionen/Tätigkeiten erzeugen, die in dem Block oder den Blöcken der Blockschaltbilder und/oder Flussdiagramme angegeben sind.
  • Diese Computerprogrammanweisungen können in einem computerlesbaren Speicher gespeichert sein, der einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die in dem computerlesbaren Speicher gespeicherten Anweisungen einen Gegenstand erzeugen, der Anweisungen enthält, welche die Funktion/Tätigkeit implementieren, die in den Blockschaltbildern und/oder dem Flussdiagrammblock bzw. Flussdiagrammblöcken spezifiziert ist. Die Computerprogrammanweisungen können auch in einen Prozessor oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, um eine Reihe von Betriebsschritten zu bewirken, die durchgeführt wer den, um einen computerimplementierten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Prozessor oder der anderen programmierbaren Vorrichtung ausgeführt werden, Schritte zum Implementieren der Funktionen/Tätigkeiten bereitstellen, die in den Blockschaltbildern und/oder dem Flussdiagrammblock bzw. Flussdiagrammblöcken spezifiziert sind.
  • Entsprechend können Aspekte der vorliegenden Erfindung in Hardware und/oder in Software (einschließlich Firmware, Resident Software, Mikrocode usw.) ausgebildet sein. Des Weiteren kann die vorliegende Erfindung die Form eines Computerprogrammprodukts auf einem computerverwendbaren oder computerlesbaren Speichermedium annehmen, das einen computerverwendbaren oder computerlesbaren Programmcode enthält, der in dem Medium verkörpert ist, um durch ein oder in Verbindung mit einem Befehlsausführungssystem verwendet zu werden.
  • Es sei auch angemerkt, dass in bestimmten alternativen Ausgestaltungen die Funktionen/Tätigkeiten, die in den Blöcken angegeben sind, in einer anderen Reihenfolge stattfinden können, als in den Flussdiagrammen angegeben. Beispielsweise können zwei Blöcke, die aufeinander folgend dargestellt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge aufgeführt werden, was von den betroffenen Funktionen/Tätigkeiten abhängt. Des Weiteren kann die Funktion eines gegebenen Blocks in den Flussdiagrammen und/oder Blockschaltbildern in mehrere Blöcke unterteilt werden, und/oder die Funktion von zwei oder mehreren Blöcken in den Flussdiagrammen und/oder Blockschaltbildern können zumindest teilweise integriert werden.

Claims (25)

  1. Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, das einen ersten Datenblock, der erste Daten speichert, und einen ersten Log-Block aufweist, der eine aktualisierte Version wenigstens einiger der ersten Daten speichert, wobei das Verfahren beinhaltet: – Kopieren gültiger Bereiche der ersten Daten in dem ersten Datenblock in einen freien Block, der keine Daten enthält, um einen zweiten Datenblock zu erzeugen; – Kopieren der aktualisierten Version wenigstens einiger der ersten Daten aus dem ersten Log-Block in den zweiten Datenblock; und – Bestimmen des ersten Log-Blocks als einen wieder verwendbaren Log-Block, ohne dass darin enthaltene Daten gelöscht werden, in Abhängigkeit davon, dass wenigstens eine vorbestimmte Bedingung erfüllt ist.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass das Bestimmen des ersten Log-Blocks als einen wieder verwendbaren Log-Block, ohne dass darin enthaltene Daten gelöscht werden, in Abhängigkeit davon, dass wenigstens eine vorbestimmte Bedingung erfüllt ist, beinhaltet: – Bestimmen einer Menge an sauberem Speicher in dem ersten Log-Block; – Vergleichen der bestimmten Menge an sauberem Speicher mit einem vorbestimmten Referenzwert; und – Bestimmen des ersten Log-Blocks als einen wieder verwendbaren Log-Block, ohne dass darin enthaltene Daten gelöscht werden, basierend darauf, dass die bestimmte Menge an sauberem Speicher in dem ersten Log-Block den vorbestimmten Referenzwert übersteigt.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass das nichtflüchtige Speicherelement ein Flashspeicherelement ist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass die Menge an sauberem Speicher eine Anzahl von sauberen Seiten in dem ersten Log-Block ist und dass das Bestimmen des ersten Log-Blocks als einen wieder verwendbaren Log-Block, ohne dass darin enthaltene Daten gelöscht werden, ein Aufzeichnen eines Identifizierers des ersten Log-Blocks und einer Saubere-Seite-Startadresse, die mit dem ersten Log-Block verknüpft ist, in einer Wiederverwendungspool-Tabelle beinhaltet.
  5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass der Identifizierer des ersten Log-Blocks eine physikalische Blocknummer des ersten Log-Blocks umfasst.
  6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass eine aktualisierte Version wenigstens einiger von zweiten Daten, die in dem zweiten Datenblock gespeichert sind, in dem wieder verwendbaren Log-Block aufgezeichnet wird, ohne dass die ersten Daten aus dem wieder verwendbaren Log-Block gelöscht werden.
  7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass das Aufzeichnen der aktualisierten Version wenigstens einiger von zweiten Daten, die in dem zweiten Datenblock gespeichert sind, in dem wieder verwendbaren Log-Block, ohne dass die ersten Daten aus dem wieder verwendbaren Log-Block gelöscht werden, beinhaltet: – Empfangen der aktualisierten Version wenigstens einiger der zweiten Daten; – Bestimmen, dass die aktualisierte Version wenigstens einiger der zweiten Daten in einem neuen Log-Block zu speichern ist; – Bestimmen, dass der neue Log-Block kein freier Speicherblock sein muss; – Auswählen des wieder verwendbaren Log-Blocks als den neuen Log-Block; und – Aufzeichnen der aktualisierten Version wenigstens einiger von zweiten Daten, die in dem zweiten Datenblock gespeichert sind, in dem wieder verwendbaren Log-Block.
  8. Verfahren nach einem der Ansprüche 2 bis 7, dadurch gekennzeichnet, dass der vorbestimmte Referenzwert etwa 1/2 einer Gesamtanzahl von Seiten in dem ersten Log-Block ist.
  9. Aufzeichnungsmedium zum Aufzeichnen eines Programms zum Ausführen des Verfahrens nach einem der Ansprüche 1 bis 8.
  10. Nichtflüchtiges Speicherelement, aufweisend: – einen ersten Speicher, in dem ein Programm gespeichert ist; – einen zweiten Speicher, der einen Datenblock und einen Log-Block umfasst, in dem Daten zum Aktualisieren des Datenblocks aufgezeichnet sind; und – einen Prozessor, der dazu ausgebildet ist, das Programm auszuführen, um den zweiten Speicher zu verwalten, – wobei der Prozessor dazu ausgebildet ist, gültige Daten in einem ersten Datenblock und gültige Daten in einem ersten Log-Block, der dem ersten Datenblock entspricht, in einen freien Block zu kopieren, der keine Daten enthält, um einen zweiten Datenblock zu erzeugen, und – wobei der Prozessor basierend auf vorbestimmten Bedingungen weiterhin dazu ausgebildet ist, den ersten Log-Block nach dem Löschen der Daten aus dem ersten Log-Block als einen freien Block zu allokieren oder den ersten Log-Block ohne Löschen der Daten aus dem ersten Log-Block als einen zweiten Log-Block zu allokieren.
  11. Nichtflüchtiges Speicherelement nach Anspruch 10, dadurch gekennzeichnet, dass der erste Speicher ein Nurlesespeicher und der zweite Speicher ein Flashspeicher ist.
  12. Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, wobei das Verfahren beinhaltet: – Aufzeichnen erster Daten in einem ersten Speicherblock des nichtflüchtigen Speicherelements, wobei der erste Speicherblock gelöschte Seiten und solche Seiten enthält, die zweite zuvor aufgezeichnete Daten enthalten, die nicht länger gültig sind.
  13. Verfahren nach Anspruch 12, gekennzeichnet durch: – Bestimmen des ersten Speicherblocks als einen wieder verwendbaren Speicherblock in Abhängigkeit von einem Bestimmen, dass eine Anzahl von gelöschten Seiten in dem ersten Speicherblock einen Referenzwert übersteigt, bevor die Daten in dem ersten Speicherblock aufgezeichnet werden.
  14. Verfahren nach Anspruch 12 oder 13, gekennzeichnet durch: – Speichern einer ersten Adresse des ersten Speicherblocks, die eine erste Seite aus einer Gruppe von gelöschten Seiten des ersten Speicherblocks bezeichnet.
  15. Verfahren nach Anspruch 14, dadurch gekennzeichnet, dass das Aufzeichnen erster Daten in dem ersten Speicherblock ein Aufzeichnen der ersten Daten in wenigstens einigen der gelöschten Seiten in dem ersten Speicherblock beinhaltet, beginnend mit der ersten aus der Gruppe gelöschter Seiten.
  16. Verfahren nach Anspruch 14 oder 15, dadurch gekennzeichnet, dass die erste Adresse des ersten Speicherblocks in Abhängigkeit von einem Bestimmen, dass die Anzahl gelöschter Seiten in dem ersten Speicherblock den Referenzwert übersteigt, gespeichert wird und dass die erste Adresse in einer Wiederverwendbarer-Block-Verwaltungsdatenstruktur zusammen mit einer Bestimmung für den ersten Datenblock gespeichert wird.
  17. Verfahren nach einem der Ansprüche 12 bis 16, dadurch gekennzeichnet, dass der erste Speicherblock ein Log-Block ist, wobei die ersten Daten mit einem ersten Datenblock verknüpft sind und wobei die zweiten Daten mit einem zweiten Datenblock verknüpft sind.
  18. Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, wobei das Verfahren beinhaltet: – Vereinigen erster Daten, die in einem ersten Log-Block des nichtflüchtigen Speicherelements gespeichert sind, mit zweiten Daten, die in einem ersten Datenblock des nichtflüchtigen Speicherelements gespeichert sind, indem die ersten Daten und die zweiten Daten in einem zweiten Datenblock des nichtflüchtigen Speicherelements aufgezeichnet werden; – Bestimmen einer Anzahl sauberer Seiten in dem ersten Log-Block; und – Bestimmen, ob die Anzahl sauberer Seiten einen Referenzwert übersteigt.
  19. Verfahren nach Anspruch 18, dadurch gekennzeichnet, dass der erste Log-Block einem wieder verwertbaren Log-Blockpool zugewiesen wird, wenn die Anzahl sauberer Seiten den Referenzwert übersteigt.
  20. Verfahren nach Anspruch 18 oder 19, dadurch gekennzeichnet, dass der erste Log-Block einem löschbaren Log-Blockpool zugewiesen wird, wenn die Anzahl sauberer Seiten kleiner oder gleich dem Referenzwert ist.
  21. Verfahren nach einem der Ansprüche 18 bis 20, dadurch gekennzeichnet, dass ein Bezeichner für den ersten Log-Block zusammen mit einer Adresse für die erste der sauberen Seiten zu einer Wiederverwendbarer-Block-Verwaltungsdatenstruktur hinzugefügt wird, die in dem nichtflüchtigen Speicherelement gespeichert ist.
  22. Verfahren nach einem der Ansprüche 18 bis 21, dadurch gekennzeichnet, dass die zweiten Daten eine aktualisierte Version dritter Daten enthalten, die ebenfalls in dem ersten Log-Block gespeichert sind.
  23. Nichtflüchtiges Speicherelement, aufweisend: – einen Speicherzellenbereich, der in eine Mehrzahl von logischen Gebieten unterteilt ist, die ein Log-Blockgebiet, ein Datenblockgebiet, ein löschbares Blockgebiet, ein freies Blockgebiet und ein wieder verwendbares Blockgebiet umfassen; und – einen Prozessor, – wobei das Datenblockgebiet eine Mehrzahl von Datenblöcken aufweist, die Daten speichern, die in das nichtflüchtige Speicherelement eingegeben werden, wobei das Log-Blockgebiet eine Mehrzahl von Log-Blöcken aufweist, die Aktualisierungen für die in dem Datenblockgebiet gespeicherten Daten speichern, wobei das löschbare Blockgebiet eine Mehrzahl von löschbaren Blöcken aufweist, die zu löschen sind, wobei das freie Blockgebiet eine Mehrzahl von gelöschten Speicherblöcken aufweist und wobei das wieder verwendbare Blockgebiet wenigstens einen ersten Log-Block aufweist, der dem wieder verwendbaren Blockgebiet zugewiesen wurde, ohne einer Löschoperation unterzogen worden zu sein, nachdem aktualisierte Daten in dem ersten Log-Block als Teil einer Vereinigungsoperation in einem anderen Block aufgezeichnet wurden.
  24. Nichtflüchtiges Speicherelement nach Anspruch 23, dadurch gekennzeichnet, dass der Speicherzellenbereich weiterhin ein Abbil dungsgebiet aufweist und dass eine Wiederverwendbarer-Block-Verwaltungsdatenstruktur in dem Abbildungsgebiet gespeichert ist.
  25. Nichtflüchtiges Speicherelement nach Anspruch 24, dadurch gekennzeichnet, dass die Wiederverwendbarer-Block-Verwaltungsdatenstruktur einen Eintrag für jeden verfügbaren wieder verwendbaren Block enthält, der einen Bezeichner für den wieder verwendbaren Block zusammen mit einer ersten sauberen Seite des wieder verwendbaren Blocks umfasst.
DE102007006307A 2006-10-19 2007-01-30 Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, Aufzeichnungsmedium und nichtflüchtigen Speicherelement Withdrawn DE102007006307A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2006-0101643 2006-10-19
KR1020060101643A KR100849221B1 (ko) 2006-10-19 2006-10-19 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치

Publications (2)

Publication Number Publication Date
DE102007006307A1 true DE102007006307A1 (de) 2008-04-24
DE102007006307A8 DE102007006307A8 (de) 2008-07-31

Family

ID=39198533

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007006307A Withdrawn DE102007006307A1 (de) 2006-10-19 2007-01-30 Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, Aufzeichnungsmedium und nichtflüchtigen Speicherelement

Country Status (5)

Country Link
US (1) US7783851B2 (de)
JP (1) JP5336060B2 (de)
KR (1) KR100849221B1 (de)
CN (1) CN101165660B (de)
DE (1) DE102007006307A1 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI358068B (en) * 2007-10-19 2012-02-11 Phison Electronics Corp Writing method for non-volatile memory and control
US8219740B2 (en) * 2008-06-25 2012-07-10 International Business Machines Corporation Flash sector seeding to reduce program times
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR100954039B1 (ko) * 2008-08-11 2010-04-20 (주)인디링스 플래시 메모리 제어 방법 및 제어 장치
KR100987251B1 (ko) * 2008-10-10 2010-10-12 한양대학교 산학협력단 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 플래시 메모리 관리 방법및 장치
KR101021364B1 (ko) * 2008-10-10 2011-03-14 한양대학교 산학협력단 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 멀티 플래시 메모리 관리방법 및 장치
KR101510120B1 (ko) * 2008-11-21 2015-04-10 삼성전자주식회사 메모리 장치 및 메모리 장치의 관리 방법
KR101663667B1 (ko) * 2009-02-03 2016-10-07 삼성전자주식회사 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치
JP5310053B2 (ja) * 2009-02-12 2013-10-09 住友電気工業株式会社 マイクロコントローラを備えた光データリンク
KR101020781B1 (ko) 2009-03-04 2011-03-09 한국과학기술원 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
WO2010144587A2 (en) 2009-06-12 2010-12-16 Violin Memory, Inc. Memory system having persistent garbage collection
CN101957797B (zh) * 2009-07-17 2013-01-09 群联电子股份有限公司 闪速存储器逻辑区块管理方法及其控制电路与储存系统
KR20110018157A (ko) * 2009-08-17 2011-02-23 삼성전자주식회사 플래시 메모리 장치의 액세스 방법
US8838877B2 (en) * 2009-09-16 2014-09-16 Apple Inc. File system derived metadata for management of non-volatile memory
US20110119462A1 (en) * 2009-11-19 2011-05-19 Ocz Technology Group, Inc. Method for restoring and maintaining solid-state drive performance
US8131772B2 (en) * 2009-12-04 2012-03-06 Unisys Corporation Method and apparatus for improving the performance of object-oriented queues
KR101153688B1 (ko) * 2010-10-15 2012-06-18 성균관대학교산학협력단 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
US9684590B2 (en) * 2010-10-25 2017-06-20 Seagate Technology Llc Storing corresponding data units in a common storage unit
KR20120043521A (ko) * 2010-10-26 2012-05-04 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US9396106B2 (en) * 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9075708B1 (en) * 2011-06-30 2015-07-07 Western Digital Technologies, Inc. System and method for improving data integrity and power-on performance in storage devices
US9158670B1 (en) * 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US9223649B2 (en) * 2012-02-15 2015-12-29 Sandisk Technologies Inc. System and method of sending correction data to a buffer of a non-volatile memory
US9244833B2 (en) * 2012-05-30 2016-01-26 Silicon Motion, Inc. Data-storage device and flash memory control method
KR101997572B1 (ko) * 2012-06-01 2019-07-09 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
KR102147359B1 (ko) * 2012-06-29 2020-08-24 삼성전자 주식회사 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치
US9268652B1 (en) * 2012-10-31 2016-02-23 Amazon Technologies, Inc. Cached volumes at storage gateways
US9448919B1 (en) 2012-11-13 2016-09-20 Western Digital Technologies, Inc. Data storage device accessing garbage collected memory segments
KR102252419B1 (ko) * 2014-01-09 2021-05-14 한국전자통신연구원 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
CN103838521B (zh) * 2014-02-28 2017-02-08 华为技术有限公司 一种数据处理方法及装置
KR102285462B1 (ko) * 2014-03-26 2021-08-05 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템의 동작 방법
JP6241373B2 (ja) * 2014-06-19 2017-12-06 株式会社デンソー 記憶装置、フラッシュメモリ制御装置、及びプログラム
WO2015196470A1 (zh) * 2014-06-27 2015-12-30 华为技术有限公司 一种将数据写入闪存装置的方法、闪存装置和存储系统
US10210168B2 (en) 2015-02-23 2019-02-19 International Business Machines Corporation Managing data in storage according to a log structure
US10599352B2 (en) * 2015-08-14 2020-03-24 Samsung Electronics Co., Ltd. Online flash resource allocation manager based on a TCO model
JP6414852B2 (ja) * 2015-12-14 2018-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
US9880743B1 (en) * 2016-03-31 2018-01-30 EMC IP Holding Company LLC Tracking compressed fragments for efficient free space management
KR20180026876A (ko) * 2016-09-05 2018-03-14 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR102107604B1 (ko) * 2018-03-26 2020-05-07 성균관대학교 산학협력단 비휘발성 메모리 장치, 및 비휘발성 메모리의 데이터 관리 방법
US10698621B2 (en) * 2018-04-23 2020-06-30 Western Digital Technologies, Inc. Block reuse for memory operations
KR102387960B1 (ko) * 2018-07-23 2022-04-19 삼성전자주식회사 컨트롤러 및 그것의 동작 방법
CN110045918B (zh) * 2018-12-03 2021-09-03 蚂蚁金服(杭州)网络技术有限公司 一种高效的数据单元重用方法和系统
US11204722B1 (en) * 2020-06-04 2021-12-21 Western Digital Technologies, Inc. Content-aware storage system and method for use therewith

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005106673A1 (ja) * 2004-04-28 2005-11-10 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置及びデータ書込み方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US6105103A (en) * 1997-12-19 2000-08-15 Lsi Logic Corporation Method for mapping in dynamically addressed storage subsystems
KR100644602B1 (ko) 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
JP4812192B2 (ja) 2001-07-27 2011-11-09 パナソニック株式会社 フラッシュメモリ装置、及び、それに記憶されたデータのマージ方法
KR100608602B1 (ko) 2003-12-10 2006-08-03 삼성전자주식회사 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
KR100638638B1 (ko) * 2004-09-03 2006-10-26 명지대학교 산학협력단 플래시 메모리의 제어 방법
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
JP2007133541A (ja) * 2005-11-09 2007-05-31 Tokyo Electron Device Ltd 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005106673A1 (ja) * 2004-04-28 2005-11-10 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置及びデータ書込み方法

Also Published As

Publication number Publication date
CN101165660A (zh) 2008-04-23
DE102007006307A8 (de) 2008-07-31
KR100849221B1 (ko) 2008-07-31
KR20080035237A (ko) 2008-04-23
US7783851B2 (en) 2010-08-24
JP2008103071A (ja) 2008-05-01
US20080098192A1 (en) 2008-04-24
JP5336060B2 (ja) 2013-11-06
CN101165660B (zh) 2011-12-21

Similar Documents

Publication Publication Date Title
DE102007006307A1 (de) Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, Aufzeichnungsmedium und nichtflüchtigen Speicherelement
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE102005019842B4 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE60217883T2 (de) Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher
DE69635962T2 (de) Flash-Speicher-Massenspeichersystem und Verfahren dafür
DE102009019271A1 (de) Übertragen von Sequenzzahlen für das Wiederherstellen nach Stromausfall bei einem nichtflüchtigen Speicher
DE69726088T2 (de) Methode und Apparat zur Speicherverwaltung
DE19782041B4 (de) Verfahren zum Durchführen eines kontinuierlichen Überschreibens einer Datei in einem nicht-flüchtigen Speicher
DE60030872T2 (de) Verfahren und anordnung um atomische aktualisierungen durchzuführen durch verwendung eines logischen flaschspeichergerätes
EP2923261B1 (de) VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS
DE102006005876A1 (de) Flashspeicher-Steuervorrichtung, Vorrichtung zum Steuern eines Flashspeichers, Flashspeicher-System und Verfahren zum Verwalten von Abbildungsdaten eines Flashspeichers
DE602004002674T2 (de) Speichersystem und Verfahren zur Erfassung und Verwendung von Schnappschüssen
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE102005063250A1 (de) Datenspeicherungssteuersystem, Speicher- und Rechnersystem und Betriebsverfahren
DE102009060746A1 (de) Speichersicherung
DE102018202446A1 (de) Verfahren zum Modularisieren einer Softwarearchitektur
DE3637767C2 (de)
EP1676203B1 (de) Verfahren zum schreiben von speichersektoren in einem blockweise löschbaren speicher
EP1514171B1 (de) Verfahren zur wiederherstellung von verwaltungsdatensätzen eines blockweise löschbaren speichers
DE10321104B4 (de) Verfahren zur Ablage von veränderlichen Daten
DE102016202684B4 (de) Datenmanagementvorrichtung und datenmanagementprogramm
DE10260103A1 (de) Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät
DE112015003923T5 (de) Überlagerte Löschblock-Zuordnung
DE10227256C1 (de) Verfahren zum Adressieren von blockweise löschbaren Speichern
DE10257861A1 (de) Speichersystem mit einem nichtflüchtigen Speicherelement, das direkt ohne Redundanz überschreibt, sowie das dazugehörige Schreibverfahren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8196 Reprint of faulty title page (publication) german patentblatt: part 1a6
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee