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