DE4143072C2 - Blockweise löschbarer nicht-flüchtiger Halbleiterspeicher - Google Patents

Blockweise löschbarer nicht-flüchtiger Halbleiterspeicher

Info

Publication number
DE4143072C2
DE4143072C2 DE4143072A DE4143072A DE4143072C2 DE 4143072 C2 DE4143072 C2 DE 4143072C2 DE 4143072 A DE4143072 A DE 4143072A DE 4143072 A DE4143072 A DE 4143072A DE 4143072 C2 DE4143072 C2 DE 4143072C2
Authority
DE
Germany
Prior art keywords
sector
address
data
block
flash memory
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 - Fee Related
Application number
DE4143072A
Other languages
English (en)
Other versions
DE4143072A1 (de
Inventor
Gerald S Holzhammer
Kurt Brian Robinson
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE4143072A1 publication Critical patent/DE4143072A1/de
Application granted granted Critical
Publication of DE4143072C2 publication Critical patent/DE4143072C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system

Description

Die Erfindung bezieht sich auf einen nicht-flüchtigen Halb­ leiterspeicher, der blockweise löschbar ist, sowie auf ein einen solchen Speicher aufweisendes Computersystem.
Gewisse Arten bekannter Personal-Computersysteme enthalten einen Mikroprozessor (im folgenden auch als Zentraleinheit, zentrale Verarbeitungseinheit oder CPU bezeichnet), der mit verschiedenen Arten von Speichersystemen, nämlich einem Nur- Lese-Speicher (ROM), einem Direktzugriffsspeicher (RAM), einem Festplattenlaufwerk als Massenspeicher und wenigstens einem Floppy-Disk-Laufwerk zur Speicherung auf auswechselbaren magne­ tischen Disketten gekoppelt ist. Diese bekannten Personal-Com­ putersysteme haben in typischer Ausführung eine Architektur, welche dem eigenen Speicher der bekannten Personal-Computer­ systeme angepaßt ist.
Ein ROM wird in Verbindung mit einem als ROM-Monitor bezeichneten und im ROM gespeicherten Programm als Firmware bezeichnet. Ein ROM-Modul eines Basis-Eingabe/Ausgabe-Systems ("BIOS") ist eine Art von ROM-Monitor, der im ROM gespeichert wird und als Betriebssystem für gewisse Personal-Computer dient. Der ROM-BIOS-Modul enthält in typischer Ausführung (1) Treiber für bestimmte Hardware, einschließlich der Tastatur, der Plattenlaufwerke und des Druckers; (2) ein nach Einschalten wirksames Eigentestprogramm ("POST"); (3) eine Startroutine, welche das System initialisiert; und (4) ein Ladeprogramm, wel­ ches den Boot- oder ersten Sektor von einer Diskette oder ein Festplatte liest.
Nach dem Einschalten des Personal-Computers wird das POST- Programm des BIOS-Moduls ausgeführt; die BIOS-Startroutine führt gewisse Initialisierungen durch; und das Ladeprogramm liest den Inhalt des Boot-Sektors von einer Diskette oder einer Festplatte. Dieser Boot-Sektor enthält ein Ladeprogramm für das Betriebssystem des Computers. Das Ladeprogramm des Betriebs­ systems lädt seinerseits einen Teil des Betriebssystems von einer Diskette oder einer Festplatte in den RAM.
Das Betriebssystem für den Personal-Computer verarbeitet Befehle, steuert die Programmausführung und überwacht die Hard­ ware- und Software-Ressourcen des Computersystems. Ein Typ eines bekannten Betriebssystems ist MS-DOS der Firma Microsoft Corporation, Redmond, Washington. Das MS-DOS-Betriebssystem enthält das oben beschriebene Ladeprogramm, das MS-DOS-BIOS, ein MS-DOS-Kernel, eine Benutzerschnittstelle und Dienstpro­ gramme.
Das MS-DOS-BIOS enthält (1) neue Treiber, welche Komponen­ ten der Treiber des ROM-BIOS erweitern und benutzen; (2) eine Initialisierungsroutine für die MS-DOS-BIOS-Treiber; und (3) ein weiteres Ladeprogramm.
Die neuen Treiber für das MS-DOS-BIOS werden auch als BIOS- Erweiterungen oder BIOS-ROM-Erweiterungen bezeichnet. Bei eini­ gen bekannten Personal-Computern werden alle Eingabe- und Aus­ gabe-Funktionen durch Software gesteuert, welche in einem 32- Kilobyte- oder 64-Kilobyte-Abschnitt des ROM enthalten ist, und durch kleinere (typischerweise 2 Kilobyte große) BIOS-ROM- Erweiterungen.
Die Initialisierungsroutine für die MS-DOS-BIOS-Treiber zeigt einen Copyright-Hinweis an und stellt die Unterbrechungs­ tabelle für die neuen Treiber ein.
Das Ladeprogramm des MS-DOS-BIOS lädt den Rest des Betriebssystems.
Das MS-DOS-Kernel ist eine Shell zwischen dem BIOS und dem Anwenderprogramm. Das MS-DOS-Kernel initiiert die Ausführung des Anwenderprogramms, ordnet Speicher für Anwenderprogramme zu, bildet eine Anwenderprogramm-Schnittstelle zwischen dem Anwenderprogramm und der Hardware und steuert das Lesen und Schreiben der Dateien.
Die Benutzerschnittstelle von MS-DOS liefert Informationen an den Benutzer. Die Benutzerschnittstelle liefert eine Anfor­ derungsmeldung, welche den Benutzer zur Befehlseingabe auffor­ dert. Die Benutzerschnittstelle wirkt als Systemmanager, wenn das Betriebssystem die Kontrolle hat.
Die Dienstprogramme von MS-DOS liefern bestimmte zweckmäßi­ ge Funktionen für MS-DOS. Diese Funktionen umfassen (1) das Formatieren einer Diskette oder einer Festplatte und (2) das Prüfen einer Diskette oder Festplatte.
Die Festplatte und Disketten, wie sie bei dem oben bezeich­ neten Personal-Computersystem verwendet werden, sind nicht- flüchtige Speichersysteme, d. h. Mittel, welche ihre gespeicher­ ten Daten weder bei Unterbrechung des Betriebsstroms des Compu­ ters noch bei Ausschalten des Computers verlieren. Die Fest­ platte und Disketten sind Arten von Blockspeichergeräten, was bedeutet, daß Daten auf sie und von ihnen in Blöcken übertragen werden.
Bei Festplatten und Disketten werden Daten physikalisch auf konzentrischen Spuren gespeichert. Jede Spur besteht aus einer Vielzahl von Sektoren. Ein Sektor hat typischerweise eine Länge von 512 Bytes. Eine Plattensteuereinrichtung und ein physikali­ scher Gerätetreiber eines Personal-Computersystems führen das Schreiben auf und Lesen von Platten typischerweise in Sektor­ einheiten durch.
Bei MS-DOS ist ein Cluster die kleinste logisch adressier­ bare Speichereinheit. Bei einigen Festplatten gibt es vier Sek­ toren pro Cluster. Bei einigen anderen Festplatten und bei einer 3,5"-Diskette hoher Dichte ist ein Cluster ein einziger Sektor.
Jede partitionierte Zone einer Festplatte bildet ein logi­ sches Untersystem, welches sein eigenes Betriebssystem enthal­ ten kann. Eine Partitionstabelle im ersten Sektor einer forma­ tierten Festplatte enthält Informationen über die Partitionen.
Eine Festplatte und eine Diskette werden formatiert, bevor sie das erste Mal in Benutzung genommen werden. Bei einer For­ matierung auf niedrigem Niveau wird jede Spur in Sektoren unterteilt, und es werden Identifizierungs(ID)-Sektor-Anfangs­ etiketten an einheitlichen Positionen um die Spur angeordnet. Ein Formatieren auf hohem Niveau etabliert die Cluster, initia­ lisiert einige Plattenbereiche und bereitet die Platte zur Datenaufnahme vor.
Auf dem Gerätetreiber- und dem BIOS-Niveau werden Platten­ anforderungen durch ein "Tupel" beschrieben, welches das Lauf­ werk, den Kopf, die Zylinder-Spur, den Sektor und die Länge angibt. Die logischen Sektornummern sind auf der DOS-Ebene und der BIOS-Ebene bekannt. DOS liest von den und schreibt auf die Platten in Clustereinheiten.
Fig. 1 zeigt die logische Organisation eines bekannten MS- DOS-Betriebssystems. Für das MS-DOS-Betriebssystem wird eine Platte 2 in zwei logische Bereiche unterteilt: einen System­ bereich 4 und einen Datenbereich 9. Der Systembereich enthält eine Bootaufzeichnung 3, eine Dateizuordnungstabelle ("FAT") 5 und einen Wurzel-Verzeichnisbereich 7, welcher die Wurzelver­ zeichniseinträge enthält. Der Datenbereich 9 enthält Dateien, die zum Speichern von Anwendungsprogrammen, Daten und Unterver­ zeichnisinformationen dienen.
Die Bootaufzeichnung 3 enthält ein Bootstrap-Ladeprogramm zum Laden des Betriebssystems. Die Bootaufzeichnung 3 enthält auch Informationen bezüglich des ASCII-Namens des formatieren­ den DOS, die Anzahl von Bytes pro Sektor der Platte, die Anzahl von Sektoren pro Cluster, die Anzahl von Sektoren in der Boot­ aufzeichnung, die Anzahl von Kopien des Datei-Zuordnungstabel­ leneintrags (oder Clusters), die Anzahl von Wurzelverzeich­ niseinträgen, die Anzahl von Sektoren pro Partition, die Plat­ tentypennummer, die Nummer von Sektoren pro Dateizuordnungs­ tabelle, die Anzahl von Sektoren pro Spur, die Anzahl von Sei­ ten pro Diskette bzw. Platte, die Anzahl von reservierten oder versteckten Sektoren, die physikalische Laufwerknummer, eine erweiterte Bootsektorsignatur, eine Volumenidentifizierung und eine Volumentabelle.
Das Wurzelverzeichnis 7 ist eine Tabelle von 32-Byte-Ein­ trägen, die jeweils gewisse Attribute der Datei angeben. Typi­ scherweise enthält jeder das Wurzelverzeichnis 7 bildende Ver­ zeichniseintrag einen Dateinamen, eine Dateierweiterung, Attri­ butflags, Zeit- und Datumsangaben für die Datei, die Nummer des Startclusters für die die Datei bildenden Cluster und die Dateigröße.
Jede Datei auf der Platte ist aus einem oder mehreren Clu­ stern aufgebaut. Die Dateizuordnungstabelle 5 enthält eine Auf­ zeichnung in Form einer Kette zur Beschreibung der die die Datei bildenden Cluster verknüpfenden Kette. Ein typisches FAT 5 enthält eine Liste von 2-Byte-Einträgen, eine für jedes Clu­ ster. Bei einigen bekannten FAT's sind die FAT-Einträge länger als zwei Bytes. Die Länge jedes FAT-Eintrages hängt von der Gesamtanzahl von Clustern ab. Der Verzeichniseintrag für eine Datei enthält die Nummer des Startclusters für die Datei, und das Betriebssystem verwendet die Startclusternummer zum Zugriff auf die Datei-Zuordnungstabelle. Jeder FAT-Eintrag ist ein Zei­ ger auf den nächsten Cluster der Datei. Daher enthält der FAT- Eintrag, die mit dem ersten Zugriff gewonnen wird, die Cluster­ nummer für das die Datei bildende nächst Cluster. Das Betriebs­ system verwendet diese nächste Clusternummer für den Zugriff auf das FAT zur Gewinnung wiederum einer anderen Clusternummer und setzt diesen Prozeß solange fort, bis ein spezieller Marker in der FAT 5 erreicht ist.
Die Dateistruktur auf der Platte ist baumartig. Einträge im Wurzelverzeichnis können Zeiger auf Unterverzeichnisse sein. Die Unterverzeichnisse können ineinandergesetzt sein.
Ein mit der Verwendung von Festplatten und Disketten bei einigen Arten bekannter Personal-Computer verbundener Nachteil besteht darin, daß Festplattenlaufwerke und Floppy-Disk-Lauf­ werke physikalisch relativ große Geräte mit einer Reihe mecha­ nischer Komponenten sind. Erhebliche Baugrößen stehen im Gegen­ satz zu den gedrängt angeordneten integrierten Schaltungen, welche andere Teile eines Personal-Computer ausmachen. Außerdem verhindern erhebliche Baugrößen bekannter Festplatten- und Floppy-Disk-Laufwerke einer weiteren Miniaturisierung tragbarer Personal-Computer.
Andere Nachteile bekannter Festplatten- und Floppy-Disk- Laufwerke bestehen darin, daß sie im Vergleich zu integrierten Schaltungen in anderen Teilen des Personal-Computers einen relativ hohen Energiebedarf haben.
Bekannte Festplatten- und Floppy-Disk-Laufwerke haben auch den Nachteil, daß sie störungsanfällig sind, wenn sie übermäßi­ gen Stoß- und Vibrationsbeanspruchungen oder Staub oder anderen atmosphärischen Kontaminationen ausgesetzt sind.
Eine andere Art eines bekannten nicht-flüchtigen Computer­ speichers ist der elektrisch-löschbare, programmierbare Flash- Nur-Lese-Speicher ("Flash-EEPROM"). Der Flash-EEPROM kann vom Benutzer programmiert werden und hält nach der Programmierung bis zum erneuten Löschen seine Daten fest. Ein elektrisches Löschen des Flash-EEPROMs löscht den gesamten Inhalt des Spei­ chers in einer relativ raschen Operation. Der Flash-EEPROM kann danach mit einem neuen Code programmiert werden.
Ein Nachteil dieser Art von bekanntem Speicher liegt darin, daß nicht jede einzelne Bitzelle von einer logischen Null in eine logische Eins ohne vorhergehendes Löschen überschrieben werden kann. Ein anderer Nachteil der bekannten Ausführungen von Flash-EEPROMs besteht darin, daß er in großen Blöcken gelöscht, d. h. in einen logischen Eins-Zustand rückgesetzt wer­ den muß, oder nur insgesamt gelöscht werden kann.
Ein anderer Nachteil eines bekannten Flash-EEPROMs besteht in der begrenzten Anzahl von Löschmöglichkeiten und Schreib­ zyklen vor dem Ausfall des Flash-EEPROMs.
Diese Beschränkungen bezüglich Überschreiben und Löschen haben die Brauchbarkeit und die Einsatzmöglichkeiten bekannter Flash-EEPROMs bei Personal-Computersystemen bisher beträchtlich eingeschränkt.
Aus der EP 0 392 895 A2 ist ein Flash-EEPROM-System bekannt, das zur Nachbildung eines Plattenlaufwerks dient. Die­ ses System umfaßt eine Zuordnungstabelle zur Umsetzung logi­ scher Adressen in physikalische EEPROM-Adressen. Der Flash- EEPROM ist in Blöcke unterteilt, die die Größe eines Festplat­ tensektors aufweisen.
Der Erfindung liegt die Aufgabe zugrunde, eine Plattenemu­ lation für einen blockweise löschbaren nicht-flüchtigen Halb­ leiterspeicher zur Verfügung zu stellen. Insbesondere soll ein reservierter Block zum Optimieren der Integrität und Zuverläs­ sigkeit der Dateistruktur verfügbar gemacht werden.
Gelöst wird diese Aufgabe durch einen nicht-flüchtigen Halbleiterspeicher mit den Merkmalen des Patentanspruchs 1 bzw. ein Computersystem mit den Merkmalen des Patentanspruchs 10.
Der nicht-flüchtige Halbleiterspeicher weist einen aktiven Block zum Speichern erster Daten und einen Reserveblock zum Speichern zweiter Daten auf. Die zweiten Daten sind eine Kopie der ersten Daten. Die Kopie wird während einer Aufräumoperation (clean-up operation) vor dem Löschen des aktiven Blocks herge­ stellt. Der nicht-flüchtige Halbleiterspeicher weist auch eine Abbildungstabelle zum Abbilden einer logischen Adresse einer Zuordnungseinheit auf eine physikalische Adresse eines Sektors innerhalb des nicht-flüchtigen Halbleiterspeichers auf. Andere vorteilhafte Merkmale und Weiterbildungen der Erfindung ergeben sich aus den Unteransprüchen und der nun folgenden Beschreibung von in der Zeichnung dargestellten Ausführungsbeispielen.
In der Zeichnung zeigen:
Fig. 1 die logische Organisation eines bekannten Betriebssystems;
Fig. 2 ein Personal-Computersystem mit einer Flash- Anordnung und einem Dateisystemtreiber, der im RAM des Computersystems gespeichert ist;
Fig. 3 ein Personal-Computersystem mit (1) einer Flash-Speicheranordnung, (2) einem im ROM-BIOS und der ROM-BIOS-Erweiterung enthaltenen Dateisystemtreiber und (3) einem RAM-Puffer zur Dateiübertragung und zur Aktualisierung einer Dateitabelle;
Fig. 4 ein Personal-Computersystem mit (1) einer Flash- Speicheranordnung, (2) einem im ROM-BIOS und der ROM-BIOS-Erweiterung gespeicherten Da­ teisystemtreiber und (3) einem separaten Sy­ stemsteuergerät;
Fig. 5 eine abgebildete Eingabe/Ausgabe- Flash-Speicheranordnung;
Fig. 6 eine Seitenabbildungs-Flash-Speicherfeldstruk­ tur;
Fig. 7 eine Flash-Speicherfeldstruktur mit direkter Speicherabbildung;
Fig. 8 einen Flash-EEPROM mit einer Sektoren-Datei­ struktur und einer Cluster-Abbildungstabelle;
Fig. 9 ein Beispiel einer Cluster-Abbildungstabelle für ein Flash-Speicherfeld;
Fig. 10 ein Beispiel einer verknüpften Liste innerhalb der Cluster-Abbildungstabelle der Fig. 9;
Fig. 11 ein Beispiel für die Arbeitsweise der Cluster- Abbildungstabelle;
Fig. 12 ein Beispiel einer Sicherungskopie einer Clu­ ster-Abbildungstabelle; und
Fig. 13 ein Beispiel einer Sektor-Abbildungstabelle.
Fig. 2 zeigt einen Personal-Computer 10 mit einem bevorzug­ ten Dateisystem oder einer Dateistruktur 32. Das Dateisystem 32 weist einen oder mehrere Flash-EEPROMs auf, welche eine Flash- Speicheranordnung 34 bilden. Ein Flash-EEPROM ist eine Art von Halbleiterspeicher. Das Dateisystem 32 weist auch einen Soft­ ware-Dateisystemtreiber 28 auf, der im System-RAM 22 gespei­ chert ist. Das Personal-Computersystem 10 weist auch eine zen­ trale Recheneinheit (CPU) 12 und einen Bus 18 auf.
Wie weiter unten genauer beschrieben werden wird, ist die Flash-Speicheranordnung 34 so ausgebildet, daß sie entweder ein Festplatten- oder ein Floppy-Disk-Laufwerk zu emulieren vermag.
Der System-RAM 22 enthält Raum zur Speicherung des Anwen­ derprogramms 24. Bei einem Ausführungsbeispiel der Erfindung hat der System-RAM 22 eine Größe von 1 MByte. Der System-RAM 22 hat auch Raum zur Speicherung von anderen Anwendungsprogrammen und für Daten. Bei einem Ausführungsbeispiel der Erfindung ent­ hält der System-RAM 22 ein Betriebssystem 26 für das Computer­ system 10. Bei alternativen Ausführungsbeispielen enthält der System-RAM 22 außerdem zwei oder mehr Betriebssysteme.
Der System-RAM enthält auch die Dateisystem-Treibersoftware 28. Diese Treibersoftware 28 definiert die Dateistruktur für die Flash-Speicheranordnung 34. Der Dateisystemtreiber 28 und die Dateistruktur für eine Flash-Speicheranordnung werden wei­ ter unten genauer beschrieben.
Anwendungsprogramm 24, Betriebssystem 26 und Dateitreiber 28 sind nicht nur im RAM 22, sondern auch in der Flash-Spei­ cheranordnung 34 gespeichert, und zwar in letzterer sowohl in den Einschalt- als auch in den Ausschaltphasen des Computers 10. Die Flash-Speicheranordnung 34 kann mehr als ein Anwen­ dungsprogramm, mehr als ein Betriebssystem und auch mehr als einen Dateitreiber speichern. Die Flash-Speicheranordnung 34 speichert auch Informationsdateien und Verzeichnisinformatio­ nen. Sowohl beim Warmstart als auch beim Kaltstart wird der Dateisystemtreiber 28 in den System-RAM 22 aus der Flash-Spei­ cheranordnung 34 geladen. Kurz gesagt, wirkt die Flash-Spei­ cheranordnung als Massenspeichergerät, welches eine Festplatte ersetzt.
Das Computersystem 10 weist auch ein ROM 14 auf, der BIOS- Software für den Computer 10 speichert. Bei einem Ausführungs­ beispiel der Erfindung enthält das im ROM 14 gespeicherte BIOS sowohl ein 64-Kilobyte-BIOS als auch zusätzliche BIOS-ROM-Er­ weiterungen von jeweils 2 Kilobytes. Die Dateisystem-Treiber­ software 28 wird vor der Ausführung in der Flash-Speicheranord­ nung 34 und nicht im ROM 14 gespeichert.
Bei Ausführung des ROM-BIOS-Programms 14 nach der Stromein­ schaltung des Computers 10 werden der Dateitreiber 28 und das Betriebssystem 26 in den System-RAM 22 über den Bus 18 aus der Flash-Speicheranordnung 34 geladen. Der Benutzer des Computers 10 bedient sich danach des Betriebssystems 26 zum Laden des An­ wendungsprogramms 24 in den RAM 22. Der Benutzer des Computers 10 kann auch Daten, andere Anwendungsprogramme und andere Be­ triebssysteme in den System-RAM 22 laden.
Bei einem Ausführungsbeispiel der Erfindung wird die Flash- Speicheranordnung 34 in Blöcken gelöscht, wobei jeder Block eine große Anzahl von Bits enthält. Bei einem alternativen Aus­ führungsbeispiel wird die Flash-Speicheranordnung 34 in ihrer Gesamtheit gelöscht.
Flash-Speicher unterscheiden sich von konventionellen elek­ trisch löschbaren, programmierbaren Nur-Lese-Speichern (EEPROMs) durch die Art ihrer Löschung. Konventionelle EEPROMs verwenden einen Ansteuerungstransistor zur Steuerung einer in­ dividuellen Byte-Löschoperation. Andererseits erreichen Flash- Speicher eine viel höhere Dichte mit Einzeltransistorzellen. Während des Löschmodus wird eine hohe Spannung an die Source- Elektroden jeder Speicherzelle in einem Block oder im gesamten Chip gleichzeitig angelegt. Dies führt zur Löschung einer gan­ zen Speicheranordnung, eines Speicherfeldes oder eines ganzen Blockes.
Bei der Flash-Speicheranordnung 34 bedeutet eine logische "Eins", daß - wenn überhaupt - nur wenige Elektronen auf einer einer Bitzelle zugeordneten schwebenden Gate-Elektrode (Floating-Gate-Elektrode) gespeichert werden. Eine logische "Null" bedeutet, daß viele Elektronen auf der der Bitzelle zu­ geordneten schwebenden Gate-Elektrode gespeichert sind. Nach dem Löschen der Flash-Speicheranordnung 23 ist eine logische Eins in jeder Bitzelle der Speicheranordnung 23 gespeichert. Jede einzelne Bitzelle des Flash-Speicherfeldes 23 läßt sich nicht ohne vorhergehende Löschoperation von einer logischen Null in eine logische Eins überschreiben. Die einzelnen Bitzel­ len einer Flash-Speicheranordnung 23 kann dagegen von einer lo­ gischen Eins in eine logische Null überschrieben werden, sofern diese Operation die einfache Addition von Elektronen auf eine schwebende Gate-Elektrode umfaßt, welche die dem Löschungszu­ stand eigene Anzahl von Elektronen enthält.
Eine Flash-Speicheranordnung 34 kann auf eine von drei Ar­ ten programmiert werden: (1) jeweils ein Einzelbit; (2) jeweils ein Einzelwort oder (3) jeweils Wortgruppen. Ein Wort besteht aus einer Mehrzahl von Speicherbits, die einer einzigen Spei­ chersystemadresse oder einem einzigen Bauelement zugeordnet sind. Die gleichzeitig programmierten Wortgruppen können die Größe eines Löschblocks der Flash-Speicheranordnung 34 haben. Programmieroperationen bei Flash-Speichern werden auch als Schreiboperationen bezeichnet.
Wie oben gesagt, kann ein Einzelbit einer Flash-Speicheran­ ordnung 34 nicht von einem logischen Null-Zustand in einen lo­ gischen Eins-Zustand ohne vorhergehendes Löschen überschrieben werden. Die Notwendigkeit der Löschung vor einem Überschreiben von einer logischen Null in eine logische Eins führt eine einem Flash-Speicher zugeordnete funktionelle Arbeitsweise ein.
Die Flash-Speicheranordnung 34 speichert sowohl einen aus­ führbaren Code als auch nicht-ausführbare Daten. In der nach­ folgenden Detailbeschreibung wird der Begriff "Daten" zur Be­ zeichnung (1) nicht-ausführbarer Daten allein oder (2) sowohl eines ausführbaren Codes als auch nicht-ausführbarer Daten ver­ wendet.
Die einer Flash-Speicheranordnung 34 zugeordnete Leseopera­ tion ist einer Leseoperation bei anderen Nur-Lese-Speichergerä­ ten sehr ähnlich. Bei einem Ausführungsbeispiel benötigt eine Leseoperation für eine Flash-Speicheranordnung 34 in der Größenordnung von 135 Nanosekunden. Schreib- und Leseoperatio­ nen für eine Flash-Speicheranordnung 34 sind jedoch beträcht­ lich langsamer. Bei einem Ausführungsbeispiel der Erfindung sind Löschzeiten für einen Block einer Flash-Speicheranordnung 34 in der Größenordnung von einer Sekunde. Schreiboperationen für ein Einzelwort benötigen bei der Flash-Speicheranordnung 34 in der Größenordnung von 10 Mikrosekunden. Daher sind die Lese-, Schreib- und Löschoperationen bei einer Flash-Speicheranord­ nung 34 von asymmetrischer Art, d. h. die Schreib- und Löschope­ rationen sind beträchtlich langsamer als die Leseoperationen.
Außerdem hat jeder Flash-Speicher der Flash-Speicheranord­ nung 34 eine begrenzte Lebensdauer bezüglich der Lösch- und Schreib- (d. h. Programmier-)operationen. Bei einem Ausführungs­ beispiel kann die Flash-Speicheranordnung 34 ein Minimum von 10000 Lösch/Programmier-Zyklen durchlaufen, bevor die Flash- Speicheranordnung 34 auszufallen droht oder eine wesentliche Verschlechterung der Lösch/Schreib-Funktion droht. Daher ist ein Ausführungsbeispiel der Erfindung bezüglich der Anzahl zu­ verlässig durchführbarer Lösch/Schreib-Zyklen der Flash-Spei­ cheranordnung 34 begrenzt. Andererseits gibt es keine Begren­ zung der Lebensdauer in bezug auf die Zahl der Leseoperationen der Flash-Speicheranordnung 34.
Bei einem Ausführungsbeispiel der Erfindung hat jedes die Flash-Speicheranordnung 34 enthaltende Flash-Speichergerät meh­ rere Löschblöcke. Bei diesem Ausführungsbeispiel gibt es ge­ wisse Beschränkungen bei den Lösch/Programmier-Zyklen benach­ barter Blöcke. Benachbarte Blöcke sind solche Blöcke, die ent­ weder Zeilenverbindungen oder Spaltenverbindungen gemeinsam be­ nutzen. Die Beschränkungen der Zyklen benachbarter Blöcke die­ nen dazu, elektrische Störbedingungen von Daten zu verhindern.
Ein häufigeren Zyklen unterworfener Block wird als heißer Block bezeichnet. Ein keinen oder selteneren Zyklen unterworfe­ ner Block wird als kalter Block bezeichnet. Der wesentliche Pa­ rameter ist die Differenz zwischen der Anzahl von Zyklen, die jeweils benachbarten Blocks zugeordnet sind. Ein heißer Block kann ggf. eine solche Zykluszählung erreichen, daß Daten in ei­ nem kalten Block des Flash-Speicherfeldes 34 beeinträchtigt werden. Eine Möglichkeit der Vermeidung einer solchen Heiß- Kalt-Block-Wechselwirkung besteht darin, heiße Blöcke der Flash-Speicheranordnung 34 Zyklusbeschränkungen zu unterwerfen. Eine andere Möglichkeit zur Minimierung ungünstiger Einflüsse aufgrund der Heiß-Kalt-Block-Wechselwirkung besteht darin, die kalten Blöcke der Flash-Speicheranordnung 34 periodisch zu lö­ schen und neu zu programmieren. Das periodische Löschen und Um­ programmieren kalter Blöcke wird als Regeneration kalter Blöcke bezeichnet.
Wie weiter unten genauer beschrieben werden wird, berück­ sichtigen die bevorzugten Dateistrukturen nach der vorliegenden Erfindung die oben erläuterten Funktionscharakteristiken von Flash-EEPROMs, aus denen die Flash-Speicheranordnung 34 aufge­ baut ist.
Fig. 3 zeigt ein Personal-Computersystem 40 mit einer be­ vorzugten Ausführungsform einer Dateistruktur 58. Das Personal- Comutersystem 40 weist eine zentrale Recheneinheit 12 und einen ROM 42 auf. Der ROM 42 speichert BIOS-Software 43 und BIOS-Er­ weiterungssoftware 44. Das Personal-Computersystem 40 weist auch einen Bus 48 und einen System-RAM 52 auf. Der System-RAM 52 speichert das Anwendungsprogramm 24 und das Betriebssystem 26. Das Personal-Computersystem 40 enthält auch einen RAM-Puf­ fer 62 und eine Flash-Speicheranordnung 64.
Der RAM-Puffer 62 sorgt für die Pufferung zur Übertragung von Dateien zwischen der Flash-Speicheranordnung 64 und dem Sy­ stem-RAM 52. Der RAM-Puffer 62 sorgt auch für eine Pufferung bei dem Aufbau oder der Aktualisierung eines Verzeichnisses für die in der Flash-Speicheranordnung 64 gespeicherten Dateien.
Mindestens ein Flash-EEPROM bildet die Flash-Speicheranord­ nung 64. Letztere speichert das Anwendungsprogramm 24, das Be­ triebssystem 26, Daten, andere Anwendungsprogramme und andere Betriebssysteme. Das Betriebssystem 26, das Anwendungsprogramm 24 und andere Programme und Daten können von der Flash-Spei­ cheranordnung 64 über einen Bus 48 zum System-RAM 52 übertragen werden.
Die Dateistruktur 58 enthält die Flash-Speicheranordnung 64, den RAM-Puffer 62, die ROM-BIOS-Erweiterungssoftware 44 und einen Teil der ROM-BIOS-Software 43.
Die Dateisystem-Treibersoftware, welche die Dateistruktur für die Flash-Speicheranordnung 64 definiert, bildet einen Teil der ROM-BIOS-Software 43 und der ROM-BIOS-Erweiterungssoftware 44 im ROM 42. Bei dem in Fig. 3 gezeigten Ausführungsbeispiel ist der Systemtreiber ein integraler Teil der Firmware des Per­ sonal-Computersystems 40. BIOS 43 und BIOS-Erweiterung 44 sind Speicherblöcke, welche entweder direkt abgebildet (direct-map­ ped) oder seitenweise umgelagert (paged) werden. Daher ist bei dem in Fig. 3 dargestellten Ausführungsbeispiel die Dateisy­ stem-Treibersoftware weder im System-RAM 52 noch in der Flash- Speicheranordnung 64 gespeichert.
Bei dem Ausführungsbeispiel gemäß Fig. 3 ist eine Erweite­ rung des BIOS-Interrupts 13H als Teil der BIOS/ROM-Erweiterung 44 vorgesehen. Diese 13H-Interrupt-Erweiterung wird während der Initialisierung in den Standard-13H-Interrupt-Vektor geschaltet. BIOS-Anforderungen, die nicht an die Flash-Spei­ cheranordnung 64 gerichtet sind, werden an den alten BIOS-In­ terrupt-13H-Verarbeiter übertragen.
Fig. 4 zeigt ein Personal-Computersystem 70 mit wiederum einer anderen bevorzugten Dateistruktur 94. Das Personal-Com­ putersystem 70 weist eine zentrale Recheneinheit 12 und einen System-RAM 72 auf. Bei einem bevorzugten Ausführungsbeispiel enthält der System-RAM 72 ein Anwendungsprogramm 24 und ein Be­ triebssystem 26. Das Personal-Computersystem 70 weist auch einen Bus 88 und einen ROM 78 auf. Letzterer enthält BIOS-Soft­ ware 79 und BTOS-Erweiterungssoftware 80.
Das Personal-Computersystem 70 weist auch ein Steuergerät 92 und eine Flash-Speicheranordnung 96 auf. Letztere ist aus Flash-EEPROMs aufgebaut. Die Flash-Speicheranordnung 96 spei­ chert das Anwendungsprogramm 24, das Betriebssystem 26, Daten, andere Anwendungsprogramme und andere Betriebssysteme, welche in den System-RAM 72 über den Bus 88 geladen werden können.
Dateistruktur 94 besteht aus dem Steuergerät 92, der Flash- Speicheranordnung 96, der ROM-BIOS-Erweiterung 80 und einem Teil des ROM-BIOS 79.
Das in Fig. 4 gezeigte Personal-Computersystem 70 hat eine vollständig Hardware-getriebene Dateistruktur für die Flash- Speicheranordnung 96. Das Steuergerät 92 ist speziell für die Definition und Steuerung der Dateistruktur für die Flash-Spei­ cheranordnung 96 vorgesehen. Das Steuergerät 92 weist einen Mi­ krocontroller 100 zur Überwachung der Steuerung auf.
Das Steuergerät 92 weist auch eine Steuerlogik 106 auf. Bei einem bevorzugten Ausführungsbeispiel der Erfindung enthält die Steuerlogik 106 eine programmierbare Logikanordnung (PLA). Die Logikschaltung 106 enthält die Digitallogik, welche die Opera­ tion des Steuergeräts 92 steuert.
Bei einem Ausführungsbeispiel weist das Steuergerät 92 einen ROM 98 auf, welcher die Dateisystem-Treibersoftware spei­ chert. Die Dateisystem-Treibersoftware ist von einem Mikrocon­ troller 100 ausführbar und definiert die Dateistruktur für die Flash-Speicheranordnung 96.
Bei einem alternativen Ausführungsbeispiel ist die ausführ­ bare und die Dateistruktur für die Flash-Speicheranordnung 96 definierende Dateisystem-Treibersoftware ein Bestandteil der ROM-BIOS-Software 79 und der BIOS-ROM-Erweiterungssoftware 80. Das Steuergerät 92 enthält einen Puffer-RAM 102. Puffer-RAM 102 bewirkt die Pufferung zur Übertragung von Dateien und zur Er­ zeugung und Aktualisierung von Verzeichnissen.
Das Steuergerät 92 enthält auch einen Puffer/Multiplexer 104. Der Puffer/Multiplexer 104 bewirkt die Pufferung zur Da­ teiübertragung. Der Puffer/Multiplexer 104 multiplext auch von und zu der Flash-Speicheranordnung 96 übertragene Daten.
Die der Puffer-Multiplexer-Schaltung 104 zugeordnete Logik kann zu irgendeinem Standard-Systembus-Interface passen. Die dem Puffer-Multiplexer 104 zugeordnete Logik kann beispiels­ weise mindestens einem der folgenden Standards angepaßt sein:
PC XT, PC AT (d. h. IDE-Industrie-Standardarchitektur), EISA (d. h. erweiterte Industrie-Standardarchitektur), MCA (d. h. Micro-Channel-Architektur), VME (d. h. Virtual Machine Environ­ ment) und Multibus.
Bei einem Ausführungsbeispiel der Erfindung ist das Steuer­ gerät 92 im Personal-Computersystem 70 enthalten. So kann das Steuergerät 92 beispielsweise auf eine in der Zeichnung nicht dargestellten Systemplatine innerhalb des Personal-Computers 70 angeordnet sein.
Bei einem alternativen Ausführungsbeispiel kann das Steuer­ gerät 92 ein Eingabe/Ausgabe(I/O)-Gerät sein, welches zum Per­ sonal-Computersystem 70 extern oder in einem Erweiterungssteck­ platz (nicht gezeigt) des Personal-Computersystems 70 angeord­ net ist. Bei diesem alternativen Ausführungsbeispiel kann die dem Puffer/Multiplexer 104 zugeordnete Logik zu irgendeinem Standard-I/O-Interface passen. Beispielsweise kann der Puf­ fer/Multiplexer 104 zu wenigstens einem der folgenden I/O- Schnittstellen passen: IDE, ST506, SCSI (d. h. Small Computer System Interface) und SA400 (d. h. ein Floppy-Disk-Standard). Bei dem alternativen Ausführungsbeispiel kommuniziert daher der Personal-Computer 70 über eine der o. g. Standard-I/O-Schnitt­ stellen mit dem Steuergerät 92.
Das Personal-Computersystem 40 der Fig. 3 und das Personal- Computersystem 70 der Fig. 4 weisen jeweils Hardware auf, wel­ che der Steuerung der Dateistruktur der zugehörigen Flash-Spei­ cheranordnung dient. Bei dem Personal-Computersystem 40 ist diese zusätzliche Hardware der RAM-Puffer 62. Bei dem Personal- Computersystem 70 ist diese zusätzliche Hardware das Steuerge­ rät 92. Der RAM-Puffer 62 der Fig. 3 und das Steuergerät 92 der Fig. 4 schaffen die Voraussetzung dafür, daß sich eine Speiche­ rung des Dateisystem-Steuercodes im System-RAM 52, in der Flash-Speicheranordnung 64, im System-RAM 72 oder in der Flash- Speicheranordnung 96 jeweils erübrigt.
Der RAM-Puffer 62 und das Steuergerät 92 dienen jeweils auch der Datenpufferung, damit der System-RAM 52 der Fig. 2 und der Sytem-RAM 72 der Fig. 4 nicht als Datenpuffer für die Da­ teistrukturen 58 bzw. 94 dienen müssen. Außerdem bedeutet die Einbeziehung des Datenpuffers 62 in das Personal-Computersystem 40 und des Steuergeräts 92 in das Personal-Computersystem 70, daß der System-RAM 52 und der System-RAM 72 nicht als Notizbe­ reiche für die Dateistrukturen in den Flash-Speicheranorndung 64 bzw. 96 zu dienen brauchen.
Der RAM-Puffer 62 in Fig. 3 und das Steuergerät 92 in Fig. 4 ermöglichen es, daß die Dateistruktur 58 und die Dateistruk­ tur 96 jeweils als einen bootfähigen Speicherbereich aufweisend angesehen werden können, wobei der Speicherbereich Bestandteil der primären Systemhardware für den jeweiligen Personal-Compu­ ter ist. Im Ergebnis bewirken der RAM-Puffer 62 und das Steuer­ gerät 92 eine Verbesserung der Gesamtbetriebsweise der Datei­ strukturen der Flash-Speicheranordnungen für die jeweiligen Personal-Computersysteme.
Die verschiedenen Konfigurationen der in den Fig. 2-4 gezeigten Personal-Computer 10, 40 und 70 führen zu unter­ schiedlichen Computercharakteristiken. Im Computersystem 10 der Fig. 2 wird der Dateitreiber 28 durch die zentrale Rechenein­ heit 12 als eine Vordergrund-Task-Softwareroutine ausgeführt, welche alle Dateimanagementaufgaben zum Management der Flash- Speicheranordnung 34 verarbeitet. Der Dateisystemtreiber 28 übernimmt einen Teil des System-RAM 22, jedoch kann die Größe des System-RAM 22 beschränkt sein. Wenn das Betriebssystem 26 des Personal-Computersystems 10 beispielsweise MS-DOS ist, so kann der System-RAM 22 auf ein Megabyte "Real-Modus"-Kapazität beschränkt sein.
Bei dem Computersystem 40 gemäß Fig. 3 ist die Dateisystem- Treibersoftware, welche die Dateistruktur für die Flash-Spei­ cheranordnung 64 definiert, Bestandteil der ROM-BIOS-Software 43 und der ROM-BIOS-Erweiterungssoftware 44 im ROM 42. Die Größe des Speicherraums im ROM 42 kann jedoch beschränkt sein. Beispielsweise werden bei bestimmten MS-DOS-kompatiblen Perso­ nal-Computern alle Eingabe-Ausgabe-Funktionen durch Firmware getrieben, welche in einem 64 Kilobyte BIOS-Abschnitt des ROM mit kleineren BIOS-ROM-Erweiterungen von jeweils 2 Kilobyte enthalten ist. Die System-Driversoftware kann den im ROM 42 verfügbaren Raum übersteigen, wenn der ROM 42 von geringer Größe ist.
Demgegenüber speichert das Hardware-Steuergerät 92 für das Computersystem 70 den Dateitreiber, und dadurch werden die Speicherbedürfnisse bezüglich Flash-Speicheranordnung 96, ROM 78 und System-RAM 72 reduziert. Darüberhinaus vereinfacht das Hardware-Steuergerät 92 die Dateisystem-Steuerbefehle. Bei­ spielsweise setzt das Hardware-Steuergerät 92 die Dateisystem- Steuerbefehle in Prozeßaufrufe auf hohem Niveau um, die mittels eines auf den in einem anderen Speicherraum befindlichen Code hinweisenden Namens (Labels) über Software zugreifbar sind. Bei einem Ausführungsbeispiel der Erfindung sind die vereinfachten Dateisystem-Steuerbefehle oder die Dateitreiber-Steuerbefehle im ROM 98 des Hardware-Steuergeräts 92 als konventioneller BIOS-artiger Steuercode gespeichert. Dies wiederum macht es möglich, daß das Dateisystem 94 als grundsätzlich bootfähiges Gerät erkennbar ist. Dies führt zu vereinfachten Dateisystem­ aufrufen. Jeder Dateisystemaufruf führt zu der Ausführung des Dateisystemtreibers (der auch als Dateisystem-Steuercode be­ zeichnet wird).
Bei einem Ausführungsbeispiel wird jeder Dateisystemaufruf für ein Computersystem 70 der Fig. 3 direkt von der CPU 12 aus­ geführt, welche Befehle aus dem Haupt-BIOS und direkt abgebil­ deten BIOS-Erweiterungen, die im ROM 78 gespeichert sind, holt. Bei einem anderen Ausführungsbeispiel wird jeder Dateisystem­ aufruf von der CPU 12 aus Speicherseiten ausgeführt, welche sich in BIOS-Erweiterungsspeicherblöcken im ROM 98 befinden. Bei wiederum einem anderen Ausführungsbeispiel wird jeder Da­ teisystemaufruf vom Mikrocontroller 100 aus dem Dateisystem­ treiber ausgeführt, der im ROM 98 des Hardware-Steuergeräts 92 gespeichert ist.
Bei einem bevorzugten Ausführungsbeispiel reduziert das Hardware-Steuergerät 92 jede dateibezogene Aufgabe (Task) auf einen einzigen Befehl aus der CPU 12 des Leitrechners, wodurch ein Betrag zur Entlastung der Host-CPU 12 geleistet wird. Das Steuergerät akzeptiert Daten, die mit Geschwindigkeiten ent­ sprechend einem RAM-Speicher eingehen, indem es die einlaufen­ den Daten im lokalen RAM-Pufferraum 102 hält. Das Hardware- Steuergerät 92 beendet jede gegebene Task automatisch, führt jedoch nur eine Operation pro Zeiteinheit aus.
Außerdem gibt das Steuergerät 92 der CPU 12 die Möglich­ keit, jede Dateisystem-Task für einen unmittelbaren Datenzu­ griff zu unterbrechen. Dies bedingt die zusätzliche RAM-Puffe­ rung jeder gültigen Dateiinformation, die sich anderenfalls in einem unzugreifbaren Block befinden könnte. Ein unzugreifbarer Block ist ein solcher, der in einer Schreib- oder einer Löschoperation involviert ist. Das Steuergerät 92 nimmt nach der Unterbrechung die ursprüngliche Task wieder auf. Bei einem Ausführungsbeispiel der Erfindung reiht das Hardware-Steuerge­ rät 92 eine vorgegebene Anzahl gleichzeitiger Schreibaufgaben aneinander.
Wiederum bei einem Ausführungsbeispiel überwacht das Steu­ ergerät 92 die Flash-Speicheranordnung 96 nach verfügbaren freien Raum und Heiß/Kalt-Blockzyklus-Fehlabgleichen. Das Hard­ ware-Steuergerät 92 initiiert im Bedarfsfalle auch automatisch eine Umverteilungsoperation bezüglich des Flash-Speichers 96. Eine Umverteilungsoperation gleicht die Zyklusverteilung unter Blöcken der Flash-Speicheranordnung 96 aus. Die Umverteilungs­ operation wird vom Hardware-Steuergerät im Bedarfsfall automa­ tisch initiiert, und zwar nach Art einer vollständigen Hinter­ grundaufgabe (background-task).
Das Hardware-Steuergerät 92 initiiert auch eine Aufräumope­ ration in bezug auf die Flash-Speicheran­ ordnung 96, um für die Speicherung im Flash-Speicher 96 Platz zu schaffen. Die Aufräumoperation wird im Bedarfsfalle vom Hardware-Steuergerät 92 eingeleitet und nach Art einer voll­ ständigen Hintergrund-Task durchgeführt. Die Aufräumoperation wird weiter unten genauer beschrieben werden.
Um dem Dateisystem-Hardwaresteuergerät 92 die Möglichkeit einer kontinuierlichen Überwachung der Flash-Speicheranordnung 96 nach verfügbaren freien Raum und nach Heiß/Kalt-Blockzyklus- Ungleichmäßigkeiten zu geben und um automatisch Aufräum- oder Umverteilungsoperationen einzuleiten, sollte der Flash-Speicher 96 (1) in dem Personal-Computersystem 70 resident sein oder al­ ternativ (2) physikalisch sicher mit dem Personal-Computersy­ stem 70 gekoppelt sein, wenn die Flash-Speicheranordnung 96 entfernbar ist. Bei dem alternativen Ausführungsbeispiel, bei dem die Flash-Speicheranordnung 96 entfernbar ist, weist das Personal-Computersystem 70 eine lichtemittierende Anzeigediode (LED) auf, die zum Leuchten gebracht wird, wenn eine Hinter­ grundaufgabe unter Einbeziehung der Flash-Speicheranordnung 96 abgewickelt wird. Der Benutzer des Personal-Computers 70 wird instruiert, daß die Flash-Speicheranordnung 96 nicht entfernt werden darf, wenn die LED erleuchtet und demzufolge eine Hin­ tergrundaufgabe abgewickelt wird.
Bei einem Ausführungsbeispiel ist das Steuergerät 92 mit einer kleiner Batterie gekoppelt, welche für das Steuergerät 92 den Betriebsstrom liefert, wenn die Stromzufuhr zum Personal- Computersystem 60 unterbrochen ist. Dies hilft sicherzustellen, daß die Datenübertragungen zur Flash-Speicheranordnung 96 vom Puffer-RAM 102 selbst dann beendet werden, wenn das Computersy­ stem vom Betriebsstrom getrennt ist.
Bei einem anderen Ausführungsbeispiel der Erfindung ist je­ doch keine Batterie zur Stützung des Steuergerät 92 vorgesehen.
Es ist einzusehen, daß bei den Ausführungsbeispielen gemäß Fig. 2-4 Lösch-Speicheranordnung 34, 64 und 96 in Ersatz entweder von Festplattenlaufwerken oder Floppy-Disk-Laufwerken verwendet werden können.
In bevorzugten Ausführungsbeispielen kann die Interface- Schaltung zu einer Flash-Hauptspeicheranordnung entweder (1) Eingabe/Ausgabe(I/O)-abgebildet (mapped), (2) Seitenspeicher- abgebildet oder (3) Direktspeicher-abgebildet sein. Fig. 5 zeigt ein I/O-Abbildungsschema für die Interface-Schaltung.
Das in Fig. 5 gezeigte I/O-Abbildungsschema verwendet eine I/O-Ebene 85 mit Serienübertragungs-I/O-Ports, das in die Flash-Speicheranordnung 81 und den lokalen Puffer-RAM 83 abbil­ det. Da das in Fig. 5 gezeigte I/O-Abbildungsschema eine sepa­ rate I/O-Speicherebene 85 anstelle einer Hauptspeicherebene be­ nutzt (Hauptspeicher wird auch als System-RAM bezeichnet) ver­ braucht das I/O-Abbildungsschema gemäß Fig. 5 keinen Hauptspei­ cherraum im Host- bzw. Leitcomputer. Mit anderen Worten, das I/O-Abbildungsschema belegt keinen Raum im System-RAM des Host­ computers.
Die I/O-Geräte, die mit seriellen I/O-Ports 85 gekoppelt sind, können jedoch die direkte Ausführung durch eine CPU nicht unterstützen, wenn diese I/O-Geräte (nicht gezeigt) serielle Geräte anstelle von Direktzugriffsgeräten sind. Diese I/O-Ge­ räte müssen Codedateien zur Ausführung in den System-RAM abla­ den.
Fig. 6 zeigt ein Seitenspeicher-Abbildungsinterface zu ei­ ner Seitenabbildungs-Flash-Speicheranordnung 105. Fig. 6 zeigt die Hauptspeicherebene 89. Die Hauptspeicherebene 89 enthält den Hauptsystem-RAM 99, ein Seitenwechsel-Fenster 97, eine BIOS/ROM-Erweiterung 95, BIOS 93 und Erweiterungssystem-RAM 91.
Bei einem Ausführungsbeispiel der Erfindung ist die Haupt­ speicherebene 89 auf einen Adreßbereich 101 von einem Megabyte beschränkt. Die Beschränkung des Adreßbereichs auf ein Megabyte bedeutet, daß der geschützte Betrieb ("protected mode") einer CPU oder eines Mikroprozessors zum Adressieren von Teilen in der Hauptspeicherebene 89 verwendet wird, die jenseits der 1- Megabyte-Adreßgrenze 101 liegen. Mit anderen Worten, der ge­ schützte Modus einer CPU dient zum Adressieren des Erweite­ rungssystem-RAM-Bereichs 91 der Hauptspeicherebene 89.
Typische Mikroprozessoren früher Generationen und niedriger Leistung wiesen keinen geschützten Betriebsmodus auf. Typische Personal-Computer-Betriebssysteme früher Generationen und nied­ riger Leistung waren auch nicht in der Lage, eine Adressierung im geschützten Betrieb vorzunehmen. Diese Mikroprozessoren niedriger Leistung sowie diese Betriebssysteme konnten daher keine Bereiche oberhalb der 1-Megabyte-Adresse adressieren. Ge­ wisse Mikroprozessoren und Betriebssysteme höherer Leistung und späterer Generation können Adreßbereiche über der 1-Megabyte- Adresse adressieren.
In Fig. 6 besteht die Flash-Speicheranordnung 105 aus schmalen Seiten 107, 109 und 111 und ist mit einem lokalen Puf­ fer-RAM 113 gekoppelt. In alternativer Ausführungsform könnte die Flash-Speicheranordnung 105 aus einer beliebigen Anzahl von Seiten bestehen.
In Fig. 6 ist das Seitenwechsel-Fenster 97 die Seitenspei­ cher-Abbildungsschnittstelle, die der Leit-CPU den direkten Zu­ griff auf die Seiten 107, 109 und 111 der Flash-Speicheranord­ nung 105 ermöglicht. Jede Seite wird gewechselt, um nach Bedarf auf ein anderes Segment der Flash-Speicheranordnung 105 hinzu­ weisen.
Fig. 6 zeigt auch die Seitenbildungs-Firmware 103, die als Erweiterung für einen Komponententreiber dient. Die Seitenbil­ dungs-Firmware 103 enthält Seiten 115, 117, 119 und 121. Bei einem Ausführungsbeispiel der Erfindung dient die Seitenwech­ sel-Fenster-Schnittstelle 97 als Zeiger auf die Seitenbildungs- Firmware 103. Durch Hinweis des Seitenwechsel-Fensters 97 auf die Seitenbildungs-Firmware 103 wird eine Erweiterung auf den größeren Firmware-Speicherraum 103 ermöglicht. Dies gibt dem Computersystem über eine einzige (typischerweise 2 Kilobyte) BIOS/ROM-Erweiterung 95 hinaus zusätzlichen Speicherraum.
Fig. 7 zeigt ein direkt speicherabgebildetes Interface für eine Flash-Hauptspeicheranordnung. In Fig. 7 enthält die Haupt­ speicherebene 135 eine Flash-Speicheranordnungsabbildung 149 (flash memory array map) und einen lokalen Puffer-RAM 147 zu­ sätzlich zum Hauptsystem-RAM 137, einer BIOS/ROM-Erweiterung 139, BIOS 141 und Erweiterungssystem-RAM 145.
Die Hauptspeicherebene 135 gemäß Fig. 7 hat eine 1-Mega­ byte-Adreßbereichsgrenze 143. Flash-Speicheranordnungsabbildung 149 und lokale Puffer-RAM-Abbildung 147 befinden sich über der 1-Megabyte-Adreßbereichsgrenze 143 der Speicherebene 135. Dies bedeutet, daß ein geschützter Betrieb einer CPU oder eines Mi­ kroprozessors zum Adressieren der Flash-Speicheranordnungsab­ bildung 149 und der lokalen Puffer-RAM-Abbildung 147 verwendet wird. Im Gegensatz dazu kann die CPU den Hauptsystem-RAM 137, die BIOS/ROM-Erweiterung 139 und das BIOS 141 der Hauptspei­ cherebene 135 ohne Verwendung des geschützten Modus adressie­ ren.
Die Flash-Speicheranordnungsabbildung 149 bildet die Flash- Speicheranordnung des Personal-Computersystems direkt ab. Daher ist die Flash-Speicheranordnungsabbildung 149 von gleicher Größe wie die Flash-Speicheranordnung des Personal-Comutersy­ stems.
Außerdem wird die lokale Puffer-RAM-Abbildung 147 direkt in den lokalen Puffer-RAM des Personal-Computersystems abgebildet. Daraus folgt, daß die lokale Puffer-RAM-Abbildung (map) 147 die gleiche Größe hat wie der lokale Puffer-RAM des Personal-Com­ putersystems.
Das direkte Speicherabbildungsschema nutzt daher einen großen Teil des Hauptspeicherraums. Außerdem bedingt die direkt Speicherabbildungsmethode eine CPU und ein Betriebssystem, die Bereiche der Hauptspeicherebene oberhalb der 1-Megabyte-Adreß­ bereichsgrenze 143 zu adressieren vermögen.
Das direkte Abbildungsschema ermöglicht eine direkte Code­ ausführung von der gesamten Flash-Speicheranordnung. Anderer­ seits ermöglicht das Seiten-Abbildungsschema eine direkte Code­ ausführung von einem Teil der Flash-Speicheranordnung.
Das direkte Abbildungsschema erfordert eine CPU und ein Be­ triebssytem, die über die 1-Megabyte-Grenze hinaus zu adressie­ ren in der Lage sind. Im Gegensatz dazu arbeitet das Seitenab­ bildungsschema mit einer CPU und einem Betriebssystem, die oberhalb der 1-Megabyte-Grenze nicht mehr adressieren können.
Fig. 8 zeigt eine Dateistruktur 400 der Flash-Speicheran­ ordnung 401. Die Dateistruktur 400 enthält Sektoren und sorgt für eine Plattenemulation. Die Dateistruktur 400 wird auch als Datei-Sektorstruktur bezeichnet.
Bei einer Datei-Sektorstruktur, wie der Dateistruktur 400, werden Code und Daten in Sektoren gespeichert. Jeder Sektor hat eine feste Länge. Bei der Dateistruktur 400 enthält jeder Sek­ tor 512 physikalische Bytes.
Die Sektoren entsprechen Sektoren auf bekannten Festplatten und Disketten eines Personal-Computersystems. Auf herkömmlichen Festplatten gibt es in typischer Ausführung siebzehn Sektoren pro Spur.
Bei dem MS-DOS-Betriebssystem ist ein Cluster die kleinste logisch adressierbare Speichereinheit. Bei einigen herkömmli­ chen Festplatten gibt es vier Sektoren pro Cluster. Bei einer Festplatte und einer HD 3,5-Zoll Diskette enthält ein Cluster einen Sektor.
Bei der Dateistruktur 400 gemäß Fig. 8 ist jeder Cluster eine Zuordnungseinheit ("AU"). Bei der Dateistruktur 400 ist ein Cluster aus einem einzigen Sektor aufgebaut.
Bei einem alternativen Ausführungsbeispiel der Erfindung ist jedes Cluster aus zwei Sektoren aufgebaut. Bei einem wie­ derum alternativen Ausführungsbeispiel kann jeder Cluster aus drei oder mehr Sektoren bestehen.
Bei einem wiederum alternativen Ausführungsbeispiel (weiter unten diskutiert) ist ein logischer Sektor anstelle eines Clu­ sters eine Zuordnungseinheit für die Dateistruktur.
Die Sektor-Dateistruktur 400 der Fig. 8 sorgt für eine Emu­ lation konventioneller Platten-Dateistrukturen und ist ähnlich der Sektor-Dateistruktur auf Festplatten- und Floppy-Disk-Lauf­ werken ausgebildet.
Die in Sektoren unterteilte Dateistruktur 400 ermöglicht eine beliebige Auswahl bzw. Ansteuerung von Löschblöcken zum Aufräumen. Dies wiederum hilft, unnötige Dateibewegungen zu re­ duzieren. Dies trägt außerdem zur Reduktion übermäßigen Zyklus­ operationen bei.
Eine Sektor-Dateistruktur ist jedoch nicht in der Lage, eine vollständige fortlaufende Ausführung anstelle von Code-Da­ teien zu unterstützen. Dagegen ermöglicht ein fortlaufendes Sektor-Seiten-Speicherdateischema die Ausführung benachbarter Abschnitte oder kleiner Codedateien.
Bei einer sektorförmigen Dateistruktur muß das Durchlaufen individueller Blöcke verfolgt werden, um während ei­ ner Aufräumoperation das aktive Management von Heiß/Kalt-Lösch­ block-Umverteilung zu unterstützen. Dieser Durchlauf einzelner Blöcke wird nach den weiter unten erörterten Aufräum/Umord­ nungsregeln eigenständig verwaltet.
Eine Flash-Speicheranordnung 401 weist eine Anzahl von Da­ tenblöcken zur Code- oder Datenspeicherung auf. In der vorlie­ genden Beschreibung soll der Ausdruck "Daten" sowohl ausführ­ bare Codes als auch nicht-ausführbare Daten oder beides be­ zeichnen. Fig. 8 zeigt ein Beispiel für die Dateistruktur der Flash-Speicheranordnung 401 in dem einer Aufräumoperation un­ mittelbar folgenden Zustand.
Blöcke 416, 424 und 428 der Flash-Speicheranordnung 401 sind "zu reservierende" Blöcke, die auch als Reserveblöcke oder reservierte Blöcke bezeichnet werden. Reserveblöcke sind solche Blöcke, welche während einer Aufräumoperation eine temporäre Sicherungsdatei bilden.
Bei einem Ausführungsbeispiel der Erfindung kann eine Auf­ räumoperation ausgelöst werden, wenn (1) die verfügbare Flash- Speicherkapazität unter eine vorgegebene (konfigurierbare) Grenze absinkt; (2) ein Benutzer eine Aufräumoperation aus­ drücklich verlangt, wobei die Aufräumoperation nach einem spe­ ziellen Aufräum-Dienstprogramm, beispielsweise einem speicher­ residenten (TSR-)Programm im RAM des Personal-Computersystems durchgeführt wird; oder (3) ein (konfigurierbares) Zeitinter­ vall verstrichen ist, das ein Triggern der Aufräumoperation be­ wirkt. Eine Aufräumoperation wird auch als Reklamationszyklus bezeichnet.
Eine Aufräumoperation umfaßt zunächst eine Umordnungsopera­ tion. Während einer Umordnungsoperation werden alle gerade ak­ tiven Dateien aus denjenigen Blöcken herausbewegt, die mögli­ cherweise gelöscht werden. Diese gerade aktiven Dateien werden in Reserveblöcke bewegt. Jeder zu löschende Flash-Speicherblock wird als Ganzer zeitgleich gelöscht. Bei der Dateistruktur 400 stehen die Reserveblöcke 416, 424 und 428 zur Umordnung während einer Aufräumoperation zur Verfügung. Die Reserve 416, 424 und 428 dienen daher als temporäre Dateireserve.
Block 408 ist ein freizumachender Block, der nach der näch­ sten Aufräumoperation ein freier Block wird.
Blöcke 404, 414, 420 sind freie Blöcke, die als Blöcke zur Speicherung von Codes und Daten benutzbar sind. Zu dem in Fig. 8 gezeigten Zeitpunkt sind die freien Blöcke 404, 414 und 420 inaktiv. Diese Blöcke sollen für zukünftige Code- und Daten­ speicherung verwendet werden. Zum Zeitpunkt gemäß Fig. 8 werden Daten und Codes für aktive Dateien in aktiven Sektoren der Blöcke 402, 406, 412, 418, 426 und 430 gespeichert. Während ei­ ner weiteren Operation des Personal-Computersystems werden Da­ ten und Codes zusätzlich in Sektoren in den freien Blöcken 404, 414 und 420 abgelegt.
Datenblock 430 ist ein partiell freier Block. Ein Teil 464 des Blocks 430 enthält in aktiven Sektoren gespeicherte Codes oder Daten. Der Abschnitt 462 des Blocks 430 ist zur Code- oder Datenspeicherung frei verfügbar. Während der weiteren Operation des Personal-Computersystems werden Code und Daten auch in den Abschnitt 462 des Blocks 430 gespeichert.
Wenn die Sektoren innerhalb der freien und teilweise freien Blöcke mit Code und Daten gefüllt sind, vermindert sich die Zahl der von Daten oder Codes freibleibenden Blöcke. Wenn die Zahl von freien, nutzbaren Blöcken die erlaubte Zahl von Reser­ veblöcken erreicht, wird eine Aufräumoperation eingeleitet.
Die Sektoren innerhalb der Blöcke 402, 406, 412, 418 und 426 enthalten zusammen mit den Sektoren innerhalb des Ab­ schnitts 464 des Blocks 430 die aktiven und entfernten Dateien und Unterverzeichnisse. Sektoren 403, 405, 409, 411, 413, 415, 417, 423, 425 und 427 innerhalb des Blocks 402 und Sektoren 431, 433, 439, 443, 445 und 453 innerhalb Block 406 sind Bei­ spiele für aktive Daten- und Unterverzeichnissektoren. Blöcke 412, 418, 426 und 430 enthalten auch aktive Datei- und Unter­ verzeichnissektoren. Sektoren 407, 419, 421, 429, 435, 437, 441, 447, 449, 451, 457, 459, 461, 463, 465, 467, 469, 471, 473, 475, 477, 479, 481, 483, 485, 487, 489 und 491 sind die die entfernten Dateien und Unterverzeichnisse enthaltenden Da­ teisektoren.
Wenn eine Aufräumoperation erforderlich wird, identifiziert das Personal-Computersystem die für ein nachfolgendes Neube­ schreiben zu löschenden Blöcke. Mit anderen Worten, bei der Aufräumoperation identifiziert das Personal-Computersystem die Blöcke mit Dateien, welche beim Aufräumen umgeordnet und bewegt werden sollen. Die Identifzierung von beim Aufräumen zu lö­ schenden Blöcken wird von zwei Bedingungen bestimmt. Die erste Bedingung besteht darin, daß der Block mit den wenigstens Zy­ klen ausgewählt wird. Dies reduziert die Zyklus-Ungleichge­ wichte zwischen den heißen und kalten Blöcken.
Wenn es keine starken Ungleichgewichte zwischen den Zyklus­ zählwerten von Blöcken gibt, so ist die zweite Bedingung maß­ geblich. Mit anderen Worten, wo die Zyklusverteilung nicht von dem Personal-Computersystem als Problem gekennzeichnet ist, ist die zweite Bedingung maßgeblich. Die zweite Bedingung besagt, daß die Blöcke mit der höchsten Anzahl von gelöschten Sektoren die zum Löschen auszuwählenden Blöcke sein sollen.
Der Grund für diese zweite Bedingung oder Regel liegt darin, daß die gelöschte Dateien oder gelöschte Unterverzeich­ nisse enthaltenden Sektoren vor einer Löschoperation nicht aus einem Block bewegt zu werden brauchen. Die gelöschten Dateien und gelöschten Unterverzeichnisse enthalten keine zu rettenden Information, so daß die gelöschten Dateien und Unterverzeich­ nisse als Teil der Aufräumoperation einem Löschvorgang unter­ worfen werden können. Mit anderen Worten, es besteht kein Be­ darf an einer Umordnung gelöschter Dateien oder gelöschter Un­ terverzeichnisse. Die zweite Bedingung führt daher zu einer Minimierung von Bewegungen aus aktiven Sektoren vor dem Löschen als Teil einer Aufräumoperation.
Ein im wesentlichen zufälliger Prozeß bestimmt, welche Blöcke die meisten gelöschten Dateisektoren enthalten. Daher bedeutet die zweite Regel oder Bedingung, daß das Aufräumschema zu einer weitgehend zufälligen Blockselektion mit Bezug auf die zu löschenden Blöcke führt. Diese im wesentlichen zufällige Blockselektion hilft, die Aufräumeffizienz zu vergrößern, und minimiert gleichzeitig die gesamten Zyklusdisparitäten.
Die obigen Bedingungen 1 und 2 verwalten die zyklischen Verteilungen innerhalb der Flash-Speicheranordnung 401. Regeln 1 und 2 helfen gemeinsam, die Zyklusdifferenzen zu minimieren. Daraus folgt, daß das Aufräumen der Dateistruktur 400 im we­ sentlichen zufälliger Art ist.
Während der Aufräumoperation tritt eine Kompressionsopera­ tion derart auf, daß die drei Blöcke 406, 418 und 426 in die Reserveblöcke 416 und 424 passen. Während der Kompressionsope­ ration werden zuvor vom Benutzer gelöschte Dateien nicht in die Blöcke 416 und 424 überschrieben. Die Kompressionsoperation wird auch als Verdichtung bezeichnet.
In Fig. 8 sind gelöschte Dateien und Unterverzeichnisse in Sektoren 429, 435, 437, 441, 447, 449, 451, 463, 465, 467, 469, 471, 473, 475, 477, 479, 481, 483, 485, 487, 489 und 491 ent­ halten, die sich in Blöcken 406, 418 und 426 befinden. Diese gelöschten Sektoren werden nicht in die Blöcke 416 und 424 um­ geschrieben. Blöcke 406, 418 und 426 werden als resident in dem nächsten zu komprimierenden Bereich bezeichnet. Die Größe des komprimierbaren Raums für Blöcke 406, 418, 426 ist derjenige Raum, der von den o. g. gelöschten Sektoren 429 . . . 491 einge­ nommen wird.
Nach dem Komprimieren der Blöcke 406, 418 und 426 in die Blöcke 416 und 424 werden die Blöcke 406, 418 und 426 gelöscht. Danach werden die Blöcke 406, 418 und 426 zu Reserveblöcken. Block 428 bleibt ein Reserveblock. Block 408 bleibt ein freier Block.
Die Dateistruktur 400 verwendet eine Cluster-Abbildungsta­ belle 446, welche logische Cluster in physikalische Sektoren der Dateistruktur 400 abbildet. Die Cluster-Abbildungstabelle 446 bildet eine Verbindung zwischen den physikalischen Sektoren der Dateistruktur 400 und der Außenwelt. Die Cluster-Abbil­ dungstabelle 446 läßt die Dateistruktur 400 für die Außenwelt so erscheinen, als wenn die Flash-Speicheranordnung 401 eine herkömmliche Festplatte oder Floppy-Disk mit benachbarten Sek­ toren wäre. Tatsächlich unterscheidet sich die Flash-Speicher­ anordnung 401 natürlich von einer konventionellen Festplatte oder Floppy-Disk im Hinblick auf die Tatsache, daß die Flash- Speicheranordnung 401 nur in Blöcken gelöscht werden kann und daß die Dateistruktur 400 eine Aufräumoperation enthält. Die Cluster-Abbildungstabelle 446 überwindet diese Unterschiede da­ durch, daß sie von dem Personal-Computersytem aufrufbare logi­ sche Sektoren in den physikalischen Sektoren der Flash-Spei­ cheranordnung 401 abbildet.
Die Cluster-Abbildungstabelle 446 befindet sich im Block 422 der Flash-Speicheranordnung 401. Block 422 wird als Clu­ ster-Abbildungsblock oder als Flash-Plattenemulationsblock be­ zeichnet. Block 422 enthält auch ein Cluster-Abbildungstabel­ len-Flag 440, einen Flash-Plattenemulation-(FDE)-Boot-Datensatz 442, eine Flash-Plattenemulation-Konfigurationsblock-Zustands­ tabelle 444 und einen freien Raum 448. Der freie Raum 448 stellt Raum für die Erweiterung der Cluster-Abbildungstabelle 446 zur Verfügung.
Das Cluster-Abbildungstabellen-Flag 440 speichert ein Mu­ ster von Daten, das angibt, welcher Block die Cluster-Abbil­ dungstabelle für die Dateistruktur 400 speichert. Das Cluster- Abbildungstabellen(CMT)-Flag 440 speichert ein spezielles nicht-willkürliches Datenmuster, welches angibt, ob der das CMT-Flag 440 enthaltende Block auch der die Cluster-Abbildungs­ tabelle enthaltende Block ist. Bei einem Ausführungsbeispiel speichert das CMT-Flag 440 beispielsweise eine Folge von sich wiederholenden AAh/55h-Daten. Bei einem anderen Ausführungsbei­ spiel speichert das CMT-Flag 440 eine andere nicht-willkürliche Folge von Daten.
Bei einem Ausführungsbeispiel der Erfindung wird eine zu­ sätzliche Prüfung durchgeführt, um festzustellen, ob ein spe­ zieller Block tatsächlich der Cluster-Abbildungsblock ist. Diese Prüfung wird zur Vermeidung von Fehlern bei der Lokali­ sierung des Cluster-Abbildungsblocks durchgeführt, die anderen­ falls auftreten könnten, wenn ein anderer als der Cluster-Ab­ bildungsblock ein anfängliches Datenmuster enthält, welches mit dem Datenmuster des CMT-Flag 440 übereinstimmt. Die Zusatzprü­ fung geschieht durch Prüfen eines Testsummen-Datenfeldes in dem Flash-Plattenemulation-Boot-Datensatz 442 des Cluster-Abbil­ dungsblocks 422. Bei einem Ausführungsbeispiel ist das Prüfsum­ mendatenfeld im Boot-Datensatz 442 ein spezielles Muster, wel­ ches deshalb gewählt worden ist, weil dieses Datenmuster unge­ ändert bleibt, wenn der FDE-Boot-Datensatz 442 sowohl gültig als auch aktuell ist. Bei einem anderen Ausführungsbeispiel ist das Prüfsummendatenfeld im FDE-Boot-Datensatz 442 ein zugehöri­ ges Zyklus-Redundanzprüf-(CRC)- oder Fehlerkorrekturcode-(ECC)- Datenfeld. Zunächst sieht das Computersystem nach dem CMT-Flag. Als zweites prüft der Computer das Prüfsummendatenfeld. Ein richtiges Ergebnis aus dem Prüfsummendatenfeld in der FDE- Bootaufzeichnung 442 sagt dem Computersystem, daß es tatsäch­ lich den aktuellen und gültigen Cluster-Abbildungsblock für die Flash-Speicheranordnung 401 gefunden hat.
Wie in Fig. 8 gezeigt ist, befindet sich die FDE-Bootauf­ zeichnung 442 im Block 422 nächst dem CMT-Flag 440. Die FDE- Bootaufzeichnung 442 enthält Informationen über den speziellen Dateisystemtyp und die spezielle Dateisystemrevision der Datei­ struktur 400. Der FDE-Boot-Datensatz 442 enthält auch gewisse Dateisystemparameter. Diese Parameter umfassen formatierbare Kapazitätsinformationen, Reserveblockinformationen, anhängende Cluster-Abbildungstabelleninformationen, Informationen, die sich auf eine alte Cluster-Abbildungstabelle beziehen, und In­ formationen über die aktuelle Cluster-Abbildungstabelle.
Die formatierbare Kapazitätsinformation ist die Größe des zur Speicherung von Code und Daten formatierbaren Bereichs der Flash-Speicheranordnung 401. Die Reserveblockinformation iden­ tifiziert, welche Blöcke Reserveblöcke sind. Wie oben gesagt, werden Reserveblöcke während der Aufräum- und Umordnungsopera­ tionen verwendet. Die Anhangcluster-Abbildungstabelleninforma­ tion betrifft den Ort von zusätzlichen Blöcken, die zur Spei­ cherung zusätzlicher Cluster-Abbildungstabelleninformationen verwendet werden. Bei einem Ausführungsbeispiel ist eine An­ hangcluster-Abbildungstabelle in einem oder mehreren zusätzli­ chen Blöcken bei einer Anzahl von Cluster-Abbildungstabellen­ eingaben verwendbar, die eine vorgegebene Kapazität überstei­ gen. Eine alte CMT ist eine Sicherungskopie der aktuellen Clu­ ster-Abbildungstabelle. Die sich auf die alte Cluster-Abbil­ dungstabelle beziehenden Parameterinformationen bezeichnen den Ort innerhalb der Flash-Speicheranordnung 401, wo das alte CMT gespeichert ist. In Fig. 8 ist beispielsweise das alte CMT 445 im Block 410 gespeichert. Die sich auf die Cluster-Abbildungs­ tabelle beziehende Parameterinformation bezeichnet den Ort der Cluster-Abbildungstabelle 446 innerhalb der Flash-Speicheran­ ordnung 401.
FDE-Blockstatus enthält Informationen über diejenigen Blöcke, die aktive Blöcke, Reserveblöcke und Defektblöcke sind. Außerdem enthält die FDE-Block-Statustabelle 444 eine Zyklus­ zählinformation über jeden Block der Dateistruktur 400. Die Block-Statustabelle 444 reserviert den Cluster-Abbildungsblock 422 und Reserveblöcke als unzugreifbar, um eine nachfolgende Aufräumoperation zu ermöglichen. Dies verhindert, daß das Com­ putersystem diese Blöcke zu überschreiben sucht. Defekte Blöcke werden auch vermieden und in der Blockstatustabelle 444 be­ zeichnet. Die FDE-Block-Statustabelle 444 befindet sich im Block 422 nächst dem FDE-Boot-Datensatz 442.
Die Cluster-Abbildungstabelle 446 befindet sich im Block 422 nächst der FDE-Block-Statustabelle 444. Die Cluster-Abbil­ dungstabelle 446 bildet von einem Betriebssystem des Personal- Computersystems gesendete logische Cluster-Adressen in physika­ lische Adressen innerhalb der Flash-Speicheranordnung 401 ab. Cluster-Abbildungstabelle 446 macht es der Flash-Speicheranord­ nung 401 und deren zugehöriger Dateistruktur 400 möglich, dem Personal-Computersystem so wie ein Festplattenantrieb oder ein Floppy-Disk-Antrieb zu erscheinen.
Fig. 9, 10 und 11 zeigen die Organisation und Operation der Cluster-Abbildungstabelle 446. Die Cluster-Abbildungstabelle 446 ist eine Tabelle, welche logische Cluster-Adressen 520 ge­ mäß Fig. 9 mit den in Spalte 521 aufgeführten physikalischen Adressen korreliert. Diese Korrelation wird auch als Assozia­ tivabbildung bezeichnet.
Die in der Liste 520 gefundenen logischen Cluster-Adressen sind diejenigen logischen Adressen, welche von einem Platten- Betriebssystem eines Personal-Computersystems an ein Code oder Daten für das Personal-Computesystem speicherndes Festplatten- oder Floppy-Disk-Laufwerk gesendet würden.
Bei einem bekannten Computersystem sind logische Cluster- Adressen die Cluster-Adressen eines Festplatten- oder Floppy- Disk-Laufwerks. Jedes Cluster besteht aus mindestens einem Sek­ tor, der die Spuren herkömmlicher Festplatten oder Floppy-Disks bildet. Die Zahl von Sektoren pro Cluster hängt von der Größe oder Konfiguration des bekannten Festplatten- oder Floppy-Disk- Laufwerks ab.
Die Flash-Speicheranordnung 401 ist natürlich keine konven­ tionelle Festplatte oder Floppy-Disk. Die Flash-Speicheranord­ nung 401 besteht aus dem Flash-Speicher, der sich nur in rela­ tiv großen Blöcken löschen läßt. Ohne vorhergehendes Löschen kann die Flash-Speicheranordnung 401 nicht an einzelnen Bitzel­ len von einer logischen Null in eine logische Eins überschrie­ ben werden.
Bei dem in Fig. 8 gezeigten Beispiel hat die Dateistruktur 400 einen Sektor pro Cluster. Bei der Dateistruktur 400 können sequentielle Daten enthaltende Sektoren über verschiedene Blöcke gestreut werden. So können beispielsweise die Anfangs­ zeilen des Codes im Sektor 409 des Blocks 402 der Flash-Spei­ cheranordnung 401 der Fig. 8 und die Endzeilen desselben Codes im Sektor 445 des Blocks 406 angeordnet sein. Bei herkömmlichen Festplatten- oder Floppy-Disk-Antrieben können Datenbits ohne vorhergehende Löschzyklen überschrieben werden. Im Gegensatz dazu läßt sich ohne vorhergehendes Löschen eine Einzelbitzelle bei dem Flash-Speicher 401 in Fig. 8 nicht von einer logischen Null in eine logische Eins überschreiben. Daher überschreiben bei der Flash-Speicheranordnung 401 neue Daten keine alten Da­ ten, sofern nicht eine vorhergehende Löschoperation durchge­ führt ist (Ausnahme ist das Überschreiben eines Einzelbits von einer logischen Eins in eine logische Null). Stattdessen wird ein alter Sektor als schmutziger Sektor identifiziert. Dies zeigt an, daß der Sektor nicht weiter benutzte Daten enthält. Der schmutzige Sektor wird dann während einer Aufräumoperation gelöscht. Mit anderen Worten, ein schmutziger Sektor enthält Daten oder einen Code, die bei der nächsten Aufräumoperation gelöscht werden sollen. So ist beispielsweise der Sektor 407 mit der Dateistruktur 400 in Fig. 8 ein schmutziger Sektor mit alten unerwünschten Codes oder Daten.
Anstelle des Überschreibens neuer Daten oder Codes in einen schmutzigen Sektor 407 kann der neue Code oder neue Daten ein­ fach in verfügbaren Raum eines freien Blocks oder eines Reser­ veblocks innerhalb der Flash-Speicheranordnung 401 geschrieben werden. So können neue Daten oder Codes in einen der verfügba­ ren Sektoren des Reserveblocks 416 geschrieben werden.
Trotz der Unterschiede zwischen den Charakteristiken der Flash-Speicheranordnung 401 und eines konventionellen Festplat­ ten- oder Floppy-Disk-Antriebs läßt die Abbildungstabelle 446 die Flash-Speicheranordnung 401 der Fig. 8 für das Betriebssy­ stem des Personal-Computersystems so erscheinen, als wäre die Flash-Speicheranordnung 401 ein Festplatten- oder Floppy-Disk- Antrieb. Die Cluster-Abbildungstabelle 446 bewirkt dies da­ durch, daß sie Cluster-Logikadressen in physikalische Sektoren innerhalb der Flash-Speicheranordnung 401 abbildet.
Die Cluster-Abbildungstabelle 446 ist eine aus einer Viel­ zahl von Verknüpfungs- bzw. Verbindungslisteneinträgen beste­ hende Tabelle. Die Tatsache, daß die Cluster-Abbildungstabelle 446 Verbindungslisten enthält, ermöglicht ein Hinzufügen über die Zeit.
Die in Fig. 9 gezeigte Cluster-Abbildungstabelle 446 bildet in Liste 420 gefundene logische Adressen in in der Spalte 521 gefundene physikalische Adressen ab. Spalte 522 enthält Zeiger für jeden der Tabelleneinträge. Ein Null-Muster von allen logi­ schen Einsen, gespeichert in einem speziellen Eintrag der Spalte 522 zeigt, daß der besondere Eintrag das Ende einer Ver­ bindungsliste ist. Ein Nullmuster aller logischen Einsen wird als das F-Null-(Hexadezimal)-Muster von Daten bezeichnet.
Bei dem Ausführungsbeispiel der Cluster-Abbildungstabelle 446 in Fig. 9 gibt es nur einen Sektor pro Cluster. CMT 446 ar­ beitet wie folgt. Eintrag 551 in der Cluster-Abbildungstabelle 446 bildet die logische Cluster-Adresse Null in der physikali­ schen Sektoradresse 403 der Flash-Speicheranordnung 401. Zur Erleichterung des Verständnisses sind die in Spalte 522 der Fig. 9 aufgeführten physikalischen Adressen die gleichen wie die Bezugszeichen für die Sektoren der Dateistruktur 400 in Fig. 8. Daher entspricht die physikalische Adresse 403 des Ein­ trags 551 dem Sektor 403 der Dateistruktur 400 in Fig. 8. Für den Eintrag 551 in Fig. 9 enthält der Zeiger innerhalb Spalte 522 das F-Null-Muster von Daten. Dies zeigt an, daß es keine weiteren Verbindungslisteneinträge für die logische Adresse Null gibt. Dies zeigt, daß Sektor 403 der Struktur 400 kein schmutziger Sektor ist. Dies bedeutet, daß der Sektor an der physikalischen Adresse 403 tatsächlich der logischen Cluster- Adresse Null entspricht.
In ähnlicher Weise bildet der Eintrag 553 der Cluster-Ab­ bildungstabelle 446 die Cluster-Logikadresse Eins in die physi­ kalische Dateistrukturadresse 405 ab. Die physikalische Adresse 405 entspricht dem Sektor 405 in Fig. 8. Eintrag 553 enthält das F-Null-Muster von Daten in der nächsten logischen Adresse oder Null-Spalte 522. Dies zeigt an, daß es keinen weiteren Verbindungslisteneintrag gibt und die physikalische Adresse 405 daher der Cluster-Logikadresse Eins entspricht.
Eintrag 555 der Cluster-Abbildungstabelle 446 ist ein er­ ster Eintrag in einer Verbindungsliste. Eintrag 555 bildet Sek­ tor-Logikadresse 2 in der physikalischen Adresse 407 ab. Sektor 407 der Flash-Speicheranordnung 401 ist an der physikalischen Adresse 407. Sektor 407 der Flash-Speicheranordnung 401 ist ein schmutziger Sektor. Dies bedeutet, daß Sektor 407 entweder (1) bei der nächsten Aufräumoperation an dem Block 402 zu löschende Informationen enthält oder (2) ein schlechter Sektor ist, der ein physikalisches Problem hat und nicht mehr zur Datenspeiche­ rung benutzt werden soll. Ein Beispiel eines schlechten Sektors wäre ein solcher, in dem defekte Floating-Gate-Zellen sind und der daher Daten nicht fehlerfrei speichern kann.
Die nächste logische Adresse oder ein Null-Eintrag in Spalte 522 für Eintrag 555 zeigt auf Adresse S. Die Adresse S ist eine neu abgebildete (d. h. angehängte) Logikadresse, auf die vom Zeiger für Eintrag 555 gezeigt wird.
In Fig. 9 stellt der Buchstabe S auch die Anzahl von logi­ schen Sektoren pro Partition der Flash-Speicheranordnung 401 dar. S ist auch gleich der Anzahl von logischen Sektoren pro Partition einer hypothetischen Festplatte oder Floppy-Disk, welche von der Dateistruktur 400 emuliert wird.
Die logische Adresse S entspricht dem Eintrag 563 in der Cluster-Abbildungstabelle 446. Für Eingabe 563 ist die physika­ lische Adresse 421 in Spalte 521 gespeichert. Die physikalische Adresse 421 der Flash-Speicheranordnung 401 entspricht daher der neu abgebildeten logischen Adresse S. Sektor 421 der Flash- Speicheranordnung 401 wurde an der physikalischen Adresse 421 gefunden. Sektor 421 ist ein schmutziger Sektor. Die nächste Logikadreßeingabe für Eintrag 563 der Cluster-Abbildungstabelle 446 enthält die Adresse S + 1.
Eintrag 565 der Cluster-Abbildungstabelle 446 bildet die neu abgebildete Logikadresse S + 1 auf die physikalische Adresse 449 ab. Die physikalische Adresse 449 entspricht dem Sektor 449 der Flash-Speicheranordnung 401. Sektor 449 der Fig. 8 ist ein schmutziger Sektor. Die nächster Logikadreßeingabe für Eintrag 565 ist die logische Cluster-Adresse S + 2.
Eintrag 567 der Cluster-Abbildungstabelle 446 bildet die logische, angehängte Cluster-Adresse S + 2 auf die physikalische Adresse 443 ab. Die physikalische Adresse 443 in Spalte 521 der Cluster-Abbildungstabelle 446 entspricht dem in Fig. 8 gezeig­ ten Sektor 443. Sektor 443 wird im Block 406 der Dateistruktur 400 gefunden. Sektor 443 ist kein schmutziger Sektor. Stattdes­ sen ist Sektor 443 ein aktiver guter Sektor. Die nächste logi­ sche Adresse oder Nulleintrag für Eintrag 567 der Fig. 9 ist der F-Null-(Hexadezimal)-Eintrag. Dies bezeichnet das Ende der Verbindungsliste, welche mit der logischen Cluster-Adresse 2 beginnt.
Fig. 10 zeigt die Verbindungsliste, die von den Einträgen 555, 563, 565 und 567 der Cluster-Abbildungstabelle 446 gebil­ det wird. Eintrag 555 bildet die logische Cluster-Adresse 2 auf die physikalische Sektor-Adresse 407 ab. Der "nächste" Zeiger­ eintrag von 555 weist auf Eintrag 563 hin. Der "nächste" Zeiger des Eintrags 563 weist auf Eintrag 565 hin. Der "nächste" Zei­ ger des Eintrags 565 weist auf Eintrag 567 und der Zeiger für Eintrag 567 enthält das F-Null-(Hexadezimal)-Muster von Daten. Dieses Null-Muster von Daten zeigt an, daß Eintrag 567 der letzte Eintrag in der Verbindungslistenkette ist.
Wie oben unter Bezugnahme auf Fig. 9 gesagt, sind Sektoren 407, 421 und 449 schmutzige Sektoren. Sektor 443 ist ein akti­ ver, "sauberer" oder guter Sektor. Aus diesem Grunde endet die Verbindungslistenkette mit dem Sektor 443. Mit anderen Worten, die Verbindungslistenkette endet mit dem ersten aktiven guten Sektor innerhalb der Verbindungslistenkette. Das Endergebnis der Verbindungsliste besteht gemäß Fig. 10 darin, daß die Clu­ ster-Abbildungstabelle 446 die logische Cluster-Adresse 2 auf die physikalische Sektor-Adresse 443 abbildet, wobei der physi­ kalische Sektor 443 ein aktiver "sauberer" Sektor ist.
Ein Verbindungsglied wird den Verbindunglistenketten inner­ halb der Cluster-Abbildungstabelle 446 jedesmal dann hinzuge­ fügt, wenn ein schmutziger Sektor erzeugt oder entfernt wird. Mit anderen Worten, jede Verbindungslistenkette innerhalb der Cluster-Abbildungstabelle 446 stellt eine historische Aufzeich­ nung von der Erzeugung und Entfernung von schmutzigen Sektoren dar.
Bei der aus den Einträgen 555, 563, 565 und 567 gebildeten Verbindungslistenkette war an einem Zeitpunkt 407 ein gültige Daten oder Codes enthaltender aktiver, sauberer Sektor. An die­ sem früheren Zeitpunkt wurde die logische Adresse 2 vom CMT 446 auf die physikalische Adresse 407 abgebildet, und der Zeiger für Eintrag 555 enthielt das F-Null-Muster von Daten. An einem gewissen Punkt während des Betriebs des Personal-Computersy­ stems wurde Sektor 407 jedoch zu einem schmutzigen Sektor. So­ bald dies geschah, wurde der Zeiger für den Eintrag 555 von dem F-Null-Muster von durchgehend Einsen in ein neues Muster geän­ dert, das die angehängte logische Adresse S in Binärform dar­ stellt. Diese Änderung vom F-Null-Muster auf die Adresse S ge­ schieht durch überschreiben (ohne vorhergehendes Löschen), da bei einem Flash-Speicher 401 jede Einzelbitzelle von einer lo­ gischen Eins in eine logische Null überschrieben werden kann. Das F-Null-Muster (bestehend durchgehend aus logischen Einsen) wurde in die Adresse S durch Überschreiben eines oder mehrerer Bits von einer logischen Eins in eine logische Null geändert, um die Adresse S zu erzeugen.
Eintrag 563 wurde sodann in der Cluster-Abbildungstabelle 446 als ein neu-abgebildeter (d. h. angehängter) Eintrag gespei­ chert. Die neu-abgebildete Adresse S wurde in der Cluster-Ab­ bildungstabelle 446 auf die physikalische Adresse 421 abgebil­ det. Die physikalische Adresse 421 entspricht dem Sektor 421. Zu einem vorhergehenden Zeitpunkt war Sektor 421 kein schmutzi­ ger Sektor. Stattdessen war Sektor 421 ein guter Sektor. Zu diesem früheren Zeitpunkt enthielt der Zeiger für Eintrag 563 das F-Null-Muster von Daten. Zu diesem früheren Zeitpunkt bil­ dete daher die Cluster-Abbildungstabelle 446 die logische Adresse 2 auf den Sektor 421 ab.
Mit der Zeit wurde Sektor 421 zu einem schmutzigen Sektor. Daher mußte ein anderes Verbindungsglied der Verbindungsliste für die logische Cluster-Adresse 2 hinzugefügt werden. Daher wurde der Zeiger für Eintrag 563 von dem Null-Muster von Daten in die neu abgebildete Adresse S + 1 geändert.
Eintrag 565 wurde sodann in der Cluster-Abbildungstabelle 446 gespeichert, um die angehängte Adresse S + 1 auf die physika­ lische Adresse 449 abzubilden. Die physikalische Adresse 449 entspricht dem Sektor 449. Der Zeiger für Eintrag 565 enthielt zu diesem Zeitpunkt das F-Null-Datenmuster. Sektor 449 war zu diesem Zeitpunkt ein guter Sektor und kein schmutziger Sektor. Daher bildete zu diesem Zeitpunkt die Cluster-Tabelle 446 die logische Adresse 2 auf die physikalische Adresse 449 ab.
Danach wurde zu einem späteren Zeitpunkt Sektor 449 zu ei­ nem schmutzigen Sektor. Nachdem dies geschah, wurde der Zeiger für Eintrag 565 von dem F-Null-Muster auf die Adresse S + 2 über­ schrieben. Eintrag 567 wurde danach in der Cluster-Abbildungs­ tabelle 446 gespeichert. Eintrag 567 enthielt das F-Null-Daten­ muster in der "nächste logische Adresse oder Null"-Position 522. Dadurch wurde die Sektor-Abbildungstabelle 446 in der in Fig. 9 gezeigten Weise belassen.
Wie oben gesagt, ist die Logikadresse S - 1 die letzte logi­ sche Cluster-Adresse. Die neu abgebildeten (d. h. angehängten) Adressen S-X in Fig. 9 sind alles Adressen, die zur Bildung von Verbindungslisten verwendet werden. Eintrag 571 bildet die letzte logische Adresse X auf die physikalische Adresse 443 ab und enthält ein F-Null-Datenmuster für seinen Zeiger.
Im folgenden wird auf Fig. 9 Bezug genommen. Cluster-Abbil­ dungstabelle 446 enthält andere Einträge. Cluster-Eintrag 446 bildet die logische Cluster-Adresse S - 1 auf die physikalische Adresse 453 ab. Der Zeiger für Eintrag 561 ist das F-Null-Da­ tenmuster. Für Eintrag 571 hat die angehängte Adresse X einen Zeiger mit einem F-Null-Datenmuster.
Fig. 11 zeigt, wie die Cluster-Abbildungstabelle 446 arbei­ tet. Das Platten-Betriebssystem sieht die logischen Cluster- Adressen 520 in der Cluster-Abbildungstabelle 446 gespeichert. Die Cluster-Abbildungstabelle 446 bildet jene logischen Adres­ sen 520 in die Flash-Sektoren innerhalb der Flash-Speicheran­ ordnung 401 ab. Wie oben gesagt, gibt es bei der Dateistruktur 400 einen Sektor pro Cluster.
Wie in Fig. 11 gezeigt, bildet die Cluster-Abbildungsta­ belle 446 Cluster 0 bis S - 1 ab. Der Beginn der Cluster an der logischen Adresse Null und das Vorhandensein von S Clustern pro Partition sind der Grund dafür, daß Cluster S - 1 das letzte Clu­ ster ist.
Das logische Cluster 0 wird in den Flash-Speichersektor 403 abgebildet. Das logische Cluster 1 wird in den Sektor 405 der Flash-Speicheranordnung 401 abgebildet. Flash-Sektoren 403 und 405 befinden sich im Flash-Block 402 der Flash-Speicheranord­ nung 401. Flash-Sektoren 403 und 405 sind beides aktive, gute Sektoren.
Wie in Fig. 11 gezeigt ist, war die logische Clusteradresse 2 ursprünglich von der Cluster-Abbildungstabelle 446 im Flash- Sektor 407 der Flash-Speicheranordnung 401 abgebildet. Flash- Sektor 407 wurde dann zu einem schmutzigen Sektor. Der schmut­ zige Sektor 407 befindet sich im Flash-Block 402.
Danach wurden Verbindungsglieder hinzugefügt, um eine Ver­ bindungsliste innerhalb der Cluster-Abbildungstabelle 446 für Cluster 2 zu erzeugen. Das Resultat dieser Verbindungsliste be­ steht darin, daß das logische Cluster 2 jetzt in den Flash-Sek­ tor 443 innerhalb des Flash-Blocks 446 abgebildet ist.
Es kann einige Verbindungsglieder in der Verbindungsliste geben; jedoch besteht das Endresultat darin, daß Cluster 2 auf Flash-Sektor 443 abgebildet ist, obwohl Cluster 2 ursprünglich auf Flash-Sektor 407 abgebildet war.
Bei einem Ausführungsbeispiel können bis zu zwei Gigabytes des Speichers 401 adressiert werden. Bei einem alternativen Ausführungsbeispiel kann der maximal adressierbare Speicherraum größer oder kleiner als 2 Gigabytes sein.
Fig. 9 soll ein Beispiel für eine Cluster-Abbildungstabelle 446 zeigen; andere Modifikationen sind möglich. Außerdem zeigt die Cluster-Abbildungstabelle 446 nur einen Teil der logischen Clusteradressen, angehängten Adressen und Einträge. Zahlreiche Einträge und logische Adressen liegen zwischen den Adressen 2 und Adressen S - 1 und auch zwischen den angehängten Adressen S + 2 und X.
Bei einem alternativen Ausführungsbeispiel der Erfindung hat die Dateistruktur 400 zwei (oder mehr) Sektoren pro Clu­ ster. Ein Cluster ist immer noch die Zuordnungseinheit. Bei ei­ ner Abwandlung dieses Ausführungsbeispiels werden die physika­ lischen Sektoren für ein spezielles logisches Cluster in die Flash-Speicheranordnung derart geschrieben, daß diese physika­ lischen Sektoren innerhalb der Flash-Speicheranordnung 401 ein­ ander folgen. Mit anderen Worten, die physikalischen Sektoren pro Cluster sind physikalisch zusammengruppiert und benachbart. Die Cluster-Abbildungstabelle für dieses alternative Ausfüh­ rungsbeispiel bildet zwei (oder mehr) angrenzende physikalische Sektoren pro logischer Cluster-Adresse ab.
Bei einem anderen Ausführungsbeispiel gibt es zwei (oder mehr) Sektoren pro Cluster. Jedoch können die physikalischen Sektoren für ein spezielles Cluster über die Daten- oder Code- Zonen der Flash-Speicheranordnung 401 verstreut sein. Mit ande­ ren Worten, bei diesem Ausführungsbeispiel sind die physikali­ schen Sektoren pro Cluster nicht zusammengruppiert und brauchen nicht benachbart zu sein. Die Cluster-Abbildungstabelle bei diesem alternativen Ausführungsbeispiel bildet zwei (oder mehr) physikalische Sektoren pro logischer Cluster-Adresse ab.
Bei wiederum einem alternat 35131 00070 552 001000280000000200012000285913502000040 0002004143072 00004 35012iven Ausführungsbeispiel der Er­ findung umfaßt die Dateistruktur 400 eine Sektor-Abbildungsta­ belle, welche die Cluster-Abbildungstabelle 446 ersetzt. Diese Sektor-Abbildungstabelle bildet logische Adressen von Sektoren auf physikalische Adressen von Sektoren ab. Bei diesem alterna­ tiven Ausführungsbeispiel ist ein logischer Sektor die Zuord­ nungseinheit. Die Sektor-Abbildungstabelle arbeitet anderer­ seits in ähnlicher Weise wie die CMT 446. Bei diesem alternati­ ven Ausführungsbeispiel befindet sich die Sektor-Abbildungsta­ belle in einem Sektor-Abbildungsblock, beispielsweise im Block 422. CMT-Flag 440 und CMT-Raum 448 sind bei diesem Ausführungs­ beispiel mit Sektor-Abbildungstabellenraum bezeichnet.
Bei einem Ausführungsbeispiel der Erfindung wird eine Kopie einer Cluster-Abbildungstabelle 446 als Sicherungskopie in ei­ nem freien oder reservierten Sektor innerhalb der Dateistruktur 400 der Fig. 8 gespeichert. Bei einem Ausführungsbeispiel der Erfindung werden Sicherungskopien der Cluster-Abbildungstabelle 446 periodisch angefertigt. Bei einem Ausführungsbeispiel der Erfindung werden Sicherungskopien der Cluster-Abbildungstabelle 446 nach jeder Aufräumoperation angefertigt.
Bei einem Ausführungsbeispiel ist die Sicherungskopie der Cluster-Abbildungstabelle 446 eine komprimierte Version der Cluster-Abbildungstabelle 446. In Fig. 12 stellt die Tabelle 650 eine komprimierte Version der Cluster-Abbildungstabelle 446 dar. Tabelle 650 enthält nur die Cluster-Logikadressen in Spalte 520 und die physikalischen Adressen in Spalte 521. Die Zeiger für jeden Eintrag und die angehängten (d. h. neu-abgebil­ deten) Adressen sind nicht enthalten.
Tabelle 650 weist die logischen Adressen 0 bis S - 1 (wobei S die Anzahl von Sektoren pro Partition darstellt) und nicht die angehängten Adressen auf. Jede in Spalte 621 gespeicherte Adresse ist eine physikalische Adresse eines der entsprechenden Cluster-Logikadresse zugeordneten aktiven, guten Sektors. Bei Tabelle 650 sind keine Verbindungslistenketten gespeichert. Einzig sind die logischen Cluster-Adreßanfänge und die physika­ lischen Adreßenden der Verbindunglistenketten und auch die Ein­ träge ohne Verbindungslisten gespeichert.
Eintrag 651 bildet die logische Cluster-Adresse 0 auf die physikalische Adresse 403 ab. Eintrag 653 bildet die Cluster- Logikadresse 1 auf der physikalischen Adresse 405 ab. Eintrag 655 bildet die Logikadresse 2 auf die physikalische Adresse 443 ab.
Durch Vergleich der Fig. 9 und 12 ist zu erkennen, daß die Kombination von Einträgen 555, 563, 565 und 567 schließlich die Cluster-Logikadresse auf die physikalische Adresse 443 ab­ bildet. Diese vier Einträge 555, 563, 565 und 567 enthalten eine Verbindungslistenkette. Die komprimierte Tabelle 650 spei­ chert nur den Beginn und das Ende dieser Verbindungslisten­ kette. Mit anderen Worten, Eintrag 655 speichert nur die Bezie­ hung zwischen der Cluster-Logikadresse 2 und der physikalischen Adresse 443.
Schließlich bildet der Eintrag 661 der Tabelle 650 die Lo­ gikadresse S - 1 auf die physikalische Adresse 453 ab.
Bei einem Ausführungsbeispiel wird die Cluster-Abbildungs­ tabelle 446 oder eine komprimierte Version der Cluster-Abbil­ dungstabelle 446 im RAM des Personal-Computersystems gespei­ chert.
Für das Computersystem sieht die Dateistruktur 400 der Fig. 8 wie ein Festplattenlaufwerk oder ein Floppy-Disk-Laufwerk aus. Dateistruktur 400 kann mit einem Boot-Datensatz, einer Da­ teizuordnungstabelle, Wurzelverzeichniseinträgen und einem Da­ tenbereich mit den gleichen logischen Adressen geladen werden, wie die Bereiche bei Speicherung auf einem Plattenlaufwerk. Mit anderen Worten, Flash-Speicheranordnung 401 in Fig. 8 kann bei­ spielsweise in Verbindung mit einem konventionellen MS-DOS-Be­ triebssystem verwendet werden, wie es unter Bezugnahme auf Fig. 1 beschrieben worden ist.
Bei einem Ausführungsbeispiel unterstützt die Flash-Plat­ tenemulations-Dateistruktur 400 alle existierenden Versionen von (1) DOS, (2) OS/2 (d. h. Betriebssystem/2 von IBM) und (3) UNIX-Betriebssysteme. Die Flash-Diskemulations-Dateistruktur 400 hängt nicht von einer speziellen Version von DOS, OS/2, UNIX, BIOS oder anderen plattenresidenten Datenstrukturen ab. Dienstleistungsprogramme auf niedriger Ebene für DOS und OS/2 werden ebenfalls unterstützt von der Dateistruktur 400.
Bei einem Ausführungsbeispiel werden direkte Plattenzu­ griffe für Lese- und Schreiboperationen durch die Unterbrechun­ gen 25H und 26H und die Standard-DOS-Treiberschnittstelle von der Dateistruktur 400 unterstützt.
Bei einem Ausführungsbeispiel werden alle von der BIOS-Un­ terbrechung 13H definierten Funktionen von der Flash-Diskemula­ tions-Treiberstruktur 400 unterstützt.
Bei einem Ausführungsbeispiel wird die Flash-Speicheranord­ nung 401 in Verbindung mit einem MS-DOS-Betriebssystem verwen­ det. Unter Bezugnahme sowohl auf Fig. 1 als auch Fig. 8 wird die Dateistruktur 400 in zwei logische Bereiche unterteilt: einen Systembereich 4 und einen Datenbereich 9. Der Systembe­ reich enthält einen Boot-Datensatz 3, eine Dateizuordnungsta­ belle 5 und einen Wurzelverzeichnisbereich 7, der die Wurzel­ verzeichniseinträge enthält. Der Datenbereich enthält Dateien, die zur Speicherung von Anwendungsprogrammen, Daten und Unter­ verzeichnisinformationen verwendet werden. Die Boot-Datensatz 3, die Daten-Zuordnungstabelle 5 und der Wurzelverzeichnisein­ trag 7 belegen den Beginn der logischen Cluster der Dateistruk­ tur 400, beginnend mit dem logischen Cluster 0.
Die in Fig. 1 gezeigte Organisation ist eine logische Adreßorganisation. Die tatsächlichen physikalischen Sektoren der Flash-Speicheranordnung 401, welche den Boot-Datensatz 3, die Datei-Zuordnungstabelle 5, die Wurzelverzeichniseingabe 7 und Daten 9 speichern, werden von der Cluster-Abbildungstabelle 446 bestimmt.
Der Boot-Datensatz 3 enthält ein Bootstrap-Ladeprogramm zum Laden des Betriebssystems. Die Bootaufzeichnung 3 enthält auch Informationen bezüglich des ASCII-Namens und des formatierenden DOS, die Anzahl von Bytes pro Sektor, die Anzahl von Sektoren pro Cluster, die Anzahl von Sektoren im Boot-Datensatz, die An­ zahl von Kopien der Dateizuordnungstabelle, die Anzahl der Wur­ zelverzeichniseinträge, die Anzahl von Sektoren pro Partition, die Speicher (d. h. emulierte Platte)-Typnummer, die Anzahl von Sektoren pro Zuordnungstabelle, die Anzahl von reservierten oder versteckten Sektoren und die Identifikationsnummer für die Flash-Speicheranordnung 401 und die erweiterte Bootsektorsigna­ tur, eine Volumenidentifikation und eine Volumentabelle.
Das Wurzelverzeichnis 7 ist eine Tabelle von 32-Byte-Ein­ trägen, von denen jeder gewisse Attribute der Datei bezeichnet. Jeder Verzeichniseintrag, der zum Verzeichnis 7 gehört, enthält einen Dateinamen, Dateierweiterung, Attributflags, Zeit- und Datumsangaben für die Datei, eine Startclusternummer für die die Datei bildenden Cluster und die Dateigröße.
Jede Datei auf der Platte ist aus einem oder mehreren Clu­ stern aufgebaut. Die Datei-Zuordnungstabelle 5 enthält eine Aufzeichnung in Form einer Kette zur Beschreibung derjenigen Art, in der die die Datei bildenden Cluster miteinander ver­ knüpft sind. Bei einem Ausführungsbeispiel enthält die FAT 5 eine Liste von 2-Byte-Einträgen, einer für jedes Cluster. Bei alternativen Ausführungsbeispielen sind die FAT-Einträge länger oder kürzer als zwei Bytes. Der Verzeichniseintrag für eine Da­ tei enthält die Nummer des Startclusters für die Datei, und das Betriebssystem verwendet diese Startclusternummer für den Zu­ griff auf die Datei-Zuordnungstabelle. Jeder FAT-Eintrag ist ein Zeiger auf das nächste Cluster der Datei. Daher enthält der aus dem ersten Zugriff gewonnene FAT-Eintrag die Clusternummer des zur Datei gehörigen nächsten Clusters. Die Betriebssysteme verwenden die nächste Clusternummer zum Zugriff auf die FAT, um eine andere Clusternummer zu gewinnen. Dieser Prozeß wird so­ lange fortgesetzt, bis eine spezielle Marke in der FAT 5 er­ reicht ist.
Bei MS-DOS ist die Logikstruktur für die Dateien der Da­ teistruktur 400 baumförmig. Einträge in dem Wurzelverzeichnis können Hinweise oder Zeiger auf Unterverzeichnisse sein. Die Unterverzeichnisse können eingeschlossen sein.
Die Codes und Daten speichernden Dateien werden in physika­ lischen Sektoren über die Flash-Speicheranordnung 401 der Fig. 8 verstreut. Auch hier dient die Cluster-Abbildungstabelle 446 zur Abbildung der Logikadressen für die Dateien auf die physi­ kalischen Adressen der diese Dateien speichernden Sektoren.
Bei einem alternativen Ausführungsbeispiel der Erfindung weist die Dateistruktur 400 gemäß Fig. 8 zusätzlich einen Kopf­ teil auf. Der Kopfteil befindet sich beispielsweise im Block 414, der dann nicht länger ein freier Block ist.
Der Kopfteil ist eine Datei, welche Informationen über die Flash-Speicheranordnung 401 beinhaltet. Bei einem Ausführungs­ beispiel enthält der Kopfteil Informationen bezüglich der un­ formatierten Größe der gesamten Flash-Speicheranordnung 401, der formatierten Größe der Flash-Speicheranordnung 401, der Ge­ samtzahl von Blöcken innerhalb der Flash-Speicheranordnung 401 und detaillierte Geräteinformationen bezüglich der Flash-Spei­ cheranordnung 401. Bei einem Ausführungsbeispiel der Erfindung umfassen die im Kopfteil gespeicherten detaillierten Gerätein­ formationen Lösch- und Schreibspannungen; Lösch- und Schreibbe­ fehle; Lösch- und Schreibalgorithmen; maximale individuelle und Gesamtchip-Zyklusspezifikationen; und Lese-Schreib- und Löschleistungscharakteristiken der Flash-Speicheranordnung 401.
Bei einem alternativen Ausführungsbeispiel weist der Kopf­ teil zusätzlich Informationen bezüglich der Lage eines anderen Kopfteils oder mehrerer anderer Kopfteile auf.
Bei diesem alternativen Ausführungsbeispiel, bei der der Kopfteil in einem der Blöcke der Flash-Speicheranordnung 401 gespeichert ist, beispielsweise im Block 414, muß der Kopfteil periodisch regeneriert werden. Das Regenerieren des Kopfteils beinhaltet ein periodisches vollständiges Löschen und Neu- Schreiben des Kopfteils. Dieses periodische Regenerieren des Kopfteils ist notwendig, da letzterer typischerweise ein kalter Block im Vergleich zu anderen Blöcken der Flash-Speicheranord­ nung 401 ist. Mit anderen Worten, der Kopfteil befindet sich in einem Block, der weniger häufig durchlaufen wird als das gros der anderen Blöcke der Flash-Speicheranordnung 401. Daher muß der Kopfteil periodisch regeneriert werden.
Um festzustellen, ob der Kopfteil regeneriert werden muß, wird die Zahl von Lösch/Programmier-Zyklen der dem Kopfteil be­ nachbarten Blöcke und des Kopfteils verfolgt. Ein Zyklus-Zähl­ parameter wird im Haupt-Kopfteilblock gespeichert. Die Zyklus­ zählung stellt die Anzahl von Lösch/Schreib-Zyklen des Kopf­ teils und der dem Kopfteil benachbarten Blöcke dar.
Bei diesem alternativen Ausführungsbeispiel wird eine al­ ternative (d. h. Sicherungs-)Kopie des Kopfteils in einem ande­ ren Block des Flash-Speichers 401, beispielsweise im Block 420 gespeichert. Dieser alternative Kopfteil, der im Block 420 ge­ speichert ist, wird zeitweilig als Kopfteil benutzt, während die Regenerationsoperation durchgeführt wird.
Bei wiederum einem alternativen Ausführungsbeispiel befin­ det sich der Kopfteil nicht im Flash-Speicher 401. Stattdessen ist der Kopfteil in einem Speicher auf einer getrennten inte­ grierten Schaltungskarte angeordnet, die Bestandteil eines Per­ sonal-Computersystems ist. Die den Kopfteil speichernde Anord­ nung wäre ein Registernummern-Zyklusspeicher. Der Kopfteil wäre so in einer separaten Anordnung gespeichert.
Bei dieser Ausführungsform braucht der Kopfteil nicht rege­ neriert zu werden, vorausgesetzt, daß er sich nicht innerhalb der Flash-Speicheranordnung 401 befindet. Daraus folgt, daß der Kopfteil kein kalter Block wäre und keinen Zyklus-Zählparameter mit Bezug auf Heiß/Kalt-Zyklusfolgen enthält.
Es ist klar, daß die Verwendung eines Kopfteils optional ist. Ein Ausführungsbeispiel der Erfindung vermeidet die Ver­ wendung eines Kopfteils mit der folgenden Struktur. Der Flash- Speicher 401 hat Hersteller- und Geräteidentifizierungscodes, die in der Speicheranordnung gespeichert sind. Bei einem Aus­ führungsbeispiel veranlassen diese Hersteller- und Geräteiden­ tifizierungscodes die Software des Personal-Computersystems, in eine Nachschlagetabelle zu gehen, welche die aus den speziellen Hersteller- und Geräteidentifizierungscodes ableitbare Kopf­ teil-Information speichert.
Fig. 13 stellt eine alternative Cluster-Abbildungsanordnung für die Dateistruktur 400 dar. Bei dieser alternativen Anord­ nung gemäß Fig. 13 findet eine Sektor-Abbildungstabelle 746 an­ stelle der Cluster-Abbildungstabelle 446 Verwendung. Die Clu­ ster-Sektor-Abbildungstabelle 746 wird auch als Flash-Sektor- Hash-Tabelle 746 bezeichnet.
Bei dem alternativen Ausführungsbeispiel gemäß Fig. 13 gibt es nur einen Sektor pro Cluster für die Dateistruktur 400. Außerdem gibt es vier Sektoren in einer Kette. Jede Kette hat vier Sektoren mit sequentiellen logischen Adressen.
Die logischen Sektoradressen der Sektor-Abbildungstabelle 746 finden sich in Spalte 720 der Fig. 13.
Beispielsweise enthält der Eintrag 751 der Sektor-Abbil­ dungstabelle 746 die Kette 0. Die Kette 0 wird zugegriffen, wenn einer der vier logischen Abschnitte 0, 1, 2 oder 3 wieder­ gefunden werden soll. Mit anderen Worten, Kette 0 besteht aus Sektoren mit logischen Adressen 0, 1, 2 und 3.
Kette 1 besteht aus Sektoren mit logischen Adressen 4-7. Kette 1 findet sich am Eintrag 753 der Sektor-Abbildungstabelle 746.
Eintrag 761 in Tabelle 746 enthält das F-Null- (Hexadezimal)-Muster der Daten, das ein Datenmuster aus über­ einstimmenden logischen Einsen enthält. Dies zeigt an, daß die dem Eintrag 761 zugeordnete Kette gerade nicht benutzt wird.
Wie in Fig. 13 gezeigt ist, gehen die logischen Sektor­ adressen zur Adresse S - 1. S ist gleich der Anzahl der Sektoren pro Partition. Der letzte Eintrag in der Sektor-Abbildungsta­ belle 746 ist die Kette M. Eintrag 765 ist der letzte Eintrag in der Tabelle 746, und Eintrag 765 entspricht der Kette M. Eintrag 765 ist den logischen Sektor-Adressen S - 4 bis S - 1 zuge­ ordnet. Die letzte logische Sektoradresse pro Partition ist S -­ 1, da die logischen Sektoradressen mit der Adresse 0 beginnen.
Jede in der Sektor-Abbildungstabelle 746 gespeicherte Kette ist auf seiner Verbindungsliste von Einträgen für die dieser Kette zugeordneten Sektoren aufgebaut. Jeder die in der Sektor- Abbildungstabelle 746 gespeicherte Kette bildende Eintrag wird auch als Sektor-Hash-Eintrag bezeichnet.
Fig. 13 zeigt Beispiele gewisser Einträge, welche die Ver­ bindungsliste für Kette 0 der Sektor-Abbildungstabelle 746 bil­ den. Die in Fig. 13 gezeigten Einträge sind die Einträge 731 und 741.
Eintrag 741 in Fig. 13 zeigt das, was einen Eintrag inner­ halb einer in der Sektor-Abbildungstabelle 746 gespeicherten Kette bildet. Eintrag 731 ist aus einem Platten-Sektor-Eintrag 733, einem Flash-Sektor-Eintrag 735 und einem Zeiger-Eintrag 737 gebildet.
Der Plattensektor-Eintrag 733 speichert die logische Adresse eines der die Kette enthaltenden Sektoren. Wenn Eintrag 731 der erste Eintrag in der Verbindungslistenkette 0 ist, so ist die in 733 gespeicherte logische Sektor-Adresse die logi­ sche Sektor-Adresse 0, d. h. die logische Adresse für Sektor 0. Die logische Adresse des Disk-Sektors, gespeichert in Eintrag 733, ist die Adresse, wie sie vom Platten-Betriebssystem für den Personal-Computer gesehen wird.
Die im Eintrag 735 der Fig. 13 gespeicherte Adresse ist die physikalische Adresse innerhalb der Flash-Speicheranordnung 401 (Fig. 8) eines demjenigen logischen Sektor zugeordneten Sek­ tors, dessen Adresse im Eintrag 733 gespeichert ist. Mit ande­ ren Worten, ein Sektor, dessen physikalische Adresse im Eintrag 735 gespeichert ist, ist innerhalb der Flash-Speicheranordnung 401 der Fig. 8 ein physikalischer Sektor. Eintrag 731 bildet daher ab oder korreliert eine logische Adresse eines Sektors auf bzw. mit einer physikalischen Adresse eines Sektors.
Wenn die physikalische Sektoradresse 731 für einen aktiven, guten Sektor und nicht für einen schmutzigen Sektor ist, so speichert der Eintrag 737 des Eintrags 731 das F-Null- (Hexadezimal)-Muster von Daten. Wenn die physikalische Sektor­ adresse 731 jedoch für einen schmutzigen Sektor bestimmt ist, so speichert der Eintrag 737 des Eintrags 731 einen Zeiger, der die Adresse eines nächsten Sektor-Hash-Eintrags ist.
Wie in Fig. 13 gezeigt ist, weist der Zeiger 737 auf den Eintrag 741 der Kette 0 der Sektor-Abbildungstabelle 746 hin.
Wie in Fig. 13 außerdem gezeigt ist, speichert Eintrag 741 eine logische Sektoradresse von 2 auf dem Platz 733 des Ein­ trags 741. Eintrag 741 speichert auch die physikalische Sektor­ adresse 405 auf dem Platz 735 des Eintrags 741. Adresse 405 ist die physikalische Adresse des Sektors 405 der Flash-Speicheran­ ordnung 401 in Fig. 8. Daher bildet Eintrag 741 die logische Sektoradresse 2 auf die physikalische Adresse 405 des physika­ lischen Sektors 405 der Flash-Speicheranordnung 401 ab.
Eintrag 741 der Verbindungsliste der Kette 0 hat ein F- Null-Datenmuster, das am Platz 737 gespeichert ist. Dies zeigt an, daß der physikalische Sektor 405 ein aktiver guter Sektor ist.
Wie oben gesagt, gibt es bei dem in Fig. 13 gezeigten Aus­ führungsbeispiel vier logische Sektoren pro Kette. Daher hat jede Kette mindestens vier Einträge, und zwar jeweils einen für jeden der die Kette bildenden Sektoren.
Sektor-Abbildungstabelle 746 wird im Vorbeilauf konstru­ iert, wenn zusätzliche Sektoren der Flash-Speicheranordnung 401 zur Speicherung von Codes oder Daten verwendet werden. Neue Kette und neue Sektor-Hash-Einträge werden addiert, wenn zu­ sätzliche Sektoren der Flash-Speicheranordnung 401 zur Speiche­ rung von Codes oder Daten verwendet werden. Die Sektor-Abbil­ dungstabelle 746 wird kontinuierlich aufgebaut, bis alle zum Speichern von Code oder Daten verfügbaren Sektoren zugeordnet worden sind.
Wenn ein Sektor-Hash-Eintrag eine physikalische Sektor­ adresse am Platz 735 und ein F-Null-Datenmuster am Platz 737 hat und wenn der mit dieser physikalischen Sektoradresse iden­ tifizierte physikalische Sektor schmutzig wird, wird das F- Null-Datenmuster am Platz 737 überschrieben und wird zu einem Zeiger oder Hinweis auf eine Adresse eines nächsten Sektor- Hash-Eintrags. Der nächste Sektor-Hash-Eintrag wäre ein neu hinzugefügter Sektor-Hash-Eintrag, der die physikalische Adresse eines aktiven guten Sektors enthält.
Wenn beispielsweise der physikalische Sektor 405 ein schmutziger Sektor wird, so wird ein neuer Sektor-Hash-Eintrag der Kette 0 hinzugefügt. Das F-Null-Muster von Daten am Platz 737 des Eintrags 741 wird überschrieben und zeigt auf den neuen Sektor-Hash-Eintrag. Der neue Sektor-Hash-Eintrag enthält bei­ spielsweise die physikalische Sektoradresse 409 an der Stelle 735 und die logische Sektoradresse 2 an der Stelle 733, wenn der logische Sektor 2 auf den aktiven, guten physikalischen Sektor 409 abgebildet wurde. Das Überschreiben des F-Null-Da­ tenmuster kann ohne vorhergehendes Löschen erfolgen, da jedes Bit der Flash-Speicheranordnung 401 ohne vorhergehendes Löschen von einer logischen Eins in eine logische Null überschrieben werden kann.
Das Computersystem durchläuft wiederholt die Ketten der Flash-Sektor-Abbildungstabelle 746, bis sie für jeden zugeord­ neten Logiksektor einen Sektor-Hash-Eintrag findet, der das F- Null-Datenmuster am Platz 737 enthält. Jeder gültige Sektor- Hash-Eintrag mit dem F-Null-Datenmuster am Platz 737 bildet eine logische Sektoradresse (gespeichert am Platz 733) auf eine aktive "saubere" physikalische Sektoradresse (gespeichert am Platz 735) ab. Wenn andererseits das F-Null-Muster am Platz 737 nicht gespeichert ist, so ist die am Platz 735 gespeicherte physikalische Adresse eine Adresse eines schmutzigen Sektors.
Bei einem alternativen Ausführungsbeispiel gibt es zwei (oder mehr) Sektoren pro Cluster. In wiederum einem alternati­ ven Ausführungsbeispiel kann es vier Sektoren pro Cluster ge­ ben. Für diese alternativen Ausführungsbeispiele bildet die Flash-Sektor-Abbildungstabelle 846 die logischen Sektoradressen auf die physikalischen Sektoradressen ab.
Bei einem wiederum alternativen Ausführungsbeispiel bildet die Flash-Sektor-Abbildungstabelle logische Clusteradressen auf physikalische Sektoradressen ab.
Um zu vermeiden, daß lange Hash-Ketten bei häufig geänder­ ten Sektoren wiederholt durchlaufen werden, wird eine kompri­ mierte Sektor-Abbildungs-Tabelle (sector-hash-table) im RAM des Personal-Computersystems gespeichert. Die RAM-Sektor-Abbil­ dungstabelle 846 gemäß Fig. 13 ist ein Beispiel einer kompri­ mierten Sektor-Hash-Tabelle. Um die RAM-Sektor-Abbildungsta­ belle 846 zu bilden, werden alle diejenigen Sektor-Hash-Ein­ träge in der Sektor-Abbildungstabelle 746, welche am Platz 737 kein F-Null-Muster enthalten, nicht in den RAM geschrieben. Nur diejenigen Sektor-Hash-Einträge mit einem F-Null-Datenmuster am Platz 737 werden in den RAM geschrieben. Daher werden nur die­ jenigen Sektor-Hash-Tabelleneinträge der Sektor-Abbildungsta­ belle 746 in den RAM geschrieben, die logische Sektoradressen auf aktive, gute Sektoren abbilden.
Die RAM-Sektor-Abbildungstabelle 846 wird im Vorbeilauf während des Lesens oder Schreibens von Sektoren gebildet.
Die RAM-Sektor-Abbildungs- bzw. Hash-Tabelle 846 dient zur Leistungsverbesserung. Wenn die Kopie der RAM-Sektor-Abbil­ dungstabelle 846 aus dem RAM verlorengeht, so hat diese Tatsa­ che keinen Einfluß auf die Konsistenz der in der Flash-Spei­ cheranordnung 401 gespeicherten Daten. Dies liegt daran, daß die Sektor-Hash-Tabelle 746 immer noch im Flash-Speicher 401 gespeichert ist.
Um trotzdem die Integrität des Dateisystems zu gewährlei­ sten, wird bei einem Ausführungsbeispiel der Erfindung eine Si­ cherungskopie der Sektor-Abbildungstabelle 746 in wenigstens einem freien Sektor innerhalb eines freien Blocks oder eines Reserveblocks der Flash-Speicheranordnung 401 gespeichert.
Bei einem alternativen Ausführungsbeispiel wird eine Sek­ tor-Abbildungstabelle, welche logische Sektoradressen direkt auf aktive Bootsektoren abbildet, im RAM (und in einem freien Sektor der Flash-Speicheranordnung 401 als Sicherungskopie) ge­ speichert.
Fig. 13 zeigt auch eine Flash-Sektor-Zuordnungs-Bitmap 881. Jedes Bit in Bitmap 881 ist einem physikalischen Sektor der Flash-Speicheranordnung 401 zugeordnet. So ist beispielsweise Bit 0 dem physikalischen Sektor 403, Bit 1 dem physikalischen Sektor 405 usw. zugeordnet. Ein Bit in Form einer logischen Eins zeigt einen freien Sektor. Ein Bit in Form einer logischen Null zeigt einen schmutzigen Sektor. Daher können sowohl freie als auch schmutzige Sektoren der Flash-Speicheranordnung durch eine Inspektion der Bitmap 881 rasch festgestellt werden. Außerdem kann ein beliebiges Muster von benachbarten freien oder schmutzigen Sektoren durch eine Inspektion der Bitmap 881 leicht festgestellt werden.
Bei einem Ausführungsbeispiel der Erfindung ist die Flash- Sektor-Zuordnungs-Bitmap 881 im RAM des Personal-Computersy­ stems cache-gespeichert, um die Leistungsfähigkeit des Perso­ nal-Computersystems zu verbessern.
Fig. 13 zeigt auch eine Block-Statustabelle 444 der Flash- Speicheranordnung 401. Wie oben gesagt, wird die Zykluszählung von einzelnen Blöcken in der Block-Statustabelle 444 gehalten. Die Block-Statustabelle 444 wird am Ende jeder Aufräumoperation aktualisiert. Die RAM-Block-Statustabelle 844 ist eine tem­ poräre RAM-Kopie der Block-Statustabelle 444. Die RAM-Block- Statustabelle 844 wird während der Umordnungsoperation beim Aufräumen der Flash-Speicheranordnung 401 verwendet.
Bei einem Ausführungsbeispiel der Erfindung enthält das Personal-Computersystem auch Hardware und Firmware zur Durch­ führung der logischen Zustandsinversion in Verbindung mit Flash-Plattenemulationsdateistruktur 400. Die logische Zu­ standsinversion arbeitet wie folgt.
Herkömmliche Standard-Plattenformatoperationen für Fest­ platten und Disketten sind so definiert, daß sie alle Blöcke der Festplatten und Disketten auf einen logischen Nullzustand löschen. Auch physikalische Sektoren von herkömmlichen Fest­ platten und Floppy-Disk werden typischerweise beim Formatieren markiert und sind (1) "frei und gut" (d. h. nicht defekt), (2) "schlecht", (3) "reserviert/unbenutzt" oder (4) "neu-abgebil­ det", wobei die Standard-Vorgabebedingung frei gut ist. Be­ kannte Formatierungsverfahren spezifizieren in typischer Ver­ fahrensweise einen "00"-Code zum Markieren von Festplatten- und Diskettensektoren (oder größerer "Cluster"-Zuordnungseinheiten) als frei/gut.
Im Gegensatz dazu sind die Zellen der Flash-Speicheranord­ nung 401 vorgelöscht auf den Zustand einer logischen Eins. Da­ her ist bei einem Ausführungsbeispiel der Erfindung das Perso­ nal-Computersystem mit zusätzlicher Hardware versehen, um das Ausgangssignal der Flash-Speicheranordnung 401 zu invertieren. Durch Invertieren des Flash-Geräteausgangs mit der FDE-System­ hardware erscheint der gelöschte Zustand der Flash-Speicheran­ ordnung 401 für das Computersystem als logische "Null". Dies macht die Daten der gelöschten Flash-Blöcke logisch konsistent mit der herkömmlichen Anfangsformatierung und frei gut Deskrip­ toren. Wie der gelöschte Raum behandelt wird, ist insofern wichtig, als das FDE-Dateisystem eine Verfügbarkeit von freiem gelöschtem Raum für eine maximale Schreibleistung erforderlich macht.
Bei einem Ausführungsbeispiel der Erfindung bewirkt die Flash-Plattenemulation-Steuerfirmware eine Minimierung der Neuschreiboperation. Dies wird im folgenden beschrieben.
Bekannte Betriebssysteme, wie DOS, verwenden "00"-Daten als anfänglichen aktiven Code. In DOS wird beispielsweise ein unbe­ nutzter Verzeichnis-Dateinamen-Eintrag mit "00" markiert, da­ nach mit "E5H"-Daten gekennzeichnet, wenn der Eintrag logisch gelöscht worden ist.
Die obige logische Zustandsinversion für die Flash-Spei­ cheranordnung 401 ermöglicht in den meisten Fällen, daß dieses erste Datennamenbyte erfolgreich von "00" in gültige Daten des ersten Bytes des gültigen Dateinamens überschrieben wird und danach auf "E5H". Die logische Inversion bewirkt, daß physika­ lische Daten in der Flash-Speicheranordnung 401 von dem Eins- Zustand in den Null-Zustand invertiert werden, was ohne Um­ schreiben des ganzen Blocks in einen anderen vorgelöschten Block geschehen kann.
Bei einem Ausführungsbeispiel wird ein Algorithmus der zen­ tralen Firmware des FDE-Systems hinzugefügt, der in Verbindung mit der oben beschriebenen logischen Inversionshardware verwen­ det wird. Dieser Algorithmus minimiert die Anzahl von benötig­ ten Umschreiboperationen. Dieser Algorithmus prüft zunächst Sektor- oder Cluster-Umschreiboperationen bezüglich der erfor­ derlichen logischen Zustandsübergänge der Daten. Wenn kleine Datenabschnitte umgeschrieben werden sollen (z. B. FAT-Eintrags­ modifikationen), so kann dieses Umschreiben durch "1" auf "0"- Übergänge im physikalischen Flash-Speicher durchgeführt werden, was selbst wiederum durch Überschreiben einiger weniger Bytes innerhalb eines aktiven, gültigen Datenspeichersektors oder - clusters geschehen kann. Dadurch werden unnötige Umschreibope­ rationen des gesamten Clusters vermieden.
Bei einem Ausführungsbeispiel der Erfindung umfaßt die Dat­ eistruktur 400 auch die Fehlerdetektion und die logische Sek­ torverifikation.
Bei der minimalen FDE-Implementierung werden Datenspeicher­ einheiten (Sektoren oder Cluster) regelmäßigen 2N-Partitionen (z. B. 512-Byte-DOS-Sektoren) derart zugeordnet, daß eine vorge­ gebene, gerade Anzahl von Speichereinheiten exakt mit den großen Löschblockgrenzen der Flash-Speicheranordnung 401 zusam­ menfällt. Viele Umfelder des Computersystems bedingen jedoch die Berechnung und Speicherung nach dem Schreiben und die Rück­ führung beim Lesen von zwei oder mehr Zyklus-Redundanz-Checks ("CRC") oder Fehlerkorrektorcode-("ECC")-Datenfeldern, die zur Feststellung (und ggf. Korrektur) von Medien- oder Übertra­ gungsdefekten verwendet werden können.
Bei einem Ausführungsbeispiel der Erfindung werden CRC- oder ECC-Datenfelder zu Sektoren oder Clustern der Dateistruk­ tur 400 hinzugefügt. Die extra CRC-ECC-Bytes bedingen eine Mi­ nimalgröße der Datenzuordnungseinheit von 2N + M, wobei M gleich der Zahl der zusätzlichen CRC- oder ECC-Bytes ist. Dies führt häufig zu einer ungeraden Zahl oder zumindest keinem Vielfachen von 2N von Datenzuordnungseinheiten pro Löschblock. Dies erhöht die Kompliziertheit der FDE-Systemfirmware, hilft jedoch zur Verbesserung der Zuverlässigkeit des gesamten Flash-Speicher- Subsystems durch die Befähigung zur Feststellung und eventuel­ len Korrektur von Medienfehlern.
Durch Vergrößerung der Anzahl von zusätzlichen Bytes pro Speichereinheit auf M + L wird eine Fehlererkennung für die Clu­ ster-Abbildungstabelle 446 geschaffen. Die Anzahl von Extryby­ tes L muß ausreichen, um die von dem gegebenen FDE-System zuge­ lassene Gesamtzahl von formatierbaren logischen Sektoren zu in­ dizieren. Die in L enthaltenen Daten sind die logische Sektor­ zahl, welche der speziellen physikalischen Flash-Zuordnungsein­ heit zugeordnet ist. Wenn daher die Cluster-Abbildungstabelle 446 auf einen bestimmten physikalischen Platz hinweist, kann die logische Sektorzuordnung verifiziert werden, wenn dieser physikalische Platz tatsächlich zugegriffen wird. Dies ergibt eine unmittelbare Erkennung von Fehlern, welche in der RAM- Bild-Clusterabbildungstabelle aufgrund von Soft-Fehlern im RAM- Speichergerät entstehen. Da die Flash-Speicheranordnung 401 keine Soft-Fehler verursacht, können diese Fehler durch Lesen der Verbindungslistenversion der Cluster-Abbildungstabelle 446 wiedergewonnen werden. Die Daten in den Extra-Logiksektortabel­ lenbytes L müßten überschrieben oder auf irgendeine andere Weise ungültig gemacht werden, wenn der logische Sektor/Cluster nachfolgend in einen anderen physikalischen Sektor/Cluster neu abgebildet wird.
Das intrinsische Flash-Zyklusmanagement, das bei der Da­ teistruktur 400 verwendet wird, hilft die Zuverlässigkeit der Flash-Speicheranordnung 401 zu verbessern. Ebenfalls zur Ver­ besserung der Zuverlässigkeit trägt die Tatsache bei, daß die Dateistruktur 400 Maßnahmen zur Anfertigung von Sicherungkopien enthält.
Ausführungsbeispiele der Erfindung helfen auch dazu, die System-RAM-Erfordernisse zu minimieren, und zwar (1) durch Ein­ bettung des Steuercodes in Firmware und (2) durch Verwendung von Reserveblöcken für die Block-zu-Block Datei und Verzeich­ nisübertragung während der Aufräumoperationen.
Die Block-Zustandstabelle 444 unterstützt die Gleichmäßig­ keit der Flash-Einrichtungs- und -Block-Zyklen. Hierdurch wird die Speicherzuverlässigkeit verbessert, während heiße Flecken bzw. Punkte, welche ein Löschen und eine Verschlechterung der Schreibleistung relativ zu anderen Geräten und Blöcken inner­ halb der Bauelemente bewirken, minimiert werden. Block-Zu­ standstabelle 444 verfolgt auch Reserveblöcke, wodurch die Zu­ verlässigkeit und die Geschwindigkeit der Aufräum- und "Hin­ tergrundaufgaben"-Löschoperationen verbessert werden.

Claims (17)

1. Nicht-flüchtiger Halbleiterspeicher (401), der block­ weise löschbar ist, mit:
  • A) einem aktiven Block (402, 406, 412, 418, 426, 430) zur Speicherung erster Daten;
  • B) einem Reserveblock (416, 424, 428) zur Speicherung zweiter Daten, wobei die zweiten Daten eine Kopie der ersten Daten sind und die Kopie während einer Aufräumoperation vor einem Löschen des aktiven Blocks hergestellt wird; und
  • C) einer Abbildungstabelle (446) zum Abbilden einer logi­ schen Adresse einer Zuordnungseinheit auf eine physikalische Adresse eines Sektors im nicht-flüchtigen Halbleiterspeicher (401).
