-
Hintergrund
-
Um Daten zu verwalten, die in einem Flash-Speicher gespeichert sind, wird eine Tabelle verwendet, die als eine Abbildung logischer Adressen auf physikalische Adressen bekannt ist, um logische Blockadressen (LBAs) auf physikalische Adressen im Speicher abzubilden. Da sich die Speicherkapazität erhöht und die Leseauflösung feiner wird, können die Abbildungen logischer Adressen auf physikalische Adressen größer werden. In einigen Fällen bleibt die Auflösung der Adressen dieselbe (z. B. 4 KB), sogar wenn sich die Speicherkapazität erhöht. In einigen Fällen kann es möglich sein, den Speicher mit einer feineren Auflösung (z. B. 1 KB) zu lesen. In einigen Fällen erhöht sich die Speicherkapazität und eine feinere Auflösung wird implementiert. In all diesen Fällen nimmt die Größe der Abbildung logischer Adressen auf physikalische Adressen mehr und mehr zu.
-
Wenn die Größe der Abbildung logischer Adressen auf physikalische Adressen zunimmt, kann es undurchführbar werden, die Abbildung logischer Adressen auf physikalische Adressen im RAM zu speichern. Deshalb werden große Abschnitte der Abbildung logischer Adressen auf physikalische Adressen in dem Flash-Speicher gespeichert, und die relevanten Abschnitte der Tabelle werden vom Flash in den RAM übertragen, wie es von der Flash-Steuereinheit als Teil der Flash-Verwaltung angefordert wird. Das Lesen vom Flash-Speicher ist zeitaufwändig. Deshalb ist es wünschenswert, die Abbildungen logischer Adressen auf physikalische Adressen derart zu definieren, dass die Verzögerung im Lokalisieren der mit einer gegebenen logischen Adresse verbundenen physikalischen Adresse minimiert wird.
-
Einige Speichermodule verwenden eine Kompressionsmaschine, um die Daten zu komprimieren, bevor sie in dem Speicher gespeichert werden. Wenn die Komprimierung zwischen dem logischen Raum und dem physikalischen Raum implementiert ist (d. h. die LBAs sind nicht komprimiert, aber die in dem Flash gespeicherten Daten sind komprimiert), werden mehrere LBAs in einem Speicherbereich gespeichert. Größere oder zusätzliche Abbildungen logischer Adressen auf physikalische Adressen können verwendet werden, um diese Situation anzugehen. Jedoch kann das Verwenden größerer oder zusätzlicher Abbildungen logischer Adressen auf physikalische Adressen dem System Komplexität und Verzögerung hinzufügen.
-
Überblick
-
Die Ausführungsformen der vorliegenden Erfindung werden in den Ansprüchen definiert, und nichts in diesem Abschnitt sollte als eine Einschränkung dieser Ansprüche angenommen werden.
-
Zur Einführung beziehen sich die nachfolgenden Ausführungsformen auf ein Speichermodul und auf ein Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen. In einer Ausführungsform ist ein Speichermodul vorgesehen, dass einen Speicher enthält, der mehrere Wortzeilen bzw. Wordlines und eine Steuereinheit aufweist. Die Steuereinheit ist konfiguriert, eine Abbildung logischer Adressen auf physikalische Adressen zu verwenden, um eine logische Adresse in eine physikalische Adresse einer Wortzeile umzusetzen. Mehrere logische Adressen in der Tabelle zeigen auf eine einzelne Wortzeile, wobei die einzelne Wortzeile sowohl Daten enthält, die mit den mehreren logischen Adressen assoziiert bzw. verbunden sind, als auch Informationen darüber, wo jede der mehreren logischen Adressen in der einzelnen Wortzeile zu finden ist. Das Speichern der Informationen darüber, wo jede der mehreren logischen Adressen in der Wortzeile zu finden ist, in der Wortzeile selbst vermeidet die Verzögerung und die Komplexität des Verwendens einer größeren Tabelle oder mehrerer Abbildungen logischer Adressen auf physikalische Adressen.
-
Andere Ausführungsformen sind möglich, und jede der Ausführungsformen kann alleine oder in Kombination miteinander verwendet werden. Entsprechend werden jetzt diverse Ausführungsformen mit Bezug auf die beigefügten Zeichnungen beschrieben.
-
Kurzbeschreibung der Zeichnungen
-
1 ist ein Blockdiagramm eines beispielhaften Speichermoduls einer Ausführungsform.
-
2A ist ein Blockdiagramm einer elektronischen Vorrichtung einer Ausführungsform, wobei das beispielhafte Speichermodul aus 1 in der elektronischen Vorrichtung eingebaut ist.
-
2B ist ein Blockdiagramm des beispielhaften Speichermoduls aus 1, das entfernbar mit einem Host verbunden ist, wobei das Speichermodul und der Host trennbare, entfernbare Vorrichtungen sind.
-
3 ist eine Veranschaulichung einer Abbildung logischer Adressen auf physikalische Adressen, in der jede logische Blockadresse in der Tabelle auf einen eindeutigen Speicherblock im Speicher zeigt.
-
4 ist eine Veranschaulichung einer Abbildung logischer Adressen auf physikalische Adressen, in der Versatz- und Längenfelder spezifiziert sind.
-
5 ist eine Veranschaulichung einer Abbildung logischer Adressen auf physikalische Adressen einer Ausführungsform, in der mehrere logische Blockadressen in der Tabelle auf denselben physikalischen Block im Speicher zeigen.
-
6 ist eine Veranschaulichung einer Wortzeile einer Ausführungsform.
-
7 ist eine Veranschaulichung einer Abbildung logischer Adressen auf physikalische Adressen, in der jede logische Blockadresse in der Tabelle auf eine eindeutige physikalische Seite im Speicher und auf einen zusätzlichen Versatz innerhalb der Seite zeigt.
-
8 ist ein Ablaufplan, der Leistungsvorteile einer Ausführungsform veranschaulicht.
-
Genaue Beschreibung der aktuell bevorzugten Ausführungsformen
-
Wie oben erwähnt kann das Verwenden großer oder mehrerer Abbildungen logischer Adressen auf physikalische Adressen einem Speichermodul Komplexität und Verzögerung hinzufügen. Dies ist z. B. der Fall, wenn eine Kompressionsmaschine verwendet wird, um die Daten zu komprimieren, bevor sie im Speicher gespeichert werden, und wenn die Komprimierung zwischen dem logischen Raum und dem physikalische Raum implementiert ist. In dieser Situation werden mehrere logische Blockadressen (LBAs) in einer gegebenen Wortzeile gespeichert. Die folgenden Ausführungsformen können verwendet werden, um in einer solchen Situation logische auf physikalische Adressen abzubilden, ohne größere oder zusätzliche Abbildungen logischer Adressen auf physikalische Adressen zu verwenden. Bevor auf diese und auf weitere Ausführungsformen eingegangen wird, sehen die folgenden Absätze eine Diskussion eines beispielhaften Speichermoduls vor, das mit diesen Ausführungsformen verwendet werden kann. Selbstverständlich sind diese nur Beispiele, und andere passende Typen von Speichermodulen können verwendet werden.
-
Wie in 1 veranschaulicht ist, enthält ein Speichermodul 100 einer Ausführungsform eine Steuereinheit 110 und einen nichtflüchtigen Speicher 120. Die Steuereinheit 110 enthält eine Speicherschnittstelle 111, um mit dem nichtflüchtigen Speicher 120 in Verbindung zu stehen, und eine Host-Schnittstelle 112, um das Speichermodul 100 funktionstechnisch mit einer Host-Steuereinheit in Kommunikation zu bringen. Der Ausdruck "funktionstechnisch in Kommunikation mit" könnte, wie er hier verwendet wird, bedeuten, direkt in Kommunikation zu stehen oder indirekt über eine oder mehrere Komponenten, die hier gezeigt oder beschrieben sein können oder nicht, in Kommunikation zu stehen.
-
Wie in 2A gezeigt ist, kann das Speichermodul 100 in einem Host 210 eingebaut sein, der eine Host-Steuereinheit 220 aufweist. Das heißt, in dem Host 210 sind die Host-Steuereinheit 220 und das Speichermodul 100 derart ausgeführt, dass die Host-Steuereinheit 220 mit dem eingebauten Speichermodul 100 in Verbindung steht, um seine Vorgänge zu verwalten. Das Speichermodul 100 kann z. B. als ein eingebautes iNANDTMeSD/eMMC-Flash-Laufwerk der SanDisk Corporation ausgebildet sein. Die Host-Steuereinheit 220 kann z. B. unter Verwendung einer eMMC-Host-Schnittstelle oder einer UFS-Schnittstelle mit dem eingebauten Speichermodul 100 in Verbindung stehen. Der Host 210 kann in jeder Form ausgebildet sein, wie etwa, ohne darauf eingeschränkt zu sein, als ein Halbleiterlaufwerk (SSD), eine Hybridspeichervorrichtung (die sowohl ein Festplattenlaufwerk als auch ein Halbleiterlaufwerk aufweist), ein Speicher-Caching-System, ein Mobiltelefon, ein Tablet-Computer, eine Abspielvorrichtung für digitale Medien, eine Spielevorrichtung, ein digitaler Assistent (PDA), ein mobiler (z. B. Notebook, Laptop) Arbeitsplatzrechner (PC) oder eine Buchlesevorrichtung. Wie in 2A gezeigt ist, kann der Host 210 optional weitere Funktionalitätsmodule 230 enthalten. Wenn der Host 210 z. B. ein mobiles Telefon ist, können die weiteren Funktionalitätsmodule 230 Hardware und/oder Softwarekomponenten zum Durchführen und zum Platzieren von Telefonanrufen enthalten. Wenn der Host 210 als ein weiteres Beispiel Netzverbindungsfähigkeiten aufweist, können die weiteren Funktionalitätsmodule 230 eine Netzschnittstelle enthalten. Selbstverständlich sind dies lediglich einige Beispiele, und andere Implementierungen können verwendet werden. Außerdem kann der Host andere Komponenten enthalten (z. B. einen Audioausgang, Eingangs-/Ausgangsanschlüsse, etc.), die in 2A nicht gezeigt sind, um die Zeichnung zu vereinfachen.
-
Wie in 2B gezeigt ist, kann das Speichermodul 100 physikalische und elektrische Anschlüsse aufweisen, die ermöglichen, dass das Speichermodul 100 über zusammenpassende Anschlüsse entfernbar an einen Host 240 (der eine Host-Steuereinheit 245 aufweist) angeschlossen wird, anstatt eine in einem Host eingebaute Vorrichtung zu sein. Auf diese Weise ist das Speichermodul 100 eine von dem Host 240 separate Vorrichtung (und ist nicht dort eingebaut). In diesem Beispiel kann das Speichermodul 100 eine tragbare, entfernbare Speichervorrichtung sein, wie etwa eine Secure-Digital-(SD)-Speicherkarte, eine MikroSD-Speicherkarte, eine Kompakt-Flash-(CF)-Speicherkarte oder eine Universal-Serial-Bus-(USB)-Vorrichtung (mit einer USB-Schnittstelle zu dem Host), wobei der Host 240 eine separate Vorrichtung, wie etwa z. B. ein Mobiltelefon, ein Tablet-Computer, eine Abspielvorrichtung für digitale Medien, eine Spielevorrichtung, ein digitaler Assistent (PDA), ein mobiler (z. B. Notebook, Laptop) Arbeitsplatzrechner (PC) oder eine Buchlesevorrichtung ist.
-
In den 2A und 2B steht das Speichermodul 100 über die in 1 gezeigte Host-Schnittstelle 112 mit einer Host-Steuereinheit 220 oder mit dem Host 240 in Kommunikation. Die Host-Schnittstelle 112 kann in jeder passenden Form ausgebildet sein, wie etwa, ohne darauf eingeschränkt zu sein, als eine eMMC-Host-Schnittstelle, eine UFS-Schnittstelle und eine USB-Schnittstelle. Die Host-Schnittstelle 110 in dem Speichermodul 110 überträgt Speicherverwaltungsbefehle von der Host-Steuereinheit 220 (2A) oder von dem Host 240 (2B) an die Steuereinheit 110 und überträgt außerdem die Speicherantworten von der Steuereinheit 110 an die Host-Steuereinheit 220 (2A) oder an den Host 240 (2B). Außerdem sei erwähnt, dass einige oder alle Funktionen, die hier als von der Steuereinheit 110 in dem Speichermodul 100 durchgeführt beschrieben werden, stattdessen von der Host-Steuereinheit 220 durchgeführt werden können, wenn das Speichermodul 110 in dem Host 210 eingebaut ist.
-
Zurück zu 1, die Steuereinheit 110 enthält eine zentrale Verarbeitungseinheit (CPU) 113, eine optionale Hardwarecodierungsmaschine 114, die funktionstechnisch Codierungs- und/oder Decodierungsvorgänge bereitstellt, einen Lesezugriffsspeicher (RAM) 215, einen Festwertspeicher (ROM) 116, der Firmware für die grundlegenden Vorgänge des Speichermoduls 100 speichern kann, und einen nichtflüchtigen Speicher (NVM) 117, der einen vorrichtungsspezifischen Schlüssel speichern kann, der für Codierungs-/Decodierungsvorgänge verwendet wird, wenn er verwendet wird. Die Steuereinheit 110 kann auf jede passende Art implementiert werden. Zum Beispiel kann die Steuereinheit 110 in Form eines Mikroprozessors oder Prozessors und eines computerlesbaren Mediums ausgebildet sein, das einen computerlesbaren Programmcode (z. B. Software oder Firmware) speichert, der von dem (Mikro)Prozessor ausgeführt werden kann, in Form von logischen Gates, Schaltern, in Form einer applikationsspezifischen integrierten Schaltung (ASIC), einer programmierbaren Logiksteuereinheit und einer eingebauten Mikrosteuereinheit, zum Beispiel. Passende Steuereinheiten können von SanDisk oder von anderen Händlern bezogen werden. Außerdem können einige der Komponenten, die als in der Steuereinheit 110 eingebaut gezeigt sind, auch außerhalb der Steuereinheit 110 gespeichert werden, und andere Komponenten können verwendet werden. Zum Beispiel kann das RAM 115 (oder eine zusätzliche RAM-Einheit) außerhalb des Steuereinheitschips angeordnet sein und als Seitenpuffer für die Daten, die von dem Speicher 120 gelesen werden und/oder auf den Speicher 120 geschrieben werden sollen, verwendet werden.
-
Der nichtflüchtige Speicher 120 kann ebenfalls in jeder passenden Form ausgebildet sein. Zum Beispiel ist der nichtflüchtige Speicher 120 in einer Ausführungsform in der Form eines Halbleiterspeichers (z. B. Flash-Speichers) ausgebildet und kann einmal programmierbar sein, wenige Male programmierbar sein oder viele Male programmierbar sein. Der nichtflüchtige Speicher 120 kann ebenfalls Einfachstufenzellen-(SLC)-, Mehrfachstufenzellen-(MLC)-, Dreifachstufenzellen-(TC)- oder andere Speichertechnologien verwenden, die heute bekannt sind oder später entwickelt werden.
-
Das Speichermodul 100 aus 1 kann in Ausführungsformen zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen verwendet werden, in denen eine Wortzeile die internen Adressen der diversen logischen Adressen in der Wortzeile (d. h. die Informationen darüber, wo jede der mehreren logischen Adressen in der Wortzeile zu finden ist) speichert. Wie oben erwähnt wird eine Tabelle (oder eine Gruppe von Tabellen), die als die Abbildung logischer Adressen auf physikalische Adressen bekannt ist, gepflegt, um die in einem Flash-Speicher gespeicherten Daten zu verwalten (die Ausdrücke "Abbildung" und "Tabelle" werden hier austauschbar verwendet). Die Tabelle(n) enthält (enthalten) eine Abbildung der logischen Adressen auf die physikalischen Adressen in dem Flash-Speicher 120. (Die Tabelle kann in dem Speicher 120, in dem ROM 116 oder in dem nichtflüchtigen Speicher 117 gespeichert werden und dann in den RAM 115 gelesen werden, wenn nötig. Alternativ kann die Abbildung während der Verarbeitung erzeugt werden.) In dem Universum der logischen Adressen ist die Grundeinheit eine logische Blockadresse (LBA), während die Grundeinheit in der physikalischen Welt normalerweise eine Wortzeile (WL) ist. Zur Vereinfachung und ohne einen Aspekt der Erfindung einzuschränken ist die Größe einer LBA in der folgenden Ausführungsform gleich der Größe einer physikalischen Wortzeile. Nachdem diese vereinfachte Ausführungsform beschrieben ist, wird eine allgemeinere Ausführungsform diskutiert. Trotzdem ist das allgemeine Konzept des Speicherns der Informationen darüber, wo jede der mehreren logischen Adressen in einer Wortzeile zu finden ist, um die Verzögerung und die Komplexität des Verwendens einer größeren Abbildung logischer Adressen auf physikalische Adressen oder mehrerer Abbildungen zu vermeiden, auf beide Ausführungsformen anwendbar.
-
3 veranschaulicht eine Abbildung logischer Adressen auf physikalische Adressen. Herkömmlicherweise wird es für jede LBA einen Eintrag in der Abbildung logischer Adressen auf physikalische Adressen geben, der auf eine physikalische Adresse in dem Flash-Speicher 120 zeigt. Jedoch implementieren viele Speichersysteme eine Kompressionsmaschine, die detektiert, ob Daten komprimierbar sind, und die die Daten vor dem Speichern in dem physikalischen Speicher komprimiert. Wenn die Komprimierung zwischen dem logischen Raum und dem physikalischen Raum implementiert ist (d. h. LBAs werden nicht komprimiert, aber die in dem Flash-Speicher gespeicherten Daten werden komprimiert), wird ein Ungleichgewicht zwischen den logischen Daten und den physikalischen Daten erzeugt. In einem solchen Fall kann derselbe physikalische Speicherplatz eine viel größere Menge von LBAs speichern, und die Ausrichtung zwischen den LBAs und den Wortzeilen bricht zusammen. Eine einzelne Wortzeile kann mehrere LBAs enthalten, von denen jede nur einen Anteil der Wortzeile belegt. Diese Situation verlangt nach einem neuen Modell zum Speichern der mit den LBAs verbundenen logischen Daten in dem physikalischen Speicher und nach einer neuen Struktur für die Abbildungen logischer Adressen auf physikalische Adressen.
-
Wenn die Daten in komprimierter Form in dem Speicher gespeichert werden, kann es geschehen, dass, sogar obwohl jede der LBAs den Wert einer Wortzeile an nicht komprimierten Daten repräsentiert, eine einzelne Wortzeile mehrere LBA-Daten speichern wird. Ein Ansatz, dieses Problem zu lösen, besteht darin, zwei Abbildungen logischer Adressen auf physikalische Adressen zu verwenden. Eine primäre Tabelle wird die physikalische Adresse einer Wortzeile enthalten, in der die LBA gespeichert ist, während eine sekundäre Tabelle die relative Adresse innerhalb der Wortzeile (d. h. einen Versatz von dem Wortzeilenkopf) und die Länge (d. h. die Menge an physikalischem Speicher), die von der LBA belegt werden, enthalten wird.
-
Alternativ kann eine Abbildung logischer Adressen auf physikalische Adressen verwendet werden, wobei jedoch jede LBA mit drei Werten verbunden wird: Wortzeilenadresse, Versatzadresse und Länge. Dies ist in 4 veranschaulicht, wobei LBA1 mit den Einträgen 400, 45, 512 verbunden ist. Das bedeutet, dass LBA1 auf die Wortzeile Nummer 400 abgebildet ist, und dass ihre verbundenen Daten bei einem Versatz von 45 Bytes beginnen und 512 Bytes lang sind. LBA2 ist ein nicht komprimiertes Element; deshalb ist der Versatz auf 0 eingestellt, und die Länge ist auf 4 K eingestellt, was die volle Länge einer Wortzeile in diesem Beispiel ist. LBA3 ist auf den Anfang der Wortzeile 1000 abgebildet, obwohl sie komprimiert ist und ihre physikalische Speicherlänge nur 256 Bytes beträgt. Wenn keine Komprimierung verwendet wird und alle Einheiten dieselbe Größe aufweisen, dann sind die Größeninformationen nicht notwendig, und der Versatz wird zu einem Index des Index der logischen Einheit innerhalb der Seite.
-
Die zwei obigen Ansätze gehen das Problem in einem gewissen Umfang an, aber sie haben ihre Nachteile. Zum Beispiel ist der Speicherplatz für die Abbildungstabelle erheblich groß. Dies gilt sowohl für den Ansatz mit der primären und der sekundären Tabelle als auch für den Ansatz mit der erweiterten, einen Tabelle. Deshalb kann nur eine kleinere Menge der LBAs im RAM gespeichert werden, und größere Abschnitte der Tabelle werden in dem Flash-Speicher gespeichert. Dies wird den Umfang des Lesens von dem Flash-Speicher erhöhen, was erheblich langsamer ist als das Lesen vom RAM. Als ein Ergebnis wird sich die Systemleistung verschlechtern.
-
In einer Ausführungsform wird, anstatt eine größere Abbildung logischer Adressen auf physikalische Adressen oder mehrere Tabellen zu verwenden, um dieses Thema anzugehen, eine einzelne Abbildung logischer Adressen auf physikalische Adressen verwendet, die gewöhnlich für nicht komprimierte Daten verwendet wird, wobei die Informationen darüber, wo die Daten innerhalb der Wortzeile gespeichert sind, in der Wortzeile selbst gespeichert werden. Dies ermöglicht einen schnellen Zugriff auf die komprimierten Datenelemente, ohne die gewöhnlichen Abbildungstabellen (die für nicht komprimierte Daten verwendet werden) zu vergrößern und ohne mit einer großen Leistungseinbuße zu bezahlen.
-
In dieser Ausführungsform zeigen mehrere logische Adressen in der Tabelle auf eine einzelne Wortzeile (im Unterschied zu den gewöhnlich für nicht komprimierte Daten verwendeten Tabellen, in denen jede logische Adresse auf eine eindeutige Wortzeile zeigt). Das heißt, weil zwei oder mehr verschiedene LBAs in derselben physikalischen Wortzeile gespeichert werden können, wenn die mit ihnen verbundenen Daten komprimiert sind, wird die Adresse der Wortzeile mehrfach in der Abbildung logischer Adressen auf physikalische Adressen erscheinen (eine für jede LBA, die in derselben Wortzeile gespeichert wird). Dies ist in 5 veranschaulicht, wo LBA 1 und LBA 4 in derselben Wortzeile gespeichert sind.
-
In dieser Ausführungsform wird die interne Adresse innerhalb einer Wortzeile innerhalb der Wortzeile gespeichert. Das heißt, die Wortzeile selbst speichert die Informationen darüber, wo jede der mehreren logischen Adressen in der Wortzeile zu finden ist. Wenn zwei verschiedene LBAs auf dieselbe Wortzeile abgebildet werden (z. B. sind LBA 1 und LBA 4 beide auf dieselbe Wortzeile abgebildet), werden in der Abbildungstabelle beide auf dieselbe physikalische Adresse zeigen, die die Adresse des Anfangs der Wortzeile ist. Jedoch wird die Wortzeile zusätzlich zu den mit den verschiedenen LBAs in Beziehung stehenden Daten außerdem zusätzliche Informationen darüber speichern, wo jede der mehreren LBAs in der Wortzeile zu finden ist. Somit zeigen in 3 LBA 1 und LBA 4 auf dieselbe Wortzeile, die die Daten speichert, die mit jeder der LBAs verbunden sind. Die mit LBA 1 in Beziehung stehenden Daten sind in der ersten Hälfte der Wortzeile gespeichert, und die mit LBA 4 in Beziehung stehenden Daten sind in der zweiten Hälfte der Wortzeile gespeichert. Um die Mehrdeutigkeit bezüglich des internen Ortes aufzulösen, kann zu der Wortzeile ein Kopf H derart hinzugefügt werden, dass der Kopf die Informationen bezüglich der internen Positionen sowohl von LBA 1 als auch von LBA 4 enthält (siehe 6). In einigen Ausführungsformen liegen die in dem Speicher gespeicherten Daten in komprimierter Form vor. Wie in 6 gezeigt ist, können die Informationen darüber, wo jede der mehreren logischen Adressen zu finden ist, einen Versatz und eine Länge enthalten. Der Versatz kann relativ zum Anfang der Daten sein oder ein absoluter Versatz, der den Versatz vom Anfang der Wortzeile misst. Andere Arten von Informationen können verwendet werden, um jede der mehreren logischen Adressen zu finden, wie etwa, ohne darauf eingeschränkt zu sein, spezifische Adressen innerhalb einer Wortzeile und lediglich Versatzinformationen (wenn eine Standardlänge verwendet wird). In einigen Implementierungen können die Daten derart geschrieben werden, dass es zwischen aufeinanderfolgenden Daten keinen freien Raum gibt. In solchen Fällen kann das Ende der Dateneinheit aus dem Versatz der aufeinanderfolgenden Daten bestimmt werden, und das "Längen"-Feld kann entfallen. Alternativ kann der Versatz von der Länge abgeleitet werden, so dass die Länge gespeichert werden kann und der Versatz entfallen kann. In einer alternativen Ausführungsform werden die Informationen an einem anderen Ort als dem Kopf in der Wortzeile gespeichert.
-
Diese Implementierung fügt dem Prozess des Lesens von dem Speicher 120 nur eine geringe Verzögerung hinzu. Wenn die Daten für eine spezifische LBA zum Lesen angefordert werden, wird die Flash-Verwaltung in der Steuereinheit 110 die Abbildung logischer Adressen auf physikalische Adressen auf dieselbe Weise verwenden wie in dem konventionellen, nicht komprimierten Fall. Alle Daten in der spezifischen Wortzeile, die mit der LBA verbundenen sind, werden wie in dem nicht komprimierten Fall von dem Flash-Speicher 120 gelesen. Zum Beispiel würde, um die Daten zu lesen, ein vollständiges ECC-Codewort aus dem Flash-Speicher 120 erfasst und decodiert werden, um jegliche spezifischen LBA-Informationen zu decodieren. Es wird bevorzugt, dass der Kopf und die Daten der LBA, auf die diese zeigt, in demselben ECC-Block untergebracht sind, um ein doppeltes ECC-Decodieren zu vermeiden, was ein sehr zeitaufwändiger Vorgang ist. Somit bedeutet eine effektive Lösung, dass ein Kopf und wenige LBAs, auf die von dem Kopf gezeigt wird, alle in demselben ECC-Block (der z. B. eine Größe von 4 KB aufweisen könnte) gepackt sind. (In einer nicht komprimierten Situation kann jede LBA unabhängig in einem Codewort codiert werden, wobei die Größe jedes Codeworts dieselbe sein kann wie die Größe einer Wortzeile. In dem komprimierten Fall wird jedes Codewort den vollständigen Wortzeileninhalt enthalten, einschließlich mehrerer LBAs und der zusätzlichen Informationen darüber, wo jede der LBAs innerhalb der Wortzeile zu finden ist.) Deshalb würde die Steuereinheit 110 sogar in dem komprimierten Fall eine vollständige Wortzeile erfassen und decodieren, um eine komprimierte LBA zu lesen. Das bedeutet, dass die Vorgänge des Erfassens und des Decodierens dieselben sind für ein komprimiertes System oder für ein nicht komprimiertes System. Somit verursachen das Erfassen und das Decodieren keine Last für die Flash-Verwaltung, weil die Daten mit derselben Auflösung gelesen werden wie in dem nicht komprimierten Fall. Sobald die Daten gelesen und decodiert sind, wird es einfach sein, den Ort der angeforderten LBA innerhalb der Daten vom dem Flash-Speicher 120 zu bestimmen, und die Daten an diesem Ort werden dekomprimiert, um die LBA zu decodieren.
-
In dieser Ausführungsform sind die Speicheranforderungen der Abbildung logischer Adressen auf physikalische Adressen dieselben wie in dem nicht komprimierten Fall. Außerdem ist der gesamte Speicherplatz (einschließlich der Köpfe in den Wortzeilen) geringer als der Speicherplatz, der erforderlich ist, um eine Lösung auf der Basis von primären und sekundären Abbildungen oder einer erweiterten Tabelle mit drei Einträgen pro LBA wie oben beschrieben zu implementieren. Das ist auf die Tatsache zurückzuführen, dass gemäß dieser Ausführungsform die Kopflänge dynamisch als eine Funktion der Komprimierung eingestellt werden kann. Wenn z. B. eine bestimme Wortzeile nicht komprimierte Daten speichert, kann der Kopf für diese Wortzeile gemäß dieser Ausführungsform einfach eine Ein-Bit-Marke sein, die anzeigt, dass keine Komprimierung implementiert ist. Für eine Wortzeile, die zwei LBAs enthält, kann der Kopf die Versatze für die zwei LBAs zusammen mit einer Anzeige speichern, dass zwei LBAs auf die Wortzeile abgebildet sind (wenn die komprimierten LBAs ununterbrochen eine nach der anderen schreiben, werden nur die Versatzinformationen benötigt, und die Länge wird über die Differenz zwischen zwei benachbarten Versatzen berechnet oder für das letzte Stück über die Differenz zwischen dem Ende des 4 KB-Bereichs und dem letzten Versatz). Im Allgemeinen kann der Kopf linear zu der Anzahl der auf die Wortzeile abgebildeten LBAs sein. Im Gegensatz dazu erfordern die anderen, oben erwähnten Ansätze im schlimmsten Fall eine Speicherzuweisung, wobei jeder LBA ein Speicher für die Wortzeilennummer, für den Versatz und für die Länge zugewiesen wird. Diese Ausführungsform weist außerdem weitere Leistungsvorteile gegenüber einer Lösung auf der Basis von primären und sekundären Abbildungen auf. Dies ist in dem Ablaufplan 800 aus 8 veranschaulicht, der den Prozess des wahlfreien Lesens von Daten in einer Systemlösung auf der Basis der vorliegenden Offenbarung mit dem wahlfreien Lesen von Daten in einem System auf der Basis von primären und sekundären Abbildungen veranschaulicht. In dem Beispiel führen beide Lösungen die ersten vier Schritte 810, 820, 830, 840 in gleicher Weise aus. Namentlich lesen sie beide die primäre Abbildung der Wortzeile, die die Zieldaten enthält (Aktion 810), beide lesen die Wortzeile aus, die die Zieldaten enthält (Aktion 820), übertragen die Wortzeile an die Steuereinheit (Aktion 823) und ECC-decodieren die Wortzeile (Aktion 840). (Die letzten Aktionen des Lesens und Dekomprimierens der Daten (Aktion 880) und des Übertragens der Daten zu dem Host (Aktion 890) sind ebenfalls in den zwei Ansätzen gleich.) Der Unterschied zwischen den zwei Ansätzen liegt im Bestimmen der internen Adresse der Zieldaten in der Wortzeile. Gemäß einer Ausführungsform wird die interne Adresse aus dem Kopf bestimmt, der als Teil der Wortzeile decodiert wurde (Aktion 850). Deshalb sind diese Informationen leicht in der Steuereinheit verfügbar, ohne die Notwendigkeit eines weiteren Auslesens des nichtflüchtigen Speichers. Gemäß der Lösung auf der Basis von primären und sekundären Abbildungen wird die interne Adresse bestimmt, indem sie aus einer sekundären Abbildung gelesen wird. Herkömmlicherweise wird sich die zweite Abbildung nicht in der Speichereinheit befinden, somit wird angefordert, den nichtflüchtigen Speicher auszulesen (Aktion 860), die Wortzeile an die Steuereinheit zu übertragen (Aktion 885) und die sekundäre Abbildung gemäß ECC zu decodieren (Aktion 870). Somit ist der Prozess des wahlfreien Lesens erheblich schneller in einer Lösung auf der Basis der vorliegenden Ausführungsform.
-
5 veranschaulicht einen Fall, in dem nur eine Wortzeile komprimierte Daten enthält. In der Praxis können viele Wortzeilen komprimierte Daten enthalten, wobei die Kompressionsrate erheblich von einem Datensatz zum anderen variieren kann. Einige der Daten können z. B. eine Komprimierung von 90 % oder mehr erfahren, so dass 10 LBAs auf dieselbe physikalische Speichereinheit zeigen können, während andere LBAs um ungefähr 50 % komprimiert werden, so dass nicht mehr als zwei LBAs dieses Typs auf denselben physikalischen Speicher zeigen können.
-
Ein weiterer Aspekt dieser Ausführungsform bezieht sich auf das Speichern von Daten mit verschiedenen Kompressionsraten in dem physikalischen Speicher. In einer Ausführungsform werden die komprimierten Daten derart in dem physikalischen Speicher gespeichert, dass die Daten, die in derselben physikalischen Speichereinheit (z. B. in derselben Wortzeile) gespeichert sind, die gleichen Kompressionsraten aufweisen werden. Wenn z. B. Daten mit einer Kompressionsrate von 90 % in einer spezifischen physikalischen Speichereinheit gespeichert werden, werden andere Daten nur dann in derselben Speichereinheit gespeichert, wenn ihre Kompressionsrate mindestens 70 % beträgt. Deshalb werden Daten mit einer Kompressionsrate von 50 % nicht in derselben Speichereinheit gespeichert wie die Daten mit einer Komprimierung von 90 %. In einigen Fällen kann dies die Kompressionsraten des Systems verschlechtern, jedoch wird diese Ausführungsform im Allgemeinen die Speicherverwaltung unterstützen.
-
In einer alternativen Ausführungsform ist es ausreichend, die Menge der gültigen logischen Einheiten in jedem physikalischen Block zu zählen, anstatt einen Zähler der genauen Größe von jeder komprimierten logischen Einheit zu pflegen (z. B um die Menge von gültigen/ungültigen Daten in jedem Block zu pflegen). Ein Zähler der Anzahl der gültigen logischen Einheiten pro physikalischem Block kann in einer Implementierung ohne Komprimierung bereits vorhanden sein. Somit besteht keine Notwendigkeit, für diesen Teil eine zusätzliche Logik hinzuzufügen (geringere Komplexität). Zum Beispiel findet in einem Flash-Speichersystem ein Prozess der Abfallsammlung statt, wobei alte Daten als ungültig ausgewiesen werden und wobei neue Daten auf einen anderen Speicherplatz in dem Flash-Speicher geschrieben werden. Ein Speichermodul, das gemäß der vorliegenden Ausführungsform arbeitet, wird die Menge der ungültigen physikalischen Speicheradressen zu jedem gegebenen Zeitpunkt vorhersagen können, indem es die Aktualisierungen der LBAs verfolgt. Wenn eine bestimmte LBA für ungültig erklärt wurde, wird der Speicherplatz, der durch diesen Vorgang außer Gebrauch gesetzt wurde, als eine Funktion der Anzahl der LBAs geschätzt, die mit der physikalischen Speichereinheit verbunden sind, in der sie gespeichert war. Wenn die physikalische Speichereinheit nur zwei LBAs gespeichert hatte, wird die Menge des durch eine Ungültigkeitserklärung für eine der LBAs außer Gebrauch gesetzten Speichers als eine Hälfte der Speichereinheit geschätzt. Wenn die Speichereinheit 10 LBAs gespeichert hatte (die Daten, die mit 10 LBAs verbunden sind), wird die Menge des durch eine Ungültigkeitserklärung für eine der LBAs außer Gebrauch gesetzten Speichers als 1/10 der Speichereinheit geschätzt. Dieser ausgewogene Ansatz, komprimierte Daten zu speichern, wird eine bessere Flash-Verwaltung ermöglichen.
-
Außerdem verbessert sich die Effizienz des Speicherns von logischen Einheiten in physikalische Einheiten, weil weniger Auffüllen verwendet wird. Zum Beispiel wird eine Situation betrachtet, in der eine physikalische Einheit zu 2/3 mit kleinen, komprimierbaren logischen Einheiten gefüllt ist, und in der dann eine logische Einheit empfangen wird, die nur zur Hälfte komprimierbar ist. Wenn die logischen Einheiten entsprechend der Ankunftszeit von einem Host zusammen abgebildet werden, wird die aktuelle physikalische Einheit mit 1/3 Nullen aufgefüllt und geschlossen werden müssen. Die halbkomprimierbaren Daten werden auf eine neue physikalische Einheit abgebildet. Gemäß einer Ausführungsform sind die halbkomprimierbaren Daten keine Kandidaten für das Speichern mit den mehrfach komprimierbaren logischen Dateneinheiten, somit wird die physikalische Einheit, die die 2/3 der komprimierbaren logischen Einheiten enthält, nicht schließen und für die nächste komprimierbare Dateneinheit offen bleiben.
-
Es gibt viele weitere Alternativen, die mit diesen Ausführungsformen verwendet werden können. Zum Beispiel besaßen, wie in den vorhergehenden Beispielen oben erwähnt, die Grundeinheiten des logischen Raums vor der Komprimierung dieselbe Größe wie die Grundeinheiten des physikalischen Raums. Jedoch können die Auflösungen vom Logischen zum Physikalischen prinzipiell und in der Praxis in dem nicht komprimierten Fall derart voneinander abweichen, dass die Größen der Wortzeilen und der LBAs vor der Komprimierung nicht ausgerichtet sind. (Vor der Komprimierung werden mehrere LBAs in einer gegebenen Wortzeile gespeichert, weil eine Wortzeile mehrere Seiten enthält. Die Komprimierung erhöht lediglich die Menge der LBAs, die in derselben Wortzeile (oder Seite) gespeichert werden. Das Verwenden von Vererbungsabbildungsformaten wird die Abbildungstabelle vergrößern, weil ein größerer Index notwendig ist, um mehr LBAs auf dieselbe Seite abzubilden.) Zum Beispiel besteht in einigen Situationen jede LBA aus einem einzelnen Sektor, dessen Größe 0,5 KB beträgt, während die Größe jeder Wortzeile 16 KB beträgt. Jede Wortzeile kann in kleinere Einheiten, wie etwa in Einheiten von 4 KB, unterteilt werden. Wie in 7 gezeigt ist, werden die LBAs in diesem Fall in Gruppen von acht gruppiert, wobei die Abbildungstabelle auf die gegebene Einheit von 4 KB zeigen wird, die die jeweilige LBA enthält. Jede logische Blockadresse in der Tabelle zeigt auf eine eindeutige physikalische Adresse in dem Speicher und auf einen zusätzlichen Versatz innerhalb der Seite. Da die Flash-Speicher an Kapazität zunehmen und da die Leseauflösung feiner wird, kann die Abbildung logischer Adressen auf physikalische Adressen größer werden. In einigen Fällen bleibt die Auflösung der Adressen dieselbe (z. B. 4 KB), jedoch die Kapazität des Flash-Speichers 120 erhöht sich. In anderen Fällen ist es wünschenswert, den Flash-Speicher 120 mit einer feineren Auflösung lesen zu können, so dass die Grundeinheit verkleinert werden kann (z. B. auf 1 KB). In anderen Fällen erhöht sich die Kapazität und eine feinere Auflösung wird implementiert. Außerdem kann wie in dem obigen Beispiel die Komprimierung verwendet werden, um ebenfalls die Auflösung zu erhöhen. In all diesen Fällen wird die Abbildung logischer Adressen auf physikalische Adressen größer und größer. Durch das Anwenden dieser Ausführungsformen werden die Informationen über den Ort in einer Wortzeile für eine gegebene LBA in der Wortzeile selbst gespeichert, wodurch die Notwendigkeit von komplexeren oder zusätzlichen Abbildungstabellen vermieden wird.
-
Andere Variationen sind ebenfalls möglich. Zum Beispiel können die komprimierten Daten in einigen Fällen Daten sein, die als selbständige Daten komprimiert sind. In anderen Fällen können die Daten nicht als selbständige Daten komprimiert sein, sondern ihr Inhalt ist ein Muster, das wiederholt von dem Speicher verwendet wird. Im letzteren Fall kann das Muster irgendwo im System gespeichert werden (RAM 115, ROM 116 oder Hauptspeicher 120), wobei die komprimierte LBA ein Zeiger auf die Adresse des Musters sein wird. In anderen Fällen können die komprimierten Daten eine Kombination aus Daten sein, die als selbständige Daten komprimierbar sind, und aus Daten, die häufig verwendete Muster darstellen, die nicht als selbständige Daten komprimierbar sind (oder die eine bessere Kompressionsrate erreichen, wenn sie als ein Muster betrachtet werden). Somit kann der physikalische Speicher entweder Zeiger auf Muster oder komprimierte Daten von logischen Einheiten enthalten. Vorzugsweise kann eine zusätzliche Marke verwendet werden, um zu bestimmen, welche Daten ein Muster darstellen und welche selbständige, komprimierte Daten sind, wenn die komprimierten Daten eine Kombination aus Daten sind, die als selbständige Daten komprimierbar sind, und aus Daten, die häufig verwendete Muster darstellen. In einigen Ausführungsformen kann bevorzugt werden, häufig verwendete Muster in separaten Blöcken zu speichern, da ihre Kompressionsrate normalerweise sehr hoch ist, weshalb sie sehr effizient komprimiert werden können. In einer Ausführungsform ist es wünschenswert, die Daten entsprechend ihrer Kompressionsrate zusammen zu speichern.
-
Es ist beabsichtigt, dass die vorangegangene, detaillierte Beschreibung als eine Veranschaulichung ausgewählter Ausprägungen verstanden wird, die die Erfindung annehmen kann, und nicht als eine Definition der Erfindung. Nur die folgenden Patentansprüche einschließlich aller Äquivalente sind dafür bestimmt, den Umfang der beanspruchten Erfindung zu definieren. Schlussendlich sei erwähnt, dass jeder Aspekt von jeder der hier beschriebenen bevorzugten Ausführungsformen alleine oder in Kombination mit einem anderen verwendet werden kann.