PatentDe  


Dokumentenidentifikation DE69034227T2 03.05.2007
EP-Veröffentlichungsnummer 0001031992
Titel EEprom-System mit Blocklöschung
Anmelder SanDisk Corp., Sunnyvale, Calif., US
Erfinder Harari, Eliyahou, Los Gatos, California 95054, US;
Norman, Robert D., San Jose, Calirofnia 95120, US;
Mehrotra, Sanjay, Los Altos Hills, California 94022, US
Vertreter Grünecker, Kinkeldey, Stockmair & Schwanhäusser, 80538 München
DE-Aktenzeichen 69034227
Vertragsstaaten DE, FR, GB
Sprache des Dokument EN
EP-Anmeldetag 30.03.1990
EP-Aktenzeichen 001071638
EP-Offenlegungsdatum 30.08.2000
EP date of grant 21.06.2006
Veröffentlichungstag im Patentblatt 03.05.2007
IPC-Hauptklasse G11C 16/06(2006.01)A, F, I, 20051017, B, H, EP
IPC-Nebenklasse G11C 29/00(2006.01)A, L, I, 20051017, B, H, EP   

Beschreibung[de]

Diese Erfindung betrifft allgemein elektrisch programmierbare Halbleiter-Festwertspeicher (EEPROM) und bezieht sich insbesondere auf ein System integrierter Flash EEPROM Schaltungsbausteine.

In Rechnersystemen werden typischerweise Magnetplattenlaufwerke für die Massenspeicherung von Daten verwendet. Plattenlaufwerke haben allerdings den Nachteil, dass sie unhandlich sind und hochpräzise bewegliche mechanische Teile benötigen. Infolgedessen sind sie nicht robust und neigen zu Problemen hinsichtlich der Zuverlässigkeit und verbrauchen darüber hinaus beträchtliche Leistungsmengen. Festkörperspeichervorrichtungen wie DRAM und SRAM haben diese Nachteile nicht. Sie sind allerdings viel teurer und brauchen beständige Spannung, um ihre Speicherung zu erhalten (flüchtig). Deshalb werden sie typischerweise als zeitweilige Speicher verwendet.

EEPROM und Flash EEPROM sind gleichfalls Festkörperspeichervorrichtungen. Darüber hinaus sind sie nichtflüchtig und behalten ihre Speicherung selbst dann bei, wenn die Spannung abgeschaltet wird. Aber herkömmliche Flash EEPROM haben eine begrenzte Lebensdauer, was die Zahl der Schreib(oder Programmier)/Löschzyklen betrifft, die sie aushalten können. Die Vorrichtungen werden typischerweise nach 102 bis 103 Schreib/Löschzyklen unzuverlässig. Traditionell werden sie meistens in Anwendungsfällen angewandt, wo eine halbdauerhafte Speicherung von Daten oder Programmen nötig ist, aber nur ein begrenzter Bedarf an Neuprogrammierung besteht.

AU 557 723 schlägt ein Festkörperspeichersystem zum Simulieren einer rotierenden Magnetspeichereinrichtung vor, wobei das Speichersystem eine elektronische Steuereinrichtung, die eingerichtet ist, um an einen Host-Computer angeschlossen zu werden, und einen an die elektronische Steuereinrichtung angeschlossenen Halbleiterspeicher umfasst, wobei die elektronische Steuereinrichtung Schalteinrichtungen zum Translatieren von Adresssignalen von dem Host-Computer für die Magnetspeichereinrichtung in entsprechende Adresssignale für den Halbleiterspeicher aufweist. Wenn das Festkörperspeichersystem die rotierende Speichereinrichtung ersetzt, werden keine Modifikationen des Host-Computers erforderlich.

In „1-Mbit flash memories seek their role in system design", Computer Design, 01. März 1989, S. 30, 32 handelt R. Wilson Flash EPROMs allgemein ab.

WO 84 00628 betrifft das Management von Speichermedienfehlern in Informationsspeichersystemen. Es wird beschrieben, dass ein vorgegebener Bereich des Speichermediums dient, als Reserve für fehlerhafte Bereiche des Mediums zu wirken. Anstatt einen feststehenden Ersatz an Reservespeicher für fehlerhafte Speicher bereitzustellen, versieht der Hersteller Fehler des Mediums lediglich mit Flags und leitet dadurch Benutzer zu dem Bereich eines Reservespeichers, der den fehlerhaften Bereich ersetzt. Es wird vorgeschlagen, eine Tabelle der Adressen von fehlerhaften Speicherplätzen aufzubauen. Wenn eine Adresse für den Zugriff auf einen Speicherplatz des Speichermediums erhalten wird, wird die Tabelle konsultiert, um fehlerhafte Speicherplätze zu ermitteln, die die erhaltene Adresse beeinträchtigen, und die Adresse für die beeinträchtigten Speicherplätze wird ersetzt. Anschließend wird auf den durch die ersetzte Adresse bezeichneten Speicherplatz zugegriffen. Die Adressen von neuen fehlerhaften Speicherplätzen, die während der Nutzung gefunden werden, werden in die Fehlertabelle einbezogen.

EP 0 300 264 beschreibt einen Mechanismus zum Überspringen von Fehlern für Plattenlaufwerke.

GB-A-2 136 992 beschreibt ein Verfahren und System zum Sicherstellen von Datenintegrität in einem elektronischen Speicher unter Verwendung von Ersatzadressen.

Es ist die Aufgabe der vorliegenden Erfindung, ein verbessertes Halbleiterspeichersystem, das eine Matrix von nicht-flüchtigen Floating Gate Speicherzellen enthält, und ein verbessertes Verfahren dafür bereitzustellen.

Diese Aufgabe ist durch den Gegenstand der unabhängigen Ansprüche gelöst.

Bevorzugte Ausführungsformen der vorliegenden Erfindung sind durch die abhängigen Ansprüche definiert.

Es ist ein weiterer Aspekt der vorliegenden Erfindung, ein Flash EEprom Speichersystem mit verbesserter Leistung, das nach Belastung durch eine große Anzahl von Lese-/Schreibzyklen funktionssicher bleibt, bereitzustellen.

Es ist ein weiterer Aspekt der vorliegenden Erfindung, ein verbessertes Flash EEprom System, das in einem Computersystem als nicht-flüchtiger Speicher dienen kann, bereitzustellen.

Es ist ein weiterer Aspekt der vorliegenden Erfindung, ein verbessertes Flash EEprom System, das magnetische Plattenspeichervorrichtungen in Computersystemen ersetzen kann, bereitzustellen.

Es ist ein weiterer Aspekt der vorliegenden Erfindung, ein Flash EEprom System mit einer verbesserten Löschoperation bereitzustellen.

Es ist ein weiterer Aspekt der vorliegenden Erfindung, ein Flash EEprom System mit einer verbesserten Fehlerkorrektur bereitzustellen.

Es ist ein weiterer Aspekt der vorliegenden Erfindung, ein Flash EEprom System mit einer verbesserten Schreiboperation, die die Belastung der Flash EEprom Vorrichtung minimiert, bereitzustellen.

Es ist ein weiterer Aspekt der vorliegenden Erfindung, ein Flash EEprom System mit einer verbesserten Schreiboperation bereitzustellen.

Zusammenfassung der Erfindung

Diese und weitere Aufgaben werden durch Verbesserungen der Architektur eines Systems von EEprom Chips und der Schaltkreise und Techniken darin gelöst.