2. Speicher nach Anspruch 1, dadurch gekennzeichnet, daß die Abbildungstabelle (446) aufweist:
  • 1. wenigstens ein Feld für eine logische Adresse (520, 525), die der logischen Adresse der Zuordnungseinheit ent­ spricht;
  • 2. ein Feld für eine erste zugehörige physikalische Adresse eines Sektors in dem nicht-flüchtigen Halbleiterspei­ cher;
  • 3. ein Feld für eine nächste logische Adresse, das einen ersten Wert enthält, sofern die erste zugehörige physikalische Adresse sauber ist, das heißt, gültige Daten in dem nicht- flüchtigen Halbleiterspeicher an dieser ersten physikalischen Adresse angeordnet sind, wobei das Feld (522) für die nächste logische Adresse einen logischen Adreßwert enthält, der auf eine zweite logische Adresse und eine zugehörige zweite physi­ kalische Adresse in der Abbildungstabelle (446) verweist, so­ fern die erste physikalische Adresse derart schmutzig (dirty) ist, daß ungültige Daten an der ersten physikalischen Adresse angeordnet sind; und
    wobei die Abbildungstabelle (446) während einer Aufräum­ operation derart aktualisiert wird, daß der erste Wert des Fel­ des (522) der nächsten logischen Adresse auf die zweite logi­ sche Adresse verweist, und die zugehörige physikalische Adresse derart aktualisiert wird, daß sie die zweite physikalische Adresse identifiziert, wobei die zweite physikalische Adresse eine Adresse der in den Reserveblock des nicht-flüchtigen Halb­ leiterspeichers kopierten Daten ist.
