-
Ein
Ausführungsbeispiel
der vorliegenden Erfindung betrifft allgemein Massenspeicherungsvorrichtungen
und -verfahren, und insbesondere betrifft es das Kombinieren einer
nichtflüchtigen
Speichervorrichtung mit einer Speichervorrichtung, die leichter überschrieben
werden kann, um eine nichtflüchtige
Speichervorrichtung mit einem verbesserten Zugriff auf digitale
Daten und einer verbesserten Speicherung von digitalen Daten bereitzustellen.
-
Massenspeicherungs-Speichervorrichtungen
wie zum Beispiel Flash-Speicherkarten, USB-(„universeller
serieller Bus”)-Sticks
oder Festkörperplatten
(Solid State Disks) verwenden Flash-Halbleiterstrukturen, um Daten
in einer nichtflüchtigen
Speichervorrichtung zu speichern. Eine nichtflüchtige Speichervorrichtung
bezieht sich auf eine Speichervorrichtung, für die eine Stromquelle „aus”-geschaltet
werden kann, ohne dass die Inhalte des Speichers verloren gehen.
Nichtflüchtige
Speichervorrichtungen umfassen Flash-Speichervorrichtungen, die
eine elektrische Ladung semipermanent halten können, um ein oder mehrere Bits
darzustellen, oder ein „Festplattenlaufwerk” bzw. eine „Festplatte” (die auch
als Hard Disk oder Hard Drive bezeichnet werden), das bzw. die eine
magnetische Ladung semipermanent halten kann, um ein oder mehrere
Bits zu speichern. Halbleitervorrichtungen wie etwa SRAMs (Static
Random Access Memories; statische RAM-Speicher) und DRAMs (Dynamic
Random Access Memories; dynamische RAM-Speicher) werden als flüchtige Speichervorrichtungen
bezeichnet, weil sie die Inhalte ihrer Speicher verlieren, wenn eine
Vorspannungsquelle abgeschaltet wird. Eine Vorspannungsquelle umfasst,
ohne darauf beschränkt
zu sein, einen Stromkonverter, der mit einer elektrischen Stromquelle
oder einer Batterie gekoppelt ist, die sich innerhalb oder außerhalb
der Speichervorrichtung befinden kann.
-
Die
heutigen, auf Magnetkraft basierenden Massenspeicherungsvorrichtungen,
wie zum Beispiel Floppy Disks oder Festplatten, sind in sogenannte
Sektoren organisiert (wobei ein Sektor ein Teil einer „Spur” auf der
Diskette bzw. Platte ist), wobei jeder Sektor (bei Magnetplatten)
typischerweise 512 Byte speichert und jeder Sektor mit einer individuellen
logischen Blockadresse (LBA) gekennzeichnet ist. Eine LBA ist ein
logisches Adressierungsverfahren, bei dem eine feste Eins-zu-Eins-Beziehung
zwischen einem Sektor von Daten und der physischen Stelle auf der
Diskette bzw. Platte hergestellt wird, an der der jeweilige Datensektor
gespeichert wird. Das Betriebssystem eines Computers handhabt die
LBAs der Massenspeicherungsvorrichtung kollektiv und baut darauf
ein Dateisystem auf. Das Betriebssystem des Computers liest und
schreibt sequentielle Mengen von LBAs mit unterschiedlichen Blockgrößen aus
der Massenspeicherungsvorrichtung aus bzw. in diese hinein. Bei
einer Festplatte können
Daten in einer Weise von einem oder mehreren Sektoren auf einmal
frei geschrieben, gelesen oder ersetzt bzw. neu geschrieben werden.
-
Anders
als magnetische Speichervorrichtungen gibt es bei Flash-Speichervorrichtungen
einige Einschränkungen
bezüglich
des Lesens und Schreibens von Daten. Flash-Speichervorrichtungen
sind zum Beispiel in Speicherseiten bzw. Seiten (typischerweise
mit einer Größe von 4
kB (Kilobyte) plus Spielraum für
Datenschutz) und in Löschblöcke (die hier
auch als „Blöcke” bezeichnet
werden) organisiert, wobei ein Löschblock
eine Größe von 64
Seiten aufweist. Dementsprechend kann eine 4 kB-Seite eines Flash-Speichers
acht 512-Byte-Sektoren speichern. Eine Seite eines Flash-Speichers,
die nicht programmiert ist, d. h., eine Seite, die nicht bereits Daten
enthält,
kann nur als eine ganze Seite beschrieben werden. In ähnlicher
Weise können
Daten nur jeweils seitenweise gelesen werden. Ein Flash-Speicher
weist eine weitere Beschränkung
dahingehend auf, dass immer nur ein Block gleichzeitig gelöscht werden
kann. Somit muss ein ganzer Block gelesen, gelöscht, die neuen Daten mit den
vorhergehenden Daten gemischt und die gemischten Daten als ein Block
wieder neu eingeschrieben werden, damit ausgewählte Daten in einem Abschnitt
des Speichers neu geschrieben werden können. Somit können Daten
nur als ein ganzer Block überschrieben werden.
Das Schreiben und Neuschreiben bzw. Ersetzen wird allgemein als
Programmieren bezeichnet. In einem typischen (NAND-strukturierten) Flash-Speicher
wird eine Seite komplett insgesamt auf 1 en geschrieben, um vorher
gespeicherte Daten zu löschen,
und kann dann mit den zugedachten Daten neu beschrieben werden.
Außerdem
wird ein Block von Daten typischerweise in einen anderen physischen
Abschnitt der Flash-Speichervorrichtung geschrieben, um ein Verschleißproblem
abzuschwächen,
das mit einem wiederholten Speichern von Daten an dersel ben Speicherstelle
in solchen Vorrichtungen verbunden ist. Eine Übersetzungstabelle, die in
dem nichtflüchtigen
Speicher der Flash-Speichervorrichtung gespeichert ist, wird somit
in der Datenübertragungsverbindung
mit einem Hostcomputer benötigt,
um einen Sektor von Daten logisch mit seiner physischen Speicherstelle
zu assoziieren, die im Allgemeinen jedes Mal dann, wenn sie neu
beschrieben wird, woanders hin verschoben wird. Die Einschränkungen
bezüglich
des Lesens, Schreibens und Neuschreibens in einer Flash-Speichervorrichtung
sind auch auf die Übersetzungstabelle
zutreffend, die darin gespeichert ist.
-
In
Folge der Einschränkungen
beim Schreiben in Flash-Speichervorrichtungen, die oben beschrieben
worden sind, bei dem jeder Schreibzugriff ein Auslesen eines gesamten
Löschblocks,
das Durchführen
der Lösch-
und Mischoperationen und dann das Schreiben des gesamten Blocks
zurück
in eine neue Speicherstelle mit den gemischten Daten erfordert,
ist eine festgelegte Abbildung (Mapping) der LBAs auf physische
Flash-Speicheradressen unzureichend für das Verwalten von Daten,
die in solchen Vorrichtungen gespeichert werden. Bei dem normalen
Betrieb eines Hostcomputers gibt es typischerweise kleine Mengen
an Daten, die in eine neue Flash-Speichervorrichtungs-Stelle hinein
kopiert und gemischt werden müssen.
Deshalb muss eine Abbildungstabelle (Mapping-Tabelle) (eine LBA-Übersetzungstabelle)
so gestaltet und verwaltet werden, dass sie verfolgen kann, welche
LBA in welcher Flash-Speichervorrichtungs-Adresse gespeichert worden
ist. Es ist wichtig, dass diese Tabelle für die Übersetzung von logischen Adressen
in physische Adressen durch irgendwelche Einrichtungen in der nichtflüchtigen
Flash-Speichervorrichtung gespeichert wird, um einen schnellen Zugriff
auf die darin enthaltenen Daten sofort nach dem Einschalten zu erlauben.
Da es unerwartete Abschaltszenarien geben kann, sollte eine Einrichtung
zur Tabellenwiederherstellung aus nichtflüchtigen, gespeicherten Daten bereitgestellt
sein.
-
Somit
besteht ein Bedarf an einem Prozess und einem damit verbundenen
Verfahren zum Erstellen und Verwalten einer Übersetzungstabelle, die in einem
nichtflüchtigen
Speicher einer Flash-Speichervorrichtung gespeichert ist, der einen
Transfer von Daten von einem Hostcomputer zu der Flash-Speichervorrichtung
erlaubt, die Unzulänglichkeiten
herkömmlicher
Prozesse ver meidet und die Integrität einer solchen Tabelle während einer
Unterbrechung bzw. eines Ausfalls einer Vorspannungsquelle bewahren
kann.
-
Die
Erfindung löst
dieses bzw. andere Probleme durch eine Massenspeicherungsvorrichtung nach
Anspruch 1, und ein Verfahren nach Anspruch 11.
-
Vorteilhafte
Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
-
In Übereinstimmung
mit einem exemplarischen Ausführungsbeispiel
wird eine Massenspeicherungsvorrichtung und ein damit verbundenes
Verfahren bereitgestellt. In einem Ausführungsbeispiel wird die Massenspeicherungsvorrichtung
mit einer Vielzahl von Speicherverwaltungsblöcken gestaltet, und eine Übersetzungstabelle
für logische
Blockadressen (im Folgenden logische Blockadressen-Übersetzungstabelle,
kurz: LBA-Übersetzungstabelle
genannt) wird mit Zeigern auf Speicherstellen der Speicherverwaltungsblöcke ausgebildet.
Die Massenspeicherungsvorrichtung umfasst des Weiteren eine zweite
Speichervorrichtung, die mit einer Indextabelle für logische
Blockadressen (logische Blockadressen-Indextabelle) erstellt wird.
Die Indextabelle für
logische Blockadressen ist mit Indextabellenzeigern für logische
Blockadressen auf die Zeiger auf die Stellen der Speicherverwaltungsblöcke ausgebildet.
In einem Ausführungsbeispiel
ist die zweite Speichervorrichtung eine flüchtige Speichervorrichtung,
die eine Batterie umfasst, die mit der zweiten Speichervorrichtung
gekoppelt ist, um die zweite Speichervorrichtung beim Verlust oder
beim Ausfall einer Vorspannung, die mit der Massenspeicherungsvorrichtung
gekoppelt ist, mit Energie zu versorgen. In einem Ausführungsbeispiel
werden Änderungen
an der logische Blockadressen-Übersetzungstabelle
in dem zweiten Speicher gesammelt und in die logische Blockadressen-Übersetzungstabelle
geschrieben, wenn wenigstens eine Mindestmenge der Änderungen
angesammelt worden ist. In einem Ausführungsbeispiel werden Änderungen
an der logische Blockadressen-Übersetzungstabelle,
die in der zweiten Speichervorrichtung gesammelt worden sind, auf eine
neue Seite in der logische Blockadressen-Übersetzungstabelle
geschrieben, nachdem Daten auf einer alten Seite aktualisiert worden
sind. Die alte Seite wird dann gelöscht. In einem Ausführungsbeispiel
ist die logische Blockadressen-Übersetzungstabelle
so groß,
dass sie eine Anzahl an Seiten speichern kann, die größer als
eine Mindestanzahl an Seiten ist, die benötigt wird, um die Zeiger auf
die Speicherstellen der Speicherverwaltungsblöcke aufzunehmen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
Einzelheiten von einem oder mehreren Ausführungsbeispielen der vorliegenden
Erfindung sind in den beigefügten
Zeichnungen und der unten gegebenen Beschreibung dargelegt. Weitere
Merkmale, Aufgaben und Vorteile der vorliegenden Erfindung werden
aus der Beschreibung und den Zeichnungen sowie aus den Patentansprüchen deutlich.
In den Figuren bezeichnen identische Bezugszeichen im Allgemeinen
die gleichen Bauteile quer durch die verschiedenen Ansichten, die
im Interesse der Kürze im
Allgemeinen nicht noch einmal beschrieben werden. Für ein vollständigeres
Verständnis
der vorliegenden Erfindung wird nun Bezug auf die nachfolgenden
Beschreibungen genommen, die in Verbindung mit den beigefügten Zeichnungen
vorgenommen werden, in denen:
-
die 1 und 2 Blockdiagramme
von Speicherdateistrukturen einer Massenspeicherungsvorrichtung
veranschaulichen, die in Übereinstimmung
mit einem exemplarischen Ausführungsbeispiel
gestaltet ist; und
-
3 ein
Blockdiagramm einer Massenspeicherungsvorrichtung veranschaulicht,
die in Übereinstimmung
mit einem exemplarischen Ausführungsbeispiel
gestaltet ist.
-
AUSFÜHRLICHE BESCHREIBUNG VON VERANSCHAULICHENDEN
AUSFÜHRUNGSBEISPIELEN
-
Die
Ausführung
und die Verwendung der gegenwärtig
bevorzugten Ausführungsbeispiele
werden unten im Einzelnen erörtert.
Es sollte aber klar sein, dass die vorliegende Erfindung viele anwendbare
erfinderische Konzepte bereitstellt, die in einer breiten Vielfalt
von spezifischen Kontexten verwirklicht werden können. Die erörterten
spezifischen Ausführungsbeispiele
dienen le diglich zur Veranschaulichung spezifischer Möglichkeiten,
wie die Erfindung umgesetzt und verwendet werden kann, und beschränken nicht
den Schutzumfang der vorliegenden Erfindung.
-
Die
vorliegende Erfindung wird im Hinblick auf exemplarische Ausführungsbeispiele
in einem spezifischen Kontext beschrieben werden, nämlich einer
Massenspeicherungsvorrichtung, die eine flüchtige Speichervorrichtung
und eine nichtflüchtige Speichervorrichtung
umfasst, um eine nichtflüchtige Speichervorrichtung
mit einer verbesserten Speicherungsperformanz bereitzustellen.
-
Ein
Ausführungsbeispiel
der Erfindung kann auf eine Massenspeicherungsvorrichtung angewendet
werden, zum Beispiel auf ein Festkörperlaufwerk (Solid State Drive),
das mit einer Flash-Speichervorrichtung ausgebildet ist. Andere
Massenspeicherungsvorrichtungen können erstellt werden, die eine Speichervorrichtung
umfassen, die ohne weiteres überschrieben
werden kann, mit einer nichtflüchtigen Speichervorrichtung,
wie diese hier in unterschiedlichen Kontexten eingeführt wird
und erfinderische Konzepte, die hier beschrieben sind, verwendet,
wie zum Beispiel ein Festkörper-Memory
Stick für
eine digitale Kamera. Eine typische flüchtige Speichervorrichtung
kann ganz leicht überschrieben
werden, wie etwa ein SDRAM (Synchronous Dynamic Random Access Memory;
synchroner dynamischer RAM-Speicher), bei dem jeweils ein Wort nach
dem anderen überschrieben
werden kann. Aber ein Ausführungsbeispiel
kann auch mit einer nichtflüchtigen Speichervorrichtung
gestaltet werden, die leicht überschrieben
werden kann.
-
Ein
herkömmlicher
Algorithmus für
eine Halbleiter-Massenspeicherungsvorrichtung, wie zum Beispiel
eine Flash-Speichervorrichtung, verwendet eine Abbildungstabelle,
die an einer wohl definierten Stelle des Flash-Speichers gespeichert ist. Eine LBA-Nummer
wird als ein Adressenindex innerhalb dieser Abbildungstabelle verwendet,
um den Adressenzeiger der Flash-Speichervorrichtung
zu finden, der anzeigt, an welcher Stelle diese LBA gespeichert ist.
Dies gewährleistet,
dass während
einer Leseoperation nur ein oder zwei Seiten der Flash-Speichervorrichtung
für den
Prozess der Übersetzung
einer logischen Adresse in eine physische Adresse gelesen werden
müssen.
-
Ein
Vorteil dieses Lösungswegs
ist, dass die Abbildungstabelle immer konsistent und resistent gegenüber unvorhergesehenen
Energieabschalt- bzw. -ausfallereignissen ist. Ein Nachteil ist,
dass eine Adressenzeigeraktualisierung innerhalb der Abbildungstabelle
zu zusätzlichen
Zurückkopieroperationen
führt,
um das Abbildungstabellen-Indexschema für einen ganzen Adressenzeigerbereich
konsistent zu halten. Im schlechtesten Fall bewirkt jede Seitenprogrammieroperation
für Daten,
die gespeichert werden sollen, eine Seitenprogrammieroperation des entsprechenden
Teils der Abbildungstabelle. Dies verdoppelt die Anzahl an Schreiboperationen,
reduziert die gesamte Schreibperformanz und kann zu Zugriffskonfliktsituationen
(Deadlock-Situationen) führen,
in denen es nicht genügend
freien Speicher für
die Vollendung einer Datenspeicherung und einer assoziierten Abbildungstabellen-Aktualisierungsoperation
gibt.
-
Eine
Massenspeicherungsvorrichtung, zum Beispiel ein SSD („Solid-State Drive”; Festkörperlaufwerk),
in einem Ausführungsbeispiel
sammelt vorteilhafterweise Modifikationen der Abbildungstabelle
in einem internen flüchtigen
Pufferspeicher innerhalb der Festkörper-Speichervorrichtung, so
dass der Flash-Speicher auf einmal programmiert werden kann. Deshalb
ist das Verhältnis
von Seitenprogrammierungsanfragen in Folge von Datenschreibvorgängen gegenüber Seitenprogrammierungsanfragen
in Folge von Abbildungstabellen-Aktualisierungsschreibvorgängen viel
kleiner als Zwei, wie dies für den
oben erwähnten,
herkömmlichen
Algorithmus beschrieben worden ist. Die Verwendung eines kleinen
Betrags eines flüchtigen
Speichers (zum Beispiel eines DRAM, die etwa ein SDRAM) mit einer Speicherbereinigungsstrategie
ergibt eine ähnliche Performanz
für die
Durchführung
der Übersetzung der
LBAs in physische Speicheradressen. Die Speicherbereinigung bezieht
sich auf das Freimachen von vorher verwendeten Bereichen eines nichtflüchtigen
Speichers durch das Sammeln von gültigen Seiten aus Blöcken, die
ungültige
Seiten enthalten, in einen neuen Block mit weniger oder gar keinen ungültigen Seiten
in einem freien Bereich des Speichers und das Aktualisieren von
entsprechenden Einträgen
in der Übersetzungstabelle,
um die neue physische Speicherstelle für die Daten zu identifizieren.
Die Speicherbereinigung kann oftmals im Hintergrund oder während einer
Ruhezeit für
die Speichervorrichtung durchgeführt
werden.
-
Die
heutigen SSDs umfassen typischerweise einen flüchtigen Speicher, wie zum Beispiel
einen SDRAM, für
den Zweck des Speicherns in einem Cache-Speicher von Schreibdaten
für eine
Leistungsverbesserung. In einem Ausführungsbeispiel wird ein kleiner
Teil dieses SDRAM für
eine Indextabelle für einen
Teil der Übersetzung
von logischen in physische Adressen verwendet, während die gesamte Tabelle für die Übersetzung
von logischen in physische Adressen weiterhin in einem nichtflüchtigen
Speicher gespeichert wird.
-
Eine Übersetzungstabelle
enthält
LBA-Einträge
und entsprechende Flash-Speicheradressen, an denen Daten gespeichert
sind. Wenn Daten in dem Flash-Speicher überschrieben werden sollen oder
auf andere Weise einer existierenden Seite hinzugefügt werden
sollen, dann werden die entsprechenden LBA-Einträge in der Übersetzungstabelle aktualisiert.
Ein freier Bereich des Flash-Speichers, zum Beispiel 10%, wird für das Überschreiben
und das Hinzufügen
neuer Daten verwendet. Wenn neue oder modifizierte Daten in dem
Flash-Speicher gespeichert werden, werden sie in den freien Bereich geschrieben.
Seiten, die vorher in dem Flash-Speicher gespeichert worden sind
und frühere
oder anderweitig abgelaufene Daten enthalten, sind in der Übersetzungstabelle
als ungültig
markiert. Wenn der freie Bereich voll wird, vor allem wenn ein Speicherblock
eine Anzahl von ungültigen
Seiten ansammelt, wird er ein Kandidat für das Löschen in einem Speicherbereinigungsprozess.
Es sei daran erinnert, dass nur ein ganzer Speicherblock löschbar ist,
nicht einfach eine einzelne Seite.
-
Die Übersetzungstabelle
in dem Flash-Speicher weist das gleiche Problem auf. Einträge darin können nur
auf einer Blockbasis überschrieben
werden. Eine Kopier- und Mischoperation muss bei den restlichen
Daten durchgeführt
werden, damit diese in eine neue Speicherstelle geschrieben werden
können.
Es muss auch ein Speicherbereinigungsprozess bei den alten Übersetzungstabellen-Seiten
durchgeführt
werden. In Folge der sich häufig
wiederholenden Natur dieses Prozesses für eine Übersetzungstabelle ist es wichtig,
dass er effizient durchgeführt wird.
-
Nun
wird Bezug auf 1 genommen. Darin ist eine Speicherdateistruktur
eines SSD veranschaulicht, die ein Ausführungsbeispiel des Abbil dungsprozesses
veranschaulicht. Der hauptsächliche
Flash-Speicherbereich der Vorrichtung ist auf der rechten Seite
der Figur gezeigt, einschließlich
der Flash-Verwaltungsblöcke,
die quer durch den Flash-Speicherbereich verteilt sind. In einem
exemplarischen Ausführungsbeispiel
umfasst ein Flash-Verwaltungsblock acht Seiten, und jede Seite umfasst
acht Sektoren. Die Speichergrößen, die
in der Figur gezeigt sind, sind beispielhafte Größen für eine SSD-Vorrichtung mit
einer Gesamtheit von 256 GB an Flash-Speicher-Speicherungsvermögen.
-
Die
LBA-Übersetzungstabelle,
die ebenfalls in dem Flash-Speicher des SSD gespeichert ist, ist
in dem mittleren Abschnitt der Figur gezeigt. Zeiger assoziieren Übersetzungstabelleneinträge mit entsprechenden
Flash-Verwaltungsblöcken
in dem rechten Teil der Figur.
-
Eine
DRAM-LBA-Indextabelle ist in dem linken Teil der Figur mit Zeigern
auf entsprechende Einträge
in der Flash-LBA-Übersetzungstabelle
gezeigt. Ein SSD umfasst für
Gewöhnlich
einen DRAM zum Zwischenspeichern in einem Cache-Speicher/zum Zwischenspeichern
in einem Puffer-Speicher von Daten zwischen dem SSD und einem Hostcomputer während einer
Lese- oder Schreiboperation.
Ein kleiner Teil des DRAM wird in einem Ausführungsbeispiel dazu verwendet,
einen Teil der Übersetzungstabelle
zu speichern. In einem Ausführungsbeispiel
ist eine kleine Batterie in dem SSD eingeschlossen, um den Effekt
der Flüchtigkeit
der Daten in dem DRAM-Abschnitt des Speichers zu eliminieren.
-
Zur
Veranschaulichung einer beispielhaften Flash-Speicher-Leseoperation
wählt ein
Hostcomputer es aus, einen bestimmten LBA-Sektor zu lesen. Der SSD-Controller
berechnet eine DRAM-Adresse für
die LBA-Indextabelle, welche auf eine Seitenadresse in der LBA-Übersetzungstabelle
zeigt. Es sei daran erinnert, dass die LBA-Übersetzungstabelle in dem Flash-Speicherbereich des
SSD gespeichert ist. Ein weiterer Zeiger in der LBA-Übersetzungstabelle zeigt
auf den assoziierten Flash-Verwaltungsblock, um zu identifizieren,
wo der angeforderte Sektor gespeichert ist. Die entsprechende Seite
wird gelesen und zu dem Hostcomputer transferiert.
-
Nur
eine kleine LBA-Indextabelle wird in einem DRAM gespeichert. Die
LBA-Tabelle zeigt auf eine größere Tabelle,
die in dem Flash-Speicher gespeichert ist. Für die beispielhafte 256 GB-Flash-Speichervorrichtung
wird eine 64 MB-Flash-LBA-Übersetzungstabelle
benötigt.
Aber viermal so viel Speicher ist für die Flash-LBA-Übersetzungstabelle
zugewiesen, um dem Neuschreiben bzw. Ersetzen von Seiten und Blöcken Rechnung
zu tragen. Alternativ dazu kann ein anderer Speicherfaktor als Vier
für die
Größe der Flash-LBA-Übersetzungstabelle verwendet
werden.
-
Somit
muss, um einen Sektor der LBA-Übersetzungstabelle
zu ändern,
eine Kopier- und Mischoperation bei einem ganzen Block von Daten
durchgeführt
werden. Als eine Folge davon muss ein Kompromiss bezüglich der
Größe des Flash-Verwaltungsblocks
und des Betrags an Daten eingegangen werden, der typischerweise
kopiert und gemischt wird. Ein kleinerer Flash-Verwaltungsblock
führt zu
weniger Kopier- und Mischoperationen, aber zu einer größeren Speicherbereinigungsanstrengung.
-
Die
Daten, die in den Flash-Verwaltungsblöcken verwaltet werden, weisen
vorzugsweise, ohne darauf beschränkt
zu sein, eine Größe von jeweils
32 kB (512 Byte pro Sektor, 8 Sektoren pro Seite, 8 Seiten) für die beispielhafte
256 GB-Vorrichtung auf. Die beispielhafte Tabelle für die Übersetzung
von logischen in physische Blockadressen, die in der Flash-Speichervorrichtung
gespeichert ist, weist Tabelleneinträge mit jeweils 32 Zeigern auf
Flash-Verwaltungsblöcke
auf (wobei jeder Block 8 Seiten von 8 Sektoren = 32 Sektoren pro
Block enthält),
die in der Flash-Speichervorrichtung enthalten sind. Bei vier Byte
pro Zeiger liegt die Minimumgröße für jeden Übersetzungstabelleneintrag
bei 128 Byte. Um einen freien Speicherbereich für Seitenbandinformationen wie
zum Beispiel einen Zeitstempel und eine logische Blockadresse bereitzustellen,
werden die Übersetzungstabelleneinträge auf die
Größe von 256
Byte vergrößert. Eine
SSD-Vorrichtung mit 256 GB weist 8,3 Millionen Flash-Verwaltungsblöcke mit
jeweils 32 kB und deshalb 256 k (d. h., 262.144) Tabelleneinträge auf.
Somit beträgt
die Gesamtgröße der Tabelle für die Übersetzung
von logischen in physische Blockadressen wenigstens 64 MB. In dem
Beispiel, das in 1 veranschaulicht ist, ist die
Tabelle um einen Faktor Vier vergrößert. Dies bedeutet, dass drei
Viertel der Tabelleneinträge
frei oder ungültig
sind. Wie vorher beschrieben worden ist, bezieht sich ein ungültiger Tabellen eintrag
auf einen vorher geschriebenen Eintrag, dessen Daten aufgegeben
wurden, weil sie mit neuen Daten vermischt wurden oder auf andere
Weise mit neuen Daten aktualisiert wurden und in eine neue Speicherstelle
geschrieben worden sind.
-
Zur
Adressierung der 256 k Tabelleneinträge wird die gleiche Anzahl
an Zeigern benötigt.
Wenn jeder Zeiger 4 Byte aufweist, dann wird ein Gesamtbetrag von
etwa 1 MB für
die Zeiger benötigt.
Diese Zeiger werden in einem Speicher der SSD-Vorrichtung gespeichert,
der leicht überschrieben
werden kann, zum Beispiel in einem flüchtigen Speicher wie etwa einem
SDRAM.
-
Nun
wird Bezug auf 2 genommen. Darin ist in Übereinstimmung
mit einem Ausführungsbeispiel
die Speicherdateistruktur der SSD-Vorrichtung veranschaulicht, die
unter Bezugnahme auf 1 beschrieben worden ist, wobei
eine Änderung
der Abbildung von logischen Adressen auf physische Adressen veranschaulicht
ist. Die Figur veranschaulicht eine Schreiboperation in einen der
mehreren Sektoren, die in dem Flash-Speicherbereich gespeichert
sind, wobei auf den Sektor durch einen Flash-Verwaltungsblock 201 hingewiesen
wird. Die Daten, die in der SSD-Vorrichtung gespeichert werden sollen,
werden in Einheiten von Flash-Verwaltungsblöcken kopiert und gemischt.
Der Eintrag der Tabelle für
die Übersetzung
von logischen in physische Blockadressen, der die Übersetzungsinformationen
der assoziierten LBAs enthält,
wird genommen, modifiziert und an das Ende der Tabelle für die Übersetzung
von logischen in physische Blockadressen angehängt. Insbesondere werden die
Daten in dem LBA-Übersetzungstabelleneintrag 203 aktualisiert und
in eine neue/freie Übersetzungstabellenstelle 204 geschrieben.
Der Zeiger in der DRAM-Indextabelle wird entsprechend aktualisiert,
um auf die neue LBA-Übersetzungstabellenstelle
zu zeigen. Der LBA-Übersetzungstabelleneintrag 203 ist
nun ungültig.
Schließlich
wird der Zeiger in dem DRAM mit einem einfachen Schreibzugriff aktualisiert.
Auf diese Weise werden neue und alte Daten gemischt und in eine
neue Speicherstelle kopiert, auf die von einem neuen Flash-Verwaltungsblock 202 hingewiesen wird.
-
Für eine Leseoperation
muss die SSD-Vorrichtung auf die Tabelle in dem DRAM entsprechend den
angeforderten LBAs zugreifen, einen Adressenzeiger mit der Stelle
des angeforderten Tabelleneintrags in der LBA-Überset zungstabelle beschaffen und
die Seitenleseoperation dieses Tabelleneintrags ausführen, um
die Übersetzung
der logischen in die physische Adresse durchzuführen.
-
Anstatt
die modifizierten Tabelleneinträge
direkt an den Flash-Speicher anzuhängen, werden sie in einem Pufferspeicher,
vorzugsweise dem DRAM-Pufferspeicher,
gesammelt. Wenn schließlich der
Pufferspeicher die Daten einer einzelnen Seite angesammelt hat,
wird der Pufferspeicher in die Flash-Speichervorrichtung programmiert. Dies
gewährleistet,
dass bei diesem Beispiel eine Tabelleneintrag-Programmieroperation
nach 32 Kopier- und Mischoperationen von Flash-Verwaltungsblöcken ausgeführt wird.
-
Eine
Speicherbereinigungsfunktion muss bei der Flash-LBA-Übersetzungstabelle
durchgeführt werden,
um ungültige Übersetzungstabelleneinträge freizumachen,
vor allem während
Ruhezeiten der SSD-Vorrichtung, und zwar trotz der Tatsache, dass die
LBA-Übersetzungstabelle
vorzugsweise viermal größer als
der Betrag an Daten ist, die für
Gewöhnlich
erwartungsgemäß darin
gespeichert werden. Die LBA-Übersetzungstabelle
wird für
Gewöhnlich schnell
mit ungültigen
Seiteneinträgen
gefüllt
werden. Die Löschblöcke, die
für die
Tabelle für
die Übersetzung
von logischen in physische Adressen verwendet werden, werden im
Durchschnitt ein Viertel gültige
Tabelleneinträge
und drei Viertel ungültige
Tabelleneinträge
aufweisen. Deshalb können
gute Löschblockkandidaten
dort gefunden werden, wo die meisten der Tabelleneinträge bereits
als ungültig markiert
sind. Ein Löschblock
mit vielen ungültigen Seiten
kann effizient mit einer einzigen integrierten Schreiboperation überschrieben
werden, wodurch sich die Anzahl an Seiten reduziert, die separat
kopiert, gemischt und neu in viele Blöcke geschrieben werden muss.
Der Speicherbereinigungsprozess kann die restlichen gültigen Tabelleneinträge herauskopieren,
diese an das Ende der Tabelle anhängen, die SDRAM-Indextabelleneinträge dementsprechend
modifizieren und den Löschblock
löschen,
so dass ein neuer Löschblock
an die Tabelle für
das Programmieren angehängt
werden kann. Dieser Prozess gewährleistet,
dass es immer genügend
Platz für
das Anhängen
von Tabelleneinträgen
an dem Ende der Tabelle gibt, wodurch eine Deadlock-Situation vermieden
wird.
-
DRAM-Einträge können natürlich direkt überschrieben
werden. Der DRAM wird nur für
einen kleinen Teil des Indexierungsprozesses verwendet und kann
deshalb effizient durchgeführt
werden.
-
Es
muss aber besonders darauf geachtet werden, den Speicher des DRAM
zu schützen,
der für
Gewöhnlich
ein flüchtiges
Halbleiter-Speicherelement ist, aber auch ein nichtflüchtiges
Halbleiter-Speicherelement sein kann, das eine prospektive Technologie
benutzt, die die byteweise Speicherung von Daten ermöglichen
kann, ohne dass Daten in Blöcken
gelöscht
werden müssen.
Ein unbeabsichtigtes oder nicht vorhergesehenes Abschalten bzw. Unterbrechen
von Strom von einem Hostcomputer oder Entfernen einer SSD-Vorrichtung aus ihrer Buchse
ohne eine Betriebssystemfreigabe könnte den Speicher des DRAM
löschen.
Dementsprechend muss eine Stromhalteeinrichtung, wie zum Beispiel eine
kleine Batterie, oder eine andere Energiespeichervorrichtung bereitgestellt
werden, um den SSD-Controller in die Lage zu versetzen, im Falle
des Entfernens einer externen Stromquelle die Inhalte des DRAM in
den nichtflüchtigen
Flash-Speicher schreiben zu können.
Eine Haltezeit in der Größenordnung
von ein paar hundert Millisekunden kann vorteilhafterweise den SSD-Controller
befähigen, eine
nichtflüchtige
Schreiboperation durchzuführen, wodurch
ermöglicht
wird, dass die Inhalte des DRAM wiederhergestellt werden können, wenn
das System wieder mit Energie versorgt wird. Der DRAM für das beispielhafte
256 GB-SSD muss nur etwa 1 MB betragen, um 256 k Vier-Byte-Zeiger
für die
LBA-Übersetzungstabelle
speichern zu können,
die schnell aus der 256 MB LBA-Übersetzungstabelle
wiederhergestellt werden können,
wenn das System erneut mit Energie versorgt wird. Eine alternative
Einrichtung zur Wiederherstellung von Daten, die in dem DRAM beim
Abtrennen von Strom verloren gehen könnten, liegt darin, die LBA-Indextabelle
aus Daten in der LBA-Übersetzungstabelle
zu rekonstruieren, die im Vergleich zu der Speichergröße des SSD
ebenfalls eine kleine Tabelle ist.
-
Nun
wird Bezug auf 3 genommen. Darin ist ein repräsentatives
Blockdiagramm einer Massenspeicherungsvorrichtung 300 veranschaulicht,
die in Übereinstimmung
mit einem Ausführungsbeispiel aufgebaut
ist. Die Massenspeicherungsvorrichtung umfasst einen nichtflüchtigen
Speicher 301, der durch eine n Bit breite Datenleitung 306 mit
einem Hostcomputer (nicht gezeigt) ver bunden ist. Der nichtflüchtige Speicher
ist auch mit einer Spannungsquelle in dem Hostcomputer durch die
Leitung 307 verbunden. Die Leitung 307 kann eine
Vielzahl von Stromleitern umfassen, um einen Stromversorgungs-Schaltkreis ausgehend
von dem Hostcomputer herzustellen. Die Massenspeicherungsvorrichtung
umfasst des Weiteren einen flüchtigen
Speicher 302, wie zum Beispiel einen SDRAM, der mit dem nichtflüchtigen
Speicher und dem Controller 303 gekoppelt ist. Der flüchtige Speicher 302 repräsentiert einen
Speicher, der leicht überschrieben
werden kann, wie zum Beispiel jeweils ein Wort nach dem anderen.
Eine Batterie 305 ist in der Massenspeicherungsvorrichtung
eingeschlossen, um den Controller 303 in die Lage zu versetzen,
Daten von dem flüchtigen
Speicher 302 in den nichtflüchtigen Speicher 301 transferieren
zu können.
Ein zukünftiger
Speicher an Stelle des flüchtigen
Speichers 302 kann ein nichtflüchtiger Speicher sein, der
leicht überschrieben werden
kann, wodurch die Notwendigkeit für eine Batterie vermieden werden
kann. Die Batterie 305 ist mit der Leitung 307 durch
den Schalter 304 und die Batterieladekontrollvorrichtung 308 gekoppelt,
um die Batterie in die Lage versetzen zu können, den Controller, den flüchtigen
Speicher und den nichtflüchtigen
Speicher während
Perioden ohne Strom vom Hostcomputer mit Energie zu versorgen. Wenn zum
Beispiel die Stromquelle für
den Hostcomputer deaktiviert oder abgeschaltet wird oder wenn die Massenspeicherungsvorrichtung
unsachgemäß von dem
Hostcomputer abgekoppelt wird, dann kann der Controller 303 den
Schalter 304 schließen,
um die Batterie in die Lage zu versetzen, die Massenspeicherungsvorrichtung
mit Energie zu versorgen, so dass Daten von dem flüchtigen
Speicher in den nichtflüchtigen
Speicher transferiert werden können.
Der Controller kann den Schalter 304 wieder öffnen, nachdem
die Daten transferiert worden sind. Auf diese Weise können sensible
Daten, die in dem flüchtigen
Speicher enthalten sind, im Falle eines Stromausfalls ausgehend
von dem Hostcomputer und ohne wesentliche Entladung von Energie
aus der Batterie geschützt
werden.
-
Somit
ist das Konzept eingeführt
worden, eine Massenspeicherungsvorrichtung mit einer nichtflüchtigen
Speichervorrichtung zu gestalten, wobei die Massenspeicherungsvorrichtung
mit einer Vielzahl von Speicherverwaltungsblöcken und mit einer logischen
Blockadressen-Übersetzungstabelle
aufgebaut ist, die mit Zeigern auf die Speicherstellen der Speicherverwaltungsblöcke ausgebildet
ist. Die Massenspeicherungsvorrichtung umfasst des Weiteren eine zweite
Speichervorrichtung, die mit einer logischen Blockadressen-Indextabelle
gestaltet ist. In einem Ausführungsbeispiel
ist die logische Blockadressen-Indextabelle
mit logischen Blockadressen-Indextabellenzeigern auf die Zeiger
auf die Stellen der Speicherverwaltungsblöcke ausgebildet. In einem Ausführungsbeispiel
ist die Massenspeicherungsvorrichtung so konfiguriert, dass sie
Daten als Seiten in der nichtflüchtigen
Speichervorrichtung speichern und lesen kann, und dass sie Blöcke von
den Seiten in der nichtflüchtigen
Speichervorrichtung löschen kann.
In einem weiteren Ausführungsbeispiel
ist die Massenspeicherungsvorrichtung so konfiguriert, dass sie
Daten als Seiten in vorher gelöschten
Seiten in der nichtflüchtigen
Speichervorrichtung speichern kann.
-
In
einem Ausführungsbeispiel
ist die zweite Speichervorrichtung eine flüchtige Speichervorrichtung,
die eine Batterie einschließt,
die mit der zweiten Speichervorrichtung gekoppelt ist, um die zweite Speichereinrichtung
beim Verlust oder beim Ausfall einer Vorspannung, die mit der Massenspeicherungsvorrichtung
gekoppelt ist, mit Energie zu versorgen.
-
In
einem Ausführungsbeispiel
umfasst die Massenspeicherungsvorrichtung des Weiteren einen Controller,
der mit der nichtflüchtigen
Speichervorrichtung und mit der zweiten Speichervorrichtung gekoppelt
ist, und der Controller ist so konfiguriert, dass er die logische
Blockadressen-Indextabelle bei Verlust oder Ausfall einer Vorspannung,
die mit der Massenspeicherungsvorrichtung gekoppelt ist, in dem nichtflüchtigen
Speicher speichert. In einem Ausführungsbeispiel werden Änderungen
an der logischen Blockadressen-Übersetzungstabelle
in der zweiten Speichervorrichtung gesammelt und in die logische Blockadressen-Übersetzungstabelle
geschrieben, wenn wenigstens eine Mindestmenge der Änderungen
angesammelt worden ist. In einem Ausführungsbeispiel erzeugt die
Speicherung von neuen Daten in der nichtflüchtigen Speichervorrichtung
die Änderungen
an der logischen Blockadressen-Übersetzungstabelle.
Die Änderungen
an der logischen Blockadressen-Übersetzungstabelle,
die in der zweiten Speichervorrichtung angesammelt worden sind,
werden in eine Seite in der logischen Blockadressen-Übersetzungstabelle
geschrieben, nachdem vorherige Daten in der Seite aktualisiert,
auf eine andere Seite geschrieben und dann gelöscht worden sind.
-
In
einem Ausführungsbeispiel
ist die logische Blockadressen-Übersetzungstabelle
so groß ist, dass
sie eine Anzahl von Seiten speichern kann, die wenigstens zweimal
so groß wie
eine Mindestanzahl von Seiten ist, die benötigt wird, um die Zeiger auf
die Stellen der Speicherverwaltungsblöcke aufzunehmen.
-
Ein
anderes exemplarisches Ausführungsbeispiel
stellt ein Verfahren zum Gestalten einer Massenspeicherungsvorrichtung
bereit. In einem Ausführungsbeispiel
umfasst das Verfahren das Gestalten einer nichtflüchtigen
Speichervorrichtung, das Aufteilen der nichtflüchtigen Speichervorrichtung
in eine Vielzahl von Speicherverwaltungsblöcken und eine logische Blockadressen-Übersetzungstabelle, und das
Ausbilden von Zeigern auf Speicherstellen der Speicherverwaltungsblöcke in der
logischen Blockadressen-Übersetzungstabelle.
Das Verfahren umfasst des Weiteren das Gestalten einer zweiten Speichervorrichtung,
das Ausbilden einer logischen Blockadressen-Indextabelle in der
zweiten Speichervorrichtung und das Ausbilden von Zeigern in der
logischen Blockadressen-Indextabelle auf die Zeiger auf die Speicherstellen
der Speicherverwaltungsblöcke.
-
In
einem Ausführungsbeispiel
werden Daten als Seiten in der nichtflüchtigen Speichervorrichtung gespeichert
und gelesen, und die Daten werden als Blöcke der Seiten in der nichtflüchtigen
Speichervorrichtung gelöscht.
Das Verfahren umfasst des Weiteren das Speichern der Daten in den
Seiten der vorher gelöschten
Seiten in der nichtflüchtigen
Speichervorrichtung.
-
In
einem Ausführungsbeispiel
ist die zweite Speichervorrichtung eine flüchtige Speichervorrichtung.
Das Verfahren umfasst des Weiteren das Koppeln einer Batterie mit
der zweiten Speichervorrichtung, um die zweite Speichervorrichtung
im Falle eines Stromausfalls von einer Vorspannungsquelle mit Energie
zu versorgen.
-
In
einem Ausführungsbeispiel
umfasst das Verfahren des Weiteren das Koppeln eines Controllers
mit der nichtflüchtigen
Speichervorrichtung und mit der zweiten Speichervorrichtung und
das Konfigurieren des Controllers derart, dass er die logische Blockadressen-Indextabelle
beim Verlust bzw. Ausfall ei ner Vorspannungsquelle, die mit der
Massenspeicherungsvorrichtung gekoppelt ist, in der nichtflüchtigen
Speichervorrichtung speichert.
-
In
einem Ausführungsbeispiel
umfasst das Verfahren des Weiteren das Sammeln von Änderungen
an der logischen Blockadressen-Übersetzungstabelle
in der zweiten Speichervorrichtung und das Schreiben der gesammelten Änderungen
in die logische Blockadressen-Übersetzungstabelle,
wenn wenigstens eine Mindestmenge der Änderungen angesammelt worden
ist. In einem Ausführungsbeispiel erzeugt
die Speicherung von Daten in der nichtflüchtigen Speichervorrichtung
die Änderungen
an der logischen Blockadressen-Übersetzungstabelle.
Die Änderungen
an der logischen Blockadressen-Übersetzungstabelle,
die in der zweiten Speichervorrichtung angesammelt worden sind,
werden in eine Seite in der logischen Blockadressen-Übersetzungstabelle geschrieben,
nachdem Daten in einer vorher geschriebenen Seite in der logischen
Blockadressen-Übersetzungstabelle
aktualisiert worden sind, aus der vorher geschriebenen Seite gelöscht worden sind
und in eine andere Seite in der logischen Blockadressen-Übersetzungstabelle
geschrieben worden sind.
-
In
einem Ausführungsbeispiel
ist die logische Blockadressen-Übersetzungstabelle
so groß ist, dass
sie eine Anzahl von Seiten von Daten speichern kann, die wenigstens
zweimal so groß wie
eine Mindestanzahl von Seiten ist, die benötigt wird, um die Zeiger auf
die Stellen der Speicherverwaltungsblöcke aufzunehmen.
-
Obwohl
eine Massenspeicherungsvorrichtung und darauf bezogene Verfahren
für die
Anwendung in digitalen Datensystemen beschrieben worden sind, sollte
es klar sein, dass andere Anwendungen einer Massenspeicherungsvorrichtung,
wie zum Beispiel etwa der Mobilfunk und Unterhaltungssysteme, innerhalb
des breiten Schutzumfangs der Erfindung in Betracht gezogen werden
und nicht auf die Anwendungen in digitalen Datensystemen beschränkt zu sein
brauchen.
-
Obwohl
die vorliegende Erfindung vor allem in Verbindung mit spezifischen
exemplarischen Ausführungsbeispielen
gezeigt und beschrieben worden ist, sollte es den Fachleuten auf
diesem Gebiet klar sein, dass diverse Änderungen bezüglich der
Konfiguration und der Einzelheiten davon durchgeführt wer den
können,
ohne dass von dem Erfindungsgedanken und dem Schutzumfang der Erfindung,
wie sie von den nachfolgenden Patentansprüchen definiert sind, abgewichen
wird. Der Schutzumfang der Erfindung wird daher von den angehängten Patentansprüchen bestimmt,
und alle Abänderungen,
die in dem Bereich der Bedeutung und dem Bereich der Äquivalenz
der Patentansprüche
liegen, sollen von den Patentansprüchen eingeschlossen sein.