-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft das Gebiet von Flash-Speichersystemen.
Genauer betrifft die vorliegende Erfindung mit Hostsystemen schnittstellenbildende
Flash-Speichersysteme.
-
Ausgangssituation der Erfindung
-
Die
Flash-Speichertechnologie ist ein elektrisch wiederbeschreibbares
nicht flüchtiges
digitales Speichermedium. Da sie nicht flüchtig ist, benötigt sie
keine ununterbrochene Spannung, um digitale Daten in ihrem Speicher
vorzuhalten. Eine Flash-Speicherzelle speichert typischerweise Ladung
auf einem Floating-Gate-Speicher, um in dem Binärzustandssystem einen ersten
logischen Zustand darzustellen, während das Fehlen von gespeicherter
Ladung in dem Binärzustandssystem
einen zweiten logischen Zustand darstellt. Flash-Speicherzellen
unterstützen
typischerweise einen Schreibvorgang, einen Lesevorgang und einen Löschvorgang.
-
Mit
Voranschreiten der Flash-Speichertechnologie ist eine Vielfalt von
Anwendungen möglich
geworden. Insbesondere haben Flash-Speicherimplementierungen, welche
die Massenspeicherfunktion herkömmlicher
rotierender Magnetdatenträger
emulieren, zum Beispiel Festplattenlaufwerke oder Diskettenlaufwerke, die
an ein Hostcomputer-System oder sonstiges digitales System mit Host
gekoppelt sind, eine breite Akzeptanz gefunden. Festplattenlaufwerke
und Diskettenlaufwerke weisen verschiedene Mangel auf, welche die Flash-Speichertechnologie
nicht aufweist. Zunächst
weisen Festplattenlaufwerke und Diskettenlaufwerke viele sich bewegende
Teile auf, zum Beispiel einen elektrischen Motor, eine Stegwelle,
einen Lese-/Schreibkopf sowie eine magnetisierbare umlaufende Scheibe.
-
Diese
Komponenten führen
zu Zuverlässigkeitsproblemen
und erhöhen
die Anfälligkeit
des Festplattenlaufwerks und des Diskettenlaufwerks für Fehler,
die aus der Vibration und der Erschütterung bei Fallenlassen oder
Anstoßen
entstehen. Zweitens verbraucht ein motorbetriebenes Plattenlaufwerk
eine beträchtliche Menge
an Strom, was die Betriebszeit zwischen Batterieaufladungen wesentlich
verkürzt.
Schließlich
ist der Zugriff auf Daten, die in dem Festplattenlaufwerk oder auf
der Diskette gespeichert sind, ein relativ langsamer Prozeß.
-
Im
Gegensatz dazu besitzt ein Flash-Speichersystem viele Vorteile gegenüber umlaufenden
Speicherplatten. Das typische Flash-Speichersystem weist keine sich
bewegenden Teile auf, was die höhere
Zuverlässigkeit
des typischen Flash-Speichersystems erklärt. Zusätzlich hält der robuste Entwurf des
typischen Flash-Speichersystems Umgebungsbedingungen und physischen
Fehlhandhabungen stand, die andernfalls für das Festplattenlaufwerk oder
das Diskettenlaufwerk katastrophal wären. Im allgemeinen kann ein
Benutzer ziemlich schnell auf in einem typischen Flash-Speichersystem
gespeicherte Daten zugreifen. Schließlich ist der Stromverbrauch
des typischen Flash-Speichersystems erheblich geringer als der Stromverbrauch
des Festplattenlaufwerks und des Diskettenlaufwerks.
-
Aufgrund
der Marktsättigung
und der universellen Anwendung rotierender Datenträger wie
beispielsweise Festplattenlaufwerken muß selbst ein überlegener
Prozeß oder
eine überlegene
Vorrichtung, mit dem/der versucht wird, einen Marktanteil zu gewinnen,
mit vorhandener Software und vorhandenen Betriebssystemen kompatibel
sein. Um eine Kompatibilität
mit Systemen zu erreichen, die so konfiguriert sind, daß sie Daten
in umlaufenden Legacy-Massenspeichersystemen
speichern, wird ein Flash-Speicher typischerweise in eine Reihe
von Datenfeldern unterteilt, die fünfhundertzwölf Bytes Benutzerdaten und
sechzehn Bytes Overhead-Daten speichern können, wodurch die Größe eines
Datenfeldes emuliert wird, das typischerweise in handelsüblichen
Festplatten verfügbar
ist. 1 zeigt eine nicht flüchtige Speicheranordnung in
einer Flash-Speichervorrichtung. Eine Ansammlung von physischen
Sektoren oder Seiten 108, ... 112 kann typischerweise fünfhundertzwölf Bytes
Benutzerdaten zuzüglich
sechzehn Bytes Overhead-Daten pro Seite speichern, wodurch sie der Speicherkapazität eines
Sektors einer typischen rotierenden Speichervorrichtung entspricht. Eine
Vielzahl von physischen Seiten 108, ..., 112,
typischerweise sechzehn oder zweiunddreißig Seiten, bilden einen physischen
Datenblock 102.
-
Gemäß dem Stand
der Technik umfaßt
ein Flash-Speichersystem eine einzelne Speicherstruktur 100, umfassend
eine Vielzahl von physischen Datenblöcken 102, ... 106.
Jeder physische Datenblock 102, ..., 106 ist einer
virtuellen physischen Blockadresse (VPBA) eindeutig zugewiesen,
um eine Vielzahl von physischen Datenblocks, die ein Flash-Speichersystem umfassen,
zu identifizieren und zu unterscheiden. Üblicherweise ist jeder Datenblock 102,
..., 106 wahlweise programmierbar und löschbar.
-
2 veranschaulicht
eine Ausführungsform
einer Flash-Speicherarchitektur gemäß dem Stand der Technik. Ein
Host 215, wie beispielsweise ein Computer oder eine Digitalkamera,
sendet und empfangt Daten an eine/von einer wechselbare/n Flash-Speicherkarte 201.
Während
des Sendens von dem Host an das Flash-Speichersystem weist der Host
den Daten logische Blockadressen zu. Bei der Wiedergewinnung der Daten
fordert der Host gemäß den logischen
Blockadressen, die er zuvor zugewiesen hat, Daten an. Die Daten treten
mittels eines Host-Schnittstellenbusses 220, der typischerweise
eine Parallelbusarchitektur umfaßt, in eine Host-Schnittstellenschaltung 203 der
Flash-Speichersteuerung 202 ein. Die Host-Schnittstellenschaltung steuert
die Speicherung eintreffender Daten mittels eines RAM-Datenpuffers 204.
Wenn eine vorab festgelegte Datenmenge in dem RAM-Datenpuffer 204 gespeichert
wurde, sendet die Speicherschnittstellenschaltung 205 die
Daten durch einen Speicherbus 230 an die nicht flüchtige Flash-Speichereinheit 206,
die ausführlicher
in 1 offenbart wurde. Der Datenbus 230 ist
typischerweise eine Parallelbusstruktur. Die Größe des Datenpuffers 204 ist
vorteilhafterweise so entworfen, daß eine Menge von Daten gespeichert
wird, die gleich einem Vielfachen eines nicht flüchtigen Speicherfeldes ist,
wie beispielsweise einer Seite, die etwa fünfhundertachtundzwanzig Gesamtbytes
an Daten umfaßt,
abgebildet in 1.
-
Im
derzeitigen Stand der Technologie weist ein Flash-Speichersystem
eine begrenzte Anzahl von Programmzyklen auf, bevor er „verschleißt". Um das Problem
des Verschleißens
zu mindern, versucht eine ausführlicher
in 2 erläuterte
Steuerung, die verfügbaren
Speicherorte vor der Rückkehr
zum ersten Ort zu durchlaufen. Durch Regulieren der Verschleißrate unter
den Zellen verhindert die Steuerung ein ungleichmäßiges Verschleißen, das
sich auf einen Bereich des Flash-Speichersystems konzentriert. Als
Folge von Verschleißausgleichsprogrammen
verschleißen
daher sämtliche
Zellen in einem Flash-Speichersystem
typischerweise mit derselben Rate. Das Verschleißausgleichsprogramm verringert
daher die Wahrscheinlichkeit, daß das Flash-Speichersystem
in einem lokal begrenzten Speicherbereich aufgrund von Überbeanspruchung
eines Bereichs eine vorzeitige Qualitätsverschlechterung erleidet.
Daher bleibt das gesamte Flash-Speichersystem während seiner Lebensdauer gleichmäßig zuverlässig. Ein
Festplattenlaufwerk erfordert diese Verschleißausgleichsfunktion nicht,
da sein Speichermechanismus einer praktisch unbegrenzten Anzahl
von Programmier-/Schreibvorgängen
unterzogen werden kann, ohne daß sich
die Leistung verschlechtert. Dieser Gegensatz führt zu einer betriebsbezogenen
Ungleichheit zwischen dem in einem Flash-Speicher und dem in einer Festplatte
oder Diskette verwendeten Adressiersystem.
-
Sowohl
in Festplatten als auch in Flash-Speichersystemen folgen die in
einem Speicher zugewiesenen physischen Adressen typischerweise einer
geometrischen Struktur innerhalb des Speichersystems. Das heißt, die
physischen Adressen werden sich typischerweise durch sukzessive
Speicherorte erhöhen.
Wenn von einem Speichersystem, sei es ein Flash-Speicher oder eine
rotierende Platte, Benutzerdaten empfangen werden, weist normalerweise
ein Hostsystem eintreffenden Daten eine Adresse zu. In einer Festplatte
werden Daten typischerweise in dem Sektor gespeichert, dessen physische
Adresse zu der von dem Hostsystem definierten logischen Adresse
paßt.
Wenn ein Hostsystem Benutzerdaten aktualisiert, die zuvor von einer
bestimmten logischen Adresse definiert wurden, überschreiben die neuen Daten
die ursprünglichen
Daten an der vorgeschriebenen Adresse.
-
In
einem Flash-Speichersystem jedoch werden aufgrund des Durchlaufens
verschiedener Bereiche eines Flash-Speichers gemäß einem Verschleißausgleichsalgorithmus
durch neue physische Adressen definierte physische Bereiche fortlaufend
gefüllt.
Wenn ein Hostsystem durch eine bestimmte logische Adresse definierte
Benutzerdaten aktualisiert und diese an das Flash-Speichersystem
sendet, weist das Verschleißausgleichsprogramm
die eintreffenden Benutzerdaten einem physischen Ort zu, der nicht
mit dem physischen Ort zusammenhängt,
an dem zuvor Benutzerdaten der gleichen logischen Adresse gespeichert
wurden. Alte Daten, die mit einer bestimmten logischen Adresse verbunden
sind, werden nicht sofort von eintreffenden Daten der gleichen logischen
Adresse überschrieben.
Die alten Daten werden einfach obsolet, und die eintreffenden Daten
werden in den nächsten
verfügbaren
physischen Datenblock geschrieben, das heißt in den nächsten adressierbaren physischen
Datenblock, der frei und fehlerlos ist. Infolgedessen weist der
Host Daten Adressen zu, die keine Beziehung zu den Adressen haben,
unter denen der Flash-Speicher letztendlich Daten speichert. Ein
unterscheidendes Kennzeichen des durch das typische Flash-Speichersystem
implementierten Verschleißausgleichs-Datenspeicherprogramms
liegt daher in der sich fortlaufend ändernden Beziehung zwischen
den von dem Host zugewiesenen logischen Adressen und den von dem
Flash-Speichersystem tatsächlich
genutzten physischen Adressen. Durch diesen dualen Speicherprozeß ist ein
Flash-Speichersystem in der Lage, die Beziehung zwischen einer Festplatte
und einem Host im Hinblick auf Datenspeicherung und -wiedergewinnung
funktionell zu emulieren, wodurch Kompatibilität mit vorhandener Software
aufrechterhalten wird.
-
3 veranschaulicht
verschiedene Register und Felder, die verwendet werden, um eintreffende
Daten aufzunehmen und diese in der Flash-Speichereinheit 206 (2)
zu speichern. Um die Wiedergewinnung von durch ein Hostsystem gespeicherten
Benutzerdaten zu ermöglichen,
muß jedoch
eine Korrelation von logischer und physischer Adresse vorhanden
sein. Diese Korrelation wird typischerweise in dem Flash-Speichersystem
in den Overhead-Abschnitten jeder Seite 108, ... 112 und
in dem RAM-Platzmanager 370 gespeichert. Wenn ein Host
von einem Satz logischer Adressen 302, ..., 308 identifizierte
Benutzerdaten 310, ..., 316 an ein Flash-Speichersystem
sendet, speichert das Flash- Speichersystem
die Daten an bestimmten physischen Plätzen 322, ... 328 und
korreliert dann die logische 302, ..., 308 und
die physische 330, ... 336 Adresse der Daten in
speziell vorgesehenen Korrelationsregistern oder -feldern, wie beispielsweise
dem Platzmanager 370. Anschließend, wenn der Host von einer
bestimmten logischen Adresse identifizierte Daten anfordert, untersucht
das Flash-Speichersystem die verschiedenen Register, Felder oder
Dateien, wobei es logische Adressen mit physischen Adressen korreliert.
Bei Lokalisierung der von dem Host angeforderten logischen Adresse ist
das Flash-Speichersystem in der Lage, die mit dieser logischen Adresse
korrelierende physische Adresse zu sichern. Das Flash-Speichersystem gewinnt
die Benutzerdaten aus dieser physischen Adresse wieder.
-
Der
Speicherungs- und Wiedergewinnungsprozeß schließt eine Reihe von Vorgängen des
Maskierens und Verkettens verschiedener Bits in verschiedenen Adreßregistern
ein. Das zum Speichern einer logischen Blockadresse verwendete Bitregister
kann in zwei Unterregister aufgeteilt sein, ein Bitfeld höherer Ordnung 342 und
ein Bitfeld niedrigerer Ordnung 344 eines LBA-Temporärregisters 340.
Eine Gruppe logischer Blöcke 310,
..., 316, typischerweise sechzehn oder zweiunddreißig, definiert
durch eine gemeinsame Adresse in dem Bitfeld höherer Ordnung, umfaßt einen
virtuellen logischen Block 300. Die Zahl in dem Bitfeld
höherer
Ordnung ist die virtuelle logische Blockadresse. Die Zahl in den
Bitfeldern niedrigerer Ordnung unter den logischen Blockkomponenten
ist ein LBA-Offset, das die einzelnen logischen Blöcke voneinander
unterscheidet. Die Adressen unterer Ordnung beziehungsweise Offsets
nehmen typischerweise von Null bis einschließlich Fünfzehn oder Null bis einschließlich Einunddreißig zu,
obwohl virtuelle Blöcke
jeder Größe möglich sind.
Die virtuelle logische Blockadresse höherer Ordnung zuzüglich der
Bits niedrigerer Ordnung definiert eine logische Blockadresse, wie
durch LBA-Temporärregister 340 veranschaulicht.
Logische Blockkomponenten 310, ..., 316 in einem
virtuellen logischen Block sind daher durch eine logische Blockadresse
(LBA) definiert.
-
Ein
virtueller logischer Block (VLB) 300 von Daten, definiert
durch eine virtuelle logische Blockadresse (VLBA), stellt eine Menge
von Daten dar, die einem physischen Speicherbereich entsprechen,
der als ein durch eine virtuelle physische Blockadresse (VPBA) definierter
physischer Datenblock 320 bekannt ist. Eine VPBA besteht
aus ergänzenden
physischen Seiten. Aufeinanderfolgende Seiten in einer VPBA werden
durch ein PBA-Offset unterschieden. Die VPBA definiert zusammen
mit dem PBA-Offset für
jede Seite eine eindeutige PBA beziehungsweise physische Blockadresse 330,
..., 336. Jeder logische Block 310, ..., 316 stellt
eine Menge von Daten dar, die einer physischen Seite 322,
..., 328 entspricht. Für
das Korrelieren logischer und physischer Adressen reservierte Datenfelder
und -register, wie beispielsweise ein RAM-Platzmanager 370,
verbrauchen wertvollen Speicherplatz innerhalb eines Flash-Speichersystems,
Speicher, der andernfalls vorteilhaft genutzt werden könnte, um
Benutzerdaten zu speichern. Würde
ein Flash-Speichersystem aus ausreichend Korrelationsregistern 380,
..., 384 zum Korrelieren jeder LBA 345, 346 usw.
mit einer entsprechenden PBA 330, ..., 336 bestehen,
so würde
in der Korrelationsfunktion ein großer Teil des Flash-Speichers
verbraucht werden, was bedeutend weniger verfügbaren Speicher zum Speichern
von Benutzerdaten ließe.
Eine derartig detaillierte Korrelation wäre zum Beispiel erforderlich,
wenn ein virtueller logischer Block von Benutzerdaten 300 in
sechzehn oder zweiunddreißig
LBA-Komponenten 302, ..., 308 zerlegt und in sechzehn
oder zweiunddreißig
verschiedenen über
unterschiedliche physische Datenblöcke in dem Flash-Speichersystem 200 verteilten
Seiten gespeichert würde.
-
Eine
Art der Minimierung dieses Verbrauchs von für das Korrelieren von Daten
vorgesehenem Speicherplatz ist, die Korrelation auf größere Gruppen
von Daten zu begrenzen, beispielsweise das Korrelieren virtueller
logischer Blockadressen mit virtuellen physischen Blockadressen,
wodurch große
Blöcke
physischen Speichers definiert werden. Eine Art, eine Korrelation
zwischen logischen Blockkomponenten eines VLB und einzelnen physischen
Seiten eines physischen Datenblocks beizubehalten, ohne Korrelationsregister
zu multiplizieren, um jeden logischen Block einzuschließen, ist,
aufeinanderfolgend adressierte logische Blöcke 310, ..., 316 von
VLB 300 in aufeinanderfolgend adressierten Seiten 322,
..., 328 in einem physischen Datenblock 320 zu
speichern. Eine Eins-zu-Eins-Korrelation zwischen aufeinanderfolgenden
physischen Blockadressen 330, ..., 336 in einem
physischen Datenblock 320 und logischen Blockadressenkomponenten 302,
..., 308 in einem virtuellen logischen Block 300 wird
so durch eine räumliche
oder quasi-räumliche
Anordnung beibehalten. Es muß kein
Register zum Korrelieren einzelner LBA mit einzelnen physischen
Seitenadressen vorgesehen werden. Es braucht nur die VLBA in dem
Bitfeld höherer
Ordnung mit der den physischen Datenblock darstellenden VPBA korreliert
zu werden.
-
4 ist
ein Ablaufdiagramm, welches das Speichern eintreffender Benutzerdaten
gemäß den Datenfeldern
und -register von 3 veranschaulicht. Im ersten
Schritt 402 wird virtueller logischer Block Siebzehn 300 (3)
von einem Host 215 zur Speicherung in einer nicht flüchtigen
Flash-Speichereinheit 206 (2) empfangen.
Im folgenden Schritt 404 bewegt die Steuerung 202 die
erste LBA 302 zu dem temporären LBA-Register 340.
Als nächstes 406 maskiert
die Steuerung die Bits niedrigerer Ordnung 344 in dem temporären LBA-Register 340 und
bewegt die VLBA 342 in ein VLBA-Register 360.
Im nächsten
Schritt 408 untersucht die Steuerung den Platzmanager 370 und
identifiziert VPBA-Korrelationsregister 384,
das dem in dem VLBA-Register 360 offenbarten aktuellen
VLB 349 entspricht. Im nächsten Schritt 412 identifiziert
die Steuerung 202 einen von einer neuen VPBA identifizierten
freien und fehlerlosen physischen Datenblock 320. Im folgenden
Schritt 414 schreibt die Steuerung die neue VPBA in das
Korrelationsregister 384 des Platzmanagers 370.
-
Die
Steuerung ist nun bereit, bestimmte Seiten 322, ..., 328 in
dem ausgewählten
physischen Datenblock 320 zum Speichern eintreffender Benutzerdaten
in dem eintreffenden virtuellen logischen Block 300 zu identifizieren.
Um eine Eins-zu-Eins-Korrelation zwischen aufeinanderfolgenden logischen
Blöcken 310,
..., 316 in dem virtuellen logischen Block 300 und
aufeinanderfolgenden physischen Blockadressen 330, ..., 336 zu
erreichen, kombiniert die Steuerung die VPBA des physischen Datenblocks 320 mit
dem LBA-Offset der aktuellen LBA 302, ..., 308.
In Schritt 415 speichert die Steuerung 202 die
VPBA des ausgewählten
physischen Datenblocks 320 in einem temporären PBA-Register 351.
In Schritt 416 maskiert die Steuerung 202 die
Bits höherer
Ordnung 342 des temporären
LBA-Registers 340 und verkettet die Bits niedrigerer Ordnung 344,
welche das LBA-Offset enthalten, in das Register niedrigerer Ordnung 354 des
temporären
PBA-Registers. Das kombinierte obere 352 und untere 354 Register
aus dem temporären
PBA-Register 351 bilden eine physische Blockadresse. In
Schritt 418 programmiert der Prozessor dann den von dem
temporären
LBA-Register identifizierten
logischen Block von Daten 310, ..., 316 in die
in dem temporären
PBA-Register 351 identifizierten physischen Seiten 322,
..., 326.
-
In
Schritt 420 untersucht die Steuerung den nächsten logischen
Block eintreffender Daten und bewegt die LBA des eintreffenden logischen
Blocks in das temporäre
LBA-Register. Gemäß dem letzten
Schritt 422 kehrt die Steuerung 202 zu Schritt 416 zurück, wenn
der Wert in dem VLBA-Register 360 unverändert bleibt. Wenn die von
dem Host 215 empfangenen neuen Benutzerdaten eine neue
VLBA umfassen, kehrt der Prozeß zu
Schritt 402 zurück
und wird wiederaufgenommen.
-
Einige
der Schritte in 4 könnten in einer anderen Reihenfolge
ausgeführt
werden, ohne das Ergebnis des Prozesses zu verändern. Da die spezifischen
Speichermechanismen auf eine Anzahl äquivalenter Arten ausgeführt werden
könnten,
soll der in 4 offenbarte Prozeß nicht
andeuten, daß ein
korrelierter Speicherprozeß gemäß dem Stand
der Technik notwendigerweise genau diesen Schritten folgt. Die Einzelheiten sind
einfach deshalb offenbart, um eine Art der Ausführung eines Datenspeicherprozesses
auf eine Art und Weise zu veranschaulichen, die eine natürliche Korrelation
zwischen LBA und PBA wahrt. Gemäß dem oben beschriebenen
Prozeß wird
das LBA-Offset 344 beim Speichern eines VLB in eine physische
Seite als ein PBA-Offset 354 verwendet. Aufgrund der im
Speicher- oder Programmierprozeß gewahrten
Reihenfolge können
von dem Host 202 angeforderte einzelne LBA von dem Flash-Speichersystem 201 wiedergewonnen
werden.
-
5 offenbart
einen Prozeß gemäß dem Stand
der Technik, wobei Daten auf Anforderung des Hosts 202 aus
der Flash-Speichereinheit 206 wiedergewonnen werden. Die
unten aufgeführten
Wiedergewinnungsschritte sind wiederum beispielhaft für die Datenwiedergewinnung
gemäß dem Stand
der Technik und nicht dazu vorgesehen, die Wiedergewinnung von Daten
auf einen beliebigen einzelnen Algorithmus gemäß dem Stand der Technik zu
begrenzen. Gemäß Schritt 502 fordert
der Host 202 (2) die Wiedergewinnung von Daten
an, die gemäß einer
bestimmten LBA oder Gruppe von LBA 302, ..., 308 (3)
definiert sind. In Schritt 504 bewegt die Steuerung 202 die
angeforderte LBA 302, ..., 308 zu einem temporären LBA-Register 340,
das konzeptuell als ein oberes 342 und unteres 344 Register
aus Bits höherer
Ordnung beziehungsweise Bits niedrigerer Ordnung umfassend gezeigt
ist. Im nächsten
Schritt 506 maskiert die Steuerung 202 die Bits
niedrigerer Ordnung 344 heraus und definiert die angeforderte
VLBA gemäß dem Wert
in dem Register höherer
Ordnung 342 in einem temporären VLBA-Register 360.
Im folgenden Schritt 508 erhöht die Steuerung 202 den
Platzmanager 370 auf die VLBA in dem temporären VLBA-Register 360,
wodurch auf das aktuelle Korrelationsregister 384 zugegriffen
wird, das der in dem temporären
VLBA-Register 360 vorgefundenen VLBA entspricht. In Schritt 510 kopiert
die Steuerung 202 die in dem aktuellen Korrelationsregister 384 vorgefundene
VPBA in das obere Register 352 des temporären PBA-Registers 351.
Im folgenden Schritt 512 maskiert die Steuerung 202 die
Bits höherer
Ordnung in dem oberen Register 342 des temporären LBA-Registers 340 und
verkettet die Bits unterer Ordnung in dem das LBA-Offset enthaltenden
unteren Register 344 in das Register unterer Ordnung 354 des
temporären
PBA-Registers 351. Die Kombination aus oberem 352 und
unterem 354 Register des temporären PBA-Registers 351 bildet
eine physische Blockadresse. Die Steuerung 202 ist nun
in der Lage, gemäß Schritt 514 auf
den physischen Datenblock, der durch die in dem temporären PBA-Register
konstruierte physische Blockadresse definiert ist, zuzugreifen und
die dort vorgefundenen Benutzerdaten an den Host weiterzuleiten.
Gemäß Schritt 516 leitet
die Steuerung auch die logischen Blockadressen in dem temporären LBA-Register
an den Host weiter, wodurch der logische Block von Benutzerdaten
gemäß der diesem
von dem Host zugewiesenen ursprünglichen
Adresse definiert wird.
-
Durch
Verkettung des LBA-Offsets auf eine VPBA während des Speicherungs- und
Wiedergewinnungsprozesses ist die Steuerung in der Lage, auf Anforderung
eine LBA-PBA-Korrelation
zu erzeugen und braucht in dem Flash-Speichersystem 201 nur
eine Korrelation zwischen der VLBA und der VPBA zu speichern, wodurch
die Menge an für
die Korrelation notwendigem Speicher auf nur einen Bruchteil dessen
verringert wird, was ohne diesen Prozeß notwendig wäre. Wenn
der Host die durch eine Reihe von logischen Blockadressen definierten
Daten anfordert, gewinnt der Flash-Speicher dementsprechend die
Benutzerdaten von einem physischen Ort wieder und sendet sie zurück zum Host.
Wenn der Host die Daten wiedergewinnt, werden die zum Host gesendeten
Daten daher von derselben Adresse identifiziert, die der Host angefordert
hat. Das duale Adressierungsschema und die Querverweise, die in
dem Flash-Speichersystem verwendet werden, sind für den Host
unsichtbar.
-
Obwohl
Flash-Speicher typischerweise viel schneller sind als Speicher mit
rotierenden Platten, besteht zwischen den „Lese-" und „Schreib-"Zeiten in Flash-Speichern eine große Ungleichheit.
Die Lesezeit eines Flash-Speichers liegt im Größenbereich von Mikrosekunden
und schneidet im Vergleich mit RAM-Speichern gut ab. Der Vorgang
des Programmierens oder Schreibens auf einen Flash-Speicher liegt
jedoch im Größenbereich
von Millisekunden, typischerweise um Zehnerpotenzen langsamer als
die typischerweise in RAM-Speichern vorgefundene Programmierzeit.
Dementsprechend ist der RAM-Datenpuffer 204 in der Lage, digitale
Daten erheblich schneller zu empfangen und erneut zu senden, als
die nicht flüchtige
Speichereinheit 206 sie empfangen kann. Die Programmierphase
eines Flash-Speichersystems wird daher zu einem bedeutenden Faktor,
der die potentiellen Geschwindigkeiten, die durch Flash-Speicherkomponenten
enthaltende integrierte Schaltungen und MOS-Systeme möglich sind,
begrenzt.
-
Die
Geschwindigkeit des Programmierens von Flash-Speichern wurde durch
die Entwicklung eines in 6 gezeigten Multibank-Flash-Speichersystems
wesentlich verbessert. Ein Flash-Speichersystem 600 ist mit
einem Hostsystem 601, wie beispielsweise einem Computer
oder einer Digitalkamera, operativ verbunden. Eine eine Host-Schnittstellenschaltung 605,
einen Datenpuffer 607 und eine Speicherschnittstellenschaltung 609 umfassende
Steuerung 604 ist mit einer Flash-Speichereinheit 602 operativ
gekoppelt. Die Flash-Speichereinheit 602 besteht aus einer
Vielzahl von Speicherbänken 621,
..., 627. Die erste Bank 621 besteht aus einer
Vielzahl von physischen Datenblöcken 631,
..., 637 und einem einzelnen RAM-Datenregister 613.
Die zweite Bank 623 besteht aus einer Vielzahl von physischen
Datenblöcken 641,
..., 647 und einem einzelnen RAM-Datenregister 615.
Die dritte Bank 625 umfaßt eine Vielzahl von physischen
Datenblöcken 651, 353, 355, 657 und
einem einzelnen RAM-Datenregister 617. Die vierte Bank 627 besteht
aus einer Vielzahl von physischen Datenblöcken 661, ..., 667 und
einem einzelnen RAM-Datenregister 619. Typischerweise besteht
jede der Vielzahl von Speicherbänken 621,
..., 627 aus einer gleichen Anzahl von physischen Datenblöcken. Typischerweise
weist jedes RAM-Datenregister 613, ..., 619 eine
Datenkapazität
auf, die gleich einer Seite physischen Speichers ist, die typischerweise
fünfhundertzwölf Bytes
Benutzerdaten zuzüglich
sechzehn Bytes Overhead-Daten vorhalten kann. Die Flash-Speichereinheit 602 gemäß 6 umfaßt lediglich
beispielsweise vier Speicherbänke 621,
..., 627. Multibank-Flash-Speicher könnten jede beliebige Anzahl
von Speicherbänken
umfassen. In ähnlicher
Weise dient die Größe der Datenfelder
und Speicherbereiche lediglich als Beispiel, wobei die gemäß dem Stand
der Technik vorzufindenden häufigeren
Konfigurationen abgebildet sind. Weder diese Abbildungen des Stands
der Technik noch deren Anwendung auf die vorliegende Erfindung soll
die Anwendung der vorliegenden Erfindung auf eine bestimmte Anzahl
von Speicherbänken
einschränken.
Weder sollen die hier enthaltenen Veranschaulichungen wie Größen von
Datenfeldern und -registern, ob physisch oder logisch, einschränken, noch
sollen sie eine Menge von eintreffenden Daten, die gespeichert oder
verarbeitet werden, einschränken.
Vielmehr sind spezifische Parameter wie die Größe der Datenfelder, die Anzahl der
Untergruppierungen von physischem Speicher, die eine größere Speicherkomponente
umfassen, oder die Anzahl der Untergruppierungen, die eine größere Gruppe
von Daten umfassen, lediglich zu Veranschaulichungszwecken dargeboten
und wurden so ausgewählt,
daß sie
Größen repräsentieren,
die gemäß dem Stand
der Technik häufig
vorkommen.
-
In
den Multibank-Flash-Speichersystemen 600 speichert der
RAM-Datenpuffer 607 Daten nicht direkt in Flash-Speicherblöcke 631,
..., 667. Vielmehr lädt
der RAM-Datenpuffer 607 Daten in die Vielzahl von RAM-Datenregistern 613,
..., 619, die dann simultan Benutzerdaten in ihre jeweiligen
Speicherbänke 621,
..., 627 laden. Jedes RAM-Datenregister 613, 615, 617, 619 kann
typischerweise eine Seite von Daten speichern und programmieren.
-
Während die
Flash-Steuerung 604 Informationen von dem Host 601 empfängt, ordnet
die Host-Schnittstellenschaltung 605 die Informationen
in dem RAM-Datenpuffer 607 in die Warteschlange ein. Wenn
der RAM-Datenpuffer 607 gemäß einer vorab festgelegten
Menge von Daten gefüllt
ist, beginnt die Speicherschnittstellenschaltung 609, Daten
aus dem RAM-Datenpuffer 607 auf
aus der Vielzahl von RAM-Datenregistern 613, 615, 617, 619 in
der Flash-Speichereinheit ausgewählte
RAM-Datenregister zu schreiben. In der in 6 abgebildeten
Flash-Speichereinheit mit vier Bänken 602 würde der
Puffer 607 typischerweise vier Seiten von Daten speichern.
Gemäß dem vorteilhaftesten
Entwurf ist die Anzahl ausgewählter
RAM-Datenregister typischerweise gleich der Anzahl virtueller logischer
Blöcke
eintreffender Daten. Datenbus 611 ist eine Parallelbusstruktur
zum Bewegen von Daten von dem Datenpuffer 607 zu den Datenregistern 613, 615, 617, 619. Da
der RAM-Datenpuffer 607 und
die RAM-Datenregister 613, 614, 617, 619 Direktzugriffsspeicherstrukturen sind,
sind die Lese- und Schreibzeiten zwischen diesen Strukturen extrem
schnell. Nachdem sich die ausgewählten
RAM-Datenregister 613, ..., 619 gefüllt haben,
beginnen die einzelnen RAM-Datenregister 613, ..., 619 simultan,
Daten auf Flash-Speicherbereiche in ihren jeweiligen Speicherbänken, 621,
..., 627 zu schreiben. In einem System mit vier Bänken wird
die Programmierzeit auf etwa 1/4 der in einer herkömmlichen
Flash-Speichereinheit benötigten
Zeit verringert. In einem System mit zehn Bänken wird die Programmierzeit
auf etwa ein Zehntel der von einer herkömmlichen Flash-Speichereinheit benötigten Zeit
verringert. Ein Multibank-System ist daher um einen Faktor gleich
der Anzahl von RAM-Datenregistern, die simultan mit dem Programmieren von
Benutzerdaten in eine Flash-Speichereinheit befaßt sind, schneller als eine
herkömmliche
Flash-Speichereinheit.
-
Obwohl
die Sende- und Programmierzeit von dem RAM-Datenpuffer 607 zu
den RAM-Datenregistern 613,
..., 619 im Vergleich zu der Programmierzeit für die Flash-Speicherzellen vernachlässigbar
ist, können fortgeschrittene
Entwürfe
die für
das Schreiben von Benutzerdaten aus dem RAM-Datenpuffer 607 auf RAM-Datenregister 613,
..., 619 aufgewendete Zeit wesentlich verringern. 7 offenbart
eine Speichereinheit, die aus mehreren Speicherbänken 702, 704, 706, 708 besteht.
Ein unterscheidendes Merkmal dieser Ausführungsform ist jedoch das Vorhandensein
von dualen RAM-Datenregistern 710 und 720, 712 und 722, 714 und 724, 716 und 726,
die jeweils jeder einzelnen Speicherbank 702, ..., 708 zugewiesen
sind. Jede Speicherbank 702, ..., 708 umfaßt einzeln
ein primäres
Register 710, 712, 714, 716 und
ein Hilfsregister 720, 722, 724, 726.
Gemäß dieser
Ausführungsform
lädt der
RAM-Datenpuffer 730 die vier jeweiligen primären Register 710,
..., 716 mit in den Flash-Speicherzellen der jeweiligen
Speicherbänke 702, 704, 706, 708 zu
speichernden Daten. Für
die Kontinuität
des Vergleichs ist wieder davon auszugehen, daß es insgesamt vier virtuelle
logische Blöcke
eintreffender Benutzerdaten gibt, wobei jeder VLB zweiunddreißig logische
Blöcke
Benutzerdaten umfaßt,
die auf die vier Speicherbänke 702, 704, 706, 708 zu
verteilen sind. Jede Speicherbank 702, 704, 706, 708 empfängt daher
einen virtuellen logischen Block oder zweiunddreißig logische
Blockdaten, die Seite für
Seite programmiert werden, sowie zuzüglich die mit jeder Seite verbundenen
Overhead-Daten. Dieser Prozeß erfolgt über zweiunddreißig Zyklen.
-
Durch
vorteilhaftes Wechseln zwischen den primären Registern 710,
..., 716 und Hilfsregistern 720, 722, 724, 726 würde eine
Zeitverzögerung
beim Schreiben von Daten aus dem RAM-Datenpuffer 730 auf
die RAM-Datenregister 710, ..., 726 nur im ersten
Zyklus des Schreibens der ersten vier Seiten von Daten auf die vier
jeweiligen Register auftreten. Das Programmieren des Flash-Speichers
der jeweiligen Bänke 702,
..., 708 dauert bedeutend länger als das Laden einer Seite
Speicher in ein RAM-Datenregister. Während die primären Register 710,
..., 716 ihre jeweiligen Seiten von Daten in die Flash-Speicherzellen
ihrer jeweiligen Speicherbänke 702,
..., 708 laden, kann daher der RAM-Datenpuffer 730 die
nächsten
vier Seiten von Daten in die vier Hilfsregister 720, ..., 726 laden.
Da dies erfolgt, während
die Flash-Speicherzellen von ihren jeweiligen primären Registern 710,
..., 716 programmiert werden, wird beim Schreiben der Hilfsregister 720,
..., 726 keine eigentliche Verzögerung eingeführt. Wenn
die primären
Register 710, ..., 716 das Laden ihrer jeweiligen
Seiten von Daten in die Speicherzellen ihrer jeweiligen Speicherbänke 702,
..., 708 beendet haben, sind die Hilfsregister 720,
..., 726 sofort bereit, mit dem Laden ihrer jeweiligen
Seiten von Daten in ihre jeweiligen Speicherbänke 702, ..., 708 zu
beginnen. Während
des Programmierens der Hilfsregister 720, 722, 724, 726 in
ihre jeweiligen physischen Datenblöcke kann der RAM-Datenpuffer 730 simultan
den nächsten
Zyklus von Daten in die primären
Register laden. Dieser Prozeß des
simultanen Ladens von Daten in einen Satz von Registern, während ein
ergänzender
Satz Register ausgewählte
Flash-Speicherzellen programmiert, dauert fort, bis die ausgewählten Daten
in den Flash-Speicher geladen sind. Wie bereits angemerkt, tritt
die einzige durch das Laden von Daten aus dem RAM-Datenpuffer 730 in
die jeweiligen RAM-Datenregister 710, ..., 716 eingeführte Verzögerung während des
ersten Zyklus auf.
-
Unter
der Annahme, daß jedes
RAM-Datenregister eine Kapazität
von einer Seite von Daten aufweist, was in etwa gleich einem logischen
Block von Benutzerdaten ist, wobei N = die in einem erfindungsgemäßen Programmiervorgang
genutzte Gesamtanzahl von Speicherbänken ist, p = die Gesamtanzahl
von zu ladenden Seiten ist, t = die Zeit zum Laden einer einzelnen
Seite von Daten in ein/en einzelnes/n RAM-Datenregister oder RAM-Datenpuffer
ist und T = die zum Programmieren einer einzelnen Seite von Daten
in den Flash-Speicher benötigte
Zeit ist, vergleicht die folgende Tabelle die Programmiergeschwindigkeiten
gemäß dem Stand der
Technik
2, mehrere Speicherbänke mit
einem einzelnen RAM-Datenregister pro Speicherbank gemäß der vorliegenden
Erfindung (
6) sowie mehrere Speicherbänke mit
dualen RAM-Datenregistern gemäß der vorliegenden
Erfindung (
7): Gesamtprogrammierzeit
(P
rogT
ime)
A.
Herkömmliches
Flash-Speichersystem gemäß FIG. 2 | ProgTime = p(t = T) |
B.
Multibank-Flash-Speichersystem gemäß FIG. 6 | ProgTime = p(t + T/N) |
C.
Duales RAM-Flash-Speichersystem gemäß FIG. 7 | ProgTime = Nt + p(T/N) |
-
Bei
den Programmierzeiten für
die vorangehende Tabelle wird davon ausgegangen, daß der Datenbus 611, 740 der
Multibank-Systeme Daten mit der gleichen Rate transportiert wie
der Datenbus 230 einer herkömmlichen Flash-Speichereinheit.
Wenn Datenbus 611, 740 gemäß der vorliegenden Erfindung
alle RAM-Datenregister 710, ..., 716 simultan
durch eine parallele Konfiguration programmieren könnte, müßten die
vorangehenden Gleichungen etwas verändert werden.
-
Unter
erneuter Bezugnahme auf die Erörterung
zu 6 führen
gemäß der vorangehenden
Veranschaulichung N Speicherbänke
pro Speichereinheit effektiv zu einer Gesamtprogrammierzeit, die
N-mal so schnell ist wie eine Anwendung mit einer herkömmlichen
Flash-Speichereinheit. Auf den ersten Blick würde dies scheinbar die Konstruktion
von Speichereinheiten mit Hunderten von Speicherbänken nahelegen.
Obwohl es theoretisch keine Grenze für die Anzahl von Speicherbänken gibt,
die in eine Multibank-Flash-Speichereinheit
aufgenommen werden könnte,
geben betriebsbezogene Parameter einer bestimmten Anwendung typischerweise
praktische Grenzen bezüglich
der Anzahl von Speicherbänken
vor, die effektiv genutzt werden können.
-
Gemäß dem Stand
der Technik wurden Multibank-Flash-Speichersysteme gemäß einem Überlappungsprozeß (interleaving
process) programmiert, der in Verbindung mit 8 veranschaulicht
ist. Gemäß der folgenden
Veranschaulichung wird lediglich als Beispiel davon ausgegangen,
daß jeder
VLB zweiunddreißig einzelne
logische Blöcke
in vier physischen Datenblöcken
umfaßt.
Außerdem
wird als Beispiel davon ausgegangen, daß jedes Register 840,
..., 846 eine Seite von Benutzerdaten pro Zyklus programmiert,
wobei eine Seite einem logischen Block von Benutzerdaten entspricht.
Vier aufeinanderfolgende VLB von Benutzerdaten enthalten einhundertachtundzwanzig
logische Blöcke 810,
..., 826 von Daten, die entweder durch eine Adresse oder
eine gegen die Gesamtanzahl von logischen Blöcken in dem eintreffenden Satz
von Benutzerdaten 802 gemessene Offset-Zahl dargestellt
werden können.
Zum Beispiel kann der dritte logische Block 825 in dem vierten
virtuellen logischen Block 806 entweder durch die Adresse
24:2 dargestellt werden, die VLBA 24, Offset 2 angibt, oder einfach
gemäß der Offset-Gesamtzahl 98,
die gegen alle einhundertachtundzwanzig logischen Blöcke in dem
eintreffenden Satz von Benutzerdaten 800 gemessen wird.
Vier aufeinanderfolgende VLB 803, 804, 805, 806,
die einen einzelnen Satz von eintreffenden Benutzerdaten 800 umfassen,
werden von der Steuerung 604 (6) verarbeitet
und bilden im wesentlichen einen kontinuierlichen Stapel von eintreffenden
Daten.
-
Wenn
Daten in einer derartigen Multibank-Struktur gemäß dem Stand der Technik gespeichert
wurden, zerlegt ein Überlappungsprozeß einen
einzelnen logischen Block von Daten in mehrere physische Datenblöcke. Dieser
Prozeß kann
in Verbindung mit 8 veranschaulicht werden. Aufeinanderfolgende
logische Blöcke 810, 811, 812, 813 in
demselben virtuellen logischen Block 803 werden aufeinanderfolgend
zum Speichern in die RAM-Datenregister 840, ..., 846 geladen.
Im ersten Zyklus wird logischer Block 21:0 810 in RAM-Datenregister
1 840 geladen, logischer Block 21:1 811 wird in
RAM-Datenregister 2 842 geladen, logischer Block 21:2 812 wird
in RAM-Datenregister 3 844 geladen und logischer Block
21:3 813 wird in RAM-Datenregister 4 846 geladen.
Der Inhalt der vier Register 840, ..., 846 wird
dann simultan in die ersten Seiten 858, 861, 864 und 870 in
vier separaten und sich unterscheidenden physischen Datenblöcken 850, 852, 854, 856 in
den jeweiligen Speicherbänken 832, 834, 836, 838 programmiert.
Gemäß diesem Überlappungsprozeß gespeicherte
Daten zerlegen daher einen einzelnen virtuellen logischen Block
von Daten über
vier separate physische Speicherblöcke 850, 852, 854, 856,
die in vier separaten Speicherbänken 832, 834, 836, 838 angeordnet
sind. Wenn die Daten in einem umgekehrten Prozeß wiedergewonnen wurden, können sie
genau rekonstruiert werden. Wird jedoch kein umgekehrter Überlappungsprozeß genutzt,
wird die Rekonstruktion der Benutzerdaten problematisch. Obwohl
die Rekonstruktion durch detaillierte Korrelationsfelder erreicht
werden kann, die LBAs mit PBAs korrelieren, machen die sich ergebenden
Anfälligkeiten
beim Speicherverbrauch diese Option größtenteils undurchführbar.
-
Da
der Überlappungsprozeß zum Teil
aufgrund der Aktivität
des Hosts erreicht wird, kann ein Host, der dafür ausgelegt ist, in Verbindung
mit einer Standard- oder Einzelbank-Flash-Speichereinheit zu arbeiten, eine Datei
von Benutzerdaten nur rekonstruieren, wenn ein einzelner VLB in
einem einzelnen VPB gespeichert ist, wodurch eine Eins-zu-Eins-Korrelation zwischen
den LBAs und den PBAs erhalten wird. Ältere Hosts können daher
keine Daten aus mehreren Speicherbänken, die Daten in zerlegter
oder überlappter
Weise speichern, wiedergewinnen; die Systeme sind einfach nicht
kompatibel. Das Problem könnte
theoretisch gelöst
werden durch den Entwurf eines Multibank-Flash-Speichersticks mit
einem RAM-Datenpuffer 830, 8, von ausreichender
Datenkapazität,
um die vier eintreffenden virtuellen logischen Blöcke von
Daten 803, ..., 806 zu speichern und den Überlappungsprozeß in dem
Flash-Speicherstick transparent auszuführen. Ein Host würde einfach
fortlaufend Daten in einen RAM-Datenpuffer des Flash-Speichersystems
laden. Wie das Flash-Speichersystem die Daten verarbeitet hat, wäre transparent
und daher für
den Host nicht relevant. Der offensichtliche Nachteil ist die erhebliche
Menge an Speicher, die für
die Verwendung durch den RAM-Datenpuffer reserviert werden müßte. In ähnlicher
Weise könnte
das Problem gelöst
werden durch das Vorsehen einer erheblichen Menge von Speicherplatz
in dem Flash-Speichersystem für
den RAM-Platzmanager. Wenn jede einzelne LBA mit jeder einzelnen
PBA korreliert werden würde,
würde eine
Zerlegung die Rekonstruktion von Daten nicht verhindern. Jedoch
müßte wiederum
eine erhebliche Menge an Speicher für den Direktzugriffsspeicher
des Flash-Speichersystems bereitgestellt werden, was die tatsächliche
Kapazität
des Flash-Speichers selbst verringern würde. Obwohl jede dieser Lösungen das
Problem des Entwerfen eines mit verschiedenen Hosts kompatiblen
Flash-Speichersystems lösen
könnte,
sind sie für
Flash-Speicheranwendungen nicht gut geeignet.
-
Das
Dipert erteilte
US-Patent Nr.
5,604,880 offenbart ein Computersystem mit einer an einen
Speicher gekoppelten Zentraleinheit (CPU), ein Verfahren zum Feststellen,
ob der Speicher ein Speicher ersten Typs oder ein Speicher zweiten
Typs ist. Eine Programmierspannung wird von einer Steuerschaltung
des Speichers so abgekoppelt, daß die Steuerschaltung daran
gehindert wird, während
eines Schreibvorgangs des Speichers auf ein Speicherfeld des Speichers
zuzugreifen. Auf den Speicher wird dann von der CPU aus durch den Schreibvorgang
für eine
Geräteidentifikation
vom Speicher zugegriffen. Der erste Typ von Speicher schließt die Geräteidentifikation
ein, und der zweite Typ von Speicher schließt die Geräteidentifikation nicht ein.
Die Datenintegrität
des Speichers wird während
des Schreibvorgangs aufrechterhalten, da auf das Speicherfeld des Speichers
während
des Vorgangs nicht zugegriffen wird. Der Speicher wird dann als
der Speicher ersten Typs identifiziert, wenn die CPU die Geräteidentifikation
vom Speicher empfängt.
Der Speicher wird als der Speicher zweiten Typs identifiziert, wenn
die CPU die Geräteidentifikation
nicht vom Speicher empfängt.
-
Daher
ist Bedarf an einem Multibank-Flash-Speicherstick vorhanden, der
die Geschwindigkeitsvorteile einer Multibank-Flash-Speichereinheit
unter Aufrechterhaltung einer Abwärtskompatibilität mit älteren Hosts, die
für herkömmliche
Einzelbank-Speichersticks
entworfen sind, aufweist. Ferner ist ein Bedarf an einem Host vorhanden,
der die Geschwindigkeitsvorteile einer Multibank-Flash-Speichereinheit
nutzen kann, während
er zugleich die Daten in einer Anordnung speichert, die später von älteren Hosts
wiedergewonnen werden kann. Ferner ist ein Bedarf an einem benutzerfreundlichen
Mittel vorhanden, um ein Flash-Speichersystem so zu konfigurieren,
daß Daten
in einer ordnungsgemäßen Anordnung
gemäß den Fähigkeiten
und dem Format des Hosts gespeichert werden, der die Daten zur Speicherung
sendet. Ferner ist ein Bedarf an einem benutzerfreundlichen Mittel
vorhanden, um einen Host so zu konfigurieren, daß er Daten in einem Format
oder Protokoll sendet und wiedergewinnt, das mit sowohl herkömmlichen
Einzelbank-Flash-Speichersticks als auch Multibank-Flash-Speichersticks
kompatibel ist. Ferner ist ein Bedarf zum Erreichen einer Kompatibilität mit diversen Hosts
vorhanden, während
zugleich die Menge des für
den RAM-Platzspeicher aufgewendeten Flash-Speichers minimiert wird.
-
KURZBESCHREIBUNG DER ERFINDUNG
-
Die
vorliegende Erfindung stellt ein Flash-Speichersystem nach Anspruch
1 und ein Verfahren nach Anspruch 15 bereit. Die vorliegende Erfindung
offenbart ein Verfahren und eine Vorrichtung zum Speichern eintreffender
Benutzerdaten in einem Multibank-Flash-Speichersystem, das die Geschwindigkeitsvorteile
einer Multibank-Einheit nutzt, während
zugleich ein virtueller logischer Block von Daten in einer nichtzerlegten Anordnung
gespeichert wird, wodurch eine Abwärtskompatibilität mit älteren Hosts,
die für herkömmliche
Einzelspeicherbanksticks entworfen sind, aufrechterhalten wird.
Die vorliegende Erfindung offenbart ferner ein Verfahren und eine
Vorrichtung zur Nutzung der Geschwindigkeitsvorteile einer Multibank-Flash-Speichereinheit,
während
zugleich Daten in einer für ältere Hosts
zugreifbaren Anordnung gespeichert werden. Die vorliegende Erfindung
offenbart ferner ein Verfahren und eine Vorrichtung, mit dem/der
ein Multibank-Flash-Speichersystem
so konfiguriert wird, daß Daten
in einer ordnungsgemäßen Anordnung
gespeichert werden, gemäß den Fähigkeiten
und dem Format eines Hosts, der die Daten zur Speicherung sendet.
Die vorliegende Erfindung offenbart ferner ein Verfahren und eine
Vorrichtung, mit dem/der ein Hochleistungs-Host so konfiguriert
wird, daß er
Daten in einem Format oder Protokoll sendet und wiedergewinnt, das
mit sowohl herkömmlichen
Einzelbank-Flash-Speichersticks als auch Multibank-Flash-Speichersticks
kompatibel ist. Die vorliegende Erfindung offenbart ferner ein Verfahren
und eine Vorrichtung, mit dem/der Kompatibilität mit sowohl herkömmlichen
als auch Hochleistungs-Hosts erreicht wird, während zugleich die Menge an
für den
RAM-Datenpuffer aufgewendeten Speicher minimiert wird. Die vorliegende
Erfindung offenbart ferner ein Verfahren und eine Vorrichtung, mit
dem/der Kompatibilität
mit sowohl herkömmlichen
als auch Hochleistungs-Hosts
erreicht wird, während
zugleich die Menge an für
den RAM-Platzmanager aufgewendeten Speicher minimiert wird.
-
Gemäß einer
Ausführungsform
der vorliegenden Erfindung umfaßt
ein Flash-Speichersystem eine Vielzahl von separaten und unabhängig adressierbaren
Speicherbänken.
Jede Speicherbank umfaßt
eine Vielzahl von unabhängig
adressierbaren und unabhängig
programmierbaren nicht flüchtigen
Datenspeicherbereichen sowie ein primäres RAM-Datenregister. Ein erstes primäres RAM-Datenregister
in einer ersten Speicherbank kann Daten in Datenspeicherbereiche
in der ersten Speicherbank programmieren, und ein zweites primäres RAM-Datenregister
in einer zweiten Speicherbank kann Daten in Datenspeicherbereiche
in der zweiten Speicherbank programmieren. Das Flash-Speichersystem umfaßt außerdem einen
herstellerspezifischen Wert, enthaltend ein Mittel zum Laden des
herstellerspezifischen Werts in eine Handshake-Datenhülle beim Start.
Wenn von einem Host kein Antwort-Handshake empfangen wird, gibt
das Flash-Speichersystem einen ersten Modus zum Speichern von Daten
auf eine Art und Weise vor, die mit herkömmlichen Hosts kompatibel ist.
Wenn der Antwort-Handshake vom Host empfangen wird, so wird das
Flash-Speichersystem auf einen zweiten Datenspeichermodus konfiguriert,
der alle mehreren Seiten von Daten simultan mittels der mehreren Speicherbänke speichern
kann.
-
Gemäß einer
Ausführungsform
der vorliegenden Erfindung umfaßt
ein Flash-Speichersystem eine Vielzahl von separaten und unabhängig adressierbaren
Speicherbänken.
Jede Speicherbank umfaßt
eine Vielzahl von unabhängig
adressierbaren und unabhängig
programmierbaren nicht flüchtigen
Datenspeicherbereichen sowie ein primäres und ein Hilfs-RAM-Datenregister.
Ein erstes primäres
und ein erstes Hilfs-RAM-Datenregister in einer ersten Speicherbank
können
unabhängig
Daten in Datenspeicherbereiche in der ersten Speicherbank speichern.
Ein zweites primäres
und das zweite Hilfs-RAM-Datenregister in einer zweiten Speicherbank
können
unabhängig
Daten in Datenspeicherbereiche in der zweiten Speicherbank programmieren.
Bei Betrieb in einem Hochleistungsspeichermodus, wobei simultanes
Programmieren mehrerer Speicherbänke
genutzt wird, nutzen sequentielle Programmierzyklen zur Datenspeicherung
abwechselnd das primäre und
das Hilfs-RAM-Datenregister.
Das Flash-Speichersystem umfaßt
außerdem
einen herstellerspezifischen Wert, enthaltend ein Mittel zum Laden
des herstellerspezifischen Werts in eine Handshake-Datenhülie beim Start.
Wenn von einem Host kein Antwort-Handshake empfangen wird, gibt
das Flash-Speichersystem einen ersten Modus zum Speichern von Daten
auf eine Art und Weise vor, die mit herkömmlichen Hosts kompatibel ist.
Wenn ein Antwort-Handshake vom Host empfangen wird, so wird das
Flash-Speichersystem auf einen zweiten Datenspeichermodus konfiguriert,
der alle mehreren Seiten von Daten simultan mittels der mehreren Speicherbänke speichern
kann.
-
Gemäß einer
Ausführungsform
der vorliegenden Erfindung umfaßt
ein Verfahren zur Programmierung von eintreffenden Daten in ein
Multibank-Flash-Speichersystem mit einem herstellerspezifischen
Wert, einer Steuerung, die mit einer Speichereinheit operativ verbunden
ist, wobei die Steuerung einen RAM-Datenpuffer umfaßt, der
mit einer Speicherschnittstellenschaltung operativ verbundenen ist,
wobei die Flash-Speichereinheit eine Vielzahl von separaten und
einzeln adressierbaren Speicherbänken
umfaßt,
wobei jede Speicherbank ein primäres
RAM-Datenregister und eine Vielzahl von einzeln adressierbaren und
einzeln programmierbaren physischen Datenblöcken umfaßt, wobei jeder physische Datenblock
eine Vielzahl von einzeln adressierbaren und einzeln programmierbaren
Seiten umfaßt,
die Schritte des Erzeugens einer Handshake-Datenhülle, des
Ladens des herstellerspezifischen Werts in einem Flash-Speichersystem
in die Handshake-Datenhülle
und des Sendens der Handshake-Datenhülle an einen Host. Wenn von
dem Host kein Antwort-Handshake
empfangen wird, gibt das Flash-Speichersystem eine erste Datenspeicherkonfiguration
vor und programmiert eintreffende Daten gemäß einem ersten Datenspeicherverfahren
des Programmierens einer Seite von Benutzerdaten pro Programmierzyklus
in das Flash-Speichersystem. Wenn ein Antwort-Handshake empfangen
wird, so wird das Flash-Speichersystem auf eine zweite Datenspeicherkonfiguration
konfiguriert, die das simultane Programmieren einer Vielzahl von
Seiten von Daten in mehrere Speicherbänke bei jedem Programmierzyklus
einschließt.
Das Programmieren erfolgt in einer nichtüberlappten Weise, so daß aufeinanderfolgende
logische Blockadressen in einer gemeinsamen virtuellen logischen
Blockadresse in aufeinanderfolgenden physischen Blockadressen in
einem gemeinsamen physischen Datenblock gespeichert werden.
-
Gemäß einer
Ausführungsform
der vorliegenden Erfindung umfaßt
ein Verfahren zur Programmierung von eintreffenden Daten in ein
Multibank-Flash-Speichersystem mit einem herstellerspezifischen
Wert, einer Steuerung, die mit einer Speichereinheit operativ verbunden
ist, wobei die Steuerung einen RAM-Datenpuffer umfaßt, der
mit einer Speicherschnittstellenschaltung operativ verbundenen ist,
wobei die Flash-Speichereinheit eine Vielzahl von separaten und
einzeln adressierbaren Speicherbänken
umfaßt,
wobei jede Speicherbank ein primäres
RAM-Datenregister, ein Hilfs-RAM-Datenregister und eine Vielzahl
von einzeln adressierbaren und einzeln programmierbaren physischen
Datenblöcken
umfaßt,
wobei jeder physische Datenblock eine Vielzahl von einzeln adressierbaren
und einzeln programmierbaren Seiten umfaßt, die Schritte des Erzeugens
einer Handshake-Datenhülle, des
Ladens des herstellerspezifischen Werts in einem Flash-Speichersystem
in die Handshake-Datenhülle
und des Sendens der Handshake-Datenhülle an einen Host. Wenn von
dem Host kein Antwort-Handshake empfangen wird, gibt das Flash-Speichersystem
eine erste Datenspeicherkonfiguration vor und programmiert eintreffende
Daten gemäß einem
ersten Datenspeicherverfahren des Programmierens einer Seite von
Benutzerdaten pro Programmierzyklus in das Flash-Speichersystem.
Wenn ein Antwort-Handshake empfangen wird, so wird das Flash-Speichersystem
auf eine zweite Datenspeicherkonfiguration konfiguriert, die das
simultane Programmieren einer Vielzahl von Seiten von Daten in mehrere Speicherbänke bei
jedem Programmierzyklus einschließt. Das Programmieren erfolgt
in einer nichtüberlappten
(non-interleaved) Weise, so daß aufeinanderfolgende
logische Blockadressen in einer gemeinsamen virtuellen logischen
Blockadresse in aufeinanderfolgenden physischen Blockadressen in
einem gemeinsamen physischen Datenblock gespeichert werden. Sequentielle
Programmierzyklen nutzen zur Datenspeicherung abwechselnd das primäre und das
Hilfs-RAM-Datenregister.
-
Diese
und andere Vorteile werden für
Fachleute nach Lektüre
der folgenden detaillierten Beschreibung der bevorzugten Ausführungsformen,
die in den verschiedenen Zeichnungen und Figuren veranschaulicht sind,
ersichtlich sein.
-
Kurzbeschreibung der Zeichnungen
-
Die
beigefügten
Zeichnungen, die in diese Patentschrift eingebunden sind und einen
Teil derselben bilden, veranschaulichen Ausführungsformen der Erfindung
und dienen zusammen mit der Beschreibung zur Erläuterung der Grundsätze der
Erfindung.
-
1 ist
eine Veranschaulichung einer Gruppe von physischen Speicherblöcken, umfassend
eine Vielzahl von Seiten.
-
2 ist
eine an einen Host gekoppelte wechselbare Flash-Speicherkarte gemäß dem Stand
der Technik.
-
3 offenbart
verschiedene zur Datenkorrelation und -speicherung genutzte Register
und Felder.
-
4 ist
ein Ablaufdiagramm, das ein Verfahren zum Korrelieren physischer
und logischer Adressen während
des Speicherns von Daten offenbart.
-
5 ist
ein Ablaufdiagramm, das ein Verfahren zur Wiedergewinnung von Daten
offenbart.
-
6 ist
eine bildliche Darstellung eines mehrere Speicherbänke umfassenden
Flash-Speichersystems,
wobei jede Bank ein einzelnes RAM-Datenregister umfaßt.
-
7 ist
eine bildliche Darstellung eines mehrere Speicherbänke umfassenden
Flash-Speichersystems,
wobei jede Bank zwei RAM-Datenregister umfaßt.
-
9 ist
ein Ablaufdiagramm, das eine neue Weise der Implementierung des
Hochleistungs-Speicheralgorithmus
für mehre
Speicherbänke
gemäß der vorliegenden
Erfindung offenbart.
-
10 zeigt
einen Host, der an ein Flash-Speichersystem gekoppelte Korrelationsdaten
enthält.
-
11 zeigt
eine Handshake-Datenhülle
(Data Envelope).
-
Detaillierte Beschreibung der bevorzugten
Ausführungsform
-
Nunmehr
wird im Einzelnen auf die bevorzugten Ausführungsformen der Erfindung
bezug genommen, deren Beispiele in den beigefügten Zeichnungen veranschaulicht
sind. Zwar wird die Erfindung in Verbindung mit den bevorzugten
Ausführungsformen
beschrieben, es ist jedoch davon auszugehen, daß diese nicht dazu vorgesehen
sind, die Erfindung auf diese Ausführungsformen zu begrenzen.
Die Erfindung ist, im Gegenteil, dazu vorgesehen, Alternativen,
Modifikationen und Äquivalente
abzudecken, die im Umfang der Erfindung, der in den beigefügten Ansprüchen definiert
ist, eingeschlossen sein können.
Zum Beispiel kann in der folgenden Offenbarung eine Ansammlung von
Daten allgemein als ein logische Blockkomponenten von Daten umfassender
virtueller logischer Block von Daten bezeichnet werden. Eine Erörterung,
die diese Begriffe einbezieht, ist nicht dazu vorgesehen, die Erfindung
auf bestimmte Einheiten von Daten, die heutzutage häufig in
Fachkreisen verwendet werden, zu begrenzen, sondern einfach dazu,
die Funktion von Gruppierungen und Untergruppierungen von Daten
anhand von Begriffen zu veranschaulichen, mit denen Fachleute vertraut
ist. Der gleiche Grundsatz gilt für bestimmte Gruppierungen von
physischem Speicher, wie beispielsweise physische Datenblöcke und
Seitenkomponenten in physischen Datenblöcken, die als repräsentatives
Beispiel dafür
vorgestellt werden, wie größere adressierbare
Speicherbereiche kleine Speicherbereichskomponenten umfassen können. Ferner
sind in der folgenden detaillierten Beschreibung der vorliegenden
Erfindung zahlreiche spezifische Details dargelegt, um die vorliegende
Erfindung umfassender zu veranschaulichen. Für den Fachmann wird jedoch
ersichtlich sein, daß die
vorliegende Erfindung ohne diese spezifischen Details hergestellt
werden kann. In anderen Fällen
wurden hinreichend bekannte Verfahren und Verfahrensweisen, Komponenten
und Schaltungen nicht detailliert beschrieben, um Aspekte der vorliegenden
Erfindung nicht unnötig
unklar zu machen.
-
Einige
Abschnitte der folgenden detaillierten Beschreibungen werden in
bezug auf Verfahrensweisen, logische Blöcke und sonstige symbolische
Darstellungen von an Datenbits ausgeführten Vorgängen in einem Computerspeicher
vorgestellt. Diese Beschreibungen und Darstellungen sind die Mittel,
die von Fachleuten in der Datenverarbeitung angewendet werden, um
anderen Fachleuten am effektivsten das Wesen ihrer Arbeit zu vermitteln.
Eine Verfahrensweise, ein logischer Block, ein Prozeß usw. ist
hier und allgemein als eine selbstkonsistente Folge von Schritten
oder Anweisungen gedacht, die zu einem gewünschten Ergebnis führt. Diese Schritte
sind jene, die physische Handhabung physischer Größen erfordern.
Beim Umgang mit computerartigen Vorrichtungen, Komponenten, Strukturen
oder Aktivitäten
hat es sich mitunter als sinnvoll erwiesen, diese Signale – vorwiegend
aufgrund der verbreiteten Anwendung – als Bits, Bitströme, Datenströme, Hüllen, Pakete,
Register, Felder, Bytes, Werte, Elemente, Symbole, Zeichen, Begriff,
Zahlen oder dergleichen zu bezeichnen.
-
Ferner
sollte bedacht werden, daß bei
der Erörterung
elektrischer Komponenten die Begriffe „verbunden", „operativ
verbunden", „elektrisch
verbunden" und dergleichen
einen elektrischen Pfad zwischen zwei Komponenten bezeichnen. Es
ist jedoch davon auszugehen, daß derartige
Begriffe das Vorhandensein zusätzlicher
Komponenten, die zwischen den beiden ursprünglichen Komponenten angeordnet
sind, nicht ausschließt,
selbst wenn eine derartige zusätzliche
Komponente die Fähigkeit
aufweist, das Senden von Signalen oder Daten zwischen den beiden
ursprünglichen
Komponenten zu beeinflussen. Nur durch Verwendung des Begriffs „direkt
verbunden" oder
dergleichen soll eine elektrische Verbindung zwischen zwei Komponenten
bezeichnet werden, die jegliche zusätzliche Komponenten, die zwischen
den beiden ursprünglichen
Komponenten angeordnet sind, mit Ausnahme eines elektrischen Leiters,
ausschließt.
Schließlich
umfassen gesendete Daten zumindest drei unterschiedliche Elemente,
die Daten, die Hülle,
welche die Daten enthält,
oft als ein logischer Block oder ein virtueller Block bezeichnet,
sowie eine Adresse. Unter einer Adresse, beispielsweise einer LBA,
kann sich die Identifikation einer Ansammlung von Daten oder der
Hülle (des
logischen Blocks), in dem die Daten gespeichert sind, vorgestellt
werden. Eine tatsächliche
Adresse kann als Bits in einem Datenpaket vorhanden sein oder von
einem empfangenden Prozessor erzeugt werden, während dieser aufeinanderfolgend
empfangene Datenpakete zählt.
In einem derartigen Fall ist eine Adresse nicht einmal als eine
reale Entität
vorhanden. Unter einem logischen Block selbst kann sich eine Ansammlung
von Daten oder eine Hülle, die
eine Ansammlung von Daten enthält,
vorgestellt werden. Unter aufeinanderfolgenden logischen Blockadressen
kann sich vorgestellt werden, daß diese zu einer gemeinsamen
Hülle von
Daten (dem virtuellen logischen Block) oder zu einer gemeinsamen
Adresse (der virtuellen logischen Blockadresse) gehören. Der
Begriff „aufeinanderfolgend" kann selbst wechselnd
aufeinanderfolgende Adressen (zum Beispiel aufeinanderfolgende LBAs),
aufeinanderfolgende Datenhüllen
(zum Beispiel aufeinanderfolgende LBs) oder aufeinanderfolgende
Ansammlungen von Daten in aufeinanderfolgenden Hüllen, die durch aufeinanderfolgende
Adressen definiert sind, beschreiben. Aufgrund der Kurzlebigkeit
von Daten, insbesondere Daten, die gesendet werden, wie in diesen
Beispielen veranschaulicht, gibt es oftmals keine „richtige" Art, Beziehungen
zwischen Daten, Datenhüllen
und Daten-/Hüllenadressen
zu beschreiben. Obwohl sorgfältig
darauf geachtet wurde, Begriffe zu verwenden, die eine/n hier beschriebene/n
Prozeß oder
Struktur am besten verdeutlichen, müssen Beschreibungen von Beziehungen,
Handhabungen und Speicherung von Daten, Datenhüllen und deren jeweiliger Adressen
stets in Anbetracht des Zusammenhangs bewertet werden, in dem die
Aussagen erfolgen.
-
Eine
Aufgabe der Erfindung betrifft das simultane Programmieren einer
Multibank-Flash-Speicherkarte,
so daß ein
einheitlicher virtueller logischer Block von Daten in einem einheitlichen
physischen Datenblock gespeichert wird, wobei aufeinanderfolgende
logische Blockadressen von Daten in aufeinanderfolgenden physischen
Blockadressen gespeichert werden, wodurch die sequentielle Eins-zu-Eins-Beziehung
gewahrt wird, die zur Wiedergewinnung von Daten gemäß dem Stand
der Technik notwendig ist. Dieses Hochleistungsprogrammierverfahren
kann unter Verwendung von 8 veranschaulicht
werden, welche auch verwendet wurde, um den Prozeß der Datenspeicherung
gemäß dem Stand
der Technik zu veranschaulichen. Gemäß der vorliegenden Erfindung
würden
die vier eintreffenden logischen Blöcke von Daten 803, 804, 805, 806 während des
Speicherungs- oder
Programmierprozesses nicht zerlegt werden. Logische Blöcke von
Daten, die vor der Speicherung aufeinanderfolgend in demselben virtuellen
logischen Block adressiert wurden, würden bei Speicherung im physischen
Speicher aufeinanderfolgende physische Adressen beibehalten. Zum
Beispiel würden aufeinanderfolgend
adressierte VLBA 21 803 umfassende logische Blöcke 810, 811,
..., 814 jeweils in aufeinanderfolgend adressierten physischen Blockadressen 858, 859,
..., 860 in demselben physischen Datenblock 850 gespeichert
werden. Um eine nichtzerlegte Speicherung im physischen Speicher
zu erreichen, können Daten
nicht überlappt
werden, wenn sei von dem RAM-Datenpuffer 830 zu der Vielzahl
von RAM-Datenregistern 840, ..., 846 gesendet
werden. Der Prozeß,
durch den eine nichtzerlegte Speicherung in einem Multibank-Flash-Speichersystem
erfolgen kann, umfaßt
pro Programmzyklus das Speichern eines logischen Blocks aus jedem
VLB. Die Vielzahl von in einem beliebigen Zyklus programmierten
logischen Blockadressen ist identisch. In sukzessiven Programmierschritten
bewegt sich der Prozeß durch
aufeinanderfolgend adressierte logische Blöcke. Durch eine gemeinsame
VLBA definierte logische Blockadressen werden stets zu demselben RAM-Datenregister
gesendet und in einem gemeinsamen physischen Datenblock gespeichert,
so daß Daten von
aufeinanderfolgenden logischen Blockadressen in aufeinanderfolgenden
physischen Blockadressen gespeichert werden, wie hier veranschaulicht:
Während des
ersten Zyklus werden Daten aus dem ersten logischen Block 810 des
ersten VLB 803 in das erste RAM-Datenregister 840 geladen.
Daten aus dem ersten logischen Block 815 des zweiten VLB 804 werden in
das zweite RAM-Datenregister 842 geladen. Daten aus dem
ersten logischen Block 819 des dritten VLB 805 werden
in das dritte RAM-Datenregister 844 geladen, und Daten
aus dem ersten logischen Block 810 des vierten VLB 806 werden
in das vierte RAM-Datenregister 846 geladen. Die vier RAM-Datenregister 840,
..., 846 programmieren dann simultan ihren Inhalt in physische
Seiten 858, 861, 864 beziehungsweise 870.
-
Während des
zweiten Zyklus würden
Daten aus dem zweiten logischen Block 811, 816, 820, 824 der vier
jeweiligen virtuellen logischen Blöcke 803, 804, 805, 806 in
die vier jeweiligen RAM-Datenregister 840, ..., 846 geladen
und dann simultan ihren Inhalt in physische Seiten 858, 861, 864 beziehungsweise 870 programmieren.
-
Der
Prozeß würde andauern,
bis die letzen logischen Blöcke 814, 818, 822, 826 aus
den vier VLB 803, 804, 805, 806 jeweils
in die letzten Seiten 860, 863, 866, 872 der
vier jeweiligen physischen Datenblöcke 850, 852, 854, 856,
die auf die vier beispielhaften Speicherbänke 832, 834, 836, 838 verteilt
sind, programmiert sind. Durch diesen Prozeß wird die ursprüngliche
Ausrichtung aufeinanderfolgender logischer Blöcke in jedem VLB in aufeinanderfolgenden
Seiten der physischen Datenblöcke
beibehalten.
-
9 ist
ein Ablaufdiagramm, das eine Art und Weise beschreibt, auf die diese
Datenanordnung erreicht werden könnte.
Es ist davon auszugehen, daß dieses
Ablaufdiagramm eine Folge von Ereignissen zum Erreichen dieses Ziels
beschreibt. Fachleute werden in der Lage sein, Algorithmen zu erzeugen,
die funktionell identisch sind, obwohl die spezifischen Schritte
sich von den hier beschriebenen unterscheiden können. Das Ablaufdiagramm in 9 ist
daher nicht als Begrenzung eines durch die vorliegende Erfindung
in Aussicht gestellten Verfahrens der Datenspeicherung vorgesehen.
Wenn ein Host eintreffende, zur Speicherung vorgesehene Daten identifiziert
hat, beginnt er im ersten virtuellen logischen Block der Datei von
Daten. Im ersten Schritt 902 identifiziert der Prozessor
die niedrigste logische Blockadresse, die eintreffende Daten enthält. Diese
wird zu der ausgewählten
logischen Blockadresse. Im nächsten
Schritt 904 speichert die Steuerung des Flash-Speichersystems
Daten aus dem aktuellen logischen Block in der aktuellen virtuellen
logischen Blockadresse in die erste „Seite" des RAM-Datenpuffers. Im nächsten Schritt 906 wird
die virtuelle logische Blockadresse um Eins erhöht. (Obwohl bei dem hier beschriebenen
Algorithmus zur besseren Veranschaulichung davon ausgegangen wird,
daß virtuelle
logische Blockadressen, welche die Datei von eintreffenden Daten
umfassen, aufeinanderfolgende virtuelle logische Blockadressen sind,
wird dem Fachmann bekannt sein, wie der vorliegende Algorithmus
umzusetzen ist, um eine eintreffende Datei von Benutzerdaten, die
nichtsequentielle virtuelle logische Blockadressen umfaßt, umzusetzen.)
Im nächsten
Schritt 908 wird die „Seite" in dem RAM-Datenpuffer
um Eins erhöht.
Im folgenden Schritt 907 verkettet der Prozessor das LBA-Offset
auf die VLBA, um eine ausgewählte
LBA zu bilden. Im nächsten
Schritt 910 werden Daten, die gemäß der aktuellen LBA und der
aktuellen VLBA definiert sind, in der aktuellen Seite des RAM-Datenpuffers gespeichert.
Im nächsten Schritt 912 ermittelt
der Prozessor, ob die aktuelle VLBA die letzte VLBA in der eintreffenden
Datei von Daten ist. Ist sie nicht die letzte VLBA, kehrt der Prozessor
zu Schritt 906 zurück
und wiederholt den Zyklus ab diesem Punkt. Ist die aktuelle VLBA
die letzte VLBA in der eintreffenden Datendatei, geht der Prozessor
weiter zu Schritt 914, bei dem aufeinanderfolgende Seiten
in dem RAM-Datenspeicher in sukzessive RAM-Datenregister gespeichert werden. Gemäß dem nächsten Schritt 916 ermittelt
die Steuerung, ob sie bereits virtuelle physische Blockadressen
ausgewählt
hat, in denen die aktuelle Datendatei zu speichern ist. Wurde keine
VPBA ausgewählt,
wählt der
Prozessor in Schritt 918 eine freie VPBA aus. Wenn ein
Prozessor eine freie VPBA ausgewählt
hat, verkettet ein Prozessor gemäß Schritt 920 das
aktuelle VLB-Offset auf die aktuelle VPBA, wodurch eine aktuelle
PBA gebildet wird. Gemäß nächstem Schritt 922 programmieren
die RAM-Datenregister ihren
Inhalt in Seiten in den jeweiligen Speicherbänken, die durch die aktuelle
physische Blockadresse definiert sind. In Schritt 924 ermittelt
der Prozessor, ob die aktuelle LBA die letzte LBA in der eintreffenden
Datei von Daten ist. Wurde der letzte logische Block von Daten gespeichert,
endet der Prozeß gemäß Schritt 932.
Wenn die gespeicherten Daten nicht die letzte LBA in der eintreffenden
Datei von Daten sind, erhöht
ein Prozessor in Schritt 926 die LBA, setzt in Schritt 928 die
VLBA auf die erste VLBA in der eintreffenden Datei von Daten zurück und setzt
in Schritt 930 die erste „Seite" in dem RAM-Datenpuffer zurück. Der
Prozessor kehrt zu Schritt 907 zurück und fährt mit dem Datenspeicherungsprozeß fort.
-
Da
der hier beschriebene Hochleistungs-Datenspeicherungsalgorithmus
bei jedem Zyklus der Datenspeicherung über die gesamte Datei von eintreffenden
Benutzerdaten hinweg Daten aus mehreren virtuellen logischen Blöcken entnimmt,
müßte, wenn
der oben offenbarte Prozeß ausschließlich in
dem Flash-Speichersystem 600 6 stattfinden
würde,
der RAM-Datenpuffer 607, 830 groß genug
sein, um die gesamte Datei von eintreffenden Benutzerdaten 800 vorzuhalten.
Gemäß der bevorzugten
Ausführungsform
werden daher die logischen Blöcke
von Daten von dem Host 601 bei jedem Programmierzyklus
ausgewählt
und zu dem RAM-Datenpuffer 607 gesendet. Dies ermöglicht vorteilhafterweise,
daß die
Größe des RAM-Datenpuffers 607 wesentlich
verringert werden kann, wodurch wertvoller Speicherplatz in dem
Flash-Speichersystem 600 freigegeben wird. In der bevorzugten
Ausführungsform weist
der RAM-Datenpuffer 912 eine Speicherkapazität auf, die
gleich dem Gesamtspeicher der in dem Flash-Speichersystem vorhandenen
RAM-Datenregister 930, ..., 936 ist. Die Menge
an Direktzugriffspeicher in einem Flash-Speichersystem kann weiter
verringert werden durch Beseitigen des Platzmanagers 370, 3 aus
dem Flash-Speichersystem 600 und Speichern von Korrelationsdaten 1006 in
dem Host 601, wie in 10 abgebildet.
-
Ein
potentieller Nachteil des erfindungsgemäßen nichtüberlappten (non-interleaved)
Hochleistungsdatenspeicherprozesses liegt in der Kompatibilität mit herkömmlichen „Einzelbank"-Flash-Speichersystemen oder
herkömmlichen
Hosts. Die vorliegende Erfindung wählt bei jedem Programmierzyklus
einen logischen Block von Daten aus mehreren VLBs aus. Herkömmliche
Flash-Speichersysteme speicherten einen logischen Block pro Zyklus
und wählten
logische Blöcke
aufeinanderfolgend aus. Mit der Speicherung von Daten aus einem
zweiten VLB wurde nicht begonnen, bis sämtliche Daten aus dem ersten
VLB gespeichert waren.
-
Obwohl
die Anordnung von in dem physischen Speicher gespeicherten Daten
bei Verwendung eines herkömmlichen
Hosts oder eines Hochleistungs-Hosts ähnlich oder identisch ist,
unterscheidet sich der Prozeß,
durch den Daten in beiden Fällen
gespeichert werden, daher grundlegend. In der herkömmlichen
Ausführungsform
werden sequentiell empfangene logische Blöcke von Daten in aufeinanderfolgende
physische Blockadressen in demselben physischen Datenblock programmiert.
In der Hochleistungsausführungsform
werden sequentiell empfangene logische Blöcke von Daten simultan in separate
physische Datenblöcke
programmiert, die über
separate Speicherbänke
verteilt sind. Würde
ein Flash-Speichersystem
eintreffende Daten von einem herkömmlichen Host gemäß dem hier
offenbarten Hochleistungsverfahren speichern, dann würden die von
einem herkömmlichen
Host kommenden Daten ähnlich
wie bei dem Überlappungsprozeß zerlegt
werden, wodurch die eigentliche Aufgabe der Erfindung zunichte gemacht
würde.
Da das Flash-Speichersystem für herkömmliche
und für
Hochleistungs-Hosts einen jeweils anderen Datenspeicheralgorithmus
anwenden muß, muß das Flash-Speichersystem
eine Möglichkeit
aufweisen, um zu ermitteln, ob der Host, mit dem es in Verbindung
steht, ein herkömmlicher oder
ein Hochleistungs-Host ist. Nachdem diese Ermittlung erfolgt ist,
muß das
Flash-Speichersystem
in der Lage sein, sich selbst so zu konfigurieren, daß es Daten
gemäß einem
Verfahren speichert, das für
diesen Host geeignet ist.
-
Gemäß der vorliegenden
Erfindung findet beim Start ein Handshake- und Konfigurationsprozeß statt. Während des
Handshake-Prozesses werden zwischen dem Flash-Speichersystem und dem Host Informationen
ausgetauscht. 11 bildet eine Hülle 1100 von
Daten ab, die beim Start von dem Flash-Speichersystem an den Host übertragen
werden. Die Hülle 1100 umfaßt typischerweise
512 Bytes, einschließlich
eines Headers 1102, herkömmlicher Daten 1104,
die typischerweise beim Start übertragen
werden, und eines großen ungenutzten
Abschnitts 1106 der Datenhülle 1100. Wenn ein
herkömmlicher
Host die Datenhülle 1100 beim Start
empfängt,
verarbeitet er nicht, was in dem ungenutzten Abschnitt 1106 der
Datenhülle 1100 gespeichert ist,
und dies ist für
den Host auch unerheblich. Gemäß der vorliegenden
Erfindung führt
ein Multibank-Speichersystem daher einen herstellerspezifischen
Wert in den ungenutzten Abschnitt 1106 der Datenhülle 1100 ein,
der dann beim Start zum Host gesendet wird. Beim Start gibt es drei
mögliche
Szenarien.
-
Im
ersten Szenario sendet ein herkömmlicher „Speicherstick" oder ein herkömmliches
Flash-Speichersystem
eine Handshake-Hülle
beim Start an einen Hochleistungs-Host. Der herkömmliche Speicherstick weist weder
einen herstellerspezifischen Wert auf, noch Mittel zum Schreiben
eines derartigen Werts in den ungenutzten Abschnitt 1106 der
Handshake-Hülle. Bei
Empfang der Handshake-Hülle
untersucht der Hochleistungs-Host den ungenutzten Abschnitt 1106 der
Hülle 1100 und
stellt fest, daß der
Speicherstick ein herkömmlicher
Speicherstick ist. Der Host gibt dann die herkömmliche Konfiguration des Sendens
von Daten aus aufeinanderfolgenden logischen Blockadressen von Daten
vor.
-
Im
zweiten möglichen
Szenario schreibt ein Hochleistungs-Speicherstick beim Start einen
herstellerspezifischen Wert in den ungenutzten Abschnitt der Handshake-Hülle und
sendet das Paket zu einem herkömmlichen
Host. Da der Host kein Hochleistungs-Host ist, kann er den herstellerspezifischen
Wert weder lesen noch verarbeiten und antwortet nicht dadurch, daß er sich
als ein Hochleistungs-Host identifiziert. Der vorgegebene Zustand
des Hochleistungs-Speichersticks ist der Standardmodus, bei dem
aufeinanderfolgende logische Blockadressen in aufeinanderfolgenden
physischen Blockadressen gespeichert werden. Da der Host den herstellerspezifischen
Wert bei einem zurückgesendeten
Handshake nicht quittiert, arbeitet der Hochleistungs-Speicherstick
im Standardmodus und führt
kein simultanes Programmieren in separaten Speicherbänken aus.
-
Im
dritten Szenario führt
ein Hochleistungs-Speicherstick beim Start einen herstellerspezifischen
Wert in die ungenutzten Abschnitte der Handshake-Hülle ein
und sendet das Paket zu einem Hochleistungs-Host. Bei Empfang einer
Handshake-Hülle,
die den spezifischen herstellerspezifischen Wert im ungenutzten
Abschnitt des Pakets enthält,
sendet der Hochleistungs-Host einen Antwort-Handshake an den Hochleistungs-Speicherstick,
der das Vorhandensein eines Hochleistungs-Hosts bestätigt. Der
Host konfiguriert sich außerdem
so, daß er
bei jedem Zyklus der Programmierung Daten aus mehreren VLB sendet.
Bei Empfang der korrekten Antwort von einem Hochleistungs-Host konfiguriert
sich der Hochleistungs-Speicherstick dann so, daß er eintreffende Daten in
sukzessiven Speicherbänken
speichert, wie gemäß der vorliegenden
Erfindung offenbart.
-
In
einer alternativen Ausführungsform
ist der RAM-Datenpuffer 607 in dem Hochleistungs-Flash-Speicherstick
groß genug,
um eine gesamte Datei eintreffender Benutzerdaten zu speichern.
Ein Nachteil dieser Ausführungsform
ist die wesentliche Menge an Speicher, die von dem RAM-Datenpuffer 607 verbraucht
wird. Ein Vorteil dieser Ausführungsform
ist, daß sie
in der Lage wäre,
eine gesamte Datei von Benutzerdaten von einem herkömmlichen
Host herunterzuladen und simultanes Multibank-Speichern durchzuführen, wodurch
einem herkömmlichen
Host ermöglicht
würde,
die Geschwindigkeitsvorteile eines Multibank-Flash-Speichersystems zu
nutzen.