Gemäß einer Ausführungsform der vorliegenden Erfindung ist eine Matrix („Array") aus Flash EEprom Zellen auf einem Chip in Sektoren organisiert, so dass alle Zellen innerhalb jedes Sektors auf einmal löschbar sind. Ein Flash EEprom Speichersystem weist einen oder mehrere Flash-EEPROM-Chips unter der Kontrolle einer Steuerung auf. Die Erfindung ermöglicht, eine beliebige Kombination aus Sektoren unter den Chips auszuwählen und dann gleichzeitig zu löschen. Das ist schneller und wirkungsvoller als bekannte Schemata, wo jedes Mal alle Sektoren gelöscht werden müssen oder nur ein Sektor auf einmal gelöscht werden kann. Eine Ausführungsform der vorliegenden Erfindung erlaubt ferner eine beliebige Kombination von zum Löschen ausgewählten Sektoren wieder von der Wahl auszuschließen und daran zu hindern, während des Löschvorgangs weiter gelöscht zu werden. Dieses Merkmal ist wichtig, um diejenigen Sektoren vor einem Überlöschen zu sperren, die als erstes korrekt in den „gelöschten" Zustand gelöscht werden sollen, wodurch eine unnötige Beanspruchung der Flash EEprom Vorrichtung vermieden wird. Eine Ausführungsform der Erfindung erlaubt auch ein globales Deselektieren aller Sektoren in dem System, so dass keine Sektoren zum Löschen ausgewählt sind. Diese globale Rückstellung kann das System schnell in seinen Ausgangszustand zurückversetzen, in dem es zur Wahl der nächsten Sektorkombination für das Löschen bereit ist. Ein weiteres Merkmal einer Ausführungsform der Erfindung besteht darin, dass die Auswahl unabhängig ist vom Chipwählsignal, welches einen bestimmten Chip für einen Lese- oder Schreibvorgang aktiviert. Deshalb kann eine Löschoperation an einigen der Flash-EEPROM-Chips durchgeführt werden, während an anderen Chips, die am Löschvorgang nicht beteiligt sind, Lese- und Schreiboperationen ausgeführt werden können.

Gemäß einer weiteren Ausführungsform der Erfindung werden verbesserte Fehlerkorrekturschaltkreise und -techniken genutzt, um Fehler, die sich aus fehlerhaften Flash EEprom Speicherzellen ergeben, zu korrigieren. Ein Merkmal einer Ausführungsform der Erfindung ermöglicht Fehler-Mapping auf Zellenebene, wobei eine fehlerhafte Zelle durch eine Ersatzelle aus demselben Sektor ersetzt wird. Der Fehlerzeiger, der die Adresse der fehlerhaften Zelle mit der der Ersatzzelle verbindet, wird in einer Fehlerkarte gespeichert. Jedes Mal, wenn auf eine fehlerhafte Zelle zugegriffen wird, werden die ungültigen Daten durch die guten Daten aus der Ersatzzelle ersetzt.

Ein weiteres Merkmal einer Ausführungsform der Erfindung ermöglicht Fehler-Mapping auf Sektorebene. Wenn die Anzahl fehlerhafter Zellen in einem Sektor eine vorgegebene Zahl übersteigt, wird der die fehlerhaften Zellen enthaltende Sektor durch einen Ersatzsektor ersetzt.

Ein wichtiges Merkmal einer Ausführungsform der Erfindung ermöglicht Remapping fehlerhafter Zellen oder fehlerhafter Sektoren, sobald diese erkannt wurden, wodurch Fehlerkorrekturcodes befähigt werden, die relativ wenigen Fehler, die in dem System auftreten, angemessen zu berichtigen.

Gemäß einer weiteren Ausführungsform der vorliegenden Erfindung wird ein Schreib-Cache verwendet, um die Anzahl von Schreiben in dem Flash EEprom Speicher zu minimieren. In dieser Art und Weise wird der Flash EEprom Speicher weniger Belastung, einschließlich Schreib-/Löschzyklen, ausgesetzt, wodurch seine Alterung verzögert wird. Die meisten aktiven Datendateien werden anstelle in den Flash EEprom Speicher in den Cache-Speicher geschrieben. Nur dann, wenn der Grad der Aktivitäten auf einen vorgegebenen Grad verringert wurde, werden die Datendateien aus dem Cache-Speicher in den Flash EEprom Speicher geschrieben. Ein weiterer Vorteil der Erfindung ist die Erhöhung des Schreibdurchsatzes mittels des schnelleren Cache-Speichers.

Gemäß einer weiteren Ausführungsform der vorliegenden Erfindung wird bzw. werden eine Schaltkarte oder mehrere Schaltkarten bereitgestellt, die den Controller und EEprom Schaltkreischips zur Verwendung anstelle eines Festplattensystems in einem Computersystemspeicher für langfristige nicht-flüchtige Speicherung enthalten und die allein und in Kombination viele der anderen Aspekte dieser Erfindung einschließen.

Weitere Aspekte, Merkmale und Vorteile der vorliegenden Erfindung werden anhand der folgenden Beschreibung ihrer bevorzugten Ausführungsbeispiele klar, wobei die Beschreibung im Zusammenhang mit den beigefügten Zeichnungen zu sehen ist.

1A ist ein allgemeines Mikroprozessorsystem, welches das Flash EEPROM-Speichersystem der vorliegenden Erfindung umfasst;

1B ist ein schematisches Blockdiagramm, welches ein System zeigt, das eine Anzahl von Flash EEPROM Speicherchips und einen Steuerungschip enthält;

2 ist eine schematische Darstellung eines Systems von Flash EEPROM Chips, unter denen Speichersektoren zum Löschen ausgewählt sind;

3A ist ein Blockschaltbild auf einem Flash EEPROM Chip zum Verwirklichen des selektiven Löschens mehrfacher Sektoren gemäß dem bevorzugten Ausführungsbeispiel.

3B zeigt Einzelheiten eines typischen Registers, welches zur Auswahl eines Sektors zum Löschen benutzt wird, wie in 2A gezeigt;

4 ist ein Ablaufdiagramm, welches die Löschfolge beim selektiven Löschen mehrfacher Sektoren darstellt;

5 ist eine schematische Darstellung, die die Aufteilung eines Flash EEPROM Sektors in einen Datenbereich und einen redundanten Ersatzbereich zeigt;

6 ist ein Schaltblockdiagramm, das die Datenpfadsteuerung während der Leseoperation unter Verwendung des Fehler-Mapping-Schemas der bevorzugten Ausführungsform darstellt;

7 ist ein Schaltblockdiagramm, das die Datenpfadsteuerung während der Schreiboperation unter Verwendung des Fehler-Mapping-Schemas der bevorzugten Ausführungsform darstellt; und

8 ist ein Blockdiagramm, das den Schreib-Cache-Schaltkreis in dem Controller darstellt.

Ein Rechnersystem, in welches die verschiedenen Aspekte der vorliegenden Erfindung eingebaut sind, ist allgemein in 1A gezeigt. Zu einer typischen Rechnersystemarchitektur gehört ein an einen Systembus 23 angeschlossener Mikroprozessor 21 zusammen mit einem Hauptsystemspeicher für direkten Zugriff RAM 25 und mindestens eine oder mehrere Eingabe/Ausgabe-Vorrichtungen 27, zum Beispiel eine Tastatur, ein Monitor, Modem und dgl. Eine weitere Hauptkomponente eines Rechnersystems, die an einen typischen Rechnersystembus 23 angeschlossen ist, wird von einem langfristigen, nichtflüchtigen Speicher 29 großer Kapazität gebildet. Ein derartiger Speicher ist typischerweise ein Plattenlaufwerk mit Zehnern von Megabyte an Datenspeicherkapazität. Diese Information wird zur Verwendung beim laufenden Verarbeiten in den flüchtigen Speicher 25 des Systems zurückgeholt und kann leicht ergänzt, geändert oder abgewandelt werden.

Ein Aspekt der vorliegenden Erfindung ist der Ersatz eines speziellen Typs eines Halbleiterspeichersystems für das Plattenlaufwerk, aber ohne Einbuße an Nichtflüchtigkeit, leichtem Löschen und Neueingeben von Daten in den Speicher, Zugriffsgeschwindigkeit, niedrigen Kosten und Zuverlässigkeit. Erreicht wird das durch die Verwendung einer Matrix aus elektrisch lösch- und programmierbaren integrierten Festspeicher-Schaltungsbausteinen (EEPROM). Diese Art von Speicher bietet die zusätzlichen Vorteile, dass sie weniger Strom zum Arbeiten brauchen und ein geringeres Gewicht haben, als ein Festplattenlaufwerk mit magnetischen Speichermedien und aus diesem Grund besonders gut geeignet sind für tragbare Rechner mit Batteriebetrieb.

Der Massenspeicher 29 ist aus einer an den Rechnersystembus 23 angeschlossenen Speichersteuerung 31 und einer EEPROM-Matrix 33 integrierter Schaltungsbausteine aufgebaut. Daten und Anweisungen werden hauptsächlich über eine serielle Datenleitung 35 von der Steuerung 31 an die EEPROM-Matrix 33 übertragen. Daten und Zustandssignale werden in ähnlicher Weise vom EEPROM 33 über serielle Datenleitungen 37 an die Steuerung 31 übermittelt. In 1A sind weitere Steuer- und Zustandsschaltungen zwischen der Steuerung 31 und der EEPROM-Matrix 33 nicht gezeigt.

Unter Hinweis auf 1B ist die Steuerung 31 vorzugsweise hauptsächlich auf einem einzigen integrierten Schaltungsbaustein gebildet. Verbunden ist sie mit dem Systemadressen- und -datenbus 39, einem Teil des Systembus 33, und außerdem mit Systemsteuerleitungen 41, zu denen Unterbrechungs-, Lese-, Schreib- und weitere im Rechnersystem übliche Steuerleitungen gehören.

Die EEPROM-Matrix 33 enthält eine Anzahl integrierter Schaltungsbausteine als EEPROM-Chips 43, 45, 47 usw. Jeder von ihnen hat eine entsprechende Chipauswahl- und Freigabeleitung 49, 51 und 53 von Schnittstellenschaltungen 40. Die Schnittstellenschaltungen 40 dienen auch zur Anpassung zwischen den seriellen Datenleitungen 35, 37 und einer Schaltung 55. Speicherortadressen und Daten, die in die EEPROM-Chips 43, 45, 47 usw. eingeschrieben oder aus ihnen gelesen werden, werden von einem Bus 55 über Logik- und Registerschaltungen 57 und von dort über einen weiteren Bus 59 an jeden der Speicherchips 43, 45, 47 usw. übermittelt.

Für mäßige Speichergrößen kann der Massenspeicher 29 gemäß 1A und 1B auf einer einzigen gedruckten Leiterkarte verwirklicht sein. Die verschiedenen Leitungen der Systembusse 39 und 41 gemäß 1B sind in Anschlußstiften einer derartigen Karte zur Verbindung mit dem übrigen Rechnersystem über einen Steckverbinder abgeschlossen. Mit der Karte und ihren Komponenten sind auch verschiedene (nicht gezeigte) genormte Speisespannungen verbunden.

Für große Speichermengen ist unter Umständen das, was einzige Matrix 33 bequemerweise bietet, nicht genug. In einem solchen Fall können an die serielle Datenleitungen 35 und 37 des Steuerungschips 31 zusätzliche EEPROM-Matrizes angeschlossen werden, wie in 1B angedeutet. Das geschieht vorzugsweise alles auf einer einzigen gedruckten Leiterkarte; aber wenn der Raum dafür nicht ausreicht, können auch eine oder mehrere EEPROM-Matrizes auf einer zweiten gedruckten Leiterkarte verwirklicht sein, die physisch auf der ersten Karte angebracht und mit einem gemeinsamen Steuerungschip 31 verbunden wird.

Löschen von Speicherstrukturen

Im Fall von Systemauslegungen, bei denen Daten in Dateien oder Blöcken gespeichert werden, müssen die Daten mit überarbeiteten oder neuen Informationen periodisch auf den neuesten Stand gebracht werden. Es kann auch erwünscht sein, einige nicht mehr benötigte Informationen zu überschreiben, um zusätzliche Informationen aufnehmen zu können. In einem Flash EEPROM Speicher müssen die Speicherzellen zunächst gelöscht werden, ehe Information in ihnen untergebracht wird. Das bedeutet, dass einem Schreib (oder Programmier)-Vorgang immer ein Löschvorgang vorausgeht.

Bei herkömmlichen Speichervorrichtungen mit blitzartigem (Flash) Löschen wird der Löschvorgang auf verschiedene Weise durchgeführt. Bei einigen Vorrichtungen, beispielsweise dem Modell 27F-256 CMOS Flash EEPROM der Intel Corporation wird der gesamte Chip auf einmal gelöscht. Wenn nicht die gesamte Information auf dem Chip gelöscht werden soll, muss die Information zunächst zeitweilig gerettet werden und wird meistens in einen weiteren Speicher (typischerweise einen RAM) eingegeben. Dann wird die Information durch Zurückprogrammieren in die Vorrichtung erneut in dem nichtflüchtigen blitzartig löschbaren Speicher gespeichert. Das ist sehr langsam und erfordert als Zwischenspeicherplatz zusätzlichen Speicher.

Bei anderen Vorrichtungen, beispielsweise dem Modell 48512 Flash EEPROM-Chip der Seeq Technology Incorporated ist der Speicher in Blöcke (oder Sektoren) unterteilt, die jeweils für sich löschbar sind, aber nur immer einer zu einer Zeit. Durch Auswählen des gewünschten Sektors und Durchlaufen der Löschfolge wird der bezeichnete Bereich gelöscht. Während dabei zwar die Notwendigkeit eines Zwischenspeichers verringert ist, erfordert das Löschen in verschiedenen Bereichen des Speichers immer noch einen zeitraubenden sequentiellen Ansatz.

Bei der vorliegenden Erfindung ist der Flash EEPROM Speicher in Sektoren unterteilt, wobei alle Zellen innerhalb jedes Sektors gemeinsam löschbar sind. Jeder Sektor kann gesondert adressiert und zum Löschen ausgewählt werden. Ein wichtiges Merkmal besteht in der Möglichkeit, jede beliebige Kombination von Sektoren zum gemeinsamen Löschen auszuwählen. Das erlaubt ein viel schnelleres Systemlöschen, als wenn dies für jeden einzelnen gemacht wird, wie beim Stand der Technik.

2 veranschaulicht schematisch mehrfache Sektoren, die zum Löschen ausgewählt wurden. Ein Flash EEPROM System umfasst einen oder mehrere Flash EEPROM Chips, beispielsweise 201, 203, 205. Sie stehen über Leitungen 209 mit einer Steuerung (Controller) 31 in Verbindung. Typischerweise steht die Steuerung 31 ihrerseits mit einem (nicht gezeigten) Mikroprozessorsystem in Verbindung. Der Speicher in jedem Flash EEPROM Chip ist in Sektoren aufgeteilt, wobei alle Speicherzellen innerhalb eines Sektors gemeinsam löschbar sind. Zum Beispiel kann jeder Sektor 512 Byte (d.h. 512 × 8 Zellen) für den Benutzer verfügbar haben, und ein Chip kann 1024 Sektoren besitzen. Jeder Sektor ist individuell adressierbar und kann beim Löschen mehrerer Sektoren ausgewählt werden, zum Beispiel Sektoren 211, 213, 215, 217. Wie 2 zeigt, können die ausgewählten Sektoren auf einen einzigen EEPROM Chip begrenzt oder unter verschiedenen Chips in einem System verteilt sein. Die Sektoren, die ausgewählt wurden, werden alle zusammen gelöscht. Diese Fähigkeit erlaubt es dem Speicher und dem System der vorliegenden Erfindung, viel rascher zu funktionieren als die Architekturen gemäß dem Stand der Technik.

3A veranschaulicht eine Blockdiagrammschaltung 220 auf einem Flash EEPROM Chip (beispielsweise dem Chip 201 der 2), wobei einer oder mehrere Sektoren, zum Beispiel 211, 213 ausgewählt (oder nicht ausgewählt) sind, um gelöscht zu werden. Im wesentlichen wird jeder Sektor, beispielsweise 211, 213 dadurch ausgewählt oder markiert, dass der Zustand eines den jeweiligen Sektoren zugeordneten Löschfreigaberegisters, beispielsweise 221, 223 gesetzt wird. Der Auswahl- und anschließende Löschvorgang wird unter der Kontrolle der Steuerung 31 durchgeführt (siehe 2). Der Schaltkreis 220 steht über Leitungen 209 mit der Steuerung 31 in Verbindung. Befehlsinformation von der Steuerung wird in dem Schaltkreis 220 durch ein Befehlsregister 225 über eine serielle Schnittstelle 227 erfaßt. Sie wird dann von einem Befehlsdekodierer 229 dekodiert, der verschiedene Steuersignale abgibt. Auf ähnliche Weise wird Adresseninformation von einem Adressenregister 231 erfaßt und von einem Adressendekodierer 233 dekodiert.

Um zum Beispiel den Sektor 211 zum Löschen auszuwählen, sendet die Steuerung die Adresse des Sektors 211 an den Schaltkreis 220. Die Adresse wird in der Leitung 235 dekodiert und zusammen mit einem Löschfreigabe-Setzsignal auf dem Bus 237 verwendet, um einen Ausgang 239 des Registers 221 auf HOCH zu setzen. Hierdurch wird der Sektor 211 in einem anschließenden Löschvorgang freigegeben. Wenn auch der Sektor 213 gelöscht werden soll, kann in ähnlicher Weise das ihm zugeordnete Register 223 auf HOCH gesetzt werden.

Der Aufbau der Register, beispielsweise 221, 223 ist in 3B mehr im Einzelnen gezeigt. Das Löschfreigaberegister 221 ist ein SETZ/RÜCKSETZ-Haltespeicher. Seine Setzeingabe 241 wird vom Löschfreigabe-Setzsignal auf dem Bus 237, durchgesteuert durch das Adressendekodieren auf der Leitung 235, erhalten. Ähnlich wird die Rücksetzeingabe 243 vom Löschfreigabe-Aufhebesignal auf dem Bus 237, durchgesteuert durch das Adressendekodieren auf der Leitung 235, erhalten. Somit wird, wenn das Löschfreigabe-Setzsignal oder das Löschfreigabe-Aufhebesignal an alle Sektoren erteilt wird, dieses Signal nur an demjeniger. Sektor wirksam, der adressiert wird.

Nachdem alle Sektoren ausgewählt worden sind, die gelöscht werden sollen, gibt die Steuerung an den Schaltkreis 220 ebenso wie an alle anderen Chips im System einen globalen Löschbefehl auf einer Leitung 251 zusammen mit der hohen Spannung für das Löschen auf der Leitung 209 aus. Daraufhin löscht die Vorrichtung auf einmal alle Sektoren, die ausgewählt wurden (d.h. die Sektoren 211 und 213). Zusätzlich zum Löschen der gewünschten Sektoren innerhalb eines Chips erlaubt die Architektur des vorliegenden Systems auch die Auswahl von Sektoren über verschiedene Chips hinweg zum gleichzeitigen Löschen.

4(1) bis 4(11) zeigen den im Zusammenhang mit dem Schaltkreis 220 gemäß 3A angewandten Algorithmus. In 4(1) verschiebt die Steuerung die Adresse in den Schaltkreis 220, deren Dekodierung in der Leitung zum Löschfreigaberegister, welches dem zu löschenden Sektor zugeordnet ist, erfolgt. In 4(2) schiebt die Steuerung einen Befehl ein, der zu einem Löschfreigabesetzbefehl dekodiert wird, welcher zum Festhalten des Adressendekodiersignals auf dem Löschfreigaberegister für den adressierten Sektor verwendet wird. Hierdurch wird der Sektor für das anschließende Löschen markiert. Wenn gemäß 4(3) mehrere Sektoren markiert werden sollen, werden die im Hinblick auf die 4(1)4(2) beschriebenen Vorgänge so lange wiederholt, bis alle Sektoren, die gelöscht werden sollen, markiert worden sind. Nachdem alle für das Löschen beabsichtigten Sektoren markiert wurden, löst die Steuerung einen Löschzyklus aus, wie in 4(4) veranschaulicht.

Optimierte Verwirklichungen zum Löschen sind in den US Patenten 5 095 344, 5 172 338 und 5 163 021 offenbart. Die Offenbarungen dieser Patente sind hiermit durch Verweis enthalten. Die Flash EEPROM Zellen werden durch Anlegen eines Löschspannungsimpulses gelöscht, worauf ein Lesen erfolgt, um zu überprüfen, ob die Zellen in den „gelöschten" Zustand gelöscht wurden. Ist das nicht der Fall, werden so lange weiter Impulse angelegt und wiederholt verifiziert, bis alle Zellen als gelöscht nachgewiesen wurden. Durch das Löschen auf diese gesteuerte Art und Weise unterliegen die Zellen keinem übermäßigen Löschen, bei dem die Tendenz besteht, dass der EEPROM-Baustein vorzeitig altert und die Zellen schwerer zu programmieren sind.

Während die Gruppe ausgewählter Sektoren den Löschzyklus durchläuft, werden einige Sektoren den „Lösch"-Zustand früher erreichen als andere. Ein weiteres wichtiges Merkmal der vorliegenden Erfindung besteht in der Möglichkeit, jene Sektoren aus der Gruppe ausgewählter Sektoren auszuscheiden, von denen bereits verifiziert wurde, dass sie gelöscht sind, wodurch verhindert wird, dass sie übermäßig gelöscht werden.

Nochmals zu 4(4), nachdem alle Sektoren markiert wurden, die gelöscht werden sollen, beginnt die Steuerung mit einem Löschzyklus, um die Gruppe markierter Sektoren zu löschen. In 4(5) schiebt die Steuerung einen „Löschen Freigeben" genannten globalen Befehl in jeden Flash EEPROM Chip ein, der eine Löschung vornehmen soll. Dem folgt, in 4(5), dass die Steuerung die Löschspannungsleitung (Ve) während einer festgelegten Dauer auf einen festgelegten Wert anhebt. Am Ende der Löschdauerzeit wird diese Spannung von der Steuerung wieder abgesenkt. In 4(6) unterzieht die Steuerung dann die für das Löschen ausgewählten Sektoren einer Lesebestätigungsfolge. Wenn keiner der Sektoren bestätigt wird, werden gemäß 4(7) die in den 4(5)4(7) dargestellten Folgen wiederholt. Wird von einem oder mehreren Sektoren bestätigt, dass sie gelöscht sind, werden diese gemäß 4(8) und 3(9) aus der Folge herausgenommen. Das wird, unter Hinweis auch auf 3A, dadurch erzielt, dass die Steuerung jeden der bestätigten Sektoren adressiert und die zugehörigen Löschfreigaberegister mit einem Aufheben-Freigabebefehl auf dem Bus 237 zurück auf TIEF (LOW) freigibt. Die in den 4(5)4(10) dargestellten Folgen werden wiederholt, bis von allen Sektoren in der Gruppe bestätigt wurde, dass sie gelöscht sind, siehe 4(11). Bei Beendigung des Löschzyklus schiebt die Steuerung einen Befehl „kein Betrieb" (NOP) ein, und der globale Befehl „Löschen Freigeben" wird zum Schutz vor falschem Löschen zurückgezogen.

Die Möglichkeit der Wahl, welche Sektoren gelöscht werden sollen und welche nicht und bei welchen mit dem Löschen aufgehört werden soll, ist von Vorteil. Sie erlaubt es, Sektoren, die eher gelöscht wurden als die langsamer gelöschten Sektoren aus der Löschfolge herauszunehmen, so dass der Baustein keiner weiteren Beanspruchung unterliegt. Hierdurch wird die Zuverlässigkeit des Systems erhöht. Ein weiterer Vorteil besteht darin, dass ein Sektor, wenn er schlecht ist oder aus irgendeinem Grund nicht benutzt wird, übergangen werden kann, so dass kein Löschen innerhalb dieses Sektors geschieht. Wenn zum Beispiel ein Sektor fehlerhaft ist und Kurzschlüsse enthält, verbraucht er unter Umständen viel Strom. Ein bedeutsamer Systemvorteil wird durch die vorliegende Erfindung erzielt, die es möglich macht, diesen Sektor bei Löschzyklen zu überspringen, so dass die zum Löschen benötigte Leistung stark verringert werden kann.

Eine weitere Überlegung im Zusammenhang mit der Möglichkeit, die zu löschenden Sektoren innerhalb eines Bausteins auszuwählen liegt in der Leistungseinsparung für das System. Die Flexibilität der Löschkonfiguration gemäß der vorliegenden Erfindung macht eine Anpassung der Löscherfordernisse an die Bereitstellung der Systemleistungsfähigkeit möglich. Das kann geschehen durch eine Gestaltung der Systeme zur unterschiedlichen Löschung mittels Software auf einer festen Basis zwischen unterschiedlichen Systemen. Hierdurch ist es der Steuerung auch möglich, das Ausmaß des vorgenommenen Löschens durch Überwachung des Spannungspegels in einem System, beispielsweise einem Laptopcomputer adaptiv zu ändern.

Eine zusätzliche Leistungsfähigkeit des Systems gemäß der vorliegenden Erfindung ist die Fähigkeit, einen Rücksetzbefehl an einen Flash EEPROM Chip auszugeben, durch den alle Löschfreigabezwischenspeicherungen aufgehoben werden und verhindert wird, dass irgendwelche weiteren Löschzyklen stattfinden. Dies ist in den 3A und 3B durch das Rücksetzsignal auf der Leitung 261 dargestellt. Wenn man das global für alle Chips unternimmt, braucht man weniger Zeit zum Rücksetzen aller Löschfreigaberegister.

Eine zusätzliche Leistungsfähigkeit besteht in der Fähigkeit, Löschoperationen unabhängig von der Chipauswahl zu unternehmen. Sobald mit dem Löschen auf einigen der Speicherchips einmal begonnen wurde, kann die Steuerung im System auf weitere Speicherchips Zugriff nehmen und an ihnen Lese- und Schreibvorgänge vornehmen. Darüber hinaus kann der oder die Bausteine, die das Löschen durchführen, ausgewählt werden, und es kann eine Adresse in ihn oder sie für den nächsten Befehl im Anschluß an das Löschen geladen werden.

Fehler-Mapping

Physikalische Defekte in Speichervorrichtung verursachen harte Fehler. Daten werden immer dann fehlerhaft, wenn sie in fehlerhaften Zellen gespeichert werden. In herkömmlichen Speichervorrichtungen wie beispielsweise RAMs und Platten werden jedwede physikalischen Defekte, die im Herstellungsprozess entstehen, in der Fabrik behoben. In RAMs können redundante Ersatzspeicherzellen anstelle der fehlerhaften Zellen auf dem Chip aufgebracht werden. In dem herkömmlichen Plattenlaufwerk ist das Medium unvollkommen und anfällig für Fehler. Um dieses Problem zu beheben, haben Hersteller verschiedene Verfahren zum Arbeiten mit diesen vorhandenen Defekten entwickelt, wobei das am weitesten verbreitete das Fehler-Mapping auf Sektorenebene ist. In einem normalen Plattensystem ist das Medium in Zylinder und Sektoren unterteilt. Dabei ist der Sektor die Grundeinheit, in der Daten gespeichert werden. Wenn ein System in die verschiedenen Sektoren unterteilt wird, werden die Sektoren, die die Fehler enthalten, identifiziert und als schlecht und nicht durch das System zu verwenden markiert. Dies wird auf unterschiedliche Weise durchgeführt. Eine Fehlerkarten-Tabelle wird auf einem bestimmten Abschnitt auf der Platte gespeichert, der durch den Schnittstellencontroller zu verwenden ist. Darüber hinaus werden die schlechten Sektoren mit einer speziellen ID und Flags als schlecht markiert. Wenn der Fehler adressiert wird, werden die Daten, die normalerweise an diesem Ort gespeichert werden würden, an einem alternativen Ort untergebracht. Die Anforderung alternativer Sektoren veranlasst das System, Ersatzsektoren in bestimmten Intervallen oder Orten zuzuweisen. Dies reduziert die Menge an Speicherkapazität und ist außerdem ein Problem der Leistung hinsichtlich wie die alternativen Sektoren untergebracht werden.

Eine wichtige Anwendung der vorliegenden Erfindung ist das Ersetzen einer herkömmlichen Plattenspeichervorrichtung durch ein System, das eine Gruppe von Flash EEprom Speicherchips enthält. Das EEprom System wird vorzugsweise zum Emulieren einer herkömmlichen Platte eingerichtet und kann als „Festkörperplatte" betrachtet werden.

In einem „Platten"-System, das mit solchen Festkörperspeichervorrichtungen hergestellt wird, erfordern die nach geringen Kosten strebenden Überlegungen ein wirkungsvolles Behandeln von Fehlern. Ein weiteres wichtiges Merkmal der Erfindung befähigt das Fehlerkorrekturschema, soviel wie möglich Speicherung zu erhalten. Im Wesentlichen fordert es die fehlerhaften Zellen zum Remapping auf einer Zelle-pro-Zelle-Basis anstelle des Entfernens des gesamten Sektors (typischerweise 512 Bytes) immer dann auf, wenn ein Fehler in ihm auftritt. Dieses Schema ist besonders für das Flash EEprom Medium geeignet, da die Mehrheit der Fehler eher Bitfehler als ein langer Stream von angrenzenden Fehlern sein wird, wie dies in einem herkömmlichen Plattenmedium der Fall ist.

In beiden Fällen des Standes der Technik, des RAM und der Magnetplatte, besteht, wenn die Vorrichtung erst einmal aus der Fabrik ausgeliefert wurde, keine oder nur wenig Möglichkeit zum Ersetzen von harten Fehlern, die aus physikalischen Defekten resultieren, die zu einem späteren Zeitpunkt während des normalen Betriebes auftreten. Dann stützen sich die Fehlerkorrekturen hauptsächlich auf Schemata, die Fehlerkorrekturcodes (ECC – error correction codes) verwenden.

Die Natur der Flash EEprom Vorrichtung basiert auf einer höheren Rate der Zellenstörung insbesondere mit zunehmender Zahl der Programmier-/Löschzyklen. Die harten Fehler, die sich im Laufe der Benutzung anhäufen, würden schließlich den Fehlerkorrekturcode ECC überfordern und die Vorrichtung unbenutzbar machen. Ein wichtiges Merkmal der vorliegenden Erfindung ist die Fähigkeit des Systems, harte Fehler, immer dann zu korrigieren, wenn diese auftreten. Fehlerhafte Zellen werden durch ihr Unvermögen, ein korrektes Programmieren oder Löschen durchzuführen, erkannt. Darüber hinaus werden fehlerhafte Zeilen auch während des Lesevorgangs erkannt und durch den ECC lokalisiert. Sobald die fehlerhafte Zelle identifiziert ist, wendet der Controller Fehler-Mapping an, um die fehlerhafte Zelle durch eine Ersatzzelle zu ersetzen, die gewöhnlicherweise innerhalb desselben Sektors positioniert ist. Diese dynamische Korrektur harter Fehler verlängert mehr als die herkömmlichen Fehlerkorrekturschemata die Lebensdauer der Vorrichtung erheblich.

Ein weiteres Merkmal der vorliegenden Erfindung ist ein adaptiver Ansatz der Fehlerkorrektur. Der Fehlerkorrekturcode (ECC) wird die ganze Zeit über zum Korrigieren von sowohl weichen als auch jedweden auftretenden harten Fehlern verwendet. Sobald ein harter Fehler erkannt wird, wird Fehler-Mapping angewendet, um die fehlerhafte Zelle durch eine Ersatzzelle in demselben Sektorenblock zu ersetzen. Lediglich in dem Fall, in dem die Anzahl der fehlerhaften Zellen in einem Sektor die Kapazität des Fehler-Mappings für diesen bestimmten Sektor übersteigt, wird der gesamte Sektor so wie in einem herkömmlichen Plattensystem ersetzt. Dieses Schema minimiert die Abnutzung ohne Beeinträchtigung der Verlässlichkeit.

5 illustriert die Speicherarchitektur für das Remapping-Schema auf Zellenebene. Wie vorangehend beschrieben, ist der Flash EEprom Speicher in Sektoren unterteilt, wobei alle Zellen innerhalb eines Sektors gemeinsam löschbar sind. Die Speicherarchitektur hat einen typischen Sektor 401, der in einen Datenabschnitt 403 und einen Ersatz- (oder Schatten-) Abschnitt 405 unterteilt ist. Der Datenabschnitt 403 ist der Speicherplatz, der dem Benutzer zur Verfügung steht. Der Ersatzabschnitt 405 ist des Weiteren in einen alternativen Bereich für fehlerhafte Daten 407, einen Fehlerkarten-Bereich 409, einen Header-Bereich 411, einen Fehlerkorrekturcode ECC sowie in weitere Bereiche 413 unterteilt. Diese Bereiche enthalten Informationen, die durch den Controller zum Behandeln der Fehler verwendet werden können sowie andere Overheadinformationen wie beispielsweise Header und ECC.

Immer dann, wenn eine fehlerhafte Zelle in dem Sektor erkannt wird, wird eine gute Zelle in dem alternativen Bereich für fehlerhafte Daten 407 zugewiesen, um die Daten zu sichern, die für die fehlerhafte Zelle bestimmt wurden. Dementsprechend wird, selbst wenn die fehlerhafte Zelle die Daten fehlerhaft speichert, eine fehlerfreie Kopie in der Sicherungszelle gespeichert. Die Adressen der fehlerhaften Zelle und der Sicherungszelle werden als Fehlerzeiger in der Fehlerkarte 409 gespeichert.

Hierbei sollte beachtet werden, dass das Unterteilen zwischen dem Benutzerdatenabschnitt 403 und dem Ersatzabschnitt 405 nicht streng festgelegt sein muss. Die relative Größe der verschiedenen unterteilten Bereiche kann auf Logikbasis neu zugewiesen werden. Auch das Gruppieren der verschiedenen Bereiche dient im Wesentlichen dem Zwecke der Beschreibung und ist nicht notwendigerweise tatsächlich derart gestaltet. So wurde beispielsweise der alternativen Bereich für fehlerhafte Daten 407 schematisch unter dem Ersatzabschnitt 405 gruppiert, um den Punkt darzustellen, an dem der Raum, der durch ihn belegt ist, dem Benutzer nicht länger zur Verfügung steht.

In einem Lesevorgang liest der Controller zunächst den Header, die Fehlerkarte und die alternativen Fehlerdaten. Anschließend liest er die eigentlichen Daten. Er führt mit Hilfe der Fehlerkarte Protokoll über die fehlerhaften Daten und den Ort der Ersatzdaten. Immer dann, wenn eine fehlerhafte Zelle erkannt wird, ersetzt der Controller ihre schlechten Daten mit guten Daten aus den alternativen Fehlerdaten.

6 illustriert die Datenpfadsteuerung während der Leseoperation in dem bevorzugten Ausführungsbeispiel. Eine Speichervorrichtung 33, die eine Vielzahl von Flash EEprom Chips enthalten kann, befindet sich unter der Kontrolle der Steuerung (Controller) 31. Die Steuerung 31 ist ihrerseits Bestandteil eines Mikrocomputersystems unter der Kontrolle eines Mikroprozessors (nicht gezeigt). Um das Lesen eines Sektors auszulösen, lädt der Mikroprozessor eine Speicheraddressen-Erzeugungseinrichtung 503 in der Steuerung mit einer Speicheradresse zum Starten der Leseoperation. Diese Information wird über eine Mikroprozessor-Anschlussschnittstelle 505 geladen. Anschließend lädt der Mikroprozessor eine DMA-Steuerung 507 mit dem Startort in dem Zwischenspeicher oder der Busadresse, zu der die gelesenen Daten gesendet werden sollen. Anschließend lädt der Mikroprozessor die Headerinformationen (Head, Zylinder und Sektor) in eine Warteregister-Datei 509. Abschließend lädt der Mikroprozessor eine Befehls-Ablaufsteuerung 511 mit einem Lesebefehl, bevor er die Steuerung an den Controller 31 abgibt.

Nach der Annahme der Steuerung adressiert der Controller 31 zunächst den Header des Sektors und bestätigt, dass auf den Speicher an der Adresse zugegriffen wird, die der Benutzer spezifiziert hatte. Dies wird durch die folgenden Folge erreicht. Der Controller wählt einen Speicherchip (Chip-Auswahl) von der Speichervorrichtung 33 aus und verschiebt die Adresse für den Header-Bereich von der Adressen-Erzeugungseinrichtung 503 hinaus zu dem ausgewählten Speicherchip in der Speichervorrichtung 33. Anschließend liest die Speichervorrichtung die zu ihr gesendete Adresse und beginnt mit dem Senden von seriellen Daten von dem adressierten Sektor zurück zu dem Controller. Ein Empfänger 515 in dem Controller empfängt diese Daten und bringt sie in ein Parallelformat. In einem Ausführungsbeispiel vergleicht der Controller, sobald ein Byte (8 Bits) kompiliert ist, die empfangenen Daten mit den Header-Daten, die vorher durch den Mikroprozessor in der Warteregister-Datei 509 gespeichert wurden. Wenn der Vergleich korrekt ist, wird der geeignete Ort bestätigt und die Folge wird fortgesetzt.

Als Nächstes liest die Steuerung (Controller) 31 die Fehlerzeiger und lädt diese schlechten Adressenorte in die Warteregister-Datei 509. Anschließend liest die Steuerung die alternativen Fehlerdaten, die zum Ersetzen dieser schlechten Bits geschrieben wurden, als diese geschrieben wurden. Die alternativen Bits werden in einer alternativen Fehlerdatendatei 517 gespeichert, auf die beim Lesen der Datenbits zugegriffen wird.

Wenn der Header als Übereinstimmung bestimmt worden ist und die Fehlerzeiger und alternativen Bits geladen worden sind, beginnt die Steuerung mit dem Verschieben der am weitesten unten liegenden Adresse des gewünschten Sektors, der gelesen werden soll. Die Daten von dem Sektor in der Speichervorrichtung 33 werden änschließend in den Steuerungschip 31 verschoben. Der Empfänger 515 wandelt die Daten in ein Parallelformat um und überträgt jedes Byte in ein vorrübergehendes Warte-FIFO (Datenregister) 519 zum Aussenden aus der Steuerung.

Es wird eine Befehlskettenarchitektur angewendet, um effizienten Datendurchlauf beim Ausgeben der Daten über die Steuerung von dem Empfänger 515 zu dem FIFO 519 zu gewährleisten. Während jedes Datenbit von dem Speicher empfangen wird, vergleicht die Steuerung die Adresse der gesendeten Daten (gespeichert in der Adressen-Erzeugungseinrichtung 507) mit der Fehlerzeiger-Karte (gespeichert in der Registerdatei 509). Wenn die Adresse als ein schlechter Ort bestimmt wird, wird durch eine Übereinstimmung an der Ausgabe des Komparators 521 das schlechte Bit von dem Speicher, das durch dem Empfänger 515 empfangen wurde, durch das gute Bit für diesen Ort ersetzt. Das gute Bit wird von der alternativen Fehlerdatendatei 517 erhalten. Dies wird durch Umschalten des Multiplexers 523 zum Empfangen des guten Bits von der alternativen Fehlerdatendatei anstelle des schlechten Bits von dem Empfänger 515 durchgeführt, wenn die Daten zu dem FIFO 519 gesendet werden. Wenn die korrigierten Daten in dem FIFO sind, sind sie für das Senden zu dem Zwischenspeicher oder dem Systemspeicher (nicht gezeigt) bereit. Die Daten werden durch den DMA- [direkter Speicherzugriff] Controller 507 der Steuerung von dem FIFO 519 der Steuerung zu dem Systemspeicher gesendet. Dieser Controller 507 fordert anschließend einen Zugriff auf den Systembus an, erhält diesen, gibt eine Adresse aus und gibt die Daten über eine Ausgabeschnittstelle 525 zu dem Systembus aus. Dies wird durchgeführt, während jedes Byte in den FIFO 519 geladen wird. Während die korrigierten Daten in den FIFO geladen werden, werden sie außerdem in eine ECC-Hardware 527 geladen, wo die Datendatei durch den Fehlerkorrekturcode ECC behandelt wird.

Auf diese Weise werden in der beschriebenen Vorgehensweise die Daten, die von der Speichervorrichtung 33 gelesen werden, zu der Steuerung 31 ausgegeben, um zu dem System gesendet zu werden. Dieser Prozess wird so lange fortgesetzt, bis das letzte Bit der adressierten Daten übertragen ist.

Trotz des Fehler-Mappings von vorher erkannten fehlerhaften Zellen, können neue harte Fehler seit dem Zeitpunkt des letzten Mappings auftreten. Da das dynamische Fehler-Mapping fortlaufend neue fehlerhafte Zellen „entfernt", würde der kürzlichste harte Fehler, der zwischen dem Fehler-Mapping auftritt, angemessen durch den Fehlerkorrekturcode ECC behandelt werden. Wenn die Daten zu der Steuerung 31 ausgegeben werden, gibt die Steuerung die ECC-Bits in die ECC-Hardware 527 ein, um zu bestimmen, ob der gespeicherte Wert mit dem soeben berechneten Restwert übereinstimmte. Wenn eine Übereinstimmung vorliegt, waren die Daten, die zu dem Systemspeicher übertragen wurden, gut, und die Leseoperation wurde abgeschlossen. Wenn jedoch der ECC einen Fehler registriert, wird eine Korrekturberechnung mit den zu dem Systemspeicher gesendeten Daten durchgeführt, und die korrigierten Daten werden erneut übertragen. Das Verfahren zum Berechnen des Fehlers kann in der Hardware oder in der Software durch herkömmlich angewendete Verfahren durchgeführt werden. Der ECC ist ebenfalls in der Lage, die fehlerhafte Zellen, die den Fehler verursachen, zu berechnen und zu lokalisieren. Dies kann durch die Steuerung 31 verwendet werden, um die Fehlerkarte zu aktualisieren, die mit dem Sektor, in dem die fehlerhafte Zelle erkannt wird, assoziiert ist. Auf diese Weise werden harte Fehler fortlaufend aus dem Flash EEprom System entfernt.

7 illustriert die Datenpfadsteuerung während der Schreiboperation in dem bevorzugten Ausführungsbeispiel. Der erste Abschnitt einer Schreibfolge ist der vorangehend beschriebenen Lesefolge ähnlich. Zuerst lädt der Mikroprozessor die Adressenzeiger für die Speichervorrichtung 33 und den DMA wie in der Lesefolge. Darüber hinaus lädt er den gewünschten Header in die Adressen-Erzeugungseinrichtung 503 und die Befehlskette in die Befehlsablaufsteuerung 511. Zuerst wird die Befehlskette mit einem gelesenen Header-Befehl geladen. Anschließend wird die Steuerung an die Steuerung 31 übergeben. Anschließend gibt die Steuerung die Adresse und den Befehl zu der Speichervorrichtung 33, wie in der Lesefolge, aus. Die Speichervorrichtung sendet die Header-Daten über den Empfänger 515 der Steuerung zurück. Die Steuerung vergleicht die empfangenen Header-Daten mit dem erwarteten Wert (gespeichert in der Warteregister-Datei 509). Wenn der Vergleich korrekt ist, wird der geeignete Ort bestätigt und die Folge wird fortgesetzt. Anschließend lädt die Steuerung die fehlerhaften Adressenzeiger von der Speichervorrichtung in die Warteregister-Datei 509 und die alternativen Daten in die alternative Fehlerdatendatei 517.

Als Nächstes beginnt die Steuerung mit dem Abrufen der Schreibdaten von dem Systemspeicher (nicht dargestellt). Die Steuerung führt dies durch Erhalten des Zugriffs auf den Systembus durch, gibt die Speicher- oder die Busadresse aus und führt den Lesezyklus durch. Sie zieht die Daten über eine Eingabeschnittstelle 603 in einen FIFO 601. Anschließend verschiebt die Steuerung die Ausgangssektorenadresse (die am weitesten unten liegende Byteadresse) von der Adressen-Erzeugungseinrichtung 503 zu der ausgewählten Speichervorrichtung 33. Anschließend folgen Daten von dem FIFO 601. Diese Daten werden über Multiplexer 605 und 513 geleitet und in ein serielles Format umgewandet, bevor sie zu der Speichervorrichtung 33 gesendet werden. Diese Folge wird so lange fortgesetzt, bis alle Bytes für einen Schreibzyklus in den ausgewählten Speicher geladen sind.

Es wird eine Befehlskettenarchitektur angewendet, um ausreichend Datendurchlauf beim Ausgeben der Daten von dem FIFO 601 zu dem ausgewählten Speicher zu gewährleisten. Die Daten, die aus dem FIFO 601 ausgegeben werden, werden zu der ECC-Hardware 527 gesendet, wo ein Restwert innerhalb des ECC berechnet wird. In der nächsten Phase vergleicht, wenn die Daten über die Multiplexer 605 und 513 zu der Speichervorrichtung gesendet werden, der Komparator 521 ihre Adresse von der Adressen-Erzeugungseinrichtung 503 mit den Werten der fehlerhaften Zeigeradressen in der Warteregister-Datei 509. Wenn eine Übereinstrimmung vorliegt, die anzeigt, dass ein fehlerhafter Ort in Kürze geschrieben wird, speichert die Steuerung dieses Bit in der alternativen Fehlerdatendatei 517. Zur gleichen Zeit werden alle zu dem Speicher gesendeten schlechten Bits als „Null"-Werte gesendet.

Nachdem die Bytes für einen Schreibzyklus in die ausgewählte Speichervorrichtung geladen worden sind, gibt die Steuerung einen Programmierbefehl zu der Speichervorrichtung aus und beginnt mit einem Schreibzyklus. Optimierte Implementierungen der Schreiboperation für Flash EEprom Vorrichtungen wurden in den zwei voranstehenden zitierten Parallel-US-Patentanmeldungen Seriennummer 204.175 und eine mit dem Titel „Multi-State EEprom Read and Write Circuits and Techniques" offenbart. Relevante Abschnitte der Offenbarungen bilden durch Verweis einen Bestandteil des vorliegenden Dokumentes. Kurz gesagt, legt während des Schreibzyklus die Steuerung einen Impuls von Programmier- (oder Schreib) Spannungen an. Anschließend wird eine Lesebestätigung durchgeführt, um zu bestimmen, ob alle Bits angemessen programmiert worden sind. Wenn die Bits nicht bestätigt wurden, wiederholt die Steuerung den Programmier-/Verifizierungszyklus so lange, bis alle Bits korrekt programmiert worden sind.

Kann ein Bit nach einem verlängerten Programmier-/Verifizierungszyklus immer noch nicht bestätigt werden, bestimmt die Steuerung dieses Bit als fehlerhaft und aktualisiert dementsprechend die Fehlerkarte. Das Aktualisieren wird dynamisch durchgeführt, sobald die fehlerhafte Zelle erkannt wird. Im Falle der Löschbestätigung werden ähnliche Schritte durchgeführt.

Nachdem alle Bits programmiert und bestätigt worden sind, lädt die Steuerung die nächsten Datenbits von dem FIFO 601 und adressiert den nächsten Ort in dem adressierten Sektor. Anschließend führt sie eine weitere Programmier-/Verifizierungsfolge mit dem nächsten Satz von Bytes durch. Die Folge wird bis zum Ende der Daten für diesen Sektor durchgeführt. Wenn dieser Zustand erreicht ist, adressiert die Steuerung den Schattenspeicher (Header-Bereich), der mit dem Sektor assoziiert ist (siehe 5) und schreibt die Inhalte der ECC-Register in diesen Bereich.

Darüber hinaus wird die Sammlung von Bits, die als fehlerhaft markiert wurde und in der alternativen Fehlerdatendatei 516 gespeichert wurde, anschließend in einen Speicher an den alternativen Fehlerdatenorten (siehe 5) geschrieben, wodurch die guten Bitwerte, die in einem darauffolgenden Lesevorgang verwendet werden sollen, gespeichert werden. Wenn diese Datengruppen geschrieben und bestätigt sind, wird die Schreiboperation für den Sektor als abgeschlossen erachtet.

Die vorliegende Erfindung besitzt darüber hinaus auch eine Vorrichtung für das Fehler-Mapping für einen ganzen Sektor, jedoch nur, nachdem die Anzahl der fehlerhaften Zellen in dem Sektor die Kapazität für Fehler-Mapping der Zelle für diesen Sektor überschritten hat. Es wird eine Zählung der Anzahl von fehlerhaften Zellen in jedem Sektor geführt. Wenn die Anzahl in einem Sektor einen vorgegebenen Wert übersteigt, markiert die Steuerung diesen Sektor als fehlerhaft, und führt ein Mapping zu einem anderen Sektor durch. Der Fehlerzeiger für die verbundenen Sektoren kann in einer Fehlerkarte eines Sektors untergebracht sein. Die Fehlerkarte des Sektors kann in dem ursprünglichen fehlerhaften Sektor untergebracht sein, wenn sein Ersatzbereich ausreichend fehlerfrei ist. Wenn jedoch der Datenbereich des Sektors ein große Anzahl von Fehlern angehäuft hat, besteht eine große Wahrscheinlichkeit, dass der Ersatzbereich ebenfalls voll mit Fehlern ist.

Dementsprechend wird es in einem weiteren Ausführungsbeispiel bevorzugt, die Sektoren-Fehlerkarte in einem anderen Speicher, der durch die Steuerung unterhalten wird, unterzubringen. Der Speicherplatz kann in der Steuerungshardware untergebracht sein oder Teil des Flash EEprom Speichers sein. Wenn der Steuerung eine Adresse zum Datenzugriff zugeführt wird, vergleicht die Steuerung diese Adresse mit der Sektoren-Fehlerkarte. Wenn eine Übereinstimmung vorliegt, wird der Zugriff auf den fehlerhaften Sektor verweigert, und es wird die Ersatzadresse, die in der Fehlerkarte vorhanden ist, eingegeben, und es wird stattdessen auf den entsprechenden Ersatzsektor zugegriffen.

In einem weiteren Ausführungsbeispiel wird das Remapping eines Sektors durch den Mikroprozessor durchgeführt. Der Mikroprozessor sieht sich die eingehende Adresse an und vergleicht sie mit der Sektoren-Fehlerkarte. Wenn eine Übereinstimmung vorliegt, gibt er den Befehl nicht zu der Steuerung aus, sondern ersetzt stattdessen den alternativen Ort als den neuen Befehl.

Abgesehen von der viel höheren Geschwindigkeit der Festkörperplatte, besteht ein weiterer Vorteil in dem Nicht-Vorhandensein von mechanischen Komponenten. Die langen Suchzeiten und turnusmäßigen Latentzeiten, die in Plattenlaufwerken inherent sind, treten nicht auf. Darüber hinaus sind die langen Synchronisierungszeiten, Synchronisationsmarkierungs-Erkennungen und Schreiblücken nicht erforderlich. Demzufolge ist der Steuerungsaufwand, der für das Zugreifen auf den Ort, an dem die Daten gelesen oder an dem die Daten geschrieben werden sollen, weitaus kleiner. Alle diese Vereinfachungen und das Fehlen von Einschränkungen resultieren in einem weitaus schnelleren System mit erheblich reduzierten Steuerungsaufwänden. Darüber hinaus können die Dateien an Speichern in einer beliebigen gewünschten Adressenreihenfolge angeordnet werden, wobei die Steuerung lediglich wissen muss, wie der Zugriff auf die jeweils erforderlichen Daten praktiziert werden kann.

Ein weiteres Merkmal der Erfindung besteht darin, dass das Fehler-Mapping ohne die Notwendigkeit des Unterbrechens des Datenstroms, der zu oder von einem Sektor übertragen wird, implementiert wird. Die Daten innerhalb eines Blocks, der Fehler enthalten kann, werden ungeachtet dessen übertragen, und im Anschluss korrigiert. Das Bewahren des sequenziellen Adressierens resultiert selbst in einer höheren Geschwindigkeit. Darüber hinaus ermöglicht es die Implementierung einer wirkungsvollen Befehlskettenarchitektur in den Datenpfaden für die Lese- und den Schreiboperation.

Schreib-Cache-System

Im Allgemeinen wird ein Cache-Speicher zum Beschleunigen der Leistung von Systemen mit langsameren Zugriffsvorrichtungen verwendet. So ist beispielsweise in einem Computersystem der Zugriff auf Daten von einem Plattenspeicher langsam, und die Geschwindigkeit würde erheblich erhöht werden, wenn die Daten von dem viel schnelleren RAM erhalten werden könnten. Typischerweise wird ein Teil des System RAM als Cache zum vorrübergehenden Halten der Daten, auf die zuletzt von der Platte zugegriffen wurde, verwendet. Wenn die Daten das nächste Mal benötigt werden, können sie von dem schnellen Cache anstelle der langsamen Platte erhalten werden. Das Schema funktioniert gut in Situationen, in denen mit denselben Daten wiederholt gearbeitet wird. Dies ist in den meisten Strukturen und Programmen der Fall, da der Computer dazu neigt, beim Ausführen eines Programms innerhalb eines kleinen Speicherbereiches zu einer Zeit zu arbeiten. Ein weiteres Beispiel des Anwendens des Cache-Speichers ist die Verwendung von schnelleren SRAM-Caches, um den Zugriff auf Daten, die normal in kostengünstigeren jedoch langsameren DRAMs gespeichert wurden, zu erhöhen.

Die meisten der herkömmlichen Cache-Auslegungen sind Lese-Cache-Speicher zum Beschleunigen des Lesens von dem Speicher. In einigen Fällen werden Schreib-Caches zum Beschleunigen des Schreibens in Speicher verwendet. In dem Fall von Schreiben in Systemspeicher (beispielsweise Platten) werden die Daten jedoch immer noch direkt jedes Mal, wenn sie auftreten, in den Systemspeicher geschrieben, während sie zur gleichen Zeit auch in den Cache geschrieben werden. Dies wird deshalb getan, weil Sorge dahingehend besteht, dass aktualisierte Datendateien im Fall eines Stromausfalls verloren gehen könnten. Wenn die Schreibdaten nur in dem Cache-Speicher (flüchtig) geschrieben werden, resultiert ein Stromausfall in dem Verlust der neuen aktualisierten Dateien von dem Cache, noch ehe die alten Daten in dem Systemspeicher (nichtflüchtig) aktualisiert worden sind. Das System wird anschließend mit den alten Daten arbeiten, wenn diese Dateien in der weiteren Verarbeitung verwendet werden. Die Notwendigkeit, jedes Mal in den Hauptspeicher zu schreiben, schlägt den Cache-Speicherungs-Mechanismus für das Schreiben. Im Fall des Verwendens von Lese-Cache-Speichern besteht diese Besorgnis nicht, da die Daten, die von dem Cache verloren gehen könnten, eine Sicherungskopie auf der Platte haben.

In der vorliegenden Erfindung wird ein Flash EEprom System verwendet, um nicht-flüchtige Speicher anstelle der herkömmlichen Systemspeicher wie beispielsweise Plattenspeicher bereitzustellen. Der Flash EEprom Speicher ist jedoch Abnutzung durch übermäßig viele durchgeführte Programmier-/Löschzyklen ausgesetzt. Selbst mit der verbesserten Flash EEprom Speichervorrichtung, wie offenbart in den Parallel-US-Patentanmeldungen, Seriennummer 204.175 und der einen mit dem Titel „Mutti-State EEprom Read and Write Circuits and Techniques", von Sanjay Mehrotra und Dr. Eliyahou Harari, die an dem gleichen Tag wie die vorliegenden Anmeldung eingereicht wurden, beträgt die Belastungsgrenze ungefähr 106 Programmier-/Löschzyklen. In einer vorausgesagten Lebensdauer von zehn Jahren der Vorrichtung entspricht dies einer Begrenzung eines Programmier-/Löschzyklus aller 5 Minuten. Dies kann bei einer normalen Benutzung des Computers verschwindend gering sein.

Um dieses Problem zu beheben, wird ein Cache-Speicher in einer neuartigen Weise verwendet, um die Flash EEprom Speichervorrichtung davor zu bewahren, dass sie zu vielen Programmier-/Löschzyklen ausgesetzt ist. Die hauptsächliche Funktion des Caches besteht in seinem Einsatz beim Schreiben in den Flash EEprom Speicher und nicht beim Lesen von dem Flash EEprom Speicher, im Gegensatz zu herkömmlichen Caches. Anstelle des Schreibens in Flash EEprom Speicher jedes Mal, wenn die Daten aktualisiert werden, kann mit den Daten mehrere Male in dem Cache gearbeitet werden, bevor sie in dem Flash EEprom Speicher gespeichert werden. Dadurch wird die Anzahl der Schreiboperationen in den Flash EEprom Speicher reduziert. Darüber hinaus besteht durch Schreiben des Großteils in den schnelleren Cache-Speicher und durch Reduzieren der Anzahl von Schreiben in den langsameren Flash EEprom Speicher ein zusätzlicher Vorteil in dem Erhöhen des Schreibdurchsatzes beim Systemschreiben.

Ein Cache-Speicher mit einer relativ kleinen Größe ist zum Implementieren der vorliegenden Erfindung ziemlich effektiv. Dies hilft beim Überwinden des Problems des Datenverlustes in dem flüchtigen Cache-Speicher während einem Stromausfall. In diesem Fall ist es relativ einfach, über ausreichend Reservespannung zu verfügen, um den Cache-Speicher lange genug im Betrieb zu halten und die Daten in einen nicht-flüchtigen Speicher wie beispielsweise einen speziell reservierten Bereich in dem Flash EEprom Speicher zu speichern. In dem Fall einer Reduzierung der Stromaufnahme oder eines Stromausfalls für das System kann das Schreib-Cache-System von dem System isoliert werden, und eine dedizierte aufladbare Speisespannungsquelle kann eingeschaltet werden, nur um das Cache-System und den reservierten Bereich in dem Flash EEprom Speicher mit Spannung zu versorgen.

8 illustriert schematisch ein Cache-System 701 als Bestandteil der Steuerung gemäß der vorliegenden Erfindung. In einem Fall ist das Cache-System 701 mit der Flash EEprom Matrix 33 verbunden. In einem anderen Fall ist es mit dem Mikroprozessorsystem (nicht gezeigt) über eine Hostschnittstelle 703 verbunden. Das Cache-System 701 hat zwei Speicher. Einer ist ein Cache-Speicher 705 zum vorrübergehenden Halten von Schreibdatendateien. Der andere ist ein Tag-Speicher 709 zum Speichern von relevanten Informationen über die Datendateien, die in dem Cache-Speicher 705 gehalten werden. Ein Speicherzeit-/Steuerungsschaltkreis 713 steuert das Schreiben von Datendateien von dem Cache-Speicher 705 in den Flash EEprom Speicher 33. Der Speicher-Steuerungsschaltkreis 713 reagiert auf die Informationen, die in dem Tag-Speicher gespeichert sind, ebenso wie eine Spannungserfassungseingang 715, der über die Hostschnittstelle 703 über eine Leitung 717 mit der Speisespannungsquelle des Mikroprozessorsystems verbunden ist. Ein Stromausfall in dem Mikroprozessorsystem wird durch den Speicher-Steuerungsschaltkreis 713 erfasst, der anschließend sämtliche Datendateien in dem flüchtigen Cache-Speicher 705 in den nicht-flüchtigen Flash EEprom Speicher 33 lädt.

In der vorliegenden Erfindung ist die Flash EEprom-Matrix 33 in Sektoren unterteilt (typischerweise mit einer 512 Bytegröße), so dass alle Speicherzellen innerhalb eines Sektors gemeinsam löschbar sind. Demzufolge kann jeder Sektor zum Speichern einer Datendatei in Betracht gezogen werden, und eine Schreiboperation in dem Speicher arbeitet mit einer oder mehreren solchen Dateien.

Während des Lesens eines neuen Sektors in der Flash EEprom-Matrix 33 wird die Datendatei ausgelesen und direkt über die Steuerung zu dem Host gesendet. Die Datei wird nicht zum Füllen des Cache-Speichers 705 verwendet, wie dies in herkömmlichen Cache-Systemen der Fall ist.

Nachdem das Hostsystem die Daten innerhalb einer Datei verarbeitet hat und sie zurück in den Flash EEprom Speicher 33 schreiben möchte, greift es mit Hilfe einer Schreibzyklus-Anforderung auf das Cache-System 701 zu. Anschließend interpretiert die Steuerung diese Anforderungen und wird in dem Zyklus aktiv.

In einem Ausführungsbeispiel der Erfindung wird die Datendatei in den Cache-Speicher 705 geschrieben. Zur gleichen Zeit werden zwei andere Informationen über die Datendatei in einen Tag-Speicher 709 geschrieben. Die erste ist ein Dateizeiger, der die Datei identifiziert, die in dem Cache-Speicher 705 vorhanden ist. Die zweite ist ein Zeitstempel, der die Zeit angibt, zu der die Datei zuletzt in den Cache-Speicher geschrieben wurde. Auf diese Weise wird jedes Mal, wenn der Host in den Flash EEprom Speicher 33 schreiben möchte, die Datendatei eigentlich zuerst einmal in dem Cache-Speicher 705 zusammen mit Zeigern und Zeitstempeln gespeichert, die in dem Tag-Speicher 709 gespeichert werden.

Wenn in einem weiteren Ausführungsbeispiel der vorliegenden Erfindung ein Schreibvorgang durch den Host auftritt, überprüft die Steuerung zunächst, um festzustellen, ob diese Datei bereits in dem Cache-Speicher 795 vorhanden war oder in dem Tag-Speicher 709 markiert wurde. Wenn sie nicht markiert wurde, wird die Datei in den Flash EEprom Speicher 33 geschrieben, während ihre Identifizierung und ihr Zeitstempel in den Tag-Speicher 709 geschrieben werden. Wenn die Datei bereits in dem Cache-Speicher vorhanden ist oder markiert worden ist, wird sie in dem Cache-Speicher aktualisiert und nicht in den Flash EEprom Speicher geschrieben. Auf diese Weise werden nur selten benutzte Datendateien in den Flash EEprom Speicher geschrieben, während häufig benutzte Datendateien in dem Cache-Speicher zwischengespeichert werden.

Wenn in einem weiteren Ausführungsbeispiel der Erfindung ein Schreibvorgang durch den Host auftritt, überprüft die Steuerung zunächst, um festzustellen, ob diese Datendatei zuletzt innerhalb eines vorgegebenen Zeitraums (beispielsweise 5 Minuten) irgendwohin geschrieben worden ist. Wenn dies nicht der Fall war, wird die Datendatei in den Flash Speicher 33 geschrieben, während ihre Identifizierung und ihr Zeitstempel in den Tag-Speicher 709 geschrieben werden. Wenn die Datendatei zuletzt innerhalb eines vorgegebenen Zeitraums irgendwohin geschrieben worden ist, wird sie in den Cache-Speicher 705 und nicht in den Flash Speicher geschrieben. Zur gleichen Zeit werden ihre Identifizierung und ihr Zeitstempel in den Tag-Speicher 709 wie in den anderen Ausführungsbeispielen geschrieben. Auf diese Weise werden ebenfalls nur die selten benutzten Datendateien in den Flash Speicher geschrieben, während die häufig benutzten Datendateien in dem Cache-Speicher zwischengespeichert werden.

In allen Ausführungsbeispielen wird im Verlauf der Zeit der Cache-Speicher beginnen, sich zu füllen. Wenn die Steuerung erfasst hat, dass ein vorgegebener Zustand der Gefülltheit erreicht worden ist, fängt sie mit dem Archivieren mit einer Präferenz von einigen Dateien über anderen Dateien in dem Cache-Speicher 705 durch Schreiben derselben in den Flash Speicher 33 an. Die Datei-Identifizierungsmarkierungsbits für diese Dateien werden anschließend zurückgesetzt, wodurch angezeigt wird, dass diese Dateien nun überschriebenen werden können. Dadurch wird Platz für neue Datendateien geschaffen, die in den Cache-Speicher gelangen.

Die Steuerung ist zunächst verantwortlich für das Verschieben der am wenigsten aktiven Dateien zurück in den Flash Speicher 33, um Platz für neue aktive Dateien zu schaffen. Um Protokoll über den Grad der Aktivitäten einer jeden Datei zu führen, wird der Zeitstempel für jede Datei durch die Steuerung bei jedem Zeitschritt erhöht, es sei denn, er wird durch eine neue Aktivität der Datei zurückgesetzt. Die Zeit wird durch die Zeitgeber 711 bereitgestellt. Bei jedem Zeitschritt (Zählung) greift die Steuerung systematisch auf jede Datendatei in dem Cache-Speicher zu und liest den letzten Zeitstempel, der für diese Datendatei geschrieben wurde. Anschließend erhöht die Steuerung den Zeitstempel durch einen weiteren Zeitschritt (das heißt, erhöht die Zählung durch 1).

Je nach der Aktivität der Datei können zwei Dinge mit dem Zeitstempel der Datei passieren. Die eine Möglichkeit besteht darin, dass der Zeitstempel in dem Fall einer neu auftretenden Aktivität zurückgesetzt werden kann. Die andere Möglichkeit ist, dass keine neue Aktivität für die Datei auftritt, und der Zeitstempel weiterhin erhöht wird, bis die Datei von dem Cache entfernt wird. In der Praxis kann eine Höchstgrenze erreicht werden, wenn es dem Zeitstempel erlaubt ist, bis ins Unendliche erhöht zu werden. So kann beispielsweise das System dem Zeitstempel ermöglichen, bis zu einer Höchstdauer der Inaktivität von 5 Minuten erhöht zu werden. Wenn demzufolge eine Datendatei in den Cache-Speicher geschrieben wird, wird der Zeitstempel für die Datei bei seinem Ausgangswert eingestellt. Anschließend wird der Zeitstempel mit dem Altern beginnen, wobei er bei jedem Zeitschritt erhöht wird, es sei denn, er wird durch ein weiteres Schreibaktualisieren wieder auf seinen Ausgangswert zurückgesetzt. Nach angenommen 5 Minuten der Inaktivität wurde der Zeitstempel bis auf eine abschließende Höchstzählung erhöht.

In einem Ausführungsbeispiel des Aufrechterhaltens der Zählung kann ein Bit um eine Stelle in einem Verschieberegister jedes Mal verschoben werden, wenn eine Erhöhung der Zählung für eine Datei auftritt. Wenn die Datei aktualisiert wird (wenn eine neue Aktivität aufgetreten ist), wird der Ort des Bits auf den Ausgangsort des Verschieberegisters zurückgesetzt. Wenn in einem anderen Fall die Datei inaktiv bleibt, wird das Bit schließlich zu der abschließenden Verschiebeposition verschoben. In einem anderen Ausführungsbeispiel wird ein Zählwert für jede Datei gespeichert und bei jedem Zeitschritt erhöht. Nach jedem Erhöhen wird der Zählwert mit einem Hauptzähler verglichen, wobei die Differenz die betreffende Zeitverzögerung ist.

Wenn dementsprechend eine Datei aktiv ist, wird ihr erhöhter Zeitstempel jedes Mal, wenn die Datendatei neu geschrieben wird, zurück auf den Ausgangswert gesetzt. Auf diese Weise werden Dateien, die ständig aktualisiert werden, niedrige Zeitstempel-Identifizierungen haben und so lange im Cache aufbewahrt, bis sich ihre Aktivität erhöht. Nachdem ein Zeitraum der Inaktivität abgelaufen ist, erwerben sie die maximalen Zeitstempel-Identifizierungen. Die inaktiven Dateien werden schließlich in dem Flash Speicher archiviert, wodurch in dem Cache-Speicher Platz für neue, aktivere Dateien geschaffen wird. Auch in dem Tag-Speicher wird Platz geschaffen, wenn diese inaktiven Dateien in den Flash Speicher verschoben werden.

Zu jedem beliebigen Zeitpunkt, wenn Platz für neue Datendateien, die in den Cache-Speicher gelangen, freigemacht werden muss, entfernt die Steuerung einige der älteren Dateien und archiviert diese in dem Flash Speicher 33. Die Zeitablaufplanung wird durch einen Speicher-/Zeit-Steuerungsschaltkreis 713 in der Steuerung durchgeführt. Die Entscheidung, eine Datei zu archivieren, basiert auf verschiedenen Kriterien. Die Steuerung sieht sich die Frequenz von Schreiboperationen, die in dem System auftreten, an, und sieht sich an, wie voll der Cache ist. Wenn noch Platz in dem Cache vorhanden ist, muss keine Archivierung durchgeführt werden. Wenn mehr Platz benötigt wird, werden die Dateien mit den frühesten Zeitstempeln zuerst entfernt und in dem Flash Speicher archiviert.

Obgleich die Erfindung hinsichtlich einer Implementierung in der Hardware der Steuerung beschrieben worden ist, sollte darauf hingewiesen werden, dass auch andere Implementierungen möglich sind. So kann das Cache-System beispielsweise an einem anderen Ort innerhalb des Systems untergebracht sein oder durch Software unter Verwendung des vorhandenen Mikroprozessorsystems implementiert werden. Solche Abänderungen liegen innerhalb des Umfangs des Schutzes der vorliegenden Erfindung.

Das Profil hinsichtlich, wie oft Daten zurück in den Flash Speicher geschrieben werden, wird durch verschiedene Faktoren bestimmt. Es hängt von der Größe des Cache-Speichers und der Häufigkeit der in dem System auftretenden Schreiboperationen ab. Mit einem kleinen Cache-Speicher-System, werden nur die Dateien mit der höchsten Häufigkeit in dem Cache gespeichert. Weniger häufig zugegriffene Dateien werden mit einer zunehmenden Cache-Speichergröße ebenfalls in dem Cache gespeichert. In der vorliegenden Erfindung kann eine verhältnismäßig kostengünstige und kleine Menge an Cache-Speicher, vorzugsweise 1 Megabyte, zum Erzielen guter Vorteile verwendet werden. Durch nicht ständiges Schreiben der meisten aktiven Dateien (die oberen 5 %) kann die Schreibfrequenzhäufigkeit des Flash EEprom von dem gewöhnlichen 1 Mal jede Millisekunde auf ein Mal aller 5 Minuten reduziert werden. Auf diese Weise kann die Belastungszeit für den Speicher bis nahezu ins Unendliche verlängert werden. Diese Verbesserung geht außerdem mit einer erhöhten Systemleistung während der Schreiboperation einher.

Das Einbinden des Zeitstempels in das Schreib-Cache-Konzept besitzt den Vorteil, dass die Größe des Schreib-Cache-Zwischenspeichers relativ klein sein kann, da er lediglich zum Speichern von häufig geschriebenen Datendateien verwendet wird, wobei alle anderen Dateien direkt in den Flash EEprom Speicher geschrieben werden. Ein zweiter Vorteil besteht dahingehend, dass das Verwalten des Verschiebens von Datendateien in den Schreib-Cache-Zwischenspeicher und aus ihm heraus automatisiert werden kann, da es kein vorher vorhandenes Wissen dahingehend bedarf, welche Datendateien als Nächstes abzurufen sind.

Die verschiedenen Aspekte der vorliegenden Erfindung, die beschrieben worden sind, kooperieren in einem System einer Flash EEprom Speicher-Matrix, um aus dem Flash EEprom Speicher eine realisierbare Alternative zu den herkömmlichen nicht-flüchtigen Massenspeichern zu machen.

Während die Ausführungsbeispiele der verschiedenen Aspekte der vorliegenden Erfindung, die hierin beschrieben worden sind, die bevorzugten Ausführungsbeispiele sind, wird es den Personen mit gewöhnlicher Erfahrung auf dem Gebiet der Technik offensichtlich sein, dass Änderungen davon ebenfalls möglich sind. Aus diesem Grund genießt die Erfindung Schutz innerhalb des vollen Umfangs der angehängten Ansprüche.

Darüber hinaus erachtet der Anmelder den gesamten neuartigen, nicht-offensichtlichen Gegenstand, der in dieser Anmeldung offenbart ist und darüber hinaus sämtliche bekannte Entsprechungen dazu, als seine Erfindung oder Erfindungen, und er behält sich ausdrücklich das Recht vor, zusätzliche Ansprüche eines variierenden Umfangs einzureichen, der enger oder weitergefasst als die erstmals eingereichten Ansprüche sein können, die sich auf sämtliche Aspekte des offenbarten Gegenstandes und seinen Entsprechungen beziehen, selbst wenn der besagte Gegenstand in den erstmals eingereichten Ansprüchen nicht definiert wurde, und er behält sich ferner das Recht vor, die Ansprüche in ihrem erstmals eingereichten Zustand so zu ändern, dass sie einen weiteren oder engeren Umfangs aufweisen, in dem Gesagtes in den erstmals eingereichten Ansprüchen entfernt oder Neues hinzugefügt wird.


Anspruch[de]
Speichersystem mit elektrischen Anschlüssen zum Erstellen einer Verbindung mit einem Hauptrechnersystem, wobei das Speichersystem umfasst:

eine Matrix von nicht-flüchtigen Floating-Gate-Speicherzellen, die in eine Vielzahl von Sektoren aufgeteilt ist, die individuell eine ausgeprägte Gruppe dieser Speicherzellen beinhalten, die zusammen als eine Einheit löschbar sind, wobei die individuellen Sektoren genügend Zellen zum Speichern einer gegebenen Menge von Nutzdaten und einigen Zusatzdaten aufweisen, und

eine Speichersteuerung, die zwischen diesen elektrischen Anschlüssen und dieser Speicherzellenmatrix zur Steuerung des Betriebs der Matrix geschaltet ist, wobei diese Steuerung beinhaltet:

Mittel, die auf den Empfang von einer oder mehreren Massenspeicher-Speicherblockadressen über diese Anschlüsse reagieren, zur Adressierung einer oder mehrerer der nicht-flüchtigen Speichersektoren,

Mittel zum Lesen der in dem adressierten Sektor gespeicherten Zusatzdaten,

Mittel, die auf die gelesenen Zusatzdaten reagieren, um entweder Nutzdaten von dem adressierten Sektor zu lesen oder Nutzdaten in den adressierten Sektor zu schreiben,

Mittel zum Auswählen einer Vielzahl von Sektoren für einen Löschvorgang,

Mittel zum gleichzeitigen Ausführen eines Löschvorgangs nur für die ausgewählte Vielzahl von Sektoren.
Speichersystem nach Anspruch 1, wobei die Adressierungsmittel Mittel beinhalten, die auf eine Identifikation von jedweder der nicht-flüchtigen Speichersektoren, die unbrauchbar sind, reagieren, um diese durch einen anderen brauchbaren Sektor zu ersetzen. Speichersystem nach Anspruch 2, wobei die Identifikation von jedweden unbrauchbaren Sektoren eine Liste beinhaltet, die innerhalb der Speichersystemeinheit geführt wird und die Adressen von unbrauchbaren Sektoren mit entsprechenden brauchbaren Sektoren verbindet. Speichersystem nach Anspruch 2, wobei die Identifikation von jedweden unbrauchbaren Sektoren eine Aufzeichnung von individuellen Adressen von ersetzenden brauchbaren Sektoren beinhaltet, die als Teil der Zusatzdaten in den jeweiligen unbrauchbaren Sektoren gespeichert ist. Speichersystem nach einem der Ansprüche 2 bis 4, wobei die Identifikation von jedweden unbrauchbaren Sektoren nicht funktionsfähige oder fehlerhafte Sektoren umfasst. Speichersystem nach einem der Ansprüche 2 bis 4, wobei die Identifikation von jedweden unbrauchbaren Sektoren Sektoren umfasst, die eine Anzahl von fehlerhaften Zellen beinhalten, die über eine voreingestellte Anzahl hinausgeht. Speichersystem nach einem der Ansprüche 2 bis 4, wobei die gegebene Menge von Nutzdaten im Wesentlichen 512 Bytes entspricht. Speichersystem nach einem der Ansprüche 1 bis 7, wobei die individuellen nicht-flüchtigen Speichersektoren über die zum Speichern der gegebenen Menge von Nutzdaten und der Zusatzdaten hinausgehende redundante Speicherzellen zusätzlich aufweisen und die Steuerung zusätzlich Mittel zum Ersetzen fehlerhafter Speicherzellen innerhalb eines individuellen Sektors durch redundante Speicherzellen dieses individuellen Sektors beinhaltet. Speichersystem nach einem der Ansprüche 1 bis 8, wobei die Mittel zum Lesen der Zusatzdaten Mittel zum Lesen, von den Zusatzdaten eines adressierten Sektors, einer Adresse dieses Sektors beinhalten, und wobei die Steuerung zusätzlich Mittel zum Vergleichen der von den Zusatzdaten gelesenen Adresse mit der Adresse des Sektors beinhaltet, um zu bestätigen, dass der gewünschte Sektor adressiert wurde. Speichersystem nach einem der Ansprüche 1 bis 9, wobei die Speichersystemeinheit auf einer einzigen gedruckten Leiterplatte realisiert ist. Speichersystem nach einem der Ansprüche 1 bis 10, wobei die eine oder mehreren Speicher-Speicherblockadressen, auf die die Adressierungsmittel der Steuerung reagieren, aus einem oder mehreren Magnetplatten-Sektoradressen bestehen. Speichersystem nach einem der Ansprüche 1 bis 11, das weiterhin Mittel zum Schreiben von Zusatzdaten in den adressierten Sektor beinhaltet. Speichersystem nach einem der Ansprüche 1 bis 12, das weiterhin Mittel zum Abbilden eines bestimmten Sektors durch einen anderen Sektor beinhaltet, falls die Anzahl von fehlerhaften Zellen in dem bestimmten Sektor einen vorbestimmten Wert überschritten hat. Speichersystem nach einem der Ansprüche 1 bis 13, wobei jede Speicherzelle ein Datenbit speichert. Speichersystem nach einem der Ansprüche 1 bis 13, wobei jede Speicherzelle mehr als ein Datenbit speichert. Verfahren zum Betreiben eines Computersystems, welches einen Prozessor und ein Speichersystem beinhaltet, wobei das Speichersystem eine Matrix von nicht-flüchtigen Floating-Gate-Speicherzellen beinhaltet, die in eine Vielzahl von Sektoren aufgeteilt ist, die individuell eine ausgeprägte Gruppe von Speicherzellen dieser Matrix beinhalten, die gemeinsam als eine Einheit löschbar sind, wobei das Verfahren umfasst:

Auswählen einer Gruppe von nicht-flüchtigen Speichersektoren,

gleichzeitiges Durchführen eines Löschvorgangs nur für die ausgewählte Gruppe von nicht-flüchtigen Speichersektoren,

Bereitstellen von zumindest einem Nutzdatenanteil und einem Zusatzdatenanteil an den Speicherzellen innerhalb der individuellen Sektoren innerhalb der ausgewählten Gruppe von nicht-flüchtigen Speichersektoren,

in Reaktion auf Empfang einer Adresse in einem zumindest einen Magnetplattensektor bezeichnenden Format von dem Prozessor, Bestimmen einer Adresse des zumindest einen nicht-flüchtigen Speichersektors, der mit dem zumindest einen Magnetplattensektor übereinstimmt,

Schreiben von Nutzdaten in den oder Lesen von Nutzdaten von dem Nutzdatenanteil von dem zumindest einen der gelöschten nicht-flüchtigen Speichersektoren und

entweder Schreiben von Zusatzdaten in den oder Lesen von Zusatzdaten von dem Zusatzdatenanteil des zumindest einen nicht-flüchtigen Speichersektors, wobei die Zusatzdaten entweder auf diesen zumindest einen nicht-flüchtigen Speichersektor bezogen sind oder auf Daten bezogen sind, die in dem Nutzdatenanteil des zumindest einen nicht-flüchtigen Speichersektors gespeichert sind.
Verfahren nach Anspruch 16, das zusätzlich ein Erfassen einer vorbestimmten Bedingung, ab wann die individuellen Sektoren unbrauchbar werden, und ein Verbinden der Adressen von solchen unbrauchbaren Sektoren mit Adressen von anderen Sektoren, die brauchbar sind, beinhaltet. Verfahren nach Anspruch 17, wobei das Erfassen der vorbestimmten Bedingung ein Erfassen, sobald die individuellen Sektoren fehlerhaft werden, beinhaltet. Verfahren nach Anspruch 18, wobei das Erfassen, sobald die individuellen Sektoren fehlerhaft werden, ein Bestimmen, sobald eine Anzahl von individuellen fehlerhaften Speicherzellen innerhalb eines Sektors eine gegebene Anzahl übersteigt, beinhaltet. Verfahren nach einem der Ansprüche 16 bis 19, wobei der Nutzdatenanteil der individuellen nicht-flüchtigen Speichersektoren eine Kapazität von im Wesentlichen 512 Bytes aufweist. Verfahren nach einem der Ansprüche 16 bis 20, wobei die Information, die in dem Zusatzdatenanteil der individuellen Sektoren gespeichert ist, eine Adresse der jeweiligen individuellen Sektoren beinhaltet. Verfahren nach einem der Ansprüche 16 bis 21, wobei die Information, die in dem Zusatzdatenanteil der individuellen Sektoren gespeichert ist, einen Fehlerkorrekturcode beinhaltet, der aus Daten berechnet wird, die in den jeweiligen Nutzdatenanteilen der entsprechenden individuellen Sektoren gespeichert sind. Verfahren nach einem der Ansprüche 17 bis 22, wobei das Verbinden der Adressen von unbrauchbaren Sektoren mit Sektoren, die brauchbar sind, ein Führen einer Liste beinhaltet, die solche unbrauchbaren Sektoren mit Adressen von entsprechenden anderen Sektoren, die brauchbar sind, verbindet, und wobei ein Zugreifen auf einen brauchbaren Sektor ein Bezugnehmen auf diese Liste beinhaltet, um die Adresse des unbrauchbaren Sektors in eine Adresse eines brauchbaren Sektors zu übersetzen. Verfahren nach einem der Ansprüche 17 bis 22, wobei ein Verbinden der Adressen von solchen unbrauchbaren Sektoren ein Speichern von Adressen von entsprechenden brauchbaren Sektoren innerhalb der individuellen fehlerhaften Sektoren beinhaltet und wobei ein Zugreifen auf einen brauchbaren Sektor, der einem unbrauchbaren Sektor entspricht, ein Bezugnehmen auf die in dem unbrauchbaren Sektor gespeicherte Adresse des brauchbaren Sektors beinhaltet. Verfahren nach einem der Ansprüche 16 bis 24, wobei die Aufteilung der Speicherzellen eine Aufteilung der Speicherzellen innerhalb der individuellen Sektoren derart beinhaltet, dass ein zusätzlicher Teil von überschüssigen Speicherzellen beinhaltet wird. Verfahren nach Anspruch 25, wobei die in den Zusatzanteilen der individuellen Sektoren gespeicherten Zusatzdaten eine Identifikation jedweder fehlerhafter Zellen innerhalb der Nutzdatenanteile der entsprechenden Sektoren beinhalten und wobei das Verfahren zusätzlich ein Veranlassen der Steuerung umfasst, die Identifikation von fehlerhaften Zellen von dem Zusatzanteil des adressierten zumindest einen nicht-flüchtigen Speichersektors zu lesen und daraufhin durch andere Zellen innerhalb des Teils überschüssiger Zellen von dem adressierten zumindest einen nicht-flüchtigen Speichersektor zu ersetzen. Verfahren nach einem der Ansprüche 16 bis 26, wobei die individuellen Sektoren nur einen Nutzdatenanteil und nur einen Zusatzdatenanteil beinhalten. Verfahren nach einem der Ansprüche 16 bis 27, zusätzlich umfassend ein Bereitstellen einer mit dem Prozessor verbindbaren Speichersteuerung zum Steuern des Betriebs der Matrix. Verfahren nach einem der Ansprüche 16 bis 28, wobei das Speichersystem innnerhalb einer Karte bereitgestellt wird, die zum Anschluss an das Computersystem angepasst ist. Verfahren nach Anspruch 28, wobei die Speichersteuerung innerhalb einer Karte bereitgestellt ist, die zum Anschluss in ein Computersystem angepasst ist. Verfahren nach Anspruch 28, wobei die Speichersteuerung und das Speichersystem innerhalb einer Karte bereitgestellt sind, die zum Anschluss an das Computersystem angepasst ist. Verfahren nach einem der Ansprüche 16 bis 31, weiter umfassend den Schritt des Abbildens eines bestimmten Sektors durch einen anderen Sektor, falls die Anzahl von fehlerhaften Zellen in dem bestimmten Sektor einen vorbestimmten Wert überschritten hat. Verfahren nach einem der Ansprüche 16 bis 32, wobei jede Speicherzelle ein Datenbit speichert. Verfahren nach einem der Ansprüche 16 bis 32, wobei jede Speicherzelle mehr als ein Datenbit speichert.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com