-
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.