-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung fällt
in das Gebiet der Flash-Speicher-Systeme. Insbesondere bezieht sich die
vorliegende Erfindung auf Flash-Memory-Systeme, mit einer Schnittstelle
zu Host-Systemen.
-
Hintergrund
der Erfindung
-
Flash-Speichertechnologie
ist ein elektrisch wiederbeschreibbares nicht-flüchtiges digitales Speichermedium.
Da es nicht-flüchtig
ist, erfordert es keine laufende Stromversorgung zur Erhaltung der
digitalen Daten in seinem Speicher. Eine Flash-Speicherzelle speichert
gewöhnlich
eine Ladung auf einem schwebenden Gate zur Repräsentation eines ersten logischen
Zustands im Binärsystem,
während
die Abwesenheit einer gespeicherten Ladung den zweiten logischen
Zustand im Binärsystem
darstellt. Flash-Speicherzellen unterstützen gewöhnlich den Schreibvorgang,
den Lesevorgang und den Löschvorgang.
-
Fortschritte
in der Flach-Speichertechnologie haben eine Vielzahl von Anwendungen
ermöglicht.
Insbesondere sind Flash-Speicher-Implementationen weithin akzeptiert,
die die Massenspeicherfunktion konventioneller magnetischer rotierender
Speichermedien wie zum Beispiel Festplatten oder Diskettenlaufwerke
emulieren, gekoppelt an ein Host-Computer-System oder andere digitale Hostsysteme.
Festplatten- und Diskettelaufwerke weisen eine Reihe von Defiziten
auf, die von der Flash-Speichertechnologie nicht geteilt werden. Zum
einen besitzen Festplatten- und Diskettenlaufwerke bewegliche Teile,
z. B. einen Elektromotor, eine Drehspindel, einen Lese-/Schreibkopf
und eine magnetisierbare rotierende Platte. Diese Komponenten verursachen
Probleme mit der Zuverlässigkeit
und verstärken
die Anfälligkeit
der Festplatten- und Diskettenlaufwerke für Versagen aufgrund von Vibration,
Stoß oder
Fall. Zum anderen hat ein motorisiertes Laufwerk einen beachtlichen
Stromverbrauch und verringert so die Betriebszeit zwischen den Aufladevorgängen beträchtlich. Und
schließlich
ist der Zugriff auf die auf einem Festplatten- oder Diskettenlaufwerk
gespeicherten Daten ein relativ langsamer Prozeß.
-
Im
Vergleich zu rotierenden Speichermedien besitzt ein Flash-Speicher-System
zahlreiche Vorteile. Das typische Flash-Speicher-System hat keine
beweglichen Teile, was die Zuverlässigkeit des typischen Flash-Speicher-Systems
erklärt.
Außerdem
hält die
robuste Bauweise des typischen Flash-Speicher-Systems Umweltbedingungen
und unsachgemäßer Behandlung
stand, die katastrophale Auswirkungen auf ein Festplatten- und Diskettenlaufwerk
haben würden.
Im allgemeinen erhält
der Benutzer sehr rasch Zugriff auf die auf einem Flash-Speicher-System
gespeicherten Daten. Und schließlich
ist der Stromverbrauch des typischen Flash-Speicher-Systems beträchtlich
geringer als der Stromverbrauch von Festplatten- und Diskettenlaufwerken.
-
Aufgrund
der Marktsättigung
und universellen Anwendung von rotierenden Speichermedien wie Festplatten,
muß selbst
ein überragender
Prozeß oder
Gerät,
der bzw. das einen Marktanteil erobern möchte, mit der vorhandenen Software
und existierenden Betriebssystemen kompatibel sein. Um die Kompatibilität zu Systemen
zu ermöglichen,
die zur Datenspeicherung auf älteren
rotierenden Massenspeichersystemen konfiguriert sind, wird Flash-Speicher
in der Regel in eine Reihe von Datenfeldern aufgeteilt, die in der
Lage sind, fünfhundertzwölf Bytes
Benutzerdaten und sechzehn Bytes Zusatzdaten zu speichern, und somit
die Größe eines in
der Regel auf handelsüblichen
Festplatten verfügbaren
Datenfeldes emulieren. 1 zeigt eine nicht-flüchtige Speicheranordnung
in einem Flash-Speichermedium.
Eine Ansammlung physikalischer Sektoren oder Seiten 108,
..., 112 ist in der Regel in der Lage, fünfhundertzwölf Bytes
Benutzerdaten und sechzehn Bytes Zusatzdaten pro Seite zu speichern
und entspricht somit der Speicherkapazität eines Sektors eines typischen rotierenden
Speichermediums. Eine Anzahl physikalischer Seiten 108,
..., 112, in der Regel sechzehn oder zweiunddreißig Seiten,
bildet einen physikalischen Datenblock 102.
-
Im
Stand der Technik besteht ein Flash-Speicher-System aus einer einzigen
Speicherstruktur 100, die wiederum aus einer Anzahl von
physikalischen Datenblöcken
besteht 102, ... 106. Jedem physikalischen Datenblock 102,
... 106 ist eine einzigartige virtuelle physikalische Blockadresse
(VPBA) zugewiesen, zur Identifizierung und Unterscheidung der Anzahl
der physikalischen Datenblöcke,
die ein Flash-Speicher-System bilden. Gewöhnlich ist jeder Datenblock 102,
... 106 einzeln programmierbar und löschbar.
-
2 illustriert
eine Ausführungsform
der Flash-Speicher-Architektur im Stand der Technik. Ein Host 215,
zum Beispiel ein Computer oder eine Digitalkamera, überträgt und empfängt Daten
zu und von einer entfernbaren Flash-Speicherkarte 201.
Bei der Übertragung
vom Host zum Flash-Speicher-System weist der Host den Daten logische
Blockadressen zu. Beim Abrufen der Daten fordert der Host diese
gemäß den zuvor
zugewiesenen Blockadressen ab. Die Daten werden über einen Host-Schnittstellenbus 220,
in der Regel basierend auf Parallelbusarchitektur, zu einer Host-Schnittstellenschaltung 203 der
Flash-Speicher-Steuereinrichtung 202 geleitet.
Die Host-Schnittstellenschaltung steuert die Speicherung der eintreffenden
Daten über
einen RAM-Datenpuffer 204. Wenn eine vorgegebene Datenmenge
im RAM-Datenpuffer 204 gespeichert ist, überträgt die Speicher-Schnittstellenschaltung 205 die
Daten über
einen Speicherbus 230 zur nicht-flüchtigen Flash-Speichereinheit 206,
die in 1 detaillierter offenbart ist. In der Regel hat
der Datenbus 203 eine Parallelbusstruktur. Die Größe des Datenpuffers 204 ist
vorteilhafter zur Speicherung einer Datenmenge gestaltet, die ein
Vielfaches eines nicht-flüchtigen
Speicherfeldes darstellt, wie einer Seite, die insgesamt aus ungefähr fünfhundertachtundzwanzig
Datenbytes besteht (siehe 1).
-
Auf
dem gegenwärtigen
Stand der Technik verfügt
ein Flash-Speicher-System über
eine begrenzte Anzahl von Programmzyklen, bevor es „abgenutzt" wird. Um das Problem
der Abnutzung zu mindern, versucht eine in 2 detaillierter
dargestellte Steuereinrichtung die verfügbaren Speicherplätze zu durchlaufen,
bevor sie zum ersten Speicherplatz zurückkehrt. Durch die Regulierung
der Abnutzung der Zellen verhindert die Steuereinrichtung eine ungleichmäßige Abnutzung
eines Bereichs des Flash-Speicher-Systems. Infolge dieses Abnutzungsausgleichsprogramms
wird die Wahrscheinlichkeit verringert, daß aufgrund übermäßiger Nutzung eines Bereichs
bei dem Flash-Speicher-System eine vorzeitige Verschlechterung in
einem lokalisierten Bereich auftritt. Somit bleibt das gesamte Flash-Speicher-System über seine
Lebensdauer hinweg gleichbleibend zuverlässig. Ein Festplattenlaufwerk
benötigt
keine derartige Ausgleichsvorrichtung, da sein Speichermechanismus
ohne Leistungsabfall eine praktisch unbegrenzte Anzahl von Programmier-/Schreibvorgängen durchlaufen
kann. Dieser Kontrast führt
zu einem funktionstechnischen Unterschied zwischen dem von Flash-Speicher-Systemen
und dem von Festplatten- oder Diskettenlaufwerken verwendeten Adressierungssystem.
-
Bei
Festplatten sowie Flash-Speicher-Systemen folgen die im Speicher
zugewiesenen physikalischen Adressen einem geometrischen Muster
in diesem Speichersystem. Das bedeutet, daß die physikalischen Adressen
in der Regel durch sukzessive Speicherplätze ansteigen. Wenn ein Speichersystem – egal ob Flash-Speicher
oder rotierende Platte – Benutzerdaten
empfängt,
weist ein Hostsystem den eintreffenden Daten normalerweise eine
Adresse zu. Bei einer Festplatte werden die Daten in der Regel in
dem Sektor gespeichert, dessen physikalische Adresse der vom Hostsystem
definierten logischen Adresse entspricht. Wenn ein Hostsystem durch
eine spezifische logische Adresse vordefinierte Benutzerdaten aktualisiert,
so werden die ursprünglichen
Daten an der vorgegebenen Adresse durch die neuen Daten überschrieben.
-
Bei
einem Flash-Speicher-System werden jedoch aufgrund des Durchlaufens
der verschiedenen Flash-Speicherbereiche gemäß dem Algorithmus, der die
gleichmäßige Abnutzung
gewährleistet,
die von den neuen physikalischen Adressen definierten physikalischen
Bereiche laufend gefüllt.
Wenn ein Hostsystem durch eine bestimmte logische Adresse definierte
Benutzerdaten aktualisiert und sie an das Flash-Speicher-System
sendet, weist das Abnutzungsausgleichsprogramm die eintreffenden
Benutzerdaten einem physikalischen Platz zu, der mit dem physikalischen
Platz, an dem die Benutzerdaten mit der gleichen logischen Adresse
zuvor gespeichert wurden, nicht in Verbindung steht. Die mit einer
bestimmten logischen Adresse verbundenen alten Daten werden nicht
sofort durch eintreffende Daten mit der gleichen logischen Adresse überschrieben.
Die alten Daten werden einfach obsolet und die eintreffenden Daten
werden in den nächsten
verfügbaren
physikalischen Block geschrieben, d.h. in den nächsten adressierbaren physikalischen
Datenblock, der frei und nicht defekt ist. Folglich weist das Hostsystem
Daten Adressen zu, die in keiner Beziehung zu den Adressen stehen,
unter denen das Flash-Speicher-System die Daten schließlich speichert.
Eine charakteristische Eigenschaft der von den typischen Flash-Speicher-Systemen
eingesetzten abnutzungsausgleichenden Datenspeicherungsprogrammen
besteht daher in dem sich laufend ändernden Verhältnis zwischen
den vom Host zugewiesenen logischen Adressen und den tatsächlich vom
Flash-Speicher-System verwendeten physikalischen Adressen. Durch
diesen dualen Speicherprozeß kann
ein Flash-Speicher-System
die Beziehung zwischen einer Festplatte und einem Host bezüglich Datenspeicherung
und Datenabruf funktionell emulieren und somit die Kompatibilität zu existierender
Software aufrechterhalten.
-
3 illustriert
verschiedene Register und Felder zur Aufnahme und Speicherung eintreffender
Daten in der Flash-Speichereinheit 206 (2).
Um den Abruf der von einem Hostsystem gespeicherten Benutzerdaten
zu erleichtern, muß jedoch
eine Korrelation zwischen logischen und physikalischen Adressen
existieren. Diese Korrelation wird in der Regel im Flash-Speicher-System
in den Zusatzbereichen jeder Seite 108, ... 112 und
in der RAM-Speicherverwaltung 370 gespeichert. Wenn ein
Host durch einen Satz von logischen Adressen 302, ... 308 identifizierte
Benutzerdaten 310, ..., 316 zu einem Flash-Speicher-System überträgt, so speichert
das Flash-Speicher-System die Daten an bestimmten physikalischen
Orten 322, ... 328 und korreliert dann die logischen 302,
... 308 und physikalischen 330, ... 336 Adressen
dieser Daten in spezifisch vorgegebenen Korrelationsregistern oder
-feldern wie der Speicherverwaltung 370. Wenn der Host
danach durch eine bestimmte logische Adresse identifizierte Daten
anfordert, so untersucht das Flash-Speicher-System die verschiedenen Register,
Felder oder Dateien, in denen logische und physikalische Adressen
korreliert sind. Nachdem das Flash-Speicher-System die vom Host
angeforderte logische Adresse gefunden hat, kann es die mit dieser
logischen Adresse korrelierte physikalische Adresse ermitteln. Danach
ruft das Flash-Speicher-System die Benutzerdaten von dieser physikalischen
Adresse ab.
-
Der
Speicher- und Abrufprozeß umfaßt eine
Reihe von Vorgängen,
bei welchen eine Reihe von Bits in einer Reihe von Adreßregistern
maskiert und verkettet werden. Das zur Speicherung einer logischen
Blockadresse verwendete Bit-Register kann in zwei Unterregister
gespalten werden, einem Bitfeld höherer Ordnung 342 und
einem Bitfeld niedrigerer Ordnung 344 des temporären LBA-Registers 340.
Eine Gruppe logischer Blöcke 310,
... 316, in der Regel sechzehn oder zweiunddreißig, definiert
durch eine gemeinsame Adresse in dem Bitfeld höherer Ordnung, bildet 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 zugehörigen logischen Blöcken ist
ein LBA-Offset, der die einzelnen logischen Blöcke voneinander unterscheidet.
Die Adressen niedrigerer Ordnung oder Offsets steigen in der Regel
von Null bis fünfzehn
oder Null bis einunddreißig,
obgleich ein virtueller logischer Block eine beliebige Größe haben
kann. Die virtuellen logischen Blockadressen höherer Ordnung plus die Bits
niedrigerer Ordnung definieren eine logische Blockadresse, wie das
temporäre
LBA-Register 340 illustriert. Die einem virtuellen logischen
Block zugehörigen
logischen Blöcke 310,
... 316 sind daher durch eine logische Blockadresse (LBA)
definiert.
-
Ein
virtueller logischer Block (VLB) 300 von Daten, definiert
durch eine virtuelle logische Blockadresse (VLBA) repräsentiert
eine Datenmenge, die einem physikalischen Speicherbereich äquivalent
ist, der als ein physikalischer Datenblock 320 bekannt
ist, der durch eine virtuelle physikalische Blockadresse (VPBA)
definiert ist. Eine VPBA setzt sich aus den zugehörigen physikalischen
Seiten zusammen. In einer VPBA aufeinanderfolgende Seiten werden
durch PBA-Offsets voneinander unterschieden. Die VPBA plus der PBA-Offset definieren
eine einzigartige PBA oder physikalische Blockadresse 330,
..., 336 für
jede Seite. Jeder logische Block 310, ..., 316 repräsentiert
eine einer physikalischen Seite 322, ..., 328 äquivalente
Datenmenge. Zur Korrelation der logischen und physikalischen Adressen
abgestellte Datenfelder und Register, wie die RAM-Speicherverwaltung 370,
verbrauchen in einem Flash-Speicher-System wertvollen Speicherplatz,
welcher ansonsten nutzbringender zur Speicherung von Daten verwendet
werden könnte.
Würde ein
Flash-Speicher-System über
genug Korrelationsregister 380, ..., 384 verfügen, um
jede LBA 345, 346, usw. mit einer entsprechenden PDA 330,
..., 336 zu korrelieren, so würde die Korrelationsfunktion
eine große
Menge an Flash-Speicher einnehmen und somit wesentlich weniger Platz
zum Speichern von Benutzerdaten verfügbar sein. Solch eine detaillierte
Korrelation wäre
zum Beispiel erforderlich, wenn ein virtueller logischer Block von
Benutzerdaten 300 in sechzehn oder zweiunddreißig zugehörige logische
Blockadressen 302, ..., 308 fragmentiert würde und
auf sechzehn oder zweiunddreißig
verschiedenen Seiten gespeichert würde, welche wiederum unter
verschiedenen physikalischen Datenblöcken im Flash-Speicher-System 200 verteilt
wären.
-
Eine
Methode zur Minimierung des für
die Korrelationsdaten erforderlichen Speicherverbrauchs besteht
darin, die Korrelation auf größere Datengruppen
zu begrenzen, wie die Korrelation von virtuellen logischen Blockadressen
mit den virtuellen logischen Blockadressen, die große Blöcke an physikalischem
Speicher definieren. Eine Art, die Korrelation zwischen den zugehörigen logischen
Blöcken
einer VLB und den einzelnen physikalischen Seiten eines physikalischen
Datenblocks zu erhalten, ohne die Korrelationsregister durch die
Aufnahme jedes einzelnen logischen Blocks zu vervielfachen, besteht
darin, fortlaufend adressierte logische Blöcke 310, ..., 316 des
VLB 300 in fortlaufend adressierten Seiten 322,
..., 328 in einem physikalischen Datenblock 320 zu
speichern. Eine direkte Korrelation zwischen fortlaufenden physikalischen
Blockadressen 330, ..., 336 in einem physikalischen
Datenblock 320 und den zugehörigen logischen Blockadressen 302,
... 308 in einem virtuellen logischen Block 320 wird
daher durch eine räumliche
oder quasi-räumliche
Anordnung aufrechterhalten. Für
die Korrelation einzelner LBAs mit einzelnen physikalischen Seitenadressen muß kein Register
abgestellt werden. Nur die VLBA im Bitfeld höherer Ordnung müssen mit
den den physikalischen Datenblock repräsentierenden VPBA korreliert
werden.
-
4 ist
ein Flußdiagramm,
das die Speicherung eintreffender Benutzerdaten gemäß den Datenfeldern
und Registern in 3 illustriert. Im ersten Schritt 402 wird
der virtuelle logische Block siebzehn 300 (3)
von einem Host 215 zur Speicherung in einer nicht-flüchtigen
Flash-Speichereinheit 206 (2) empfangen.
Im folgenden Schritt 404 verschiebt die Steuereinrichtung 202 die
erste LBA 302 in das temporäre LBA-Register 340.
Danach 406 maskiert die Steuereinrichtung die Bits niedrigerer
Ordnung 344 im temporären LBA-Register 340 und
stellt die VLBA 342 in ein VLBA-Register 360.
Im nächsten
Schritt 408 untersucht die Steuereinrichtung die Speicherverwaltung 370 und
identifiziert das VPBA-Korrelationsregister 384 als
das dem aktuellen VLB 349 entsprechende Register gemäß VLBA-Register 360.
Im nächsten
Schritt 412 identifiziert die Steuereinrichtung 202 einen
freien und nicht defekten physikalischen Datenblock 320,
identifiziert durch eine neue VPBA. Im folgenden Schritt 414 schreibt
die Steuereinrichtung 202 die neue VPBA in das Korrelationsregister 384 der
Speicherverwaltung 370.
-
Die
Steuereinrichtung ist nun bereit, die spezifischen Seiten 322,
..., 328 innerhalb des ausgewählten physikalischen Datenblocks 320 zur
Speicherung eintreffender Benutzerdaten in dem eintreffenden virtuellen logischen
Block 300 zu identifizieren. Zur Erzielung einer direkten
Korrelation zwischen den fortlaufenden logischen Blöcken 310,
..., 316 innerhalb des virtuellen logischen Blocks 300 und
den fortlaufenden physikalischen Blockadressen 330, ..., 336 kombiniert
die Steuereinrichtung die VPBA des physikalischen Datenblocks 320 mit
dem LBA-Offset der aktuellen LBA 302, ..., 308.
In Schritt 415 speichert die Steuereinrichtung 202 die VPBA
des ausgewählten
physikalischen Datenblocks 320 in einem temporären PBA-Register 351.
In Schritt 416 maskiert die Steuereinrichtung die Bits
höherer
Ordnung 342 des temporären
LBA-Registers 340 und verkettet die Bits niedrigerer Ordnung 344,
die den LBA-Offset enthalten, im Register niedrigerer Ordnung 354 des
temporären
PBA-Registers. Die kombinierten Register höherer 352 und niedrigerer 354 Ordnung
des temporären
PBA-Registers 351 bilden eine physikalische Blockadresse.
In Schritt 418 programmiert der Prozessor dann den vom
temporären
LBA-Register 340 identifizierten logischen Datenblock 310,
..., 316 in die im temporären PBA-Register identifizierten
physikalischen Seiten 322, ..., 326.
-
In
Schritt 420 untersucht die Steuereinrichtung den nächsten logischen
Block eintreffender Daten und verschiebt die LBA des eintreffenden
logischen Blocks in das temporäre
LBA-Register. Gemäß dem abschließenden Schritt 422 kehrt
die Steuereinrichtung 202 zu Schritt 416 zurück, wenn
der Wert im VLBA-Register 360 unverändert bleibt. Enthalten die
vom Host 215 empfangenen neuen Benutzerdaten eine neue
VLBA, so kehrt der Prozeß zu
Schritt 402 zurück
und beginnt dort erneut.
-
Einige
der Schritte in 4 könnten in einer anderen Reihenfolge
ausgeführt
werden, ohne das Resultat des Prozesses zu ändern. Da der spezifische Mechanismus
der Speicherung in einer Reihe von gleichwertigen Methoden durchgeführt werden
kann, soll der in 4 offenbarte Vorgang nicht bedeuten,
daß ein korrelierter
Speicherprozeß im
Stand der Technik zwingend in den angegebenen Schritten ablaufen
muß. Diese
Einzelheiten werden nur offenbart, um eine Art der Datenspeicherung
so darzustellen, daß eine
natürliche Korrelation
zwischen lokalen Blockadressen und physikalischen Blockadressen
erhalten bleibt. Gemäß dem vorstehend
beschriebenen Prozeß wird
der LBA-Offset 344 als ein PBA-Offset 354 beim
Speichern eines virtuellen logischen Blocks in einer physikalischen
Seite eingesetzt. Da die Reihenfolge im Speicher- und Programmiervorgang
erhalten bleibt, können
vom Host 202 angeforderte individuelle logische Blockadressen
vom Flash-Speicher-System 201 abgerufen werden.
-
5 stellt
einen Prozeß im
Stand der Technik dar, bei dem Daten von der Flash-Speichereinheit 206 nach
Aufforderung vom Host 202 abgerufen werden. Wiederum entspricht
der Abrufvorgang beispielhaft dem Datenabruf im Stand der Technik
und es ist nicht beabsichtigt, den Datenabruf auf einen einzigen
Algorithmus im Stand der Technik zu beschränken. Gemäß Schritt 502 fordert
der Host 202 (2) den Abruf von durch eine
bestimmte LBA oder Gruppe von LBAs 302, ..., 308 (3)
definierten Daten an. In Schritt 504 verschiebt die Steuereinrichtung 202 die
angeforderte LBA 302, ..., 308 in ein temporäres LBA-Register 340,
konzeptuell dargestellt als aus einem höheren 342 und niedrigeren 344 Register
bestehend, respektive Bits höherer
bzw. niedrigerer Ordnung enthaltend. Im nächsten Schritt 506 maskiert
die Steuereinrichtung 202 die Bits niedrigerer Ordnung 344 und
definiert die angeforderte VLBA in einem temporären VLBA-Register 360 gemäß dem Wert
in dem Register höherer
Ordnung 342. Im folgenden Schritt 508 erhöht die Steuereinrichtung 202 die Speicherverwaltung 370 zur
VLBA im temporären
VLBA-Register 360, und greift somit auf das aktuelle Korrelationsregister 384 zu,
das der im temporären
VLBA-Register 360 ermittelten virtuellen logischen Blockadresse entspricht.
In Schritt 510 kopiert die Steuereinrichtung 202 die
im aktuellen Korrelationsregister 384 gefundene VPBA in
das Register höherer
Ordnung 352 des temporären
PBA-Registers 351. Im folgenden Schritt 512 maskiert
die Steuereinrichtung 202 die Bits höherer Ordnung im höheren Register 342 des
temporären LBA-Registers 340 und
verkettet die Bits niedrigerer Ordnung im niedrigeren Register 344 mit
dem LBA-Offset im Register niedrigerer Ordnung 354 des
aktuellen PBA-Registers 351. Die kombinierten Register
höherer 352 und
niedrigerer 354 Ordnung des temporären PBA-Registers 351 bilden
eine physikalische Blockadresse. Nun kann die Steuereinrichtung 202 gemäß Schritt 514 auf
den durch die im temporären
PBA-Register erzeugte physikalische
Blockadresse definierten physikalischen Datenblock zugreifen und
die darin gefundenen Benutzerdaten zum Host weiterleiten. Gemäß Schritt 516 leitet
die Steuereinrichtung auch die logischen Blockadressen im temporären LBA-Register
an den Host weiter, und definiert hierdurch den logischen Block
von Benutzerdaten gemäß der ihm
ursprünglich
vom Host zugewiesenen Adresse.
-
Durch
die Verkettung des LBA-Offsets mit einer VPBA im Laufe des Speicherungs-
und Abrufprozesses kann die Steuereinrichtung auf Anforderung eine
LBA-/PBA-Korrelation aufstellen und braucht im Flash-Speicher-System 201 lediglich
eine Korrelation zwischen VLBA und VPBA zu speichern, was den für die Korrelation
erforderlichen Speicherbedarf auf einen Bruchteil des ohne diesen
Vorgang erforderlichen Ausmaßes
reduziert. Wenn also der Host die durch eine Reihe von logischen
Blockadressen definierten Daten anfordert, so ruft der Flash-Speicher
die Benutzerdaten von einem physikalischen Platz ab und gibt sie
dem Host zurück.
Wenn der Host somit Daten abruft, werden die dem Host gesendeten
Daten anhand der vom Host angeforderten selben Adresse identifiziert.
Das vom Flash-Speicher-System
verwendete duale Adressierungssystem und die verwendeten Querverweise
sind für
den Host unsichtbar.
-
Obgleich
Flash-Speicher in der Regel wesentlich schneller ist als Speicher
vom Typ einer rotierenden Platte, besteht zwischen den Lese- und
Schreibzeiten des Flash-Speichers ein beträchtlicher Unterschied. Die Lesezeit
des Flash-Speichers ist eine Sache von Mikrosekunden und hält dem Vergleich
mit RAM-Speicher ausgezeichnet stand. Der Programmier- oder Schreibvorgang
des Flash-Speichers bewegt sich jedoch in der Größenordnung von Millisekunden
und ist in der Regel um das Zehnfache langsamer als die typische
bei RAM-Speichern angetroffene Programmierzeit. Folglich kann der
RAM-Datenpuffer 204 digitale
Daten wesentlich schneller empfangen und erneut versenden, als die
nicht-flüchtige
Speichereinheit 206 sie empfangen kann. Somit stellt die
Programmierphase eines Flash-Speicher-Systems einen wesentlichen
Faktor für
die Begrenzung der möglichen
Geschwindigkeiten dar, die in einem integrierten Schaltkreis und
Flash-Speicherkomponenten enthaltendem MOS-System erzielbar sind.
-
Die
Programmiergeschwindigkeit von Flash-Speicher wurde durch die Entwicklung
eines in 6 dargestellten Flash-Speicher-Systems
mit mehreren Speicherbänken
beträchtlich
gesteigert. Ein Flash-Speicher-System 600 steht in Wirkverbindung
mit einem Hostsystem 601, beispielsweise einem Computer
oder einer Digitalkamera. Eine Steuereinheit 604 mit einer
Host-Schnittstellenschaltung 605, einem Datenpuffer 607 und
einer Speicherschnittstellenschaltung 609 steht in Wirkverbindung
mit einer Flash-Speichereinheit 602. Die Flash-Speichereinheit 602 besteht
aus einer Anzahl von Speicherbänken 621,
..., 627. Die erste Bank 621 besteht aus einer
Anzahl von physikalischen Datenblöcken 631, ..., 637 und
einem einzigen RAM-Datenregister 613. Die zweite Bank 623 besteht
aus einer Anzahl von physikalischen Datenblöcken 631, ..., 647 und
einem einzigen RAM-Datenregister 615.
Die dritte Bank 625 besteht aus einer Anzahl von physikalischen
Datenblöcken 651, 353, 355, 657 und
einem einzigen RAM-Datenregister 617. Die vierte Bank 627 besteht
aus einer Anzahl von physikalischen Datenblöcken 661, ..., 667 und
einem einzigen Datenregister 619. In der Regel setzt sich
jede der enthaltenen Speicherbänke 621,
..., 627 aus der gleichen Anzahl von physikalischen Datenblöcken zusammen.
In der Regel besitzt jedes RAM-Datenregister 613, ..., 619 eine
Datenkapazität,
die einer Seite physikalischen Speicher gleichkommt, also damit
in der Regel in der Lage ist, fünfhundertzwölf Bytes
Benutzerdaten plus sechzehn Bytes Zusatzdaten zu speichern. Die
Flash-Speichereinheit 602 in 6 besteht
nur zu Beispielzwecken aus vier Speicherbänken 621, ..., 627.
Multibank-Flash-Speicher-Systeme können aus einer beliebigen Anzahl
von Speicherbänken
bestehen. Entsprechend ist auch die Größe der Datenfelder und Speicherbereiche
nur zu Beispielszwecken angegeben, diese repräsentieren die am häufigsten vorkommenden
Konfigurationen im Stand der Technik. Es wird nicht beabsichtigt,
mit diesen Beschreibungen des Stands der Technik oder seiner Anwendung
auf die vorliegende Erfindung die Anwendung der vorliegenden Erfindung
auf eine bestimmte Anzahl von Speicherbänken zu beschränken. Auch
die hier enthaltenen Abbildungen sollen weder die Größen von
Datenfeldern und Registern physikalischer und logischer Art noch
die Menge der gespeicherten oder verarbeiteten eintreffenden Daten
beschränken.
Statt dessen werden spezifische Parameter wie Größe der Datenfelder, Anzahl
der Untergruppierungen des physikalischen Speichers, die eine größere Speicherkomponente
bilden oder die Anzahl der Untergruppierungen, die eine größere Menge an
Daten darstellen, nur zu Illustrationszwecken angegeben und wurden
deshalb gewählt,
weil sie im Stand der Technik häufig
angetroffen werden.
-
Bei
Multibank-Flash-Speicher-Systemen 600 speichert der RAM-Datenpuffer 607 die
Daten nicht direkt in die Flash-Speicherblöcke 631, ..., 667,
sondern lädt
der RAM-Datenpuffer 607 Daten in eine Anzahl von RAM-Datenregistern 613,
..., 619, welche die Benutzerdaten dann gleichzeitig in
ihre jeweiligen Speicherbänke 621,
..., 627 laden. Jedes RAM-Datenregister 613, 615, 617, 619 ist
in der Regel in der Lage, eine Seite Daten zu speichern und zu programmieren.
-
Wenn
die Flash-Speichereinrichtung 604 Information vom Host 601 erhält, dann
wird diese von der Host-Schnittstellensteuerung 605 im
RAM-Datenpuffer 607 in eine Warteschlange gestellt. Wenn
der RAM-Datenpuffer 607 mit einer vorgegebenen Menge an
Daten gefüllt
ist, beginnt die Speicherschnittstellenschaltung 609 die
Daten im RAM-Datenpuffer 607 in bestimmte RAM-Datenregister
der in der Flash-Speichereinheit enthaltenen RAM-Datenregister 613, 615, 617, 619 zu
schreiben. In der in 6 dargestellten Flash- Speichereinheit 602 speichert
der Puffer 607 in der Regel vier Seiten Daten. Bei den
am vorteilhaftesten konstruierten Speichervorrichtungen entspricht
die Anzahl der ausgewählten
RAM-Datenregister in der Regel der Anzahl der virtuellen logischen
Blöcke
der eintreffenden Daten. Der Datenbus 611 ist eine Parallelbusstruktur
zur Verschiebung von Daten vom Datenpuffer 607 in die Datenregister 613, 614, 617, 619.
Da der RAM-Datenpuffer 607 und die RAM-Datenregister 613, 614, 617, 619 Direktzugriffsspeicher
sind, werden Lese- und Schreibvorgänge zwischen ihnen mit äußerst hoher
Geschwindigkeit durchgeführt.
Nachdem die ausgewählten
RAM-Datenregister 613, ..., 619 gefüllt wurden,
beginnen die einzelnen RAM-Datenregister 613, ..., 619 gleichzeitig
mit dem Schreiben der Daten in die Flash-Speicherbereiche ihrer jeweiligen Speicherbänke 621,
..., 627. Bei einem System mit vier Bänken ist die Programmierzeit
auf etwa ein Viertel der Zeit reduziert, die eine traditionelle Flash-Speichereinheit
benötigt.
In einem System mit zehn Bänken
ist die Programmierzeit auf etwa ein Zehntel der Zeit reduziert,
die eine traditionelle Flash-Speichereinheit benötigt. Somit ist ein Multibank-System
schneller als eine traditionelle Flash-Speichereinheit, und zwar
um einen Faktor, der der Anzahl der RAM-Datenregister entspricht,
die gleichzeitig zur Programmierung der Daten in die Flash-Speichereinheit
eingesetzt werden.
-
Obwohl
die Übertragungs-
und Programmierzeit vom RAM-Datenpuffer 607 zu den RAM-Datenregistern 613,
..., 619 im Vergleich zur Programmierzeit der Flash-Speicherzellen
vernachlässigbar
gering ist, können
fortschrittliche Konstruktionen den Zeitaufwand für das Schreiben
von Benutzerdaten vom RAM-Datenpuffer 607 in die RAM-Datenregistern 613,
..., 619 beträchtlich
verringern. 7 zeigt eine Speichereinheit, die
aus einer Anzahl von Speicherbänken 702, 704, 706, 708 besteht.
Eine charakteristische Eigenschaft dieser Ausführungsform ist jedoch die Präsenz dualer
RAM-Datenregister 710 & 720, 712 & 722, 714 & 724, 716 & 726,
die jeweils einer RAM-Speicherbank 702, ..., 708 zugeordnet
sind. Jede Speicherbank 702, 704, 706, 708 wiederum
enthält
ein Primärregister 710, 712, 714, 716 und
ein Hilfsregister 720, 722, 724, 726.
In dieser Ausführungsform
lädt der
RAM-Datenpuffer 730 die
vier entsprechenden Primärregister 710,
..., 716 mit den in den Flash-Speicherzellen der entsprechenden Speicherbänke 702, 704, 706, 708 zu
speichernden Daten. Wiederum wird zur Fortführung des Vergleichs angenommen,
daß insgesamt
vier virtuelle logische Blöcke
von Benutzerdaten eintreffen, wobei jeder VLB aus zweiunddreißig logischen
Blöcken
von Benutzerdaten besteht, welche auf die vier Speicherbänke 702, 704, 706, 708 verteilt
werden sollen. Jede Speicherbank 702, 704, 706, 708 empfängt folglich
einen virtuellen logischen Block bzw. zweiunddreißig logische
Datenblöcke,
die jeweils eine Seite nach der anderen programmiert werden, zuzüglich der
zu jeder Seite gehörigen
Zusatzdaten. Dieser Vorgang läuft über zweiunddreißig Zyklen
ab.
-
Durch
den vorteilhaften Wechsel zwischen den Primärregistern 710, ..., 716 und
den Hilfsregistern 720, 722, 724, 726 tritt
eine Zeitverzögerung
beim Schreiben der Daten aus dem RAM-Datenpuffer 730 in
die RAM-Datenregister 710, ..., 726 nur im ersten
Zyklus beim Schreiben der ersten vier Datenseiten in die vier entsprechenden
Register auf. Die Programmierung des Flash-Speichers der jeweiligen
Bänke 702,
..., 708 dauert wesentlich länger als das Laden einer gespeicherten
Seite in ein RAM-Datenregister. So kann also der RAM-Datenpuffer 730 die
nächsten
vier Datenseiten in die Hilfsregister 720, ..., 726 laden,
während
die Primärregister 710,
..., 716 ihre jeweiligen Datenseiten in die Flash-Speicherzellen ihrer
jeweiligen Speicherbänke 702,
..., 708 programmieren. Da dies stattfindet, während die
Flash-Speicherzellen von ihren jeweiligen Primärregistern 710, ..., 716 programmiert
werden, ist das Schreiben in die Hilfsregister 720, ..., 726 nicht
mit einer Zeitverzögerung
verbunden. Wenn die Primärregister 710,
..., 716 das Laden ihrer jeweiligen Datenseiten in die
Flash-Speicherzellen ihrer jeweiligen Speicherbänke 702, ..., 708 beendet
haben, sind die Hilfsregister 720, ..., 726 sofort
bereit, mit dem Laden ihrer Datenseiten in ihre jeweiligen Speicherbänke 702,
..., 708 zu beginnen. Während
der Programmierung der Hilfsregister 720, 722, 724, 726 in
ihre jeweiligen physikalischen Datenblöcke kann der RAM-Datenpuffer 730 gleichzeitig
den nächsten
Datenzyklus in die Primärregister
laden. Dieser Prozeß des
simultanen Ladens von Daten in einen Satz von Registern, während ein
zugehöriger Satz
von Registern bestimmte Flash-Speicherzellen programmiert, dauert
an, bis die ausgewählten
Daten in den Flash-Speicher geladen worden sind. Wie bereits erwähnt, tritt
die einzige Verzögerung
beim Laden der Daten aus dem RAM-Datenpuffer 730 in die
jeweiligen RAM-Datenregister 710, ..., 716 nur
im ersten Zyklus auf.
-
Unter
der Annahme, daß jedes
RAM-Datenregister in der Lage ist, eine Seite von Daten zu speichern, was
ungefähr
einem logischen Block von Benutzerdaten entspricht, wobei N = Gesamtanzahl
der gemäß der vorliegenden
Erfindung während
des Programmiervorgangs verwendeten Speicherbänke ist, p = die Gesamtanzahl
der zu ladenden Seiten ist, t = die Zeitdauer ist, die zum Laden
einer einzigen Seite von Daten in ein einziges RAM-Datenregister oder
einen RAM-Datenpuffer erforderlich ist, und T = die Zeitdauer ist,
die zum Programmieren einer einzigen Seite von Daten in einen Flash-Speicher
erforderlich ist, vergleicht die folgende Tabelle die Programmiergeschwindigkeiten
im Stand der Technik
2, mehrerer Speicherbänke mit
einem einzigen RAM-Datenregister pro Speicherbank gemäß der vorliegenden
Erfindung (
6) sowie mehrerer Speicherbänke mit
dualen RAM-Datenregistern
gemäß der vorliegenden
Erfindung (
7): Programmierzeit
insgesamt (P
rogZ
eit)
A.
Traditionelles Flash-Speicher-System in FIG. 2 | ProgZeit = p(t = T) |
B.
Multibank-Flash-Speicher-System in FIG. 6 | ProgZeit = p(t = T/N) |
C.
Dual-RAM-Flash-Speicher-System in FIG. 7 | ProgZeit = Nt + p(T/N) |
-
Den
Programmierzeiten in der vorstehenden Tabelle liegt die Annahme
zugrunde, daß der
Datenbus 611, 740 des Multibank-Systems die Daten
mit der gleichen Geschwindigkeit leitet wie der Datenbus 230 eines traditionellen
Flash-Speicher-Systems. Wenn der Datenbus 611, 740 gemäß der vorliegenden
Erfindung sämtliche
RAM-Datenregister 710, ..., 716 gleichzeitig über eine
Parallelkonfiguration programmieren könnte, so müssen die vorstehenden Gleichungen
leicht angeglichen werden.
-
In
Rückkehr
zur Erörterung
gemäß 6 resultieren
gemäß der vorstehenden
Illustration N Speicherbänke
pro Speichereinheit in einer Gesamtprogrammierzeit, die das N-Fache
der Gesamtprogrammierzeit einer Anwendung mit einer traditionellen
Flash-Speichereinheit beträgt.
Auf den ersten Blick würde
dies eine Zusammensetzung von Speichereinheiten aus Hunderten von
Speicherbänken
nahelegen. Obgleich die Anzahl der Speicherbänke, die eine Multibank-Speichereinheit
umfassen kann, nicht beschränkt
ist, begrenzen die Betriebsparameter der jeweiligen Anwendung in
der Regel die Anzahl der Speicherbänke, die effektiv genutzt werden
kann.
-
Im
Stand der Technik werden Multibank-Flash-Speichereinheiten, wie
in Verbindung mit 8 illustriert, im Interleaving-Prozeß programmiert.
Gemäß der folgenden
Illustration wird rein zu Beispielszwecken angenommen, daß jeder
VLB zweiunddreißig
einzelne logische Blöcke
in vier physikalischen Datenblöcken
umfaßt.
Es wird außerdem
zu Beispielszwecken angenommen, daß jedes Register 840,
..., 846 eine Seite von Benutzerdaten pro Zyklus programmiert,
wobei eine Seite einem logischen Block von Benutzerdaten entspricht.
Vier aufeinanderfolgende VLBs von Benutzerdaten enthalten einhundertachtundzwanzig
logische Blöcke 810,
..., 826 von Daten, die entweder durch eine Adresse oder
einen gegen die Gesamtanzahl der logischen Blöcke im eintreffenden Satz von
Benutzerdaten 802 gemessenen Offset repräsentiert
werden. So kann zum Beispiel der dritte logische Block 825 im
vierten virtuellen logischen Block 806 entweder durch die
Adresse 24:2 repräsentiert
werden, was für
eine VLBA von 24 und dem Offset 2 steht, oder einfach gemäß dem Gesamtoffset
von 98, ermittelt für
die einhundertachtundzwanzig logischen Blöcke der eintreffenden Benutzerdaten 800.
Vier aufeinanderfolgende VLBs 803, 804, 805, 806,
die einen einzigen Satz an eintreffenden Benutzerdaten enthalten,
werden von der Steuereinheit 604 (6) verarbeitet
und bilden im Grunde einen durchgehenden Stapel eintreffender Daten.
-
Bei
der Speicherung von Daten in einem derartigen Multibank-System im
Stand der Technik wird ein einziger virtueller logischer Datenblock
bei der Verschachtelung (interleaving process) in mehrere physikalische
Speicherblöcke
fragmentiert. Dieser Vorgang wird in Verbindung mit 8 illustriert.
Aufeinanderfolgende logische Blöcke 810, 811, 812, 813 im
selben virtuellen logischen Block 803 werden nacheinander
in die RAM-Datenregister 840, ..., 846 zur Speicherung
geladen. Im ersten Zyklus wird der logische Block 21:0 810 in
das RAM-Datenregister 1 840, der logische Block 21:1 811 in
das RAM-Datenregister 2 842, der logische Block 21:2 812 in
das RAM-Datenregister 3 844, und der logische Block 21:3 813 in
das RAM-Datenregister 4 846 geladen.
-
Die
Inhalte der vier Register 840, ..., 846 werden
dann gleichzeitig in die ersten Seiten 858, 861, 864 und 870 in
vier separaten und getrennten physikalischen Datenblöcken 850, 852, 854, 856 in
den entsprechenden Speicherbänken 832, 834, 836, 838 programmiert.
Bei gemäß diesem
Verschachtelungsprozeß gespeicherten
Daten wird ein einziger virtueller logischer Datenblock somit über vier
separate physikalische Speicherblöcke 850, 852, 854, 856 aufgeteilt,
welche wiederum in vier separaten Speicherbänken 832, 834, 836, 838 untergebracht
werden. Werden die Daten dann im Umkehrverfahren wieder abgerufen,
so können sie
exakt rekonstruiert werden. Wird jedoch kein Verschachtelungsumkehrprozeß eingesetzt,
so wird die Rekonstruktion der Benutzerdaten problematisch. Obgleich
die Rekonstruktion über
detaillierte Korrelationsfelder durchgeführt werden kann, welche die
LBAs mit den PBAs korrelieren, macht der dazu erforderliche Speicherverbrauch
diese Option größtenteils
unpraktikabel.
-
Da
der Verschachtelungsprozeß teilweise
durch die Hostaktivität
erzielt wird, kann ein Host, der für die Zusammenarbeit mit einer
Standard- oder Einzelbank-Flash-Speichereinheit ausgelegt ist, nur
dann eine Datei mit Benutzerdaten rekonstruieren, wenn ein einziger
VLB in einem einzigen VPB gespeichert wird und somit eine direkte
Korrelation zwischen den LBAs und den PBAs besteht. Ältere Hostsysteme
können
daher keine Daten von Systemen mit mehreren Speicherbänken abrufen,
welche die Daten in fragmentierter oder verschachtelter Form speichern;
diese Systeme sind einfach nicht kompatibel. Das Problem könnte theoretisch durch
die Entwicklung eines Multibank-Flash-Speicher-Sticks mit einem
RAM-Datenpuffer 830, 8, mit ausreichender
Datenkapazität
zur Speicherung der vier eintreffenden virtuellen logischen Datenblöcke 803,
..., 806 und der Fähigkeit
zur transparenten Durchführung
des Verschachtelungsprozesses im Flash-Speicher-Stick gelöst werden.
Ein Host würde
einfach laufend die Daten in einen RAM-Datenpuffer des Flash-Speicher-Systems
laden. Wie das Flash-Speicher-System die Daten verarbeitet, wäre transparent
und daher für den
Host irrelevant. Der offensichtliche Nachteil davon ist der massive
Speicherbedarf, der für
den RAM-Datenpuffer eingeräumt
werden muß.
In ähnlicher
Weise könnte
das Problem durch die Bereitstellung eines massiven Speicherangebots
im Flash-Speicher-System für
die RAM-Speicherverwaltung gelöst
werden. Wäre jede
einzelne LBA zu jeder einzelnen PBA korreliert, so würde eine
Fragmentierung die Rekonstruktion der Daten nicht verhindern. Wiederum
würde jedoch
für den
Direktzugriff des Flash-Speicher-Systems
ein beträchtliches
Ausmaß an
wertvollem Speicher bereitgestellt werden müssen, was wiederum die tatsächliche
Kapazität
des Flash-Speichers einschränken
würde.
Obgleich jede dieser beiden Lösungen
das Problem lösen könnte, ein
Flash-Speicher-System zu entwickeln, das mit unterschiedlichen Hosts
kompatibel ist, eignen sie sich nicht besonders gut für Flash-Speicheranwendungen.
-
Es
besteht daher ein Bedarf für
einen Multibank-Flash-Speicher-Stick mit den Geschwindigkeitsvorteilen
einer Multibank-Flash-Speichereinheit und gleichzeitiger Kompatibilität mit älteren,
auf die Verwendung mit traditionellen Einzelbank-Speicher-Sticks
ausgelegten Hosts. Es besteht darüber hinaus ein Bedarf für einen Host,
der die Geschwindigkeitsvorteile einer Multibank-Flash-Speichereinheit
nutzen kann und gleichzeitig in der Lage ist, die Daten in einer
Anordnung zu speichern, welche später von älteren Hostsystemen abgerufen werden
kann. Darüber
hinaus besteht ein Bedarf für
ein benutzerfreundliches Mittel zur Konfiguration eines Flash-Speichersystems
zum Speichern von Daten in einer geeigneten Anordnung entsprechend
den Kapazitäten
und dem Format des Hosts, der die Daten zum Speichern überträgt. Darüber hinaus
besteht ein Bedarf für
ein benutzerfreundliches Mittel zur Konfiguration eines Hosts für den Versand
und Empfang von Daten in einem Format oder Protokoll, das sowohl
mit den traditionellen Einzelbank-Flash-Speicher-Sticks als auch zu den Multibank-Flash-Speicher-Sticks
kompatibel ist. Es besteht außerdem
ein Bedarf, Kompatibilität
zu ermöglichen
und gleichzeitig den Speicherbedarf für den RAM-Datenpuffer so gering
wie möglich
zu halten. Darüber hinaus
besteht ein Bedarf, die Kompatibilität mit unterschiedlichen Hosts
zu ermöglichen
und gleichzeitig den Speicherbedarf für die RAM-Speicherverwaltung
so gering wie möglich
zu halten.
-
KURZBESCHREIBUNG DER ERFINDUNG
-
Gegenstand
der vorliegenden Erfindung ist ein Flash-Speicher-System nach Anspruch
1 sowie ein Verfahren zur Programmierung eines Flash-Speicher-Systems
mit eintreffenden Daten von einem Host nach Anspruch 9. Besagtes
Flash-Speicher-System vereint die Geschwindigkeitsvorteile eines
Multibank-Systems mit der Fähigkeit,
einen virtuellen logischen Datenblock in nicht fragmentierter Anordnung
zu speichern und somit die Abwärtskompatibilität mit älteren,
auf traditionelle Einzelbank-Speicher-Sticks ausgelegten Hostsystemen
zu erhalten. Darüber
hinaus offenbart die vorliegende Erfindung ein Verfahren und eine
Vorrichtung zur Nutzung der Geschwindigkeitsvorteile eines Multibank-Systems
bei gleichzeitiger Speicherung der Daten in einer für ältere Hostsysteme
zugänglichen
Anordnung. Des weiteren offenbart die vorliegende Erfindung ein
Verfahren und eine Vorrichtung zur Konfiguration eines Multibank-Systems
zur Speicherung von Daten in einer geeigneten Anordnung, die den
Fähigkeiten
und dem Format eines Daten zur Speicherung übertragenden Hosts entspricht.
Des weiteren offenbart die vorliegende Erfindung ein Verfahren und
eine Vorrichtung zur Konfiguration eines Hochleistungs-Hosts für den Versand
und Empfang von Daten in einem Format oder Protokoll, das sowohl
mit den traditionellen Einzelbank-Flash-Speicher-Sticks als auch
mit den Multibank-Flash-Speicher-Sticks
kompatibel ist. Des weiteren offenbart die vorliegende Erfindung
ein Verfahren und eine Vorrichtung dazu, die Erzielung der Kompatibilität sowohl
mit traditionellen als auch mit Hochleistungs-Hosts und gleichzeitig
den Speicherbedarf für
den RAM-Datenpuffer so gering wie möglich zu halten. Des weiteren
offenbart die vorliegende Erfindung ein Verfahren und eine Vorrichtung,
um Kompatibilität
sowohl mit traditionellen als auch mit Hochleistungs-Hosts zu ermöglichen
und gleichzeitig den für
die RAM-Speicherverwaltung aufgewendeten Speicher so gering wie
möglich
zu halten.
-
In
einer Ausführungsform
der vorliegenden Erfindung umfaßt
ein Flash-Speicher-System eine Anzahl von separaten und unabhängig adressierbaren
Speicherbänken.
Jede Speicherbank umfaßt
eine Anzahl von unabhängig
adressierbaren und unabhängig
programmierbaren nicht-flüchtigen
Datenspeicherbereichen und ein Primär-RAM-Datenregister. Ein erstes
Primär-RAM-Datenregister
in einer ersten Speicherbank ist fähig, Daten in den Datenspeicherbereichen
der ersten Speicherbank zu programmieren, und ein zweites Primär- RAM-Datenregister
in einer zweiten Speicherbank ist fähig, Daten in den Datenspeicherbereichen
der zweiten Speicherbank zu programmieren. Das Flash-Speicher-System umfaßt außerdem einen
herstellerspezifischen Wert und beinhaltet ein Mittel zum Laden
dieses herstellerspezifischen Wertes in ein Signaldatenaustauschpaket
beim Start. Wird vom Host kein Antwortsignal empfangen, so setzt
das Flash-Speicher-System standardmäßig einen ersten Datenspeichermodus
ein, der zur Speicherung von Daten in traditionellen Hostsystemen
kompatibel ist. Wenn das Flash-Speicher-System vom Host ein Antwortsignal
empfängt,
so ist es zur Verwendung eines zweiten Datenspeichermodus konfiguriert,
der in der Lage ist, mehrere Datenseiten gleichzeitig mittels mehrerer
Speicherbänke
zu speichern.
-
In
einer Ausführungsform
der vorliegenden Erfindung umfaßt
ein Flash-Speicher-System eine Anzahl von separaten und unabhängig adressierbaren
Speicherbänken.
Jede Speicherbank umfaßt
eine Anzahl von unabhängig
adressierbaren und unabhängig
programmierbaren nicht-flüchtigen
Datenspeicherbereichen sowie ein Primär- und ein Hilfs-RAM-Datenregister.
Ein erstes Primär-
und ein erstes Hilfs-RAM-Datenregister in einer ersten Speicherbank
sind unabhängig
voneinander fähig,
Daten in den Datenspeicherbereichen in der ersten Speicherbank zu
programmieren. Ein zweites Primär-
und ein zweites Hilfs-RAM-Datenregister
in einer zweiten Speicherbank sind unabhängig voneinander fähig, Daten
in den Datenspeicherbereichen der zweiten Speicherbank zu programmieren.
Beim Betrieb im Hochleistungsspeichermodus unter simultaner Programmierung
mehrerer Speicherbänke
nutzen sequentielle Programmierzyklen abwechselnd die Primär- und die Hilfs-RAM-Datenregister zur
Datenspeicherung. Daneben umfaßt
das Flash-Speicher-System einen herstellerspezifischen Wert und
beinhaltet ein Mittel zum Laden des herstellerspezifischen Wertes
in ein Signaldatenaustauschpaket beim Start. Wird vom Host kein
Antwortsignal empfangen, so setzt das Flash-Speicher-System standardmäßig einen
ersten Datenspeichermodus ein, der zur Speicherung von Daten in
traditionellen Hostsystemen kompatibel ist. Wenn das Flash-Speicher-System
vom Host ein Antwortsignal empfängt,
so ist es zur Verwendung eines zweiten Datenspeichermodus konfiguriert,
der in der Lage ist, mehrere Datenseiten gleichzeitig mittels mehrerer
Speicherbänke
zu speichern.
-
Eine
Ausführungsform
der vorliegenden Erfindung beinhaltet: ein Verfahren zur Programmierung
eintreffender Daten in ein Multibank-Flash-Speicher-System, das
einen herstellerspezifischen Wert (Vendor Unique Value), eine Steuereinheit,
die mit einer Speichereinheit in Wirkverbindung steht, die einen
RAM-Datenpuffer, der mit einer Speicherschnittstellenschaltung in
Wirkverbindung steht, enthaltende Steuereinheit, die Flash-Speichereinheit,
die eine Anzahl von separaten und einzeln adressierbaren Speicherbänken umfaßt, wobei
jede Speicherbank ein Primär-RAM-Datenregister
sowie eine Anzahl von einzeln adressierbaren und einzeln programmierbaren
physikalischen Datenblöcken
umfaßt,
wobei jeder physikalische Datenblock eine Anzahl von einzeln adressierbaren
und einzeln programmierbaren Seiten umfaßt. Dieses Verfahren umfaßt die Schritte
der Erzeugung einer Signalaustausch-Envelope, des Ladens des herstellerspezifischen
Werts in einem Flash-Speicher-System
in die Signalaustausch-Envelope und Sendens der Signalaustausch-Envelope
zu einem Host. Wird vom Host kein Antwortsignal empfangen, so setzt
das Flash-Speicher-System
standardmäßig eine
erste Datenspeicherkonfiguration ein und programmiert die eintreffenden
Daten in das Flash-Speicher-System anhand des ersten Datenspeicherverfahrens,
bei dem pro Programmierzyklus eine Seite von Benutzerdaten gespeichert
wird. Empfängt
das Flash-Speicher-System ein Antwortsignal, so ist das Flash-Speicher-System zur
Verwendung einer zweiten Datenspeicherkonfiguration konfiguriert,
bei der in jedem Programmzyklus eine Anzahl von Datenseiten gleichzeitig
in mehreren Speicherbänken
programmiert wird. Die Programmierung erfolgt auf nichtverschachtelte
Weise, so daß aufeinanderfolgende
logische Blockadressen mit einer gemeinsamen virtuellen logischen
Blockadresse in aufeinanderfolgenden physikalischen Blockadressen
in einem gemeinsamen physikalischen Datenblock gespeichert werden.
-
Eine
Ausführungsform
der vorliegenden Erfindung beinhaltet: ein Verfahren zur Programmierung
eintreffender Daten in ein Multibank-Flash-Speicher-System, das
einen herstellerspezifischen Wert, eine Steuereinheit, die mit einer
Speichereinheit in Wirkverbindung steht, die einen RAM-Datenpuffer,
der mit einer Speicherschnittstellenschaltung in Wirkverbindung
steht, enthaltende Steuereinheit, die Flash-Speichereinheit, die eine Anzahl von
separaten und einzeln adressierbaren Speicherbänken umfaßt, wobei jede Speicherbank
einen Primär-RAM-Datenregister,
ein RAM-Hilfsregister sowie eine Anzahl von einzeln adressierbaren
und einzeln programmierbaren physikalischen Datenblöcken umfaßt, wobei
jeder physikalische Datenblock eine Anzahl von einzeln adressierbaren
und einzeln programmierbaren Seiten umfaßt. Dieses Verfahren umfaßt die Schritte
der Erzeugung einer Signalaustausch-Envelope, des Ladens des herstellerspezifischen
Werts in einem Flash-Speicher-System in die Signalaustausch-Envelope
und Sendens dieser Signalaustausch-Envelope zu einem Host. Wird
vom Host kein Antwortsignal empfangen, so setzt das Flash-Speicher-System
standardmäßig eine
erste Datenspeicherkonfiguration ein und programmiert die eintreffenden
Daten in das Flash-Speicher-System anhand des ersten Datenspeicherverfahrens,
bei dem pro Programmierzyklus eine Seite von Benutzerdaten programmiert
wird. Wenn ein Antwortsignal empfangen wird, so ist das Flash-Speicher-System zur Verwendung
einer zweiten Datenspeicherkonfiguration konfiguriert, bei der in
jedem Programmzyklus eine Anzahl von Datenseiten gleichzeitig in
mehreren Speicherbänken
gespeichert wird. Die Programmierung erfolgt auf nichtverschachtelte
Weise, so daß aufeinanderfolgende
logische Blockadressen mit einer gemeinsamen virtuellen logischen
Blockadresse in aufeinanderfolgenden physikalischen Blockadressen
in einem gemeinsamen physikalischen Datenblock gespeichert werden.
Sequentielle Programmierzyklen benutzen dabei abwechselnd die Primär- und die
RAM-Hilfsregister zur Datenspeicherung.
-
Diese
und andere Vorteile werden dem Durchschnittsfachmann nach dem Lesen
der folgenden detaillierten Beschreibung der bevorzugten, in den
verschiedenen Zeichnungen und Abbildungen dargelegten Ausführungsformen
offensichtlich.
-
Kurzbeschreibung
der Zeichnungen
-
Die
beigefügten
Zeichnungen, die Teil dieser Spezifikationen sind, illustrieren
die Ausführungsformen der
Erfindung und dienen in Verbindung mit der Beschreibung zur Erläuterung
der Prinzipien dieser Erfindung.
-
1 illustriert
eine Gruppe von physikalischen Speicherblöcken, die sich aus einer Anzahl
von Seiten zusammensetzen.
-
2 zeigt
eine an eine Host im Stand der Technik angeschlossene entfernbare
Flash-Speicherkarte.
-
3 offenbart
verschiedene zur Datenkorrelation und -speicherung verwendete Register
und Felder.
-
4 ist
ein Flußdiagramm,
das ein Verfahren zur Korrelation physikalischer und logischer Adressen im
Laufe der Datenspeicherung offenbart.
-
5 ist
ein Flußdiagramm,
das ein Verfahren zum Abruf von Daten offenbart.
-
6 ist
ein Bilddiagramm eines Flash-Speicher-Systems, das eine Anzahl von
Speicherbänken
umfaßt,
wobei jede Speicherbank ein einziges RAM-Datenregister umfaßt.
-
7 ist
ein Bilddiagramm eines Flash-Speicher-Systems, das eine Anzahl von
Speicherbänken
umfaßt,
wobei jede Speicherbank zwei RAM-Datenregister umfaßt.
-
9 ist
ein Flußdiagramm,
das eine Art der erfindungsgemäßen Anwendung
eines Hochleistungs-Speicheralgorithmus für aus mehreren Speicherbänken bestehende
Flash-Speicher-Systeme
offenbart.
-
10 zeigt
einen Korrelationsdaten enthaltenden Host, der an ein Flash-Speicher-System
angeschlossen ist.
-
11 zeigt
eine Signalaustausch-Envelope.
-
Detaillierte
Beschreibung der bevorzugten Ausführungsform
-
Im
folgenden werden die bevorzugten Ausführungsformen der Erfindung
erläutert,
deren Beispiele in den beigefügten
Zeichnungen illustriert sind. Obzwar die Erfindung in Verbindung
mit den bevorzugten Ausführungsformen
beschrieben wird, ist dies keinesfalls als Beschränkung der
Erfindung auf diese Ausführungsformen
zu verstehen. Es wird vielmehr beabsichtigt, alternative, modifizierte
und äquivalente
Ausführungsformen
ebenfalls abzudecken, die in dem Gedanken und Schutzbereich der
Erfindung gemäß den angefügten Ansprüchen enthalten
sind. So kann zum Beispiel in der folgenden Offenlegung eine Datensammlung
allgemein als virtueller logischer Datenblock bezeichnet werden,
der eine Anzahl von logischen Datenblöcken umfaßt. Es wird nicht beabsichtigt,
bei einer Erörterung
unter Anwendung dieser Bezeichnungen die Erfindung auf spezifische
Dateneinheiten zu beschränken,
die gewöhnlich
im heutigen Stand der Technik angewendet werden. Diese Bezeichnungen
dienen lediglich der Illustration von Datengruppierungen und Untergruppierungen,
mit denen der Fachmann vertraut ist. Das gleiche Prinzip trifft
für spezifische
Gruppierungen von physikalischem Speicher zu, wie physikalische
Datenblöcke
und die in physikalischen Datenblöcken enthaltenen Datenseiten,
die als repräsentative
Beispiele dafür
herangezogen werden, wie sich größere adressierbare Speicherbereiche
aus kleineren Speicherbereichen zusammensetzen können. Des weiteren wird in
der folgenden ausführlichen
Beschreibung der vorliegenden Erfindung eine Vielzahl spezifischer
Einzelheiten dargelegt, um die vorliegende Erfindung eingehender
zu illustrieren. Es wird jedoch jedem Durchschnittsfachmann offensichtlich
sein, daß die
vorliegende Erfindung ohne diese spezifischen Einzelheiten praktisch
ausgeführt
werden kann. Art anderer Stelle wurden wohlbekannte Verfahren und
Vorgänge,
Komponenten und Steuereinrichtungen nicht im Detail beschrieben,
um die Aspekte der vorliegenden Erfindung nicht unnötig zu verschleiern.
-
Einige
Abschnitte der folgenden detaillierten Beschreibung betreffen Verfahren,
logische Blöcke,
Verarbeitung sowie sonstige symbolische Darstellungen der Vorgänge, denen
Datenbits in einem Computerspeicher unterzogen werden. Diese Beschreibungen
und Darstellungen werden von Datenverarbeitungsfachmännern dazu
eingesetzt, den Gegenstand ihrer Tätigkeit anderen Fachmännern am
besten nahezubringen. Ein Verfahren, logischer Block, Prozeß usw. versteht
sich hier – und
im allgemeinen – als
eine in sich schlüssige Abfolge
von Schritten oder Instruktionen, die zu einem gewünschten
Resultat führen.
Die betreffenden Schritte erfordern die physikalische Manipulation
physikalischer Größen. Beim
Umgang mit Computerausrüstung, -komponenten,
-strukturen und -aktivitäten
hat es sich manchmal – insbesondere
aus Gründen
der gebräuchlichen
Verwendung – als
praktisch erwiesen, diese Signale als Bits, Bitströme, Datenströme, Envelopes,
Pakete, Register, Felder, Bytes, Werte, Elemente, Symbole, Zeichen,
Ausdrücke,
Zahlen u. ä.
zu bezeichnen.
-
Dabei
ist weiterhin zu berücksichtigen,
daß bei
der Erörterung
elektrischer Komponenten die Bezeichnungen "verbunden", "in
Wirkverbindung stehend", "elektrisch angeschlossen" sowie ähnliche
Bezeichnungen einen elektrischen Pfad zwischen zwei Komponenten
angeben. Es versteht sich jedoch, daß derartige Bezeichnungen die
Existenz zusätzlicher,
den beiden Ursprungskomponenten zwischengeschalteter Komponenten
nicht ausschließen,
selbst wenn solch eine zusätzliche
Komponente in der Lage ist, die Signal- oder Datenübertragung
zwischen den beiden ursprünglichen
Komponenten zu unterbrechen oder beeinträchtigen. Einzig die Bezeichnung "direkt verbunden" oder ähnliche
Bezeichnungen sollen eine elektrische Verbindung zwischen zwei Komponenten
bedeuten, bei der außer
einem elektrischen Leiter keinerlei zusätzliche Komponenten den beiden
Ursprungskomponenten zwischengeschaltet sind. Und schließlich umfassen
die übertragenen
Daten mindestens drei verschiedene Elemente; die Daten, die Envelope,
die die Daten enthält – häufig logischer
Block oder virtueller logischer Block genannt – sowie eine Adresse. Eine
Adresse wie eine LBA zum Beispiel kann als Identifizierungsmittel
einer Datensammlung oder der Envelope (logischer Block), in der
die Daten gespeichert sind, betrachtet werden. Eine tatsächliche
Adresse kann in Form von Bits innerhalb eines Datenpakets existieren
oder von einem empfangenden Prozessor im Laufe der Zählung der
aufeinanderfolgenden eintreffenden Datenpakete erzeugt werden. In
solch einem Fall existiert die Adresse nicht einmal als reale Entität. Ein logischer
Block kann für
sich selbst als Datensammlung betrachtet werden, oder als Envelope,
die eine Datensammlung enthält.
Aufeinanderfolgende logische Blockadressen können als zu einer gemeinsamen
Daten-Envelope (dem virtuellen logischen Block) oder einer gemeinsamen
Adresse (der virtuellen logischen Blockadresse) gehörend betrachtet
werden. Die Bezeichnung "aufeinanderfolgend" kann verschiedentlich
auf aufeinanderfolgende Adressen (zum Beispiel aufeinanderfolgende
LBAs), aufeinanderfolgende Daten-Envelopes (zum Beispiel logische
Blöcke)
oder aufeinanderfolgende Datensammlungen in aufeinanderfolgenden,
durch aufeinanderfolgende Adressen definierten Envelopes angewendet
werden. Aufgrund der kurzlebigen Natur von Daten, insbesondere in
der Übertragung
begriffenen Daten, wie in diesen Beispielen beschrieben, gibt es
oft keine „richtige" Art, die Beziehung
zwischen Daten, Daten-Envelopes und Daten-/Envelope-Adressen zu
beschreiben. Trotz aller Bemühungen,
jene Bezeichnung zu verwenden, die einen Prozeß und die darin beschriebene
Struktur klar darstellen, müssen
die Beschreibungen der Beziehungen, Manipulation und Speicherung
von Daten, Daten-Envelopes
und ihrer jeweiligen Adressen jeweils im Licht des Zusammenhangs
der jeweiligen Aussagen betrachtet werden.
-
Ein
Gegenstand der vorliegenden Erfindung betrifft die simultane Programmierung
einer Flash-Speicherkarte mit einer Anzahl von Speicherbänken auf
derartige Weise, daß ein
unitärer
virtueller logischer Block in einem unitären physikalischen Datenblock
gespeichert wird, wobei aufeinanderfolgende logische Blockadressen
von Daten in aufeinanderfolgenden physikalischen Blockadressen gespeichert
werden und dadurch ihre sequentielle direkte Relation erhalten bleibt,
die zum Abruf von Daten nach dem Stand der Technik benötigt wird.
Dieses Hochleistungs-Programmierungsverfahren wird anhand von 8 illustriert.
Diese Abbildung illustriert außerdem
den Prozeß der
Datenspeicherung im Stand der Technik. In der vorliegenden Erfindung werden
die vier eintreffenden logischen Datenblöcke 803, 804, 805, 806 nicht
während
des Speicher- und Programmiervorgangs fragmentiert. Logische Datenblöcke, die
innerhalb desselben virtuellen logischen Blocks vor der Speicherung
aufeinanderfolgend adressiert waren, behalten bei der Speicherung
in den physikalischen Speicher ihre aufeinanderfolgenden physikalischen
Adressen. Zum Beispiel werden dabei die aufeinanderfolgend adressierten
logischen Blöcke 810, 811,
..., 814, welche die VLBA 21 803 bilden, jeweils
in den aufeinanderfolgend adressierten physikalischen Blockadressen 858, 859,
..., 860 im gleichen physikalischen Datenblock 850 gespeichert.
Zur Erzielung einer nicht fragmentierten Speicherung im physikalischen
Speicher können
die Daten nicht verschachtelt werden, wenn sie vom RAM-Datenpuffer 830 zu
den jeweiligen RAM-Datenregistern 840,
..., 846 gesendet werden. Das Verfahren, durch das eine
nicht fragmentierte Speicherung in einem Flash-Speicher-System mit
einer Anzahl von Speicherbänken
stattfinden kann, erfordert die Speicherung eines logischen Blocks
aus jedem VLB pro Programmierzyklus. Die Anzahl der logischen Blockadressen,
die in jedem beliebigen Zyklus programmiert wird, ist identisch.
In sukzessiven Programmierschritten durchläuft der Prozeß die aufeinanderfolgend
adressierten logischen Blöcke.
Durch eine gemeinsame VLBA definierte logische Blockadressen werden
stets in das gleiche RAM-Datenregister
geschickt und in einem gemeinsamen physikalischen Datenblock solchermaßen gespeichert,
daß Daten
aus aufeinanderfolgenden logischen Blockadressen in aufeinanderfolgenden
physikalischen Blockadressen gespeichert werden, wie hierbei illustriert:
Im
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 gleichzeitig ihren Inhalt respektive
in die physikalischen Seiten 858, 861, 864 und 870.
Im
zweiten Zyklus werden Daten aus dem zweiten logischen Block 811, 816, 820, 824 der
vier respektiven virtuellen logischen Blöcke 803, 804, 805, 806 in
den vier respektiven RAM- Datenregistern 804,
..., 846 gespeichert, welche dann gleichzeitig ihren Inhalt
respektive in die physikalischen Seiten 858, 861, 864 und 870 programmieren.
-
Dieser
Prozeß wird
fortgesetzt, bis die letzten logischen Blöcke 814, 818, 822, 826 von
den vier VLBs 803, 804, 805, 806 respektive
in die letzten Seiten 860, 863, 866, 872 der
auf den vier als Beispiel dienenden Speicherbänken 832, 834, 836, 838 verteilten
vier respektiven physikalischen Datenblöcken 850, 852, 854, 856 programmiert
worden sind. Im Verlauf dieses Prozesses bleibt die ursprüngliche
Ausrichtung der aufeinanderfolgenden logischen Blöcke in jedem
VBL in aufeinanderfolgenden Seiten der physikalischen Datenblöcke erhalten.
-
9 ist
ein Flußdiagramm,
das einen Weg dafür
darstellt, wie eine derartige Datenanordnung erzielt werden könnte. Dabei
versteht es sich, daß dieses
Flußdiagramm
einen Ablauf von Ereignissen zum Erreichen dieses Ziels darstellt.
Fachleute sind in der Lage, funktionell identische Algorithmen zu
generieren, obgleich die einzelnen Schritte von den hier beschriebenen
abweichen können.
Das Flußdiagramm
in 9 soll daher nicht als Beschränkung eines von der vorliegenden
Erfindung vorgesehenen Verfahrens zur Datenspeicherung betrachtet
werden. Wenn ein Host eintreffende Daten zur Speicherung identifiziert
hat, beginnt er mit dem ersten virtuellen logischen Block der Datendatei.
Im ersten Schritt 902 identifiziert der Prozessor die niedrigste logische
Blockadresse, die eintreffende Daten enthält. Das wird dann die ausgewählte logische
Blockadresse. Im nächsten
Schritt 904 speichert die Steuereinrichtung des Flash-Speicher-Systems
Daten aus dem aktuellen logischen Block im aktuellen virtuellen
logischen Block auf der ersten „Seite" des RAM-Datenpuffers. Im nächsten Schritt 906 werden
die virtuellen logischen Blockadressen um eins erhöht. (Obgleich
der hier beschriebene Algorithmus zu illustrativen Zwecken voraussetzt,
daß die
in der eintreffenden Datendatei enthaltenen virtuellen logischen
Blockadressen aufeinanderfolgende virtuelle Blockadressen sind,
weiß ein
Fachmann, wie man den vorliegenden Algorithmus zur Speicherung einer
eintreffenden Benutzerdatendatei anwendet, die nicht aufeinanderfolgende
virtuelle logische Blockadressen enthält. Im nächsten Schritt 908 wird
die „Seite" im RAM-Datenpuffer
um eins erhöht.
Im folgenden Schritt 907 verkettet der Prozessor den LBA-Offset
mit der VLBA zur Bildung einer gesonderten LBA. Im nächsten Schritt 910 werden
die durch die aktuelle LBA und die aktuelle VLBA definierten Daten
auf der aktuellen Seite im RAM-Datenpuffer gespeichert. Im nächsten Schritt 912 bestimmt
der Prozessor, ob die aktuelle VLBA die letzte VLBA in der eintreffenden
Datendatei ist. Ist sie nicht die letzte VLBA, so kehrt der Prozessor
zu Schritt 906 zurück
und wiederholt den Zyklus von diesem Punkt. Ist die aktuelle VLBA
die letzte VLBA in der eintreffenden Datendatei, so fährt der
Prozessor mit Schritt 914 fort, in dem aufeinanderfolgende
Seiten im RAM-Datenpuffer in sukzessiven RAM-Datenregistern gespeichert
werden. Gemäß dem nächsten Schritt 916 ermittelt
die Steuereinrichtung, ob sie bereits eine virtuelle physikalische
Blockadresse zur Speicherung der aktuellen Datendatei ausgewählt hat.
Wurde keine VPBA gewählt,
so wählt
der Prozessor in Schritt 918 eine freie VPBA. Hat ein Prozessor
eine freie VPBA gewählt,
so verkettet der Prozessor den aktuellen VPBA-Offset mit der aktuellen
VPBA gemäß Schritt 920 und
bildet so die aktuelle PBA. Gemäß dem nächsten Schritt 922 programmieren
die RAM-Datenregister ihren Inhalt in Seiten in den von der aktuellen
physikalischen Blockadresse definierten respektiven Speicherbänken. In
Schritt 924 ermittelt der Prozessor, ob die aktuelle LBA
die letzte LBA in der eintreffenden Datendatei ist. Wurde der letzte
logische Datenblock gespeichert, so wird der Vorgang gemäß Schritt 932 beendet.
Stellen die gespeicherten Daten nicht die letzte LBA in der eintreffenden
Dateidatei dar, so erhöht
der Prozessor die LBA in Schritt 926, setzt in Schritt 928 die
VLBA zur ersten VLBA in der eintreffenden Datendatei zurück und setzt
sich in Schritt 930 zur ersten „Seite" im RAM-Datenpuffer zurück. Der
Prozessor kehrt dann zu Schritt 907 zurück und fährt dort mit der Datenspeicherung
fort.
-
Da
der hier beschriebene Hochleistungsdatenspeicherungs-Algorithmus
in jedem Datenspeicherzyklus in der gesamten Datei Daten aus mehreren
virtuellen logischen Blöcken
zieht, müßte der
RAM-Datenpuffer 607, 830 groß genug für die gesamte eintreffende
Benutzerdatendatei 800 sein, wenn der vorstehende beschriebene
Prozeß ausschließlich in
dem Flash-Speicher-System 600 von 6. ablaufen
würde.
Nach der bevorzugten Ausführungsform
werden daher die logischen Datenblöcke vom Host in jedem Programmzyklus gewählt und
zum RAM-Datenpuffer 607 gesendet. Dies hat den Vorteil,
daß die
Größe des RAM-Datenpuffers 607 beträchtlich
reduziert werden kann und somit im Flash-Speicher-System 600 wertvoller
Speicherplatz freigesetzt wird. In der bevorzugten Ausführungsform
verfügt
der RAM-Datenpuffer 912 über eine Kapazität, die dem
Gesamtspeicher der im Flash-Speicher-System vorhandenen RAM-Datenregister 930,
... 936 gleichkommt. Die Menge des Direktzugriffsspeichers
in einem Flash-Speicher-System kann durch die Eliminierung der Speicherverwaltung 370, 3 aus
dem Flash-Speicher-System 600 und das Speichern der Korrelationsdaten 1006 im
Host 601 weiter reduziert werden, wie in 10 dargestellt.
-
Ein
potentieller Nachteil des nicht-verschachtelten Verfahrens zur Hochleistungsdatenspeicherung
gemäß der vorliegenden
Erfindung liegt in der Kompatibilität mit den traditionellen Flash-Speicher-Systemen
mit nur einer Speicherbank oder mit traditionellen Hosts. Die vorliegende
Erfindung wählt
in jedem Programmierzyklus einen logischen Datenblock aus mehreren
VLBs aus. Traditionelle Flash-Speicher-Systeme speichern einen logischen
Block pro Zyklus und wählen
logische Blöcke
nacheinander. Die Speicherung von Daten aus einem zweiten VLB beginnt
dabei erst, wenn sämtliche
Daten des ersten VLB gespeichert worden sind.
-
Obgleich
die Anordnung der im physikalischen Speicher gespeicherten Daten
bei einem traditionellen und einem Hochleistungs-Host ähnlich oder
identisch ist, ist das Verfahren der Datenspeicherung in beiden Fällen grundlegend
verschieden. Bei der traditionellen Ausführungsform werden sequentiell
empfangene logische Datenblöcke
in aufeinanderfolgende physikalische Blockadressen im selben physikalischen
Datenblock gespeichert. In der Hochleistungs-Ausführungsform
werden sequentiell empfangene logische Datenblöcke gleichzeitig in auf separaten
Speicherbänken
verteilten, separaten physikalischen Datenblöcken programmiert. Würde ein
Flash-Speicher-System von einem traditionellen Host eintreffende
Daten gemäß dem hier
offenbarten Hochleistungsverfahren speichern, so würden die
von einem traditionellen Host eintreffenden Daten dem Verschachtelungsprozeß ähnlich fragmentiert
und somit den Gegenstand der Erfindung zunichte machen. Da ein Flash-Speicher-System einen
unterschiedlichen Datenspeicher-Algorithmus für traditionelle und Hochleistungs-Hosts
anwenden muß,
muß das
Flash-Speicher-System in der Lage sein zu ermitteln, ob es sich
bei dem Host, mit dem es in Verbindung tritt, um ein traditionelles
oder ein Hochleistungssystem handelt. Danach muß das Flash-Speicher-System
in der Lage sein, sich entsprechend für die jeweils vom Host eingesetzte
Datenspeicherungsmethode zu konfigurieren.
-
Nach
der vorliegenden Erfindung findet beim Start ein Signalaustausch
(Handshake)- und Konfigurationsprozeß statt. Beim Signalaustausch
findet ein Informationsaustausch zwischen Flash-Speicher-System und
Host statt. 11 zeigt eine beim Start vom
Flash-Speicher-System
zum Host übertragene
Daten-Envelope 1100. Die Envelope 1100 umfaßt in der
Regel 512 Bytes sowie Zusatzdaten 1102, traditionelle Daten 1104,
die in der Regel beim Start übertragen
werden, sowie einen großen
ungenutzten Teil 1106 der Daten-Envelope 1100.
Wenn ein traditioneller Host die Daten-Envelope 1100 beim
Start empfängt,
verarbeitet er den ungenutzten Teil 1106 der Daten-Envelope 1100 nicht,
und es ist ihm auch gleichgültig,
was in diesem Teil gespeichert ist. Nach der vorliegenden Erfindung
fügt daher
ein aus mehreren Speicherbänken
bestehendes Speichersystem einen herstellerspezifischen Wert in
den ungenutzten Teil 1106 der Daten-Envelope 1100 ein, der
beim Start zum Host gesendet wird. Für den Start gibt es drei verschiedene
Ablaufvarianten.
-
In
der ersten Ablaufvariante sendet ein traditionelles Flash-Speicher-System
oder „Speicher-Stick" einem Hochleistungs-Host
beim Start eine Signalaustausch-Envelope. Der traditionelle Speicher-Stick
verfingt weder über
einen herstellerspezifischen Wert, noch ist er befähigt, einen
derartigen Wert in den ungenutzten Teil 1106 der Signalaustausch-Envelope
zu schreiben. Nach Empfang der Signalaustausch-Envelope untersucht
der Hochleistungs-Host den ungenutzten Teil 1106 der Envelope 1100 und
ermittelt, daß es
sich bei dem Speicher-Stick
um einen traditionellen Speicher-Stick handelt. Dann setzt der Host
standardmäßig die
traditionelle Konfiguration ein, bei der Daten aus aufeinanderfolgenden
logischen Blockadressen übermittelt
werden.
-
In
der zweiten möglichen
Ablaufvariante schreibt ein Hochleistungs-Speicher-Stick beim Start
einen herstellerspezifischen Wert in den ungenutzten Teil der Signalaustausch-Envelope
und sendet dieses Paket an einen traditionellen Host. Da dieser
Host kein Hochleistungs-Host ist, kann er den herstellerspezifischen Wert
nicht lesen oder verarbeiten und identifiziert sich in seiner Antwort
nicht als Hochleistungs-Host. Standardmäßig setzt der Hochleistungs-Speicher-Stick den
Standardmodus ein, wobei aufeinanderfolgende logische Blockadressen
in aufeinanderfolgenden physikalischen Blockadressen gespeichert
werden. Da der Host den herstellerspezifischen Wert im Antwortsignalaustausch
nicht anerkennt, arbeitet der Hochleistungs-Speicher-Stick im Standardmodus
und programmiert separate Speicherbänke nicht gleichzeitig.
-
In
der dritten Ablaufvariante fügt
ein Hochleistungs-Speicher-Stick beim Start einen herstellerspezifischen
Wert in den ungenutzten Teil der Signalaustausch-Envelope ein und
sendet dieses Paket an einen Hochleistungs-Host. Nach dem Empfang
der Signalaustausch-Envelope
mit einem herstellerspezifischen Wert im ungenutzten Teil des Umschlags
sendet der Hochleistungs-Host ein Antwortsignal zum Hochleistungs-Speicher-Stick
und bestätigt
sich somit als Hochleistungs-Host. Außerdem konfiguriert sich der
Hochleistungs-Host dazu, bei jedem Programmierzyklus Daten aus mehreren
virtuellen logischen Blöcken
zu senden. Nach Empfang der entsprechenden Antwort vom Host konfiguriert
sich dann der Hochleistungs-Speicher-Stick dazu, die eintreffenden
Daten erfindungsgemäß in sukzessiven
Speicherbänken
zu speichern.
-
In
einer alternativen Ausführungsform
ist der RAM-Datenpuffer 607 im Hochleistungs-Flash-Speicher-System groß genug,
die gesamte eintreffende Datendatei zu speichern. Ein Nachteil dieser
Ausführungsform
ist der beträchtliche
Speicherbedarf des RAM-Datenpuffers 607. Ein Vorteil dieser
Ausführungsform
ist die Fähigkeit,
eine gesamte Benutzerdatendatei von einem traditionellen Host herunterladen
zu können
und diese in mehreren Speicherbänken
speichern zu können,
und somit einem traditionellen Host die Nutzung der Geschwindigkeitsvorteile
eines aus mehreren Speicherbänken
bestehenden Flash-Speicher-Systems zu ermöglichen.