3. Speicher nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß er ein elektrisch löschbarer, programmierbarer Flash-Nur- Lese-Speicher (Flash-EEPROM) ist.
4. Speicher nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß zusätzlich eine Block-Statustabelle (444) vorgesehen ist, die Informationen darüber enthält, ob ein Block
  • a) ein aktiver oder ein Reserveblock ist,
  • b) frei oder in Benutzung ist und
  • c) defekt oder nicht-defekt ist.
5. Speicher nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß er außerdem einen Kopfteil aufweist, der die folgenden Informationen enthält:
  • a) eine Größe des nicht-flüchtigen Halbleiterspeichers in unformatiertem Zustand;
  • b) eine maximale Anzahl von für den nicht-flüchtigen Halbleiterspeicher vorgesehenen Löschzyklen;
  • c) Lösch- und Schreibspannungen;
  • d) Lösch- und Schreibbefehle;
  • e) Lösch- und Schreibalgorithmen.
6. Halbleiterspeicher nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die Zuordnungseinheit ein Sektor oder ein Cluster ist.
7. Halbleiterspeicher nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß außerdem ein Inverter zum logischen Invertieren jedes aus dem Halbleiterspeicher gelesenen Daten­ bits vorgesehen ist.
8. Halbleiterspeicher nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß ein Fehlerkorrekturcode-Datenfeld vorgesehen ist.
9. Halbleiterspeicher nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß eine Sektor-Zuordnungs-Bitmap vor­ gesehen ist.
10. Computersystem, mit:
  • A) einer zentralen Verarbeitungseinheit (12);
  • B) einem blockweise löschbaren, nicht-flüchtigen Halblei­ terspeicher (34; 64; 96; 401), der von der zentralen Verarbei­ tungseinheit (12) zugreifbar ist und aufweist:
    • 1. einen aktiven Block (402, 406, 412, 418, 426, 430) zur Speicherung erster Daten;
    • 2. einen Reserveblock (416, 424, 428) zur Speicherung zweiter Daten, wobei die zweiten Daten eine Kopie der ersten Daten sind und die Kopie vor dem Löschen des aktiven Blocks während einer Aufräumoperation hergestellt wird;
    • 3. eine Abbildungstabelle (446) zum Abbilden einer logi­ schen Adresse einer Zuordnungseinheit auf eine physikalische Adresse eines Sektors innerhalb des nicht-flüchtigen Halblei­ terspeichers (401);
  • C) Speichermitteln (14; 42; 78) zum Speichern eines Pro­ gramms zur Steuerung des nicht-flüchtigen Halbleiterspeichers.
