DE60122155T2 - Flashspeicherarchitektur zur implementierung von gleichzeitigen programmierbaren flashspeicherbanken mit host-kompatibilität - Google Patents

Flashspeicherarchitektur zur implementierung von gleichzeitigen programmierbaren flashspeicherbanken mit host-kompatibilität Download PDF

Info

Publication number
DE60122155T2
DE60122155T2 DE60122155T DE60122155T DE60122155T2 DE 60122155 T2 DE60122155 T2 DE 60122155T2 DE 60122155 T DE60122155 T DE 60122155T DE 60122155 T DE60122155 T DE 60122155T DE 60122155 T2 DE60122155 T2 DE 60122155T2
Authority
DE
Germany
Prior art keywords
data
block
flash memory
logical
host
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60122155T
Other languages
English (en)
Other versions
DE60122155D1 (de
Inventor
Petro Pleasanton ESTAKHRI
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Lexar Media Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lexar Media Inc filed Critical Lexar Media Inc
Application granted granted Critical
Publication of DE60122155D1 publication Critical patent/DE60122155D1/de
Publication of DE60122155T2 publication Critical patent/DE60122155T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection

Description

  • 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 (ProgZeit)
    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.

Claims (22)

  1. Flash-Speicher-System (1001), umfassend: a. eine Anzahl von separaten und unabhängig adressierbaren Speicherbänken (1020, 1022, 1024, 1026); b. ein Primär-RAM-Datenregister (1030, 1032, 1034, 1036); und c. einen herstellerspezifischen Wert, enthaltend ein Mittel zum Laden des herstellerspezifischen Wertes in ein Signalaustauschdatenpaket (1100) beim Start; worin das Flash-Speicher-System (1001) zum simultanen Programmieren einer Anzahl von Datenseiten in die Anzahl von Speicherbänken (1020, 1022, 1024, 1026) für einen Host (1002) konfiguriert ist, der einen Hochleistungs-Flash-Speicher-Betrieb durchführen kann, und das Flash-Speicher-System (1001) ferner zum wahlweisen Arbeiten in einem ersten Datenspeichermodus und in einem zweiten Datenspeichermodus als Antwort auf den herstellerspezifischen Wert konfiguriert ist, wobei der erste Datenspeichermodus ein Standardmodus ist.
  2. Flash-Speicher-System (1001) nach Anspruch 1, dadurch gekennzeichnet, daß es ferner eine Steuereinrichtung (1016) mit einer Host-Schnittstellenschaltung (1010), einem RAM-Datenpuffer (1012) und einer Speicherschnittstellenschaltung (1014) umfaßt, wobei der RAM-Datenpuffer (1012) mit der Host-Schnittstellenschaltung (1010) und der Speicherschnittstellenschaltung (1014) in Wirkverbindung steht, wobei die Speicherschnittstellenschaltung (1014) mit dem Primär-RAM-Datenregister (1030, 1032, 1034, 1036) in jeder der Anzahl von Speicherbänken (1020, 1022, 1024, 1026) mittels eines Datenbusses (1040) in Wirkverbindung steht, worin die Steuereinrichtung (1016) zur Steuerung einer Programmierung von Daten in die Anzahl von Datenspeicherbereichen, die auf die Anzahl von Speicherbänken (1020, 1022, 1024, 1026) verteilt sind, durch das Primär-RAM-Datenregister (1030, 1032, 1034, 1036), das der jeweiligen Anzahl von Speicherbänken (1020, 1022, 1024, 1026) zugeordnet ist, fähig ist, ferner die Datenspeicherbereiche in der Anzahl von Speicherbänken (1020, 1022, 1024, 1026) eine Anzahl von physikalischen Datenblöcken enthält, wobei jeder physikalische Datenblock aus einer Anzahl von Seiten besteht.
  3. Flash-Speicher-System (1001) nach Anspruch 2, dadurch gekennzeichnet, daß ein einziger Programmierzyklus gemäß dem ersten Datenspeichermodus eine Datenspeicherung in einem einzigen RAM-Datenregister (1030, 1032, 1034, 1036) zur Programmierung in eine einzige Seite umfaßt, wobei der einzige Programmierzyklus gemäß dem zweiten Datenspeichermodus die Speicherung von Daten aus dem RAM-Datenpuffer (1012) in eine Anzahl von RAM-Datenregistern (1030, 1032, 1034, 1036) umfaßt, wobei eine Anzahl von RAM-Datenregistern (1030, 1032, 1034, 1036) die Daten in eine jeweilige Anzahl von Seiten simultan programmiert.
  4. Flash-Speicher-System (1001) nach Anspruch 3, dadurch gekennzeichnet, daß es ferner umfaßt: a. einen Host (1002), und b. Mittel zum Senden des Signalaustauschdatenpakets (1100) an den Host (1002) beim Start.
  5. Flash-Speicher-System (1001) nach Anspruch 4, dadurch gekennzeichnet, daß gemäß dem ersten Datenspeichermodus kein Antwortsignalaustausch von dem Host (1002) empfangen wird, wobei gemäß dem zweiten Datenspeichermodus ein Antwortsignalaustausch von dem Host (1002) empfangen wird.
  6. Flash-Speicher-System (1001) nach Anspruch 5, dadurch gekennzeichnet, daß der RAM-Datenpuffer (1012) ausreichend Speicher zum Speichern einer gesamten Datei von eintreffenden Nutzerdaten umfaßt.
  7. Flash-Speicher-System (1001) nach Anspruch 5, dadurch gekennzeichnet, daß jede Speicherbank (1020, 1022, 1024, 1026) ferner ein Hilfs-RAM-Datenregister umfaßt, wobei ein erster Hilfs-RAM-Datenpuffer in der ersten Speicherbank Daten in die Datenspeicherbereiche in der ersten Speicherbank programmieren kann und ein zweites Hilfs-RAM-Datenregister Daten in Datenspeicherbereiche in der zweiten Speicherbank programmieren kann.
  8. Flash-Speicher-System (1001) nach Anspruch 1, dadurch gekennzeichnet, daß es ferner umfaßt: d. Mittel zur simultanen Speicherung einer Anzahl von Datenspeicherbereichen in der Anzahl von Speicherbänken (1020, 1022, 1024, 1026) aus dem Primär-RAM-Datenregister (1030, 1032, 1034, 1036) als Antwort auf einen vorab festgelegten herstellerspezifischen Wert, so daß die Programmierzeit verringert wird.
  9. Verfahren zur Programmierung eines Flash-Speicher-Systems (1001) mit eintreffenden Daten von einem Host (1002), umfassend die Schritte: a. funktionsmäßige Kopplung des Flash-Speicher-Systems (1001) mit einem Host (1002), und b. Prüfen eines von dem Flash-Speicher-System (1001) gesendeten Signalaustauschdatenpakets (1100), worin das Flash-Speicher-System (1001) zum wahlweisen Arbeiten in einem ersten Datenspeichermodus und in einem zweiten Datenspeichermodus als Antwort auf einen herstellerspezifischen Wert konfiguriert ist, wobei der erste Datenspeichermodus ein Standardmodus ist.
  10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß das Verfahren ferner die Schritte des Konfigurierens des Hosts (1002) auf einen Standardbetriebsmodus und Speicherns von Daten in dem Flash-Speicher-System (1001) gemäß dem Standardbetriebsmodus, wenn dem Signalaustauschdatenpaket (1100) der herstellerspezifische Wert fehlt, umfaßt.
  11. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß das Verfahren ferner die Schritte des Konfigurierens des Hosts (1002) auf einen Hochleistungsbetriebsmodus und Speicherns von Daten in dem Flash-Speicher-System (1001) gemäß dem Hochleistungsbetriebsmodus, wenn das Signalaustauschdatenpaket (1100) den herstellerspezifischen Wert umfaßt, umfaßt.
  12. Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß der Schritt des Speicherns von Daten in einem Flash-Speicher-System (1001) gemäß dem Standardbetriebsmodus die Schritte umfaßt: a. Programmierung der Daten aus einer ersten logischen Blockadresse in eine erste Seite eines physikalischen Datenblocks, und b. Programmierung der Daten aus einer zweiten logischen Blockadresse in eine zweite Seite des physikalischen Datenblocks, worin die erste logische Blockadresse und die zweite logische Blockadresse aufeinanderfolgende Adressen in demselben virtuellen Logikblock sind und worin die erste und die zweite Seite durch aufeinanderfolgende physikalische Blockadressen definiert sind.
  13. Verfahren nach Anspruch 11, dadurch gekennzeichnet, daß der Schritt des Speicherns von Daten gemäß dem Flash-Speicher-System (1001) gemäß dem Hochleistungsbetriebsmodus die Schritte umfaßt: a. Laden eines ersten anfänglichen logischen Datenblocks, der durch eine erste VLBA definiert ist, in ein erstes Primär-RAM-Datenregister in einer ersten Speicherbank, b. Laden eines zweiten anfänglichen logischen Datenblocks, der durch eine zweite VLBA definiert ist, in ein zweites Primär-RAM-Datenregister in einer zweiten Datenbank, c. simultane Programmierung: i. des ersten anfänglichen logischen Datenblocks in dem ersten Primär-RAM-Datenregister in eine erste Anfangsseite eines ersten physikalischen Datenblocks in der ersten Datenbank, und ii. des zweiten anfänglichen logischen Datenblocks von Daten in dem zweiten Primär-RAM-Datenregister in eine zweite Anfangsseite eines zweiten physikalischen Datenblocks in der zweiten Speicherbank, d. Laden eines ersten nachfolgenden logischen Datenblocks, der durch die VLBA definiert ist, in das erste Primär-RAM-Datenregister in der ersten Speicherbank, e. Laden eines zweiten nachfolgenden logischen Datenblocks, der durch eine zweite VLBA definiert ist; in das zweite Primär-RAM-Datenregister in der zweiten Speicherbank, und f. simultane Programmierung: i. des ersten nachfolgenden logischen Datenblocks in dem ersten Primär-RAM-Datenregister in eine erste nachfolgende Seite des ersten physikalischen Datenblocks, und ii. des zweiten nachfolgenden logischen Datenblocks von Daten in dem zweiten Primär-RAM-Datenregister in eine zweite nachfolgende Seite des zweiten physikalischen Datenblocks.
  14. Verfahren nach Anspruch 17, dadurch gekennzeichnet, daß a. der erste anfängliche logische Block und der erste nachfolgende logische Block durch aufeinanderfolgende logische Blockadressen in dem ersten virtuellen logischen Block definiert werden, b. der zweite anfängliche logische Block und der zweite nachfolgende logische Block durch aufeinanderfolgende logische Blockadressen in dem zweiten virtuellen logischen Block definiert werden, c. der Schritt des Ladens des ersten nachfolgenden logischen Blocks dem Schritt des Ladens des ersten anfänglichen logischen Datenblocks in das erste Primär-RAM-Datenregister sequentiell folgt, d. der Schritt des Ladens des zweiten nachfolgenden logischen Blocks dem Schritt des Ladens des zweiten anfänglichen logischen Datenblocks in das zweite Primär-RAM-Datenregister sequentiell folgt, e. die erste anfängliche Seite und die erste nachfolgende Seite gemäß aufeinanderfolgenden PBAs in dem ersten physikalischen Datenblock definiert werden, und f. die zweite anfängliche Seite der zweiten nachfolgenden Seite gemäß aufeinanderfolgenden PBAs in dem zweiten physikalischen Datenblock definiert werden.
  15. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß dem Schritt des Prüfens eines von dem Flash-Speicher-System (1001) gesendeten Signalaustauschdatenpakets (1100) die Schritte vorangehen: a. Erzeugen des Signalaustauschdatenpakets (1100), b. Laden des händlerspezifischen Werts in dem Flash-Speicher-System (1001) in das Signalaustauschdatenpaket (1100), und c. Senden des Signalaustauschdatenpakets (1100) von dem Flash-Speicher-System (1001) zum Host (1002), wobei ferner das Flash-Speicher-System (1001) eine Anzahl von separaten und individuell adressierbaren Speicherbänken (1020, 1022, 1024, 1026) umfaßt, wobei jede Speicherbank (1020, 1022, 1024, 1026) ein Primär-RAM-Datenregister (1030, 1032, 1034, 1036) und eine Anzahl von individuell adressierbaren und individuell programmierbaren physikalischen Datenblöcken umfaßt, wobei jeder Datenblock eine Anzahl von individuell adressierbaren und individuell programmierbaren Seiten umfaßt.
  16. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß es ferner die Schritte umfaßt: a. Vorgeben einer ersten Datenspeicherkonfiguration, und b. Programmierung von eintreffenden Daten in das Flash-Speicher-System (1001) nach einem ersten Datenspeicherverfahren, wobei das erste Datenspeicherverfahren den Schritt der Programmierung einer Seite von Benutzerdaten pro Programmierzyklus umfaßt.
  17. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß es ferner die Schritte umfaßt: a. Senden eines Antwortsignalaustausches vom Host (1002) zum Flash-Speicher-System (1001); b. Konfigurieren des Flash-Speicher-Systems (1001) gemäß einer zweiten Datenspeicherkonfiguration, und c. Programmierung von eintreffenden Daten in das Flash-Speicher-System (1001) nach dem zweiten Datenspeicherverfahren, wobei das zweite Datenspeicherverfahren den Schritt der simultanen Programmierung einer Anzahl von Seiten von Daten in mehrere Speicherbänke (1020, 1022, 1024, 1026) in jedem Programmierzyklus umfaßt.
  18. Verfahren nach Anspruch 17, dadurch gekennzeichnet, daß der Schritt der Programmierung von eintreffenden Daten in das Flash-Speicher-System (1001) gemäß dem zweiten Datenspeicherverfahren ferner die Schritte umfaßt: a. Laden eines ersten anfänglichen logischen Datenblocks, der durch eine erste VLBA definiert ist, in ein erstes Primär-RAM-Datenregister in einer ersten Speicherbank, b. Laden eines zweiten anfänglichen logischen Datenblocks, der durch eine zweite VLBA definiert ist, in ein zweites Primär-RAM-Datenregister in einer zweiten Speicherbank, c. simultane Pogrammierung: i. des ersten anfänglichen logischen Datenblocks in dem ersten Primär-RAM-Datenregister in eine erste anfängliche Seite eines ersten physikalischen Datenblocks in der ersten Speicherbank, und ii. des zweiten anfänglichen logischen Datenblocks in dem zweiten Primär-RAM-Datenregister in eine zweite Anfangsseite eines zweiten physikalischen Datenblocks in der zweiten Speicherbank, d. Laden eines ersten nachfolgenden logischen Datenblocks, der durch die erste VLBA definiert ist, in das erste Primär-RAM-Datenregister in der ersten Speicherbank, e. Laden eines zweiten nachfolgenden logischen Datenblocks, der durch eine zweite VLBA definiert ist, in das zweite Primär-RAM-Datenregister in der zweiten Speicherbank, und f. simultane Programmierung: i. des ersten nachfolgenden logischen Datenblocks in dem ersten Primär-RAM-Datenregister in eine erste nachfolgende Seite des ersten physikalischen Datenblocks, und ii. des zweiten nachfolgenden logischen Datenblocks in dem zweiten Primär-RAM-Datenregister in eine zweite nachfolgende Seite des zweiten physikalischen Datenblocks.
  19. Verfahren nach Anspruch 18, dadurch gekennzeichnet, daß a. der erste anfängliche logische Block und der erste nachfolgende logische Block durch aufeinanderfolgende logische Blockadressen in dem ersten virtuellen logischen Block definiert werden, b. der zweite anfängliche logische Block und der zweite nachfolgende logische Block durch aufeinanderfolgende logische Blockadressen in dem zweiten virtuellen logischen Block definiert werden, c. der Schritt des Ladens des ersten nachfolgenden logischen Blocks dem Schritt des Ladens des ersten anfänglichen logischen Datenblocks in dem ersten Primär-RAM-Datenregister sequentiell folgt, d. der Schritt des Ladens des zweiten nachfolgenden logischen Blocks dem Schritt des Ladens des zweiten anfänglichen logischen Datenblocks in das zweite Primär-RAM-Datenregister sequentiell folgt, e. die erste anfängliche Seite und die erste nachfolgende Seite durch aufeinanderfolgende physikalische Blockadressen in dem ersten physikalischen Datenblock definiert werden, und f. die zweite anfängliche Seite und die zweite nachfolgende Seite durch aufeinanderfolgende physikalische Blockadressen in dem zweiten physikalischen Datenblock definiert werden.
  20. Verfahren nach Anspruch 19, dadurch gekennzeichnet, daß jede der Anzahl von separaten und separat adressierbaren Speicherbänken (1020, 1022, 1024, 1026) jeweils ein zweites Hilfs-RAM-Datenregister umfaßt, wobei das Verfahren ferner die Schritte umfaßt: a. Laden des ersten nachfolgenden logischen Datenblocks in dem ersten virtuellen logischen Block in ein erstes Hilfs-RAM-Datenregister in der ersten Speicherbank, b. Laden des zweiten nachfolgenden logischen Datenblocks in dem zweiten virtuellen logischen Block in ein zweites Hilfs-RAM-Datenregister in der zweiten Speicherbank, c. simultane Programmierung: i. des ersten nachfolgenden logischen Datenblocks in dem ersten Hilfs-RAM-Datenregister in eine erste nachfolgende Seite in dem ersten physikalischen Datenblock, und ii. des zweiten nachfolgenden logischen Datenblocks in dem zweiten Hilfs-RAM-Datenregister in eine zweite nachfolgende Seite in dem zweiten physikalischen Datenblock.
  21. Verfahren nach Anspruch 20, dadurch gekennzeichnet, daß a. der erste anfängliche logische Block und der erste nachfolgende logische Block in den ersten virtuellen logischen Blockadressen aufeinanderfolgend adressiert werden; b. der zweite anfängliche logische Block und der zweite nachfolgende logische Block in den zweiten virtuellen logischen Blockadressen aufeinanderfolgend adressiert werden; c. der Schritt des Ladens eines ersten anfänglichen Blocks und der Schritt des Ladens eines ersten nachfolgenden logischen Blocks aufeinanderfolgende Schritte des Ladens von Daten in eine Anzahl von RAM-Datenregistern der ersten Speicherbank umfaßt; d. der Schritt des Ladens des zweiten anfänglichen logischen Blocks und der Schritt des Ladens des zweiten nachfolgenden logischen Blocks aufeinanderfolgende Schritte des Ladens von Daten in eine Anzahl von RAM-Datenregistern der zweiten Speicherbank umfaßt; e. die erste anfängliche Seite und die erste nachfolgende Seite in dem ersten physikalischen Datenblock aufeinanderfolgend adressiert werden; und f. die zweite anfängliche Seite und die zweite nachfolgende Seite in dem zweiten physikalischen Datenblock aufeinanderfolgend adressiert werden.
  22. Verfahren nach Anspruch 16, dadurch gekennzeichnet, daß der Schritt der Programmierung von eintreffenden Daten in das Flash-Speicher-System (1001) nach dem ersten Datenspeicherverfahren die aufeinanderfolgenden Schritte umfaßt: a. Programmierung von Daten, die durch eine erste logische Blockadresse definiert sind, in eine erste Seite eines physikalischen Datenblocks; und b. Programmierung von Daten, die durch eine zweite logische Blockadresse definiert sind, in eine zweite Seite des physikalischen Datenblocks, worin die erste logische Blockadresse und die zweite logische Blockadresse durch aufeinanderfolgende Adressen in derselben virtuellen logischen Blockadresse definiert werden, und worin die erste und zweite Seite durch aufeinanderfolgende physikalische Blockadressen in demselben physikalischen Datenblock definiert werden.
DE60122155T 2000-07-07 2001-05-17 Flashspeicherarchitektur zur implementierung von gleichzeitigen programmierbaren flashspeicherbanken mit host-kompatibilität Expired - Lifetime DE60122155T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US611676 2000-07-07
US09/611,676 US6721843B1 (en) 2000-07-07 2000-07-07 Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible
PCT/US2001/040768 WO2002005285A2 (en) 2000-07-07 2001-05-17 Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible

Publications (2)

Publication Number Publication Date
DE60122155D1 DE60122155D1 (de) 2006-09-21
DE60122155T2 true DE60122155T2 (de) 2007-06-28

Family

ID=24449984

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60122155T Expired - Lifetime DE60122155T2 (de) 2000-07-07 2001-05-17 Flashspeicherarchitektur zur implementierung von gleichzeitigen programmierbaren flashspeicherbanken mit host-kompatibilität
DE60130593T Expired - Lifetime DE60130593T2 (de) 2000-07-07 2001-05-17 Flash-Speicherarchitektur mit gleichzeitig programmierbaren mehrfachen hostfähigen Flash-Speicherbanken

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE60130593T Expired - Lifetime DE60130593T2 (de) 2000-07-07 2001-05-17 Flash-Speicherarchitektur mit gleichzeitig programmierbaren mehrfachen hostfähigen Flash-Speicherbanken

Country Status (8)

Country Link
US (1) US6721843B1 (de)
EP (2) EP1299884B1 (de)
JP (1) JP4945792B2 (de)
AT (2) ATE336065T1 (de)
AU (1) AU2001263509A1 (de)
DE (2) DE60122155T2 (de)
ES (1) ES2297787T3 (de)
WO (1) WO2002005285A2 (de)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US8171203B2 (en) * 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6728851B1 (en) * 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US7877542B2 (en) * 2000-01-06 2011-01-25 Super Talent Electronics, Inc. High integration of intelligent non-volatile memory device
US20070168614A1 (en) * 2000-01-06 2007-07-19 Super Talent Electronics Inc. Secure-Digital (SD) Flash Card with Auto-Adaptive Protocol and Capacity
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US8037234B2 (en) * 2003-12-02 2011-10-11 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US8266367B2 (en) * 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US7020739B2 (en) * 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
US6938144B2 (en) * 2001-03-22 2005-08-30 Matsushita Electric Industrial Co., Ltd. Address conversion unit for memory device
JP4256600B2 (ja) * 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123421D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Power management system
GB0123417D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved data processing
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
JP3967121B2 (ja) * 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
JP2003223792A (ja) * 2002-01-25 2003-08-08 Hitachi Ltd 不揮発性メモリ及びメモリカード
JP3866635B2 (ja) 2002-08-26 2007-01-10 株式会社東芝 メモリカード及び記憶領域切り替え方法
JP3806077B2 (ja) 2002-08-26 2006-08-09 株式会社東芝 メモリカード認識システム、容量切り替え型メモリカード・ホスト機器、容量切り替え型メモリカード、記憶容量設定方法及び記憶容量設定プログラム
CA2461446A1 (en) * 2002-08-29 2004-03-11 Matsushita Electric Industrial Co., Ltd. Semiconductor memory apparatus and method for writing data into the flash memory device
US6944063B2 (en) * 2003-01-28 2005-09-13 Sandisk Corporation Non-volatile semiconductor memory with large erase blocks storing cycle counts
FI117489B (fi) * 2003-02-07 2006-10-31 Nokia Corp Menetelmä muistikortin osoittamiseksi, muistikorttia käyttävä järjestelmä, ja muistikortti
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US20090204872A1 (en) * 2003-12-02 2009-08-13 Super Talent Electronics Inc. Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US8250295B2 (en) 2004-01-05 2012-08-21 Smart Modular Technologies, Inc. Multi-rank memory module that emulates a memory module having a different number of ranks
US7916574B1 (en) 2004-03-05 2011-03-29 Netlist, Inc. Circuit providing load isolation and memory domain translation for memory module
US7289386B2 (en) 2004-03-05 2007-10-30 Netlist, Inc. Memory module decoder
US20110145489A1 (en) * 2004-04-05 2011-06-16 Super Talent Electronics, Inc. Hybrid storage device
US20110179219A1 (en) * 2004-04-05 2011-07-21 Super Talent Electronics, Inc. Hybrid storage device
US7464306B1 (en) * 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
US20060069896A1 (en) * 2004-09-27 2006-03-30 Sigmatel, Inc. System and method for storing data
US7882299B2 (en) 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
KR100590388B1 (ko) * 2005-03-10 2006-06-19 주식회사 하이닉스반도체 멀티-플레인 타입 플래쉬 메모리 장치와, 그 프로그램 동작및 리드 동작 제어 방법
ITMI20050799A1 (it) 2005-05-03 2006-11-04 Atmel Corp Metodo e sistema di configurazione dei parametri per una memoria flash
EP1952404B1 (de) * 2005-11-22 2010-05-12 SanDisk Corporation Verfahren und speichersystem für legacy-hosts
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US8151060B2 (en) 2006-11-28 2012-04-03 Hitachi, Ltd. Semiconductor memory system having a snapshot function
JP5137413B2 (ja) * 2006-11-28 2013-02-06 株式会社日立製作所 半導体記憶装置
US20100115175A9 (en) * 2006-12-18 2010-05-06 Zhiqing Zhuang Method of managing a large array of non-volatile memories
US20080235438A1 (en) * 2007-03-20 2008-09-25 Sony Corporation And Sony Electronics Inc. System and method for effectively implementing a multiple-channel memory architecture
US8856423B1 (en) * 2007-04-10 2014-10-07 Marvell International Ltd. Dual-purpose nonvolatile memory for code and data storage
US8429352B2 (en) 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
CN100530138C (zh) * 2007-06-28 2009-08-19 忆正存储技术(深圳)有限公司 基于多通道闪存设备逻辑条带的自适应控制方法
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8516185B2 (en) 2009-07-16 2013-08-20 Netlist, Inc. System and method utilizing distributed byte-wise buffers on a memory module
US8417870B2 (en) * 2009-07-16 2013-04-09 Netlist, Inc. System and method of increasing addressable memory space on a memory board
US8154901B1 (en) 2008-04-14 2012-04-10 Netlist, Inc. Circuit providing load isolation and noise reduction
US8452934B2 (en) * 2008-12-16 2013-05-28 Sandisk Technologies Inc. Controlled data access to non-volatile memory
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
KR101581679B1 (ko) * 2009-03-18 2015-12-31 삼성전자주식회사 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법
US8285917B2 (en) * 2009-03-26 2012-10-09 Scaleo Chip Apparatus for enhancing flash memory access
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US9128632B2 (en) 2009-07-16 2015-09-08 Netlist, Inc. Memory module with distributed data buffers and method of operation
US8473669B2 (en) 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
JP5060574B2 (ja) * 2010-03-16 2012-10-31 株式会社東芝 メモリシステム
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8713242B2 (en) * 2010-12-30 2014-04-29 Solid State System Co., Ltd. Control method and allocation structure for flash memory device
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
CN110428855B (zh) 2013-07-27 2023-09-22 奈特力斯股份有限公司 具有本地分别同步的内存模块
JP5996497B2 (ja) * 2013-08-22 2016-09-21 株式会社東芝 ストレージ装置
US9440086B2 (en) 2013-09-11 2016-09-13 Medtronic, Inc. Optimized flash memory device for miniaturized devices
US20170031838A1 (en) * 2015-07-28 2017-02-02 Qualcomm Incorporated Method and apparatus for using context information to protect virtual machine security
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US10824376B2 (en) 2017-12-08 2020-11-03 Sandisk Technologies Llc Microcontroller architecture for non-volatile memory
US10622075B2 (en) 2017-12-12 2020-04-14 Sandisk Technologies Llc Hybrid microcontroller architecture for non-volatile memory
US10777240B1 (en) 2019-03-07 2020-09-15 Sandisk Technologies Llc Efficient control of memory core circuits
US10971199B2 (en) 2019-06-20 2021-04-06 Sandisk Technologies Llc Microcontroller for non-volatile memory with combinational logic
US11507498B2 (en) 2020-03-05 2022-11-22 Sandisk Technologies Llc Pre-computation of memory core control signals
WO2021224660A1 (fr) 2020-05-07 2021-11-11 Achidi Valentin Agon Inhibition de l'infection a coronavirus covid-19 par apivirine extrait - dichrostachys glomerata

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5877034A (ja) 1981-10-30 1983-05-10 Hitachi Ltd 記録方法
US4710871A (en) 1982-11-01 1987-12-01 Ncr Corporation Data transmitting and receiving apparatus
US4736341A (en) 1985-06-28 1988-04-05 Xebec Development Partners, Ltd. Intelligent hard disk drive subsystem
US4907162A (en) * 1987-07-16 1990-03-06 Pitney Bowes System for indicating the balance of stored value
US5200864A (en) 1989-06-28 1993-04-06 International Business Machines Corporation Combining small records into a single record block for recording on a record media
US5200959A (en) 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
US5255136A (en) 1990-08-17 1993-10-19 Quantum Corporation High capacity submicro-winchester fixed disk drive
US5303198A (en) 1990-09-28 1994-04-12 Fuji Photo Film Co., Ltd. Method of recording data in memory card having EEPROM and memory card system using the same
US5283882A (en) 1991-02-22 1994-02-01 Unisys Corporation Data caching and address translation system with rapid turnover cycle
US5270979A (en) 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
JP2625609B2 (ja) 1991-07-10 1997-07-02 インターナショナル・ビジネス・マシーンズ・コーポレイション ディスク記憶装置
US5430859A (en) * 1991-07-26 1995-07-04 Sundisk Corporation Solid state memory system including plural memory chips and a serialized bus
JP3328321B2 (ja) * 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
JP3641280B2 (ja) 1992-10-30 2005-04-20 インテル・コーポレーション フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法
US5341330A (en) 1992-10-30 1994-08-23 Intel Corporation Method for writing to a flash memory array during erase suspend intervals
US5357475A (en) 1992-10-30 1994-10-18 Intel Corporation Method for detaching sectors in a flash EEPROM memory array
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5523903A (en) 1993-12-23 1996-06-04 International Business Machines Corporation Sector architecture for fixed block disk drive
US5455721A (en) 1994-03-03 1995-10-03 Cirrus Logic, Inc. Method and apparatus for automatic sector pulse generation and split field calculation in disk drives
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
JP3507132B2 (ja) 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5604880A (en) * 1994-08-11 1997-02-18 Intel Corporation Computer system with a memory identification scheme
JPH08137634A (ja) 1994-11-09 1996-05-31 Mitsubishi Electric Corp フラッシュディスクカード
US5678056A (en) * 1995-02-27 1997-10-14 Nec Corporation Method and apparatus for control of serial communication by changing address conditions during and after communication start up
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6081878A (en) 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5687114A (en) * 1995-10-06 1997-11-11 Agate Semiconductor, Inc. Integrated circuit for storage and retrieval of multiple digital bits per nonvolatile memory cell
US6026293A (en) 1996-09-05 2000-02-15 Ericsson Inc. System for preventing electronic memory tampering
JPH10124381A (ja) 1996-10-21 1998-05-15 Mitsubishi Electric Corp 半導体記憶装置
JP2982728B2 (ja) * 1996-12-06 1999-11-29 日本電気株式会社 アプリケーション共有システム
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5920731A (en) 1997-02-21 1999-07-06 Vlsi Technology, Inc. Single-housing electrical device self-configurable to connect to PCMCIA compliant or non-PCMCIA compliant host interfaces
US5822245A (en) * 1997-03-26 1998-10-13 Atmel Corporation Dual buffer flash memory architecture with multiple operating modes
JP3820682B2 (ja) * 1997-05-30 2006-09-13 カシオ計算機株式会社 メモリ制御装置、データ書き込み読み出し方法、及び撮像装置
JP3718578B2 (ja) 1997-06-25 2005-11-24 ソニー株式会社 メモリ管理方法及びメモリ管理装置
US6073205A (en) * 1997-07-10 2000-06-06 National Instruments Corporation System and method of write posting in a universal serial bus system
US6138180A (en) 1997-09-12 2000-10-24 Symbol Technologies, Inc. Adaptive computer peripheral for selecting a communications protocol by cycling through a plurality of given protocols
US6076137A (en) 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6360220B1 (en) 1998-08-04 2002-03-19 Microsoft Corporation Lock-free methods and systems for accessing and storing information in an indexed computer data structure having modifiable entries
JP2000200213A (ja) * 1999-01-06 2000-07-18 Mitsubishi Electric Corp マイクロコンピュ―タ、デ―タ書換システム及びデ―タ書換方法
US6125058A (en) 1999-10-19 2000-09-26 Advanced Micro Devices, Inc. System for optimizing the equalization pulse of a read sense amplifier for a simultaneous operation flash memory device

Also Published As

Publication number Publication date
EP1299884B1 (de) 2006-08-09
DE60130593D1 (de) 2007-10-31
JP2004511030A (ja) 2004-04-08
EP1693759A2 (de) 2006-08-23
EP1299884A2 (de) 2003-04-09
AU2001263509A1 (en) 2002-01-21
ES2297787T3 (es) 2008-05-01
ATE373843T1 (de) 2007-10-15
ATE336065T1 (de) 2006-09-15
WO2002005285A2 (en) 2002-01-17
US6721843B1 (en) 2004-04-13
EP1693759A3 (de) 2006-09-13
DE60130593T2 (de) 2008-01-31
WO2002005285A3 (en) 2002-06-20
DE60122155D1 (de) 2006-09-21
EP1693759B1 (de) 2007-09-19
JP4945792B2 (ja) 2012-06-06

Similar Documents

Publication Publication Date Title
DE60122155T2 (de) Flashspeicherarchitektur zur implementierung von gleichzeitigen programmierbaren flashspeicherbanken mit host-kompatibilität
DE2617408C3 (de) Speichermodul fur ein Datenverarbeitungsgerät mit Speicherhierarchie
DE69630624T2 (de) EEPROM-Matrix mit einem, dem "Flash"-Speicher ähnlichen Kern
DE60211653T2 (de) Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher
DE2350884C2 (de) Adreßumsetzungseinheit
DE3834759C2 (de)
DE112017005890T5 (de) Abrufen von Datenpufferzeigern für direkten Speicherzugriff
EP0013737A1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE10238566A1 (de) Fenster-basierendes Flashspeicher-Speichersystem und Management und Zugriffsverfahren darauf
DE102005013683A1 (de) Speicherkarte und zugehöriges Betriebsverfahren
DE1815234A1 (de) Adressiereinrichtung fuer ein Speichersystem mit einem Grossraumspeicher und einem schnellen Arbeitsspeicher
DE2432608C3 (de) Speicheranordnung fur eine Datenverarbeitungseinrichtung
DE102009046444A1 (de) An die Software angepasste Abnutzungsausgleichung
DE112020005350T5 (de) Aktualisieren von korrigierenden lesespannung-offsetwerten in nichtflüchtigen direktzugriffsspeichern
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE3046912C2 (de) Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage
DE69815482T2 (de) Computer Anordnung mit Prozessor und Speicher-Hierarchie und sein Betriebsverfahren
DE102018109929A1 (de) NAND-Flash-Speichervorrichtung mit NAND-Puffer
DE102020115970B3 (de) Befehlsoptimierung durch intelligente schwellwertdetektion
DE112018000842T5 (de) Mehrkern-on-die-speichermikrocontroller
DE112022000468T5 (de) Unterschiedliche schreibpriorisierung in zns-vorrichtungen
DE102005041276A1 (de) Nicht-flüchtige Speicherzellen-Einrichtung, Programmierelement und Verfahren zum Programmieren von Daten in eine Mehrzahl von nicht-flüchtigen Speicherzellen
DE2458525B2 (de) Speicheranordnung mit Haupt- und Pufferspeicher
DE602004012923T2 (de) Wortweise programmierbarer Flash-Speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition