-
HINTERGRUND
-
Die
Erfindung betrifft allgemein eine Technik zum Beschreiben eines
nicht-flüchtigen
Speichers.
-
Nicht-flüchtige Halbleiterspeicher,
etwa Flash-Speicher, sind für
Anwendungen attraktiv, bei denen Daten bei einem normalen Herunterfahren, bei
einem Bringen in den Schlafzustand oder bei einem Spannungsversagen
gesichert werden müssen. Ein
Speicher, der aus Flash-Speichereinheiten
gebildet ist, kann zum Speichern von Daten in einem Diskcache oder
einem Festspeicher genutzt werden. Obwohl ein typischer Flash-Speicher
eine signifikant schnellere Zugriffszeit als eine magnetische Speichereinheit
hat, können
die Zellen des Flash-Speichers, anders als die magnetischen Speichereinheiten,
typischerweise nicht erneut beschrieben werden, ohne zunächst gelöscht zu
werden.
-
Als
ein spezifisches Beispiel werden die Zellen zunächst gelöscht, bevor ein Datenbit in
einer konventionellen Flash-Speicherzelle gespeichert wird. In dem
gelöschten
Zustand ergibt die Zelle einen bestimmten logischen Zustand an,
beispielsweise den logischen Zustand „Eins". Bei einem nachfolgenden Schreibvorgang
in die Flash-Speicherzelle bleibt der Status der Zelle unverändert, wenn
eine logische Eins in der Zelle zu speichern ist. Wenn dagegen ein
logisches Null in der Zelle zu speichern ist, wird die Zelle programmiert,
um die Zelle in den logischen Zustand Null zu ändern. Ein typisches Schreiben
in eine Flash-Speicherzelle beinhaltet daher typischerweise zwei
Speicheroperationen: eine erste Operation zum Löschen der Speicherzelle und
eine zweite Operation zum Programmieren des logischen Zustands der Speicherzelle.
Diese mehreren Operationen tragen damit zur Gesamtzeit zum Schreiben des
Flash-Speichers bei.
-
Es
besteht daher ein anhaltender Bedarf für bessere Wege zum Reduzieren
der Gesamtzeit zum Schreiben in einen nicht-flüchtigen Halbleiterspeicher,
etwa einen Flash-Speicher.
-
KURZE ERLÄUTERUNG DER ZEICHNUNGEN
-
1 ist
eine Darstellung eines dynamischen Adressschemas, das entsprechend
einem Ausführungsbeispiel
der Erfindung bei einem nicht-flüchtigen
Halbleiterspeicher belegt wird.
-
2 ist
ein Blockdiagramm eines Speichersystems nach einem Ausführungsbeispiel
der Erfindung;
-
3 und 8 sind
Flussdiagramme, die Techniken wiedergeben, die in Verbindung mit
einem Schreibvorgang in einen nicht-flüchtigen Halbleiterspeicher
nach den verschiedenen Ausführungsbeispielen
der Erfindung belegt werden.
-
4 ist
eine Darstellung von Daten, die an einem Speicherort des nicht-flüchtigen
Speichers nach einem Ausführungsbeispiel
der Erfindung gespeichert werden.
-
5 ist
eine Darstellung einer logisch-zu-physikalisch Übersetzungstabelle entsprechend
einem Ausführungsbeispiel
der Erfindung.
-
6 ist
eine Darstellung einer Freistellen-Pooltabelle nach einem Ausführungsbeispiel
der Erfindung.
-
7 ist
eine Darstellung von flüchtigen
Meta-Daten entsprechend einem Ausführungsbeispiel der Erfindung.
-
9 ist
eine Darstellung einer Zwischentabelle, die entsprechend einem Ausführungsbeispiel der
Erfindung zum Rekonstruieren der logisch-zu-physikalisch Übersetzungstabelle
nach einem Spannungsausfall belegt wird.
-
10 ist
ein Flussdiagramm, das eine Technik zum Rekonstruieren der logisch-zu-physikalisch Übersetzungstabelle
nach einem Spannungsausfall entsprechend einem Ausführungsbeispiel
der Erfindung zeigt.
-
11 ist
ein Blockdiagramm eines Computersystems nach einem Ausführungsbeispiel
der Erfindung.
-
EINGEHENDE BESCHREIBUNG
-
In Übereinstimmung
mit Ausführungsbeispielen
der hier beschriebenen Erfindung wird ein dynamisches Adressieren
in Verbindung mit einem nicht-flüchtigen
Halbleiterspeicher (hier als „nicht-flüchtiger
Speicher" bezeichnet)
zum Zweck der Minimierung der Schreiblatenz des Speichers belegt.
Insbesondere ist in Übereinstimmung
mit Ausführungsbeispielen
der Erfindung, die beschrieben werden, der nicht-flüchtige Speicher
vom Standpunkt einer Software her unter Verwendung von logischen Adressen
adressiert. Unter dem Gesichtspunkt von physikalischen Lese- und
Schreiboperationen, die mit dem Speicher ausgeführt werden, übersetzt
oder mappiert das dynamische Adressieren die logischen Adressen
in physikalische Adressen des Speichers. Das dynamische Adressieren
wechselt das Mappieren ständig
zwischen den logischen und den physikalischen Adressen um sicherzustellen,
dass jede logische Schreiboperation ein Speichern der Daten an einem
zuvor gelöschten
Ort (das heißt
einer unterschiedlichen physikalischen Adresse) des nicht-flüchtigen
Speichers verursacht. Mit dem dynamischen Adressieren erzeugt jeder
logische Schreibvorgang eine einzige Operation. Dies ist mit einem dynamischen
Adressieren zu vergleichen, das zwei Zugriffe auf den nicht-flüchtigen
Speicher verursacht (einen zum Löschen/Initalisieren
des alten physikalischen Orts und die andere zum Schreiben der Daten an
dem eben gelöschten
physikalischen Ort).
-
Insbesondere
gruppiert, wie in 1 gezeigt, ein dynamisches Adressierschema 10 in Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung die physikalischen Adressen eines nicht-flüchtigen
Speichers in Freistellenpools 20, geltende Pools 30 und
belegte Pools 40. Der Freistellenpool 20 repräsentiert
die nicht-zugewiesenen physikalischen Adressen, deren zugehörige Speicherzellen
gelöscht
sind, die für
eine Programmierung vorbereitet sind und daher bereit sind, logischen
Adressen zugewiesen zu werden. Der geltende Pool 30 repräsentiert
physikalische Adressen, die den Speicherzellen zugehörig sind,
die geltende Daten speichern und den logischen Adressen zugeordnet
sind. Der belegte Pool 40 repräsentiert die falschen Adressen,
die keine geltenden Daten mehr speichern, nicht mehr logischen Adressen
zugeordnet sind und zu löschen
sind. Die physikalischen Adressen der belegten Pools 40 werden
in Freistellenpools 20 zurück gruppiert, wenn Blocklöschoperationen
belegt werden, um aufeinanderfolgende Blöcke zu löschen (beispielsweise Seiten)
physikalischer Adressen. Es ist zu beachten, dass das Blocklöschen effizienter
ist, als das Löschen
von physikalischen Adressen einer nach der Anderen in Antwort auf
jeden logischen Schreibvorgang, und weiter kann es sein, dass der nicht-flüchtige Speicher
(beispielsweise ein NAND Flash-Speicher) nur ein Blocklöschen zulässt.
-
Als
ein spezifisches Beispiel kann eine beispielhafte physikalische
Adresse 14 (zugehörig
zu einem Satz von Speicherzellen oder Speicherorten) des nicht-flüchtigen
Speichers zwischen den Freistellenpools 20, den geltenden
Pools 30 und den belegten Pools 40 in der folgenden
Weise wechseln. Zunächst
gehört
die physikalische Adresse 14 zu den Freistellenpool 20 als
ein Startup des Systems, das den nicht-flüchtigen Halbleiterspeicher
beinhaltet oder nachdem er gelöscht
worden ist. Mit anderen Worten ist die physikalische Adresse 14 dadurch, dass
sie in dem Freistellenpool 20 ist, zur Zuordnung zu einer
bestimmten logischen Adresse verfügbar. Wenn sodann Daten in
eine bestimmte logische Adresse eingeschrieben werden, wird die
physikalische Adresse der logischen Adresse zugeordnet, sodass die
Daten an der physikalischen Adresse 14 gespeichert werden;
die physikalische Adresse wird dann ein Teil des geltenden Pools 30.
Ein anderes Schreiben in die physikalische Adresse 14 kann
jedoch nicht erfolgen, ohne dass die Speicherzellen, die der physikalischen
Adresse 14 zugehörig
sind, gelöscht
werden. Wenn das nächste
Schreiben in dieselbe logische Adresse erfolgt, wird eine andere physikalische
Adresse der logischen Adresse zugeordnet und der Speicherinhalt, der
der physikalischen Adresse zugehörig
ist, wird ungeltend oder „belegt", da die physikalische
Adresse 14 ein Teil des belegten Pools 40 wird.
-
Die
Speicherzellen, die der physikalischen Adresse 14 zugehörig ist,
wird nicht notwendigerweise nach dessen „Belegung" gelöscht,
diese Speicherzellen werden vielmehr in einem Blocklöschvorgang
gelöscht.
Zu diesem Zeitpunkt werden die physikalischen Adressen 14 wieder
Teil des freien Pools 20 und können einer anderen logischen
Adresse zugeordnet werden.
-
In Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung belegt das Speichersystem 50 das oben beschriebene
dynamische Adressierschema 10 und kann in Verbindung mit
einem nicht-flüchtigen
Halbleitermassenspeicher 54 belegt werden (hier als „nicht-flüchtiger
Speicher" 54 bezeichnet),
etwa einem NAND Flash-Speicher. Der nicht-flüchtige
Speicher 54 beinhaltet ein Feld von physikalischen Speicherzellen 55,
die unter Verwendung von physikalischen Adressen adressiert sind.
In Übereinstimmung
mit einigen Ausführungsbeispielen der
Erfindung führt
ein Kontroller 52 des Speichersystems 50 ein dynamisches
Adressieren durch Wechseln zwischen logischen und physikalischen Adressräumen aus.
Insbesondere ist in Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung der Kontroller 52 mit einem flüchtigen
Speicher 60, etwa einem dynamischen Speicher mit wahlfreiem
Zugriff (DRAM) gekoppelt. Der flüchtige
Speicher 60 speichert eine logisch-zu-physikalisch Übersetzungstabelle
(hier als „L2P
Tabelle 62" bezeichnet), die
der Kontroller 52 für
Zecke des Mappierens der logischen Adressen zu den physikalischen
Adressen des Speichers 54 belegt. Dieses Mappieren ändert sich
kontinuierlich, und der Kontroller 52 frischt die L2P Tabelle 62 kontinuierlich
auf, um das Neumappieren jeder logischen Adresse zu unterschiedlichen physikalischen
Adressen nach zu verfolgen.
-
In 2 ist
angegeben, dass in Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung der flüchtige
Speicher 60 eine Freistellenpooltabelle 66 speichert,
eine Tabelle, die angibt, welche der physikalischen Adressen des
Speichers 54 in dem Freistellenpool 20 eingeschlossen
sind (siehe 1). Wenn der Kontroller 52 einen
Schreibvorgang in eine logische Adresse ausführt, wählt der Kontroller 52 im
allgemeinen eine verfügbare
physikalische Adresse aus der Freistellenpooltabelle 66 aus,
frischt die L2P Tabelle 62 auf, um die logische Adresse
zu der ausgewählten
physikalischen Adresse neu zu mappieren und führt den entsprechenden Schreibvorgang
in den nicht-flüchtigen
Speicher 54 an der ausgewählten physikalischen Adresse
aus.
-
Unter
den anderen Daten, die in dem flüchtigen
Speicher 60 gespeichert werden können, kann in Übereinstimmung
mit einigen Ausführungsbeispielen der
Erfindung der flüchtige
Speicher 60 Meta-Daten 68, die (neben anderer
möglicher
Information) eine Information bezüglich des Verbrauchszustands
des Speicherinhalts, der an jeder physikalischen Adresse gespeichert
ist, beinhaltet, speichern. In Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung geben die Meta-Daten 68 für jeden adressierbaren Ort
des nicht-flüchtigen
Speichers 54 an, ob der Dateninhalt, der an dem Ort gespeichert
ist, belegt ist, geltend ist oder frei ist. Zusätzlich zu der Freistellenpooladresse 66,
der L2P Tabelle 62 und der Meta-Datei 68 kann
der flüchtige
Speicher 60 Programmbefehle 70 speichern, die
bei ihrer Ausführung den
Kontroller dazu veranlassen, einen oder mehreren des physikalischen
Schreibens der Adressübersetzung
und der Rettungstechniken bei Spannungsausfall ausführen, die
hier offenbart sind.
-
Der
Kontroller 52 verwendet, um zusammenzufassen, den flüchtigen
Speicher 60 zum Speichern von Information, die das Mappieren
von logisch-zu-physikalisch-Adressen angibt und die Zustände der
adressierbaren Speicherorte, des nicht-flüchtigen Speichers 54 angibt.
Es kann vorteilhaft sein, derartige Information in dem flüchtigen Speicher 60 zu
speichern, sich mit einem nicht-flüchtigen Speicher (etwa dem
Speicher 54) aufgrund der relativ schnellen Zugriffszeit
zu dem flüchtigen
Speicher 60 gegeben, die hohe Anzahl von Zugriffen, die zum
Erhalten dieser Information belegt werden. Die flüchtige Information
kann bei einem Schlüsselereignis,
beispielsweise einem Herunterfahren, einem Ruhezustand, einem Sperren,
dem Erkennen einer geringen Spannung usw. in dem nicht-flüchtigen
Speicher gespeichert werden und daraus bei einem nachfolgenden Neustart/Fortsetzen
ausgelesen werden.
-
Im
Allgemeinen ist es jedoch ein mögliches Problem
bei dieser Technik, dass die Information, die in dem flüchtigen
Speicher 60 gespeichert ist, in dem Fall eines Spannungsabfalls
an dem Speichersystem 50 verloren ist. Obwohl ein periodisches
Back-up Inhalte der flüchtigen Speicher 60 sichern
kann, können
diese Back-ups unzureichend sein, um verlorene Information zurück zu gewinnen.
Bei der Wiederherstellung der Spannung würde der Kontroller 52 ohne die
Merkmale der Erfindung, die nachfolgend offenbart werden, der Kontroller 52 in
Unkenntnis des logisch-zu-physikalisch Mappierens sein, und der
Verbrauchszustände
der verschiedenen adressierbaren Speicherorte des flüchtigen
Speichers 54 und wäre daher
nicht dazu in der Lage, die Information zurück zu gewinnen, die in dem
flüchtigen
Speicher 60 gespeichert war.
-
Eine
andere mögliche
Technik, die es dem Kontroller 52 erlaubt, die Information
zu rekonstruieren oder zurück
zu gewinnen, die in dem flüchtigen Speicher 60 vor
dem Spannungsausfall gespeichert war, ist eine Technik, in der der
Kontroller 52 alle erforderliche Satzinformation in einem
nicht-flüchtigen Speicher,
etwa dem nicht-flüchtigen
Speicher 54, beinhaltet. Als spezifisches Beispiel kann
der Kontroller 52, um dieses auszuführen, zwei Schreiboperationen in
dem nicht-flüchtigen
Speicher 54 für
jeden logischen Schreibvorgang ausführen. Insbesondere kann bei
dieser Technik der nicht-flüchtige
Speicher 54 zum Speichern von gegenwärtiger Meta-Daten-Zustandsinformation
belegt werden um anzugeben, ob eine bestimmte physikalische Zelle
gegenwärtig
geltend oder belegt ist. Bei jedem logischen Schreibvorgang kann
der Kontroller 52 daher die neu zugewiesenen physikalische
Adresse beschreiben, und die vorangehend zugewiesene physikalische Adresse
beschreiben, um die physikalische Adresse als belegt zu markieren.
Die mögliche
Schwierigkeit dieser Anordnung ist, dass zwei Schreibvorgänge, in den
nicht-flüchtigen
Speicher für
jeden einzelnen logischen Schreibvorgang verwendet werden, wodurch die
Schreiblatenz des Speichers 54 erhöht wird.
-
In Übereinstimmung
mit Ausführungsbeispielen
der hier beschriebenen Erfindung führt der Controller einen einzigen
(statt beispielsweise zwei) Schreibvorgänge in den nicht-flüchtigen
Speicher 54 für
jeden logischen Schreibvorgang aus. Um ein Rückgewinnen der Information
zu erlauben (etwa der Information, die in der L2P Tabelle 62 und
der Freistellenpooltabelle 66 gespeichert ist), die in
dem flüchtigen
Speicher 60 nach einem Spannungsausfall gespeichert ist,
speichert der Kontroller 52 bei jedem physikalischen Schreibvorgang
eine Abfolgeinformation, etwa einen Zeitstempel oder eine Sequenzzahl, in
den nicht-flüchtigen
Speicher 54. Insbesondere erzeugt der Kontroller 52 in Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung eine globale Sequenzzahl für jeden Schreibvorgang in den nicht-flüchtigen
Speicher 54. Der Kontroller 52 erhöht die globale
Sequenzzahl für
jeden Schreibvorgang, so dass die Sequenzzahl einen zunehmenden
Wert hat für,
zum Beispiel, die Schreibvorgänge.
Wie unten beschrieben, werden die Sequenzzahlen von dem Kontroller 52 nach
einem Spannungsausfall belegt zum Rekonstruieren der Zeitlinie der
vorangehenden Schreibvorgänge
(die vor dem Spannungsausfall aufgetreten sind) zum Bestimmen, welche adressierbaren
Orte des nicht-flüchtigen
Speichers 54 geltende Daten speichern (und damit auch bestimmen,
welche Orte belegte Daten speichern).
-
Es
wird jetzt auf 3 Bezug genommen. In Übereinstimmung
mit einigen Ausführungsbeispielen der
Erfindung führt
der Kontroller 52 allgemein eine Technik 74 in
Verbindung mit logischen Schreibvorgängen aus. Entsprechend der
Technik 74 ordnet der Kontroller 52 (Block 76)
unterschiedlichen physikalischen Speicherorten eine logische Adresse
für unterschiedliche
Schreibvorgänge
zu. Der erste Schreibvorgang in die erste logische Adresse beschreibt
der Kontroller 52 eine erste physikalische Adresse des nicht-flüchtigen
Speichers 54, und bei dem nächsten Schreibvorgang in diese
logische Adresse beschreibt der Kontroller 52 eine zweite
physikalische Adresse des nicht-flüchtigen Speichers 54.
Entsprechend der Technik 74 speichert der Kontroller 52 (Block 78)
Sequenzzahlen und logische Adressen in den physikalischen Speicherorten,
die zusammen den letzten physikalischen Speicherort angeben, der
der logischen Adresse zugewiesen war. Wie oben beschrieben, erlauben
es die Sequenzzahlen dem Kontroller, die Information in dem flüchtigen
Speicher nach dem Auftreten eines Spannungsausfalls wiederherzustellen.
-
4 zeigt
beispielhaft Daten 80, die an jedem adressierbaren Speicherort
des nicht-flüchtigen Speichers 54 in Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung gespeichert werden können. Die Daten 80 weisen
Inhaltsdaten 82 auf, was die Daten sind, die Gegenstand
des entsprechenden logischen Schreibvorgangs sind. Die Daten 80 weisen
weiter Meta-Daten 84 auf, die verschiedene Information
bezüglich
des Status der Inhaltsdaten 82 einschließen. Datenfelder 86 und 87 geben
die logische Adresse der Sequenzzahl an, die jeweils mit dem Schreibvorgang
zugehörig
sind, um die Inhaltsdaten 82 zu speichern, die Teil der
Meta-Daten 84 sein können.
Für Anwendungen,
bei denen der nicht-flüchtige
Speicher 54 als ein Disk-Cache belegt wird, können die
Meta-Daten 84 Daten bezüglich
des Status der zugehörigen
Cachelinie betreffen. Die Meta-Daten 84 können andere
und/oder unterschiedliche Daten, als die hier beispielhaft diskutierten
Daten speichern.
-
Zusätzlich können die
Meta-Daten 84 den Verbrauchszustand der Inhaltsdaten 82 angeben, etwa
ob die Inhaltsdaten 82 belegt sind oder geltend sind. Der
angegebene Verbrauchszustand muss jedoch nicht der gegenwärtige sein,
da der Kontroller 52 nicht für jeden logischen Schreibvorgang
den Inhalt der physikalischen Adresse, die zuvor zu der logischen
Adresse mappiert war, als belegt markiert. Mehrere Orte des nicht-flüchtigen
Speichers 54 können
daher Meta-Daten beinhalten, die dieselbe logische Adresse angeben
und angeben, dass die zugehörigen
Inhaltsdaten 82 geltend sind. Diese Information, die in
dem flüchtigen
Speicher beinhaltet ist, wird von dem Kontroller 52 belegt,
um die geltenden Daten aus den belegten Daten während normaler Operationen
auszusortieren, und in dem Fall eines Spannungsausfalls gewinnt
der Kontroller 52 das Speichersystem 50 von dem
Leistungsausfall durch Lesen der Sequenzzahlen aus dem nicht-flüchtigen Speicher 54 zurück, um die
geltenden Daten aus den geltenden Daten auszusortieren, und die
Information zu rekonstruieren, die zuvor in dem flüchtigen
Speicher 60 gespeichert war.
-
Die
Sequenzzahlen sind, wie oben gesagt, global, bei einigen Ausführungsbeispielen
der Erfindung, sind die Sequenzzahlen für jedes Schreiben in den nicht-flüchtigen
Speicher 54 unterschiedlich, unabhängig von den logischen Adressen.
Bei anderen Ausführungsbeispielen
der Erfindung muss eine Sequenzzahl jedoch nur einheitlich zu jeder
logischen Adresse sein, der Kontroller 52 kann daher Sequenzzahlen
(hier als „lokale
Sequenzzahlen" bezeichnet) in
dem nicht-flüchtigen
Speicher 54 zu speichern, die sich über den gesamten Bereich erstrecken,
aber unterschieden werden durch die zugehörigen logischen Adressen. Es
ist so beispielsweise möglich,
dass der nicht-flüchtige
Speicher 54 eine logische Sequenzzahl von „5" für die logische
Adresse A speichert, und eine logische Sequenzzahl von „5" für die logische Adresse
D. Ein möglicher
Nachteil der Verwendung lokaler Sequenzzahlen ist, dass mehrere
Zähler
belegt werden, zum Erzeugen von Sequenzzahlen für verschiedene logische Adressen,
statt eines einzigen Zählers
(für die
globale Sequenzzahl). Ein möglicher Vorteil
der Verwendung von lokalen Sequenzzahlen ist, dass die entsprechende
Datenfeldgröße in den Meta-Daten 84 kleiner
ist.
-
5 zeigt
die L2P Tabelle 62 in Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung. Die L2P Tabelle 62 weist ein festes Feld 93 auf,
das N-Eingänge 94 (Eingänge 941 , 942 ,
... 94N sind als Beispiele gezeigt)
hat, von denen jeder einer bestimmten logischen Adresse zugehörig ist
und eine Angabe der physikalischen Adresse für die logische Adresse speichert.
Die Eingänge 94 des
festen Feldes 93 sind von einem logischen Adresszeiger 91 indiziert
zum Zwecke des Rückgewinnens
einer gegenwärtigen
physikalischen Adresse für
eine bestimmte logische Adresse.
-
Nachdem
Daten in einer bestimmten physikalischen Adresse gespeichert sind,
werden, wie oben beschrieben, die Daten, die an dem entsprechenden
Speicherort gespeichert sind, belegt, und die entsprechende physikalische
Adresse wird für
die logische Adresse "ungeltend". In Übereinstimmung mit
einigen Ausführungsbeispielen
der Erfindung kann der Eingang 94 einen vorgegebenen Wert
speichern (etwa zum Beispiel alle als ein Wert von "1en"), um eine ungeltende
physikalische Adresse anzugeben. Alternativ können in Übereinstimmung mit einigen
Ausführungsbeispielen
der Erfindung die flüchtigen
Meta-Daten 68 angeben, welche der physikalischen Adressen
und welche belegt sind, bei einer anderen Alternative können bei
einigen Ausführungsbeispielen
der Erfindung der L2P Tabelle 62 ein Bit einschließen, das
jedem Eingang zugehörig
ist, um anzugeben, ob die entsprechende physikalische Adresse ungeltend
oder geltend ist. Es sind so viele Variationen möglich, sie liegen in dem Schutzbereich der
beiliegenden Ansprüche.
-
6 zeigt
die Freistellenpooltabelle 66 in Übereinstimmung mit einigen
Ausführungsbeispielen der
Erfindung. Die Freistellenpooltabelle 66 weist P-Eingänge 100 (Eingänge 1001 , 1002 ,
... 100P , dargestellt als Beispiel)
auf, von denen jeder eine physikalische Adresse eines Speicherorts
angibt, der Teil des Freistellenpools 20 ist (siehe 1).
Die P-Zahl von Eingängen
der Freistellenpooltabelle 66 variiert kontinuierlich,
da die physikalischen Adressen kontinuierlich aus der freien Pooltabelle
für neue
Schreibvorgänge
genommen werden und der Freistellenpooltabelle 66 nach
einem Blocklöschvorgang
zugefügt
werden. In Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung kann die Freistellenpooltabelle 66 einen
ersten First-in First-out (FIFO) zu Buffer 99 oder eine
Schlange (als Beispiel) aufweisen, in dem die Eingänge 100 an
dem einen Ende des FIFO-Buffers 99 zugefügt werden,
und die Eingänge
den logischen Adresse an dem anderen Ende des Buffers zugeordnet
werden. Andere Anordnungen sind möglich und liegen in dem Schutzbereich der
angefügten
Ansprüche.
-
7 zeigt
die volatilen Meta-Daten in Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung. Die volatilen Meta-Daten 68 können in
der Form eines festen Feldes 109 angeordnet sein, das Q-Eingänge 110 aufweist
(Eingänge 1101 , 1102 ,
... 1101 , 110Q ,
als Beispiele gezeigt) von denen jedes mit einem der physikalischen
Adresse des nicht-flüchtigen
Speichers 54 zugehörig
ist. Die Eingänge 110 können so
indiziert sein unter Verwendung eines physikalischen Adresszeigers 111.
Wie in 7 gezeigt, kann jeder Eingang 110 angeben,
ob die zugehörige
physikalische Adresse belegte oder geltende Daten beinhaltet. Weiter
kann in Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung jeder Eingang 110 angeben, ob die zugehörige physikalische
Adresse gelöschten
oder freien Speicherorten zugehörig
ist. Es sind so viele Variationen möglich und liegen innerhalb
des Schutzbereichs der angefügten
Ansprüche.
-
Es
wird auf 8 Bezug genommen. Der Kontroller 52 (siehe 2)
kann im wesentlichen eine Technik 150 in Antwort auf einen
logischen Schreibvorgang ausführen.
Der logische Schreibvorgang zielt auf eine logische Adresse und
gibt Daten an, die unter der logischen Adresse zu speichern sind.
Nach der Technik 150 gewinnt der Kontroller 52 eine
physikalische Adresse für
die logische Adresse, etwa durch Verwenden der logischen Adresse
zum Nachschlagen der bestimmten physikalischen Adresse aus der L2P
Tabelle 62 (siehe 2), wie
in Block 152 gezeigt. Der Kontroller 52 bestimmt
sodann (Raute 154), ob die physikalische Adresse geltend ist.
Dies ist während
des normalen Vorgangs sehr häufig
der Fall, obwohl eine bestimmte physikalische Adresse nach dem anfänglichen
Starten des Speichersystems 50 einem Freistellenpool zugehörig sein kann
(siehe 2).
-
Wenn
der Kontroller 52 bestimmt (Raute 154), dass die
gegenwärtige
physikalische Adresse geltend ist, markiert der Kontroller 52 (Block 158)
die gegenwärtige
physikalische Adresse in der L2P Tabelle 62 als geltend.
Wenn die gegenwärtige
physikalische Adresse gegenwärtig
geltende Daten speichert, entsprechend dem hier diskutierten dynamischen
Adressierungsschema, wird eine andere physikalische Adresse verwendet
(wie weiter unten beschrieben), um die Daten zu speichern, die Gegenstand
des gegenwärtigen
logischen Schreibvorgangs sind. Sodann frischt der Kontroller 52 die
flüchtigen Meta-Daten 68 auf,
um anzugeben, dass die Inhaltsdaten 82 (siehe 2 und 4)
an der gegenwärtigen
physikalischen Adresse sind.
-
Entweder
nach dem Block 162 oder nach dem Bestimmen (Raute 154),
dass die gegenwärtige physikalische
Adresse ungeltend ist, bestimmt der Kontroller 52 (Raute 160),
ob es Zeit ist, den Freistellenpool 20 aufzufüllen. Bei
einigen Ausführungsbeispielen
der Erfindung kann der Kontroller 52 die Anzahl der physikalischen
Adressen beobachten, die den Freistellenpool 20 bilden.
Bei Bestimmung, dass die Zahl unter einen vorgegebenen Stellenwert
gefallen, kann der Kontroller 52 Aktionen ausführen, um den
Freistellenpool 20 aufzufüllen. Beispielsweise können diese
Aktionen ein Neuanordnen (Block 164) von verwendeten Zellen
in einen benachbarten Block. Diese Relokation kann das Bewegen von adressierbaren
Speicherorten des nicht-flüchtigen Speichers 54,
die geltend sind und belegt sind mit einem zugehörigen Auffrischen der flüchtigen
Daten 60, einschließen.
Nachdem dieser benachbarte Block erstellt ist, löscht der Kontroller 52 den
Block, wie in dem Block 166 angegeben. Nachfolgend frischt
der Kontroller 52 (Block 170) die Freistellenpooltabelle 66 auf.
-
Unabhängig davon,
ob der Kontroller 52 den Freistellenpool 20 auffüllt, fragt
der Kontroller 50 entsprechend der Technik 150 (Block 174)
die nächste physikalische
Adresse aus dem Freistellenpool 20 ab (zum Ersetzen der
gegenwärtigen
physikalischen Adresse), und erhöht
(Block 178) einen Sequenzzähler. Es wird für das in
Verbindung mit 8 diskutierte Ausführungsbeispiel
angenommen, dass ein globaler Sequenzzähler verwendet wird. Es kann
jedoch, wie oben diskutiert, ein gesonderter lokaler Sequenzzähler für jede logische
Adresse in Übereinstimmung
mit anderen Ausführungsbeispielen
der Erfindung verwendet werden.
-
Der
Kontroller 52 schreibt zusammen (Block 180) die
Inhaltsdaten und Meta-Daten (die die Sequenzzahl und die logische
Adresse beinhalten) unter die neue physikalische Adresse. Nachfolgend frischt
der Kontroller 52 (Block 182) die L2P Tabelle 62 auf,
um die neue physikalische Adresse zu der logischen Adresse zu mappieren
oder zuzuordnen.
-
Zum
Zwecke der Rekonstruktion der L2P Tabelle 62 nach einem
Spannungsausfall verwendet der Kontroller 52 eine temporäre Tabelle 190,
ein beispielhaftes Ausführungsbeispiel
der Tabelle ist in 9 gezeigt. Die Tabelle 190 weist
N Zweitupleeingänge 192 auf
(Eingänge 1921 , 1922 ,
... 192N , dargestellt als Beispiele)
wobei jeder einer bestimmten logischen Adresse zugeordnet ist. Der
Kontroller 52 kann so einen logischen Adresszeiger 197 zum
Zwecke des Nachschlagens eines bestimmten Eingangs 192 verwenden.
In Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung weist jeder Eingang 192 ein Feld 194 auf,
das eine physikalische Adresse als logische Adresse angibt, und
ein Feld 196, das die letzte (und größte) Sequenzzahl, die bisher
gefunden worden ist, angibt. Der Kontroller 52 frischt
so die Eingänge 192 auf,
wenn der Kontroller 52 den nicht-flüchtigen Speicher 54 (nach
einem Leistungsausfall) abtastet, so dass bei dem Ende der Anfrage
jeder Eintrag 192 die zuletzt verwendete physikalische
Adresse für
jede logische Adresse angibt (d. h. die physikalische Adresse mit
der höchsten Sequenzzahl).
-
Bei
einem spezifischeren Beispiel der Verwendung der Tabelle 190 führt in Übereinstimmung mit
einigen Ausführungsbeispielen
der Erfindung mit der Kontroller 52 allgemein eine Technik 200 aus,
die in 10 gezeigt ist. Nach dieser
Technik 200 initialisiert (202) der Kontroller 52 die
Tabelle 190. Diese Initialisierung kann, beispielsweise,
das Speichern von Werten (wie beispielsweise "–1") in jedem Eingang 192 (der
Tabelle 190) einschließen,
die nicht einer physikalischen Adresse oder der letzten Sequenznummer
entspricht, um den initialisierten Status des Eingangs 192 anzugeben.
Der Kontroller 52 liest sodann (Block 204) Meta-Daten
aus der nächsten
physikalischen Adresse des nicht-flüchtigen Speichers 54.
Wenn die Meta-Daten angeben, dass der Speicherinhalt ungeltend ist,
bestimmt der Kontroller 52 (Raute 208) ob eine
andere physikalische Adresse zu verarbeiten ist und, wenn dem so
ist, kehrt er zu dem Block 204 zurück. Eine Rekonstruktion des
Freistellenpools und des Belegtpools kann in Übereinstimmung mit einigen
Ausführungsbeispielen der
Erfindung in demselben Durchlauf erfolgen.
-
Wenn
der Kontroller 52 bestimmt (Raute 206), dass die
Inhaltsdaten geltend sind, gewinnt der Kontroller 52 (Block 210)
den letzten Sequenzzahleintrag aus der Tabelle 190 für die bestimmte
logische Adresse zurück,
die der physikalischen Adresse zugehörig ist. Eine Angabe dieser
logischen Adresse wird in dem Speicherort des nicht-flüchtigen
Speichers 54 gespeichert. Wenn der Kontroller 52 bestimmt
(Raute 214), dass die Sequenzzahl geltend ist (d. h. der
Kontroller 52 bestimmt, dass die Sequenzzahl nicht der
initialisierte Wert ist), bestimmt der Kontroller 52 (Raute 216),
ob die gegenwärtige
Sequenzzahl die größte Sequenzzahl
für die
logische Adresse bisher ist. Falls nicht, kehrt die Steuerung zu der
Raute 208 zurück.
Ansonsten ist die letzte physikalische Adresse, die für die logische
Adresse (wie insoweit angegeben in der Abtastung) lokalisiert, und der
Kontroller 52 schreibt (Block 220) zu den Meta-Daten
an der vorangehenden physikalischen Adresse um anzugeben, dass die
entsprechenden Inhaltsdaten "belegt" sind. Nachfolgend
frischt der Kontroller 52 (Block 222) die Felder 194 und 196 (siehe 9)
der Tabelle 190 für
die entsprechende logische Adresse auf. Die Steuerung schreitet
sodann zu der Raute 208 fort, in der der Kontroller 52 bestimmt, ob
eine andere physikalische Adresse verarbeitet wird. Falls nicht,
hat der Kontroller 52 die Abtastung abgeschlossen, und
die Tabelle 190 ist erstellt. Es ist zu beachten, dass
neben den Eingängen 196 (siehe 9),
die Tabelle 190, die Rekonstruierte L2P Tabelle 62 bildet.
Der Kontroller 52 kann hinterher in Übereinstimmung mit einigen
Ausführungsbeispielen der
Erfindung die Daten 194 bei der Beendigung des Abtastens
extrahieren, um die L2P Tabelle 62 zu rekonstruieren.
-
Das
Speichersystem 50 (siehe 2), kann in
einer Vielzahl von unterschiedlichen Anwendungen verwendet werden,
es sind so viele unterschiedliche Ausführungsformen der Erfindung
möglich
und liegen innerhalb des Schutzbereiches der beiliegenden Ansprüche. Beispielsweise
kann in Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung das Speichersystem eine Festplatte, und bei anderen
Ausführungsbeispielen
der Erfindung kann das Speichersystem 50 ein Disk-Cache
oder ein Cache für
mehrere Disks oder RAID Volumen sein. 11 zeigt
ein beispielhaftes Ausführungsbeispiel einer
Computerarchitektur 250, die das Speichersystem 50 aufnimmt.
Diese Speicherarchitektur 250 kam beispielsweise in einem
Desktop oder einem Laptop verwendet werden.
-
Das
Computersystem 250 weist einen Prozessor 252 auf
(beispielsweise einen oder mehrere Mikroprozessoren), der mit einem
Systembus 256 gekoppelt ist. Das Computersystem 250 kann
weiter eine North Bridge aufweisen oder aber einen Speicherhub 260,
der mit dem Systembus 256 gekoppelt ist, zum Zwecke der
Erstellung einer Kommunikation zwischen dem Prozessor 252 und
dem Systemspeicher, etwa einem dynamischen Speicher mit wahlfreiem
Zugriff (DRAM) 60. In Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung ist das DRAM ein Ausführungsbeispiel eines flüchtigen Speichers 60,
obwohl andere flüchtige
Speicher bei anderen Ausführungsbeispielen
der Erfindung verwendet werden können.
Der DRAM 60 kann mit dem Speicherhub 260 über einen
Speicherbus 262 verbunden sein. Der Speicherhub 260 kann
in einigen Ausführungsbeispielen
der Erfindung aufweisen den Controller 250, obwohl der
Controller 250 von dem Speicherhub 260 bei anderen
Ausführungsbeispielen der
Erfindung gesondert sein kann.
-
In Übereinstimmung
mit einigen Ausführungsbeispielen
der Erfindung ist, wie in 11 gezeigt,
der nicht-flüchtige
Speicher ein NAND Flash Speicher, obwohl in Übereinstimmung mit anderen Ausführungsbeispielen
der Erfindung andere Arten von nicht-flüchtigen Speichern an dessen
Stelle verwendet werden können.
Beispielsweise kann bei anderen Ausführungsbeispielen der Erfindung
ein ferro-elektrischer Polymerspeicher anstelle des NAND Flash Speichers
verwendet werden.
-
Der
Speicherhub 260 kann bei einigen Ausführungsbeispielen der Erfindung
andere Busse mit dem Systems 256 verbinden, etwa einem
Peripheral Component Interconnect (PCI) Bus 272 und einem Accelerated
Graphics Port (AGP) Bus 270.
-
Die
PCI Spezifikation ist von Special Interest Group, Portland, Oregon
97214 erhältlich.
Der AGP ist in ihren Einzelheiten in Accelerated Graphics
Port Interface Spezifikation, Refision 1.0, veröffentlicht am 31. Juli 1996
von der Intel Corporation of Santa Clara, Kalifornien,
beschrieben. Der PCI Bus 272 kann, beispielsweise, eine
Network Interface Card (NIC) 273 mit dem PCI Bus 272 koppeln
und der AGP Bus 270 kann, beispielsweise, einen Displaytreiber 275 koppeln,
der ein Display an den Systembus 256 treibt.
-
Wie
in 11 beschrieben, kann in Übereinstimmung mit einigen
Ausführungsbeispielen
der Erfindung der Speicherhub 260 mit einer South Bridge gekoppelt
sein oder einem Eingangs/Ausgangs I/O Hub 280. Der I/O
Hub 280 kann Schnittstellen für einen CD-ROM Treiber 290 und
einen Harddisktreiber 292 schaffen. Weiter kann der I/O
Hub 280 eine Schnittstelle für einen I/O Expansionsbus 282 bilden. Ein
I/O Controller 284 kann mit dem I/O Expansionsbus 282 gekoppelt
sein und kann Eingangsdaten von einer Maus 286 und einer
Tastatur 290 aufnehmen.
-
Es
ist zu beachten, dass die in 11 gezeigte
Architektur lediglich beispielhaft ist, andere Variationen sind
möglich
und liegen im Schutzbereich der beiliegenden Ansprüche.
-
Obwohl
die Erfindung unter Bezugnahme auf eine begrenzte Anzahl von Ausführungsbeispielen offenbart
worden ist, wird der Fachmann, der diese Offenbarung gelesen hat,
anerkennen, dass viele Modifikationen und Variationen möglich sind.
Die beiliegenden Ansprüche
sollen derartige Modifikationen und Variationen abdecken, soweit
diese in den wahren Grundgedanken und Schutzbereich der Erfindung
fallen.
-
ZUSAMMENFASSUNG
-
Eine
Technik weist das Ausführen
einer Mehrzahl von Schreiboperationen zum Speichern von Daten an
unterschiedlichen physikalischen Speicherorten auf. Jede der physikalischen
Speicherorte ist einer logischen Adresse zugehörig, die mit einer der physikalischen
Adressen geteilt wird. Die Technik weist das Speichern von Sequenzinformation
in den physikalischen Speicherorten zum Angeben, welche der Schreiboperationen
zuletzt stattgefunden hat, auf.