-
Die
vorliegende Erfindung betrifft eine Flashspeicher-Steuervorrichtung,
eine Vorrichtung zum Steuern eines Flashspeichers, ein Flashspeicher-System und ein Verfahren
zum Verwalten von Abbildungsdaten eines Flashspeichers.
-
Vielfältige Arten
von Personal-Computern, beispielsweise Desktop-Computer für Büros und Laptop-Computer
für mobile
Anwendungen, sind für den
geschäftlichen
und persönlichen
Gebrauch entwickelt worden. Ein Computersystem kann einen Hauptspeicher
und eine externe Speichervorrichtung beinhalten. Die externe Speichervorrichtung
kann sich durch eine große
Speicherkapazität
und einen niedrigen Stückpreis
auszeichnen. Externe Speichervorrichtungen umfassen ein herkömmliches
Festplattenlaufwerk (HDD) und ein Floppy-Disk-Laufwerk (FDD), das
mit einem Platten-Speichermedium
verwendet wird. Allgemein bietet Plattenspeicherung eine große Speicherkapazität zu einem
niedrigen Preis, erfordert jedoch unter Umständen aufwändige mechanische Techniken
zum Durchführen
unterschiedlicher Operationen, z. B. Suchen auf der Platte, mit
einem Magnetkopf. Auf diese Weise kann die Speicherplatte durch
physikalische Einwirkungen zerstört
werden, was sie weniger zuverlässig
als andere Arten von Speichervorrichtungen macht. Externe Halbleiter-Speichervorrichtungen,
die einen Flashspeicher verwenden, beispielsweise Flash-Electrically-Erasable-Programmable-Read-Only-Memory
(EEPROM), schaffen eine ausführbare
Alternative zur Plattenspeicherung in beliebigen Umgebungen. Flashspeicher-Vorrichtungen
sind nicht-flüchtige
Speichervorrichtungen, die mehr als einmal programmierbar sind.
Darüber
hinaus besitzen Flashspeicher-Vorrichtungen relativ einfache Strukturen,
die bei niedrigen Kosten herstellbar sind. Da eine Flashspeicher-Vorrichtung
nur wenig Energie verbraucht und kompakt, leicht und weniger anfällig gegenüber physikalischen
Einwirkungen ist, sind Flashspeicher-Vorrichtungen oftmals für mobile Anwendungen
geeignet. Ein Nachteil bei der Verwendung einer Flashspeicher-Vorrichtung
betrifft das Erfordernis, dass eine Löschoperation vor einer Programmieroperation
durchgeführt
werden sollte. Ein weiterer Nachteil betrifft das Erfordernis der
Verwendung hoher Spannungen (z. B. 12 V oder 20 V) zum Durchführen von
Löschoperationen.
-
Ein
Hostprozessor kann auf eine externe Speichervorrichtung zugreifen,
indem er eine logische Adresse erzeugt. Die logische Adresse verweist auf
einen beliebigen Ort in einem logischen Speicherbereich, der durch
Host-Software, d.
h. ein Betriebssystem oder eine Anwendung, erkannt wird. Eine logische
Adresse wird in eine physikalische Adresse umgewandelt, die einem
physikalischen Speicherplatz einer externen Speichervorrichtung
entspricht. Im Allgemeinen benötigt
eine externe Speichervorrichtung, die Flashspeicher verwendet, zusätzliche Software,
die als Disk-Emulations-Software
bezeichnet wird, um während
eines Zugriffsvorgangs die Kompatibilität mit dem Host zu gewährleisten.
Die Kompatibilität
zwischen Host und der externen Flash-Speichervorrichtung kann erreicht
werden, indem ein herkömmliches
Dateisystem, wie eine Flash-Translationsschicht (FTL), ausgeführt wird.
In diesem Fall erkennt der Hostprozessor die externe Flash-Speichervorrichtung
als eine HDD bzw. einen SDRAM und greift in derselben Weise auf
die externe Flash-Speichervorrichtung zu, wie auf eine/einen HDD/SDRAM.
Die FTL verbindet eine Flash-Speicherkarte mit einem Dateisystem,
das in einem bestimmten Betriebssystem verwendet wird, und verhindert
mehr als ein einmaliges Schreiben an dieselbe Adresse ohne vorheriges
Löschen.
-
Die
FTL-Funktionen umfassen die Verwaltung der Abbildung von logischen
Adressen auf physikalische Adressen, die Verwaltung fehlerhafter
Blöcke,
die Verwaltung der Datenerhaltung bei unvorhergesehener Unterbrechung der
Energieversorgung sowie die Verwaltung von Verschleiß. Die Kernfunktion
unter den FTL-Funktionen betrifft die Adressabbildung. Beispielhafte
Adress-Abbildungsschemata sind in dem US-Patent Nr. 5,404,485 mit
dem Titel „Flash
File System", dem
US-Patent Nr. 5,937,425 mit dem Titel „Flash File System Optimized
for Page-Mode Flash Technologies",
und dem US-Patent
Nr. 6,381,176 mit dem Titel „Method
of Driving Remapping in Flash Memory and Flash Memory Architecture
Suitable Therefore" dargelegt,
deren Offenbarungen hiermit durch Bezugnahme zum Gegenstand der
vorliegenden Anmeldung gemacht werden.
-
In
dem Fall, dass auf einen Flashspeicher auf der Grundlage von Blöcken zugegriffen
wird, ist der Flashspeicher in eine Mehrzahl von Blöcken unterteilt.
Eine Zahl, die als eine physikalische Blocknummer bezeichnet wird,
wird jedem der Blöcke
sequentiell zugewiesen, und eine virtuelle Nummer für einen
Block, von dem ein Benutzer annimmt, dass er gerade verwendet wird,
wird logische Blocknummer genannt. Ein Verfahren zum Abbilden der
logischen Blocknummer auf eine physikalische Blocknummer beinhaltet
(i) ein Block-Abbildungsschema, (ii) ein Sektor- (oder Seiten-)Abbildungsschema
und (iii) ein Log-Abbildungsschema. In einer FTL, die ein Abbildungsschema
verwendet, können
Daten mit logisch aufeinander folgenden Adressen an physikalisch
unterschiedlichen Orten eingetragen sein. Da ein Flashspeicher eine
Löscheinheit
besitzt, die größer als eine
Schreibeinheit oder eine Programmiereinheit ist, ist es dann, wenn
das Schreiben an unterschiedlichen physikalischen Orten ein vorbestimmtes
Maß erreicht,
erforderlich, aufeinander folgende Daten, die an physikalisch unterschiedlichen
Orten verteilt sind, in einem gemeinsamen Adressraum zu sammeln,
indem ein freier Block verwendet wird. Dieser Vorgang wird Vereinigen
oder Zusammenführen (herging)
genannt.
-
Merging-Operationen,
die das vorstehend genannte Block-Abbildungsschema, Sektor-Abbildungsschema
und Log-Abbildungsschema verwen den, werden nun detailliert beschrieben.
Vor der Beschreibung der Merging-Operationen
sei vorliegend angenommen, dass ein Flashspeicher in eine Mehrzahl
von Speicherblöcken
unterteilt ist und dass jeder Speicherblock aus einer Mehrzahl von
Seiten oder Sektoren gebildet ist. Ein Bezeichner „PBN" steht für eine physikalische
Blocknummer und ein Bezeichner „PPN" bezeichnet eine physikalische Seitennummer, während ein
Bezeichner „LPN" für eine logische
Seitennummer steht.
-
BLOCK-ABBILDUNGSSCHEMA
-
Merging-Operationen
unter Verwendung eines Block-Abbildungsschemas werden vorliegend unter
Bezugnahme auf 1 beschreiben.
Gemäß dem Block-Abbildungsschema
werden Daten, wenn sie in einem beliebigen Speicherblock abgespeichert werden,
der Reihe nach in den Seiten des Speicherblocks abgelegt. Wenn beispielsweise
Daten auf der i-ten Seite (d.h. PPNi) eines Speicherblocks mit einer physikalischen
Blocknummer „2" (d.h. PBN2) aktualisiert
oder erneut eingetragen werden, werden auf den anderen Seiten, mit
Ausnahme der i-ten Seite PPNi, gespeicherte Daten, für die die
Aktualisierung angefordert wurde, in entsprechende Seiten eines leeren
Blocks kopiert, welcher als freier Speicherblock bezeichnet ist
(z. B. PBN3). Anschließend
werden die in der Seite PPNi des Speicherblocks PBN2 zu speichernden
Daten in die entsprechende i-te Seite des Speicherblocks PBN3 aktualisiert/erneut
eingetragen. Anschließend
wird der gesamte Speicherblock PBN2 gelöscht und wird zu einem freien Speicherblock.
In dem Block-Abbildungsschema sollte eine Merging-Operation immer
dann durchgeführt werden,
wenn neue Daten in eine Seite aktualisiert werden, die alte Daten
enthält.
Eine Blockabbildung von Daten zwischen einer physikalischen Blocknummer
und einer logischen Blocknummer wird typischerweise unter Verwendung
einer Block-Abbildungstablle gesteuert.
-
SEKTOR-(SEITEN)ABBILDUNGSSCHEMA
-
Eine
Merging-Operation unter Verwendung eines Sektor-Abbildungsschemas
wird vorliegend unter Bezugnahme auf 2A und 2B beschrieben. Gemäß dem Seiten-
(oder Sektor-)Abbildungsschema werden Daten sequentiell in Seiten
eines Speicherblocks geschrieben. Vorliegend hat eine Seite dieselbe
Größe wie ein
Sektor, jedoch ist es für den
Fachmann selbstverständlich,
dass eine Seite aus einer Mehrzahl von Sektoren gebildet sein kann. Beispielsweise
sind Daten einer logischen Seite LPN0 in einer physikalischen Seite
PPN0 gespeichert, und Daten einer logischen Seite LPN1 sind in einer
physikalischen Seite PPN1 gespeichert. Daten in einer logischen
Seite LPN2 sind in einer physikalischen Seite PPN2 gespeichert.
Wenn erste Daten in einer logischen Seite LPN1 aktualisiert werden
sollen, werden diese ersten Daten in einer physikalischen Seite
PPN3 gespeichert, und die physikalische Seite PPN1 wird aktualisiert,
sodass sie keine Daten speichert, was in 2A als „X" markiert ist. Des Weiteren werden dann,
wenn Daten in einer logischen Seite LPN0 aktualisiert werden sollen,
die zweiten Daten in einer physikalischen Seite PPN4 gespeichert,
und die physikalische Seite PPN0 wird aktualisiert, sodass sie keine
Daten speichert, was in 2A mit „X" markiert ist. Wenn
ein alle Seiten betreffender Schreibvorgang durchgeführt wird,
d. h. wenn keine freie Seite in dem Speicherblock PBN0 existiert,
wird die Merging-Operation durchgeführt, wenn das Schreiben in
den Speicherblock PBN0 angefordert wird. Wie in 2A gezeigt, werden nur gültige Daten
des Speicherblocks PBN0 (d. h. physikalische Seiten PPN2–PPN5) in
entsprechende Seiten PPN10–PPN13
eines freien Speicherblocks PBN1 kopiert. Anschließend werden
die Daten einer logischen Seite LPN0 in dem Speicherblock PBN1, für die der
Schreibvorgang angefordert wurde, in einer physikalischen Seite
PPN14 des freien Speicherblocks PBN1 gespeichert. Die physikalische
Seite PPN0 des Speicherblocks PBN1 wird dann so bearbeitet, dass
sie keine Daten speichert, was in 2A mit „X" markiert ist. Anschließend wird
der physikalische Speicherblock PBN10 gelöscht. Eine Abbildungstabelle
wird modifiziert, wie in 2B gezeigt, und
die modifizierte Abbildungstabelle wird durch eine Flash-Translationsschicht
(FTL) gesteuert.
-
LOG-ABBILDUNGSSCHEMA
-
Eine
Merging-Operation unter Verwendung eines Log-Abbildungsschemas wird
vorliegend detailliert unter Bezugnahme auf 3A–3C beschrieben. Gemäß dem Log-Abbildungsschema,
wie in 3A gezeigt, sind
Speicherblöcke
in einen Daten-Bereich, einen Log-Bereich und einen Meta-Bereich
unterteilt, und eine Tabelle mit Abbildungsdaten wird durch eine
FTL verwaltet. In dem Log-Abbildungsschema sind einige Speicherblöcke des
Daten-Bereichs als
die Speicherblöcke
eines Log-Bereichs ausgewählt.
Beispielsweise sei angenommen, dass ein Flashspeicher neun Speicherblöcke PBN0–PBN8 aufweist.
Wenn die Speicherblöcke noch
nicht verwendet werden, sind Speicherblöcke PBN0–PBN4 als der Daten-Bereich
definiert, Speicherblöcke
PBN5–PBN7
sind als der Log-Bereich definiert, und ein Speicherblock PBN8 ist
als der Meta-Bereich definiert. Vorliegend sind die Speicherblöcke PBN0
und PBN2 des Daten-Bereichs als die Speicherblöcke PBN5 und PBN6 des Log-Bereichs
ausgewählt,
und ein Speicherblock PBN7 des Log-Bereichs ist als ein freier Speicherblock
ausgewählt.
Abbildungsdaten bzw. die Datenabbildung zwischen Speicherblöcken, Abbildungsdaten
bzw. die Datenabbildung zwischen dem Speicher-Bereich und dem Log-Bereich
und Abbildungsdaten bzw. die Datenabbildung des Log-Bereichs werden in
einer Block-Abbildungstabelle, einer Log-Block-Abbildungstabelle
bzw. einer Log-Abbildungstabelle verwaltet. Jeder Speicherblock
ist aus einer Mehrzahl von Seiten oder einer Mehrzahl von Sektoren
gebildet.
-
Wenn
Daten in einen Speicherblock PBN0 geschrieben werden sollen, werden
die Daten nicht direkt in den Speicherblock PBN0 geschrieben, sondern
in einem Speicherblock PBN5 des Log-Bereichs gespeichert, der dem
Speicherblock PBN0 entspricht. Wenn beispielsweise Daten, die einer
logischen Seite LPN2 entsprechen, in einen Speicherblock PBN0 geschrieben
werden sollen, werden die Daten in eine physikalische Seite PBN0
des Speicherblocks PBN5 des Log-Bereichs geschrieben. In gleicher
Weise werden dann, wenn einer logischen Seite LPN0 entsprechende
Daten in den Speicherblock PBN0 geschrieben werden sollen, die Daten
in eine physikalische Seite PBN1 des Speicherblocks PBN5 des Log-Bereichs
geschrieben. Wenn Daten in den Speicherblock PBN1 geschrieben werden
sollen, wird das nachfolgend beschriebene Merging-Verfahren durchgeführt, da
ein dem Speicherblock PBN1 entsprechender Speicherblock des Log-Bereichs
ausgewählt
ist. Zunächst wird
bestimmt, ob ein freier Speicherblock in dem Log-Bereich oder in
dem Daten-Bereich existiert. Wenn es einen freien Speicherblock
in dem Log-Bereich gibt, wie in 3B dargestellt,
werden gültige Daten,
die in einem beliebigen Speicherblock gespeichert sind, beispielsweise
einem Speicherblock PBN5 als Teilmenge der Speicherblöcke PBN5
und PBN6 des Log-Bereichs, in einen freien Speicherblock PBN7 kopiert.
Anschließend
werden gültige Daten,
die in dem Speicherblock PBN0 des Daten-Bereichs gespeichert sind,
welcher dem Speicherblock PBN5 entspricht, in den Speicherblock
PBN7 kopiert/transferiert. Der Kopiervorgang ist in 3B dargestellt. Nachdem die Speicherblöcke PBN0
und PBN5 gelöscht
wurden, wie in 3C dargestellt,
wird der Speicherblock PBN5 des Log-Bereichs als der freie Speicherblock
ausgewählt, und
der Speicherblock PBN0 des Daten-Bereichs wird als ein Speicherblock
des Log-Bereichs ausgewählt,
während
der Speicherblock PBN7 als ein Speicherblock des Daten-Bereichs
ausgewählt
wird. Schließlich
werden die in den Speicherblock PBN1 zu schreibenden Daten in den
Speicherblock PBN0 des Log-Bereichs geschrieben. Die Abbildungsdaten der
Block-Abbildungstabelle, der Log-Block-Abbildungstabelle und der
Log-Abbildungstabelle werden durch eine FTL gesteuert und sind in
dem Meta-Bereich PBN8 gespeichert.
-
Da
das Seiten-Abbildungsschema die Datenabbildung bzw. die Abbildungsdaten
auf Seitenbasis steuert, ergibt sich ein Nachteil, weil typischerweise
eine große
Abbildungstabelle erforderlich ist, wohingegen kleine Datenmengen
vorteilhafter Weise leicht geschrieben werden können. Das Log-Abbildungsschema
hat den Nachteil, dass das Merging immer dann durchgeführt werden
sollte, wenn eine kleine Datenmenge in unterschiedliche Datenblöcke zu schreiben
ist, während
große
Datenmengen vorteilhafter Weise leicht geschrieben werden können. Des
Weiteren besitzt das Log-Abbildungsschema den
Vorteil, dass es eine relative kleine Abbildungstabelle verglichen
mit dem Seiten-Abbildungsschema besitzt.
-
Allgemein
verwaltet ein Flashspeicher-System, das einen Flashspeicher als
Speichermedium besitzt, den Flashspeicher unter Verwendung einer einzigen
FTL. Flashspeicher haben verschiedene Zugriffsmuster: Ein Muster,
bei dem ein Teil des in einem Speicherblock gespeicherten Inhalts
aktualisiert wird, und ein Muster, bei dem alle freien Speicherblöcke für neue Inhalte
verwendet werden. Da jedoch unterschiedliche Zugriffsmuster durch
nur eine einzige FTL verarbeitet werden, kann die Leistung des gesamten
Systems herabgesetzt sein.
-
Der
Erfindung liegt das technische Problem zu Grunde, eine Flashspeicher-Steuervorrichtung, eine
Vorrichtung zum Steuern eines Flashspeichers, ein Flashspeicher-System
und ein Verfahren zum Verwalten von Abbildungsdaten eines Flashspeicher anzugeben,
welche eine Beeinträchtigung
der Leistung des gesamten Systems vermeiden.
-
Die
Erfindung löst
das Problem durch Schaffen einer Flashspeicher-Steuervorrichtung
mit den Merkmalen des Patentanspruchs 1 oder 8, einer Vorrichtung
zum Steuern eines Flashspeichers mit den Merkmalen des Patentanspruchs
10, eines Flashspeicher-Systems mit den Merkmalen des Pa tentanspruchs
19 und eines Verfahrens zum Verwalten von Abbildungsdaten eines
Flashspeichers mit den Merkmalen des Patentanspruchs 28.
-
Vorteilhafte
Ausgestaltungen der Erfindung sind Gegenstand der Unteransprüche, deren
Wortlaut hiermit durch Bezugnahme zum Gegenstand der Beschreibung
gemacht wird, um unnötige
Textwiederholungen zu vermeiden.
-
Vorteilhafte
Ausgestaltungen der Erfindung, wie nachfolgend im Detail beschrieben,
und die oben zur Erleichterung des Verständnisses der Erfindung erörterten
Ausgestaltungen des Standes der Technik sind in den Zeichnungen
dargestellt. Es zeigt/zeigen:
-
1 bis 3C Diagramme
zur Darstellung allgemeiner Abbildungsschemata,
-
4 ein
Blockdiagramm zum Beschreiben eines Flashspeicher-Systems gemäß Ausgestaltungen
der vorliegenden Erfindung,
-
5A und 5B Diagramme
zum Beschreiben von Flash-Translationsschichten von Speicherbereichen
gemäß einer
Abbildungsvorschrift der vorliegenden Erfindung,
-
6 ein
Diagramm zur Darstellung eines Bestimmungsvorgangs einer in 4 gezeigten Steuervorrichtung
bei einer Zugriffsanforderung von einem Host,
-
7 ein
Diagramm zur Darstellung von Flash-Translationsschichten von Speicherbereichen, wenn
die Abbildungsvorschrift mit zwei Flash-Translationsschichten auf
eine xD-Karte gemäß einer
Ausgestaltung der vorliegenden Erfindung angewendet wird,
-
8 ein
Flussdiagramm zur Darstellung eines Verfahrens zum Bestimmen einer
Flash-Translationsschicht gemäß der Abbildungsvorschrift
in 7,
-
9 ein
Diagramm zur Darstellung von Flash-Translationsschichten von Speicherbereichen, wenn
die Abbildungsvorschrift mit zwei Flash-Translationsschichten auf
eine xD-Karte gemäß einer
Ausgestaltung der vorliegenden Erfindung angewendet wird, und
-
10 ein
Flussdiagramm zur Darstellung eines Verfahrens zum Bestimmen einer
Flash-Translationsschicht gemäß der Abbildungsvorschrift
in 9.
-
Gleiche
Bezugszeichen beziehen sich durchgehend auf gleiche Elemente, und
Signalleitungen sowie darauf übertragene
Signale können
mit denselben Bezugszeichen versehen sein. Signale können auch
synchronisiert und/oder einfachen Booleschen Operationen (z. B.
Invertierung) unterzogen werden, ohne als unterschiedliche Signale
angesehen zu werden.
-
4 ist
ein Blockdiagramm zur Darstellung eines Flashspeicher-Systems 1000 gemäß einer Ausgestaltung
der vorliegenden Erfindung. Bezug nehmend auf 4 weist
das Flashspeicher-System 1000 gemäß der vorliegenden Erfindung
einen Host-Prozessor 200, eine Steuervorrichtung 400 und einen
Flashspeicher 600 auf. Die Steuervorrichtung 400 ist
dazu ausgebildet, den Flashspeicher 600 bei einer Zugriffsanforderung
durch den Host-Prozessor 200 zu steuern. Die Steuervorrichtung 400 ist
dazu ausgebildet, eine Mehrzahl von Flash-Translationsschichten
FTL1-FTLn zu spei chern, und sie bestimmt, ob die Zugriffsanforderung
durch den Host-Prozessor 200 auf einen Bereich des Flashspeichers 600 gerichtet
ist. Die Steuervorrichtung 400 wählt eine der Flash-Translationsschichten
gemäß dem Bestimmungsergebnis
aus und verwaltet das Abbilden von Daten auf den Flashspeicher 600 auf
der Grundlage der ausgewählten
Flash-Translationsschicht.
-
Mit
anderen Worten, das Flashspeicher-System 1000 der vorliegenden
Erfindung verwaltet den Flashspeicher 600 nicht unter Verwendung
nur einer einzigen Flash-Translationsschicht. Stattdessen verwaltet
das Flashspeicher-System 1000 den Flashspeicher 600 unter
Verwendung von wenigstens zwei Flash-Translationsschichten. Daher
wählt das
Flashspeicher-System 1000 der
vorliegenden Erfindung immer dann, wenn eine Zugriffsanforderung
von dem Host-Prozessor 200 vorliegt, eine für die Zugriffsanforderung
geeignete Flash-Translationsschicht aus und verwaltet anschließend den
Flashspeicher 600 in effizienter Weise auf der Grundlage
des Zugriffsmusters.
-
Wie
in 4 dargestellt, weist die Steuervorrichtung 400 eine
Steuereinheit 420 und eine Speichereinheit 440 auf.
Die Speichereinheit 440 speichert unterschiedliche Flash-Translationsschichten, und
die Steuereinheit 420 bestimmt, welches Zugriffsmuster
durch den Host 200 angefordert wurde, und wählt eine
beliebige der in dem Speicher 440 gespeicherten Flash-Translationsschichten
FTL1-FTLn auf der Grundlage des Bestimmungsergebnisses aus. Dieses
Verfahren wird immer dann durchgeführt, wenn ein Zugriff auf den
Flashspeicher 600 durch den Host-Prozessor 200 angefordert
wurde. Um ein Beispiel zu geben sei angenommen, dass Flash-Translationsschichten
unter Verwendung eines Block-Abbildungsschemas, eines Seiten-Abbildungsschemas
und eines Log-Abbildungsschemas in der Speichereinheit 440 gespeichert
sind. Wie zuvor beschrieben, ist das Seiten-Abbildungsschema nützlich, wenn eine kleine Datenmenge
geschrieben werden soll, hat jedoch den Nachteil, dass es eine relativ
große
Abbildungstabelle erfordert, wenn eine große Datenmenge geschrieben werden
soll. Im Gegensatz hierzu ist das Log-Abbildungsschema nützlich,
wenn eine große
Datenmenge geschrieben werden soll, es hat jedoch einen Nachteil,
der dadurch bedingt ist, dass wiederholt ein Merging durchgeführt wird,
wenn eine kleine Datenmenge geschrieben werden soll. Jedoch ist
es mit der Steuervorrichtung 400 möglich, eine Beeinträchtigung
der Leistung des gesamten Systems zu vermeiden, indem für jede Anforderung
eine geeignete Flash-Translationsschicht verwendet wird, z. B. eine
zufällige
Einzelschreibanforderung (für
kleine Datenmengen) und eine sequentielle Schreibanforderung (für große Datenmengen).
-
Die
Steuervorrichtung 400 der vorliegenden Erfindung kann das
Zugriffsmuster in vielfältiger
Weise bestimmen. Zunächst
kann das Zugriffsmuster aus Zugriffsinformationen bestimmt werden,
die von dem Host-Prozessor 200 empfangen wurden. Wenn ein
Dateisystem mit Datei-Zuordnungstabelle (File-Allocation-Table,
FAT) verwendet wird, wird allgemein eine große Menge von Dateidaten in
Form einer sequentiellen Schreibanforderung an die Steuervorrichtung 400 übertragen,
wohingegen Aktualisierungsdaten für die FAT als eine zufällige Einzelschreibanforderung
an die Steuervorrichtung 400 übertragen wird. Da die FAT-Daten
in einem speziellen Bereich des Flashspeichers 600 gespeichert sind,
lässt sich
das Zugriffsmuster erkennen, indem bestimmt wird, ob die gegenwärtige Adressanforderung
einem Schreibvorgang der FAT-Daten entspricht.
-
Im
Falle einer xD-Karte enthalten die zu schreibenden Daten logische
Adressinformationen. Auf diese Weise kann das Zugriffsmuster ermittelt werden,
indem die logischen Adressinformationen aus den eintreffenden Daten
extrahiert werden, die von dem Host-Prozessor empfangen werden.
Wenn die extrahierten logischen Adressinformationen eine Adresse
zum Speichern der FAT-Daten darstellen, wurde die gegenwärtige Zugriffsanforde rung
als eine zufällige
Einzelschreibanforderung bestimmt. Anderenfalls wird dann, wenn
die extrahierten logischen Adressinformationen keine Adresse zum
Speichern der FAT-Daten darstellen, die gegenwärtige Zugriffsanforderung als
eine sequentielle Schreibanforderung bestimmt.
-
Abweichend
von der vorstehend beschriebenen Bestimmungsmethode ist es auch
möglich,
die am Besten geeignete Flash-Translationsschicht auszuwählen, indem
immer dann Zugriffsmuster gesammelt werden, wenn eine Zugriffsanforderung
vorliegt. Es ist beispielsweise möglich, Informationen dahingehend
zu sammeln, ob häufig
zufällige
Einzelschreibanforderungen vorliegen oder ob häufig sequentielle Schreibanforderungen
in einem beliebigen Bereich vorliegen, und eine Flash-Translationsschicht
auf der Grundlage der gesammelten Informationen auszuwählen. Des
Weiteren ist es möglich, eine
Flash-Translationsschicht auf der Grundlage von von außen zur
Verfügung
gestellter Informationen auszuwählen
(z. B. Informationen betreffend das Muster des gegenwärtigen Zugriffs).
-
Es
sei angenommen, dass der Flashspeicher 600 eine Mehrzahl
von Speicherblöcken
enthält und
dass die Speicherblöcke
in wenigstens einen ersten Speicherbereich und einen zweiten Speicherbereich
unterteilt sind. Es sei auch angenommen, dass Daten in dem ersten
Speicherbereich auf eine zufällige
Einzelschreibanforderung hin gespeichert werden. Gemäß diesen
Annahmen, wie in 5A gezeigt, können Abbildungsdaten
des ersten Speicherbereichs durch eine erste Flash-Translationsschicht
FTL1 verwaltet werden, während
die Abbildungsdaten des zweiten Speicherbereichs durch eine zweite
Flash-Translationsschicht FTL2 verwaltet werden können. Die
ersten und zweiten Flash-Translationsschichten FTL1 und FTL2 folgen
unterschiedlichen Abbildungsschemata. Um ein Beispiel zu geben,
folgt die erste Flash-Translationsschicht FTL1 dem Seiten-Abbildungsschema,
und die zweite Flash-Translationsschicht FTL2 folgt dem Log-Abbildungsschema,
oder umgekehrt. Des Weiteren kann der Flashspeicher 600 in
drei oder mehr Speicherbereiche unterteilt sein, und jeder Speicherbereich kann,
wie in 5B gezeigt, durch eine Flash-Translationsschicht
mit einer anderen Abbildungsvorschrift verwaltet werden.
-
Folglich,
wie in 6 dargestellt, bestimmt die Steuervorrichtung 400 dann,
wenn eine Zugriffsanforderung durch den Host-Prozessor 200 vorliegt,
das Zugriffsmuster und selektiert eine geeignete Flash-Translationsschicht
gemäß dem Bestimmungsergebnis.
Die Abbildungsdaten des Flashspeichers werden dann durch die selektierte
Flash-Translationsschicht verwaltet.
-
7 ist
ein beispielhaftes Diagramm zur Darstellung einer Feldarchitektur
eines erfindungsgemäßen Flashspeichers,
der gemäß einer
Ausgestaltung der vorliegenden Erfindung in einer xD-Karte enthalten
ist. Im Falle einer xD-Speicherkarte enthält ein Feld des Flashspeichers
eine Mehrzahl von Zonen Zone0, Zone1, Zone2, ..., ZoneN. Jede Zone
ist durch eine Mehrzahl von Speicherblöcken gebildet. Die xD-Karte
verwendet ein Smart-Media-Dateisystem
(Smart-Media-File-System, SMFS), welches einen Block-Schreibvorgang unterstützt. Kurz
gesagt, der Host-Prozessor führt
Schreibvorgänge
auf der Grundlage von Blöcken
durch. In der xD-Karte ist ein FAT-Dateisystem auf der Grundlage von Kapazität definiert,
und die FAT sollte in der ersten Zone Zone0 angeordnet sein, die
aus einer Gesamtanzahl von 1024 Speicherblöcken gebildet ist. Auf diese
Weise werden die FAT-Daten immer nur innerhalb der ersten Zone Zone0
transferiert. Wenn neue Daten in die Karte geschrieben werden, werden
nicht alle Daten der FAT-Tabelle aktualisiert, sondern nur ein Teil
der Daten in der FAT werden aktualisiert. Beispielsweise werden,
obwohl FAT-Daten in wenigstens einem Speicherblock gespeichert sind,
veränderte
Daten nur in einem Teil des Speicherblocks aktualisiert. Im Gegensatz
hierzu werden Bilddaten in der xD-Karte auf einer Blockbasis gespeichert.
Mit anderen Worten, wenn Bilddaten eingegeben werden, werden die eingegebenen
Bilddaten in den gesamten Speicherblock geschrieben.
-
In
der xD-Karte, auf welche die Abbildungsvorschrift der vorliegenden
Erfindung angewendet wird, wie in 7 dargestellt,
wird eine erste Flash-Translationsschicht
FTL1 auf die erste Zone Zone0 angewendet, während eine zweite Flash-Translationsschicht
FTL2 (z. B. eine Flash-Translationsschicht mit dem Log-Abbildungsschema),
die sich von der ersten Flash-Translationsschicht
FTL1 unterscheidet (z. B. eine Flash-Translationsschicht mit dem
Seiten-Abbildungsschema), auf die anderen Zonen angewendet wird.
Da, wie oben beschrieben, nicht alle FAT-Daten sondern nur ein Teil
der Daten aktualisiert wird, ist es nützlich, eine Datenabbildung
bzw. Abbildungsdaten der ersten Zone Zone0 zu verwalten, indem die
Flash-Translationsschicht
unter Verwendung des Seiten-Abbildungsschemas auf die erste Zone
Zone0 angewendet wird. Dies ist dadurch begründet, dass die veränderten
Inhalte der FAT in einer freien Seite bzw. freien Seiten desselben
Speicherblocks innerhalb des Seiten-Abbildungsschemas ohne Merging
aktualisiert werden. Wenn alle Seiten eines beliebigen Block benutzt
wurden, werden ausschließlich
gültige
Daten in einen neuen Speicherblock kopiert, und die veränderten
Inhalte der FAT werden in der freien Seite bzw. den freien Seiten
desselben Speicherblocks (d. h. des neu ausgewählten Speicherblocks) aktualisiert. Hierbei
sind die kopierten Daten die zuletzt aktualisierten Daten.
-
Im
Gegensatz hierzu wird eine Flash-Translationsschicht mit einem Log-/Block-Abbildungsschema
auf die anderen Zonen angewendet. Dies geschieht deshalb, da bei
Eingabe von Bilddaten nur die Abbildungstabelle aktualisiert wird,
um einen Log-Block ohne Merging als einen Datenblock zu bestimmen,
d.h. einen Speicherblock des Log-Bereichs, in den Daten geschrieben
werden, nachdem die eingegebenen Daten in den Log-Block geschrieben
wurden. Es ist für
den Fachmann offensichtlich, dass die Flash-Translationsschicht, die das Block-Abbildungsschema
anstelle des Log-Abbildungsschemas
verwendet, auf die anderen Zonen Zone1, Zone2, ..., ZoneN mit Ausnahme
der ersten Zone Zone0 angewendet werden kann. In diesem Fall werden
aufgrund der Tatsache, dass der Schreibvorgang auf Blockbasis durchgeführt wird, die
eingegebenen Bilddaten sequentiell in einen oder mehrere Speicherblöcke einer
entsprechenden Zone geschrieben. In gleicher Weise wird dann, wenn
neue Bilddaten geschrieben werden, nur die Block-Abbildungstabelle
ohne Merging aktualisiert.
-
Bezug
nehmend auf 8, welche ein Flussdiagramm
zum Verdeutlichen eines Vorgangs zum Verwalten des Flashspeichers
des Flashspeicher-Systems
mit der Abbildungsvorschrift gemäß 7 darstellt,
wird zunächst
in einem Schritt S100 ein Zugriff auf den Flashspeicher 600 durch
den Host-Prozessor 200 angefordert.
In einem Schritt S120 bestimmt die Steuervorrichtung 400 das
Muster des gegenwärtig
angeforderten Zugriffs. Aus Gründen
der Beschreibungserleichterung sei angenommen, dass die erste Flash-Translationsschicht
FTL1 das Seiten-Abbildungsschema verwendet, während die zweite Flash-Translationsschicht
FTL2 das Log-Abbildungsschema
verwendet. Des Weiteren sei angenommen, dass die Steuervorrichtung 400 ein beliebiges
der vorstehend beschriebenen Bestimmungsverfahren verwendet, beispielsweise
ein Verfahren zum Bestimmen des Zugriffsmusters auf der Grundlage
von logischen Adressinformationen, die in den zu schreibenden Daten
enthalten sind. Folglich extrahiert die Steuervorrichtung 400 die
logischen Adressinformationen aus den eingegebenen Daten, wenn ein
Zugriff angefordert wird, und ermittelt, ob die extrahierten logischen
Adressinformationen zum Bestimmen der FAT-Daten dienen. Kurz gesagt,
es wird ermittelt, ob der gegenwärtig
angeforderte Zugriff ein Zugriff auf die erste Zone Zone0 ist. Wenn der
gegenwärtig
angeforderte Zugriff ein Zugriff auf die erste Zone Zone0 ist, verwaltet
die Steuervorrichtung 400 in einem Schritt S140 die Abbildungsdaten des
Flashspeichers 600 auf der Grundlage der ersten, in der
Speichereinheit 440 gespeicherten Flash-Translationsschicht
FTL1. Wenn der gegenwärtig
angeforderte Zugriff kein Zugriff auf die erste Zone Zone0 ist,
verwaltet die Steu ervorrichtung 400 in einem Schritt S160
die Abbildungsdaten des Flashspeichers 600 auf der Grundlage
der zweiten, in der Speichereinheit 440 gespeicherten Flash-Translationsschicht
FTL2. Die oben genannten Schritte S120 bis S160 werden immer dann
wiederholt, wenn ein Zugriff durch den Host-Prozessor 200 angefordert wird.
-
Wie
oben beschrieben, verringert sich die Anzahl der während des
Merging zu kopierenden gültigen
Seiten aufgrund der Tatsache, dass nur die neuesten Daten in der
FAT gültig
sind, auf eine Zahl, die so klein ist wie der FAT-Bereich. Dies bedeutet,
dass nicht nur die Frequenz eines Ausführens von Merging-Operationen,
verringert, sondern auch die Merging-Zeit eingespart werden kann.
Auf diese Weise lässt
sich vermeiden, dass die Leistung des gesamten Systems abnimmt,
indem die FAT der ersten Zone Zone0 unter Verwendung des Seiten-Abbildungsschemas
verwaltet wird.
-
Abweichend
von der Abbildungsvorschrift in 7 kann nicht
nur ein Abbildungsschema auf die erste Zone Zone0 angewendet werden,
sondern es können
auch zwei Abbildungsschemata auf die erste Zone Zone0 angewendet
werden, welche die FAT-Daten speichert. Beispielsweise wird gemäß 9 eine
Flash-Translationsschicht FTL1 unter Verwendung des Seiten-Abbildungsschemas
auf einen ersten Bereich der ersten Zone Zone0 angewendet, während eine
Flash-Translationsschicht FTL2 unter Verwendung des Block- oder
Log-Abbildungsschemas auf einen zweiten Bereich der ersten Zone Zone0
angewendet wird. Auf die anderen Zonen Zone1, Zone2, ..., ZoneN
wird eine Flash-Translationsschicht FTL3 angewendet, die ein Abbildungsschema
verwendet, das dem zweiten Bereich der ersten Zone Zone0 entspricht
oder sich von diesem unterscheidet (d. h. ein Block-Abbildungsschema,
ein Log-Abbildungsschema oder ein Seiten-Abbildungsschema). In dem
ersten Bereich der ersten Zone werden die FAT-Daten gespeichert,
und in dem zweiten Bereich und den anderen Zonen werden Bilddaten gespeichert.
-
Bezug
nehmend auf 10, die ein Flussdiagramm zum
Beschreiben eines Vorgangs zum Verwalten von Abbildungsdaten des
Flashspeichers in dem Flashspeicher-System mit der Abbildungsvorschrift
gemäß 9 darstellt,
wird in einem Schritt S200 ein Zugriff auf den Flashspeicher 600 durch den
Host-Prozessor 200 angefordert. In einem Schritt S220 bestimmt
die Steuervorrichtung 400 das Muster des gegenwärtig angeforderten
Zugriffs. Zur Erleichterung der Beschreibung sei angenommen, dass
die erste Flash-Translationsschicht
FTL1 das Seiten-Abbildungsschema verwendet, dass die zweite Flash-Translationsschicht
FTL2 das Log-/Block-Abbildungsschema verwendet und dass die dritte
Flash-Translationsschicht FTL3 das Block-/Log-Abbildungsschema verwendet.
Des Weiteren sei angenommen, dass die Steuervorrichtung 400 eine
beliebige der vorstehend genannten Bestimmungsmethoden verwendet,
beispielsweise ein Verfahren zum Bestimmen des Zugriffsmusters auf der
Grundlage von logischen Adressinformationen, die in den zu schreibenden
Daten enthalten sind. Somit extrahiert die Steuervorrichtung 400 die
logischen Adressinformationen aus den eingegebenen Daten, wenn ein
Zugriff angefordert wird, und ermittelt, ob die extrahierten logischen
Adressinformationen zum Bestimmen der FAT-Daten bestimmt sind. Kurz gesagt, es
wird ermittelt, ob der gegenwärtig
angeforderte Zugriff ein Zugriff auf die erste Zone Zone0 ist. Wenn
der gegenwärtig
angeforderte Zugriff kein Zugriff auf die erste Zone Zone0 ist,
verwaltet die Steuervorrichtung 400 in einem Schritt S240
die Abbildung von Daten des Flashspeichers 600 auf der Grundlage
der dritten Flash-Translationsschicht FTL3,
die in der Speichereinheit 440 gespeichert ist. Wenn der
gegenwärtig
angeforderte Zugriff ein Zugriff auf die erste Zone Zone0 ist, bestimmt
die Steuervorrichtung 400 in einem Schritt S260, ob der
gegenwärtig
angeforderte Zugriff ein Zugriff auf den FAT-Bereich ist. Wenn der
gegenwärtig
angeforderte Zugriff ein Zugriff auf den FAT-Bereich ist, verwaltet die
Steuervorrichtung 400 in Schritt einem S280 die Abbildung
von Daten eines ersten Bereichs der ersten Zone Zone0 auf der Grundlage
der ersten, in dem Speicher 440 gespeicherten Flash-Translationsschicht
FTL1. Wenn der gegenwärtig
angeforderte Zugriff kein Zugriff auf den FAT-Bereich ist, verwaltet die Steuervorrichtung 400 in
einem Schritt S300 die Datenabbildung bzw. die Abbildungsdaten eines zweiten
Bereichs der ersten Zone Zone0 auf der Grundlage der zweiten Flash-Translationsschicht FTL2,
die in dem Speicher 440 gespeichert ist. Die vorstehend
beschriebenen Schritte S220 bis S300 werden immer dann wiederholt,
wenn ein Zugriff durch den Host-Prozessor 200 angefordert
wird.
-
Gemäß der Abbildungsvorschrift
wird nach aufeinander folgenden Bilddaten der FAT-Bereich nicht
gebracht, und die FAT-Daten werden an unabhängiger Stelle aktualisiert.
Auf diese Weise verschwindet die durch den FAT-Bereich hervorgerufene Diskontinuität, und die
Frequenz von Merging-Operationen,
die ebenfalls durch den FAT-Bereich bedingt sind, wird spürbar reduziert.
Insbesondere kann die Anzahl von während einer Merging-Operation zu kopierenden
gültigen
Seiten auf eine Zahl reduziert werden, die so klein wie der FAT-Bereich
ist, da nur die neuesten Daten in der FAT gültig sind. Dies bedeutet, dass
nicht nur die Merging-Frequenz, sondern auch die für die Merging-Operation
verbrauchte Zeit reduziert werden kann. Auf diese Weise kann eine
Verschlechterung der Leistung des gesamten Systems vermieden werden,
indem die FAT-Tabelle auf der Grundlage des Seiten-Abbildungsschemas verwaltet
wird.
-
Obwohl
die Abbildungsvorschrift der vorliegenden Erfindung beispielhaft
anhand einer Speicherkarte beschrieben wurde, ist es für den Fachmann
offensichtlich, dass die vorliegende Erfindung nicht auf eine solche
Ausgestaltung beschränkt
ist. Wie hinreichend bekannt ist, sollte ein System, das einen Flashspeicher
verwendet, notwendigerweise eine Flash-Translationsschicht verwenden.
Auf diese Weise kann die Abbildungsvorschrift der vorliegenden Erfindung
auf das System angewendet werden. Beispielsweise kann die Abbildungsvorschrift
der vorliegenden Erfindung auf einen Halblei ter-Solid-State-Disk-Controller
zum Steuern eines Flashspeichers zu Speicherzwecken angewendet werden. Obwohl
Speicherbereiche, auf die unterschiedliche Flash-Translationsschichten
angewendet werden, auf der Grundlage der Datenmenge unterteilt sind,
ist es für
den Fachmann offensichtlich, dass die Speicherbereiche auf der Grundlage
anderer Bedingungen unterteilt sein können. Wie vorstehend beschrieben,
kann die Technologie der vorliegenden Erfindung verhindern, dass
die Leistung des gesamten Systems sich verschlechtert, indem eine
geeignete Flash-Translationsschicht aus einer Mehrzahl von Flash-Translationsschichten
auf der Grundlage eines Zugriffsmusters ausgewählt wird und indem Abbildungsdaten
verwaltet werden.