DE60130593T2 - Flash-Speicherarchitektur mit gleichzeitig programmierbaren mehrfachen hostfähigen Flash-Speicherbanken - Google Patents

Flash-Speicherarchitektur mit gleichzeitig programmierbaren mehrfachen hostfähigen Flash-Speicherbanken Download PDF

Info

Publication number
DE60130593T2
DE60130593T2 DE60130593T DE60130593T DE60130593T2 DE 60130593 T2 DE60130593 T2 DE 60130593T2 DE 60130593 T DE60130593 T DE 60130593T DE 60130593 T DE60130593 T DE 60130593T DE 60130593 T2 DE60130593 T2 DE 60130593T2
Authority
DE
Germany
Prior art keywords
data
flash memory
logical block
memory system
physical
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
DE60130593T
Other languages
English (en)
Other versions
DE60130593D1 (de
Inventor
Petro 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
Publication of DE60130593D1 publication Critical patent/DE60130593D1/de
Application granted granted Critical
Publication of DE60130593T2 publication Critical patent/DE60130593T2/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

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

Claims (29)

  1. Flash-Speichersystem (1001) mit einer Vielzahl von separaten und unabhängig adressierbaren Speicherbänken (1020, 1022, 1024, 1026), wobei jede Speicherbank (1020, 1022, 1024, 1026) umfaßt: a. eine Vielzahl von unabhängig adressierbaren und unabhängig programmierbaren nicht flüchtigen Datenspeicherbereichen; b. ein primäres RAM-Datenregister (1030, 1032, 1034, 1036); und c. einen herstellerspezifischen Wert, enthaltend ein Mittel zum Laden des herstellerspezifischen Werts in ein Handshake-Datenpaket (1100) beim Start, worin das Flash-Speichersystem (1001) so konfiguriert ist, daß es wahlweise in einem ersten Datenspeichermodus und einem zweiten Datenspeichermodus als Antwort auf den herstellerspezifischen Wert arbeitet, wobei der erste Datenspeichermodus ein Standardmodus ist und ein einzelner Programmierzyklus gemäß dem ersten Datenspeichermodus eine Speicherung von Daten in einem einzigen RAM-Datenregister zur Programmierung in einer einzigen Seite umfaßt.
  2. Flash-Speichersystem (1001) nach Anspruch 1, ferner umfassend eine Steuerung (1016) mit einer Host-Schnittstellenschaltung (1010), einem RAM-Datenpuffer (1012) und einer Speicherschnittstellenschaltung (1014), wobei der RAM-Datenpuffer (1012) mit der Host- Schnittenstellenschaltung (1010) und der Speicherschnittstellenschaltung (1014) operativ gekoppelt ist, die Speicherschnittstellenschaltung (1014) mit dem primären RAM-Datenregister (1030, 1032, 1034, 1036) in jeder der Vielzahl von Speicherbänken (1020, 1022, 1024, 1026) mittels eines Datenbusses (1040) operativ gekoppelt ist, wobei die Steuerung (1016) eine Programmierung von Daten in die Vielzahl von Datenspeicherbereichen, die auf die Vielzahl von Speicherbänken (1020, 1022, 1024, 1026) verteilt sind, durch das primäre RAM-Datenregister (1030, 1032, 1034, 1036), das mit der jeweiligen Vielzahl von Speicherbänken (1020, 1022, 1024, 1026) verbunden ist, steuern kann.
  3. Flash-Speichersystem nach Anspruch 2, dadurch gekennzeichnet, daß die Datenspeicherbereiche in der Vielzahl von Speicherbänken (1020, 1022, 1024, 1026) eine Vielzahl von physischen Datenblöcken enthalten, wobei jeder physische Datenblock aus einer Vielzahl von Seiten besteht.
  4. Flash-Speichersystem (1001) nach Anspruch 3, dadurch gekennzeichnet, daß der einzige Programmierzyklus gemäß dem zweiten Datenspeichermodus das Speichern von Daten aus dem RAM-Datenpuffer (1012) in einer Vielzahl von RAM-Datenregistern (1030, 1032, 1034, 1036) umfaßt, wobei die Vielzahl von RAM-Datenregistern (1030, 1032, 1034, 1036) simultan Daten in eine jeweilige Vielzahl von Seiten programmiert.
  5. Flash-Speichersystem (1001) nach Anspruch 4, ferner umfassend: a. einen Host (1002); und b. ein Mittel zum Senden des Handshake-Datenpakets (1100) zum Host (1002) beim Start.
  6. Flash-Speichersystem (1001) nach Anspruch 5, dadurch gekennzeichnet, daß die Steuerung (1016) so konfiguriert ist, daß sie eintreffende Benutzerdaten gemäß dem ersten Datenspeichermodus speichert, wenn vom Host (1002) kein Antwort-Handshake empfangen wird.
  7. Flash-Speichersystem (1001) nach Anspruch 6, dadurch gekennzeichnet, daß die Steuerung (1016) so konfiguriert ist, daß sie eintreffende Benutzerdaten gemäß dem zweiten Datenspeichermodus speichert, wenn vom Host (1002) ein Antwort-Handshake empfangen wird.
  8. Flash-Speichersystem (1001) nach Anspruch 7, dadurch gekennzeichnet, daß ein RAM-Datenregister ausreichend Speicher zum Programmieren einer physischen Seite umfaßt.
  9. Flash-Speichersystem (1001) nach Anspruch 7, ferner umfassend ein Mittel zum Auswählen einer Vielzahl von logischen Blöcken von eintreffenden Daten, die in separaten Seiten in dem Flash-Speichersystem (1001) während eines Arbeitszyklus programmiert werden sollen.
  10. Flash-Speichersystem (1001) nach Anspruch 9, dadurch gekennzeichnet, daß das Mittel zum Auswählen der Vielzahl von logischen Blöcken in dem Host (1002) resident ist.
  11. Flash-Speichersystem (1001) nach Anspruch 10, dadurch gekennzeichnet, daß der Host (1002) eine Digitalkamera ist.
  12. Flash-Speichersystem (1001) nach Anspruch 9, dadurch gekennzeichnet, daß das Mittel zum Auswählen der Vielzahl von logischen Blöcken in dem Flash-Speichersystem (1001) resident ist.
  13. Flash-Speichersystem (1001) nach Anspruch 12, dadurch gekennzeichnet, daß der RAM-Datenpuffer (1012) ausreichend Speicher zum Speichern einer gesamten Datei von eintreffenden Benutzerdaten umfaßt.
  14. Flash-Speichersystem (1001) nach Anspruch 9, 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 Datenspeicherbereichen in der ersten Speicherbank programmieren kann und ein zweites Hilfs-RAM-Datenregister Daten in Datenspeicherbereichen in der zweiten Datenbank programmieren kann.
  15. Verfahren zur Programmierung von eintreffenden Daten in ein Multibank-Flash-Speichersystem (1001) mit einem herstellerspezifischen Wert, einer Steuerung (1016), die mit dem Speichersystem (1001) operativ gekoppelt ist, wobei die Steuerung (1016) einen RAM-Datenpuffer (1012) umfaßt, der mit einer Speicherschnittstellenschaltung (1014) operativ gekoppelt ist, wobei das Flash-Speichersystem (1001) eine Vielzahl von separaten und einzeln adressierbaren Speicherbänken (1020, 1022, 1024, 1026) umfaßt, wobei jede Speicherbank (1020, 1022, 1024, 1026) ein primäres RAM-Datenregister (1030, 1032, 1034, 1036) und eine Vielzahl von einzeln adressierbaren und einzeln programmierbaren physischen Datenblöcken umfaßt, wobei jeder physische Datenblock eine Vielzahl von einzeln adressierbaren und einzeln programmierbaren Seiten umfaßt, wobei das Verfahren die Schritte umfaßt: a. Erzeugen eines Handshake-Datenpakets (1100); b. Laden des herstellerspezifischen Werts in dem Flash-Speichersystem (1001) in das Handshake-Datenpaket (1100); c. Senden des Handshake-Datenpakets (1100) vom Flash-Speichersystem (1001) an einen Host (1002); d. Vorgeben einer ersten Datenspeicherkonfiguration; und e. Programmieren von eintreffenden Daten in das Flash-Speichersystem (1001) gemäß einem ersten Datenspeicherverfahren, wobei das erste Datenspeicherverfahren den Schritt des Programmierens einer Seite von Benutzerdaten pro Programmierzyklus umfaßt, wobei das Flash-Speichersystem (1001) so konfiguriert ist, daß es wahlweise in einem ersten Datenspeichermodus und in einem zweiten Datenspeichermodus als Antwort auf den herstellerspezifischen Wert arbeitet, wobei der erste Datenspeichermodus ein Standardmodus ist.
  16. Verfahren nach Anspruch 15, ferner umfassend die Schritte: a. Senden eines Antwort-Handshake vom Host (1002) zum Flash-Speichersystem (1001); b. Konfigurieren des Flash-Speichersystems (1001) gemäß einer zweiten Datenspeicherkonfiguration; und c. Programmieren von eintreffenden Daten in das Flash-Speichersystem (1001) gemäß dem zweiten Datenspeicherverfahren, wobei das zweite Datenspeicherverfahren den Schritt des simultanen Programmierens einer Vielzahl von Seiten von Daten in mehrere Speicherbänke in jedem Programmierzyklus umfaßt.
  17. Verfahren nach Anspruch 16, dadurch gekennzeichnet, daß der Schritt des Programmierens von eintreffenden Daten in das Flash-Speichersystem (1001) gemäß dem zweiten Datenspeicherverfahren ferner die Schritte umfaßt: a. Laden eines ersten anfänglichen logischen Blocks von Daten, der durch eine erste VLBA definiert ist, in ein erstes primäres RAM-Datenregister in einer ersten Speicherbank; b. Laden eines zweiten anfänglichen logischen Blocks von Daten, der durch eine zweite VLBA definiert ist, in ein zweites primäres RAM-Datenregister in einer zweiten Speicherbank; und c. simultanes Programmieren: i. des ersten anfänglichen logischen Blocks von Daten in dem ersten primären RAM-Datenregister in einer ersten anfänglichen Seite eines ersten physischen Datenblocks in der ersten Speicherbank und ii. des zweiten anfänglichen logischen Blocks von Daten in dem zweiten primären RAM-Datenregister in einer zweiten anfänglichen Seite eines zweiten physischen Datenblocks in der zweiten Speicherbank.
  18. Verfahren nach Anspruch 17, ferner umfassend die Schritte: a. Laden eines ersten nachfolgenden logischen Blocks von Daten, der durch die erste VLBA definiert ist, in das erste primäre RAM-Datenregister in der ersten Speicherbank; b. Laden eines zweiten nachfolgenden logischen Blocks von Daten, der durch eine zweite VLBA definiert ist, in das zweite primäre RAM-Datenregister in der zweiten Speicherbank; und c. simultanes Programmieren: i. des ersten nachfolgenden logischen Blocks von Daten in dem ersten primären RAM-Datenregister in einer ersten nachfolgenden Seite des ersten physischen Datenblocks; und ii. des zweiten nachfolgenden logischen Blocks von Daten in dem zweiten primären RAM-Datenregister in einer zweiten nachfolgenden Seite des zweiten physischen 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 Blocks von Daten in das erste primäre RAM-Datenregister sequentiell folgt; d. der Schritt des Ladens des zweiten nachfolgenden logischen Blocks dem Schritt des Ladens des zweiten anfänglichen logischen Blocks von Daten in das zweite primäre RAM-Datenregister sequentiell folgt; e. die erste anfängliche Seite und die erste nachfolgende Seite durch aufeinanderfolgende physische Blockadressen in dem ersten physischen Datenblock definiert werden; und f. die zweite anfängliche Seite und die zweite nachfolgende Seite durch aufeinanderfolgende physische Blockadressen in dem zweiten physischen Datenblock definiert werden.
  20. Verfahren nach Anspruch 19, dadurch gekennzeichnet, daß jeder der Vielzahl von physischen Datenblöcken in der Vielzahl von Speicherbänken (1020, 1022, 1024, 1026) des Flash-Speichersystems (1001) eine identische Anzahl von Seiten umfaßt, die gemäß einem identischen Seitenadressierschema adressiert werden.
  21. Verfahren nach Anspruch 20, dadurch gekennzeichnet, daß die erste anfängliche Seite in dem ersten physischen Datenblock und die zweite anfängliche Seite in dem zweiten physischen Datenblock gemäß einer gleichen Seitenadresse definiert werden.
  22. Verfahren nach Anspruch 21, dadurch gekennzeichnet, daß jede Speicherbank (1020, 1022, 1024, 1026) eine identische Anzahl von physischen Datenblöcken umfaßt, die gemäß einem identischen Blockadressierschema adressiert werden.
  23. Verfahren nach Anspruch 22, dadurch gekennzeichnet, daß der erste physische Datenblock und der zweite physische Datenblock gemäß einer gleichen physischen Blockadresse definiert werden.
  24. Verfahren nach Anspruch 23, dadurch gekennzeichnet, daß eine Adresse der ersten Speicherbank und eine Adresse der zweiten Speicherbank aufeinanderfolgende Adressen sind.
  25. Verfahren nach Anspruch 24, dadurch gekennzeichnet, daß jede der Vielzahl von separaten und einzeln adressierbaren Speicherbänken (1020, 1022, 1024, 1026) jeweils ein zweites Hilfs-RAM-Datenregister umfaßt, wobei das Verfahren außerdem die Schritte umfaßt: a. Laden des ersten nachfolgenden logischen Blocks von Daten in dem ersten virtuellen logischen Block in ein erstes Hilfs-RAM-Datenregister in der ersten Speicherbank; b. Laden des zweiten nachfolgenden logischen Blocks von Daten in dem zweiten virtuellen logischen Block in das zweite Hilfs-RAM-Datenregister in der zweiten Speicherbank; und c. simultanes Programmieren: i. des ersten nachfolgenden logischen Blocks von Daten in dem ersten Hilfs-RAM-Datenregister in einer ersten nachfolgenden Seite in dem ersten physischen Datenblock; und ii. des zweiten nachfolgenden logischen Blocks von Daten in dem zweiten Hilfs-RAM-Datenregister in einer zweiten nachfolgenden Seite in dem zweiten physischen Datenblock.
  26. Verfahren nach Anspruch 25, 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 logischen Blocks und der Schritt des Ladens eines ersten nachfolgenden logischen Blocks sequentielle Schritte des Ladens von Daten in eine Vielzahl von RAM-Datenregistern der ersten Speicherbank umfassen; d. der Schritt des Ladens des zweiten anfänglichen logischen Blocks und der Schritt des Ladens des zweiten nachfolgenden logischen Blocks sequentielle Schritte des Ladens von Daten in eine Vielzahl von RAM-Datenregistern der zweiten Speicherbank umfassen; e. die erste anfängliche Seite und die erste nachfolgende Seite in dem ersten physischen Datenblock aufeinanderfolgend adressiert werden; und f. die zweite anfängliche Seite und die zweite nachfolgende Seite in dem zweiten physischen Datenblock aufeinanderfolgend adressiert werden.
  27. Verfahren nach Anspruch 20, dadurch gekennzeichnet, daß der Schritt des Programmierens von eintreffenden Daten in das Flash-Speichersystem (1001) gemäß dem ersten Datenspeicherverfahren die sequentiellen Schritte umfaßt: a. Programmieren von Daten, die durch eine erste logische Blockadresse definiert werden, in einer erste Seite eines physischen Datenblocks; und b. Programmieren von Daten, die durch eine zweite logische Blockadresse definiert werden, in einer zweiten Seite des physischen Datenblocks; wobei die erste logische Blockadresse und die zweite logische Blockadresse durch aufeinanderfolgende Adressen in einer gleichen virtuellen logischen Blockadresse definiert werden und wobei die erste Seite und die zweite Seite durch aufeinanderfolgende physische Blockadressen in demselben physischen Datenblock definiert werden.
  28. Flash-Speichersystem (1001) nach Anspruch 1, ferner umfassend: a. ein Mittel zum Untersuchen des von dem Flash-Speichersystem (1001) gesendeten Handshake-Datenpakets (1100); b. ein Mittel zum simultanen Speichern einer Vielzahl von Datenspeicherbereichen in einer überlappten Weise in der Vielzahl von Speicherbänken (1020, 1022, 1024, 1026) aus den primären RAM-Datenregistern (1030, 1032, 1034, 1036) als Antwort auf einen vorab festgelegten herstellerspezifischen Wert, so daß die Programmierzeit reduziert wird, und c. ein Mittel zum sequentiellen Speichern von Daten in den Speicherbänken (1020, 1022, 1024, 1026) in einer nichtüberlappten Weise bei Fehlen eines vorab festgelegten herstellerspezifischen Werts.
  29. Flash-Speichersystem (1001) nach Anspruch 1, ferner umfassend: a. ein Mittel zum Untersuchen des von dem Flash-Speichersystem (1001) gesendeten Handshake-Datenpakets (1100); und b. ein Mittel zum sequentiellen Speichern von Daten in den Speicherbänken (1020, 1022, 1024, 1026) in einer nichtüberlappten Weise bei Fehlen des vorab festgelegten herstellerspezifischen Werts, wobei das Flash-Speichersystem (1001) so konfiguriert ist, daß es eine Vielzahl von Seiten von Daten in der Vielzahl von Speicherbänken (1020, 1022, 1024, 1026) für einen Host (1002) simultan programmiert, der einen Hochleistungs-Flash-Speichervorgang durchführen kann.
DE60130593T 2000-07-07 2001-05-17 Flash-Speicherarchitektur mit gleichzeitig programmierbaren mehrfachen hostfähigen Flash-Speicherbanken Expired - Lifetime DE60130593T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
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
US611676 2000-07-07

Publications (2)

Publication Number Publication Date
DE60130593D1 DE60130593D1 (de) 2007-10-31
DE60130593T2 true DE60130593T2 (de) 2008-01-31

Family

ID=24449984

Family Applications (2)

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
DE60122155T Expired - Lifetime DE60122155T2 (de) 2000-07-07 2001-05-17 Flashspeicherarchitektur zur implementierung von gleichzeitigen programmierbaren flashspeicherbanken mit host-kompatibilität

Family Applications After (1)

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

Country Status (8)

Country Link
US (1) US6721843B1 (de)
EP (2) EP1693759B1 (de)
JP (1) JP4945792B2 (de)
AT (2) ATE336065T1 (de)
AU (1) AU2001263509A1 (de)
DE (2) DE60130593T2 (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
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
US8171203B2 (en) * 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
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
US7877542B2 (en) * 2000-01-06 2011-01-25 Super Talent Electronics, Inc. High integration of intelligent non-volatile memory device
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
US8266367B2 (en) * 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
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
US20070168614A1 (en) * 2000-01-06 2007-07-19 Super Talent Electronics Inc. Secure-Digital (SD) Flash Card with Auto-Adaptive Protocol and Capacity
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株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
GB0123421D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Power management system
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123417D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved data processing
JP3967121B2 (ja) * 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
JP2003223792A (ja) * 2002-01-25 2003-08-08 Hitachi Ltd 不揮発性メモリ及びメモリカード
JP3806077B2 (ja) 2002-08-26 2006-08-09 株式会社東芝 メモリカード認識システム、容量切り替え型メモリカード・ホスト機器、容量切り替え型メモリカード、記憶容量設定方法及び記憶容量設定プログラム
JP3866635B2 (ja) 2002-08-26 2007-01-10 株式会社東芝 メモリカード及び記憶領域切り替え方法
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
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
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
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
US7289386B2 (en) 2004-03-05 2007-10-30 Netlist, Inc. Memory module decoder
US7916574B1 (en) 2004-03-05 2011-03-29 Netlist, Inc. Circuit providing load isolation and memory domain translation for memory module
US20110179219A1 (en) * 2004-04-05 2011-07-21 Super Talent Electronics, Inc. Hybrid storage device
US20110145489A1 (en) * 2004-04-05 2011-06-16 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
DE602006014299D1 (de) * 2005-11-22 2010-06-24 Sandisk Corp 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
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
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
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
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
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling 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
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim 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
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
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
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
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
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
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling 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
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
US20230076818A1 (en) 2020-05-07 2023-03-09 Achidi Valentin Agon Inhibition of coronavirus (covid-19) infection by means of apivirine extract - 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 株式会社日立製作所 半導体記憶装置
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
US5341339A (en) 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
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
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
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
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
US6721843B1 (en) 2004-04-13
AU2001263509A1 (en) 2002-01-21
ATE336065T1 (de) 2006-09-15
EP1693759A3 (de) 2006-09-13
EP1693759A2 (de) 2006-08-23
WO2002005285A3 (en) 2002-06-20
EP1299884A2 (de) 2003-04-09
JP2004511030A (ja) 2004-04-08
EP1299884B1 (de) 2006-08-09
ES2297787T3 (es) 2008-05-01
ATE373843T1 (de) 2007-10-15
DE60122155D1 (de) 2006-09-21
JP4945792B2 (ja) 2012-06-06
DE60130593D1 (de) 2007-10-31
WO2002005285A2 (en) 2002-01-17
DE60122155T2 (de) 2007-06-28
EP1693759B1 (de) 2007-09-19

Similar Documents

Publication Publication Date Title
DE60130593T2 (de) Flash-Speicherarchitektur mit gleichzeitig programmierbaren mehrfachen hostfähigen Flash-Speicherbanken
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE69024169T2 (de) Gerät und Verfahren zur Fehlerbehandlung in einem Halbleiterspeicher
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE69839126T2 (de) Verschiebung aufeinander folgender sektoren innerhalb eines datenblocks in einem flash-massenspeicher
DE60217883T2 (de) Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher
DE60025749T2 (de) Dateisystemabbildübertragung zwischen ungleichen dateisystemen
DE2515696C2 (de) Datenverarbeitungssystem
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE2803989C2 (de) Digitaldatenspeicher mit wahlfreiem Zugriff
DE2617408A1 (de) Datenverarbeitungsgeraet
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE2230987C2 (de)
DE102010018765A1 (de) Speichervorrichtung und Speicherverfahren
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE4143072A1 (de) Blockweise loeschbarer nicht-fluechtiger halbleiterspeicher
DE102020116362B3 (de) Dynamische zuweisung von unterblöcken
DE19537305A1 (de) Halbleiter-Platteneinrichtung und Speicherverwaltungsmethode
DE102009048179A1 (de) Prozess und Verfahren für eine Löschstrategie in Festkörperplatten
DE2432608C3 (de) Speicheranordnung fur eine Datenverarbeitungseinrichtung
DE202018102304U1 (de) NAND-Flash-Speichervorrichtung mit NAND-Puffer
DE112022000468T5 (de) Unterschiedliche schreibpriorisierung in zns-vorrichtungen
DE2703559A1 (de) Rechnersystem
EP0151789B1 (de) Speicherungsverfahren für eine in Fernmeldeanlagen, insbesondere Fernsprechvermittlungsanlagen eingesetzte Speichereinrichtung
DE602004012923T2 (de) Wortweise programmierbarer Flash-Speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition