-
Die
Erfindung betrifft das Gebiet des Speicherns von Daten in einem
Festkörperspeicher.
Es werden insbesondere ein Festkörperlaufwerk
und ein entsprechendes Verfahren zum Speichern von Daten darin beschrieben
werden.
-
Festkörperplatten
(Solid State Disks), die auch als Festkörperlaufwerke (Solid State
Drives) bekannt sind (beide kurz SSD genannt), und Speichermedien
wie zum Beispiel USB-Speicher-Sticks oder Flash-Speicherkarten,
z. B. CF (Compact Flash) oder SD (Secure Digital), sind Speichermedien,
die in der Lage sind, große
Mengen an Daten zu speichern. Die Laufwerke können zum Beispiel dafür verwendet werden,
Daten in Computern oder in irgendeiner anderen Digitalsignal-Verarbeitungsvorrichtung ähnlich wie
herkömmliche
Festplattenlaufwerke zu speichern. Anders als herkömmliche
Festplattenlaufwerke, die eine sich mechanisch drehende Platte verwenden,
die eine magnetische Beschichtung aufweist, verwenden die Festkörperlaufwerke
(SSDs) keine mechanisch bewegten Teile. Statt dessen umfassen Festkörperlaufwerke
integrierte Schaltkreise für
das Speichern der Daten, wobei die integrierten Schaltkreise Anordnungen
von Speicherzellen umfassen. Es sind mehrere Arten von nichtflüchtigen Speicherzellen
bekannt. In einem Beispiel sind Speicherzellen im Wesentlichen aus
Doppel-Gate-Transistoren aufgebaut, die zwei Gates statt nur eines aufweisen.
Ein erstes Gate ist das Steuer-Gate für das Steuern des Transistors,
wie dies von herkömmlichen
Transistoren bekannt ist. Ein Floating Gate (frei schwebendes Gate)
ist zwischen dem Steuer-Gate und dem MOSFET-Kanalbereich angeordnet.
Dieses Floating Gate ist von einem Isoliermaterial umgeben. Somit
werden jegliche Ladungsträger,
d. h., Elektronen, die auf das Floating Gate gebracht werden, eingefangen
und werden unter normalen Betriebsbedingungen nicht entladen. Dementsprechend
behalten die Speicherzellen ihren Status selbst dann bei, wenn der
Strom abgeschaltet wird, so dass der Speicher nichtflüchtig ist.
-
Ladungsträger können zum
Beispiel auf das Floating Gate gebracht werden, indem eine hohe Spannung
an das Steuer-Gate angelegt wird, so dass der Transistor eingeschaltet
wird und es ermöglicht
wird, dass ein starker Strom von der Source zu dem Drain fließen kann.
Die starken Ströme
bewirken, dass einige Elektronen auf das Floating Gate springen,
was Hot Electron Injection (Heißelektroneninjektion
bzw. Injektion von spannungsführenden Elektronen)
genannt wird. Zum Entfernen der Elektronen wird eine hohe Spannung
mit einer entgegengesetzten Polarität zwischen dem Steuer-Gate
und dem Drain angelegt, um die Elektronen durch einen sogenannten
Quanten-Tunneleffekt auszutreiben. Dieser Prozess der Heißelektroneninjektion
und des Quanten-Tunneleffekts
wird vor allem in NOR-Speicherzellen verwendet. Alternativ dazu
und insbesondere in NAND-Speicherzellen kann ein Prozess verwendet
werden, der Tunnelinjektion (Tunnel Injection) genannt wird, um
Elektronen auf das Floating Gate zu injizieren, d. h. er kann also
für einen Schreibvorgang
verwendet werden, und ein Prozess, der Tunnelentladung (Tunnel Release)
genannt wird, kann dafür
verwendet werden, die Elektronen aus dem Floating Gate zu entfernen,
d. h. er kann also für das
Löschen
von Speicherzellen verwendet werden.
-
Die
Speicherzellen können
zum Beispiel in einer NOR- oder in einer NAND-Architektur miteinander
verbunden sein. Bei der NOR-Architektur sind die Speicherzellen
parallel geschaltet. Auf die Speicherzellen kann einzeln zugegriffen
werden. NAND-Speicherzellen sind in Reihe geschaltet, so dass sich
eine Vielzahl von Speicherzellen eine Datenleitung teilt. Auf die
Zellen kann somit nur in Reihe zugegriffen werden, so dass auf die
Zellen für
das Lesen und Schreiben nacheinander zugegriffen wird. In Folge dieser
Architektur kann auf die Zellen nicht einzeln zugegriffen werden.
Somit wird für
einen Lesevorgang oder für
das Programmieren, d. h., das Schreiben, auf alle Zellen einer Speicherseite
zugegriffen.
-
In
dem hier beschriebenen Beispiel ist der Transistor das Speicherelement,
das die Informationen speichert. Es sei angemerkt, dass aber auch Speicherzellen,
die andere Speicherelemente umfassen, verwendet werden können, zum
Beispiel Speicherzellen, die Datenträger aus Phasenumwandlungsmaterial
umfassen, d. h., PCRAM, oder die andere resistiv schaltende Materialien
umfassen, zum Beispiel einen magnetresistiven RAM (MRAM).
-
In
Einfachzustands-Speicherzellen (Speicherzellen mit nur einem Zustand)
wird eine Zelle abgefühlt,
um ein Bit zu reflektieren, d. h., der Transistor ist entweder leitend
oder nichtleitend. In Mehrfachzustands-Speicherzellen (Speicherzellen
mit mehreren Zuständen)
kann eine einzige Zelle mehr als zwei Zustände annehmen. Wenn der Zustand
der Speicherzelle abgefühlt
wird, wird der Betrag an Strom, der durch den Transistor fließt, gemessen.
Eine Zelle kann dementsprechend einen von einer Multiplizität von Leitungswiderstandspegeln
(Resistivity Levels) annehmen und kann somit mehr als ein Bit reflektieren,
so dass die Zelle eine Mehr-Pegel-Zelle ist.
-
Anders
als herkömmliche
Speichervorrichtungen, die Magnetplatten zum Speichern von Daten umfassen,
zeigt der oben beschriebene Flash-Speicher in NAND-Architektur andere
Eigenschaften in Bezug auf das Lesen, das Programmieren und das Löschen von
Daten. Dementsprechend können
die Prinzipien, die für
herkömmliche
Speichermedien entwickelt worden sind, nicht auf diese Art von Flash-Speicher
angewendet werden. Folglich besteht ein Bedarf daran, schnelle und
zuverlässige Flash-Speichervorrichtungen
zu entwickeln.
-
Die
Erfindung erreicht dieses bzw. weitere Ziele durch die Gegenstände der
Ansprüche
1 und 11. Vorteilhafte Weiterbildungen der Erfindung sind in den
Unteransprüchen
angegeben.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt
eine schematische Speicheranordnung in Übereinstimmung mit einem Ausführungsbeispiel;
-
2 zeigt
ein Zeitdiagramm, das die Verarbeitung und den Ablauf von Schreibzugriffen
veranschaulicht;
-
3 zeigt
ein Blockschaltbild einer Speichervorrichtungsstruktur.
-
BESCHREIBUNG DER ERFINDUNG
-
Die
vorliegende Erfindung wird nun unter Bezugnahme auf ein paar bevorzugte
Ausführungsbeispiele
davon beschrieben werden, wie diese in den beigefügten Zeichnungen
veranschaulicht sind. In der nachfolgenden Beschreibung werden zahlreiche spezifische
Einzelheiten dargelegt, um ein vollständiges Verständnis der
vorliegenden Erfindung bereitzustellen. Es wird einem Fachmann auf
dem Gebiet aber offensichtlich sein, dass die vorliegende Erfindung
ohne einige oder alle dieser spezifischen Einzelheiten praktiziert
werden kann. In anderen Beispielen sind allgemein bekannte Prozesse
und Schritte nicht im Einzelnen beschrieben worden, um die vorliegende
Erfindung nicht unnötigerweise
unklar zu machen.
-
Obwohl
die Erfindung auf andere Speichervorrichtungen angewendet werden
kann, bezieht sich die nachfolgende Beschreibung vor allem auf einen
Speicher in NAND-Architektur, in dem auf Speicherzellen nur gruppenweise
zugegriffen werden kann.
-
1 zeigt
schematisch eine schematische Anordnung eines Speicherlaufwerks 100 eines Flash-Speichers
in Übereinstimmung
mit einem Ausführungsbeispiel.
-
Das
Flash-Speicherlaufwerk 100 kann eine Vielzahl von Flash-Vorrichtungen 110 bis 117 umfassen,
wobei eine Flash-Vorrichtung dadurch gekennzeichnet ist, dass sie
so ausgelegt und konfiguriert ist, dass sie nur eine Operation gleichzeitig
ausführen kann,
d. h., die Flash-Vorrichtung kann entweder Daten aus Flash-Speicherzellen
heraus in einen vorrichtungsinternen Seitenpufferspeicher (Seitenpuffer)
lesen oder empfängt
Daten von einem Kanal oder programmiert die Inhalte des Seitenpufferspeichers
in eine Flash-Speicherseite oder löscht Flash-Speicherseiten.
Somit kann eine Flash-Vorrichtung also als eine Einheit betrachtet
werden, die in der Lage ist, eine Datenmenge autonom zu verarbeiten,
wenn sie einmal von einem geeigneten Befehl aktiviert worden ist.
In der Tat werden Flash-Vorrichtungen von Befehlen gesteuert, die
von einem Controller gesendet werden, um eine dieser Operationen
durchzuführen. Physisch
kann eine Vielzahl von Flash-Vorrichtungen auf einem einzigen Siliziumchip
realisiert werden, oder eine Flash-Vorrichtung kann quer über einen oder
mehrere Siliziumchips verteilt werden.
-
Die
Flash-Speicherzellen innerhalb jeder Flash-Vorrichtung sind zu Flash-Speicherseiten 120, 121 gruppiert,
wobei die Flash-Speicherseiten die gleiche Größe aufweisen. In dem vorliegenden
Ausführungsbeispiel
beträgt
die Größe einer
Flash-Speicherseite 2 kB plus zusätzlichen Speicherraum zum Speichern
von Metadaten wie etwa Fehlerkorrekturcode-(ECC; Error Correction
Code)-Werte.
-
Im
Hinblick auf die heutige Organisation der Datenspeicherung umfasst
eine Seite auf diese Weise 4 Sektoren mit jeweils einer Größe von 512
Byte. Die Zahlen, die innerhalb der dargestellten Flash-Speicherseiten
stehen, geben die Startsektornummer einer Flash-Speicherseite innerhalb
der Flash-Speichervorrichtung 100 beginnend bei 0 an. Folglich
gibt die 0, die in der Flash-Speicherseite 120 angegeben
ist, die Anfangsadresse einer ersten Seite des Flash-Speichers an,
die zweite Flash-Speicherseite umfasst die Sektoren 4–7, so dass
die Sektoradresse der zweiten Flash-Speicherseite somit bei 4 anfängt, usw..
-
Eine
Vielzahl von Flash-Speicherseiten 120, 121 in
einer Flash-Vorrichtung ist zu einem Speicherverwaltungsblock 130 gruppiert,
wobei die Seiten eines Speicherverwaltungsblocks 130 in
zwei Ebenen 140, 141 angeordnet sind, die die
linke und die rechte Spalte des schematisch dargestellten Verwaltungsblocks 130 sind.
Der Speicherverwaltungsblock 130 umfasst in dem vorliegenden
Ausführungsbeispiel acht
Flash-Speicherseiten, die in zwei Ebenen angeordnet sind, wobei
die Flash-Speicherseiten, die mit den Sektoren 0, 64, 128, 192 anfangen,
in der Ebene 140 angeordnet sind und die Flash-Speicherseiten, die
mit den Sektoren 4, 68, 132 und 196 anfangen, in der Ebene 141 angeordnet
sind. Jede der Flash-Vorrichtungen 110 bis 117 umfasst
auf diese Weise eine Vielzahl von Speicherverwaltungsblöcken, die
jeweils eine Vielzahl von Flash-Speicherseiten umfassen, die in
zwei Ebenen angeordnet sind. Die Flash-Speicherseiten in den beiden
Ebenen eines Speicherverwaltungsblocks können zur gleichen Zeit betrieben
werden, so dass zum Beispiel eine Seite in der Ebene 140 parallel
dazu, d. h. zur gleichen Zeit, wenn eine Seite der Ebene 141 programmiert
wird, gelesen oder programmiert werden kann.
-
Zum
Empfangen von Daten von und zum Übertragen
von Daten zu einem Host ist jede Flash-Vorrichtung mit einem Kanal
gekoppelt, wobei in dem vorliegenden Ausführungsbeispiel jeweils die Flash-Vorrichtungen 110, 112, 114 und 116 operativ mit
dem Kanal 150 gekoppelt sind und die Flash-Vor richtungen 111, 113, 115 und 117 mit
dem Kanal 151 gekoppelt sind. Auf diese Weise ist ein Kanal
mit wenigstens zwei Flash-Vorrichtungen gekoppelt.
-
Ein
Kanal kann auf einmal jeweils nur mit einer seiner gekoppelten Flash-Vorrichtungen
beschäftigt
sein. Folglich können
in Situationen, in denen ein Kanal mit mehr als einer Flash-Vorrichtung
gekoppelt ist und Daten für
die Übertragung
zu oder für
den Empfang von mehr als einer Flash-Vorrichtung bereit sind, die
Sendeoperationen nicht zur gleichen Zeit durchgeführt werden,
sondern nur sequentiell eine nach der anderen. Aber wenn die Daten
einmal zu einer bestimmten Flash-Vorrichtung übertragen worden sind, dann
kann diese Vorrichtung zu gesteuert werden, dass sie weitere Operationen
autonom durchführt,
so dass die weitere Operation, d. h., die Verarbeitung der Daten,
den Kanal nicht beeinträchtigt.
-
Jede
Flash-Vorrichtung umfasst des Weiteren einen Seitenpufferspeicher
(Seitenpuffer) 160 161 für das Zwischenspeichern von
Daten. Somit werden die Daten dann, wenn die Daten aus einer Flash-Speicherseite
ausgelesen werden, in dem Seitenpufferspeicher zwischengespeichert,
bevor sie über
den Kanal übertragen
werden. In ähnlicher
Weise werden die Daten dann, wenn Daten zu einer Flash-Vorrichtung
für das
Speichern der Daten in dem Flash-Speicher
signalisiert bzw. übertragen
werden, in dem Seitenpufferspeicher zwischengespeichert, bevor die
Daten in eine Flash-Speicherseite programmiert, d. h., geschrieben
werden. Der Seitenpufferspeicher jeder Flash-Vorrichtung weist die Speichergröße von zwei
Flash-Speicherseiten einschließlich
ihrer Metadaten auf, so dass die Inhalte von zwei Seiten in dem
Seitenpufferspeicher jeder Flash-Vorrichtung zwischengespeichert
werden können.
Auf diese Weise wird auf Flash-Speicherseiten in einer Flash-Vorrichtung
nicht direkt über
den Kanal zugegriffen, sondern Daten, die aus den Flash-Speicherseiten
einer Flash-Vorrichtung ausgelesen werden sollen oder in diese geschrieben
werden sollen, werden in dem Seitenpufferspeicher zwischengespeichert.
-
Der
Seitenpufferspeicher kann schneller betrieben werden als die Seiten
des Flash-Speichers und kann flüchtig
sein, d. h., der Pufferspeicher kann die Daten ohne Stromzufuhr
nicht speichern, da der Pufferspeicher als ein Zwischenspeicher
dient. Folglich kann der Seitenpufferspeicher nicht von der Art eines
Flash-Speichers sein, sondern kann von einer anderen Art sein, zum
Beispiel ein herkömmlicher DRAM
oder SDRAM.
-
Für das Adressieren
einer Seite in einem Verwaltungsblock wird eine logische Blockadresse (LBA)
in einer Übersetzungstabelle 170 gespeichert, die
eine empfangene logische Blockadresse der tatsächlichen, physischen Adresse
der Seite zuordnet. Folglich halten die Strukturen 170, 171 Adressen 180...,
von denen jede auf einen einzigen Verwaltungsblock einer anderen
Flash-Vorrichtung zeigt.
-
In
Folge der NAND-Architektur der Flash-Vorrichtungen kann für das Schreiben
oder Lesen auf Speicherzellen oder Fragmente einer Seite nicht einzeln
zugegriffen werden, sondern es kann dafür nur auf eine Seite als Ganzes
zugegriffen werden. Somit muss für
das Lesen eines Fragments einer Seite die gesamte Seite gelesen
werden und nur das angeforderte Fragment wird an einen anfordernden
Host weitergeleitet. In ähnlicher
Weise muss dann, wenn ein Sektor einer Flash-Speicherseite aktualisiert
werden soll, die gesamte Seite geschrieben werden.
-
Des
Weiteren können
Flash-Speicherzellen nur einmal programmiert werden. Das heißt, ausgehend
von einem Anfangszustand, in dem alle Speicherzellen einer Seite
einen Anfangszustand von zum Beispiel einer logischen 1 aufweisen,
kann eine Zelle nur einmal auf einen logischen Zustand von 0 programmiert,
d. h., geschrieben werden. Um eine Zelle auf eine logische 1 zurückzusetzen,
muss sie gelöscht
werden, wobei die Zelle nicht einzeln, sondern nur in einem Löschblock
gelöscht
werden kann. Im Allgemeinen kann ein Löschblock jede Anzahl von Flash-Speicherseiten
innerhalb einer einzigen Flash-Vorrichtung umfassen. Insbesondere
umfasst ein Löschblock
Flash-Speicherseiten
von einigen Speicherverwaltungsblöcken, so dass ein Löschblock
die Speichergröße von einigen
dieser Blöcke aufweist.
-
Eine
andere Charakteristik ist, dass Seiten eines Löschblocks sequentiell geschrieben
werden müssen.
Das heißt,
Flash-Speicherseiten können nicht
willkürlich
innerhalb eines Löschblocks
geschrieben werden, sondern nur in sequentieller Reihenfolge.
-
Demgemäß müssen für willkürliche Schreibvorgänge, d.
h., für
die Aktualisierung einiger, aber nicht aller Speicherzellen eines
Sektors in einer Seite, die neuen Daten mit den Daten gemischt werden, die
beibehalten werden sollen. Es sei angemerkt, dass Sektoren normalerweise
die kleinste Dateneinheit sind, die zu einer Speicherungsvorrichtung
ausgehend von einem Host übertragen
werden. Das heißt,
für das
Vermitteln von wenigstens einem Bit, das in einem Sektor einer Seite
gespeichert ist, wird der Sektor, der das wenigstens eine Bit enthält, zu dem
Speicher transferiert. Die Inhalte einer Seite, die unmodifiziert
beibehalten werden sollen, werden folglich aus der Seite ausgelesen,
d. h., drei der vier Sektoren der betroffenen Seite, und werden
in einer anderen Seite gespeichert, wobei der transferierte Sektor
einen Sektor innerhalb dieser Seite ersetzt. Die entsprechende Aufzeichnung
in der Adressenübersetzungstabelle
wird entsprechend aktualisiert, so dass die logische Adresse auf
die neu geschriebene Flash-Speicherseite abbildet. Oftmals wird
ein sogenannter Log Block für
die Speicherung von Sektoren, die Änderungen enthalten, verwendet,
so dass nur der abgeänderte
Sektor in dem Log Block gespeichert wird, und die Zuordnung (Mapping)
der LBA des ursprünglichen
Sektors zu dem entsprechenden Sektor in dem Log Block umgeleitet
wird.
-
Aber
das Speichern von Sektoren in dem Log Block geht unvermeidlich zu
Ende, wenn alle Sektoren in dem Log Block gefüllt sind. Wenn dem so ist,
dann muss der Speichercontroller oder die Speicherverwaltungseinheit
(MMU; Memory Management Unit) einen ganzen Löschblock freigeben. Bevor ein
Löschblock
zurückgesetzt
werden kann, müssen
die Inhalte dieses Blocks gesichert werden. Das heißt, der
Controller kopiert die Daten der Sektoren in dem Log Block zusammen
mit den restlichen Daten des ursprünglichen Seiten-Mapping in eine andere Stelle
in dem Speicher und modifiziert entsprechend die Adresstabelle.
Nachdem die Daten aller Sektoren in dem Löschblock des Log Blocks mit
den ursprünglichen
Daten gemischt worden sind, kann der Löschblock gelöscht werden.
-
Das
Lesen einer Flash-Speicherseite dauert etwa 25 μs, das Programmieren einer Seite,
d. h., das Schreiben einer Seite, dauert etwa 200 μs und das
Löschen
eines Löschblocks
dauert etwa 1,5 ms. Diese Zeitspannen können sich zum Beispiel summieren,
wenn ein Löschblock
gelöscht
wird.
-
Zum
Speichern einer Datei in dem Flash-Speicherlaufwerk werden die Daten
zum Beispiel von einem Host zu dem Laufwerk signalisiert. Angenommen,
dass die Daten, die gespeichert werden sollen, ein Speichervolumen
von zwei Seiten übersteigen,
dann wird ein erster Abschnitt der Daten über den Kanal 150 zu
dem Seitenpufferspeicher 160 signalisiert, wobei der Datenabschnitt
die Größe von zwei
Seiten aufweist und folglich in dem Seitenpufferspeicher 160 der
Flash-Vorrichtung 110 gespeichert wird. Sofort nach der
Operation des Zwischenspeichers des ersten Datenabschnitts in dem
Seitenpufferspeicher 160) wird die Flash-Vorrichtung so
gesteuert, dass der Datenabschnitt aus dem Seitenpufferspeicher 160 in
zwei Flash-Speicherseiten programmiert, d. h., kopiert wird, wobei
die Flash-Speicherseiten jeweils in einer ersten und in einer zweiten Ebene 140 und 141 angeordnet
sind, so dass die Flash-Speicherseiten zur gleichen Zeit programmiert werden
können.
Die beiden Flash-Seiten können zum
Beispiel diejenigen sein, die die Sektoren 0 bis 7 umfassen, so
dass der erste Datenabschnitt in den Flash-Speicherseiten gespeichert
wird, die in der Zeichnung mit 0 und 4 gekennzeichnet sind.
-
Die
Operation des Kanals 150 und der Flash-Vorrichtung 110 beeinflusst
nicht den Kanal 151 oder irgendeine der Flash-Vorrichtungen,
die damit gekoppelt sind. Folglich kann ein zweiter Abschnitt der
Daten über
den Kanal 151 zu der Flash-Vorrichtung 111 zur
gleichen Zeit signalisiert werden, wenn der erste Datenabschnitt
zu der Flash-Vorrichtung 110 signalisiert wird. Ähnlich wie dies
oben für
die Flash-Vorrichtung 110 beschrieben worden ist, wird
der Datenabschnitt in dem Seitenpufferspeicher 161 der
Flash-Vorrichtung 111 zwischengespeichert und wird dann
in die Seiten des Flash-Speichers programmiert, sobald die Operation des
Zwischenspeichers des Datenabschnitts in dem Pufferspeicher 161 abgeschlossen
ist. Der zweite Datenabschnitt der Datei, die gespeichert werden soll,
wird somit in Flash-Seiten eines anderen Speicherverwaltungsblocks
in einer anderen Flash-Vorrichtung gespeichert. Der zweite Datenabschnitt kann
zum Beispiel in Flash-Speicherseiten gespeichert werden, die in
der Flash-Vorrichtung 111 mit 8 und 12 gekennzeichnet sind.
-
Das
Programmieren des ersten Datenabschnitts aus dem Seitenpufferspeicher 160 in
Seiten des Flash-Speichers ist ein Prozess, der im Innern der Flash-Vorrichtung 110 abläuft und
die Operation des Kanals 150 nicht beein trächtigt.
Der Kanal 150 kann folglich wieder verwendet werden, um
Daten zu übertragen,
sobald die Signalisierung des ersten Datenabschnitts zum Pufferspeicher 160 abgeschlossen
ist. Ein dritter Datenabschnitt der Datei kann somit zu dem Seitenpufferspeicher 162,
der sich in der Flash-Vorrichtung 112 befindet, signalisiert
werden, sofort nachdem die Signalisierung des ersten Datenabschnitts
beendet ist, d. h., während
die Inhalte des Seitenpufferspeichers 160 in Flash-Speicherseiten
in der Flash-Vorrichtung 110 programmiert werden. Wiederum
können,
sobald die Signalisierung des dritten Datenabschnitts zu dem Seitenpufferspeicher 162 abgeschlossen
worden ist, diese Daten in Flash-Speicherseiten
in der Flash-Vorrichtung 112 programmiert werden, zum Beispiel
in diejenigen, die mit 16 und 20 markiert sind.
-
In ähnlicher
Weise, wie dies oben für
den dritten Datenabschnitt beschrieben worden ist, kann ein vierter
Datenabschnitt über
den Kanal 151 zu einer damit gekoppelten Flash-Vorrichtung
zur gleichen Zeit signalisiert werden, wenn der dritte Datenabschnitt über den
Kanal 150 signalisiert wird, so dass der vierte Datenabschnitt
zum Beispiel in den Flash-Speicherseiten der Flash-Vorrichtung 113 gespeichert
werden kann, die mit 24 und 28 gekennzeichnet
sind.
-
Des
Weiteren, d. h., sobald der Transfer des dritten und des vierten
Datenabschnitts über
die Kanäle 150 und 151 jeweils
zu den Seitenpufferspeichern 162 und 163 abgeschlossen
ist, können
weitere Datenabschnitte der Datei zu Flash-Vorrichtungen, die mit
einem Kanal gekoppelt sind, zum Speichern der Datenabschnitte in
den jeweiligen Flash-Vorrichtungen signalisiert werden.
-
Auf
diese Weise kann jeder Kanal einen Datenabschnitt zu einer damit
gekoppelten Flash-Vorrichtung signalisieren, während zur gleichen Zeit eine andere
der gekoppelten Flash-Vorrichtungen mit dem Programmieren von Daten
beschäftigt
ist, die vorher zu der anderen gekoppelten Flash-Vorrichtung signalisiert
worden sind. So kann jeder Kanal dazu verwendet werden, nahtlos
Datenabschnitte, die gespeichert werden sollen, zu damit gekoppelten Flash-Vorrichtungen zu
signalisieren, wodurch die Signalisierungskapazität des Kanals
voll ausgeschöpft wird.
-
Als
ein Ergebnis der oben beschriebenen Prozedur wird die Datei, die
in dem Flash-Laufwerk gespeichert werden soll, in Datenabschnitte
zerlegt, die die Größe eines
Seitenpufferspeichers in einer Flash-Vorrichtung aufweisen. Die
Datenabschnitte können
quer durch eine Vielzahl von Speicherverwaltungsblöcken verteilt
werden, die sich in einer Vielzahl von Flash-Vorrichtungen befinden,
die mit einer Vielzahl von Kanälen
gekoppelt sein können.
Die Speicherblöcke,
die die Flash-Speicherseiten umfassen, die die Datenabschnitte der
Datei speichern, können
auch irgendwo in einer Flash-Vorrichtung angeordnet sein, d. h.,
sie können,
müssen
aber nicht notwendigerweise in einer sequentiellen Reihenfolge innerhalb
einer Flash-Vorrichtung vorliegen.
-
Die
Verwendung einer Vielzahl von Kanälen für die Signalisierung der Abschnitte
einer einzigen Datei zur gleichen Zeit und wobei die Datenabschnitte
quer durch die Kanäle
und quer durch eine Vielzahl von Flash-Vorrichtungen verteilt werden,
die mit einem Kanal gekoppelt sind, erlaubt die Speicherung der
Datenabschnitte derart, dass sie in der korrekten Reihenfolge unter
Verwendung der Vielzahl von Kanälen
gelesen werden können.
-
2 zeigt
ein schematisches Zeitdiagramm 200 der Operation des Kanals 150 und
der Flash-Vorrichtungen 110, 112, 114 und 116,
die mit dem Kanal gekoppelt sind, wobei die Operation des Kanals 150 repräsentativ
für jeden
der Kanäle
in dem Flash-Laufwerk ist. Es wird angenommen, dass die Flash-Vorrichtung 110 bei
t = 0 bereit für
das Empfangen von Daten in dem Seitenpufferspeicher 160 ist.
Beginnend bei t = 0 wird der erste Datenabschnitt zu der Flash-Vorrichtung 110 signalisiert.
Daten in der Größe von zwei
Seiten werden somit in dem Seitenpufferspeicher (Seitenpuffer) 160 zwischengespeichert, wobei
die Operation 210 des Schreibens der Daten in den Seitenpufferspeicher 160 100 μs dauert,
so dass in dem Zeitintervall von t = 0 bis t = 100 μs der Kanal mit
der Signalisierung eines ersten Datenabschnitts zu dem Seitenpufferspeicher 160 beschäftigt ist,
wie dies durch 210 angegeben ist. Nach der Beendigung, d.
h., bei t = 100 μs,
wird die Flash-Vorrichtung 110 so angesteuert, dass sie
das Programmieren 220 startet, d. h., das Kopieren einer
ersten Menge der Daten aus dem Seitenpufferspeicher 160 in
eine einzige Flash-Speicherseite
in der Ebene 140 des Speicherverwaltungsblocks 130 und
zur gleichen Zeit einer zweiten Menge der Daten in eine Seite in
der Ebene 141, wodurch die Flash-Speicherseiten in den
beiden Ebenen des Blocks 130 zur gleichen Zeit programmiert
werden. Der Prozess des Programmierens der Seiten, d. h., des Kopierens
der Inhalte aus dem Seitenpufferspeicher 160 in die Flash-Speicherseiten, dauert
200 μs,
so dass das Programmieren 220 der Inhalte des Seitenpufferspeichers 160 von
t = 100 μs bis
t = 300 μs
dauert.
-
Zur
gleichen Zeit, während
die Inhalte des Seitenpufferspeichers 160 in die Flash-Speicherseiten
programmiert werden, d. h., beginnend bei t = 100 μs, signalisiert
der Kanal 150 in einer Schreiboperation 211 den
dritten Datenabschnitt zu dem Seitenpufferspeicher 162 der
Flash-Vorrichtung 112, was von t = 100 μs bis 1 = 200 μs dauert.
Nach Beendigung dieser Signalisierungsoperation wird die Flash-Vorrichtung 112 so
angesteuert, dass sie damit beginnt, die Inhalte des Puffers 162 in
eine Flash-Seite in einer ersten Ebene zu kopieren und zur gleichen
Zeit in eine Flash-Seite in der zweiten Ebene in der Flash-Vorrichtung 112 zu
kopieren, was von t = 200 μs
bis t = 400 μs
dauern wird.
-
Bei
t = 200 startet der Kanal 150 eine Schreiboperation 212 für das Schreiben
eines fünften
Datenabschnitts in den Seitenpufferspeicher 164 in der Flash-Vorrichtung 114,
wobei die Operation 212 bis t = 300 μs andauert. Ähnlich wie dies oben beschrieben
worden ist, wird die Flash-Vorrichtung 114 so gesteuert,
dass sie die Kopieroperation 222 für das Kopieren der Inhalte
des Puffers 164 in zwei Flash-Speicherseiten nach dem Beenden
der Schreiboperation 212, d. h., bei t = 300 μs startet.
-
Bei
t = 300 μs
ist auch die Kopieroperation 220 beendet. Da die Inhalte
des Seitenpufferspeichers 160 in Flash-Speicherseiten programmiert
worden sind, kann er gelöscht
oder mit anderen Daten überschrieben
werden. Das heißt,
der Seitenpufferspeicher 160 ist bereit für das Empfangen
eines anderen Datenabschnitts. Folglich kann der Kanal 150 eine
Schreiboperation 213 starten, um einen siebten Datenabschnitt
in den Seitenpufferspeicher 160 in der Flash-Vorrichtung 110 zu
schreiben. Sobald die Schreiboperation 213 zu Ende geht,
wird die Flash-Vorrichtung 110 so gesteuert, dass sie eine Datenkopieroperation 223 für das Programmieren des
siebten Datenabschnitts aus dem Seitenpufferspeicher 160 in
die Flash-Speicherseiten in der Flash-Vorrichtung 110 startet.
-
Auf
diese Weise können
Daten, die in einem Flash-Speicher gespeichert werden sollen, zu
einem Seitenpufferspeicher in einer Flash-Vorrichtung signalisiert
werden, sobald dessen Inhalte in Flash-Speicherseiten innerhalb
dieser Flash-Vorrichtung programmiert worden sind. Folglich erlauben
es die Seitenpufferspeicher in den drei Flash-Vorrichtungen, die
mit dem Kanal 150 gekoppelt sind, dass Daten nahtlos über einen
einzigen Kanal signalisiert werden können. Der Kanal 150 signalisiert
somit Daten zu den damit gekoppelten Flash-Vorrichtungen nahtlos,
so dass der Kanal Daten übertragen
kann, ohne dass darauf gewartet werden muss, dass Flash-Vorrichtung
für das
Empfangen von Daten verfügbar
werden. Das heißt,
auf diese Weise ist der begrenzende Faktor der Datenübertragung,
die einen einzigen Kanal verwendet, die Geschwindigkeit des Schreibens
in einen Seitenpufferspeicher, aber nicht die Geschwindigkeit des
Programmierens irgendwelcher Daten in eine Seite eines Flash-Speichers.
-
Im
Allgemeinen kann ein Kanal frei irgendeine seiner damit gekoppelten
Flash-Vorrichtungen benutzen, die gleichzeitig bereit sind, dass
Daten zu ihnen signalisiert werden. Das heißt, der Kanal kann bewusst
zu irgendeiner Flash-Vorrichtung springen, die bereit ist, Daten
in ihrem Seitenpufferspeicher zu empfangen. So ist zum Beispiel
bei t = 400 μs
die Kopieroperation 221 beendet, so dass ein anderer Datenabschnitt
zu dem Seitenpufferspeicher 162 in der Flash-Vorrichtung 112 oder
zu dem Seitenpufferspeicher 164 in der Flash-Vorrichtung 114 signalisiert werden
kann. Im vorliegenden Fall wird der Datenabschnitt in einer Schreiboperation 214 zu
dem Seitenpufferspeicher 166 signalisiert, um die Daten
gleichmäßig quer
durch alle gekoppelten Flash-Vorrichtungen zu verteilen, wodurch
die Verwendung jeder Flash-Vorrichtung und jeder Flash-Seite gleichmäßig verteilt
wird.
-
In
dem vorliegenden Ausführungsbeispiel sind
mindestens drei Flash-Vorrichtungen
mit einem einzigen Kanal gekoppelt, so dass es wenigstens einen
Seitenpufferspeicher in einer Flash-Vorrichtung gibt, der für das Empfangen
eines Datenabschnitts von dem Kanal bereit ist. Es ist offensichtlich,
dass in Abhängigkeit
von der Zeit, die für
das Programmieren der Inhalte des Seitenpufferspeichers in die Flash-Speicherseiten
benötigt
wird, weitere Flash-Vorrichtungen
mit einem Kanal gekoppelt werden müssen, um für eine nahtlose Operation des
Kanals zu sorgen.
-
Die
Gesamtgeschwindigkeit einer Speichervorrichtung, die mehr als einen
Kanal umfasst, wobei jeder Kanal unabhängig betrieben werden kann, kann
berechnet werden, indem die Anzahl an Kanälen mit jeder spezifischen
Kanalgeschwindigkeit multipliziert wird. Die Gesamtgeschwindigkeit
eines Flash-Laufwerks kann somit erhöht werden, indem eine Vielzahl
von unabhängigen
Kanälen
verwendet wird, wobei jeder Kanal mit einer Vielzahl von Flash-Vorrichtungen
gekoppelt ist.
-
3 zeigt
schematisch ein Flash-Laufwerk 300, das mit einem Host 310 gekoppelt
ist, wobei der Host jedes digitale Verarbeitungssystem sein kann, das
das Flash-Laufwerk für
die Speicherung von Daten verwendet.
-
Das
Flash-Laufwerk ist über
den Bus 320 mit dem Host gekoppelt und umfasst einen Cache-Speicher 330,
einen Flash-Speicher 340, einen Tag-Speicher 350 und eine Speicherverwaltungseinheit 360, die
den Betrieb der Teilschaltungen steuert. Es sei angemerkt, dass,
obwohl der Cache-Speicher 330, der Flash-Speicher 340,
der Tag-Speicher 350 und die Speicherverwaltungseinheit 360 (MMU)
als separate Blöcke
gezeichnet sind, diese auch auf einem einzigen Chip integriert sein
können,
so dass diese Funktionsblöcke
Teil eines integrierten Schaltkreises (IC; Integrated Circuit) sind.
Alternativ dazu kann jeder dieser Funktionsblöcke auf einem selbständigen IC
implementiert werden oder kann mit anderen Funktionsblöcken gruppiert
werden. In einem Ausführungsbeispiel
können
alle Funktionsgruppen, die einen Controller für einen Flash-Speicher bilden,
in einem einzigen IC gruppiert und implementiert werden, wodurch
ein Controller-IC zur Steuerung eines Flash-Speicher-IC gebildet
wird.
-
Der
Cache-Speicher 330 ist von irgendeiner schnellen Speicherart,
zum Beispiel ein flüchtiger SRAM
oder DRAM, um schnelle Operationen zu erlauben. Der Cache 330 kann
1 k (1 k = 1024) Rahmen (Frames) 331 aufweisen, wobei jeder
Rahmen auf 8 Seiten 332 organisiert ist und jede Seite 332 eine
Speicherkapazität
von 4 kB aufweist, so dass jede Seite 332 in dem Cache-Speicher die Inhalte von
zwei Flash-Speicherseiten speichern kann, d. h., die Speichergröße einer
Cache Line entspricht der Speichergröße von zwei Flash-Speicherseiten.
-
In
einem Ausführungsbeispiel
ist der Cache-Speicher 330 als N-fach satzassoziativ organisiert,
d. h., in einem bestimmten Beispiel ist der Cache-Speicher ein 8-fach
satzassoziativer Speicher. Dementsprechend können die Inhalte einer Seite
des Flash-Speichers 340 als eine Kopie in eine von acht zulässigen Speicherplätzen innerhalb
des Cache-Speichers 330 gecachet werden. Es sei angemerkt,
dass in anderen Ausführungsbeispielen
der Cache-Speicher 330 anders organisiert sein kann, zum
Beispiel als 4-fach satzassoziativ.
-
Auch
der Tag-Speicher 350 ist von irgendeiner schnellen Speicherart,
zum Beispiel ein flüchtiger SRAM,
um Operationen so schnell wie Operationen zu dem Cache-Speicher 330 zu
erlauben. Vorzugsweise ist der Tag-Speicher 350 von der
gleichen Speicherart wie der Cache-Speicher 330. Die Speichergröße des Tag-Speichers 350 ist
so ausgelegt, dass die Tags für
die Seiten, die in dem Cache-Speicher 330 gespeichert werden,
in dem Tag-Speicher 350 gespeichert werden können. So
ist für
jede Seite von Daten ein Tag in dem Tag-Speicher 350 gespeichert,
wobei ein Tag einer Datenseite ein Adressen-Tag und gültige Informationen, ,verschmutzte' (veränderte)
Informationen (Dirty Information) und Altersinformationen und/oder
ein Tag umfassen kann, das die Relevanz der Datenseite anzeigt.
Der Tag-Speicher 350 kann somit eine Speicherkapazität für die 1
k Cache-Rahmen des Cache-Speichers 330 bereitstellen, d.
h., 1 k Tag-Einträge,
die jeweils eine Speicherkapazität
für 8 Tags
besitzen. Der Tag-Speicher 350 ist über das Bussystem 370 mit
dem Cache-Speicher 330 gekoppelt
und ist außerdem
mit der Speicherverwaltungseinheit 350 bezüglich Steuerinformationen
gekoppelt.
-
Der
Flash-Speicher 340 ist der Speicher für die endgültige Speicherung der Daten
und kann zum Beispiel 64 M (M = Mega = 220)
Seiten an nichtflüchtigem
Flash-Speicher umfassen, wobei jede Seite eine Speicherkapazität von 2
kB aufweist, so dass der Flash-Speicher 340 insgesamt eine
Speicherkapazität
von 128 GB aufweist. Die Flash-Speicherzellen sind so organisiert,
wie dies oben in 1 beschrieben worden ist, und
die Flash-Vorrichtungen sind operativ mit dem Flash-Speicher 330 über die Kanäle 150, 151 gekoppelt.
-
Der
Flash-Speicher 340 ist operativ mit dem Cache-Speicher 330 über den
Bus 320 gekoppelt. Der Bus 320 umfasst dementsprechend
wenigstens einen Kanal 150, der wiederum mit Flash-Vorrichtungen
gekoppelt ist, wie dies unter Bezugnahme auf 1 beschrieben
worden ist. Es sei angemerkt, dass der Bus 320 auch andere
Entitäten
für das
Koppeln mit dem Host 310 aufweisen kann, d. h., der Bus 320 kann
einen Kanal 150 für
das Koppeln des Flash-Speichers 340 mit dem Cache-Speicher 330 umfassen
und kann eine andere physische Entität für das Signalisieren von Daten
zu und von dem Host 310 umfassen.
-
Die
Interaktion zwischen dem Cache-Speicher 330, dem Tag-Speicher 350 und
dem Flash-Speicher 340 wird von einer Speicherverwaltungseinheit 360 gesteuert,
die dementsprechend die Verarbeitung von Lese- und Schreibaktionen
in dem Flash-Laufwerk steuert, wie diese von dem Host 310 angefordert
werden.
-
Zum
Lesen von Daten aus dem Flash-Laufwerk 300 signalisiert
der Host 310 eine entsprechende Leseanforderung an das
Flash-Laufwerk 300 über den
Bus 320. Dementsprechend liest das Laufwerk die angeforderten
Daten und leitet die angeforderten Daten über den Bus 320 an
den Host weiter. Wenn die angeforderten Daten in dem Cache-Speicher 330 zwischengespeichert
sind, dann wird auf den Cache-Speicher zugegriffen und die angeforderten
Daten werden aus dem Cache-Speicher 330 ausgelesen und über den
Bus 320 dem Host signalisiert. Das heißt, für jede Leseanforderung, die
ausgehend von dem Host 310 empfangen wird, prüft das Flash-Laufwerk,
ob die angeforderten Daten in dem Cache-Speicher 330 zwischengespeichert
sind, d. h., als eine Kopie gespeichert sind. Wenn die angeforderten
Daten in dem Cache-Speicher nicht gefunden werden können, dann
werden die Daten aus dem Flash-Speicher 340 ausgelesen
und über
den Bus 320 dem anfordernden Host weitergeleitet. Die Daten,
die in einer Leseanforderung angefordert werden, dürfen nicht
in dem Cache-Speicher 340 zwischengespeichert werden, da
es unwahrscheinlich sein kann, dass die gleichen Daten bald erneut
angefordert werden.
-
Wenn
Daten in dem Flash-Laufwerk gespeichert werden, dann überträgt der Host
die Daten über den
Bus 320. Wenn die Daten, die in dem Flash-Laufwerk gespeichert
werden sollen, eine große
Datei darstellen, d. h., wenn die Schreibaktion ein sequentieller
Schreibvorgang ist, und sich das Flash-Laufwerk bewusst ist, dass die Aktion
ein sequentieller Schreibvorgang ist, dann können die Daten direkt in dem
Flash-Speicher 340 gespeichert werden, ohne dass sie in
dem Cache-Speicher zwischengespeichert werden. Aber es kann Situationen
geben, in denen es für
das Flash-Laufwerk keinen Hinweis darauf gibt, ob die Schreibaktion
ein sequentieller Schreibvorgang einer großen Datei ist oder nicht.
-
Da
die meisten der Schreiboperationen Direktzugriffs-Schreiboperationen
sind, d. h., Schreiboperationen, bei denen Daten, die geschrieben
werden sollen, nicht sequentiell organisiert sind, sondern willkürlich verteilt
sind, werden die Daten zwischengespeichert, d. h., in dem Cache-Speicher 330 gespeichert.
Wann auch immer also eine Seite von Daten wieder aktualisiert wird,
d. h., wenn auf diese in einer anderen Schreibaktion zugegriffen
wird, wird die Seite in dem Cache-Speicher 330 aktualisiert, ohne
dass die entsprechenden Daten in dem Flash-Speicher 340 sofort
aktualisiert werden. Aber da die Größe des Cache-Speichers 330 es
nicht erlaubt, eine Kopie jeder Seite des Flash-Speichers 340 zu halten, sondern
nur einige der Seiten, werden nur die plausibelsten Seiten als eine
Kopie in dem Cache-Speicher gehalten. Folglich umfasst der Tag-Speicher 350 einen
Eintrag, der reflektiert, welche Daten des Flash-Speichers 340 tatsächlich als Kopie
in dem Cache 330 gespeichert werden.
-
Wenn
man berücksichtigt,
dass mit einer hohen Wahrscheinlichkeit auf diejenigen Seiten, auf
die zuletzt zugegriffen worden ist, in der nahen Zukunft wieder
zugegriffen werden wird, dann dürfen
nur die zu allerletzt benutzten (LRU; last recently used) Seiten
in den Cache-Speicher gecached werden. Dies kann durch die Implementierung
des LRU Paging-Algorithmus erzielt werden. In einem Ausführungsbeispiel
kann einer Seite eine fortlaufende Nummer zugewiesen werden und
in dem entsprechenden Tag der im Cache-Speicher zwischengespeicherten
Seite bewahrt werden, so dass kleinere Nummern ältere Seiten anzeigen. Folglich
werden dann, wenn einem Rahmen freie Speicherseiten ausgehen, d.
h., zum Beispiel 6 der 8 Seiten eines Rahmens sind von Rahmen belegt, ältere Seiten,
d. h., diejenigen, die kleinere Nummern aufweisen, zurück in den
Flash-Speicher 340 kopiert werden, wodurch Seiten in dem
Cache-Speicher 330 freigegeben werden. Seiten, auf die
häufig
zugegriffen wird und die häufig
im Cache-Speicher zwischengespeichert werden, und denen eine neue
fortlaufende Nummer zugewiesen wird, um ihre Relevanz anzuzeigen,
werden verhältnismäßig selten
in den Flash-Speicher 340 zurückkopiert.
-
Ein
Effekt des Zwischenspeicherns im Cache von häufig aktualisierten Seiten
ist die Erhöhung
des Durchsatzes von Schreiboperationen, da die Seiten in dem Cache-Speicher
schneller aktualisiert werden können.
Folglich kann der Durchsatz insbesondere für Direktzugriffs-Schreiboperationen
erhöht
werden, wodurch die Gesamtleistung des Flash-Laufwerks 300 gesteigert
wird.
-
Auch
die Anzahl an Schreiboperationen in dem Flash-Speicher 340 wird
reduziert, da Seiten, auf die häufig
zugegriffen wird, in dem Cache-Speicher mehr als einmal aktualisiert
werden können,
bevor sie zurück
in den Flash-Speicher kopiert werden. Folglich wird die gesamte
Anzahl an Schreiboperationen und insbesondere an Kopier- und Mischoperationen
in dem Flash-Speicher
reduziert. Jede Flash-Speicherzelle wird weniger häufig geschrieben,
wodurch ihre Lebensdauer und die Gesamtleistung des Laufwerks in
Folge von weniger Kopier- und Mischoperationen verbessert wird.
-
Außerdem ist
das Flash-Laufwerk 300 in einem Ausführungsbeispiel so konfiguriert
und ausgelegt, dass es die Seiten, die geschrieben werden sollen,
quer durch alle damit gekoppelten Flash-Vorrichtungen einheitlich
verteilt. Auch die Flash-Vorrichtungen können so konfiguriert und ausgelegt
sein, dass sie Schreiboperationen quer durch die Flash-Speicherseiten
innerhalb einer Flash-Vorrichtung einheitlich verteilen, so dass
alle Flash-Speicherzellen in einer Flash-Vorrichtung gleichmäßig oft
verwendet werden. Auf diese Weise wird die Abnutzung gleichmäßig quer
durch die Speicherzellen verteilt, wodurch die Gesamtlebensdauer
der Flash-Vorrichtung gesteigert wird.
-
Obwohl
die vorliegende Erfindung unter Bezugnahme auf bestimmte Ausführungsbeispiele
beschrieben worden ist, wird es den Fachleuten auf diesem Gebiet
klar sein, dass verschiedene Änderungen
durchgeführt
werden können
und Äquivalente
ersetzt werden können,
ohne dass von dem Schutzumfang der Erfindung abgewichen wird. Außerdem können viele
Modifikationen durchgeführt
werden, um eine Anpassung einer bestimmten Situation oder eines
bestimmte Materials an die Lehren der Erfindung vorzunehmen, ohne dass
von deren Schutzumfang abgewichen wird. Deshalb soll die Erfindung
nicht auf die speziellen, offenbarten Ausführungsbeispiele beschränkt sein.