DE112014005521B4 - Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen - Google Patents

Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen Download PDF

Info

Publication number
DE112014005521B4
DE112014005521B4 DE112014005521.2T DE112014005521T DE112014005521B4 DE 112014005521 B4 DE112014005521 B4 DE 112014005521B4 DE 112014005521 T DE112014005521 T DE 112014005521T DE 112014005521 B4 DE112014005521 B4 DE 112014005521B4
Authority
DE
Germany
Prior art keywords
lba
word line
memory
memory module
logical addresses
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE112014005521.2T
Other languages
English (en)
Other versions
DE112014005521T5 (de
Inventor
Alon Marcu
Hadas Oshinsky
Amir Shaharabany
Eran Sharon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE112014005521T5 publication Critical patent/DE112014005521T5/de
Application granted granted Critical
Publication of DE112014005521B4 publication Critical patent/DE112014005521B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Speichermodul (100), das Folgendes enthält:einen Speicher (120), der mehrere Wortzeilen enthält, undeine Steuereinheit (110), die konfiguriert ist, eine Abbildung logischer Adressen (LBA 1 - LBA n) auf physikalische Adressen zu verwenden, um eine logische Adresse in eine physikalische Adresse einer Wortzeile umzusetzen, wobei mehrere logische Adressen (LBA 1, LBA 4) in der Tabelle auf eine einzelne Wortzeile zeigen und wobei die einzelne Wortzeile sowohl mit den mehreren logischen Adressen assoziierte Daten als auch Informationen darüber, wo jede der mehreren logischen Adressen in der einzelnen Wortzeile zu finden ist, enthält.

Description

  • 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.
  • US 2012/0290798 A1 offenbart Vorrichtungen und Verfahren zum Bestimmen einer kompakteren Anordnung, um logischadressierbare Einheiten, die komprimierte Datensektoren einschließen, in hardware-adressierbaren Einheiten einer Speichervorrichtung zu speichern.
  • Überblick
  • Bereitgestellt werden ein Speichermodul und ein Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen mit den Merkmalen der unabhängigen Ansprüche; abhängige Ansprüche betreffen bevorzugte Ausführungsformen. 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.
  • Figurenliste
    • 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 iNAND™eSD/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.

Claims (36)

  1. Speichermodul (100), das Folgendes enthält: einen Speicher (120), der mehrere Wortzeilen enthält, und eine Steuereinheit (110), die konfiguriert ist, eine Abbildung logischer Adressen (LBA 1 - LBA n) auf physikalische Adressen zu verwenden, um eine logische Adresse in eine physikalische Adresse einer Wortzeile umzusetzen, wobei mehrere logische Adressen (LBA 1, LBA 4) in der Tabelle auf eine einzelne Wortzeile zeigen und wobei die einzelne Wortzeile sowohl mit den mehreren logischen Adressen assoziierte Daten als auch Informationen darüber, wo jede der mehreren logischen Adressen in der einzelnen Wortzeile zu finden ist, enthält.
  2. Speichermodul nach Anspruch 1, wobei die in der einzelnen Wortzeile gespeicherten Daten komprimiert sind.
  3. Speichermodul nach Anspruch 2, wobei zusätzliche Wortzeilen in dem Speicher (120) komprimierte Daten enthalten und wobei eine Kompressionsrate zwischen den Wortzeilen variiert.
  4. Speichermodul nach Anspruch 3, wobei alle Daten, die in einer gegebenen Wortzeile gespeichert sind, die gleiche Kompressionsrate aufweisen.
  5. Speichermodul nach Anspruch 1, wobei die Informationen darüber, wo jede der mehreren logischen Adressen zu finden ist, in einem Kopf der einzelnen Wortzeile gespeichert sind.
  6. Speichermodul nach Anspruch 1, wobei eine Größe des Kopfs dynamisch als eine Funktion eines in der einzelnen Wortzeile verwendeten Kompressionsgrads eingestellt wird.
  7. Speichermodul nach Anspruch 1, wobei die Steuereinheit (110) ferner konfiguriert ist, einen Fehlerkorrekturcode eines Codeworts zu erzeugen, das die mit den mehreren logischen Adressen verbundenen Daten und die Informationen, wo jede der mehreren logischen Adressen zu finden ist, enthält.
  8. Speichermodul nach Anspruch 1, wobei die Steuereinheit (110) ferner konfiguriert ist, Folgendes durchzuführen: als Antwort auf ein Kommando eine der mehreren logischen Adressen (LBA 1 - LBA n) zu lesen, ferner eine Gesamtheit der einzelnen Wortzeile zu lesen, bevor die Informationen darüber, wo jede der mehreren logischen Adressen zu finden ist, verwendet werden, um die eine der mehreren logischen Adressen zu finden.
  9. Speichermodul nach Anspruch 1, wobei die Steuereinheit (110) ferner konfiguriert ist, durch Verfolgen der Aktualisierungen der mehreren logischen Blockadressen eine Menge von ungültigen Speicheradressen in der einzelnen Wortzeile vorherzusagen.
  10. Speichermodul nach Anspruch 1, wobei die Daten aus einem Zeiger auf eine andere Adresse bestehen, die ein Datenmuster enthält, das wiederholt in dem Speicher (120) verwendet wird.
  11. Speichermodul nach Anspruch 1, wobei das Speichermodul (100) in einem Host eingebaut ist.
  12. Speichermodul nach Anspruch 1, wobei das Speichermodul (100) entfernbar mit einem Host verbunden ist.
  13. Speichermodul nach Anspruch 1, wobei der Speicher (120) ein NAND-Speicher ist.
  14. Speichermodul nach Anspruch 1, wobei das Speichermodul (100) ein Halbleiterlaufwerk ist.
  15. Speichermodul nach Anspruch 1, wobei eine 1 : 1-Beziehung zwischen den Wortzeilen und den logischen Adressen (LBA 1 - LBA n) besteht und wobei die Komprimierung verursacht, dass die mehreren logischen Adressen auf die einzelne Wortzeile zeigen.
  16. Speichermodul nach Anspruch 1, wobei vor der Komprimierung eine N : 1-Beziehung zwischen den Wortzeilen und den logischen Adressen (LBA 1 - LBA n) besteht, wobei N > 1 und wobei die mehreren logischen Adressen auf den gleichen Versatzbereich in der einzelnen Wortzeile zeigen.
  17. Speichermodul nach Anspruch 1, wobei die Abbildung logischer Adressen (LBA 1 - LBA n) auf physikalische Adressen in dem Speicher gespeichert wird und wobei mindestens ein Teil der Abbildung logischer Adressen auf physikalische Adressen temporär in den Schreib/Lesespeicher in der Steuereinheit geladen wird.
  18. Speichermodul nach Anspruch 1, wobei die Informationen darüber, wo jede der mehreren logischen Adressen (LBA 1, LBA 4) in der einzelnen Wortzeile zu finden ist, einen Versatz und eine Länge enthalten.
  19. Verfahren zum Verwalten des Abbildens logischer Adressen (LBA 1 - LBA n) auf physikalische Adressen, wobei das Verfahren Folgendes umfasst: Durchführen des Folgenden in einem Speichermodul (100), die einen Speicher (120) aufweist, der mehrere Wortzeilen und eine Abbildung logischer Adressen (LBA 1 - LBA n) auf physikalische Adressen enthält: Umsetzen einer logischen Adresse (LBA 1 - LBA n) in eine physikalische Adresse einer Wortzeile unter Verwendung der Abbildung logischer Adressen auf physikalische Adressen, wobei mehrere logische Adressen (LBA 1, LBA 4) in der Tabelle auf eine einzelne Wortzeile zeigen, wobei die einzelne Wortzeile sowohl mit den mehreren logischen Adressen assoziierte Daten als auch Informationen darüber, wo jede der mehreren logischen Adressen in der einzelnen Wortzeile zu finden ist, enthält; und Lesen der Informationen in der einzelnen Wortzeile, um zu bestimmen, wo die mit einer der mehreren logischen Adressen verbundenen Daten in der einzelnen Wortzeile angeordnet sind.
  20. Verfahren nach Anspruch 19, wobei die in der einzelnen Wortzeile gespeicherten Daten komprimiert sind.
  21. Verfahren nach Anspruch 20, wobei zusätzliche Wortzeilen in dem Speicher komprimierte Daten enthalten und wobei eine Kompressionsrate zwischen den Wortzeilen variiert.
  22. Verfahren nach Anspruch 21, wobei alle in einer gegebenen Wortzeile gespeicherten Daten die gleiche Kompressionsrate aufweisen.
  23. Verfahren nach Anspruch 19, wobei die Informationen darüber, wo jede der mehreren logischen Adressen (LBA 1 - LBA n) zu finden ist, in einem Kopf der einzelnen Wortzeile gespeichert sind.
  24. Verfahren nach Anspruch 19, wobei eine Größe des Kopfs dynamisch als eine Funktion eines in der einzelnen Wortzeile verwendeten Kompressionsgrads eingestellt wird.
  25. Verfahren nach Anspruch 19, das ferner das Erzeugen eines Fehlerkorrekturcodes eines Codeworts umfasst, das die mit den mehreren logischen Adressen verbundenen Daten und die Informationen darüber, wo jede der mehreren logischen Adressen zu finden ist, umfasst.
  26. Verfahren nach Anspruch 19, das ferner Folgendes umfasst: als Antwort auf ein Kommando eine der mehreren logischen Adressen zu lesen, eine Gesamtheit der einzelnen Wortzeile zu lesen, bevor die Informationen darüber, wo jede der mehreren logischen Adressen zu finden ist, verwendet werden, um die eine der mehreren logischen Adressen zu finden.
  27. Verfahren nach Anspruch 19, das ferner das Vorhersagen einer Menge von ungültigen Speicheradressen in der einzelnen Wortzeile durch Verfolgen der Aktualisierungen der mehreren logischen Blockadressen umfasst.
  28. Verfahren nach Anspruch 19, wobei die Daten aus einem Zeiger auf eine andere Adresse bestehen, die ein Datenmuster enthält, das wiederholt in dem Speicher (120) verwendet wird.
  29. Verfahren nach Anspruch 19, wobei das Speichermodul (100) in einem Host eingebaut ist.
  30. Verfahren nach Anspruch 19, wobei das Speichermodul (100) entfernbar mit einem Host verbunden ist.
  31. Verfahren nach Anspruch 19, wobei der Speicher (120) ein NAND-Speicher ist.
  32. Verfahren nach Anspruch 19, wobei das Speichermodul (100) ein Halbleiterlaufwerk ist.
  33. Verfahren nach Anspruch 19, wobei eine 1 : 1-Beziehung zwischen den Wortzeilen und den logischen Adressen (LBA 1 - LBA n) besteht und wobei die Komprimierung verursacht, dass die mehreren logischen Adressen auf die einzelne Wortzeile zeigen.
  34. Verfahren nach Anspruch 19, wobei vor der Komprimierung eine N : 1-Beziehung zwischen den Wortzeilen und den logischen Adressen (LBA 1 - LBA n) besteht, wobei N > 1 und wobei die mehreren logischen Adressen auf einen gleichen Versatzbereich in der einzelnen Wortzeile zeigen.
  35. Verfahren nach Anspruch 19, wobei die Abbildung logischer Adressen auf physikalische Adressen in dem Speicher (120) gespeichert ist und wobei mindestens ein Teil der Abbildung logischer Adressen (LBA 1 - LBA n) auf physikalische Adressen temporär in den Schreib/Lesespeicher in der Steuereinheit (110) geladen wird.
  36. Verfahren nach Anspruch 19, wobei die Informationen darüber, wo jede der mehreren logischen Adressen (LBA 1, LBA 4) in der einzelnen Wortzeile zu finden ist, einen Versatz und eine Länge umfassen.
DE112014005521.2T 2013-12-04 2014-09-30 Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen Active DE112014005521B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/096,965 2013-12-04
US14/096,965 US9514057B2 (en) 2013-12-04 2013-12-04 Storage module and method for managing logical-to-physical address mapping
PCT/US2014/058292 WO2015084478A1 (en) 2013-12-04 2014-09-30 Storage module and method for managing logical-to-physical address mapping

Publications (2)

Publication Number Publication Date
DE112014005521T5 DE112014005521T5 (de) 2016-11-17
DE112014005521B4 true DE112014005521B4 (de) 2022-01-13

Family

ID=51799300

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014005521.2T Active DE112014005521B4 (de) 2013-12-04 2014-09-30 Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen

Country Status (4)

Country Link
US (1) US9514057B2 (de)
CN (1) CN105849706B (de)
DE (1) DE112014005521B4 (de)
WO (1) WO2015084478A1 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495288B2 (en) 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US9229876B2 (en) * 2013-12-17 2016-01-05 Sandisk Technologies Inc. Method and system for dynamic compression of address tables in a memory
US9927998B2 (en) * 2014-02-05 2018-03-27 Tidal Systems, Inc. Flash memory compression
JP5745136B1 (ja) * 2014-05-09 2015-07-08 力晶科技股▲ふん▼有限公司 不揮発性半導体記憶装置とその書き込み方法
US9710199B2 (en) 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
KR20160075174A (ko) * 2014-12-19 2016-06-29 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작방법
US10162700B2 (en) * 2014-12-23 2018-12-25 International Business Machines Corporation Workload-adaptive data packing algorithm
US10108633B2 (en) 2014-12-27 2018-10-23 Ascava, Inc. Using a distributed prime data sieve for efficient lossless reduction, search, and retrieval of data
US10222990B2 (en) * 2015-07-24 2019-03-05 Sandisk Technologies Llc Optimistic read operation
US9946594B2 (en) 2015-08-19 2018-04-17 International Business Machines Corporation Validation bits and offsets to represent logical pages split between data containers
US20170068458A1 (en) * 2015-09-03 2017-03-09 Qualcomm Incorporated Hardware-accelerated storage compression
US10613756B2 (en) 2015-09-03 2020-04-07 Qualcomm Incorporated Hardware-accelerated storage compression
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
US10255004B2 (en) * 2015-11-16 2019-04-09 Marvell World Trade Ltd. Systems and methods for managing address-mapping data in memory devices
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
KR102705306B1 (ko) * 2015-12-10 2024-09-10 아스카바, 인크. 블록 처리 저장 시스템 상에 저장된 데이터 및 오디오 데이터의 축소
US9946462B1 (en) 2016-02-15 2018-04-17 Seagate Technology Llc Address mapping table compression
US10191854B1 (en) 2016-12-06 2019-01-29 Levyx, Inc. Embedded resilient distributed dataset systems and methods
US10140027B1 (en) 2017-05-26 2018-11-27 Seagate Technology Llc Data transfers with adaptively adjusted polling times
US10606760B2 (en) 2017-08-23 2020-03-31 Samsung Electronics Co., Ltd. Nonvolatile memory devices and methods of controlling the same
US10289557B2 (en) 2017-08-28 2019-05-14 Western Digital Technologies, Inc. Storage system and method for fast lookup in a table-caching database
US10977182B2 (en) * 2017-12-01 2021-04-13 Micron Technology, Inc. Logical block mapping based on an offset
KR20190087217A (ko) * 2018-01-16 2019-07-24 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11487652B2 (en) * 2018-04-23 2022-11-01 Micron Technology, Inc. Host logical-to-physical information refresh
KR102571629B1 (ko) * 2018-05-23 2023-08-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10698816B2 (en) * 2018-06-29 2020-06-30 Micron Technology, Inc. Secure logical-to-physical caching
KR20200022118A (ko) * 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US11726869B2 (en) 2019-08-20 2023-08-15 Micron Technology, Inc. Performing error control operation on memory component for garbage collection
US11282567B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Sequential SLC read optimization
US11281578B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Garbage collection in a memory sub-system during a low battery state
US11281392B2 (en) 2019-08-28 2022-03-22 Micron Technology, Inc. Garbage collection in a memory component using an adjusted parameter
US11372754B2 (en) 2020-06-12 2022-06-28 Western Digital Technologies, Inc. Storage system and method for enabling a software-defined dynamic storage response
US11861208B2 (en) * 2020-12-22 2024-01-02 Micron Technology, Inc. Performing data operations on grouped memory cells

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120290798A1 (en) 2011-05-10 2012-11-15 Huang Chengkuo Data Compression and Compacting for Memory Devices

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8516219B2 (en) * 2009-07-24 2013-08-20 Apple Inc. Index cache tree
CN101673243B (zh) * 2009-09-29 2011-09-07 威盛电子股份有限公司 数据储存装置与方法
US8291194B2 (en) 2009-11-16 2012-10-16 Mediatek Inc. Methods of utilizing address mapping table to manage data access of storage medium without physically accessing storage medium and related storage controllers thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120290798A1 (en) 2011-05-10 2012-11-15 Huang Chengkuo Data Compression and Compacting for Memory Devices

Also Published As

Publication number Publication date
US20150154118A1 (en) 2015-06-04
CN105849706B (zh) 2019-10-25
US9514057B2 (en) 2016-12-06
DE112014005521T5 (de) 2016-11-17
CN105849706A (zh) 2016-08-10
WO2015084478A1 (en) 2015-06-11

Similar Documents

Publication Publication Date Title
DE112014005521B4 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE112010003650B4 (de) Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten
DE102017104125B4 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE102018105854B4 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE102020106971A1 (de) Datenschreibverwaltung im nichtflüchtigen speicher
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102017128952A1 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY, DE

R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R020 Patent grant now final