-
Die
vorliegende Erfindung bezieht sich auf ein Verfahren zum Schreiben
von Daten in einen nicht-flüchtigen
Speicher und insbesondere auf ein Verfahren zum Schreiben von Daten
in einen Flash-Speicher, um die gleichmäßige Verteilung der Nutzung über einen
längeren
Betriebszeitraum zu gewährleisten.
-
In
bekannten Speichersystemen ist es üblich, dass ein nicht-flüchtiger
Speicher wie zum Beispiel der Flash-Speicher der Speichersysteme
Verschleißmechanismen
innerhalb seiner physikalischen Strukturen aufweist, was bedeutet,
dass ein Block in dem Flash-Speicher nach einer kumulierten Anzahl
von Operationen ausfallen kann. Bekannte Datenverwaltungsverfahren
führen
jedoch im Allgemeinen kein Blocklöschen im Flash-Speicher in
Echtzeit durch, was zur Ansammlung von Blöcken in dem Flash-Speicher
führen
kann, die überholte
Versionen der Sektoren enthalten. Es ist auch der Fall, dass in
bekannten Systemen die physikalische Adresse zum Schreiben eines
Sektors von der logischen Adresse des Sektors abhängig ist,
so dass logisch nicht zusammenhängende
Sektoren in eine nicht zusammenhängende
physikalische Adresse und logische auf physikalische Adressen geschrieben
werden.
-
Ein
besonderes Ziel der vorliegenden Erfindung ist die Verringerung
der Anzahl von Lese- und Schreibzugriffen auf den nicht-flüchtigen
Speicher für
Steuerdatenstrukturen, um die Schreibgeschwindigkeit des Speichersystems
für Host-Daten
zu erhöhen.
-
Ein
zweites Ziel der Erfindung ist die Erzielung einer gleichmäßigen Nutzung
der Blöcke
in dem nicht-flüchtigen
Speicher zum Speichern von Daten über eine längere Betriebszeit und die
Vermeidung von „Hot
Spots" bei der Nutzung
des nicht-flüchtigen
Speichers, um die Zuverlässigkeit
des Speichersystems zu erhöhen.
-
Aus
EP-A-0522780 ist die Bereitstellung eines nicht-flüchtigen
Speichersystems bekannt, bei dem die ersten Sektoren jedes Blocks
im Flash-Speicher als eine Sektorverwaltungstabelle verwendet werden
und eine Steuerung mit dem Flash-Speicher gekoppelt ist, um im RAM
Listen von Blöcken
in dem der Speicherung logischer Sektordaten zugeordneten Flash-Speicher
sowie von in dem Flash-Speicher kürzlich gelöschten Blöcken zu halten.
-
Aspekte
der vorliegenden Erfindung sind in den anliegenden unabhängigen Ansprüchen festgelegt.
-
Nach
einer Ausführungsform
der Erfindung ist eine mit einem nicht-flüchtigen Speicher verbundene Steuerung
mit einem flüchtigen
Speicher vorgesehen, wobei
die Steuerung in dem flüchtigen
Speicher Listen von Blöcken
in dem der Speicherung logischer Sektordaten zugeordneten nicht-flüchtigen
Speicher sowie von in dem nicht-flüchtigen Speicher kürzlich gelöschten Blöcken hält und
die
Steuerung Informationen aus den Listen in dem flüchtigen Speicher in die Steuerdatenstrukturen
in dem nicht-flüchtigen
Speicher weniger häufig überträgt, als
die Inhalte der Listen in dem flüchtigen
Speicher geändert
werden, so dass die Listen in dem flüchtigen Speicher jederzeit
aus existierenden Informationen in dem nicht-flüchtigen Speicher rekonstruiert
werden können.
-
Vorzugsweise
werden die Informationen aus den Listen in dem flüchtigen
Speicher gleichzeitig mit Informationen für ein logisch/physikalisches
Mapping für
Sektoren aus anderen Listen in dem flüchtigen Speicher in die Steuerdatenstrukturen
in dem nicht-flüchtigen
Speicher übertragen.
-
Diese
und andere Aspekte der Erfindung werden aus der nachstehenden Beschreibung
in Verbindung mit den folgenden Zeichnungen ersichtlich.
-
1 zeigt
ein Host-System und ein Flash-Speichersystem nach der vorliegenden
Erfindung.
-
2 zeigt
die Hardware-Architektur der Steuerung für das System in 1 nach
der vorliegenden Erfindung.
-
3 zeigt
den Schichtaufbau der Firmware, die die Medienmanagement-Operationen nach
einer Ausführungsform
ausführt.
-
4a zeigt
eine schematische Darstellung der Schreiboperation nach der Ausführungsform.
-
4B zeigt
eine schematische Darstellung der Schreib- und Verschiebeoperationen.
-
5 zeigt
eine schematische Darstellung der dreistufigen Hierarchie der Zuordnungsstrukturen
für den
Adressübersetzungsprozess.
-
6 zeigt
eine schematische Darstellung der Datenstrukturen in dem Speichersystem
nach der vorliegenden Erfindung.
-
7 zeigt
eine schematische Darstellung der Steueroperationen für das Speichersystem.
-
8 zeigt
eine schematische Darstellung des Operationsablaufs für die Adressübersetzungsoperation.
-
9 zeigt
eine schematische Darstellung der Steuer-Schreiboperation für das Speichersystem.
-
10 zeigt
eine schematische Darstellung der EBM-Sektor-Schreibfunktionsoperation
für das
Speichersystem.
-
11 zeigt
eine schematische Darstellung des Status der Datenstrukturen zu
Beginn einer Map-Schreiboperation.
-
12 zeigt
eine schematische Darstellung des Status der Datenstrukturen nach
der CBL-Map-Operation.
-
13 zeigt
eine schematische Darstellung des Status der Datenstrukturen nach
der ABL- und CBL-Konsolidierungsoperation.
-
14 zeigt
eine schematische Darstellung des Status der Datenstrukturen nach
der Map-to-CBL-Operation.
-
15 zeigt
eine schematische Darstellung des Status der Datenstrukturen nach
der CBL-to-EBL-Operation.
-
16 zeigt
eine schematische Darstellung des Status der Datenstrukturen nach
der EBL-to-ABL-Operation.
-
17 zeigt
eine schematische Darstellung eines alternativen Host-Systems und Flash-Systems nach
der vorliegenden Erfindung.
-
Eine
Flash-Disk-Vorrichtung wie die in 1 ist ein
Speichersystem, das die logischen Merkmale eines Plattenlaufwerks
für ein
Host-System 12 repräsentiert
und das Flash-Halbleiterspeicher 20 als sein physikalisches
Datenspeichermedium verwendet. Ein Flash-Disk-Speichersystem 10 erfordert
eine Steuerung 12 zur Verwaltung des physikalischen Speichermediums
des Systems 10 nach Algorithmen, die die logischen Merkmale
einer Festplatte schaffen, und in diesem Fall sind es der Flash-Speicher 20 und
die Steuerung 16, die durch die physikalische Schnittstelle 18 verbunden
sind, die das Speichersystem 10 bilden. Die Steuerung 16 des
Speichersystems 10 verbindet das System 10 über die
logische Schnittstelle 14 mit dem Host 12.
-
In
diesem Fall weist der Flash-Speicher 20 mehrere Flash-Chips
auf, die aus mehreren Flash-Blöcken bestehen. Über die
logische Schnittstelle 14 zum Speichersystem 10 können Daten
in Einheiten mit fester Größe, so genannte
Sektoren, die jeweils 512 Datenbytes enthalten und auf die ein direkter
Zugriff möglich
ist, in das System 10 geschrieben bzw. aus diesem gelesen
werden. Jeder Sektor ist durch eine logische Adresse identifiziert,
die in diesem Fall eine fortlaufende logische Blockadresse (LBA)
ist.
-
In
der vorliegenden Anordnung können
Daten in einen Sektor geschrieben werden, auch wenn der Sektor bereits
Daten enthält.
Die Protokolle in der logischen Schnittstelle 14 können in
diesem Fall den Lese- oder Schreibzugriff auf das System 10 in
Blöcken
von mehreren Sektoren mit logisch zusammenhängenden Sektoradressen unterstützen, wobei
diese Protokolle Industriestandards wie ATA, CompactFlash oder MultiMediaCard
entsprechen, so dass das Speichersystem 10 zwischen verschiedenen
Host-Systemen austauschbar und nicht auf die Verwendung mit dem
Host 12 beschränkt
ist.
-
Über die
physikalische Schnittstelle 18 von der Steuerung 16 zum
Flash-Speicher 20 können Daten
in den Flash-Speicher 20 geschrieben und aus diesem gelesen
werden, und zwar in Einheiten mit fester Größe, die in diesem Fall als
physikalische Sektoren bezeichnet werden, auf die direkt zugegriffen
werden kann und die im Allgemeinen jeweils eine ausreichende Kapazität für 512 Datenbytes
von dem Host-System plus 16 Bytes Overhead-Daten haben, die von
der Steuerung 16 angehängt
werden. Jeder physikalische Sektor ist durch eine physikalische
Sektoradresse identifiziert, die normalerweise getrennte Komponenten
aufweist, die jeweils den Flash-Chip innerhalb des Speicherteilsystems,
den Flash-Block innerhalb des Flash-Chips und den physikalischen
Sektor innerhalb des Flash-Blocks des Speichers 20 identifizieren,
in den der physikalische Sektor geschrieben wird.
-
In
dem gezeigten System 10 können Daten nur in einen physikalischen
Sektor geschrieben werden, wenn der Sektor zuvor gelöscht worden
ist. Der Flash-Speicher 20 wird als Reaktion auf einen
Befehl in der physikalischen Schnittstelle in Einheiten eines Flash-Blocks
gelöscht,
der typischerweise 32 physikalische Sektoren enthält. Die
relativen Zeiten für
die Ausführung
von Operationen im Flash-System 10 zum Lesen eines physikalischen
Sektors, Programmieren eines physikalischen Sektors und Löschen eines
Flash-Blocks liegen typischerweise im Verhältnis von 1:20:200.
-
In
der Anordnung in 1 ist die Steuerung 16 eine
zyklische Speichersteuerung, das heißt eine Flash-Medienmanagementsteuerung,
in der ein Verfahren zur Sicherstellung der gleichmäßigen Verteilung
der Nutzung implementiert ist, bei dem die Medienmanagement-Algorithmen
zur Implementierung dieses Verfahrens als Firmware durch einen Prozessor
in der Steuerung realisiert sind.
-
In 2 ist
eine optimierte Hardware-Architektur für die zyklische Speichersteuerung 16 gezeigt.
In diesem Fall ist die Steuer-Hardware eine spezielle Architektur
in einer getrennten integrierten Schaltung.
-
Die
Steuerung 16 umfasst einen Host-Schnittstellen-Steuerabschnitt 22,
einen Mikroprozessor 24, einen Flash-Schnittstellen-Steuerabschnitt 26,
einen ROM 28, einen SRAM 30 und einen Erweiterungsanschluss 32,
die jeweils durch den Speicherzugriffs-Steuerbus 34 miteinander
verbunden sind.
-
Die
Flash-Medienmanagement-Algorithmen für die zyklische Speicherung
sind durch Firmware implementiert, die auf dem Mikroprozessor 24 läuft, und
die Steuerung 16 ist verantwortlich für alle Flash-Medienmanagementfunktionen
und für
die Merkmale der logischen Schnittstelle 14 gegenüber dem
Host 12.
-
Der
Host-Schnittstellen-Steuerabschnitt 22 stellt den Pfad
für den
Datenstrom zum und vom Host-System 12 über die logische Schnittstelle 14 bereit.
-
Da
in diesem Fall die Steuerung 16 die Form einer dedizierten
integrierten Schaltung aufweist, stellt der Host-Schnittstellen-Steuerabschnitt 22 die
logische Schnittstelle 14 bereit, die einem Industrie-Standardprotokoll
entspricht, sowie ein Befehlsregister und eine Gruppe von Funktionsdateiregistern,
die die Route für den
Mikroprozessor 24 zur Steuerung der logischen Merkmale
der Schnittstelle 14 bereitstellen.
-
Der
Host-Schnittstellen-Steuerabschnitt 22 ermöglicht auch
die Übertragung
eines Sektors mit Daten in beiden Richtungen über die logische Schnittstelle 14 zwischen
dem Host-System 12 und dem SRAM 30 der Steuerung
durch eine Direktzugriffsoperation (DMA) ohne Eingreifen seitens
des Mikroprozessors 24.
-
Der
Flash-Schnittstellen-Steuerabschnitt 26 stellt den Pfad
für den
Datenstrom zum und vom Flash-Speicher 20 bereit und steuert
alle Operationen, die im Flash-Speicher 20 erfolgen. Die
Operationen, die im Flash-Speicher 20 erfolgen, werden
durch den Mikroprozessor 24 festgelegt und eingeleitet,
der Parameter- und Adressinformationen in den Flash-Schnittstellen-Steuerabschnitt 26 lädt.
-
Die
Gruppe von Operationen, die im Allgemeinen erfolgen, sind die Übertragung
eines physikalischen Sektors an den Flash-Speicher 20,
die Übertragung
eines physikalischen Sektors aus dem Flash-Speicher 20, das
Einschreiben eines physikalischen Sektors in den Flash-Speicher 20,
das Löschen
eines Flash-Blocks und das Lesen des Status des Flash-Speichers 20.
-
In
gleicher Weise kann ein physikalischer Datensektor in beiden Richtungen über die
physikalische Schnittstelle 18 zwischen dem Flash-Speicher 20 und
dem SRAM 30 der Steuerung durch DMA-Operationen ohne Eingreifen
seitens des Mikroprozessors 24 übertragen werden. Die Organisation
der 512 Bytes Host-Daten und 16 Bytes Overhead-Daten in einem physikalischen
Sektor, der in den Flash-Speicher 20 übertragen wird, wird im Flash-Schnittstellen-Steuerabschnitt 26 unter
der Steuerung der durch den Mikroprozessor 24 geladenen
Parameter bestimmt.
-
Der
Flash-Schnittstellen-Steuerabschnitt 26 erzeugt auch einen
Fehlerkorrekturcode (ECC) mit 12 Bytes, der in den Flash-Speicher 20 übertragen
wird und als Overhead-Daten in jeden physikalischen Sektor geschrieben
wird; er wird außerdem
verifiziert, wenn ein physikalischer Sektor aus dem Flash-Speicher 20 übertragen
wird.
-
Der
Mikroprozessor 24 steuert den Strom der Datensektoren durch
den Speicherzugriffs-Steuerbus 34 oder Datenpfad oder der
Steuerung 16, implementiert die Flash-Medienmanagement-Algorithmen,
die die Sektor- und Steuerdaten-Speicherorganisation im Flash-Speicher 20 definieren,
und definiert die Merkmale der logischen Schnittstelle 14 zum
Host-System 12. In diesem Fall ist der Mikroprozessor 24 ein 32-Bit-RISC-Prozessor.
-
Der
Speicherzugriffs-Steuerbus 34 ermöglicht die Übertragung von Informationen
zwischen dem Mikroprozessor 24, dem Host-Schnittstellen-Steuerabschnitt 22 und
dem Flash-Schnittstellen-Steuerabschnitt 26 sowie zwischen
dem Host-Schnittstellen-Steuerabschnitt 22, dem Flash-Schnittstellen-Steuerabschnitt 26 und
einem Speicherblock 30.
-
Der
Mikroprozessor 24, der Host-Schnittstellen-Steuerabschnitt 22 und
der Flash-Schnittstellen-Steuerabschnitt 26 können jeweils
der Master für
eine Transaktion auf dem Speicherzugriffs-Steuerbus 34 sein.
Der Buszugriff wird den anfordernden Master-Systemen zyklusweise
gewährt.
-
Der
SRAM-Block 30 speichert alle vorläufigen Informationen in der
Steuerung 16, wobei diese Speicherfunktion das Puffern
der Sektordaten und das Speichern der Steuerdatenstrukturen und
Variablen sowie des Firmware-Codes
umfasst.
-
Der
ROM 28 ist in der Steuerung 16 enthalten, um Code
für die
Ausführung
durch den Mikroprozessor 24 oder von anderen Hardware-Blöcken in
der Steuerung benötigte
Informationen zu speichern.
-
Die
Einbeziehung eines Erweiterungsanschlusses 32 in die Steuerarchitektur
ermöglicht
den Zugriff auf externe Hardware-Funktionen, RAM- oder ROM-Speicher
von dem Speichersystem 10.
-
Beim
Betrieb der Steuerung werden alle zwischen der logischen Schnittstelle 14 zum
Host-System 12 und der physikalischen Schnittstelle 18 zum
Flash-Speicher 20 übertragenen
Sektordaten im SRAM 30 zwischengespeichert. Ausreichend
Kapazität
ist im SRAM 30 zur Zwischenspeicherung von zwei Datensektoren zugewiesen,
um die gleichzeitige Übertragung
von aufeinander folgenden Sektoren in den Host- und Flash-Schnittstellen
zu ermöglichen.
Die Datenübertragung
zwischen der logischen Host-Schnittstelle 14 und dem SRAM 30 erfolgt
durch DMA, wobei der Host-Schnittstellen-Steuerabschnitt 22 als
Bus-Master fungiert. Die Datenübertragung
zwischen der physikalischen Flash-Schnittstelle 18 und
dem SRAM 30 erfolgt durch DMA, wobei der Flash-Schnittstellen-Steuerabschnitt 26 als
Bus-Master fungiert.
-
Da
die Steuerung 16 die Form einer dedizierten integrierten
Schaltung aufweist, stellt der Host-Schnittstellen-Steuerabschnitt 22 eine
logische Schnittstelle bereit, die einem Industrie-Standardprotokoll
entspricht, und ein Befehlsregister und eine Gruppe von Funktionsdateiregistern
stellen die Route für
den Mikroprozessor 24 zur Steuerung der logischen Merkmale
der Schnittstelle 14 bereit. Befehls-, Adress- und Parameterinformationen
werden vom Host 12 in diese Funktionsdateiregister geschrieben
und vom Mikroprozessor 24 zur Ausführung des Befehls gelesen.
Informationen werden außerdem
vom Mikroprozessor 24 in die Register geschrieben, um sie
an den Host 12 zu übermitteln.
-
In 3 ist
der Schichtaufbau der Firmware gezeigt, die die Flash-Medienmanagement-Operationen für die zyklische
Speicherung ausführt.
Die Firmware weist drei Schichten auf, wobei die erste die Host-Schnittstellenschicht 40 ist,
die zweite Schicht 42 die Sektorübertragungs-Ablaufsteuerung 42a und
die Medienmanagementschicht 42b umfasst und die dritte
die Flash-Steuerschicht 44 ist.
-
Diese
drei Firmware-Schichten 40, 42 und 44 steuern
die Übertragung
der Datensektoren zwischen der logischen Schnittstelle 14 zum
Host 12 und der physikalischen Schnittstelle 18 zum
Flash-Speicher 20. Die Firmware-Schichten geben die Daten jedoch nicht
direkt weiter; stattdessen werden Datensektoren durch die Hardware-Blöcke der
Steuerung 16 übertragen
und gehen daher nicht durch den Mikroprozessor 24.
-
Die
Host-Schnittstellenschicht 40 unterstützt den vollen Befehlssatz
für das
Host-Protokoll. Sie interpretiert die Befehle in der Host-Schnittstelle 14,
steuert das logische Verhalten der Schnittstelle 14 entsprechend
den Host-Protokollen,
führt die
Host-Befehle aus, die nichts mit der Übertragung von Daten zu tun
haben, und gibt die Host-Befehle weiter, die sich auf die Daten
im Flash-Speicher beziehen, die in den Schichten darunter aufgerufen
werden sollen. Beispiele für
diese Befehle sind:
Logischen Sektor (einen oder mehrere) lesen,
logischen
Sektor (einen oder mehrere) schreiben,
logischen Sektor (einen
oder mehrere) löschen
sowie sonstige Befehle zum Formatieren der Platte und zur Identifizierung.
-
Die
Sektorübertragungs-Ablaufsteuerung 42a empfängt interpretierte
Befehle für
logische Datensektoren von der Host-Schnittstellenschicht 40 und
ruft damit die Flash-Medienmanagementschicht 42b für logisch/physikalische
Transformationsoperationen auf sowie die Flash-Steuerschicht für physikalische
Sektorübertragungen
zum oder vom Flash-Speicher. Die Sektorübertragungs-Ablaufsteuerung 42a führt auch
die Sektor-Pufferspeicherverwaltung durch. Eine weitere Funktion
der Ablaufsteuerung 42a ist die Einrichtung einer Reihe
von Sektorübertragungen
in der Host-Schnittstelle 14 und der Flash-Speicher-Schnittstelle 18 sowie
einer Reihe von Operationen in der Medienmanagementschicht 42b entsprechend
dem vom Host 12 erhaltenen Befehl und der für den Flash-Speicher 20 konfigurierten
Stufe der parallelen Operationen.
-
Die
Medienmanagementschicht 42b führt die logisch/physikalischen
Transformationsoperationen aus, die zur Unterstützung des Schreibens, Lesens
oder Löschens
eines einzelnen logischen Sektors erforderlich sind.
-
Diese
Schicht ist verantwortlich für
die Implementierung der Medienmanagement-Algorithmen für die zyklische
Speicherung.
-
Die
Flash-Steuerschicht 44 konfiguriert die Hardware des Flash-Schnittstellen-Steuerabschnitts 26 zur Ausführung von
Operationen entsprechend den Aufrufen von der Sektorübertragungs-Ablaufsteuerung 42a oder
der Medienmanagementschicht 42b.
-
Die
Medienmanagementfunktionen, die in der Medienmanagementschicht 42b der
Steuer-Firmware implementiert sind, erzeugen die logischen Merkmale
eines Plattenlaufwerks in dem Speichersystem 10, das den
Flash-Halbleiterspeicher 20 als physikalisches Datenspeichermedium
verwendet.
-
Die
Effektivität
des von den Medienmanagementfunktionen der Medienmanagementschicht 42b durchgeführten Medienmanagements
wird anhand ihrer Geschwindigkeit für die Durchführung eines
kontinuierlichen Schreibens von Daten in das Speichersystem 10,
ihrer Effizienz bei der Aufrechterhaltung ihres Leistungsniveaus
beim Betrieb mit verschiedenen Dateisystemen und in diesem Fall
im Host 12 sowie der Langzeitzuverlässigkeit des Flash-Speichers 20 gemessen.
-
Die
Datenschreibgeschwindigkeit ist definiert als die Geschwindigkeit,
die beim Schreiben einer großen
Menge zusammenhängender
Daten in das Speichersystem 10 aufrechterhalten werden
kann. In einigen Fällen,
wenn die kontinuierliche Datenschreibgeschwindigkeit eines Speichersystems
getestet wird, kann das Volumen der zu schreibenden Daten die Kapazität des Speichersystems 10 überschreiten,
und daher können logische
Adressen wiederholt werden.
-
Die
kontinuierliche Schreibgeschwindigkeit wird durch die Sektordatenübertragungsgeschwindigkeit an
der logischen Schnittstelle 14 zum Host 12 und
der physikalischen Schnittstelle 18 zum Flash-Speicher 20 bestimmt
sowie durch den Overhead-Anteil der Zugriffe auf den Flash-Speicher 20 an
der physikalischen Schnittstelle 18 für Flash-Seitenlese- und -schreiboperationen
und für
Flash-Blocklöschoperationen,
die nicht direkt mit der Speicherung der vom Host 12 geschriebenen
Datensektoren in der logischen Schnittstelle 14 verbunden
sind. In diesem Fall sollten die verwendeten Steuerdatenstrukturen
und Algorithmen sicherstellen, dass der Zugriff auf den Flash-Speicher 20 für Steuerfunktionen
mit einer deutlich niedrigeren Frequenz als für das Schreiben von Host-Sektoren
erforderlich ist. Die kontinuierliche Schreibgeschwindigkeit wird
auch durch die Verarbeitungszeit in der Steuerung 16 für Medienmanagement-Operationen, die
Seitenlese- und -schreibzeiten und die Blocklöschzeiten im Flash-Speicher 20 bestimmt.
-
Damit
das Speichersystem mit Dateisystemen mit unterschiedlichen Merkmalen
effizient arbeiten kann, werden die Medienmanagement-Algorith men
für die
Organisation der Host-Daten- und Steuerdatenstrukturen im Flash-Speicher 20 entsprechend
definiert, und die Datenschreibleistung wird in jeder Umgebung aufrechterhalten.
-
Bei
einer ersten Ausführungsform
sind die Dateisysteme, die den MS-DOS-Standard implementieren, mit mindestens
einem der folgenden Merkmale versehen: Der Host 12 schreibt
Datensektoren in Clustern mit mehreren Sektorschreibbefehlen, der
Host 12 schreibt Datensektoren mit einzelnen Sektorschreibbefehlen, der
Host 12 schreibt einige Sektoren mit einzelnen Sektorschreibbefehlen
in einen Adressbereich, der gemeinsam mit Cluster-Dateidaten genutzt
wird, der Host 12 schreibt nicht zusammenhängende Sektoren
für MS-DOS-Verzeichnis-
und FAT-Einträge
mit einzelnen Sektorschreibbefehlen, der Host 12 schreibt
nicht zusammenhängende
Sektoren für
MS-DOS-Verzeichnis- und
FAT-Einträge
durchsetzt mit zusammenhängenden Sektoren
für Dateidaten
und/oder der Host kann Sektoren für MS-DOS-Verzeichnis- und FAT-Einträge häufig neu
schreiben.
-
Es
ist ein Merkmal des Flash-Speichers, und in diesem Fall des Flash-Speichers 20 des
Speichersystems 10, dass er einen Verschleißmechanismus
innerhalb der physikalischen Struktur seiner Zellen aufweist, wodurch
ein Block des Flash-Speichers nach einer kumulierten Anzahl von
Operationen ausfallen kann. Im Allgemeinen liegt dies im Bereich
von 100.000 bis 1.000.000 Schreib/Löschzyklen. In Anbetracht dessen
implementiert die zyklische Speichersteuerung 16 in der
vorliegenden Anordnung einen Prozess des Verschleißausgleichs,
um sicherzustellen, dass im physikalischen Adressbereich des Flash-Speichers 20 keine „Hot Spots" auftreten und dass
die Nutzung der Flash-Blöcke über eine
längere
Betriebszeit gleichmäßig verteilt
ist.
-
Die
Medienmanagement-Algorithmen für
die zyklische Speicherung sind in dem Speichersystem 10 implementiert
und führen
die Medienmanagement-Operation
für den
physikalischen Flash-Speicher 20 im System 10 durch.
Die Medienmanagement-Algorithmen für die zyklische Speicherung
umfassen vier separate Algorithmen, nämlich den Datenschreibalgorithmus,
der die Position zum Einschreiben von Host-Informationen steuert,
den Blocklöschalgorithmus,
der das Löschen
von Bereichen im Flash-Speicher 20 steuert, die überholte
Informationen enthalten, den Blocksequenzalgorithmus, der die Reihenfolge
der Benutzung von Flash-Blöcken
zum Speichern von Informationen steuert, und den Adressübersetzungsalgorithmus,
der das Mapping der logischen Host-Adressen auf die physikalischen Speicheradressen
steuert.
-
Das
mit diesen Algorithmen implementierte Verfahren des Medienmanagements
für die
zyklische Speicherung arbeitet nach dem Prinzip, dass Daten an physikalischen
Sektorpositionen in den Flash-Speicher 20 geschrieben werden,
die derselben Reihenfolge folgen, in der die Daten geschrieben wer den.
Dies wird erreicht, indem jeder logische Datensektor an einer physikalischen
Sektorposition geschrieben wird, die durch einen zyklischen Schreibzeiger
festgelegt ist.
-
Eine
schematische Darstellung der Schreiboperation des Medienmanagementverfahrens
für die
zyklische Speicherung ist in 4A gezeigt.
Der Schreibzeiger, in diesem Fall der Datenschreibzeiger (DWP) 46, bewegt
sich sequenziell durch die Sektorpositionen von Flash-Block X in
Flash-Speicher 20 und weiter durch die Kette der Blöcke Y und
Z in einer Weise, die durch den Blocksequenzalgorithmus festgelegt
ist. Jeder Block X, Y und Z ist eine physikalische Struktur im Flash-Speicher 20,
der in diesem Fall 32 Sektorpositionen aufweist, die in
einer einzelnen Operation gelöscht
werden können.
-
Logische
Datensektoren werden im Allgemeinen durch ein Dateisystem im Host 12 in
Dateien geschrieben, und der Datenschreibalgorithmus für die zyklische
Speicherung lokalisiert den ersten Sektor einer Datei an der nächsten freien
physikalischen Sektorposition nach dem letzten Sektor der vorhergehenden
Datei. Wenn eine Datei vom Host 12 mit logischen Sektoren
geschrieben wird, für
die bereits gültige
Daten in der Vorrichtung existieren, werden die vorherigen Versionen
der Sektoren überholt,
und die sie enthaltenden Blöcke
werden entsprechend dem Blocklöschalgorithmus
gelöscht.
Um einen Block mit überholten
Dateisektoren zu löschen,
ist es in bestimmten Fällen
nötig,
einige gültige
Sektoren in eine andere Datei zu verschieben. Dies geschieht im
Allgemeinen, wenn ein Block Sektoren des Anfangs einer Datei enthält sowie
Sektoren mit nicht verbundenen logischen Adressen vom Ende einer
anderen Datei.
-
Ein
zweiter Schreibzeiger, in diesem Fall der Datenverschiebezeiger
DRP 47, wird zum Schreiben verlagerter Sektoren verwendet,
um zu verhindern, dass Sektoren einer Datei einen Block mit Sektoren
einer anderen Datei fragmentieren. Die Verwendung eines getrennten
Verschiebezeigers verringert die Fragmentierung von Blöcken, die
eine Datei enthalten, erheblich, was zu einem minimalen Bedarf hinsichtlich
der Verschiebung von Sektoren und folglich einer maximalen Dateischreibleistung
führt.
-
Ein
Host-Dateisystem wird verwendet, das ebenfalls Sektoren mit Systeminformationen
schreibt, zum Beispiel Verzeichnis- oder FAT-Sektoren im DOS-Dateisystem, und
diese werden im Allgemeinen unmittelbar vor und nach einer Gruppe
von Sektoren geschrieben, die eine Datei bilden. Ein getrennter
Systemzeiger, der Systemschreibzeiger SWP 48, wird für dieses
Host-Dateisystem verwendet, um die physikalische Schreibposition
für die
Systemsektoren festzulegen, die durch ihre logische Adresse identifiziert
sind, um die Systemsektoren von Datei-Datensektoren zu trennen und
zu verhindern, dass sie auf dieselbe Weise behandelt werden. Dadurch
wird vermieden, dass eine kleine Gruppe von Systemsektoren zwischen
dem Ende einer Datei und dem Anfang einer anderen im Sandwich eingeschlossen
wird. Diese Systemsektoren enthalten Informationen über viele
Dateien und werden im Allgemeinen viel häufiger neu geschrieben als
die Daten für
eine Datei. Im Sandwich eingeschlossene Systemsektoren würden ein
häufiges
Verschieben von Datei-Datensektoren verursachen, weshalb die Verwendung
des Systemzeigers SWP 48 den Bedarf hinsichtlich der Verschiebung
von Datensektoren minimiert und die Dateischreibleistung maximiert.
-
Ein
vierter Zeiger, der Systemverschiebezeiger SRP 49, wird
zum Verschieben von Systemsektoren verwendet, analog zu dem Verschiebezeiger
DRP 47 für
Datei-Datensektoren.
-
Die
vier Schreibzeiger lassen sich wie folgt zusammenfassen:
Der
Datenschreibzeiger DWP 46 wird verwendet, um die physikalische
Position zum Schreiben der von einem Host-System übermittelten
Datei-Datensektoren
festzulegen.
-
Der
Systemschreibzeiger SWP 48 wird verwendet, um die physikalische
Position zum Schreiben der von einem Host-System übermittelten
Systemsektoren festzulegen, wobei die Systemsektoren durch ihre
logische Adresse identifiziert sind, entsprechend den Merkmalen
des verwendeten Host-Dateisystems.
-
Der
Datenverschiebezeiger DRP 47 wird verwendet, um die physikalische
Position zum Schreiben von Datei-Datensektoren festzulegen, die
gelegentlich vor einem Blocklöschen
verschoben werden müssen,
um die von überholten
Datei-Datensektoren belegte Kapazität wieder verfügbar zu
machen.
-
Der
Systemverschiebezeiger SRP 49 wird verwendet, um die physikalische
Position zum Schreiben von Systemsektoren festzulegen, die vor einem
Blocklöschen
verschoben werden, um die von überholten
Systemsektoren belegte Kapazität
wieder verfügbar
zu machen.
-
Ein
Block darf nur Daten enthalten, die mit einem einzigen Schreibzeiger
verbunden sind, und daher gibt es vier getrennte Ketten von Blöcken, eine
für jeden
Schreibzeiger, wie in 4B gezeigt. Für jeden Schreibzeiger 46, 47, 48 und 49 gelten
jedoch dieselben Schreib- und Verschiebealgorithmen der zyklischen Speicheralgorithmen.
-
Dieses
Verfahren zum Positionieren eines zu schreibenden Sektors an der
ersten freien Position nach dem vorhergehenden Sektor, verbunden
mit der Verwendung von mehreren Schreibzeigern, ist sehr flexibel und
bietet eine hohe Leistung und umfassende Kompatibilität für alle Host-Schreibkonfigurationen,
einschließlich
einzelner Sektordaten und Daten in Clustern beliebiger Größe.
-
Das
Medienmanagementverfahren für
die zyklische Speicherung ist jedoch so definiert, dass es das Vorhandensein
einer großen
Anzahl von überholten
Datensektoren nicht zulässt
und dass keine Hintergrundoperationen für Funktionen wie die Speicherbereinigung
implementiert sind. Im Allgemeinen sind nur zwei Blöcke mit überholten
Sektoren für
jeden der Datenschreibzeiger DWP 46 und Systemschreibzeiger
SWP 48 erlaubt, und das Blocklöschen wird als Vordergrundoperation
während
der Sektorschreibsequenzen ausgeführt.
-
Dieses
Managementverfahren bedeutet, dass die logische Kapazität des Flash-Speichers
nicht verringert werden muss, um das Vorhandensein einer größeren Menge überholter
Daten zu ermöglichen,
dass die Datenintegrität
durch das Fehlen von Hintergrundoperationen, die anfällig für Unterbrechungen
durch vom Host ausgehende Abschaltvorgänge sind, wesentlich verbessert
ist und dass die Pausen in Datenschreibsequenzen kurz sind, weil
Löschoperationen
jeweils nur für
einen einzelnen Block erforderlich sind.
-
Wenn
ein überholter
Datensektor in einem neuen Block angelegt wird, der mit einem der
Schreibzeiger verbunden ist, wird der vorhandene „überholte
Block" durch Löschen beseitigt,
gefolgt von einem Verschieben des Sektors innerhalb der Blöcke, falls
erforderlich.
-
Von
einem Host 12 gesendete Sektorlöschbefehle werden unterstützt, indem
der Zielsektor als überholt
markiert wird und indem sein Löschen
entsprechend dem Blocklöschalgorithmus
zugelassen wird.
-
Der
Blocksequenzalgorithmus für
die zyklische Speicherung bestimmt die Reihenfolge, in der Blöcke in dem
Flash-Speicher 20 zum Schreiben neuer oder verschobener
Daten verwendet werden, und ist daher verantwortlich dafür, sicherzustellen,
dass kein Block einer Anzahl von Schreib/Löschzyklen ausgesetzt wird, die
den für
das verwendete Flash-Speichersystem 20 festgelegten Haltbarkeitsgrenzwert überschreitet.
-
Wenn
ein logischer Sektor vom Host geschrieben wird, wird eine frühere Version,
die in dem Speichersystem vorhanden ist, als überholte Daten behandelt. Der
Blocklöschalgorithmus
sorgt dafür,
dass Blöcke
mit überholten
Datensektoren sofort gelöscht
werden, um die von diesen Sektoren belegte Kapazität wieder
verfügbar
zu machen. Die physikalische Speicherkapazität des Systems 10 ist
daher von gültigen
Daten für
vom Host geschriebene logische Sektoren belegt, plus einer geringen
Anzahl von proprietären
Steuerdatenstrukturen für
die zyklische Speicherung und einer Reihe von gelöschten Blöcken. Unmittelbar
nach der Initialformatierung des Flash-Speichers 10 besteht
die Kapazität
des Speichers 10 fast ausschließlich aus gelöschten Blöcken. Wenn
der Host 12 mindestens einmal in alle Sektoren in seinem
logischen Adressbereich geschrieben hat, wird die Vorrichtung als
logisch voll angesehen, und ihre physikalische Kapazität ist fast
vollständig
durch gültige
Datensektoren belegt, mit einer geringen Anzahl von gelöschten Blöcken, die
für den
einwandfreien Betrieb der Vorrichtung geführt werden. Eine größere Anzahl
von gelöschten
Blöcken
wird nur erzeugt, wenn der Host 12 Befehle zum Löschen von
logischen Sektoren ausführt.
-
Gelöschte Blöcke, die
zur Verwendung durch einen der Schreibzeiger oder zur Speicherung
von Steuerdatenstrukturen zugeordnet sind, werden aus einem Pool
freier gelöschter
Blöcke
entnommen. Ein Block wird nie als Reaktion auf einen Wunsch zur
Ausführung
einer Schreiboperation in den betreffenden Block gelöscht, denn
der Blocksequenzalgorithmus bestimmt die Reihenfolge der Zuordnung
für Datenschreiboperationen
für Blöcke in dem
gelöschten
Pool. Der nächste
freie Block entsprechend dem Algorithmus wird zugewiesen, unabhängig davon,
ob die Anforderung für
die Verwendung durch einen der Schreibzeiger oder für eine Steuerdatenstruktur
gilt.
-
Die
Implementierung dieser Algorithmen, die das Medienmanagement für die zyklische
Speicherung ausführen,
erlaubt eine höhere
Systemflexibilität
durch die Bearbeitung einzelner Sektoren des Flash-Speichers 20 und
die getrennte Verfolgung des logisch/physikalischen Adress-Mappings
jedes Sektors in seinem logischen Adressbereich. Im Flash-Speicher 20 wird
eine Sektoradressentabelle geführt,
die die physikalische Adresse für
jeden logischen Sektor enthält.
Darüber
hinaus wird jeder Sektor mit einem Header geschrieben, der seine
logische Adresse enthält
und ein Mittel zur Verifizierung der Identität des Sektors und Gewährleistung einer
maximalen Datenintegrität
darstellt.
-
Der
Datenschreibalgorithmus, mit seiner Verwendung der zyklischen Schreibzeiger,
bietet die Möglichkeit
zur Kontrolle der Reihenfolge des Schreibens der Sektoren mit den
logischen Adressen in den Headern der Sektoren in aufeinander folgenden
physikalischen Positionen. Dieses Merkmal bietet eine totale Datensicherheit,
auch wenn die Datensätze
für das
logisch/physikalische Adress-Mapping für kürzlich geschriebene Sektoren
vorübergehend
im flüchtigen
Speicher SRAM 30 der Steuerung und nicht im Flash-Speicher
enthalten sind. Solche vorübergehenden
Datensätze
können
aus den Datensektoren im Flash-Speicher 20 rekonstruiert
werden, wenn ein System 10, in dem die zyklischen Speicheralgorithmen
implementiert sind, initialisiert wird. Daher ist es möglich, die
Sektoradressentabelle im Flash-Speicher 20 weniger häufig zu
aktualisieren, was zu einem niedrigen Anteil an Overhead-Schreiboperationen
für Steuerdaten
und einer hohen kontinuierlichen Datenschreibgeschwindigkeit führt.
-
In 5 ist
eine schematische Darstellung des Adressübersetzungsprozesses gezeigt,
der eine dreistufige Hierarchie von Zuordnungsstrukturen 50 verwendet
und im Speichersystem 10 ausgeführt wird.
-
Die
drei Hierarchiestufen sind die Sektoradressentabelle 52,
die temporäre
Sektoradressentabelle 54 und der Sektoradressdatensatz 56.
-
Die
oberste Hierarchiestufe der Zuordnungsstrukturen ist die Sektoradressentabelle 52,
das heißt
eine Master-Tabelle mit einer physikalischen Adresse für jeden
logischen Sektor im System 10, die im Flash-Speicher 20 gespeichert
ist. Strukturen in den beiden unteren Hierarchiestufen 54 und 56 bilden
die Einrichtungen zur Verringerung der Häufigkeit, mit der Schreiboperationen
in der Sektoradressentabelle ausgeführt werden müssen.
-
Der
Sektoradressdatensatz 56 ist eine im flüchtigen Speicher SRAM 30 der
Steuerung gespeicherte Liste von logisch zusammenhängenden
Sektoren, die in das System 10 geschrieben worden sind.
Diese Liste ermöglicht
die Bestimmung der physikalischen Adresse jedes logischen Sektors,
den sie enthält,
ohne dass ein Zugriff auf den Flash-Speicher 20 nötig ist.
Bei der Initialisierung der Vorrichtung kann sie auch aus der Sequenz
der kürzlich
geschriebenen Sektoren, die im Flash-Speicher 20 verfolgbar
sind, rekonstruiert werden. Die temporäre Sektoradressentabelle 54 ist
im Flash-Speicher 20 enthalten und wird mit dem Inhalt
des Sektoradressdatensatzes 56 aktualisiert, wenn die Liste
voll wird. Die temporäre
Sektoradressentabelle 54 hat dasselbe Format wie die Sektoradressentabelle 52 und
erlaubt das Sammeln von physikalischen Adressdaten-Aktualisierungen
für bestimmte
Blöcke
in der Sektoradressentabelle 52, um ein effizienteres Schreiben
der Tabelle zu ermöglichen.
Die temporäre
Tabelle 54 ermöglicht
die Bestimmung der physikalischen Adresse jedes logischen Sektors,
den sie enthält,
ohne dass ein Zugriff auf die Sektoradressentabelle 52 nötig ist.
-
Diese
Hierarchie von Zuordnungsstrukturen 50 wird verwaltet,
wobei sie nur selten Schreiboperationen in den Flash-Speicher erfordert
und effizient die logisch/physikalische Adressübersetzung so unterstützt, dass
eine totale Sicherheit der Sektoradressinformationen gegeben ist,
auch wenn die Stromversorgung unerwartet von dem System 10 abgetrennt
wird.
-
Die
erforderlichen Datenstrukturen zur Unterstützung der Medienmanagement-Algorithmen
für die
zyklische Speicherung sind hauptsächlich im Flash-Speicher 20 gespeichert,
zusammen mit den Host-Datensektoren, wobei nur eine sehr begrenzte
Menge Steuerdaten vorübergehend
im flüchtigen
RAM 30 des Steuerprozessors enthalten ist. Die Informationen
im flüchtigen
Speicher 30 sind nicht kritisch und können bei einer Unterbrechung
der Stromversorgung aus dem Flash-Speicher 20 rekonstruiert
werden.
-
Alle
Host-Daten und Steuerdatenstrukturen im Flash-Speicher 20 werden
als physikalische Sektoren mit identischem logischen Format geschrieben
und gelesen, das 512 Informations-Bytes plus einen 4-Byte-Header
umfasst, der den Sektortyp definiert, plus andere typabhängige Informationen,
geschützt
durch 12 Bytes ECC.
-
In
dieser Beschreibung bedeutet ein physikalischer Sektor eine Datenstruktur
mit 528 Bytes, die von der Steuerung in den Flash-Speicher geschrieben
wird. Der Begriff bezeichnet keine Gruppe von Speicherzellenpositionen
in dem Flash-Speicher.
-
Physikalische
Sektoren des gleichen Typs sind in dedizierten Blöcken zusammengefasst,
wobei ein Block eine grundlegende physikalische Struktur im Flash-Speicher 20 ist,
die in diesem Fall 16 physikalische Sektorpositionen umfasst,
die mit einer einzigen Operation gelöscht werden können. Sektoren
unterschiedlicher Typen können
nicht im selben Block enthalten sein.
-
Die
Medienmanagement-Algorithmen für
die zyklische Speicherung arbeiten mit virtuellen Blöcken, wobei
ein virtueller Block eine Gruppe von einem oder mehreren Flash-Blöcken im
Flash-Speicher 20 ist. Die zyklischen Speicheralgorithmen
behandeln einen virtuellen Block so, als sei er ein einzelner Flash-Block.
-
In
Tabelle 1 ist eine Auswahl von Blocktypen im Flash-System 10 gezeigt.
Der erste davon ist der Datenblock 60, der Host-Datensektoren
enthält,
die ausschließlich
einem einzigen Schreibzeiger (DWP 46, DRP 47,
SWP 48 oder SRP 49) zugeordnet sind, wobei jeder
physikalische Datensektor ursprünglich
vom Host-System eingeschriebene Informationen enthält.
-
Die
Sektoradressentabelle 52 ist eine Liste von Adressen von
physikalischen Sektoren im Flash-Speicher, die allen Sektoren im
System 10 entsprechen, die über mehrere SAT-Blöcke 62 verteilt
ist. Die SAT 52 enthält
einen Eintrag für
jeden Sektor, fortlaufend geordnet nach den logischen Adressen.
Der n-te Eintrag in der SAT 52 enthält die physikalische Adresse
für den
Sektor mit der logischen Adresse n. Ein SAT-Block 62 enthält Einträge für eine logisch
zusammenhängende
Gruppe von Sektoren in einem Bereich des logischen Adressbereichs.
-
Jeder
SAT-Block 62 ist in zwei gleiche Partitionen unterteilt,
von denen eine für
SAT-Einträge
und die andere für
temporäre
SAT-Einträge
(TSAT) reserviert ist. Die TSAT-Partition des Blocks ist ein Bereich,
in dem TSAT-Sektoren,
die bei einer Steuer-Schreiboperation geschrieben werden, vorübergehend
gespeichert werden, ehe sie in die SAT-Partition des Blocks 62 geschrieben
werden. Ein Index der gültigen
TSAT-Sektoren und ihrer Position in der TSAT-Partition wird im Feld
TSAT-Index (TSATI) in dem zuletzt geschriebenen TSAT-Sektor geführt.
-
Wenn
ein TSAT-Sektor geschrieben wird, wird er an der ersten freien Sektorposition
in der TSAT-Partition des SAT-Blocks 62 angeordnet, zu
dem der Sektor gehört.
Ein SAT-Block 62 wird neu geschrieben, wenn seine TSAT- Partition voll ist.
Gültige
TSAT-Sektoren in der vorherigen TSAT-Partition ersetzen die entsprechenden
SAT-Sektoren in der SAT-Partition, und die TSAT-Partition wird leer
gelassen.
-
Jeder
SAT-Sektor enthält
SAT-Einträge
für eine
logisch zusammenhängende
Gruppe von Sektoren und umfasst 128 Einträge von je 3 Bytes.
-
Jeder
TSAT-Sektor ist ein Sektor in der TSAT-Partition eines SAT-Blocks 62 und
weist dasselbe Format wie ein SAT-Sektor auf. Der TSAT-Sektor enthält SAT-Einträge für eine logisch
zusammenhängende
Gruppe von Sektoren und umfasst 128 Einträge von je 3 Bytes.
-
Der
TSATI jeder TSAT enthält
einen Index auf die Adressen aller gültigen TSAT-Sektoren in dem SAT-Block 62,
in dem er sich befindet. Ein TSATI wird bei jeder TSAT-Schreiboperation
in jeden TSAT-Sektor geschrieben, aber nur der zuletzt geschriebene
TSATI in einem SAT-Block ist gültig.
-
Der
Map-Block 64 enthält
Map-Sektoren, die die gelöschten
Blöcke
im System 10 definieren, sowie in diesem Fall gelöschte Blockmanagement-Sektoren
(EBM). Nur der zuletzt geschriebene EBM-Sektor ist gültig.
-
In
dieser Anordnung ist der Map-Block 64 eine Bitmap-Struktur
mit einem Bit für
jeden Block im System 10. Diese Bits werden verwendet,
um den Löschstatus
jedes Blocks anzugeben. Jedes Bit im Map-Block 64 ist auf
logisch „0" gesetzt, wenn der
entsprechende Block im gelöschten
Zustand ist. Die Bits, die den Blöcken in der Zuordnungsblockliste
oder der Liste der gelöschten
Blöcke
entsprechen, sind im Map-Block 64 immer auf logisch „1" gesetzt. Der Map-Block 64 für das System 10 kann
mehr als einen Map-Sektor belegen, je nach Größe des Systems 10.
In diesem Fall enthält
jeder Map-Sektor den Löschstatus
von 4.096 Blöcken
innerhalb eines bestimmten physikalischen Adressbereichs. Die Bitmap
in einem Map-Sektor 646 ist in 16 Zonen unterteilt, und
Flags werden verwaltet, um das Vorhandensein von gelöschten Blöcken in
jeder Zone anzugeben.
-
Jeder
Block, der keine gültigen
Datenstrukturen enthält
und nicht in einem Map-Sektor, der Zuordnungsblockliste oder der
Liste der gelöschten
Blöcke
enthalten ist, wird nie von dem Blockzuordnungsalgorithmus verwendet
und ist daher nicht zugreifbar für
die Speicherung von Host- oder Steuerdatenstrukturen. Dies bietet
einen einfachen Mechanismus, um Blöcke mit defekten Positionen
aus dem zugreifbaren Flash-Speicher-Adressbereich auszuschließen.
-
Das
Feld Map-Zonen-Flag (MZF) des Map-Blocks 64 ist eine Bitmap,
die das Vorhandensein von gelöschten
Blöcken
in jeder Zone einer Map-Sektorbitmap definiert, und befindet sich
im Header des Map-Sektors, dem es entspricht.
-
Der
Sektor Management der gelöschten
Blöcke
(EBM) des Map-Blocks 64 enthält Informationsfelder, die
für die
Verwaltung der gelöschten
Blöcke
benö tigt
werden. Nur der zuletzt geschriebene EBM-Sektor in dem Map-Block
ist gültig.
-
Das
Feld Liste der gelöschten
Blöcke
(EBL) des EBM-Sektors ist eine Liste von gelöschten Blockadressen, die festlegt,
welche Blöcke
zur Zuordnung für
die Benutzung verfügbar
sind. Das Feld EBL ist eine zyklische Liste innerhalb eines festen
Bereichs des EBM-Sektors 64a, und seine Grenzen sind durch
die Felder EBL-Start (EBLS) und EBL-Länge (EBLL) des EBM-Sektors
festgelegt.
-
Das
Feld EBLS ist ein Zeiger, der die Adresse innerhalb des EBM-Sektors
des ersten Eintrags in der EBL definiert. Das Feld EBLL definiert
die Länge
der EBL. Das Feld Anzahl der gelöschten
Blöcke
(EBC) definiert die Gesamtzahl der gelöschten Blöcke im Speichersystem 10 zu
dem Zeitpunkt, an dem der EBM-Sektor geschrieben wird.
-
Das
Feld Map-Anzahl des Map-Blocks 64 definiert die Anzahl
der gelöschten
Blöcke,
die in jedem Map-Sektor identifiziert sind. Das Feld Map-Index enthält einen
Index auf die Adressen aller gültigen
Map-Sektoren im Map-Block 64. In dieser Anordnung wird
der aktuelle MAP-Index mit jedem EBM-Sektor geschrieben.
-
Das
Feld Map-Austausch-Quellzeiger (MSP) ist ein Zeiger auf einen Map-Sektor, der in der
nächsten Map-Austauschoperation
als Quellsektor verwendet werden soll.
-
Das
Feld Map-Austausch-Zielzeiger (MDP) ist ein Zeiger auf einen Map-Sektor, der in der
nächsten Map-Austauschoperation
als Zielsektor verwendet werden soll.
-
Jede
der Datenstrukturen (DCOB1, DCOB2, SCOB1 und SCOB2) für momentan überholte
Blöcke (COB)
im Feld COB des Map-Blocks definiert die Adresse eines von vier
Blöcken,
die überholte
Datensektoren enthalten dürfen,
zusammen mit einer Bitmap für
den Map-Block, die die überholten
Sektoren darin identifiziert. Maximal je zwei Blöcke dürfen überholte Sektoren enthalten,
die durch Schreiboperationen am DWP 46 bzw. Schreiboperationen
am SWP 48 erzeugt wurden. Überholte Sektoren werden nie
durch Schreiboperationen an Verschiebezeigern erzeugt. Die COB-Datenstrukturen
im EBM-Sektor sind eine Kopie der COBs im SRAM 30.
-
Das
Feld Schreibzeiger des EBM-Sektors im Map-Block enthält die physikalischen
Adressen, die jeweils einem der Schreibzeiger DWP, DRP, SWP und
SRP unmittelbar nach dem Ende des letzten Datensatzes für den betreffenden
Schreibzeiger entsprechen. Das Feld Schreibzeiger enthält auch
die Blockverknüpfungen für jeden
Schreibzeiger DWP, DRP, SWP und SRP seit dem Ende seines letzten
Datensatzes. Diese Informationen sind nötig, um eine Rekon struktion
der Datenstrukturen DWSL, SWSL, ABL, CBL und COB im SRAM 30 bei
der Initialisierung des Speichersystems 10 zu ermöglichen.
-
Das
Feld letzte TSAT definiert die vollständige physikalische Adresse
des zuletzt geschriebenen TSAT-Sektors.
-
Das
Feld SATA-Adresse definiert die Adresse des SATA-Blocks im Speicher 20.
-
Das
Feld Sektoradressentabelle-Adressindex (SATAI) ist ein Index auf
die Adressen aller gültigen
SATA-Sektoren im SATA-Block.
-
Der
SAT-Adressblock (SATA) 66 enthält SATA-Sektoren, die die Adressen
aller SAT-Blöcke
im Speicher 20 definieren.
-
Der
SATA-Sektor 66a enthält
die physikalischen Adressen der Blöcke im Speicher 20,
die die SAT 52 enthält.
Bei einer Vorrichtung mit hoher Kapazität kann es mehr als einen gültigen SATA-Sektor 66a geben,
die sich jeweils auf einen logisch zusammenhängenden Bereich von SAT-Blöcken 62 beziehen.
Der Bereich ist im Header des SATA-Sektors angegeben. Nur das letzte
Auftreten eines SATA-Sektors für
einen bestimmten Bereich ist gültig.
-
Der
Block MAP-Adresse (MA) 68 enthält MAP-Adresssektoren, wobei
der MA-Sektor die Adresse jedes der Map-Blöcke 64 enthält. Der
Block Liste der defekten Blöcke
(BBL) 70 enthält
BBL-Sektoren 70a, wobei der BBL-Sektor 70a eine
Bitmap aller virtuellen Blöcke
im Flash-Speicher 20 enthält, um diejenigen zu identifizieren,
die defekte Positionen aufweisen und daher unbrauchbar sind. Diese
Informationen werden nur von einem externen Formatierprogramm verwendet,
wenn die Vorrichtung neu formiert wird. Die BBL wird aktualisiert,
wenn während
der Betriebslebensdauer des Systems 10 ein Blockfehler
auftritt.
-
Der
Boot-Block (BB) 72 ist ein spezieller Block, der im Header
seines ersten Sektors, der von der Steuerung 16 mit einem
Suchverfahren bei der Initialisierung des Systems 10 im
Speicher 20 lokalisiert wird, einen eindeutigen Identifizierungscode
enthält.
Der Boot-Block 72 enthält
die nötigen
Informationen über
die Systemkonfiguration und Zeiger auf den MAP-Adressblock 68 im
Flash-Speicher 20, um eine Initialisierung des Systems
zu ermöglichen.
Außerdem
enthält
er Informationen, die als Antwort auf eine Anfrage in den Host-Schnittstellenprotokollen
an ein Host-System 12 zurückgegeben werden. Informationen
sind in verschiedenen Sektortypen im Boot-Block 72 enthalten,
wobei nur das letzte Auftreten eines bestimmten Sektortyps gültig ist.
Zur Sicherheit sind nahe dem Anfang des Adressbereichs der physikalischen
Blöcke
zwei identische Kopien des Boot-Blocks 72 vorgesehen, wobei
jedoch nur eine der Kopien mit geänderten MAP-Adresszeigern aktualisiert wird.
-
Der
Boot-Blockparametersektor (BBP) 72b des Boot-Blocks 72 ist
eine Liste von festen Parametern, die die Gerätekonfiguration definieren.
-
Der
Informationsstruktursektor des Boot-Blocks 72 enthält Informationen,
die für
den Zugriff durch ein Host-System 12 in einen flüchtigen
Speicher in der Steuerung 16 geladen werden. Dies kann
die Karteninformationsstruktur (CIS) in den PC Card- oder CompactFlash-Protokollen
sein.
-
Der
Identifikationssektor des Boot-Blocks 72 enthält Informationen,
die als Antwort auf einen Befehl zur Anforderung von Identifikationsinformationen
an das Host-System 12 gegeben werden. Dieser Befehl kann der
Befehl „Laufwerk
identifizieren" nach
dem ATA-Protokoll sein.
-
Der
MA-Addresssektor (MAA) 72a des Boot-Blocks 72 enthält die physikalische
Adresse des MA-Blocks 68, der bei der Initialisierung der
Vorrichtung und dem Boot-Vorgang angeordnet werden muss. Wird der
MA-Block 68 verschoben, so wird eine neue Kopie des MAA-Sektors 72a geschrieben.
-
Der
Firmware-Block 67 enthält
Firmware-Sektoren, die jeweils eine Firmware-Codeseite enthalten.
An den niedrigsten fehlerfreien virtuellen Blockadressen im Flash-Speicher 20 können mehrere
Firmware-Blöcke vorhanden
sein.
-
Der
Prozessor 24 der Steuerung 16 ist mit einem flüchtigen
RAM-Speicher ausgerüstet,
und in Tabelle 2 sind die Datenstrukturen in dem flüchtigen
RAM des Prozessors gezeigt.
-
Die
Datenschreibsektorliste (DWSL) und die Datenverschiebesektorliste
(DRSL) sind Listen von Sektoren, die an den Schreibzeigern DWP und
DRP geschrieben worden sind, mit denen die virtuellen Adressen für jeden
darin enthaltenen Sektor berechnet werden können. Die DWSL und die DRSL
können
bei der Systeminitialisierung aus den Datenstrukturen im Flash-Speicher 20 rekonstruiert
werden. Die DWSL und die DRSL bestehen aus jeweils einem Datensatz,
und dies sind Datensätze
von geschriebenen logisch zusammenhängenden Datensektoren. Jeder
Datensatz enthält
die folgenden Felder:
LBA: Logische Adresse des ersten Sektors
in dem Datensatz.
Datensatzlänge: Länge des Datensatzes in Sektoren.
Sektoradresse:
Virtuelle Adresse des ersten Sektors in dem Datensatz.
Blockadresse:
Liste der virtuellen Blockadressen, die die Sektoren des Datensatzes
enthalten.
-
Beim
Schreiben jedes Sektors innerhalb eines Datensatzes wird das Feld
Datensatzlänge
um eins erhöht,
und wenn sich ein zugehöriger
Schreibzeiger auf einen neuen zugeordneten Block bewegt, wird die
Blockadresse zum Blockadressenfeld hinzugefügt. Ein DWSL- oder DRSL-Datensatz
endet bei Vorliegen einer der folgenden Bedingungen.
-
Ein
zu schreibender Sektor ist nicht logisch zusammenhängend mit
dem vorherigen Sektor, der am gleichen Schreibzeiger geschrieben
worden ist.
-
Die
logische Adresse eines zu schreibenden Sektors ist so, dass SAT-Einträge für Sektoren
in dem Datensatz in mehr als vier SAT-Sektoren enthalten wären. Dadurch
ist sichergestellt, dass bei langen Sequenzen von zusammenhängenden
Sektorschreiboperationen der letzte Sektor eines Datensatzes dem
letzten Eintrag in einer SAT-Seite entspricht. Dies minimiert die
Anzahl der TSAT-Sektor-Schreiboperationen.
-
Die
logische Adresse eines zu schreibenden Sektors entspricht einem
anderen SAT-Block aus den anderen Sektoren in dem Datensatz. Dadurch
ist sichergestellt, dass bei einer Steuer-Schreiboperation nur eine einzelne
SAT-Block-Schreiboperation
angefordert werden kann.
-
Die
logische Adresse eines zu dem DWSL-Datensatz hinzuzufügenden Sektors
ist bereits in dem DRSL-Datensatz enthalten oder umgekehrt.
-
Die
DWSL- und DRSL-Datensätze
werden normalerweise zusammen beendet, und die Beendigung der Datensätze löst eine
Steuer-Schreiboperation aus, die an Sektoren in beiden Datensätzen ausgeführt wird, woraufhin
die DWSL- und DRSL-Datensätze
gelöscht
werden.
-
Die
Systemschreibsektorliste (SWSL) und die Systemverschiebesektorliste
(SRSL) sind Listen von Sektoren, die an den Schreibzeigern SWP und
SRP geschrieben worden sind, mit denen die virtuellen Adressen für jeden
darin enthaltenen Sektor berechnet werden können. Die SWSL und die SRSL
können
bei der Systeminitialisierung aus den Datenstrukturen im Flash-Speicher 20 rekonstruiert
werden. Die SWSL und die SRSL bestehen jeweils aus einer Reihe von
Datensätzen,
meist vier, die mit den entsprechenden Schreibzeigern verbunden
sind, und jeder dieser Datensätze
ist ein Datensatz von geschriebenen logisch zusammenhängenden
Datensektoren, und sie weisen dasselbe Format wie die Datensätze für die DWSL
und DRSL auf. Jeder Datensatz enthält die folgenden Felder:
LBA:
Logische Adresse des ersten Sektors in dem Datensatz.
Datensatzlänge: Länge des
Datensatzes in Sektoren.
Sektoradresse: Virtuelle Adresse des
ersten Sektors in dem Datensatz.
Blockadresse: Liste der virtuellen
Blockadressen, die die Sektoren des Datensatzes enthalten.
-
Beim
Schreiben jedes Sektors innerhalb des Datensatzes wird das Feld
Datensatzlänge
um eins erhöht.
-
Bei
Vorliegen einer der folgenden Bedingungen wird ein SWSL- oder SRSL-Datensatz
eingefroren und ein neuer erzeugt. Ein zu schreibender Sektor ist
nicht logisch zusammenhängend
mit dem vorherigen Sektor, der am gleichen Schreibzeiger geschrieben
worden ist.
-
Die
logische Adresse eines zu dem SWSL-Datensatz hinzuzufügenden Sektors
ist bereits in dem SRSL-Datensatz enthalten oder umgekehrt.
-
Wenn
die maximale Anzahl von SWSL- oder SRSL-Datensätzen überschritten ist, wird eine
Steuer-Schreiboperation ausgelöst.
Eine Steuer-Schreiboperation
wird gleichzeitig an allen Datensätze in der SWSL und SRSL ausgeführt, woraufhin
die beendeten Datensätze
gelöscht
werden.
-
Jede
COB-Datenstruktur (DCOB1, DCOB2, SCOB1 und SCOB2) definiert die
Adresse eines von vier Blöcken,
die überholte
Datensektoren enthalten dürfen,
zusammen mit einer Bitmap für
den Block, die die überholten
Sektoren darin identifiziert. Maximal je zwei Blöcke dürfen überholte Sektoren enthalten,
die durch Schreiboperationen am Schreibzeiger DWP bzw. Schreiboperationen
am Schreibzeiger SWP erzeugt wurden. Überholte Sektoren werden nie
durch Schreiboperationen an Verschiebezeigern erzeugt. Die COB-Datenstrukturen
im SRAM 30 werden in den EBM-Sektor kopiert, wenn der EBM-Sektor
geschrieben wird.
-
Das
Schreibzeiger-Feld enthält
die virtuellen Adressen, die jeweils den Schreibzeigern DWP, DRP, SWP
und SRP entsprechen.
-
Die
Zuordnungsblockliste (ABL) ist eine Liste von Adressen von gelöschten Blöcken, die
derzeit für
die Zuordnung zu einem Schreibzeiger oder für das Neuschreiben einer Steuerstruktur
verfügbar
sind. Die ABL enthält
keinen Datensatz aller gelöschten
Blöcke
in der Vorrichtung. In diesem System kann die ABL zum Beispiel die
Kapazität
für bis
zu 16 Blöcke
aufweisen. Die Reihenfolge der Zuordnung der Blöcke aus der ABL entspricht
ihrer Reihenfolge in der ABL. Die ABL kann bei der Systeminitialisierung
aus den Datenstrukturen im Flash-Speicher 20 rekonstruiert
werden.
-
Die
Liste der gelöschten
Blöcke
(CBL) ist eine Liste von Adressen von gelöschten Blöcken, die durch eine Blocklöschoperation
bei der letzten Operation der Vorrichtung erzeugt worden sind. Die
CBL kann die Kapazität
für bis
zu 16 Blöcke
aufweisen. Die Reihenfolge der Blöcke in der CBL entspricht der
Reihenfolge, in der sie gelöscht
werden. Die Blocklöschrate
und die Rate der Einbeziehung in die CBL müssen nicht der Blockzuordnungsrate
aus der ABL entsprechen. Die CBL kann bei der Systeminitialisierung
aus den Datenstrukturen im Flash-Speicher 20 rekonstruiert
werden.
-
Der
SAT-Cache im Prozessor-RAM ist ein temporärer Datensatz der nächsten Gruppe
von Einträgen in
der SAT nach dem letzten Eintrag für einen Datensektor, der aus
einem SAT-Sektor oder einem TSAT-Sektor im Flash-Speicher gelesen wurde. Er kann zum
Beispiel 16 Einträge
enthalten. Er dient dazu, die Anforderungen für einen Zugriff auf den Flash-Speicher
bei der Adressübersetzungsoperation
zu verringern. Der SAT-Cache wird nicht gefüllt, wenn ein Eintrag für einen
Systemsektor aus einem TSAT- oder SAT-Sektor gelesen wird.
-
Datenstrukturpositionen
im Flash-Speicher 20 sind durch Einträge und Felder in anderen Datenstrukturen
definiert, und eine schematische Darstellung derselben ist in dem
Referenzbaum in 6 gezeigt, der die Datenblöcke illustriert,
die jenen entsprechen, die anhand von Tabelle 1 beschrieben worden
sind.
-
Der
Boot-Block 72 kann bei der Systeminitialisierung durch
ein Verfahren zur Suche seiner eindeutigen Signatur im Header seines
ersten MAA-Sektors 72a identifiziert werden.
-
Die
Steueroperationen, die die Durchführung der zyklischen Speicherung
von Daten ermöglichen, werden
nachstehend beschrieben. In 7 sind der
Ablauf von Operationen, die aus einem Sektorschreibbefehl resultieren,
und ihre relative Häufigkeit
der Ausführung
gezeigt, wobei N die physikalische Blockgröße des Flash-Speichers in Sektoren
und F die Größe einer
geschriebenen Datei in Sektoren ist.
-
In
diesem Ablauf ist kein Schreiben von Steuerdatenstrukturen in den
Flash-Speicher 20 erforderlich, was ein wesentlicher Faktor
ist, der zu einer hohen Datenschreibleistung beiträgt. Wenn
Steuerstrukturen im Flash-Speicher 20 geändert werden
müssen,
wird eine Steuer-Schreiboperation durchgeführt.
-
Die
Adressübersetzungsoperation 76 implementiert
eine logisch/physikalische Adressübersetzung und wird vor jeder
Sektorschreiboperation durchgeführt,
um die bestehende physikalische Position des logischen Sektors,
der geschrieben werden soll, festzulegen oder um den Sektor für eine Leseoperation
zu lokalisieren. In allen Fällen,
in denen eine gültige
Version des Sektors im Flash-Speicher 20 vorhanden ist,
kann die logische Zieladresse optional im Header des Sektors durch
eine Sektorleseoperation verifiziert werden. Die Adressübersetzung
ist getrennt ausführlich
beschrieben.
-
Die
Blockzuordnungsoperation erfolgt, wenn eine Sektorschreiboperation
bewirkt, dass einer der Schreibzeiger auf einen neuen Block springt,
oder wenn ein neuer Block für
eine Steuerstruktur bereitgestellt werden muss. Die Operation 78 ermöglicht die
Zuordnung des neuen Blocks mit dem obersten Eintrag in der Zuordnungsblockliste
(ABL).
-
Nur
zwei Blöcke
mit überholten
Sektordaten dürfen
mit jedem der Schreibzeiger DWP und SWP verbunden sein. Wenn ein
Datensektor geschrieben werden soll, der überholte Daten in einem dritten
Block erzeugen würde,
wird eine COB-Änderungsoperation 77 ausgeführt, um
diesen dritten Block als einen der beiden zulässigen COB-Blöcke zuzuweisen
und eine Blocklöschoperation
an dem einen der beiden momentanen COB-Blöcke durchzuführen. Der
ausgewählte
COB-Block, der geändert
wird, ist im Allgemeinen der Block mit der kleineren Anzahl gültiger Sektoren,
die verschoben werden müssen,
kann aber auch der ältere
der beiden COB-Blöcke
sein. Enthält
der ausgewählte
COB-Block einen Schreibzeiger, wird alternativ der andere COB-Block
für die
Blocklöschoperation
ausgewählt.
Die entsprechende COB-Datenstruktur im Prozessor-RAM wird aktualisiert.
-
Eine
Datenblocklöschoperation 79 bewirkt,
dass ein einzelner Block im physikalischen Speicher des Flash-Speichers 20 gelöscht wird.
COB-Datenstrukturen im Prozessor-RAM werden verwendet, um festzustellen,
ob der Block gültige
Datensektoren enthält,
die zuerst verschoben werden müssen.
Die Sektoren werden verschoben, indem sie an den Zeigern DRP bzw.
SRP geschrieben werden.
-
Wenn
ein überholter
Block infolge einer COB-Änderungsoperation 78 gelöscht werden
soll, muss eine Sektorverschiebeoperation durchgeführt werden,
wenn der Block gültige
Sektoren enthält.
Die gültigen
Sektoren müssen
aus dem überholten
Block gelesen und an der entsprechenden DRP- oder SRP-Schreibzeigeradresse
geschrieben werden, bevor der überholte
Block gelöscht
wird.
-
Wenn
die Sektorlisten-Aktualisieroperation 80 ausgeführt wird,
wird ein Datensatz in der DWSL, SWSL, DRSL oder SRSL, soweit zutreffend,
geändert
oder erzeugt, um den Sektor aufzunehmen, der geschrieben oder verschoben
wird. Wird die maximale Anzahl von Datensätzen in der Sektorliste überschritten, wird
eine Steuer-Schreiboperation 84 ausgelöst.
-
Bei
der ABL-Aktualisieroperation 82 wird die ABL modifiziert,
um die Adresse eines gelöschten
Blocks, der zur Verwendung zugeordnet worden ist, zu entfernen.
Wird die ABL leer, wird eine Steuer-Schreiboperation 84 ausgelöst.
-
Bei
der CBL-Aktualisieroperation 81 wird die CBL modifiziert,
um die Adresse eines Blocks, der während des Betriebs der Vorrichtung
gelöscht
worden ist, hinzuzufügen.
Wird die CBL voll, wird eine Steuer-Schreiboperation 84 ausgelöst.
-
In 8 ist
die Adressübersetzungsoperation 76 ausführlich gezeigt
und insbesondere der Ablauf der erforderlichen Operationen zur Durchführung der
Funktion zur Sektor-Adressübersetzung.
-
Die
Merkmale der einzelnen Operationen, die bei der Adressübersetzungsoperation 76 ausgeführt werden
müssen,
werden nachstehend ausführlich
beschrieben.
-
Ein
Sektor wird identifiziert, so dass er sich entweder auf Benutzerdaten
oder auf Systemdaten bezieht, und eine Sektorschreiblisten-Suche
(WSL) 86 nach Datensätzen
wird entsprechend entweder in der DWSL und DRSL oder in der SWSL
und SRSL durchgeführt.
Eine Datensatzsuche erfordert eine Kon trolle, ob die Zieladresse
innerhalb des Adressbereichs für
den Datensatz liegt, der durch die Datensatzstartadresse und die
Datensatzlänge
bestimmt wird.
-
Eine
SAT-Cache-Suchoperation 87 wird nur für Datensektoren durchgeführt. Sie
erfordert eine Kontrolle, ob die Zieladresse innerhalb des Adressbereichs
für den
SAT-Cache liegt, der durch die Cache-Startadresse und die Cache-Länge von
16 Sektoren bestimmt wird. Für
Operationen an einer logisch zusammenhängenden Datei resultieren 15
von 16 Sektoren in einem SAT-Cache-Treffer. Wird kein Treffer erzielt,
wird der Cache mit den folgenden 16 Sektoradressen neu gefüllt, wenn
die TSAT- oder SAT-Seite anschließend gelesen wird.
-
Eine
TSATI-Leseoperation 89 erfordert ein Lesen des TSATI-Feldes
aus dem zuletzt geschriebenen TSAT-Sektor im SAT-Zielblock und eine
Suche in seinen Indexeinträgen
für die
SAT-Sektorzieladresse. Ein Lesen und Suchen des TSATI kann nur nach
einem Fehlschlag bei einer SAT-Cache-Suche 87 erforderlich
sein, das heißt
für einen
von 16 Sektoren für
eine sequenzielle Datei. Der Prozessor hält im Prozessor-RAM jedoch die
logische Adresse des zuletzt aufgerufenen SAT-Sektors 62c und
die physikalische Position des entsprechenden TSAT-Sektors 62a oder
SAT-Sektors 62c, und wenn diese dem SAT-Zielsektor entspricht,
ist eine TSATI-Suche nicht nötig.
Daher ist ein Lesen des TSATI nur einmal pro 128 Sektoren für eine sequenzielle Datei
erforderlich, weil ein SAT-Sektor Adressen für 128 Datensektoren aufweist.
-
Die
SAT-Lese/SAT-Cache-Fülloperation 91 und
die TSAT-Lese/SAT-Cache-Fülloperation 90 sind
identisch und erfordern das Lesen eines SAT-Sektors 62c oder eines TSAT-Sektors 62a oder 62b sowie
das Laden von 16 SAT-Einträgen
in den SAT-Cache im Prozessor-RAM. Der Prozessor hält im Prozessor-RAM
die Adresse des zuletzt aufgerufenen SAT-Blocks. Daher ist ein Lesen
eines SATA-Sektors 66a oder eines EBM-Sektors 64a zum
Bestimmen der physikalischen Adresse eines SAT-Blocks 62 nur
nötig,
wenn sich der SAT-Block 62 gegenüber dem geändert hat, der bei der vorherigen
Adressübersetzungsoperation
verwendet wurde.
-
Die
Berechnung 88 der physikalischen Adresse wird durchgeführt, wenn
für eine
Sektorzieladresse festgestellt wird, dass sie in einem Sektorlistendatensatz
liegt, und die Berechnung 92 ermöglicht die Bestimmung ihrer
Position relativ zu der logischen Startadresse sowie die Berechnung
ihrer virtuellen Adresse aus den Sektoradressen- und Blockadressenfeldern
des Datensatzes.
-
Die
typischen Abläufe
für die
Adressübersetzung
für logisch
aufeinanderfolgende Datensektoren sind wie folgt:
15 von jeweils
16 Sektoren für
die Sektorlisten-Suchoperation 86, gefolgt von der SAT-Cache-Suchoperation 87,
1
von jeweils 16 Sektoren für
die Sektorlisten-Suchoperation 86, gefolgt von der SAT-Cache-Suchoperation 87 und
der TSAT- oder SAT-Lese/SAT-Cache-Fülloperation 90 oder 91.
1
von jeweils 128 Sektoren für
die Sektorlisten-Suchoperation 86, gefolgt von der SAT-Cache-Suchoperation 87,
der TSATI-Leseoperation 89 und der TSAT- oder SAT-Lese/SAT-Cache-Fülloperation 90 oder 91.
-
Der
Ablauf für
die Adressübersetzung
für Systemsektoren
in einem typischen Fall ist die Sektorlisten-Suchoperation 86,
gefolgt von der physikalischen Adress-Berechnungsoperation 88 bei
Erkennen einer Sektorzieladresse in einem Sektorlistendatensatz.
-
In
einem Worst-Case-Szenario besteht der Ablauf jedoch aus der Sektorlisten-Suchoperation 86,
gefolgt von der TSATI-Leseoperation 89 und der TSAT- oder
SAT-Lese/SAT-Cache-Fülloperation 90 oder 91.
-
Die
Steuer-Schreiboperation 84 implementiert eine Steuer-Schreiboperation,
die die Steuerdatenstrukturen im Flash-Speicher 20 aktualisiert.
Die Abläufe
bei der Steuer-Schreiboperation 84 sind in 9 gezeigt.
-
Jede
der Operationen, die ein Schreiben von Steuerdaten darstellen, besteht
aus zwei Komponenten. Die erste Komponente bezieht sich auf Datenstrukturen,
die ein logisch/physikalisches Adress-Mapping für die von einem Host-System 12 gelieferten
Datensektoren ermöglichen,
und die zweite Komponente bezieht sich auf Datenstrukturen, die
gelöschte
Blöcke
im Flash-Speicher 20 und
deren Planung für
die Benutzung beim Schreiben von Daten- oder Steuerstrukturen verwalten.
-
Die
Sektorlisten-Freigabeoperation 94 wird an der DWSL und
DRSL zusammen oder der SWSL und SRSL zusammen durchgeführt, wenn
die momentane Steuer-Schreiboperation durch Beendigung eines Datensatzes
in einer Sektorliste ausgelöst
wurde. Wurde die Steuer-Schreiboperation durch eine CBL- oder ABL-Aktualisieroperation
ausgelöst,
werden alle Sektorlisten beendet. Eine Sektorlistenfreigabe bewirkt,
dass alle erforderlichen Informationen im Hinblick auf Sektoren
und Blöcke
in der Liste in Datenstrukturen im Flash-Speicher 20 übertragen
werden und die Sektorlisten-Datenstruktur im flüchtigen Prozessor-RAM gelöscht wird.
-
Die
TSAT-Schreiboperation 96 wird bei einer Sektorlistenfreigabe
durchgeführt,
um im Flash-Speicher 20 die virtuellen Adressen für Sektoren
in den Datensätzen
in der DWSL und DRSL oder in den Datensätzen in der SWSL und SRSL zu
speichern. Wenn ein TSAT-Sektor 62a oder 62b geschrieben
wird, wird er an der ersten freien Sektorposition in der TSAT-Partition
des SAT-Blocks angeordnet,
auf die sich der Sektor bezieht. Ist die TSAT-Partition voll, muss
eine SAT-Block-Schreiboperation durchgeführt werden.
-
Die
SAT-Schreiboperation 98 erfordert die Änderung eines oder mehrerer
Sektoren eines einzelnen SAT-Blocks 62, um neue Einträge für alle Sektoren
einzuarbeiten, die durch gültige
TSAT-Sektoren 62c in dem SAT-Block 62 angesprochen
werden. Sie wird durchgeführt,
wenn die TSAT-Partition in einem SAT-Block voll wird. Alle Sektoren
des SAT-Blocks werden mit oder ohne Änderung in einen neu zugeordneten
SAT-Block neu eingeschrieben. Die vorherige Position des SAT-Blocks
wird gelöscht,
und ein geänderter
SATA-Sektor wird geschrieben.
-
Die
SATA-Schreiboperation 100 erfordert das Schreiben eines
aktualisierten SATA-Sektors 66a, um eine geänderte Adresse
für einen
SAT-Block 62 festzuhalten. Der EBM-Sektor 64a wird
mit aktualisierten SATA-Indexinformationen geschrieben.
-
Wenn
ein SATA-Sektor 66a geschrieben werden muss und kein gelöschter Sektor
im SATA-Block 66 vorhanden ist, wird eine Blockzuordnungsoperation
durchgeführt,
und der SATA-Sektor wird mit einer SATA-Block-Verschiebeoperation 102 in
seinen ersten Sektor geschrieben. Der EBM-Sektor 64a wird
mit einer aktualisierten SATA-Adresse und SATA-Indexinformationen
geschrieben. Die vorherige Position des SATA-Blocks 66 wird
gelöscht,
und seine Adresse wird zur CBL hinzugefügt.
-
Die
EBM-Sektor-Schreiboperation 95 aktualisiert die Datenstrukturen
für das
Management der gelöschten
Blöcke
im Flash-Speicher 20 und die ABL und CBL im Prozessor-RAM.
-
Wenn
der Map-Block 64 gefüllt
ist, werden alle gültigen
Map-Sektoren gemäß Angabe
im Map-Index in dem EBM-Sektor mit einer Map-Block-Verschiebeoperation 97 in
einen neu zugeordneten Block neu eingeschrieben, zusammen mit einem
EBM-Sektor. Die vorherige Position des Map-Blocks 64 wird
gelöscht,
und ein geänderter
MA-Sektor 68a wird geschrieben.
-
Die
MA-Schreiboperation 99 stellt sicher, dass dieser modifizierte
MA-Sektor 68a geschrieben
wird, wenn der neue Map-Block geschrieben wird.
-
Wenn
ein MA-Sektor 68a geschrieben werden muss und kein gelöschter Sektor
im MA-Block 64 vorhanden ist, wird eine Blockzuordnungsoperation
durchgeführt,
und der MA-Sektor 68a wird mit einer MA-Block-Verschiebeoperation 101 in
den ersten Sektor 64b des MA-Blocks 64 geschrieben.
Die vorherige Position des MA-Blocks 64 wird gelöscht, und
seine Adresse wird zum MAA-Sektor 72a im Boot-Block 72 hinzugefügt.
-
Ändert sich
die Adresse des MA-Blocks 68 als Ergebnis einer MA-Block-Verschiebeoperation 101, wird
mit einer MAA-Schreiboperation 103 ein aktualisierter MAA-Sektor 72a in
den Boot-Block 72 geschrieben.
-
Wenn
ein MAA-Sektor geschrieben werden muss und kein gelöschter Sektor
im Boot-Block 72 vorhanden ist, wird eine Boot-Block-Neuschreibopera tion 104 durchgeführt. Eine
zweite Kopie des Boot-Blocks existiert und enthält nur die BBP-, Informationsstruktur-
und Identifikationssektoren. Der momentane MAA-Sektor 72a wird
in diese zweite Boot-Blockkopie geschrieben, und die erste Boot-Blockkopie
wird gelöscht.
Danach werden die BBP-, Informationsstruktur- und Identifikationssektoren
aus der zweiten Kopie in die erste Kopie zurückgeschrieben. Die zweite Kopie
wird dann zur aktiven Kopie, und die erste Kopie wird als Sicherheitskopie
gehalten. Später
folgende MAA-Sektoren
werden nur in die erste Kopie geschrieben.
-
Die
EBM-Sektor-Schreiboperation 95 wird nachstehend ausführlich anhand
von 10 beschrieben, die die erforderlichen Abläufe zur
Durchführung
der EBM-Sektor-Schreibfunktion zeigt.
-
Das
Ablaufdiagramm in 10 definiert den Blocksequenzalgorithmus 115 für die Zuordnung
gelöschter
Blöcke
zur Verwendung beim Schreiben von Daten- oder Steuerstrukturen.
Ist das Speichersystem 10 nicht voll, das heißt es gibt
gelöschte
Blöcke,
die in Bitmaps in einem oder mehreren Map-Sektoren 64b markiert
sind, beziehen sich die Datenblöcke,
die am Ende der Datenstruktur für
die Liste der gelöschten
Blöcke, die
nur Blöcke
für die
Zuordnung und Verwendung definiert, hinzugefügt werden, auf eine Kombination
von Blöcken
aus Map-Sektoren und Blöcken
aus der CBL, die kürzlich
gelöscht
worden sind. Ist das Speichersystem voll, das heißt es gibt
keine gelöschten
Blöcke,
die in Map-Sektoren markiert sind, beziehen sich die am Ende der
Liste der gelöschten
Blöcke
hinzugefügten
Blockadressen nur auf Blöcke
aus der EBL, die kürzlich gelöscht worden
sind. In diesem Fall werden die gelöschten Blöcke in exakt der Reihenfolge
wiederverwendet, in der sie gelöscht
wurden.
-
Vor
einer Map-Schreiboperation wird die EBL im EBM-Sektor 64a durch
die Zeiger EBLS und EBLL definiert. Die ersten 16 Einträge in der
EBL sind Adressen von Blöcken
in der ABL im SRAM 30 unmittelbar nach der vorherigen Map-Schreiboperation.
Die Adressen in der ABL im SRAM 30 können sich auf Blöcke beziehen,
die seit der vorherigen Map-Schreiboperation zur Verwendung zugeordnet
worden sind, oder auf gelöschte
Blöcke,
die zur Zuordnung verfügbar
sind. Die ABL und CBL können
zu Beginn einer Map-Schreiboperation beide voll, teilweise gefüllt oder
leer sein. Eine schematische Darstellung dieser Operation ist in 11 gezeigt.
-
Die
Map-Quellsektor-Wahloperation 105 wählt einen Quellsektor in der
Map zum Lesen von gelöschten
Blockadressen durch eine Vorwärtssuche
ab der Position des Zeigers MSP bei Abschluss der vorherigen Map-Schreiboperation.
Der MSP verhält
sich wie ein zyklischer Zeiger, der durch den physikalischen Adressbereich
wandert. Werden keine gelöschten
Blöcke
in einem Map-Sektor
angezeigt, wie anhand des Parameters Map-Anzahl bestimmt, entfallen
die Austauschoperationen mit Map-Sektoren.
-
Die
Map-Zielsektor-Wahloperation 106 findet einen Zielsektor
in der Map zum Schreiben gelöschter Blockadressen
durch Prüfung
der Blockadressen in der CBL. Nur ein Zielsektor wird ausgewählt.
-
Die
CBL2Map-Operation 107 sorgt dafür, dass alle Blockadressen
in der CBL, die sich auf den ausgewählten Map-Zielsektor beziehen,
gelöscht
werden, und die entsprechenden Bits im Map-Zielsektor werden auf
den gelöschten
Status gesetzt. Der Map-Sektor wird neu in den Flash-Speicher geschrieben,
sofern derselbe Sektor nicht auch der Map-Quellsektor ist. Die CBL
muss durch diese Operation 107 nicht geleert werden und
kann restliche gelöschte
Blöcke
enthalten, die nicht in den Map-Zielsektor geschrieben werden konnten. Der
Status der Datenstrukturen nach dieser Operation ist in 12 gezeigt.
-
Die
ABL- und CBL-Konsolidierung 108 sorgt dafür, dass
die CBL komprimiert wird, indem die Einträge für restliche gelöschte Blöcke an den
Anfang der CBL verschoben werden, und dass die ABL komprimiert wird, indem
die Einträge
für zugeordnete
Blöcke,
die mit der während
derselben Steuer-Schreiboperation
durchgeführten
Sektorlistenfreigabe verbunden sind, gelöscht werden und verbleibende
Einträge
an den Anfang der ABL verschoben werden. Der Status der Datenstrukturen
nach dieser Operation ist in 13 gezeigt.
-
Die
Map2CBL-Operation 110 sorgt dafür, dass die Blockadressen,
entsprechend den Bits im Map-Quellsektor zwischen dem Zeiger MSP
und dem Ende des Sektors, die im gelöschten Status sind, in die CBL
geschrieben werden und dass die Bits im Map-Quellsektor auf den
nicht gelöschten
Status geändert
werden. Bei dieser Operation werden möglichst viele Blöcke geschrieben,
die die CBL nach Möglichkeit
füllen,
wobei die CBL bei dieser Operation als Schreibpuffer verwendet wird.
Der Map-Sektor wird neu in den Flash-Speicher 20 geschrieben,
und der Zeiger MSP wird geändert,
um auf den letzten in die CBL geschriebenen Block zu verweisen.
Der Status der Datenstrukturen nach dieser Operation ist in 14 gezeigt.
-
Die
CBL2EBL-Operation 111 sorgt dafür, dass die in der CBL 117 gepufferten
Blockadressen am Ende der EBL hinzugefügt werden und die CBL gelöscht wird.
Die in der EBL hinzugefügten
Blöcke
sind eine Kombination von recycelten Blöcken aus der CBL, bei denen
es sich um nach der CBL2Map-Operation
verbleibende restliche Blöcke
handelt, und von durch den zyklischen Zeiger MSP definierten Blöcken, die
bei der Map2CBL-Operation 110 geladen wurden. Der Status
der Datenstrukturen nach dieser Operation ist in 15 gezeigt.
-
Die
EBL2ABL-Operation 112 sorgt dafür, dass die ABL gefüllt wird,
indem so viele Blockadressen wie nötig ab dem Anfang der EBL 118 oder
ab Positionen 118a in der EBL 118 unmittelbar
nach freien Blöcken geschrieben
werden, die bereits in der ABL 116 enthalten sind. Die
Adressen der nicht freigegebe nen zugeordneten Blöcke am Anfang der ABL werden
an den Anfang der EBL kopiert. Der Zeiger EBLS wird aktualisiert, damit
die ersten Blockadressen in der ABL und EBL übereinstimmen, und die EBLL
wird modifiziert. Der Status der Datenstrukturen nach dieser Operation
ist in 16 gezeigt.
-
Die
EBM-Schreiboperation 113 sorgt dafür, dass alle erforderlichen
Felder im EBM-Sektor, der in der Steuerung 16 zwischengespeichert
ist, aktualisiert werden und der Sektor in den Map-Block 64 geschrieben wird.
-
Die
zyklische Speicheroperation erreicht ihre hohe Leistung zum Teil
durch Nutzung der einzigartigen kontrollierbaren Eigenschaften der
im Flash-Speicher 20 gespeicherten
Datenstrukturen, damit der flüchtige SRAM 30 in
der Steuerung 16 für
die Kurzzeitspeicherung von Steuerdatenstrukturen verwendet werden
kann. Dies kann ohne die Gefahr eines Verlusts von Informationen
beim Ausschalten der Steuerung erfolgen.
-
Ein
entscheidender Schritt bei der Initialisierung des Systems 10 nach
dem Einschalten durch einen Host 12 ist die Rekonstruktion
der Datenstrukturen im SRAM 30 aus denen im Flash-Speicher 20.
Alle Steuerdatenstrukturen im Flash-Speicher müssen gefunden werden, und danach
müssen
die zuletzt geschriebenen Host-Datenstrukturen abgesucht werden,
um die Datenstrukturen im SRAM 30 zu rekonstruieren.
-
Die
Datenstrukturen im Flash-Speicher 20 werden mit dem folgenden
Prozess rekonstruiert, der nach dem in 6 gezeigten
Referenzbaum für
Datenstrukturen abläuft.
-
Der
Boot-Block 72 wird durch Absuchen von Sektoren ab der niedrigsten
physikalischen Adresse im Flash-Speicher 20 gefunden. Der
BBP-Sektor 72b ist immer der erste Sektor des Boot-Blocks 72 und
enthält eine
eindeutig identifizierbare Signatur in seinem Header, die seine
Identifizierung ermöglicht.
Nur Sektoren, die der erste Sektor von Blöcken mit der kleinsten unterstützten Blockgröße sein
können,
müssen
gelesen werden. Blöcke
an den niedrigsten Adressen im Flash-Speicher 20, die so
definiert sein können,
dass sie immer Firmware-Code enthalten, müssen nicht abgesucht werden.
Der Scan-Prozess zur Identifizierung des Boot-Blocks ist sehr kurz,
da der Boot-Block im ersten freien Block am Anfang des Flash-Speichers
angeordnet ist, hinter eventuellen Blöcken für die Speicherung von Firmware.
-
Der
BBP-Sektor 72b und der gültige MAA-Sektor 72a im
Boot-Block 72 werden gefunden, gelesen und verifiziert.
-
Die
zweite Kopie des Boot-Blocks wird gefunden und verifiziert, und
zwar an der im BBP-Sektor 72b definierten Adresse.
-
Der
Map-Adressblock 68 wird gefunden, wie im MAA-Sektor 72a definiert,
und sein gültiger
MA-Sektor 68a wird gefunden und verifiziert.
-
Der
Map-Block 64 wird gefunden und verifiziert, wie im MA-Sektor 68a definiert.
-
Der
gültige
EBM-Sektor 64a im Map-Block 64 wird gefunden und
verifiziert.
-
Die
ABL, Schreibzeiger, Sektorlisten und COBs werden initialisiert,
entsprechend den Feldern im EBM-Sektor 64a.
-
Der
SATA-Block 66 und der gültige
SATA-Sektor 66a werden gefunden und verifiziert, wie im EBM-Sektor 64a definiert.
-
Die
Datenstrukturen im flüchtigen
RAM werden danach mit dem folgenden Prozess rekonstruiert. Die ersten
16 Einträge
in der EBL im EBM-Sektor 64a werden gelesen, um den ABL-Inhalt
nach der unmittelbar vorhergehenden Steuer-Schreiboperation zu ermitteln.
-
Das
Feld Schreibzeiger im EBL-Sektor 64a wird gelesen. Dies
definiert die Position der Zeiger DWP, DRP, SWP und SRP unmittelbar
nach der letzten Steuer-Schreiboperation, bei der Sektorlistendatensätze beendet
wurden, und definiert außerdem
die Reihenfolge der Blöcke,
sofern zutreffend, die durch jeden Zeiger zwischen dieser Steuer-Schreiboperation
und der unmittelbar vorhergehenden Steuer-Schreiboperation geschrieben
wurden.
-
Die
Sektoren werden aus allen so identifizierten Blöcken gelesen, um eine Kette
von verknüpften
logischen Sektoren am DWP festzulegen. Diese Informationen werden
verwendet, um den DWSL-Datensatz zu erzeugen.
-
Die
ersten Sektoren in Blöcken
in der rekonstruierten ABL werden nacheinander gelesen, um die mit dem
DWP verbundenen Blöcke
aus den in den Blöcken
enthaltenen Sektor-Headern zu identifizieren. Wenn ein solcher Block
identifiziert wird, werden alle seine Sektoren gelesen, und die
Erzeugung des DWSL-Datensatzes, wie in Schritt 3, ist abgeschlossen.
-
Mit
dem DWP verbundene Blöcke,
identifiziert in Schritt 4, werden in der ABL als zugeordnet markiert, um
die momentane Version der ABL zu erzeugen, wie sie vor dem vorherigen
Abschalten der Stromversorgung existiert hat.
-
Diese
Schritte werden für
den DRP, SWP und SRP wiederholt, um die DRSL, SWSL und SRSL zu rekonstruieren.
Damit ist auch die Rekonstruktion der ABL abgeschlossen.
-
Die
Datenstrukturen DCOB1, DCOB2, SCOB1 und SCOB2, so wie sie nach dem
unmittelbar vorhergehenden Schreiben von Steuerdaten existiert haben,
werden aus dem EBM-Sektor gelesen.
-
Die
Adressübersetzung
erfolgt nacheinander für
die Sektoren in den DWSL-, DRSL-, SWSL- und SRSL-Datensätzen, die
bereits rekonstruiert worden sind, um die Folge von Sektoren und
Blöcken
zu identifizieren, die seit dem unmittelbar vorhergehenden Schreiben
von Steuerdaten überholt
worden sind. Dies erlaubt die Rekonstruktion der Entwicklung der
COBs und die Er zeugung der CBL. Alle so identifizierten überholten
Sektoren, die in rekonstruierten SWSL-Datensätzen auftreten, werden aus
diesen Datensätzen
entfernt. Durch Schreiboperationen am DRP und SRP werden keine überholten
Sektoren erzeugt, und mit ihnen verbundene Datensätze können in
diesem Schritt vernachlässigt
werden.
-
Diese
rekonstruierten Versionen der DWSL, DRSL, SWSL, SRSL, ABL, CBL,
DCOB1, DCOB2, SCOB1 und SCOB2 werden für die anschließenden Geräteoperationen
verwendet.
-
Eine
Reihe von Stromausfall-Wiederherstellfunktionen kann verwendet werden,
um Datenstrukturen zu reparieren, wenn diese entweder beschädigt sind
oder aufgrund eines Stromausfalls während des Normalbetriebs nicht
miteinander übereinstimmen.
-
Diese
Funktionen nutzen dieselben Merkmale der Rückverfolgbarkeit in Medienmanagement-Operationen
für die
zyklische Speicherung, die die Rekonstruktion der Datenstrukturen
im flüchtigen
RAM bei der Initialisierung ermöglichen,
wie vorstehend beschrieben.
-
Verschiedene
Modifikationen können
an der vorstehend beschriebenen Anordnung vorgenommen werden, ohne
vom Umfang der Erfindung abzuweichen. Zum Beispiel kann ein System
mit einer Flash-Disk-Vorrichtung physikalisch auf verschiedene Weise
partitioniert sein, entsprechend der Systemarchitektur, wobei jedoch
alle Systeme allgemein der vorstehend beschriebenen Struktur entsprechen.
Der Flash-Speicher 20 ist zum Beispiel in 1 als
Teil eines Speichersystems 10 gezeigt, aber er kann sich
alternativ auf einer herausnehmbaren Karte befinden und über eine
logische Schnittstelle 14, die wie vorstehend beschrieben
Industrie-Standardprotokollen entspricht, mit einem Host-System
verbunden werden. Beispiele für
solche Industriestandards sind unter anderem PCMCIA ATA, CompactFlash
und MultiMediaCard. Bei einer solchen Anordnung kann sich die Steuerung
auf einer herausnehmbaren Karte befinden, wobei die Steuerung typischerweise
eine einzelne integrierte Schaltung ist. Der Flash-Speicher 10 kann
aus einer oder mehreren integrierten Schaltungen bestehen, und die
Steuerung kann auf derselben integrierten Schaltung wie der Flash-Speicher
vorgesehen sein.
-
Es
könnte
auch sein, dass der Host und das Flash-System physikalisch so partitioniert
sind, dass sich nur der Flash-Speicher auf einer herausnehmbaren
Karte befindet, die eine physikalische Schnittstelle zum Host-System
aufweist. Eine Hierarchie dieser Anordnung ist in 17 gezeigt.
Ein Beispiel für
eine solche herausnehmbare Flash-Speicherkarte ist eine SmartMedia-Karte.
Die Steuerung ist innerhalb des Host-Systems 11 angeordnet
und kann die Form einer integrierten Schaltung oder von Firmware
annehmen, die von einem Prozessor im Host-System ausgeführt wird.
-
Alternativ
kann das Verfahren nach der vorliegenden Erfindung in einem eingebetteten
Speichersystem implementiert werden, dass nicht physikalisch aus
einem Host-System entnommen werden kann. Ein solches System kann
dieselbe Partitionierung wie ein Speichersystem auf einer herausnehmbaren
Karte aufweisen, wobei die Steuerung die Form einer integrierten
Schaltung aufweist und eine logische Schnittstelle nach Industrie-Standardprotokollen
umfasst. Die Steuerung kann jedoch auch mit anderen Funktionen im
Host-System integriert
sein.
-
Bei
der beschriebenen Anordnung ist jeder Sektor durch eine LBA identifiziert,
kann jedoch auch durch eine Adresse im Zylinder/Kopf/Sektor-Format
(CHS) identifiziert werden, das ursprünglich für Magnetplattenvorrichtungen
verwendet wird. Außerdem
weist die Steuer-Hardware bei der beschriebenen Anordnung eine dedizierte
Architektur in einer getrennten integrierten Schaltung auf, aber
Elemente der Steuer-Hardware, zum Beispiel der Mikroprozessor, können auch
gemeinsam mit anderen Funktionen im Host-System genutzt werden.
Darüber
hinaus können
die Management-Algorithmen für
die zyklische Speicherung in einem Mikroprozessor im Host-System
implementiert sein oder der Prozess kann über die Ein/Ausgangsanschlüsse eines
normalen Mikroprozessors ohne spezielle Steuer-Hardware ausgeführt werden.
Ist die Steuerung Teil eines eingebetteten Speichersystems und teilt
sie sich die Nutzung des Mikroprozessor mit anderen Funktionen eines Host-Systems,
kann die logische Schnittstelle für die Steuerung des Speichersystems
direkt in der von dem Prozessor ausgeführten Firmware implementiert
werden, was bedeutet, dass Hardware-Register entfallen können und
Variablen direkt an eine Steuerfunktion weitergegeben werden können, die
durch eine Host-Funktionen im Firmware-Code aufgerufen werden kann.
-
In
dem vorstehend beschriebenen Flash-Speichersystem erfolgt die Datenübertragung
zwischen den Host- oder Flash-Schnittstellen und dem SRAM durch
DMA, aber in einer alternativen Ausführungsform könnte ein
separater Speicherblock exklusiv für die Pufferung von Sektordaten
verwendet werden. Typischerweise könnte dieser Speicherblock ein
Dual-Port-RAM sein, wobei die Anschlüsse den unabhängigen Zugriff
durch den Host-Schnittstellen-Steuerabschnitt
und den Flash-Schnittstellen-Steuerabschnitt ermöglichen.
-
Bei
der beschriebenen Anordnung wurden die Speicherblöcke, in
denen die Speichersektoren angeordnet sind, als eine physikalische
Struktur im Flash-Speicher mit 32 Sektorpositionen beschrieben,
aber es ist auch möglich,
dass diese Speicherblöcke 16 Sektorpositionen
aufweisen. Außerdem
können
die Speicherblöcke
alternativ virtuelle Blöcke
mit physikalischen Blöcken
sein, die über
mehrere Flash-Chips oder mehrere unabhängige Anordnungen im selben
Chip verteilt sind, die mit einer einzigen Operation durch die Steuerung gelöscht werden.
Umfasst ein virtueller Block M physikalische Blöcke, jeweils mit einer Kapazität für N Sektoren,
hat der virtuelle Block eine Kapazität für M × N Sektoren. Ein virtueller
Block wird von den Medienmanagement-Algorithmen für die zyklische
Speicherung in genau der gleichen Weise behandelt wie ein physikalischer Block.
-
Zu
beachten ist, dass der ROM und der Erweiterungsanschluss der Steuerung
lediglich optionale Merkmale sind und zur Durchführung der Operationen für die zyklische
Speicherverwaltung nicht in der Steuerung enthalten sein müssen.
-
Die
vorliegende Erfindung kann mit einem Computerprogramm realisiert
werden, das auf einem Mikroprozessor läuft. Ein Aspekt der vorliegenden
Erfindung stellt damit ein Speichermedium mit prozessor-implantierbaren
Instruktionen zur Steuerung eines Prozessors bereit, um das vorstehend
beschrieben Verfahren durchzuführen.
Tabelle
1
Tabelle
2