11. Computersystem nach Anspruch 10, dadurch gekennzeich­ net, daß die Abbildungstabelle (446) aufweist:
  • 1. wenigstens ein Feld für eine logische Adresse (520, 525), die der logischen Adresse der Zuordnungseinheit ent­ spricht;
  • 2. ein Feld für eine erste zugehörige physikalische Adresse eines Sektors in dem nicht-flüchtigen Halbleiterspei­ cher;
  • 3. ein Feld für eine nächste logische Adresse, das einen ersten Wert enthält, sofern die erste zugehörige physikalische Adresse sauber ist, das heißt, gültige Daten in dem nicht- flüchtigen Halbleiterspeicher an dieser ersten physikalischen Adresse angeordnet sind, wobei das Feld (522) für die nächste logische Adresse einen logischen Adreßwert enthält, der auf eine zweite logische Adresse und eine zugehörige zweite physikalische Adresse in der Abbildungstabelle (446) verweist, sofern die erste physikalische Adresse derart schmutzig (dirty) ist, daß ungültige Daten an der ersten physikalischen Adresse angeordnet sind; und
    wobei die Abbildungstabelle (446) während einer Aufräum­ operation derart aktualisiert wird, daß der erste Wert des Fel­ des (522) der nächsten logischen Adresse auf die zweite logi­ sche Adresse verweist, und die zugehörige physikalische Adresse derart aktualisiert wird, daß sie die zweite physikalische Adresse identifiziert, wobei die zweite physikalische Adresse eine Adresse der in dem Reserveblock des nicht-flüchtigen Halb­ leiterspeichers kopierten Daten ist.
