-
Die
Erfindung bezieht sich auf eine Schnittstelle zum Empfangen von
Daten und Kommandos, die an ein Blöcke von Flash-EEPROM-Speicher enthaltendes
Array in einem Bauelement gerichtet sind, und zum Erzeugen von Signalen
zum Bewirken der Zwecke der Kommandos in dem Bauelement, ein eine
solche Schnittstelle enthaltendes Speicher-Bauelement, ein Verfahren
zum Initialisieren eines Software-Gerätetreibers für ein derartiges
Bauelement, ein Verfahren zum Zugreifen auf ein solches Bauelement
sowie auf ein Computersystem, welches ein derartiges Bauelement
aufweist.
-
Flash-EEPROM-Speicher-Arrays
werden bei heutigen digitalen Systemen (z.B. Computern) wegen der
Fähigkeiten
der Flash-EEPROM-Speicher-Arrays,
die Daten zu behalten, wenn die Stromversorgung entfernt wird, und
auf einfache Weise neu programmierbar zu sein, ohne sie aus einem
System zu entfernen, für
viele Zwecke verwendet. Ein Flash-EEPROM-Speicher-Array besteht
aus Floating-Gate-Feldeffekt-Transistorbauelementen, die in Zeilen
und Spalten angeordnet sind. Die auf dem Floating-Gate eines solchen
Speichertransistors gespeicherte Ladung kann durch Programmierung
geändert
werden, und der Zustand der Ladung kann durch ein Abtasten der Spannung über dem
Bauelement erfaßt
werden. Da diese Flash-EEPROM-Arrays einfach neu programmiert werden
können,
werden sie als Ersatz für
normale EPROM-Arrays verwendet, um Nur-Lese-Speicher zur Verfügung zu stellen,
die einfach aktualisiert werden können.
-
Auf
ein Flash-Speicher-Array wird zum Lesen und Schreiben auf die gleiche
Weise zugegriffen, wie auf Arrays dynamischen Speichers mit wahlfreiem
Zugriff (DRAM-Arrays), wobei eine Zeilen- und Spaltenadressierung
in Byte-, Wort- oder größeren Sequenzen
von Bits verwendet wird. Jedoch kann aufgrund der Art und Weise,
auf welche Daten gespeichert werden, ein Flash-Speicher-Array im Unterschied zu einem
typischen DRAM-Bauele ment nicht überschrieben
werden, ohne zunächst
die Bauelemente zu löschen.
Als Ersatz für
EPROM-Arrays verwendete Flash-Speicher-Arrays werden üblicherweise
in großen
Blöcken
(die das gesamte Array bilden können)
gelöscht,
bevor sie neu programmiert werden.
-
Flash-EEPROM-Speicher-Arrays
werden darüber
hinaus verwendet, um kleinere, leichtere funktionelle Äquivalente
für elektromechanische Festplattenlaufwerke
zu schaffen. Flash-Speicher-Arrays,
die Festplattenlaufwerke ersetzen sollen (im folgenden als "Flash-Plattenlaufwerke" bezeichnet), arbeiten
zuverlässiger
und sind gegenüber physischer
Störung
nicht so empfindliche wie elektromechanische Festplattenlaufwerke.
Wegen dieser Eigenschaften sind Flash-Plattenlaufwerke besonders
in transportablen Computern nützlich,
wo der Platzbedarf vorrangig und das Gewicht wichtig ist.
-
Elektro-mechanische
Festplattenlaufwerke benutzten historisch eine Industrie-Standard-Schnittstelle,
die als "ATA-Schnittstelle" bezeichnet wird.
Die ATA-Schnittstelle wurde insbesondere konstruiert, um eine Kommunikation
zwischen einem Computersystem und einem rotierenden elektromechanischen Plattenlaufwerk
zur Verfügung
zu stellen. Deshalb wurde die ATA-Schnittstelle auf der Grundlage primitiver
Funktionen definiert, die direkt auf rotierende elektromechanische
Plattenlaufwerke anwendbar sind. Ein elektromechanisches Festplattenlaufwerk ist
ein direkt überschreibbares,
rotierendes Block-Lese-Schreib-Medium,
das in der Lage ist, primitive Funktionen auszuführen, die "Führe
ein langsames Aufsuchen einer logischen Adresse oder eines Zylinderkopfsektors
aus", "Lies einen Sektor
oder mehrere Sektoren" und "Schreibe einen Sektor" einschließen.
-
Flash-EEPROM-Array-Grundfunktionen
umfassen beispielsweise "Lies
und schreib auf der Byte-, Wort- oder kleinen Blockebene" und "Lösche auf der großen Blockebene". Die ATA-Schnittstelle kommuniziert
nicht mittels der Flash-Speicher-Array-Grundfunktionen.
Wenn ein Flash-Plattenlaufwerk ein elektromechanisches Plattenlaufwerk
ersetzt, verwendet es die ATA-Schnittstelle, um mit anderen Computerkomponenten
zu kom munizieren. Folglich ist es notwendig, eine Schaltung zur
Verfügung
zu stellen, durch welche die von einem Computer zum Zugreifen auf
elektromechanische Plattenlaufwerke verwendeten Signale durch das Flash-Plattenlaufwerk
verstanden werden können. Der
Prozeß des Übersetzens
von Funktionen elektromechanischer rotierender Plattenlaufwerke
in Flash-Plattenlaufwerksfunktionen erforderte einen beträchtlichen
Mehraufwand an Hardware und Software.
-
Beispielsweise
wird bei einer Art eines Flash-Plattenlaufwerks eine Kommandobenutzerschnittstelle
auf dem gleichen Siliziumsubstrat (Chip) vor dem Flash-Speicher-Array
zwischengeschaltet, um die an der ATA-Schnittstelle zur Verfügung gestellten
Kommandos zu interpretieren. Die Flash-Plattenlaufwerk-Kommandobenutzerschnittstelle
nimmt die ATA-Signale auf und steuert die zum Zugreifen auf das
Flash-Plattenlaufwerk erforderlichen Operationen. Die Flash-Plattenlaufwerk-Kommandobenutzerschnittstelle
enthält
typischerweise Zustandsmaschinen, die für eine sich drehende Platte
gedachte Kommandos empfangen, diese Kommandos dekodieren und Kommandos
erzeugen, die so angepaßt
sind, daß sie
die, Zwecke der ATA-Kommandos innerhalb eines Flash-Plattenlaufwerks
ausführen
können.
-
Jüngst tauchte
eine kostengünstigere
Alternative für
ein Flash-Plattenlaufwerk auf, die auf einem Wirts-Computer ablaufende
Plattenemulationssoftware mit einem preiswerten Flash-Speicher-Bauelement-Array
kombiniert. Das Flash-Speicher-Bauelement-Array weist ein oder mehrere
Flash-Speicher-Bauelemente auf, die in einer von verschiedenen Systemverkapselungsoptionen
enthalten sind, einschließlich
einer entfernbaren Speicherkarte, einem systemresidenten Single-in-Line-Speichermoduls
(SIMM) und eines residenten Flash-Arrays, Einrichtungen, die direkt
auf der Systemmutterplatine montiert sind. Die Kombination beliebiger
dieser einfachen Flash-Speicherbauelement-Subsysteme mit Plattenemulationssoftware
wird in dieser Beschreibung als Flash-Platten-Emulator bezeichnet.
-
Viele
der Operationen, die entweder für
eine Kommandobenutzerschnittstelle oder einen Flash-Platten-Emulator
erforderlich sind, um aus in Grundelementen einer rotierenden Platte
formulierten Kommandos zu übersetzen,
sind ziemlich kompliziert. Beispielsweise werden bei einigen Flash-Plattenlaufwerken
und anderen Flash-Speicherbauelementen die Daten zunächst in
leere Blöcke
des Speicher-Arrays geschrieben, die unter der Steuerung der Kommandobenutzerschnittstelle
ausgewählt wurden,
und dann die physikalischen Adressen, zu welchen die Daten gespeichert
werden, in Nachschlagetabellen zusammen mit den extern zur Verfügung gestellten
Adressen der rotierenden Platte aufgezeichnet. Dies gestattet es,
daß die
Daten wiedergewonnen werden, wenn die Adressen der rotierenden.
Platte zur Verfügung
gestellt werden.
-
Frühe Flash-Speicher-Arrays
adressierten Daten in einzelnen Bytes. Als sich die Flash-Speicher-Arrays
weiterentwickelten, wurde die Adressierung in Worten und Doppelworten
möglich,
oftmals in dem gleichen Array. Die Fähigkeit, diese unterschiedlichen
Arten der Adressierung zur Verfügung
zu stellen, verkomplizierte die Operationen der Bauelement-Kommandobenutzer-Schnittstelle.
Jüngst
wurden Flash-Plattenlaufwerke ersonnen, die eine Pufferung verwenden,
um die Übertragung
großer
Datenmengen zu gestatten, selbst wenn das Array wegen seiner langsameren
kombinierten Lösch-
und Schreibgeschwindigkeit diese Daten nicht sofort behandeln kann.
Diese Verbesserungen erhöhen
die Komplexität
der Flash-Plattenlaufwerks- und Flash-Emulator-Operationen.
-
Das
grundlegende Flash-Erfordernis, in großen Blöcken zu löschen, verkompliziert die Operationen,
die Flash-Plattenlaufwerke und Flash-Platten-Emulatoren ausführen müssen, noch
weiter. Wenn Daten aktualisiert werden, müssen alte Daten, die nicht überschrieben
werden können,
als ungültig markiert
werden, die neuen Daten müssen
in einen leeren Array-Raum geschrieben werden und die Adreßtabellen
müssen
aktualisiert werden, um eine neue physikalische Adresse zur Verfügung zu
stellen. Dieses Verfahren der Aktualisierung bewirkt, daß die Daten
in einer Datei an nicht zusammenhängenden Positionen geschrieben
werden. Wenn eine ausreichende Datenmenge in einem großen Block
ungültig
wird, müssen
die verbleibenden gültigen
Daten in einen leeren Array-Raum in irgendeinem anderen Block kopiert
werden, die Adreßtabellen
müssen
aktualisiert werden, und der Block muß gelöscht werden, um den Array-Raum
zurückzugewinnen.
-
Das
Schreiben von Flash-EEPROM-Bauelementen ist langsamer als das Schreiben
von DRAM-Speicher, da das Speichern von Daten auf dem Floating-Gate
eines Transistors beträchtliche Spannungen
und relativ lange Aufladezeiten erfordert. Sowohl der Schreibprozeß als auch
der Kopierprozeß sind
somit zu lang, um mit DRAM-Schreibzeiten mithalten zu können. Eine
Schreibzustandsmaschine wird typischerweise auf dem Chip angeordnet,
um eine Kommandobenutzerschnittstelle zu unterstützen, und wird verwendet, um
Schreib- und Kopieroperationen zu leiten, so daß die Daten ohne ein Überschreiben
anderer Daten in dem Array richtig gespeichert werden. Darüber hinaus
ist der Löschprozeß (ein durch
einen DRAM oder einen elektromechanischen Speicher nicht erforderlicher
Prozeß) typischerweise
langsam, bei einigen Flash-Laufwerken bis zu einer halben Sekunde.
Deswegen wird der Löschprozeß typischerweise
als ein Hintergrundprozeß durchgeführt, der
von der Schreibzustandsmaschine oder durch zusätzliche chipeigene Zustandsmaschinen
unter Steuerung der Flash-Plattenlaufwerks-Firmware oder der Flash-Platten-Emulator-Software,
die unterhalb ihrer jeweiligen Kommandobenutzerschnittstellen arbeiten,
abgearbeitet. Die zum Durchführen
von Löschoperationen
erforderliche Zeit ist derart lang, daß einige Flash-Speicherbauelemente-Kommandobenutzerschnittstellen
Kommandos akzeptieren, die die Löschoperation
aussetzen, um verschiedene andere Operationen zu ermöglichen.
-
Aus
der Patentanmeldung
EP
0 613 151 A2 ist ein Speichersystem mit mehreren Flash-EEPROM-Speicherlaufwerken
bekannt.
-
Jüngst wurden
Flash-Speicher-Arrays konstruiert, die die Speicherung von mehr
als einem Datenbit in einer einzelnen Speicherzelle gestatten. Dies
hat die Kompliziertheit der zum Übersetzen
von Kommandos und Daten zwischen dem Flash-Speicher-Array und der
ATA(Flash-Plattenlaufwerks)- und Flash-Platten-Emulator-Schnittstellen erforderlichen Schaltung
beträchtlich
erhöht.
Es ist klar, daß dieser gesamte
Mehraufwand teuer ist und den Betrieb des Flash-Speicher-Arrays
verlang samt.
-
Die
ATA-Schnittstelle verbirgt die Komplexität der darun ter liegenden internen
Flash-Plattenlaufwerks-Software (Firm ware). Ein Wirtssystem benutzt
typischerweise einen einzelnen ATA-Gerätetreiber, der Instruktionen
aus einem Plattendateisystem übersetzt,
das von dem Betriebssystem aufrechterhalten wird, wie beispielsweise
das Boot-Parameter-Block/Datei-Zuweisungstabellen("BPB/FAT")-Dateisystem bei
den Microsoft-DOS- und
Windows-Betriebssystemen. Dieser Treiber wird von sämtlichen
ATA-kompatiblen Einrichtungen, sowohl rotierenden als auch flash-basierten,
verwendet. Die ATA-Schnittstelle wurde so konstruiert, daß sie eine
Vorwärts-
und Rückwärts-Kompatibilität für sämtliche
ATA-Einrichtungen zur Verfügung
stellt, ohne Software-Aktualisierungen für die Wirtssystem-Gerätetreiber
zu erfordern. Jedoch eliminiert die ATA-Schnittstelle, wie sie gegenwärtig aufgebaut
ist, die Möglichkeit,
Flash-Platteneinrichtungen für
viele Operationen zu verwenden, für welche Transistorspeicher
besonders gut geeignet sind Obwohl beispielsweise auf ein Flash-Speicher-Array
naturgemäß so schnell
zugegriffen werden kann, wie auf einen dynamischen Speicher mit
wahlfreiem Zugriff, ist ein direkter wahlfreier Zugriff unter Verwendung
der ATA-Schnittstellen wegen des Übersetzungsmehraufwands und
aufgrund der Weise, auf welche die Daten gespeichert sind, nicht
möglich.
Da die Zellen des Flash-Speicher-Arrays nicht überschrieben werden können und
demzufolge Dateidaten in nicht zusammenhängenden Positionen des Flash-Arrays speichern,
muß eine
Datendatei, die von einem Flash-Speicher-Array gelesen worden ist,
im Hauptspeicher neu zusammengesetzt werden, bevor sie verwendet
werden kann. Da das Speichermanagement des Flash-Speicher-Arrays
es erforderlich macht, die aus der Flash-Speichereinrichtung in
den DRAM-Speicher gelesenen Dateien zu rekonstruieren, bevor sie
verwendet werden, wurde eine direkte Ausführung von Anwendungen bei Flash-Plattenlaufwerken
mit einer ATA-Schnittstelle ausgeschlossen.
-
Selbst
wenn es möglich
wäre, Abschnitte
einer Anwendung zusammenhängend
in einem Flash-Speicher-Bauelement zu speichern, wäre eine Ausführung einer
Anwendung direkt aus einem Flash-Speicherbauelement sehr schwierig.
Zunächst stellt
die ATA-Schnittstelle keinerlei direkten Zugriff auf das Speicher-Array für eine direkte
Ausführung von
Befehlen in der Zugriffszeit zur Verfügung, die ein einfacher Flash-Speicher
selbst für
Leseoperationen zur Verfügung
stellt. Darüber
hinaus gibt es einfach keine Art und Weise, auf die die Eigenschaften
oder Charakteristika des speziellen Flash-Speicherbauelements, mit
welchem die Kommunikation versucht wird, bestimmt werden kann, so
daß die
Kommunikation direkt in Formen durchgeführt werden kann, auf welche
die Daten in dem Array manipuliert werden können.
-
Wegen
dieser Probleme wurden Flash-Plattenlaufwerke typischerweise für die Langzeitspeicherung
von Daten verwendet, wo die Fähigkeit
zum schnellen Lesen und Schreiben von Daten nicht entscheidend ist.
-
Gegenwärtig weist
ein Flash-Platten-Emulator Stärken
und Schwächen
auf, die sich stark von denjenigen eines ATA-kompatiblen Flash-Laufwerks unterscheiden.
Der Flash-Platten-Emulator besteht aus einem 2-Schichten-Software-Treiber
und einer Speicherkarte oder einem anderen Flash-Array. Die obere
Treiberschicht wird als Flash-Übersetzungsschicht("FTL"; Flash Translation
Layer)-Treiber bezeichnet (PCMCIA-Spezifikation, Ausgabedatum Mai 1996),
während
jeder untere Treiber ("LLD"; Low Level Driver) üblicherweise
von einem ursprünglichen Ausrüstungshersteller
(OEM) konstruiert wird und für die
Kombination von Flash-Speicherbauelement und -karte einzigartig
ist. Zusätzlich
zur Unterstützung
der Plattenemulation kann die Speicherkarte oder das Speicher-Array
in eine oder mehrere zusätzliche
Regionen partitioniert sein, die einen direkten wahlfreien Speicherzugriff
unterstützen.
So gestattet es eine "einfache" Flash-Speicherkarte
oder ein "einfaches" Flash-Array dem
Wirtssystem und seinem Benutzer, Vorteil aus einem schnellen Direktzugriff
auf die Flash-Speicher-Bauelement-In halte bei der Unterstützung einer
direkten Befehlscodeausführung
zu ziehen.
-
Der
Nachteil gegenwärtiger
Flash-Platten-Emulator-Implementierungen besteht in der benutzerabhängigen Natur
der Treiber auf niedriger Ebene. Ein Treiber auf niedriger Ebene
liest gegenwärtig
einen Geräteidentifizierer
("Geräte-ID") und nimmt auf eine
Nachschlagetabelle Bezug, um sowohl eine Kommandosequenz oder einen
Algorithmus als auch einen Satz von Karten- und/oder Geräte-Geometrie- und Systemschnittstellen-Parametern, wie
beispielsweise Spannungen und Zeitvorgaben, die von der Einrichtung
verwendet werden sollen, zu bestimmen.
-
Ein
derartiger Treiber hat keine Möglichkeit, die
Charakteristika irgendeines speziellen Flash-Speicherbauelements,
dem er zugeordnet ist, zu bestimmen, ausgenommen über die
Nachschlagetabelle. Demzufolge kann dann, wenn ein neues Flash-Speicher-Bauelement
in das Wirtssystem eingeführt
wird, der Wirt nicht den neuen Bauelemente-Identifizierer erkennen
und folglich nicht die neue Karten/Bauelemente-Kombination verwenden.
Dies verhindert eine Vorwärtskompatibilität und schafft eine
Härte für den typischen
Flash-Kartenbenutzer, der den neuen erforderlichen Gerätetreiber
nicht einfach auffinden oder implementieren kann. Da jeder Treiber
auf unterer Ebene so geschrieben werden muß, daß er den speziellen Plattenemulator
einschließt,
muß jedesmal
dann, wenn eine verbesserte Version eines Flash-Speicherbauelements
erscheint, der Treiber auf der unteren Ebene neu geschrieben werden,
so daß er
die neuen Merkmale, die das Flash-Speicherbauelement bietet, einschließt. Beispielsweise
müssen
die Treiber so umgeschrieben werden, daß sie größere Datenworte, erhöhte Pufferübertragungsgrößen und
dergleichen enthalten.
-
Außerdem sieht
sich der Schreiber der Software dann, wenn ein neuer Gerätetreiber
für das Wirtssystem
verfügbar
gemacht wird, Einschränkungen
der Befehlscodegröße und Komplexität gegenüber, die
zu der Entscheidung führen
können, ältere Treiberalgorithmen
fallen zu lassen. Somit kann bei dem neuen Treiber die Rückwärtskompatibilität geopfert
werden.
-
Es
ist wünschenswert,
eine Schnittstelle für ein
Flash-Speicherbauelement
zur Verfügung
zu stellen, die eine Kommunikation mit dem Flash-Speicher-Array
in Form der Grundelemente gestattet, die zum Steuern des Flash-Speicher-Arrays
innerhalb eines derartigen Flash-Speicherbauelements verwendet werden,
so daß das
Bauelement für
Zwecke verwendet werden kann, für
welche Transistor-Speicher-Arrays besonders geeignet sind.
-
Es
ist darüber
hinaus bei Flash-Speicher-Arrays verwendenden Bauelementen erwünscht, eine kompatible
Schnittstelle einzuschließen,
durch welche die Charakteristika der Bauelemente bestimmt werden
können,
um Initialisierungswerte für
Software-Treiber
zur Verfügung
zu stellen.
-
Die
der Erfindung zugrundeliegende Aufgabe wird durch eine Schnittstelle
mit den Merkmalen des Anspruchs 1, ein Bauelement mit den Merkmalen des
Anspruchs 7, ein Verfahren mit den Merkmalen des Anspruchs 13, ein
Verfahren mit den Merkmalen des Anspruchs 15 bzw. ein Computersystem
mit den Merkmalen des Anspruchs 17 gelöst.
-
Es
wird ein Bauelement beschrieben, das ein Speicher-Array, einen Abfragespeicher
und eine Schnittstelle enthält.
Das Speicher-Array enthält
eine Mehrzahl von Blöcken
von Flash-EEPROM-Speicherbauelementen,
die so angeordnet sind, daß auf
sie in Zeilen und Spalten zugegriffen wird. Der Abfragespeicher
speichert Daten, die Charakteristika des Flash-Speicherbauelements
definieren. Die Schnittstelle empfängt Daten und Kommandos, die
an das Flash-Speicherbauelement adressiert sind. Die Schnittstelle
erzeugt Signale zum Bewirken der Zwecke der Kommandos innerhalb
der Flash-Speicherbauelemente. Die Schnittstelle enthält eine
Schaltung zum Empfangen eines Kommandos und zum Antworten durch
Rückgabe
der in dem Abfragespeicher gespeicherten Daten als Ausgabe.
-
Andere
Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung sind
aus den beigefügten Zeichnungen
und aus der unten folgenden detaillierten Beschreibung ersichtlich.
-
Die
vorliegende Erfindung wird beispielhaft und nicht in einem einschränkenden
Sinne anhand der Figuren der beigefügten Zeichnungen veranschaulicht,
in welchen die Bezugszeichen auf ähnliche Elemente hinweisen,
und in welchen
-
1 ein
Blockschaltbild eines Computersystems mit einem Flash-Speicherbauelemente-Array
ist.
-
2 ist
eine Blockdarstellung eines bekannten elektromechanischen Festplattenlaufwerks, eines
bekannten Flash-Plattenlaufwerks und eines Flash-Speicherbauelemente-Arrays,
das gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung konstruiert ist.
-
3 ist
ein Blockschaltbild eines Flash-Speicherbauelements.
-
4 ist
eine Darstellung, die Signale veranschaulicht, die in Erwiderung
eines sich auf ein Flash-Speicherbauelement beziehenden Abfragekommandos
zurückgegeben
werden können.
-
Wie
es unten detaillierter beschrieben ist, enthält ein Ausführungsbeispiel der Erfindung
eine Schnittstelle zum Anschließen
einer Langzeitspeichereinrichtung, die ein Flash-EEPROM-Speicherbauelement-Array enthält, das
so konstruiert ist, daß es
ein Abfragekommando von anderen Komponenten eines Computersystems
aufnehmen und Daten zurückgeben
kann, die die physikalischen Eigenschaften und die Funktionen des
Flash-Speicherbauelements
in einer Form definieren, die sich direkt auf ein Flash-EEPROM-Speicher-Array
beziehen. Die durch ein Abfragekommando gewonnenen Daten können verwendet werden,
um einen Systemgerätetreiber
zu initialisieren, so daß er
Kommandos zur Verfügung
stellt, die auf effektivste Weise Daten in dem Flash-Speicherbauelement
bearbeiten.
-
1 ist
ein Blockschaltbild eines Computersystems 10, das gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung konfiguriert ist. Bei einem Ausführungsbeispiel
ist das Computersystem 10 ein Personalcomputer oder ein
Laptop-Computer. Bei
anderen Ausführungsbeispielen
hält sich
das Computersystem 10 in einem zellularen Telefon, einer
digitalen Kamera, einem persönlichen
digitalen Assistenten oder einer anderen Vorrichtung, die unter
Computersteuerung steht, auf. Das veranschaulichte System 10 enthält eine
zentrale Verarbeitungseinheit (CPU) 11, die verschiedene
Befehle ausführt, die
zur Verfügung
gestellt sind, um die Operationen des Systems 10 zu steuern.
Bei einem Ausführungsbeispiel
ist die CPU 11 ein Mikroprozessor. Bei anderen Ausführungsbeispielen
ist die CPU 11 ein Mikrocontroller oder eine andere Art
eines Prozessors. Die CPU 11 ist durch einen Prozessorbus
mit einer Brückenschaltung 14 verbunden,
die den Zugriff auf einen Eingabe/Ausgabebus 12 steuert,
der Informationen zwischen den verschiedenen Komponenten des Systems 10 übertragen
kann. Die Brücke 14 ist
darüber
hinaus über
einen Speicherbus mit dem Hauptspeicher 13 verbunden, der
typischerweise aus dynamischem Speicher mit wahlfreiem Zugriff konstruiert
ist, und der Informationen während
einer Zeitdauer speichern kann, in welcher eine Stromversorgung dem
System 10 zur Verfügung
gestellt wird. In 1 ist der Bus 12 vorzugsweise
ein Peripheriekomponenten-Schnittstellen(PCI)-Bus oder ein anderer
lokaler Bus, der eine besonders schnelle Übertragung von Daten zur Verfügung stellen
kann. Bei anderen Ausführungsbeispielen
können
andere Arten von Bussen verwendet werden. Verschiedene Eingabe/Ausgabe-Einrichtungen sind
als Bus-Master- und Bus-Slave-Schaltungen mit dem Bus 12 verbunden. Ein
Flash-Speicherbauelemente-Array 18 ist mit dem PCI-Bus 12 verbunden.
Bei einem alternativen Ausführungsbeispiel
ist das Flash-Speicherbauelemente- Array 18 mit einem (nicht gezeigten)
sekundären Bus
verbunden, wie beispielsweise einem Industriestandardarchitektur(ISA)-Bus
oder einem erweiterten Industriestandardarchitektur(EISA)-Bus. Bei
einem Ausführungsbeispiel
verwendet das Flash-Speicherbauelemente-Array 18 die unten
detaillierter beschriebene Schnittstelle, um sich mit einem Bus
zu verbinden.
-
Das
Flash-Speicherbauelemente-Array 18 ist ein Langzeitspeicher.
Das Flash-Speicherbauelemente-Array 18 kann eine Flash-Speicherkarte
oder eine andere Art eines Flash-Speicher-Arrays
sein, wie beispielsweise ein Single-in-line-Speichermodul oder ein residentes Flash-Array.
In der Vergangenheit wäre
ein Langzeitspeicher üblicherweise
ein elektromechanisches Festplattenlaufwerk. Jedoch kann ein Flash-EEPROM-Speicher-Array
in Form eines Flash-Plattenlaufwerks oder eines Flash-Speicherbauelemente-Arrays
anstelle eines solchen Festplattenlaufwerks als Langzeitspeicher verwendet
werden. Um die Unterschiede gegenüber dem Stand der Technik zu
veranschaulichen, zeigt 2 drei Arten von mit dem Bus 12 gekoppelten Langzeitspeichern,
nämlich
ein bekanntes elektromechanisches Festplattenlaufwerk 16,
ein bekanntes Flash-Plattenlaufwerk 17 und ein Flash-Speicherbauelemente-Array 18,
wobei das letztgenannte ein Ausführungsbeispiel
der vorliegenden Erfindung ist. Das Flash-Speicherbauelemente-Array 18 kann
als Langzeitspeicher anstelle des elektromechanischen Festplattenlaufwerks 16 verwendet
werden. Bei dem Flash-Speicherbauelemente-Array 18 oder
irgendeinem Flash-Speicher-Array kann es sich um eines handeln,
bei welchem eine Speicherzelle ein einzelnes Datenbit speichert
oder um ein Mehr-Pegel-Speichersystem, bei welchem eine Speicherzelle
mehr als ein Bit Daten speichern kann. Ein Flash-Plattenlaufwerk
kann ein Array von einem oder mehreren Flash-Speicherbauelementen
enthalten, die jeweils eine Schaltung zum Lesen, Programmieren (Schreiben)
und Löschen
der Zellen dieses Flash-Speicherbauelements und eine gegenüber dem Flash-Speicherbauelement
externe Schaltung zum Steuern der Operationen des gesamten Speicher-Arrays
aufweist. Ein Flash-Platten-Emulator benutzt typischerweise ein
Flash-Speicherbauelemente-Array, das ein Array von einem oder mehreren Flash-Speicherbauelementen
enthält,
bei welchem die Schaltung zum Lesen, Programmieren und Löschen der
Zellen jedes Flash-Speicherbauelements vollständig in jedem derartigen Bauelement
enthalten ist.
-
2 veranschaulicht
eine Systemsoftware/Hardware-Schnittstelle,
die an einem Bus 12 zur Verfügung gestellt wird, an welchen
ein ATA-kompatibles elektromechanisches Festplattenlaufwerk 16,
das Flash-Plattenlaufwerk 17 und das Flash-Speicherbauelemente-Array 18 gekoppelt sind. 2 veranschaulicht
ein im Systemspeicher angeordnetes Software-Anwendungsprogramm, das auf einem Computermikroprozessor
mit Unterstützung
eines Betriebssystems ausgeführt
wird, und das den Zugriff auf verschiedene Eingabe/Ausgabe-Einrichtungen
des Computers steuert. Das Betriebssystem enthält ein Betriebssystem-Kernel,
das ein Software-Plattendateisystem im Speicher aufrechterhält, über welches
die verschiedenen Dateien aufrechterhalten werden. Das Betriebssystem
verwendet das Plattendateisystem, um Daten aus in dem Speichersystem
des Computers gehaltenen Dateien zu gewinnen und diese zu speichern.
Wenn eine Datei auf dem elektromechanischen Plattenlaufwerk 16 gespeichert
wird, überträgt das Betriebssystem
die Steuerung auf einen Software-IDE/ATA-Gerätetreiber, der verwendet wird,
um auf das Laufwerk 16 zuzugreifen, und der als Teil des
Betriebssystems gehalten wird.
-
In ähnlicher
Weise wird dann, wenn eine Datei auf einem Flash-Plattenlaufwerk 17 gespeichert wird,
ein Zugriff über
das Betriebssystem unter Verwendung des gleichen IDE/ATA-Gerätetreibers
erlangt. Bei der veranschaulichten Anordnung empfängt das
Flash-Plattenlaufwerk 17 Kommandos und darauf bezogene
Daten aus dem ATA-Gerätetreiber, die
in einer Form definiert sind, die direkt für ein rotierendes elektromechanisches
Festplattenlaufwerk verwendbar sind. Da ein ATA-Gerätetreiber
so konstruiert ist, daß er
Informationen für
ein elektromechanisches Festplattenlaufwerk zur Verfügung stellt, können die
zu dem Flash-Plattenlaufwerk von dem ATA-Gerätetreiber übertragenen
Kommandos anweisen, daß eine
Aufsuchoperation für
einen speziellen Sektor des rotierenden Festplattenlaufwerks ausgeführt werden
sollte, das ein Lesen eines derartigen Sektors oder mehrerer derartiger
Sektoren erfolgen sollte oder daß ähnliche sektor-bezogene Operationen
stattfinden sollten.
-
Das
bekannte Flash-Plattenlaufwerk 17, das in 2 veranschaulicht
ist, enthält
ein Array 23 von Flash-EEPROM-Speicherbauelementen, die so konstruiert
sind, daß auf
sie unter Verwendung von Chip-, Block-, Zeilen- und Spaltenadressierungen
zugegriffen wird. Um beim Zugreifen auf ein Zeilen- und Spaltenbauelement
mit Kommandos zurechtzukommen, die für eine rotierende Platteneinrichtung
konstruiert sind, enthält
die Flash-Platte 17 eine externe Kommandobenutzerschnittstelle
(CUI) zum Empfangen und Behandeln von Kommandos, die an eine Mehrzahl
von Siliziumchips adressiert sind, die gemeinsam ein Flash-Speicher-Array 23 bilden.
Bei einem Ausführungsbeispiel
enthält
diese externe Kommandobenutzerschnittstellenschaltung einen ASIC-Logikblock 20,
der von dem ATA-Gerätetreiber auf
dem PCI-Bus 12 gelieferte Kommandos empfängt. Der
Logikblock 20 wird durch einen Prozessor 21 unterstützt, der
einen zugeordneten Speicher mit wahlfreiem Zugriff und einen Nur-Lese-Speicher
zum Unterstützen
seiner Operationen aufweist. Diese bilden zusammen, was im Endeffekt
ein kleiner Mehrzweckcomputer zum Ausführen der verschiedenen, auf
das Flash-Plattenlaufwerk 17 gerichteten Operationen ist.
Der Logikblock 20 nimmt direkt an das Laufwerk 17 gerichtete
Kommandos auf und übersetzt
diese und die zugeordneten Adressen mit Hilfe des Prozessors 21 in
Informationen, die zum Zugreifen auf ein Zeilen- und Spalten-Array
verwendbar sind. Der Logikblock 20 und der Prozessor 21 können so
betrachtet werden, daß sie
als Gesamtkommandobenutzerschnittstelle für das Flash-Plattenlaufwerk 17 funktionieren.
-
Das
gezeigte Flash-Speicher-Array 23 enthält Flash-EEPROM-Bauelemente 24, die
jeweils eine Anzahl von Blöcken 25 von
Speichertransistoren aufweisen. Ein Ausführungsbeispiel enthält 32 einzelne
große
Blöcke,
die jeweils 64 Kilobyte Flash-EEPROM-Speicherzellen aufweisen. Jedes Bauelement 24 enthält darüber hinaus
eine Schaltung zum Steuern des Anlegens von Signalen und Spannungen,
um die Lese-, Schreib-, Kopier- und Löschfunktion in den einzelnen
Blöcken
auszuführen.
Jedes Flash-EEPROM-Bauelement 24 des Arrays 23 enthält eine
Kommandobenutzerschnittstelle (CUI) einschließlich einer oder mehrerer Zustandsmaschinen.
Eine typische Flash-Bauelement-Kommandobenutzerschnittstelle
ist so konstruiert, daß sie sämtliche
an die einzelnen Flash-Bauelemente 24 adressierten Kommandos
von dem Logikblock 20 unabhängig von ihrer Adresse in dem
Bauelement empfängt
und daß sie
die Kommandos verwendet, um die verschiedenen angewiesenen Operationen
durchzuführen.
Die Flash-Bauelement-CUI verwendet oftmals eine Schreibzustandsmaschine,
um Schreib-, Kopier- und
Löschoperationen
und bestimmte andere interne Operationen der Speicherbauelemente des
Flash-Bauelements zu steuern. Somit werden die Kommandobenutzerschnittstellen
in jedem der Flash-Speicherbauelemente 24 üblicherweise
verwendet zum Löschen
der Blöcke 25 von
Zellen und zum Lesen oder Schreiben von Daten in Zeilen- und Spaltenadressen,
während
sich die ATA-Kommandobenutzerschnittstelle (einschließlich des
Logikblock 20 und des Prozessors 21) außerhalb
der Bauelemente 24 mit Zylinder/Kopf/Sektor- oder Logikblockadressen,
wie sie für
ein mechanisches Plattenlaufwerk repräsentativ sind, befaßt.
-
Bekannte
Flash-Platten-Emulatoren (obwohl sie nicht in 2 gezeigt
sind) enthalten einen Treiber auf niedriger Ebene zwischen dem IDE/ATA-Gerätetreiber
und dem Emulator, der die in der Einrichtung 17 von der
externen Kommandobenutzerschnittstelle, die aus dem Logikblock 20 und
dem Prozessor 21 und zugehörigem Speicher zum Übersetzen
der ATA-Kommandos
in Kommandos, die von einem Zeilen- und Spalten- Array ausgeführt werden können, besteht,
ausgeführten
Funktionen ausführt. Wie
oben ausgeführt,
ist ein derartiger Treiber auf niedriger Ebene nicht vorwärtskompatibel
und funktioniert somit nicht mit neuen Flash-Platten-Emulatoren,
wenn diese erscheinen.
-
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung werden eine Vorrichtung und ein Verfahren
zur Verfügung
gestellt zum direkten Definieren der Charakteristika von Flash-Speicherbauelementen
in Form von Flash-EEPROM-Grundelementen anstelle von Grundelementen
rotierender Platten, wie sie bei bekannten Anordnungen definiert worden
sind. Dies gestattet den direkten Zugriff eines Flash-Speicher-Arrays
zum Lesen und Ausführen der
darin gespeicherten Daten unter Verwendung von Software-Treibern,
die durch Werte initialisiert werden, die im Ergebnis einer Abfragefunktion,
die von dem Flash-Speicherbauelement zur Verfügung gestellt wird, gewonnen
wurden.
-
Gemäß 2 wird
ein neuer Softwaretreiber 35 einer hohen Ebene als Teil
des Betriebssystems zur Verfügung
gestellt. Dieser Softwaretreiber (genannt Flash-Übersetzungs-Schicht(FTL)-Treiber) übersetzt
die von dem Plattendateisystem zur Verfügung gestellten Informationen
in Flash-EEPROM-Grundelemente.
Der Treiber 35 hoher Ebene stellt Adressen und Daten an
einen Treiber 36 niederer Ebene zur Verfügung, der
speziell angepaßt
ist, um mit dem zur Verfügung
gestellten Flash-Bauelement zu funktionieren. Der Treiber 36 niederer
Ebene stellt viele der hierfür
von der Kommandobenutzerschnittstelle 20 des Flash-Plattenlaufwerks 17 zur Verfügung gestellten
Funktionen zur Verfügung.
-
Wie
in 2 zu sehen ist, enthält das Flash-Speicherbauelemente-Array 18 eine
Mehrzahl einzelner Flash-EEPROM-Speicherbauelemente 27 und
einen Dekodierer 29 zum Richten von Kommandos an die Speicherzellen
in Blöcken
der einzelnen Bauelemente 27. Das Flash-Speicherbauelemente-Array 18 und
die beiden Softwaretreiber 35 und 36 bilden zusammen
den Flash-Plattenemulator gemäß der vorliegenden
Erfindung (in der Figur in gestrichelte Linien eingeschlossen gezeigt).
Wie unter Bezugnahme auf die bekannten Flash-Plattenemulatoren dargelegt
wurde, wurden verschiedene der in der Hardware in dem Flash-Plattenlaufwerk 17 enthaltenen
Funktionen durch Funktionen in dem hohen und dem niedrigen Software-Treiber
ersetzt.
-
3 veranschaulicht
ein Flash-Speicherbauelement 27, das gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung aufgebaut ist. Das Flash-Speicherbauelement 27 gemäß 3 enthält eine
Bauelement-Kommandoschnittstelle 40 mit Adreßdekodierschaltung 43 und
Zustandsmaschinen 44. Eine zusätzliche Schreibzustandsmaschine 41 ist der
Kommandobenutzerschnittstelle zugeordnet, um bei der Programmierung
und Löschung
der Zellen von Blöcken
von Flash-EEPROM-Speicherzellen 48 Unterstützung zu
leisten. Ein Schreibpuffer 45 ist vorgesehen, durch welchen
Daten an die Blöcke
von Flash-Speicherzellen 48 geliefert
werden. Ein Statusregister 46 liefert den Betriebsstatus
des Bauelements 27 und ein Datenmultiplexer 47 steuert
die Übertragung
von Daten aus dem Bauelement 27 hinaus.
-
Das
Flash-Speicherbauelement 27 enthält darüber hinaus einen Identifikations/Abfragemodus-Nur-Lese-Speicher
(ROM) 31, in welchen Details der Charakteristika der speziellen
Flash-Speicherzellentechnologie und Steuerschaltung jedes Flash-Speicherbauelements 27 gespeichert
sind. Der Identifikations/Abfragemodus-ROM 31 antwortet auf
ein Abfragekommando, das als Teil der Software des Gerätetreibers 35 der
oberen Ebene zur Verfügung
gestellt und durch die Bauelemente-Kommandobenutzerschnittstelle 40 dekodiert
wird.
-
Die
Gerätetreiber 35 und 36 liefern
einen Algorithmus zur Schnittstellenbildung mit dem Flash-Speicherbauelement 27,
der einen Kommandosatz enthalten kann. Die Kommandos des grundlegenden
Kommandosatzes können
ein Abfragekommando, ein Lesekommando, ein Schreibkommando, ein
Statuslesekommando, ein Löschkommando
und ein Aussetzkommando umfassen. Der Kommandosatz kann darüber hinaus
zusätzliche
Kommandos enthal ten, die von den verschiedenen Schaltungen unter
Steuerung dieser Gerätetreiber
ausgeführt
werden können.
-
Ein
an einen Adreßdekodierer 29 gerichtetes Abfragekommando
veranlaßt
den ROM 31, Daten zur Verfügung zu stellen, die die physikalischen
Parameter des Flash-Plattenlaufwerks anzeigen. 4 veranschaulicht
Daten, die aufgrund eines Abfragekommandos zurückgegeben werden können.
-
Bei
einem Ausführungsbeispiel
des Flash-Speicherbauelements 27 empfängt der Treiber 35 der
hohen Ebene Kommandos, die übersetzt
und an den Treiber 36 der niedrigen Ebene gesendet werden.
Sämtliche
dieser Kommandodaten werden dem Treiber 36 der niedrigen
Ebene durch den Treiber 35 der hohen Ebene in Form von
Flash-Speicherbauelement-Grundelementen zur Verfügung gestellt, die keine weitere Übersetzung
erfordern, um bei einem Flash-Speicherbauelement benutzt zu werden.
-
Normalerweise
hält der
Treiber 36 der niederen Ebene das Flash-Speicherbauelement 27 in
einem Array-Lesemodus. Jedoch kann ein gültiges Kommando irgendein Bauelement 27 in
einen anderen Modus umschalten. Wenn ein Lese-Abfrage-Kommando an
den Treiber 36 der niedrigen Ebene gerichtet wird, sendet
der Treiber ein Abfragekommando an die Bauelemente-Kommandobenutzerschnittstelle 40,
das die Abfrage des Abfragemodus-ROM 31 und die Rückgabe der
Abfragedaten bewirkt. Typischerweise werden die in Erwiderung des Abfragekommandos
zurückgegebenen
Abfragedaten in einer seriellen Sequenz zur Verfügung gestellt. Diese Daten
können
dann verwendet werden, um die Software-Treiber der niedrigen und
hohen Ebene 35 und 36, die mit dem Flash-Speicherbauelemente-Array 18 verwendet
werden, zu initialisieren, so daß die von den Treibern verwendeten
Kommandos mit den Fähigkeiten
des Flash-Speicherbauelements 27 übereinstimmen. Dies gestattet
ein Implementieren gleicher Treiber, die durch verbesserte Versionen
von Flash-Speicherbauelemente-Arrays aktualisiert werden können, wenn
jene verbesserten Arrays konstruiert sind.
-
4 veranschaulicht
ein Ausführungsbeispiel
von Daten, die in einem Abfrage-ROM 31 gespeichert und
in Erwiderung eines an der Kommandobenutzerschnittstelle 40 empfangenen
Abfragekommandos zurückgegeben
werden können.
Die Daten können
in einer seriellen Zeichenkette zurückgegeben werden, in welcher
die ersten 16 Bytes für die Übertragung
von Daten reserviert sind, die für
einen speziellen Flash-Speicher-Anbieter spezifisch sind. Die nächsten elf
Bytes werden verwendet, um Daten zu übertragen, die einen speziellen
Kommandosatz beschreiben, der verfügbar ist, um mit dem Flash-Array
verwendet zu werden. Von diesen elf Datenbytes werden die ersten
drei Bytes verwendet, um einen Abfragezeichenkettenindikator, wie
beispielsweise den ASCII-Wert für "QRY", zu übertragen.
Dies zeigt dem Computer an, daß das
Array in der Lage ist, Abfragekommandos aufzunehmen und zu beantworten.
Die nächsten
zwei Bytes werden verwendet, um einen 16-Bit-Identifikationscode zu übertragen, der
einen speziellen, von diesem bestimmten Flash-Speicherbauelement 27 verwendeten
allgemeinen Anbieter-Kommandosatz definiert. Im allgemeinen ist
ein derartiger Kommandosatz ein definierter Kommandosatz, der als
Standard für
jeden Anbieter zur Verwendung in einem Gerätetreiber verfügbar ist.
Ein solcher Kommandosatz kann durch einen oder mehrere Anbieter
verwendet werden, gibt aber exakt die Grundkommandos an, mit welchen
die Schnittstelle funktioniert. Die nächsten zwei Bytes übertragen
dann eine Adresse für
einen erweiterten Abschnitt von grundsätzlich unbegrenztem Ausmaß, der zu
dem durch die letzten zwei Bytes definierten Kommandosatz hinzugefügt werden
kann. Diese Adresse gestattet es einem Anbieter, den primären Kommandosatz
durch Kommandos zu erweitern, die der Anbieter als Teil des Kommandosatzes
für das Flash-Speicherbauelement 27 wünscht. Grundsätzlich werden
solche zusätzlichen
Kommandos auf die gleiche Weise definiert, wie die Kommandos, die
in allgemeinen Kommandosätzen
der Gerätetreiber verfügbar sind.
In 4 stellen zwei als "Offset-Adresse P" und "Offset-Adresse A" bezeichnete Abschnitte einen Raum variabler
Länge zum Übertragen
von Daten zur Verfügung,
die primäre
und alternative erweiterte Abfragetabellenelemente definieren. Auf
diese Weise kann ein Anbieter zusätzliche Kommandos hinzufügen, die
für das
Flash-Speicherbauelement, das von dem Gerätetreiber implementiert werden
soll, spezifisch sind. Die nächsten
zwei Bytes werden verwendet, um 16 Bit Daten zu übertragen, die einen zweiten
allgemeinen Kommandosatz anzeigen, der von dem Flash-Speicherbauelement 27 implementiert
werden kann. Wenigstens zwei Bytes werden verwendet, um die Adresse
für Erweiterungen
dieses alternativen Kommandosatzes für das Flash-Speicherbauelement 27 zu übertragen.
-
Diese
Anordnung gestattet es einem Anbieter, einen primären Basissatz
von Kommandos zum Betreiben des Arrays zu verwenden, zusätzliche Kommandos
zu dem primären
Basissatz von Kommandos zum Ausführen
der Funktionen des Arrays hinzuzufügen, einen zweiten Basissatz
von Kommandos zum Betreiben des Arrays zu verwenden und zusätzliche
Kommandos zu dem zweiten Basissatz von Kommandos zum Ausführen der
Funktionen des Arrays hinzuzufügen.
Dies gestattet es einem Anbieter, zusätzliche Kommandos hinzuzufügen, wenn
Verbesserungen zu dem Flash-Speicherbauelement 27 hinzugefügt werden.
Die in Erwiderung des Abfragekommandos übertragenen Daten gestatten es
dann einem Gerätetreiber,
modifiziert zu werden, um den richtigen Kommandosatz zum Implementieren
der Operationen des Arrays zur Verfügung zu stellen.
-
4 veranschaulicht
darüber
hinaus einen zweiten Satz von 12 Bytes, die eine Beschreibung der
Systemschnittstelle zur Verfügung
stellen und in Erwiderung eines Abfragekommandos zurückgegeben
werden. Bei dem veranschaulichten Ausführungsbeispiel definiert ein
erstes Byte die minimale Versorgungsspannung, die von dem Array
unter seinen normalen Betriebsbedingungen verwendet wird. Ein zweites
Byte definiert die maximale Versorgungsspannung, die von dem Array
unter seiner normalen Betriebsbedingung verwendet wird. Ein drittes
Byte definiert die minimale Versorgungsspannung, die von dem Array
im Programmierzustand verwendet wird. Ein viertes Byte definiert
die maximale Versorgungsspannung, die von dem Array im Programmierzustand
verwendet wird. Die nächsten
acht Bytes definieren verschiedene Systemzeitgabeparameter für unterschiedliche
Operationen.
-
Diese
Werte gestatten die Initialisierung von Gerätetreibern, um die richtigen
Werte für
jede der speziellen Operationen zur Verfügung zu stellen, die das Array
beim Ausführen
seiner Lese-, Schreib-, Kopier- und Löschfunktionen implementiert.
-
4 veranschaulicht
darüber
hinaus zusätzliche
10 Bytes, die bei dem veranschaulichten Ausführungsbeispiel verwendet werden
können,
um Daten zu übertragen,
die die spezielle Geometrie des Flash-Speicherbauelements 27 definieren.
Bei diesem Ausführungsbeispiel
wird ein erstes Byte verwendet, um die Flash-Speicherbauelementegröße zu definieren.
Als zweites werden zwei Bytes verwendet, um die Schnittstelle zu
beschreiben, z.B. Asynchron 8 Bit, Asynchron 16 Bit oder beides.
Als drittes definieren zwei Bytes die Maximalanzahl von Bytes bei
einem Mehr-Byte-Schreiben. Bei einem Ausführungsbeispiel der Erfindung
wird ein Löschblockieren verwendet,
um einen oder mehrere Blöcke
innerhalb eines Löschblockbereichs
des Arrays "nur
lesbar" zu machen.
Es können
Löschblöcke unterschiedlicher Größe existieren.
Ein viertes Byte definiert die Anzahl derartiger Löschblockbereiche
in einem Bauelement. Als fünftes
definieren vier Bytes die Größe und Anzahl
der Löschblöcke in einem
Löschblock
einer Matrix. Durch Definieren der Größe und Anzahl der unterschiedlichen
Löschblöcke, die
in dem Array vorhanden sind, kann ein Software-Treiber über die
unterschiedlichen Flächen
unterrichtet werden, die "nur lesbar" gemacht wurden oder
die in einer Einzeloperation gelöscht
werden können.
-
Sämtliche
dieser Werte werden darüber
hinaus verwendet, um den mit dem speziellen Flash-Speicherbauelement 27 ver wendeten
Treiber so zu initialisieren, daß er sich auf effektive Weise
mit dem Array befassen kann.
-
Sobald
die Gerätetreiber
auf die Werte des speziellen Flash-Speicherbauelements 27 initialisiert worden
sind, können
verschiedene Kommandos verwendet werden, und das Flash-Speicherbauelement 27 wird
diese Kommandos akzeptieren. Die Schreib-, Lese- und Löschkommandos
bewirken ähnliche Operationen
wie bei dem Flash-Plattenlaufwerk 17 gemäß 2,
da der Flash-Übersetzungs-Schicht-Treiber
derartige Plattenkommandos in Flash-Grundkommandos übersetzt,
die von dem Treiber der niedrigen Ebene ausführbar sind. Die richtige Übersetzung
von Anforderungen nach Datenübertragungen
spezieller Plattengrundeinheiten oder Sektoren in variable Flash-Bauelement-spezifische
Blocklösch-
und Byte- oder Puffer-Schreibkommandos
wird durch die Kenntnis der Software-Treiber über die Löschblockgrößen, Löschblockbereichsgrößen, Schreibpuffergrößen und
die Größe des gesamten
Bauelemente-Arrays
erleichtert. Die durch Auslesen des Inhalts des Abfrage-ROM 31 zur
Verfügung gestellten
Informationen gestatten es den Gerätetreibern des Flash-Platten-Emulators,
verschiedene Größen von
Plattenlaufwerken zu emulieren, wie beispielsweise das elektromechanische
Laufwerk 16 oder das Flash-Plattenlaufwerk 17,
unter Verwendung beliebiger Kombinationen unterschiedlicher Flash-Speicherbauelemente 27 in
einer Flash-Speicherkarte oder einer anderen Flash-Speichermatrix, die
in einem Flash-Platten-Emulator verwendet wird. Darüber hinaus
sind diese Informationen sogar nützlich
zum Vereinfachen der Firmware innerhalb eines Flash-Plattenlaufwerks 17,
das Flash-Speicherbauelemente 27 enthält, die in der Art der vorliegenden
Erfindung implementiert sind, so daß es die gleiche Firmware gestattet,
daß das
Flash-Plattenlaufwerk zu einem späteren Datum unter Verwendung
neuerer Flash-Speicherbauelemente mit verbesserten Merkmalen oder
größeren Kapazitäten hergestellt
wird.
-
Die
Flash-Speicherbauelementekommandos gestattet es darüber hinaus,
daß ein
Abschnitt des Arrays "Nur
lesbar" für spezielle
Operationen gemacht wird. Daten, die in einem "Nur-Lese"-Löschblockbereich
des Arrays gespeichert sind, können dann
direkt aus dem Array in einem Modus gelesen werden, bei welchem
auf Daten auf einer Zeilen- und Spaltenbasis zugegriffen wird. Solch
ein "Nur-Lese"-Abschnitt des Arrays
kann verwendet werden, um Programme direkt aus dem Array heraus
auszuführen.
-
In
einem solchen Fall werden Daten zu dem Flash-Speicherbauelement 27 in
der typischen Weise über
eine in 3 gezeigte Bauelemente-Kommandoschnittstelle 40 geschrieben,
die Zustandsmaschinen zum Ausführen
der verschiedenen Zugriffs- und Steueroperationen enthält. Die
Schnittstelle 40 ist einer Schreibzustandsmaschine 41 zugeordnet, die
bei jedem Chip zum Schreiben, Kopieren und Löschen der Blöcke des
Flash-Speichers verwendet wird. Wenn jedoch die Daten für eine direkte
Befehlscodeausführung
geschrieben werden, so werden die Blöcke 48, in welchen
die Daten gespeichert sind, als "nur
lesbar" markiert.
Dies veranlaßt
die Anwendungsbefehle in den Blöcken,
in der Dateireihenfolge zu verbleiben und nicht unzusammenhängend angeordnet
zu werden. Demzufolge braucht die Datei nicht extern umgeordnet
zu werden, bevor die Befehle ausgeführt werden. Dann findet ein
Lesen der Befehle, die eine Anwendung bilden, in einem separaten
Lese-Array-Modus
des Flash-Speicherbauelements 27 statt. Dieser Modus kann
durch ein Lese-Array-Kommando initiiert werden, der das Flash-Speicherbauelement 27 veranlaßt, in dem
Lese-Array-Modus
zu funktionieren. Alternativ kann ein separates Lese-Array-Pin zur
Verfügung
gestellt werden. Die Lese-Array-Modus-Auswahl gestattet es einem
Prozessor oder anderen Bus-Master, direkt Daten aus dem Flash-Speicherbauelement 27 zu
lesen, indem die richtigen Chip-, Block-, Zeilen- und Spalten-Leseadressen
innerhalb des Kommandos zur Verfügung
gestellt werden.
-
Wenn
es sich in dem Lese-Array-Modus befindet, können die in dem Array gespeicherten
Befehle aus dem Array so schnell gelesen werden, wie Befehle üblicherweise
aus einem DRAM-Speicher gelesen werden. Aus diesem Grund kann das
Array nicht nur zum Ersetzen von Langzeitspeicher, wie beispielsweise
einem rotierenden Plattenspeicher, verwendet werden, sondern darüber hinaus
zum Ersetzen bestimmter Hauptspeicherfunktionen, wo sich Daten nicht
schnell ändern,
sondern nur aus dem Array gelesen zu werden brauchen.
-
Zusätzlich zu
den von dem hier beschriebenen Ausführungsbeispiel zur Verfügung gestellten Kommandos
könnten
außerdem
andere Kommandos bei einem Flash-Speicherbauelement 27 verwendet
werden oder durch andere Bauelemente, die ein Flash-Speicher-Array
verwenden und Abfragedaten gemäß der vorliegenden
Erfindung zurückgeben. Beispielsweise
kann das Abfragekommando darüber hinaus
Daten zurückgeben,
die anzeigen, ob ein Lesen und Schreiben auf der Byte-Ebene stattfinden kann,
die interne Busbreite und die Größe des Eingabepuffers 28.
Das Abfragekommando kann darüber hinaus
Daten zurückgeben,
die anzeigen, ob Lösch-, Schreib-
und Kopierfunktionen ausgesetzt werden können und für welche anderen Operationen
sie ausgesetzt werden können.
Zusätzliche
Daten, die zur Verfügung
gestellt werden können,
umfassen Angaben, ob ein Bereit/Besetzt-Signal vorhanden ist. Sofern
das Array eine Mehrbit-Zellen-Speicherung zur Verfügung stellen
kann, kann ein Abfragekommando Daten zurückgeben, die sich auf die Art
der Mehrbit-Speicherung, einschließlich der Anzahl der Bits pro
Zelle, beziehen, ob Fehlerkorrekturcodierung verwendet wird und
andere Charakteristika. Andere von einem Abfragekommando zurückgegebene
Daten können
anzeigen, daß das
Array in einem Einzelbitmodus funktioniert, daß das Array in der Lage ist, in
einem Zwei-Zustands-Modus oder in einem anderen Mehr-Bit-Modus zu
arbeiten, und die Anzahl von in jeder Zelle in irgendeinem derartigen
Mehr-Bit-Modus gespeicherten Bits. Auf diese Weise kann die Schnittstelle
bei Flash-Speicherbauelementen verwendet werden, die es gestatten,
daß ein
einzelnes Bit oder eine Mehrzahl von Bits durch eine Speicherzelle
gespeichert werden. Eine Abfrageantwort könnte darüber hinaus einem Prozessor
anzeigen, ob das Array eine Fehlererfassung und -korrektur beim
Speichern und Wiedergewinnen von Daten implementiert. Andere Antworten
auf ein Abfragekommando könnten
die Art des logischen Laufwerks anzeigen, die das Array bildet,
z.B., ob das Array von einem PCMCIA-Typ oder eines anderen Typs
eines Laufwerks ist.
-
Durch
Verwenden eines Abfragekommandos, das Daten zurückgibt, die die physikalischen
Eigenschaften des Arrays anzeigen, gestattet die Schnittstelle eine
Array-Gerätetreiberinitialisierung, so
daß die
Mehrzahl von Kommandos, die von einem Prozessor erzeugt werden können, so
angepaßt
werden, daß sie
den Ablauf von Operationen in einer Weise bewirken, die für die physikalischen
Eigenschaften des Arrays am besten geeignet ist. Die zentrale Verarbeitungseinheit
in einem System, das eine Flash-Speichereinrichtung mit einer derartigen Schnittstelle
verwendet, kann die Ergebnisse des Abfragekommandos lesen, um zu
bestimmen, welche Art von Schnittstelle es zu irgendeinem Flash-Speicher-Bauelement,
das in dem System angeordnet ist, bilden soll. Durch Verwenden eines
fest vorgegebenen Kommandosatzes, stellt ein Abfragekommando Antworten
zur Verfügung,
die von sämtlichen
Anbietern in der Industrie verwendet werden können. Obwohl der Kommandosatz
fest in seiner Bedeutung ist, stellt er außerdem Mittel zur Verfügung, durch
welche er aktualisiert werden kann, um zukünftige Bauelemente einzuschließen, ohne
das Neuschreiben der Gerätetreiber
niedriger Ebene, die bei derartigen Bauelementen verwendet werden,
zu erfordern.
-
In
der vorstehenden Beschreibung wurde die Erfindung unter Bezugnahme
auf spezielle Ausführungsbeispiele
beschrieben. Es ist jedoch klar, daß verschiedene Modifikationen
und Änderungen
daran vorgenommen werden können,
ohne vom breiteren Geist und Umfang der Erfindung abzuweichen, wie
er in den anhängigen
Ansprüchen
angegeben ist. Die Beschreibung und Zeichnungen sind dementsprechend
in einem veranschaulichenden und nicht in einem einschränkenden
Sinne zu verstehen.