12. Computersystem nach Anspruch 10 oder 11, dadurch gekennzeichnet, daß die Speichermittel (14; 42; 78) als ROM ausgebildet sind.
13. Computersystem nach Anspruch 10 oder 11, dadurch gekennzeichnet, daß die Speichermittel als RAM ausgebildet sind.
14. Computersystem nach Anspruch 13, dadurch gekennzeich­ net, daß der RAM ein Mehrzweck-System-RAM oder ein Pufferspei­ cher ist.
15. Computersystem nach einem der Ansprüche 10 bis 14, dadurch gekennzeichnet, daß der Halbleiterspeicher (105) als Seitenwechsel-Speicher abgebildet wird.
16. Computersystem nach Anspruch 10, dadurch gekennzeich­ net, daß der Halbleiterspeicher (149) als direktabge­ bildeter Speicher abgebildet wird.
17. Computersystem nach einem der Ansprüche 10 bis 16, dadurch gekennzeichnet, daß ein Hardware-Steuerbauelement (92) zur Ausführung des den Halbleiterspeicher (96) steuernden Pro­ gramms vorgesehen ist.
DE4143072A 1990-12-31 1991-12-27 Blockweise löschbarer nicht-flüchtiger Halbleiterspeicher Expired - Fee Related DE4143072C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US63598890A 1990-12-31 1990-12-31

Publications (2)

Publication Number Publication Date
DE4143072A1 DE4143072A1 (de) 1992-07-02
DE4143072C2 true DE4143072C2 (de) 2001-01-25

Family

ID=24549940

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4143072A Expired - Fee Related DE4143072C2 (de) 1990-12-31 1991-12-27 Blockweise löschbarer nicht-flüchtiger Halbleiterspeicher

Country Status (6)

Country Link
US (1) US5630093A (de)
JP (1) JP3195988B2 (de)
DE (1) DE4143072C2 (de)
GB (1) GB2251323B (de)
HK (1) HK56895A (de)
SG (1) SG27995G (de)

Families Citing this family (268)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0617363B1 (de) * 1989-04-13 2000-01-26 SanDisk Corporation Austausch von fehlerhaften Speicherzellen einer EEprommatritze
US7190617B1 (en) * 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
TW261687B (de) * 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
US6347051B2 (en) 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
JPH05151097A (ja) * 1991-11-28 1993-06-18 Fujitsu Ltd 書換回数制限型メモリのデータ管理方式
JP3587204B2 (ja) * 1991-11-28 2004-11-10 株式会社日立製作所 記憶装置
JP3826936B2 (ja) * 1991-11-28 2006-09-27 株式会社日立製作所 記憶装置
JPH05233426A (ja) * 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
US6549974B2 (en) 1992-06-22 2003-04-15 Hitachi, Ltd. Semiconductor storage apparatus including a controller for sending first and second write commands to different nonvolatile memories in a parallel or time overlapped manner
JP3328321B2 (ja) * 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
JPH0750558B2 (ja) * 1992-09-22 1995-05-31 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリ
US5479633A (en) * 1992-10-30 1995-12-26 Intel Corporation Method of controlling clean-up of a solid state memory disk storing floating sector data
US5473753A (en) * 1992-10-30 1995-12-05 Intel Corporation Method of managing defects in flash disk memories
US5369616A (en) * 1992-10-30 1994-11-29 Intel Corporation Method for assuring that an erase process for a memory array has been properly completed
US5337275A (en) * 1992-10-30 1994-08-09 Intel Corporation Method for releasing space in flash EEPROM memory array to allow the storage of compressed data
US5448577A (en) * 1992-10-30 1995-09-05 Intel Corporation Method for reliably storing non-data fields in a flash EEPROM memory array
US5471604A (en) * 1992-10-30 1995-11-28 Intel Corporation Method for locating sector data in a memory disk by examining a plurality of headers near an initial pointer
US5822781A (en) * 1992-10-30 1998-10-13 Intel Corporation Sector-based storage device emulator having variable-sized sector
US5357475A (en) * 1992-10-30 1994-10-18 Intel Corporation Method for detaching sectors in a flash EEPROM memory array
US5535369A (en) * 1992-10-30 1996-07-09 Intel Corporation Method for allocating memory in a solid state memory disk
US5341330A (en) * 1992-10-30 1994-08-23 Intel Corporation Method for writing to a flash memory array during erase suspend intervals
US5416782A (en) * 1992-10-30 1995-05-16 Intel Corporation Method and apparatus for improving data failure rate testing for memory arrays
US5341339A (en) * 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
US5452311A (en) * 1992-10-30 1995-09-19 Intel Corporation Method and apparatus to improve read reliability in semiconductor memories
US5740395A (en) * 1992-10-30 1998-04-14 Intel Corporation Method and apparatus for cleaning up a solid state memory disk storing floating sector data
US5359570A (en) * 1992-11-13 1994-10-25 Silicon Storage Technology, Inc. Solid state peripheral storage device
US5740349A (en) * 1993-02-19 1998-04-14 Intel Corporation Method and apparatus for reliably storing defect information in flash disk memories
US5835933A (en) * 1993-02-19 1998-11-10 Intel Corporation Method and apparatus for updating flash memory resident firmware through a standard disk drive interface
US5581723A (en) * 1993-02-19 1996-12-03 Intel Corporation Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array
US5603036A (en) * 1993-02-19 1997-02-11 Intel Corporation Power management system for components used in battery powered applications
US5455800A (en) * 1993-02-19 1995-10-03 Intel Corporation Apparatus and a method for improving the program and erase performance of a flash EEPROM memory array
US5586285A (en) * 1993-02-19 1996-12-17 Intel Corporation Method and circuitry for increasing reserve memory in a solid state memory disk
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP3078946B2 (ja) * 1993-03-11 2000-08-21 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US6078520A (en) * 1993-04-08 2000-06-20 Hitachi, Ltd. Flash memory control method and information processing system therewith
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5640529A (en) * 1993-07-29 1997-06-17 Intel Corporation Method and system for performing clean-up of a solid state disk during host command execution
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5490264A (en) * 1993-09-30 1996-02-06 Intel Corporation Generally-diagonal mapping of address space for row/column organizer memories
SG49632A1 (en) * 1993-10-26 1998-06-15 Intel Corp Programmable code store circuitry for a nonvolatile semiconductor memory device
JP3251414B2 (ja) * 1994-01-11 2002-01-28 三菱電機株式会社 プログラマブルコントローラおよびそのプログラム容量変更方法
JP3784844B2 (ja) * 1994-03-30 2006-06-14 沖電気工業株式会社 半導体記憶装置
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5765175A (en) * 1994-08-26 1998-06-09 Intel Corporation System and method for removing deleted entries in file systems based on write-once or erase-slowly media
US5754817A (en) * 1994-09-29 1998-05-19 Intel Corporation Execution in place of a file stored non-contiguously in a non-volatile memory
US5809558A (en) * 1994-09-29 1998-09-15 Intel Corporation Method and data storage system for storing data in blocks without file reallocation before erasure
JPH08137634A (ja) * 1994-11-09 1996-05-31 Mitsubishi Electric Corp フラッシュディスクカード
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US5563828A (en) * 1994-12-27 1996-10-08 Intel Corporation Method and apparatus for searching for data in multi-bit flash EEPROM memory arrays
JP2734391B2 (ja) * 1995-01-18 1998-03-30 日本電気株式会社 不揮発性メモリのファイル管理装置
US5724592A (en) * 1995-03-31 1998-03-03 Intel Corporation Method and apparatus for managing active power consumption in a microprocessor controlled storage device
US5559957A (en) * 1995-05-31 1996-09-24 Lucent Technologies Inc. File system for a data storage device having a power fail recovery mechanism for write/replace operations
JP3782840B2 (ja) 1995-07-14 2006-06-07 株式会社ルネサステクノロジ 外部記憶装置およびそのメモリアクセス制御方法
EP0783748B1 (de) * 1995-07-28 2001-11-21 International Business Machines Corporation Massenspeicherverwendung von lokalprobeanordnung
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
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
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
GB2291991A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
GB2291990A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Flash-memory management system
JPH0997314A (ja) * 1995-09-28 1997-04-08 Canon Inc Icカード装置
JP3703181B2 (ja) * 1995-09-28 2005-10-05 キヤノン株式会社 フラッシュrom管理方法及び装置
JPH0997206A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
US6014724A (en) * 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US5987478A (en) * 1995-10-31 1999-11-16 Intel Corporation Virtual small block file manager for flash memory array
JPH09185551A (ja) * 1996-01-08 1997-07-15 Mitsubishi Electric Corp 半導体記憶装置
US5860082A (en) * 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
US5832525A (en) * 1996-06-24 1998-11-03 Sun Microsystems, Inc. Disk fragmentation reduction using file allocation tables
US5819298A (en) * 1996-06-24 1998-10-06 Sun Microsystems, Inc. File allocation tables with holes
US5793943A (en) * 1996-07-29 1998-08-11 Micron Electronics, Inc. System for a primary BIOS ROM recovery in a dual BIOS ROM computer system
JPH1063551A (ja) * 1996-08-16 1998-03-06 Nec Off Syst Ltd 情報処理装置
GB2317720A (en) * 1996-09-30 1998-04-01 Nokia Mobile Phones Ltd Managing Flash memory
US6092168A (en) * 1996-10-25 2000-07-18 Hewlett-Packard Co. Data storage system and method for deallocating space by writing and detecting a predefined data pattern
US5937423A (en) * 1996-12-26 1999-08-10 Intel Corporation Register interface for flash EEPROM memory arrays
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US6182188B1 (en) * 1997-04-06 2001-01-30 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
JPH10326493A (ja) * 1997-05-23 1998-12-08 Ricoh Co Ltd 複合化フラッシュメモリ装置
JP4079506B2 (ja) * 1997-08-08 2008-04-23 株式会社東芝 不揮発性半導体メモリシステムの制御方法
JP3319361B2 (ja) * 1997-09-30 2002-08-26 ソニー株式会社 記憶装置、データ処理装置及びデータ処理方法
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
JP3534585B2 (ja) * 1997-10-21 2004-06-07 株式会社日立製作所 フラッシュメモリを複数使用した外部記憶装置のデータ記憶制御方法及び装置
JPH11203191A (ja) * 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
WO1999030239A1 (fr) * 1997-12-05 1999-06-17 Tokyo Electron Limited Memoire et procede d'acces
US6009520A (en) * 1997-12-10 1999-12-28 Phoenix Technologies, Ltd Method and apparatus standardizing use of non-volatile memory within a BIOS-ROM
US6560702B1 (en) 1997-12-10 2003-05-06 Phoenix Technologies Ltd. Method and apparatus for execution of an application during computer pre-boot operation
US6117186A (en) * 1998-01-15 2000-09-12 Dvp Media Pty Ltd. System and method for easy loading of CD-ROM computer software without installation process
JP2000030375A (ja) * 1998-07-10 2000-01-28 Tokyo Electron Ltd データ処理システム、アクセス装置及び記録媒体
JP4085478B2 (ja) * 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
US6694340B1 (en) 1998-09-24 2004-02-17 International Business Machines Corporation Technique for determining the age of the oldest reading transaction with a database object
US6343293B1 (en) 1998-09-24 2002-01-29 International Business Machines Corporation Storing the uncompressed data length in a LOB map to speed substring access within a LOB value
US6363389B1 (en) 1998-09-24 2002-03-26 International Business Machines Corporation Technique for creating a unique quasi-random row identifier
US6144970A (en) * 1998-09-24 2000-11-07 International Business Machines Corporation Technique for inplace reorganization of a LOB table space
US6470359B1 (en) 1998-09-24 2002-10-22 International Business Machines Corporation Fast technique for recovering an index on an auxiliary table
US6343286B1 (en) 1998-09-24 2002-01-29 International Business Machines Corporation Efficient technique to defer large object access with intermediate results
US6606617B1 (en) 1998-09-24 2003-08-12 International Business Machines Corporation Optimized technique for prefetching LOB table space pages
US6366902B1 (en) 1998-09-24 2002-04-02 International Business Machines Corp. Using an epoch number to optimize access with rowid columns and direct row access
US6308264B1 (en) * 1998-09-30 2001-10-23 Phoenix Technologies Ltd. Dual use master boot record
TW494303B (en) * 1998-10-20 2002-07-11 Via Tech Inc Input/output controller
JP3511916B2 (ja) * 1998-11-17 2004-03-29 松下電器産業株式会社 記録再生装置
US6260156B1 (en) 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
US6317875B1 (en) * 1999-01-15 2001-11-13 Intel Corporation Application execution performance through disk block relocation
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6725322B1 (en) * 1999-02-22 2004-04-20 Renesas Technology Corp. Memory card, method for allotting logical address, and method for writing data
US6104638A (en) * 1999-02-26 2000-08-15 Hewlett-Packard Company Use of erasable non-volatile memory for storage of changing information
US7774315B1 (en) * 1999-03-12 2010-08-10 Eldad Galker Backup system
US6192456B1 (en) * 1999-03-30 2001-02-20 Adaptec, Inc. Method and apparatus for creating formatted fat partitions with a hard drive having a BIOS-less controller
US6427186B1 (en) * 1999-03-30 2002-07-30 Frank (Fong-Long) Lin Memory, interface system and method for mapping logical block numbers to physical sector numbers in a flash memory, using a master index table and a table of physical sector numbers
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
US6535949B1 (en) 1999-04-19 2003-03-18 Research In Motion Limited Portable electronic device having a log-structured file system in flash memory
WO2000067132A1 (en) * 1999-04-30 2000-11-09 Centennial Technologies, Inc. Combination ata/linear flash memory device
IL129947A (en) * 1999-05-13 2003-06-24 Tadiran Telecom Business Syste Method and apparatus for downloading software into an embedded system
US20080071973A1 (en) * 2000-01-06 2008-03-20 Chow David Q Electronic data flash card with various flash memory cells
US6629199B1 (en) * 1999-08-20 2003-09-30 Emc Corporation Digital data storage system including directory for efficiently providing formatting information for stored records and utilization of a check value for verifying that a record is from a particular storage location
US6565443B1 (en) 1999-09-14 2003-05-20 Innovative Gaming Corporation System and method for verifying the contents of a mass storage device before granting access to computer readable data stored on the device
KR100577380B1 (ko) * 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
US6742078B1 (en) * 1999-10-05 2004-05-25 Feiya Technology Corp. Management, data link structure and calculating method for flash memory
JP3604977B2 (ja) * 1999-10-14 2004-12-22 Necエレクトロニクス株式会社 バスインタフェース回路作成装置及び記録媒体
US6839827B1 (en) * 2000-01-18 2005-01-04 International Business Machines Corporation Method, system, program, and data structures for mapping logical blocks to physical blocks
US6687815B1 (en) * 2000-02-01 2004-02-03 Sun Microsystems, Inc. Method and apparatus for storing non-volatile configuration information
US6480943B1 (en) * 2000-04-29 2002-11-12 Hewlett-Packard Company Memory address interleaving and offset bits for cell interleaving of memory
JP3942807B2 (ja) * 2000-06-06 2007-07-11 株式会社ルネサステクノロジ ブロックアラインメント機能付き半導体記憶装置
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US6715036B1 (en) 2000-08-01 2004-03-30 International Business Machines Corporation Method, system, and data structures for transferring blocks of data from a storage device to a requesting application
US7155559B1 (en) 2000-08-25 2006-12-26 Lexar Media, Inc. Flash memory architecture with separate storage of overhead and user data
US7062602B1 (en) 2001-04-09 2006-06-13 Matrix Semiconductor, Inc. Method for reading data in a write-once memory device using a write-many file system
US7003619B1 (en) 2001-04-09 2006-02-21 Matrix Semiconductor, Inc. Memory device and method for storing and reading a file system structure in a write-once memory array
US6996660B1 (en) 2001-04-09 2006-02-07 Matrix Semiconductor, Inc. Memory device and method for storing and reading data in a write-once memory array
US6895490B1 (en) * 2001-04-09 2005-05-17 Matrix Semiconductor, Inc. Method for making a write-once memory device read compatible with a write-many file system
JP2002351685A (ja) * 2001-05-22 2002-12-06 Sankyo Seiki Mfg Co Ltd 不揮発性メモリのデータ更新方法及び制御装置
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
JP3613336B2 (ja) * 2001-06-05 2005-01-26 日本電気株式会社 ファイルアクセス制御方法、装置、及びプログラム
TWI240864B (en) * 2001-06-13 2005-10-01 Hitachi Ltd Memory device
AU2002315365A1 (en) * 2001-06-21 2003-01-08 Dan Bress Systems and methods for removing data stored on long-term memory devices
CN1122281C (zh) * 2001-06-30 2003-09-24 深圳市朗科科技有限公司 一种多功能半导体存储装置
DE10134973A1 (de) * 2001-07-24 2003-02-20 Orga Kartensysteme Gmbh Computersystem und Verfahren zum Speichern von Dateien auf einer Chipkarte
US7107299B2 (en) * 2001-08-14 2006-09-12 Hewlett-Packard Development Company, L.P. Method and apparatus for managing large numbers of objects having the same property
JP2003058417A (ja) * 2001-08-21 2003-02-28 Matsushita Electric Ind Co Ltd 記憶装置
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123421D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Power management system
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US7502886B1 (en) * 2001-10-23 2009-03-10 Emc Corporation Data storage device with two-tier raid control circuitry
US6732222B1 (en) * 2002-02-01 2004-05-04 Silicon Motion, Inc. Method for performing flash memory file management
US7277011B2 (en) * 2002-02-22 2007-10-02 Micron Technology, Inc. Removable memory media with integral indicator light
US7231643B1 (en) 2002-02-22 2007-06-12 Lexar Media, Inc. Image rescue system including direct communication between an application program and a device driver
US7010662B2 (en) * 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US6587383B1 (en) * 2002-03-19 2003-07-01 Micron Technology, Inc. Erase block architecture for non-volatile memory
US7627464B2 (en) * 2002-04-18 2009-12-01 Standard Microsystems Corporation Bootable solid state floppy disk drive
US6707748B2 (en) * 2002-05-07 2004-03-16 Ritek Corporation Back up power embodied non-volatile memory device
US7032093B1 (en) * 2002-08-08 2006-04-18 3Pardata, Inc. On-demand allocation of physical storage for virtual volumes using a zero logical disk
US7093071B2 (en) * 2002-10-09 2006-08-15 Intel Corporation Queued copy command
FR2846114A1 (fr) * 2002-10-16 2004-04-23 Thomson Licensing Sa Dispositif de memorisation d'une liste d'elements et procede de memorisation d'un element dans un tel dispositif
CN100483552C (zh) 2002-10-28 2009-04-29 桑迪士克股份有限公司 在非易失性存储系统中执行自动磨损平衡的方法
JP3694501B2 (ja) * 2002-10-30 2005-09-14 松下電器産業株式会社 記憶装置
KR100457812B1 (ko) * 2002-11-14 2004-11-18 삼성전자주식회사 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법
US7082512B2 (en) * 2002-11-21 2006-07-25 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US6901498B2 (en) * 2002-12-09 2005-05-31 Sandisk Corporation Zone boundary adjustment for defects in non-volatile memories
US7051251B2 (en) * 2002-12-20 2006-05-23 Matrix Semiconductor, Inc. Method for storing data in a write-once memory array using a write-many file system
US20040225874A1 (en) * 2003-05-09 2004-11-11 Jeremy Burr Method for reduced BIOS boot time
US20050010835A1 (en) * 2003-07-11 2005-01-13 International Business Machines Corporation Autonomic non-invasive backup and storage appliance
JP2005085011A (ja) * 2003-09-09 2005-03-31 Renesas Technology Corp 不揮発性メモリ制御装置
EP1686482B1 (de) * 2003-11-18 2013-03-06 Panasonic Corporation Dateiaufzeichnungseinrichtung
JP4567966B2 (ja) * 2003-12-22 2010-10-27 株式会社東芝 エミュレーションシステムおよびエミュレーション方法
KR100533682B1 (ko) * 2003-12-26 2005-12-05 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
US20080082736A1 (en) * 2004-03-11 2008-04-03 Chow David Q Managing bad blocks in various flash memory cells for electronic data flash card
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7370166B1 (en) 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
US8407396B2 (en) * 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US7594063B1 (en) 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
US7464306B1 (en) 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
US20060069848A1 (en) * 2004-09-30 2006-03-30 Nalawadi Rajeev K Flash emulation using hard disk
KR100631765B1 (ko) * 2004-10-18 2006-10-09 삼성전자주식회사 플래시 메모리의 데이터 처리 장치 및 방법
WO2006135441A1 (en) * 2004-10-25 2006-12-21 Nalpeiron Method and apparatus for restricting use of a computer program
US7409623B2 (en) * 2004-11-04 2008-08-05 Sigmatel, Inc. System and method of reading non-volatile computer memory
KR100643288B1 (ko) * 2004-11-16 2006-11-10 삼성전자주식회사 플래시 메모리의 데이터 처리 장치 및 방법
DE102004058528B3 (de) * 2004-12-04 2006-05-04 Hyperstone Ag Speichersystem mit Sektorbuffern
US20060136657A1 (en) * 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
KR100684942B1 (ko) * 2005-02-07 2007-02-20 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
US7634494B2 (en) * 2005-05-03 2009-12-15 Intel Corporation Flash memory directory virtualization
US7752381B2 (en) * 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
US7797479B2 (en) * 2005-06-30 2010-09-14 Intel Corporation Technique to write to a non-volatile memory
US7533323B2 (en) * 2005-07-28 2009-05-12 Prostor Systems, Inc. Adaptive archival format
US7512864B2 (en) * 2005-09-30 2009-03-31 Josef Zeevi System and method of accessing non-volatile computer memory
ITVA20050061A1 (it) * 2005-11-08 2007-05-09 St Microelectronics Srl Metodo di gestione di un dispositivo di memoria non volatile e relativa memoria
US7644251B2 (en) * 2005-12-19 2010-01-05 Sigmatel, Inc. Non-volatile solid-state memory controller
US20070226394A1 (en) * 2006-03-27 2007-09-27 Finisar Corporation Alternate storage of repeated data within a data storage device
US7979624B2 (en) * 2006-03-31 2011-07-12 Intel Corporation Techniques to truncate data files in nonvolatile memory
JP4984666B2 (ja) * 2006-06-12 2012-07-25 ソニー株式会社 不揮発性メモリ
US8285757B2 (en) * 2007-01-31 2012-10-09 Agency For Science, Technology And Research File system for a storage device, methods of allocating storage, searching data and optimising performance of a storage device file system
US7917479B2 (en) * 2007-03-20 2011-03-29 Micron Technology, Inc. Non-volatile memory devices, systems including same and associated methods
KR100826654B1 (ko) * 2007-04-24 2008-05-06 주식회사 하이닉스반도체 플래시 메모리소자의 동작방법 및 이를 위한 제어회로
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
US7913033B2 (en) 2007-10-09 2011-03-22 Micron Technology, Inc. Non-volatile memory device having assignable network identification
US8090904B2 (en) * 2008-02-01 2012-01-03 Cru Acquisition Group, Llc Reduced hard-drive-capacity detection device
JP5218228B2 (ja) * 2008-04-23 2013-06-26 新東工業株式会社 搬送装置及びブラスト加工装置
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device
EP2189895A1 (de) 2008-11-24 2010-05-26 Deutsche Thomson OHG Flash-basierter Speicher, der eine Flash-Übersetzungsschicht umfasst, und Verfahren zum Speichern einer Datei darin
TWI499906B (zh) 2008-12-08 2015-09-11 Apacer Technology Inc Memory reorganization method of storage device, computer storage medium, computer program product, reorganization method
JP4461187B1 (ja) * 2008-12-24 2010-05-12 株式会社東芝 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
US20100235605A1 (en) * 2009-02-13 2010-09-16 Nir Perry Enhancement of storage life expectancy by bad block management
US8880544B2 (en) * 2009-06-26 2014-11-04 Simplivity Corporation Method of adapting a uniform access indexing process to a non-uniform access memory, and computer system
EP2460104A4 (de) * 2009-07-27 2016-10-05 Ibm Verfahren und system zur transformation logischer datenobjekte für speicherungszwecke
WO2011021174A2 (en) * 2009-08-21 2011-02-24 Xdata Engineering Limited Storage peripheral device emulation
US8724401B2 (en) * 2009-09-29 2014-05-13 Seagate Technology Llc Data stripes and addressing for flash memory devices
US8745353B2 (en) * 2009-10-23 2014-06-03 Seagate Technology Llc Block boundary resolution for mismatched logical and physical block sizes
US8364929B2 (en) * 2009-10-23 2013-01-29 Seagate Technology Llc Enabling spanning for a storage device
TW201115582A (en) * 2009-10-29 2011-05-01 Acer Inc Method for determining data correlation and data processing method for memory
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
US8266369B2 (en) * 2009-12-18 2012-09-11 Nxp B.V. Flash memory interface
WO2011148223A1 (en) 2010-05-27 2011-12-01 Sandisk Il Ltd Memory management storage to a host device
EP2413329B1 (de) 2010-07-28 2014-03-26 Fujitsu Semiconductor Europe GmbH Elektronische Vorrichtungen
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
EP2515237A1 (de) * 2011-04-18 2012-10-24 Gemalto SA Tragbare sichere Vorrichtung mit Speicherdienst
JP5792019B2 (ja) * 2011-10-03 2015-10-07 株式会社日立製作所 半導体装置
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
EP2657845A1 (de) * 2012-04-25 2013-10-30 Siemens Aktiengesellschaft Verfahren zur Änderung von Daten bei einer Anforderung der Daten von einem physikalischen Speicher durch eine Empfangseinheit
US9165010B2 (en) 2012-04-30 2015-10-20 Sap Se Logless atomic data movement
US9171020B2 (en) 2012-04-30 2015-10-27 Sap Se Deleting records in a multi-level storage architecture
US9465844B2 (en) 2012-04-30 2016-10-11 Sap Se Unified table query processing
US10162766B2 (en) * 2012-04-30 2018-12-25 Sap Se Deleting records in a multi-level storage architecture without record locks
US9465829B2 (en) 2012-04-30 2016-10-11 Sap Se Partial merge
US8910018B2 (en) * 2012-07-17 2014-12-09 Macronix International Co., Ltd. Memory with dynamic error detection and correction
US9195578B2 (en) * 2012-08-24 2015-11-24 International Business Machines Corporation Systems, methods and computer program products memory space management for storage class memory
KR20140038110A (ko) * 2012-09-20 2014-03-28 한국전자통신연구원 파일 시스템 관리 방법 및 이를 이용하는 장치
DE102012022728A1 (de) * 2012-11-21 2014-05-22 Unify Gmbh & Co. Kg Verfahren zur Steuerung eines Flash-Speichers zur Massenspeicherung, der von einem an einen Host anschließbaren Kommunikationsgerät umfasst ist, und Computerprogrammprodukt zur Ausführung des Verfahrens
US9047172B2 (en) 2012-11-29 2015-06-02 Intel Corporation Adaptive power control of memory map storage devices
US8954656B2 (en) 2012-12-20 2015-02-10 Sandisk Technologies Inc. Method and system for reducing mapping table size in a storage device
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
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
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
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
US8943266B2 (en) 2013-03-13 2015-01-27 Hitachi, Ltd. Storage system and method of control for storage system
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9229876B2 (en) 2013-12-17 2016-01-05 Sandisk Technologies Inc. Method and system for dynamic compression of address tables in a memory
US9383927B2 (en) 2014-05-28 2016-07-05 SandDisk Technologies LLC Method and system for creating a mapping table cache from an interleaved subset of contiguous mapping data for a storage device
EP3195128B1 (de) * 2014-09-15 2020-10-21 Intel Corporation Speicherverwaltung in virtualisierter umgebung
KR102344834B1 (ko) * 2014-09-24 2021-12-29 삼성전자주식회사 솔리드 스테이트 드라이브 및 이를 포함하는 컴퓨팅 시스템
US9781225B1 (en) * 2014-12-09 2017-10-03 Parallel Machines Ltd. Systems and methods for cache streams
US10055236B2 (en) 2015-07-02 2018-08-21 Sandisk Technologies Llc Runtime data storage and/or retrieval
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
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
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
US10037164B1 (en) 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10503635B2 (en) 2016-09-22 2019-12-10 Dell Products, Lp System and method for adaptive optimization for performance in solid state drives based on segment access frequency
US10747459B2 (en) * 2017-10-26 2020-08-18 Urflash Llc Media storage device including multiple partitions
US10906236B2 (en) 2018-01-25 2021-02-02 Ford Global Technologies, Llc Article with solid, lattice, and hollow sub-regions
US10802744B2 (en) * 2018-09-06 2020-10-13 Western Digital Technologies, Inc. Updating mapping information during synchronization of memory device
US11061598B2 (en) * 2019-03-25 2021-07-13 Western Digital Technologies, Inc. Optimized handling of multiple copies in storage management
CN115220639A (zh) * 2021-04-15 2022-10-21 伊姆西Ip控股有限责任公司 管理存储系统的方法、电子设备和计算机程序产品

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0392895A2 (de) * 1989-04-13 1990-10-17 Sundisk Corporation EEprom-System mit Blocklöschung

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2828855C2 (de) * 1978-06-30 1982-11-18 Siemens AG, 1000 Berlin und 8000 München Wortweise elektrisch umprogrammierbarer, nichtflüchtiger Speicher sowie Verfahren zum Löschen bzw. Einschreiben eines bzw. in einen solchen Speicher(s)
JPS57132256A (en) * 1981-02-09 1982-08-16 Sony Corp Memory device
US4430727A (en) * 1981-11-10 1984-02-07 International Business Machines Corp. Storage element reconfiguration
JPS58215795A (ja) * 1982-06-08 1983-12-15 Toshiba Corp 不揮発性メモリ装置
JPS58215794A (ja) * 1982-06-08 1983-12-15 Toshiba Corp 不揮発性メモリ装置
US4511964A (en) * 1982-11-12 1985-04-16 Hewlett-Packard Company Dynamic physical memory mapping and management of independent programming environments
JPS59162695A (ja) * 1983-03-07 1984-09-13 Nec Corp 記憶装置
US4644494A (en) * 1984-02-06 1987-02-17 Sundstrand Data Control, Inc. Solid state memory for aircraft flight data recorder systems
US4896262A (en) * 1984-02-24 1990-01-23 Kabushiki Kaisha Meidensha Emulation device for converting magnetic disc memory mode signal from computer into semiconductor memory access mode signal for semiconductor memory
US4642759A (en) * 1984-04-02 1987-02-10 Targa Electronics Systems Inc. Bubble memory disk emulation system
US4660130A (en) * 1984-07-24 1987-04-21 Texas Instruments Incorporated Method for managing virtual memory to separate active and stable memory blocks
US4775932A (en) * 1984-07-31 1988-10-04 Texas Instruments Incorporated Computer memory system with parallel garbage collection independent from an associated user processor
US4958315A (en) * 1985-07-02 1990-09-18 The United States Of America As Represented By The Secretary Of The Navy Solid state electronic emulator of a multiple track motor driven rotating magnetic memory
US4757533A (en) * 1985-09-11 1988-07-12 Computer Security Corporation Security system for microcomputers
US4800520A (en) * 1985-10-29 1989-01-24 Kabushiki Kaisha Toshiba Portable electronic device with garbage collection function
GB8529890D0 (en) * 1985-12-04 1986-01-15 Watson P Garbage collection in computer system
US4802117A (en) * 1985-12-16 1989-01-31 Pitney Bowes Inc. Method of preserving data storage in a postal meter
US4718041A (en) * 1986-01-09 1988-01-05 Texas Instruments Incorporated EEPROM memory having extended life
JP2685173B2 (ja) * 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
JPH07109717B2 (ja) * 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
US4797810A (en) * 1986-06-26 1989-01-10 Texas Instruments Incorporated Incremental, multi-area, generational, copying garbage collector for use in a virtual address space
JPS63113623A (ja) * 1986-10-30 1988-05-18 Nec Corp セクタバツフア制御方式
JPS63183700A (ja) * 1987-01-26 1988-07-29 Mitsubishi Electric Corp Eepromアクセス方法
US4984149A (en) * 1987-03-28 1991-01-08 Kabushiki Kaisha Toshiba Memory access control apparatus
US5053990A (en) * 1988-02-17 1991-10-01 Intel Corporation Program/erase selection for flash memory
US5268870A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5070474A (en) * 1988-07-26 1991-12-03 Disk Emulation Systems, Inc. Disk emulation system
US5012425A (en) * 1988-12-30 1991-04-30 Pitney Bowes Inc. EPM having an improvement in non-volatile storage of accounting data
US5101490A (en) * 1989-01-10 1992-03-31 Bull Hn Information Systems Inc. Peripheral device controller with an EEPROM with microinstructions for a RAM control store
US5047989A (en) * 1989-03-10 1991-09-10 Intel Corporation Chapter mode selection apparatus for MOS memory
US5163021A (en) * 1989-04-13 1992-11-10 Sundisk Corporation Multi-state EEprom read and write circuits and techniques
US5226168A (en) * 1989-04-25 1993-07-06 Seiko Epson Corporation Semiconductor memory configured to emulate floppy and hard disk magnetic storage based upon a determined storage capacity of the semiconductor memory
US5398142B1 (en) * 1989-05-31 1997-09-16 Raxco Inc Method for eliminating file fragmentation and reducing average seek times in a magnetic disk media environment
US5131089A (en) * 1989-06-12 1992-07-14 Grid Systems Corporation Solid state disk drive emulation
US5077737A (en) * 1989-08-18 1991-12-31 Micron Technology, Inc. Method and apparatus for storing digital data in off-specification dynamic random access memory devices
US5200959A (en) * 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
US5247658A (en) * 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5321834A (en) * 1989-11-28 1994-06-14 Xerox Corporation Method and system for reclaiming unreferenced computer memory space
EP0473767A1 (de) * 1990-03-23 1992-03-11 Eastman Kodak Company Anordnung zum verwalten und zuordnen von virtuellen speichern für eine digitale datenverarbeitungsanlage
US5193184A (en) * 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5210866A (en) * 1990-09-12 1993-05-11 Storage Technology Corporation Incremental disk backup system for a dynamically mapped data storage subsystem
US5270979A (en) * 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
US6256642B1 (en) * 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0392895A2 (de) * 1989-04-13 1990-10-17 Sundisk Corporation EEprom-System mit Blocklöschung

Also Published As

Publication number Publication date
JPH05241741A (ja) 1993-09-21
JP3195988B2 (ja) 2001-08-06
GB2251323B (en) 1994-10-12
GB2251323A (en) 1992-07-01
GB9118735D0 (en) 1991-10-16
SG27995G (en) 1995-06-16
HK56895A (en) 1995-04-21
DE4143072A1 (de) 1992-07-02
US5630093A (en) 1997-05-13

Similar Documents

Publication Publication Date Title
DE4143072C2 (de) Blockweise löschbarer nicht-flüchtiger Halbleiterspeicher
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE69839126T2 (de) Verschiebung aufeinander folgender sektoren innerhalb eines datenblocks in einem flash-massenspeicher
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
US5544356A (en) Block-erasable non-volatile semiconductor memory which tracks and stores the total number of write/erase cycles for each block
DE60217883T2 (de) Verfahren zum schreiben von daten in einen nicht-flüchtigen speicher
DE69034191T2 (de) EEPROM-System mit aus mehreren Chips bestehender Blocklöschung
DE69534527T2 (de) Verfahren zur Verwendung von nicht-aneinandergrenzenden reservierten Speicherplatz zur Datenmigration in einem hierarchischen redundanten Datenspeichersystem
USRE46404E1 (en) Flash memory management method
US7984084B2 (en) Non-volatile memory with scheduled reclaim operations
DE102008057219B4 (de) Verfahren zum Betreiben eines Solid-State-Speichersystems, Solid-State-Speichersystem und Computersystem
DE60211653T2 (de) Teildatenprogrammier- und leseoperationen in einem nichtflüchtigen speicher
DE60122155T2 (de) Flashspeicherarchitektur zur implementierung von gleichzeitigen programmierbaren flashspeicherbanken mit host-kompatibilität
US9092340B2 (en) Method and system for achieving die parallelism through block interleaving
DE69533058T2 (de) Speicherplattenanordnung mit redundanter Speicherung und Verfahren zur inkrementalen Redundanzerzeugung während des Datenschreibens auf die Speicherplattenanordnung
EP1410399B1 (de) Verfahren und schaltung zur verkürzung der blockschreibzeit bei einem nicht-flüchtigen speicher
DE19782041B4 (de) Verfahren zum Durchführen eines kontinuierlichen Überschreibens einer Datei in einem nicht-flüchtigen Speicher
DE69533764T2 (de) Verfahren zum Gebrauch von Speicherplatten unterschiedlicher Inhalte in einem Einzelvolumen einer hierarchischen Speicherplattenanordnung
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
CN1139031C (zh) 包括多个存储装置的存储器设备
DE69630624T2 (de) EEPROM-Matrix mit einem, dem "Flash"-Speicher ähnlichen Kern
US8171203B2 (en) Faster write operations to nonvolatile memory using FSInfo sector manipulation
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE10238566A1 (de) Fenster-basierendes Flashspeicher-Speichersystem und Management und Zugriffsverfahren darauf
DE102005031525A1 (de) Verfahren und System zur Steuerung eines Flashspeichers und Speichersystem

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee