[go: up one dir, main page]

DE102009034651A1 - Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten - Google Patents

Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten Download PDF

Info

Publication number
DE102009034651A1
DE102009034651A1 DE102009034651A DE102009034651A DE102009034651A1 DE 102009034651 A1 DE102009034651 A1 DE 102009034651A1 DE 102009034651 A DE102009034651 A DE 102009034651A DE 102009034651 A DE102009034651 A DE 102009034651A DE 102009034651 A1 DE102009034651 A1 DE 102009034651A1
Authority
DE
Germany
Prior art keywords
storage device
logical block
block address
translation table
address translation
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.)
Ceased
Application number
DE102009034651A
Other languages
English (en)
Inventor
Torsten Hinz
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102009034651A1 publication Critical patent/DE102009034651A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

Ein Ausführungsbeispiel der Erfindung betrifft eine Massenspeicherungsvorrichtung, die eine nichtflüchtige Speichervorrichtung mit einer Vielzahl von Speicherverwaltungsblöcken und einer Adressenübersetzungstabelle umfasst, die mit Zeigern auf Speicherstellen der Speicherverwaltungsblöcke ausgebildet ist. Eine flüchtige Speichervorrichtung ist mit einer Adressenindextabelle eingeschlossen, die mit Zeigern auf die Zeiger auf die Stellen der Speicherverwaltungsblöcke ausgebildet ist. Die Adressenindextabelle wird beim Verlust oder Ausfall einer Vorspannung in dem nichtflüchtigen Speicher gespeichert. Änderungen an der Adressenübersetzungstabelle werden in dem flüchtigen Speicher gesammelt und in die Adressenübersetzungstabelle geschrieben, wenn wenigstens eine Mindestmenge der Änderungen angesammelt worden ist. Die Änderungen an der logischen Blockadressen-Übersetzungstabelle, die in dem flüchtigen Speicher angesammelt worden sind, werden in eine Seite in der Adressenübersetzungstabelle geschrieben, nachdem vorherige Daten in der Seite aktualisiert, in eine andere Seite geschrieben und dann gelöscht worden sind.

Description

  • Ein Ausführungsbeispiel der vorliegenden Erfindung betrifft allgemein Massenspeicherungsvorrichtungen und -verfahren, und insbesondere betrifft es das Kombinieren einer nichtflüchtigen Speichervorrichtung mit einer Speichervorrichtung, die leichter überschrieben werden kann, um eine nichtflüchtige Speichervorrichtung mit einem verbesserten Zugriff auf digitale Daten und einer verbesserten Speicherung von digitalen Daten bereitzustellen.
  • Massenspeicherungs-Speichervorrichtungen wie zum Beispiel Flash-Speicherkarten, USB-(„universeller serieller Bus”)-Sticks oder Festkörperplatten (Solid State Disks) verwenden Flash-Halbleiterstrukturen, um Daten in einer nichtflüchtigen Speichervorrichtung zu speichern. Eine nichtflüchtige Speichervorrichtung bezieht sich auf eine Speichervorrichtung, für die eine Stromquelle „aus”-geschaltet werden kann, ohne dass die Inhalte des Speichers verloren gehen. Nichtflüchtige Speichervorrichtungen umfassen Flash-Speichervorrichtungen, die eine elektrische Ladung semipermanent halten können, um ein oder mehrere Bits darzustellen, oder ein „Festplattenlaufwerk” bzw. eine „Festplatte” (die auch als Hard Disk oder Hard Drive bezeichnet werden), das bzw. die eine magnetische Ladung semipermanent halten kann, um ein oder mehrere Bits zu speichern. Halbleitervorrichtungen wie etwa SRAMs (Static Random Access Memories; statische RAM-Speicher) und DRAMs (Dynamic Random Access Memories; dynamische RAM-Speicher) werden als flüchtige Speichervorrichtungen bezeichnet, weil sie die Inhalte ihrer Speicher verlieren, wenn eine Vorspannungsquelle abgeschaltet wird. Eine Vorspannungsquelle umfasst, ohne darauf beschränkt zu sein, einen Stromkonverter, der mit einer elektrischen Stromquelle oder einer Batterie gekoppelt ist, die sich innerhalb oder außerhalb der Speichervorrichtung befinden kann.
  • Die heutigen, auf Magnetkraft basierenden Massenspeicherungsvorrichtungen, wie zum Beispiel Floppy Disks oder Festplatten, sind in sogenannte Sektoren organisiert (wobei ein Sektor ein Teil einer „Spur” auf der Diskette bzw. Platte ist), wobei jeder Sektor (bei Magnetplatten) typischerweise 512 Byte speichert und jeder Sektor mit einer individuellen logischen Blockadresse (LBA) gekennzeichnet ist. Eine LBA ist ein logisches Adressierungsverfahren, bei dem eine feste Eins-zu-Eins-Beziehung zwischen einem Sektor von Daten und der physischen Stelle auf der Diskette bzw. Platte hergestellt wird, an der der jeweilige Datensektor gespeichert wird. Das Betriebssystem eines Computers handhabt die LBAs der Massenspeicherungsvorrichtung kollektiv und baut darauf ein Dateisystem auf. Das Betriebssystem des Computers liest und schreibt sequentielle Mengen von LBAs mit unterschiedlichen Blockgrößen aus der Massenspeicherungsvorrichtung aus bzw. in diese hinein. Bei einer Festplatte können Daten in einer Weise von einem oder mehreren Sektoren auf einmal frei geschrieben, gelesen oder ersetzt bzw. neu geschrieben werden.
  • Anders als magnetische Speichervorrichtungen gibt es bei Flash-Speichervorrichtungen einige Einschränkungen bezüglich des Lesens und Schreibens von Daten. Flash-Speichervorrichtungen sind zum Beispiel in Speicherseiten bzw. Seiten (typischerweise mit einer Größe von 4 kB (Kilobyte) plus Spielraum für Datenschutz) und in Löschblöcke (die hier auch als „Blöcke” bezeichnet werden) organisiert, wobei ein Löschblock eine Größe von 64 Seiten aufweist. Dementsprechend kann eine 4 kB-Seite eines Flash-Speichers acht 512-Byte-Sektoren speichern. Eine Seite eines Flash-Speichers, die nicht programmiert ist, d. h., eine Seite, die nicht bereits Daten enthält, kann nur als eine ganze Seite beschrieben werden. In ähnlicher Weise können Daten nur jeweils seitenweise gelesen werden. Ein Flash-Speicher weist eine weitere Beschränkung dahingehend auf, dass immer nur ein Block gleichzeitig gelöscht werden kann. Somit muss ein ganzer Block gelesen, gelöscht, die neuen Daten mit den vorhergehenden Daten gemischt und die gemischten Daten als ein Block wieder neu eingeschrieben werden, damit ausgewählte Daten in einem Abschnitt des Speichers neu geschrieben werden können. Somit können Daten nur als ein ganzer Block überschrieben werden. Das Schreiben und Neuschreiben bzw. Ersetzen wird allgemein als Programmieren bezeichnet. In einem typischen (NAND-strukturierten) Flash-Speicher wird eine Seite komplett insgesamt auf 1 en geschrieben, um vorher gespeicherte Daten zu löschen, und kann dann mit den zugedachten Daten neu beschrieben werden. Außerdem wird ein Block von Daten typischerweise in einen anderen physischen Abschnitt der Flash-Speichervorrichtung geschrieben, um ein Verschleißproblem abzuschwächen, das mit einem wiederholten Speichern von Daten an dersel ben Speicherstelle in solchen Vorrichtungen verbunden ist. Eine Übersetzungstabelle, die in dem nichtflüchtigen Speicher der Flash-Speichervorrichtung gespeichert ist, wird somit in der Datenübertragungsverbindung mit einem Hostcomputer benötigt, um einen Sektor von Daten logisch mit seiner physischen Speicherstelle zu assoziieren, die im Allgemeinen jedes Mal dann, wenn sie neu beschrieben wird, woanders hin verschoben wird. Die Einschränkungen bezüglich des Lesens, Schreibens und Neuschreibens in einer Flash-Speichervorrichtung sind auch auf die Übersetzungstabelle zutreffend, die darin gespeichert ist.
  • In Folge der Einschränkungen beim Schreiben in Flash-Speichervorrichtungen, die oben beschrieben worden sind, bei dem jeder Schreibzugriff ein Auslesen eines gesamten Löschblocks, das Durchführen der Lösch- und Mischoperationen und dann das Schreiben des gesamten Blocks zurück in eine neue Speicherstelle mit den gemischten Daten erfordert, ist eine festgelegte Abbildung (Mapping) der LBAs auf physische Flash-Speicheradressen unzureichend für das Verwalten von Daten, die in solchen Vorrichtungen gespeichert werden. Bei dem normalen Betrieb eines Hostcomputers gibt es typischerweise kleine Mengen an Daten, die in eine neue Flash-Speichervorrichtungs-Stelle hinein kopiert und gemischt werden müssen. Deshalb muss eine Abbildungstabelle (Mapping-Tabelle) (eine LBA-Übersetzungstabelle) so gestaltet und verwaltet werden, dass sie verfolgen kann, welche LBA in welcher Flash-Speichervorrichtungs-Adresse gespeichert worden ist. Es ist wichtig, dass diese Tabelle für die Übersetzung von logischen Adressen in physische Adressen durch irgendwelche Einrichtungen in der nichtflüchtigen Flash-Speichervorrichtung gespeichert wird, um einen schnellen Zugriff auf die darin enthaltenen Daten sofort nach dem Einschalten zu erlauben. Da es unerwartete Abschaltszenarien geben kann, sollte eine Einrichtung zur Tabellenwiederherstellung aus nichtflüchtigen, gespeicherten Daten bereitgestellt sein.
  • Somit besteht ein Bedarf an einem Prozess und einem damit verbundenen Verfahren zum Erstellen und Verwalten einer Übersetzungstabelle, die in einem nichtflüchtigen Speicher einer Flash-Speichervorrichtung gespeichert ist, der einen Transfer von Daten von einem Hostcomputer zu der Flash-Speichervorrichtung erlaubt, die Unzulänglichkeiten herkömmlicher Prozesse ver meidet und die Integrität einer solchen Tabelle während einer Unterbrechung bzw. eines Ausfalls einer Vorspannungsquelle bewahren kann.
  • Die Erfindung löst dieses bzw. andere Probleme durch eine Massenspeicherungsvorrichtung nach Anspruch 1, und ein Verfahren nach Anspruch 11.
  • Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
  • In Übereinstimmung mit einem exemplarischen Ausführungsbeispiel wird eine Massenspeicherungsvorrichtung und ein damit verbundenes Verfahren bereitgestellt. In einem Ausführungsbeispiel wird die Massenspeicherungsvorrichtung mit einer Vielzahl von Speicherverwaltungsblöcken gestaltet, und eine Übersetzungstabelle für logische Blockadressen (im Folgenden logische Blockadressen-Übersetzungstabelle, kurz: LBA-Übersetzungstabelle genannt) wird mit Zeigern auf Speicherstellen der Speicherverwaltungsblöcke ausgebildet. Die Massenspeicherungsvorrichtung umfasst des Weiteren eine zweite Speichervorrichtung, die mit einer Indextabelle für logische Blockadressen (logische Blockadressen-Indextabelle) erstellt wird. Die Indextabelle für logische Blockadressen ist mit Indextabellenzeigern für logische Blockadressen auf die Zeiger auf die Stellen der Speicherverwaltungsblöcke ausgebildet. In einem Ausführungsbeispiel ist die zweite Speichervorrichtung eine flüchtige Speichervorrichtung, die eine Batterie umfasst, die mit der zweiten Speichervorrichtung gekoppelt ist, um die zweite Speichervorrichtung beim Verlust oder beim Ausfall einer Vorspannung, die mit der Massenspeicherungsvorrichtung gekoppelt ist, mit Energie zu versorgen. In einem Ausführungsbeispiel werden Änderungen an der logische Blockadressen-Übersetzungstabelle in dem zweiten Speicher gesammelt und in die logische Blockadressen-Übersetzungstabelle geschrieben, wenn wenigstens eine Mindestmenge der Änderungen angesammelt worden ist. In einem Ausführungsbeispiel werden Änderungen an der logische Blockadressen-Übersetzungstabelle, die in der zweiten Speichervorrichtung gesammelt worden sind, auf eine neue Seite in der logische Blockadressen-Übersetzungstabelle geschrieben, nachdem Daten auf einer alten Seite aktualisiert worden sind. Die alte Seite wird dann gelöscht. In einem Ausführungsbeispiel ist die logische Blockadressen-Übersetzungstabelle so groß, dass sie eine Anzahl an Seiten speichern kann, die größer als eine Mindestanzahl an Seiten ist, die benötigt wird, um die Zeiger auf die Speicherstellen der Speicherverwaltungsblöcke aufzunehmen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Einzelheiten von einem oder mehreren Ausführungsbeispielen der vorliegenden Erfindung sind in den beigefügten Zeichnungen und der unten gegebenen Beschreibung dargelegt. Weitere Merkmale, Aufgaben und Vorteile der vorliegenden Erfindung werden aus der Beschreibung und den Zeichnungen sowie aus den Patentansprüchen deutlich. In den Figuren bezeichnen identische Bezugszeichen im Allgemeinen die gleichen Bauteile quer durch die verschiedenen Ansichten, die im Interesse der Kürze im Allgemeinen nicht noch einmal beschrieben werden. Für ein vollständigeres Verständnis der vorliegenden Erfindung wird nun Bezug auf die nachfolgenden Beschreibungen genommen, die in Verbindung mit den beigefügten Zeichnungen vorgenommen werden, in denen:
  • die 1 und 2 Blockdiagramme von Speicherdateistrukturen einer Massenspeicherungsvorrichtung veranschaulichen, die in Übereinstimmung mit einem exemplarischen Ausführungsbeispiel gestaltet ist; und
  • 3 ein Blockdiagramm einer Massenspeicherungsvorrichtung veranschaulicht, die in Übereinstimmung mit einem exemplarischen Ausführungsbeispiel gestaltet ist.
  • AUSFÜHRLICHE BESCHREIBUNG VON VERANSCHAULICHENDEN AUSFÜHRUNGSBEISPIELEN
  • Die Ausführung und die Verwendung der gegenwärtig bevorzugten Ausführungsbeispiele werden unten im Einzelnen erörtert. Es sollte aber klar sein, dass die vorliegende Erfindung viele anwendbare erfinderische Konzepte bereitstellt, die in einer breiten Vielfalt von spezifischen Kontexten verwirklicht werden können. Die erörterten spezifischen Ausführungsbeispiele dienen le diglich zur Veranschaulichung spezifischer Möglichkeiten, wie die Erfindung umgesetzt und verwendet werden kann, und beschränken nicht den Schutzumfang der vorliegenden Erfindung.
  • Die vorliegende Erfindung wird im Hinblick auf exemplarische Ausführungsbeispiele in einem spezifischen Kontext beschrieben werden, nämlich einer Massenspeicherungsvorrichtung, die eine flüchtige Speichervorrichtung und eine nichtflüchtige Speichervorrichtung umfasst, um eine nichtflüchtige Speichervorrichtung mit einer verbesserten Speicherungsperformanz bereitzustellen.
  • Ein Ausführungsbeispiel der Erfindung kann auf eine Massenspeicherungsvorrichtung angewendet werden, zum Beispiel auf ein Festkörperlaufwerk (Solid State Drive), das mit einer Flash-Speichervorrichtung ausgebildet ist. Andere Massenspeicherungsvorrichtungen können erstellt werden, die eine Speichervorrichtung umfassen, die ohne weiteres überschrieben werden kann, mit einer nichtflüchtigen Speichervorrichtung, wie diese hier in unterschiedlichen Kontexten eingeführt wird und erfinderische Konzepte, die hier beschrieben sind, verwendet, wie zum Beispiel ein Festkörper-Memory Stick für eine digitale Kamera. Eine typische flüchtige Speichervorrichtung kann ganz leicht überschrieben werden, wie etwa ein SDRAM (Synchronous Dynamic Random Access Memory; synchroner dynamischer RAM-Speicher), bei dem jeweils ein Wort nach dem anderen überschrieben werden kann. Aber ein Ausführungsbeispiel kann auch mit einer nichtflüchtigen Speichervorrichtung gestaltet werden, die leicht überschrieben werden kann.
  • Ein herkömmlicher Algorithmus für eine Halbleiter-Massenspeicherungsvorrichtung, wie zum Beispiel eine Flash-Speichervorrichtung, verwendet eine Abbildungstabelle, die an einer wohl definierten Stelle des Flash-Speichers gespeichert ist. Eine LBA-Nummer wird als ein Adressenindex innerhalb dieser Abbildungstabelle verwendet, um den Adressenzeiger der Flash-Speichervorrichtung zu finden, der anzeigt, an welcher Stelle diese LBA gespeichert ist. Dies gewährleistet, dass während einer Leseoperation nur ein oder zwei Seiten der Flash-Speichervorrichtung für den Prozess der Übersetzung einer logischen Adresse in eine physische Adresse gelesen werden müssen.
  • Ein Vorteil dieses Lösungswegs ist, dass die Abbildungstabelle immer konsistent und resistent gegenüber unvorhergesehenen Energieabschalt- bzw. -ausfallereignissen ist. Ein Nachteil ist, dass eine Adressenzeigeraktualisierung innerhalb der Abbildungstabelle zu zusätzlichen Zurückkopieroperationen führt, um das Abbildungstabellen-Indexschema für einen ganzen Adressenzeigerbereich konsistent zu halten. Im schlechtesten Fall bewirkt jede Seitenprogrammieroperation für Daten, die gespeichert werden sollen, eine Seitenprogrammieroperation des entsprechenden Teils der Abbildungstabelle. Dies verdoppelt die Anzahl an Schreiboperationen, reduziert die gesamte Schreibperformanz und kann zu Zugriffskonfliktsituationen (Deadlock-Situationen) führen, in denen es nicht genügend freien Speicher für die Vollendung einer Datenspeicherung und einer assoziierten Abbildungstabellen-Aktualisierungsoperation gibt.
  • Eine Massenspeicherungsvorrichtung, zum Beispiel ein SSD („Solid-State Drive”; Festkörperlaufwerk), in einem Ausführungsbeispiel sammelt vorteilhafterweise Modifikationen der Abbildungstabelle in einem internen flüchtigen Pufferspeicher innerhalb der Festkörper-Speichervorrichtung, so dass der Flash-Speicher auf einmal programmiert werden kann. Deshalb ist das Verhältnis von Seitenprogrammierungsanfragen in Folge von Datenschreibvorgängen gegenüber Seitenprogrammierungsanfragen in Folge von Abbildungstabellen-Aktualisierungsschreibvorgängen viel kleiner als Zwei, wie dies für den oben erwähnten, herkömmlichen Algorithmus beschrieben worden ist. Die Verwendung eines kleinen Betrags eines flüchtigen Speichers (zum Beispiel eines DRAM, die etwa ein SDRAM) mit einer Speicherbereinigungsstrategie ergibt eine ähnliche Performanz für die Durchführung der Übersetzung der LBAs in physische Speicheradressen. Die Speicherbereinigung bezieht sich auf das Freimachen von vorher verwendeten Bereichen eines nichtflüchtigen Speichers durch das Sammeln von gültigen Seiten aus Blöcken, die ungültige Seiten enthalten, in einen neuen Block mit weniger oder gar keinen ungültigen Seiten in einem freien Bereich des Speichers und das Aktualisieren von entsprechenden Einträgen in der Übersetzungstabelle, um die neue physische Speicherstelle für die Daten zu identifizieren. Die Speicherbereinigung kann oftmals im Hintergrund oder während einer Ruhezeit für die Speichervorrichtung durchgeführt werden.
  • Die heutigen SSDs umfassen typischerweise einen flüchtigen Speicher, wie zum Beispiel einen SDRAM, für den Zweck des Speicherns in einem Cache-Speicher von Schreibdaten für eine Leistungsverbesserung. In einem Ausführungsbeispiel wird ein kleiner Teil dieses SDRAM für eine Indextabelle für einen Teil der Übersetzung von logischen in physische Adressen verwendet, während die gesamte Tabelle für die Übersetzung von logischen in physische Adressen weiterhin in einem nichtflüchtigen Speicher gespeichert wird.
  • Eine Übersetzungstabelle enthält LBA-Einträge und entsprechende Flash-Speicheradressen, an denen Daten gespeichert sind. Wenn Daten in dem Flash-Speicher überschrieben werden sollen oder auf andere Weise einer existierenden Seite hinzugefügt werden sollen, dann werden die entsprechenden LBA-Einträge in der Übersetzungstabelle aktualisiert. Ein freier Bereich des Flash-Speichers, zum Beispiel 10%, wird für das Überschreiben und das Hinzufügen neuer Daten verwendet. Wenn neue oder modifizierte Daten in dem Flash-Speicher gespeichert werden, werden sie in den freien Bereich geschrieben. Seiten, die vorher in dem Flash-Speicher gespeichert worden sind und frühere oder anderweitig abgelaufene Daten enthalten, sind in der Übersetzungstabelle als ungültig markiert. Wenn der freie Bereich voll wird, vor allem wenn ein Speicherblock eine Anzahl von ungültigen Seiten ansammelt, wird er ein Kandidat für das Löschen in einem Speicherbereinigungsprozess. Es sei daran erinnert, dass nur ein ganzer Speicherblock löschbar ist, nicht einfach eine einzelne Seite.
  • Die Übersetzungstabelle in dem Flash-Speicher weist das gleiche Problem auf. Einträge darin können nur auf einer Blockbasis überschrieben werden. Eine Kopier- und Mischoperation muss bei den restlichen Daten durchgeführt werden, damit diese in eine neue Speicherstelle geschrieben werden können. Es muss auch ein Speicherbereinigungsprozess bei den alten Übersetzungstabellen-Seiten durchgeführt werden. In Folge der sich häufig wiederholenden Natur dieses Prozesses für eine Übersetzungstabelle ist es wichtig, dass er effizient durchgeführt wird.
  • Nun wird Bezug auf 1 genommen. Darin ist eine Speicherdateistruktur eines SSD veranschaulicht, die ein Ausführungsbeispiel des Abbil dungsprozesses veranschaulicht. Der hauptsächliche Flash-Speicherbereich der Vorrichtung ist auf der rechten Seite der Figur gezeigt, einschließlich der Flash-Verwaltungsblöcke, die quer durch den Flash-Speicherbereich verteilt sind. In einem exemplarischen Ausführungsbeispiel umfasst ein Flash-Verwaltungsblock acht Seiten, und jede Seite umfasst acht Sektoren. Die Speichergrößen, die in der Figur gezeigt sind, sind beispielhafte Größen für eine SSD-Vorrichtung mit einer Gesamtheit von 256 GB an Flash-Speicher-Speicherungsvermögen.
  • Die LBA-Übersetzungstabelle, die ebenfalls in dem Flash-Speicher des SSD gespeichert ist, ist in dem mittleren Abschnitt der Figur gezeigt. Zeiger assoziieren Übersetzungstabelleneinträge mit entsprechenden Flash-Verwaltungsblöcken in dem rechten Teil der Figur.
  • Eine DRAM-LBA-Indextabelle ist in dem linken Teil der Figur mit Zeigern auf entsprechende Einträge in der Flash-LBA-Übersetzungstabelle gezeigt. Ein SSD umfasst für Gewöhnlich einen DRAM zum Zwischenspeichern in einem Cache-Speicher/zum Zwischenspeichern in einem Puffer-Speicher von Daten zwischen dem SSD und einem Hostcomputer während einer Lese- oder Schreiboperation. Ein kleiner Teil des DRAM wird in einem Ausführungsbeispiel dazu verwendet, einen Teil der Übersetzungstabelle zu speichern. In einem Ausführungsbeispiel ist eine kleine Batterie in dem SSD eingeschlossen, um den Effekt der Flüchtigkeit der Daten in dem DRAM-Abschnitt des Speichers zu eliminieren.
  • Zur Veranschaulichung einer beispielhaften Flash-Speicher-Leseoperation wählt ein Hostcomputer es aus, einen bestimmten LBA-Sektor zu lesen. Der SSD-Controller berechnet eine DRAM-Adresse für die LBA-Indextabelle, welche auf eine Seitenadresse in der LBA-Übersetzungstabelle zeigt. Es sei daran erinnert, dass die LBA-Übersetzungstabelle in dem Flash-Speicherbereich des SSD gespeichert ist. Ein weiterer Zeiger in der LBA-Übersetzungstabelle zeigt auf den assoziierten Flash-Verwaltungsblock, um zu identifizieren, wo der angeforderte Sektor gespeichert ist. Die entsprechende Seite wird gelesen und zu dem Hostcomputer transferiert.
  • Nur eine kleine LBA-Indextabelle wird in einem DRAM gespeichert. Die LBA-Tabelle zeigt auf eine größere Tabelle, die in dem Flash-Speicher gespeichert ist. Für die beispielhafte 256 GB-Flash-Speichervorrichtung wird eine 64 MB-Flash-LBA-Übersetzungstabelle benötigt. Aber viermal so viel Speicher ist für die Flash-LBA-Übersetzungstabelle zugewiesen, um dem Neuschreiben bzw. Ersetzen von Seiten und Blöcken Rechnung zu tragen. Alternativ dazu kann ein anderer Speicherfaktor als Vier für die Größe der Flash-LBA-Übersetzungstabelle verwendet werden.
  • Somit muss, um einen Sektor der LBA-Übersetzungstabelle zu ändern, eine Kopier- und Mischoperation bei einem ganzen Block von Daten durchgeführt werden. Als eine Folge davon muss ein Kompromiss bezüglich der Größe des Flash-Verwaltungsblocks und des Betrags an Daten eingegangen werden, der typischerweise kopiert und gemischt wird. Ein kleinerer Flash-Verwaltungsblock führt zu weniger Kopier- und Mischoperationen, aber zu einer größeren Speicherbereinigungsanstrengung.
  • Die Daten, die in den Flash-Verwaltungsblöcken verwaltet werden, weisen vorzugsweise, ohne darauf beschränkt zu sein, eine Größe von jeweils 32 kB (512 Byte pro Sektor, 8 Sektoren pro Seite, 8 Seiten) für die beispielhafte 256 GB-Vorrichtung auf. Die beispielhafte Tabelle für die Übersetzung von logischen in physische Blockadressen, die in der Flash-Speichervorrichtung gespeichert ist, weist Tabelleneinträge mit jeweils 32 Zeigern auf Flash-Verwaltungsblöcke auf (wobei jeder Block 8 Seiten von 8 Sektoren = 32 Sektoren pro Block enthält), die in der Flash-Speichervorrichtung enthalten sind. Bei vier Byte pro Zeiger liegt die Minimumgröße für jeden Übersetzungstabelleneintrag bei 128 Byte. Um einen freien Speicherbereich für Seitenbandinformationen wie zum Beispiel einen Zeitstempel und eine logische Blockadresse bereitzustellen, werden die Übersetzungstabelleneinträge auf die Größe von 256 Byte vergrößert. Eine SSD-Vorrichtung mit 256 GB weist 8,3 Millionen Flash-Verwaltungsblöcke mit jeweils 32 kB und deshalb 256 k (d. h., 262.144) Tabelleneinträge auf. Somit beträgt die Gesamtgröße der Tabelle für die Übersetzung von logischen in physische Blockadressen wenigstens 64 MB. In dem Beispiel, das in 1 veranschaulicht ist, ist die Tabelle um einen Faktor Vier vergrößert. Dies bedeutet, dass drei Viertel der Tabelleneinträge frei oder ungültig sind. Wie vorher beschrieben worden ist, bezieht sich ein ungültiger Tabellen eintrag auf einen vorher geschriebenen Eintrag, dessen Daten aufgegeben wurden, weil sie mit neuen Daten vermischt wurden oder auf andere Weise mit neuen Daten aktualisiert wurden und in eine neue Speicherstelle geschrieben worden sind.
  • Zur Adressierung der 256 k Tabelleneinträge wird die gleiche Anzahl an Zeigern benötigt. Wenn jeder Zeiger 4 Byte aufweist, dann wird ein Gesamtbetrag von etwa 1 MB für die Zeiger benötigt. Diese Zeiger werden in einem Speicher der SSD-Vorrichtung gespeichert, der leicht überschrieben werden kann, zum Beispiel in einem flüchtigen Speicher wie etwa einem SDRAM.
  • Nun wird Bezug auf 2 genommen. Darin ist in Übereinstimmung mit einem Ausführungsbeispiel die Speicherdateistruktur der SSD-Vorrichtung veranschaulicht, die unter Bezugnahme auf 1 beschrieben worden ist, wobei eine Änderung der Abbildung von logischen Adressen auf physische Adressen veranschaulicht ist. Die Figur veranschaulicht eine Schreiboperation in einen der mehreren Sektoren, die in dem Flash-Speicherbereich gespeichert sind, wobei auf den Sektor durch einen Flash-Verwaltungsblock 201 hingewiesen wird. Die Daten, die in der SSD-Vorrichtung gespeichert werden sollen, werden in Einheiten von Flash-Verwaltungsblöcken kopiert und gemischt. Der Eintrag der Tabelle für die Übersetzung von logischen in physische Blockadressen, der die Übersetzungsinformationen der assoziierten LBAs enthält, wird genommen, modifiziert und an das Ende der Tabelle für die Übersetzung von logischen in physische Blockadressen angehängt. Insbesondere werden die Daten in dem LBA-Übersetzungstabelleneintrag 203 aktualisiert und in eine neue/freie Übersetzungstabellenstelle 204 geschrieben. Der Zeiger in der DRAM-Indextabelle wird entsprechend aktualisiert, um auf die neue LBA-Übersetzungstabellenstelle zu zeigen. Der LBA-Übersetzungstabelleneintrag 203 ist nun ungültig. Schließlich wird der Zeiger in dem DRAM mit einem einfachen Schreibzugriff aktualisiert. Auf diese Weise werden neue und alte Daten gemischt und in eine neue Speicherstelle kopiert, auf die von einem neuen Flash-Verwaltungsblock 202 hingewiesen wird.
  • Für eine Leseoperation muss die SSD-Vorrichtung auf die Tabelle in dem DRAM entsprechend den angeforderten LBAs zugreifen, einen Adressenzeiger mit der Stelle des angeforderten Tabelleneintrags in der LBA-Überset zungstabelle beschaffen und die Seitenleseoperation dieses Tabelleneintrags ausführen, um die Übersetzung der logischen in die physische Adresse durchzuführen.
  • Anstatt die modifizierten Tabelleneinträge direkt an den Flash-Speicher anzuhängen, werden sie in einem Pufferspeicher, vorzugsweise dem DRAM-Pufferspeicher, gesammelt. Wenn schließlich der Pufferspeicher die Daten einer einzelnen Seite angesammelt hat, wird der Pufferspeicher in die Flash-Speichervorrichtung programmiert. Dies gewährleistet, dass bei diesem Beispiel eine Tabelleneintrag-Programmieroperation nach 32 Kopier- und Mischoperationen von Flash-Verwaltungsblöcken ausgeführt wird.
  • Eine Speicherbereinigungsfunktion muss bei der Flash-LBA-Übersetzungstabelle durchgeführt werden, um ungültige Übersetzungstabelleneinträge freizumachen, vor allem während Ruhezeiten der SSD-Vorrichtung, und zwar trotz der Tatsache, dass die LBA-Übersetzungstabelle vorzugsweise viermal größer als der Betrag an Daten ist, die für Gewöhnlich erwartungsgemäß darin gespeichert werden. Die LBA-Übersetzungstabelle wird für Gewöhnlich schnell mit ungültigen Seiteneinträgen gefüllt werden. Die Löschblöcke, die für die Tabelle für die Übersetzung von logischen in physische Adressen verwendet werden, werden im Durchschnitt ein Viertel gültige Tabelleneinträge und drei Viertel ungültige Tabelleneinträge aufweisen. Deshalb können gute Löschblockkandidaten dort gefunden werden, wo die meisten der Tabelleneinträge bereits als ungültig markiert sind. Ein Löschblock mit vielen ungültigen Seiten kann effizient mit einer einzigen integrierten Schreiboperation überschrieben werden, wodurch sich die Anzahl an Seiten reduziert, die separat kopiert, gemischt und neu in viele Blöcke geschrieben werden muss. Der Speicherbereinigungsprozess kann die restlichen gültigen Tabelleneinträge herauskopieren, diese an das Ende der Tabelle anhängen, die SDRAM-Indextabelleneinträge dementsprechend modifizieren und den Löschblock löschen, so dass ein neuer Löschblock an die Tabelle für das Programmieren angehängt werden kann. Dieser Prozess gewährleistet, dass es immer genügend Platz für das Anhängen von Tabelleneinträgen an dem Ende der Tabelle gibt, wodurch eine Deadlock-Situation vermieden wird.
  • DRAM-Einträge können natürlich direkt überschrieben werden. Der DRAM wird nur für einen kleinen Teil des Indexierungsprozesses verwendet und kann deshalb effizient durchgeführt werden.
  • Es muss aber besonders darauf geachtet werden, den Speicher des DRAM zu schützen, der für Gewöhnlich ein flüchtiges Halbleiter-Speicherelement ist, aber auch ein nichtflüchtiges Halbleiter-Speicherelement sein kann, das eine prospektive Technologie benutzt, die die byteweise Speicherung von Daten ermöglichen kann, ohne dass Daten in Blöcken gelöscht werden müssen. Ein unbeabsichtigtes oder nicht vorhergesehenes Abschalten bzw. Unterbrechen von Strom von einem Hostcomputer oder Entfernen einer SSD-Vorrichtung aus ihrer Buchse ohne eine Betriebssystemfreigabe könnte den Speicher des DRAM löschen. Dementsprechend muss eine Stromhalteeinrichtung, wie zum Beispiel eine kleine Batterie, oder eine andere Energiespeichervorrichtung bereitgestellt werden, um den SSD-Controller in die Lage zu versetzen, im Falle des Entfernens einer externen Stromquelle die Inhalte des DRAM in den nichtflüchtigen Flash-Speicher schreiben zu können. Eine Haltezeit in der Größenordnung von ein paar hundert Millisekunden kann vorteilhafterweise den SSD-Controller befähigen, eine nichtflüchtige Schreiboperation durchzuführen, wodurch ermöglicht wird, dass die Inhalte des DRAM wiederhergestellt werden können, wenn das System wieder mit Energie versorgt wird. Der DRAM für das beispielhafte 256 GB-SSD muss nur etwa 1 MB betragen, um 256 k Vier-Byte-Zeiger für die LBA-Übersetzungstabelle speichern zu können, die schnell aus der 256 MB LBA-Übersetzungstabelle wiederhergestellt werden können, wenn das System erneut mit Energie versorgt wird. Eine alternative Einrichtung zur Wiederherstellung von Daten, die in dem DRAM beim Abtrennen von Strom verloren gehen könnten, liegt darin, die LBA-Indextabelle aus Daten in der LBA-Übersetzungstabelle zu rekonstruieren, die im Vergleich zu der Speichergröße des SSD ebenfalls eine kleine Tabelle ist.
  • Nun wird Bezug auf 3 genommen. Darin ist ein repräsentatives Blockdiagramm einer Massenspeicherungsvorrichtung 300 veranschaulicht, die in Übereinstimmung mit einem Ausführungsbeispiel aufgebaut ist. Die Massenspeicherungsvorrichtung umfasst einen nichtflüchtigen Speicher 301, der durch eine n Bit breite Datenleitung 306 mit einem Hostcomputer (nicht gezeigt) ver bunden ist. Der nichtflüchtige Speicher ist auch mit einer Spannungsquelle in dem Hostcomputer durch die Leitung 307 verbunden. Die Leitung 307 kann eine Vielzahl von Stromleitern umfassen, um einen Stromversorgungs-Schaltkreis ausgehend von dem Hostcomputer herzustellen. Die Massenspeicherungsvorrichtung umfasst des Weiteren einen flüchtigen Speicher 302, wie zum Beispiel einen SDRAM, der mit dem nichtflüchtigen Speicher und dem Controller 303 gekoppelt ist. Der flüchtige Speicher 302 repräsentiert einen Speicher, der leicht überschrieben werden kann, wie zum Beispiel jeweils ein Wort nach dem anderen. Eine Batterie 305 ist in der Massenspeicherungsvorrichtung eingeschlossen, um den Controller 303 in die Lage zu versetzen, Daten von dem flüchtigen Speicher 302 in den nichtflüchtigen Speicher 301 transferieren zu können. Ein zukünftiger Speicher an Stelle des flüchtigen Speichers 302 kann ein nichtflüchtiger Speicher sein, der leicht überschrieben werden kann, wodurch die Notwendigkeit für eine Batterie vermieden werden kann. Die Batterie 305 ist mit der Leitung 307 durch den Schalter 304 und die Batterieladekontrollvorrichtung 308 gekoppelt, um die Batterie in die Lage versetzen zu können, den Controller, den flüchtigen Speicher und den nichtflüchtigen Speicher während Perioden ohne Strom vom Hostcomputer mit Energie zu versorgen. Wenn zum Beispiel die Stromquelle für den Hostcomputer deaktiviert oder abgeschaltet wird oder wenn die Massenspeicherungsvorrichtung unsachgemäß von dem Hostcomputer abgekoppelt wird, dann kann der Controller 303 den Schalter 304 schließen, um die Batterie in die Lage zu versetzen, die Massenspeicherungsvorrichtung mit Energie zu versorgen, so dass Daten von dem flüchtigen Speicher in den nichtflüchtigen Speicher transferiert werden können. Der Controller kann den Schalter 304 wieder öffnen, nachdem die Daten transferiert worden sind. Auf diese Weise können sensible Daten, die in dem flüchtigen Speicher enthalten sind, im Falle eines Stromausfalls ausgehend von dem Hostcomputer und ohne wesentliche Entladung von Energie aus der Batterie geschützt werden.
  • Somit ist das Konzept eingeführt worden, eine Massenspeicherungsvorrichtung mit einer nichtflüchtigen Speichervorrichtung zu gestalten, wobei die Massenspeicherungsvorrichtung mit einer Vielzahl von Speicherverwaltungsblöcken und mit einer logischen Blockadressen-Übersetzungstabelle aufgebaut ist, die mit Zeigern auf die Speicherstellen der Speicherverwaltungsblöcke ausgebildet ist. Die Massenspeicherungsvorrichtung umfasst des Weiteren eine zweite Speichervorrichtung, die mit einer logischen Blockadressen-Indextabelle gestaltet ist. In einem Ausführungsbeispiel ist die logische Blockadressen-Indextabelle mit logischen Blockadressen-Indextabellenzeigern auf die Zeiger auf die Stellen der Speicherverwaltungsblöcke ausgebildet. In einem Ausführungsbeispiel ist die Massenspeicherungsvorrichtung so konfiguriert, dass sie Daten als Seiten in der nichtflüchtigen Speichervorrichtung speichern und lesen kann, und dass sie Blöcke von den Seiten in der nichtflüchtigen Speichervorrichtung löschen kann. In einem weiteren Ausführungsbeispiel ist die Massenspeicherungsvorrichtung so konfiguriert, dass sie Daten als Seiten in vorher gelöschten Seiten in der nichtflüchtigen Speichervorrichtung speichern kann.
  • In einem Ausführungsbeispiel ist die zweite Speichervorrichtung eine flüchtige Speichervorrichtung, die eine Batterie einschließt, die mit der zweiten Speichervorrichtung gekoppelt ist, um die zweite Speichereinrichtung beim Verlust oder beim Ausfall einer Vorspannung, die mit der Massenspeicherungsvorrichtung gekoppelt ist, mit Energie zu versorgen.
  • In einem Ausführungsbeispiel umfasst die Massenspeicherungsvorrichtung des Weiteren einen Controller, der mit der nichtflüchtigen Speichervorrichtung und mit der zweiten Speichervorrichtung gekoppelt ist, und der Controller ist so konfiguriert, dass er die logische Blockadressen-Indextabelle bei Verlust oder Ausfall einer Vorspannung, die mit der Massenspeicherungsvorrichtung gekoppelt ist, in dem nichtflüchtigen Speicher speichert. In einem Ausführungsbeispiel werden Änderungen an der logischen Blockadressen-Übersetzungstabelle in der zweiten Speichervorrichtung gesammelt und in die logische Blockadressen-Übersetzungstabelle geschrieben, wenn wenigstens eine Mindestmenge der Änderungen angesammelt worden ist. In einem Ausführungsbeispiel erzeugt die Speicherung von neuen Daten in der nichtflüchtigen Speichervorrichtung die Änderungen an der logischen Blockadressen-Übersetzungstabelle. Die Änderungen an der logischen Blockadressen-Übersetzungstabelle, die in der zweiten Speichervorrichtung angesammelt worden sind, werden in eine Seite in der logischen Blockadressen-Übersetzungstabelle geschrieben, nachdem vorherige Daten in der Seite aktualisiert, auf eine andere Seite geschrieben und dann gelöscht worden sind.
  • In einem Ausführungsbeispiel ist die logische Blockadressen-Übersetzungstabelle so groß ist, dass sie eine Anzahl von Seiten speichern kann, die wenigstens zweimal so groß wie eine Mindestanzahl von Seiten ist, die benötigt wird, um die Zeiger auf die Stellen der Speicherverwaltungsblöcke aufzunehmen.
  • Ein anderes exemplarisches Ausführungsbeispiel stellt ein Verfahren zum Gestalten einer Massenspeicherungsvorrichtung bereit. In einem Ausführungsbeispiel umfasst das Verfahren das Gestalten einer nichtflüchtigen Speichervorrichtung, das Aufteilen der nichtflüchtigen Speichervorrichtung in eine Vielzahl von Speicherverwaltungsblöcken und eine logische Blockadressen-Übersetzungstabelle, und das Ausbilden von Zeigern auf Speicherstellen der Speicherverwaltungsblöcke in der logischen Blockadressen-Übersetzungstabelle. Das Verfahren umfasst des Weiteren das Gestalten einer zweiten Speichervorrichtung, das Ausbilden einer logischen Blockadressen-Indextabelle in der zweiten Speichervorrichtung und das Ausbilden von Zeigern in der logischen Blockadressen-Indextabelle auf die Zeiger auf die Speicherstellen der Speicherverwaltungsblöcke.
  • In einem Ausführungsbeispiel werden Daten als Seiten in der nichtflüchtigen Speichervorrichtung gespeichert und gelesen, und die Daten werden als Blöcke der Seiten in der nichtflüchtigen Speichervorrichtung gelöscht. Das Verfahren umfasst des Weiteren das Speichern der Daten in den Seiten der vorher gelöschten Seiten in der nichtflüchtigen Speichervorrichtung.
  • In einem Ausführungsbeispiel ist die zweite Speichervorrichtung eine flüchtige Speichervorrichtung. Das Verfahren umfasst des Weiteren das Koppeln einer Batterie mit der zweiten Speichervorrichtung, um die zweite Speichervorrichtung im Falle eines Stromausfalls von einer Vorspannungsquelle mit Energie zu versorgen.
  • In einem Ausführungsbeispiel umfasst das Verfahren des Weiteren das Koppeln eines Controllers mit der nichtflüchtigen Speichervorrichtung und mit der zweiten Speichervorrichtung und das Konfigurieren des Controllers derart, dass er die logische Blockadressen-Indextabelle beim Verlust bzw. Ausfall ei ner Vorspannungsquelle, die mit der Massenspeicherungsvorrichtung gekoppelt ist, in der nichtflüchtigen Speichervorrichtung speichert.
  • In einem Ausführungsbeispiel umfasst das Verfahren des Weiteren das Sammeln von Änderungen an der logischen Blockadressen-Übersetzungstabelle in der zweiten Speichervorrichtung und das Schreiben der gesammelten Änderungen in die logische Blockadressen-Übersetzungstabelle, wenn wenigstens eine Mindestmenge der Änderungen angesammelt worden ist. In einem Ausführungsbeispiel erzeugt die Speicherung von Daten in der nichtflüchtigen Speichervorrichtung die Änderungen an der logischen Blockadressen-Übersetzungstabelle. Die Änderungen an der logischen Blockadressen-Übersetzungstabelle, die in der zweiten Speichervorrichtung angesammelt worden sind, werden in eine Seite in der logischen Blockadressen-Übersetzungstabelle geschrieben, nachdem Daten in einer vorher geschriebenen Seite in der logischen Blockadressen-Übersetzungstabelle aktualisiert worden sind, aus der vorher geschriebenen Seite gelöscht worden sind und in eine andere Seite in der logischen Blockadressen-Übersetzungstabelle geschrieben worden sind.
  • In einem Ausführungsbeispiel ist die logische Blockadressen-Übersetzungstabelle so groß ist, dass sie eine Anzahl von Seiten von Daten speichern kann, die wenigstens zweimal so groß wie eine Mindestanzahl von Seiten ist, die benötigt wird, um die Zeiger auf die Stellen der Speicherverwaltungsblöcke aufzunehmen.
  • Obwohl eine Massenspeicherungsvorrichtung und darauf bezogene Verfahren für die Anwendung in digitalen Datensystemen beschrieben worden sind, sollte es klar sein, dass andere Anwendungen einer Massenspeicherungsvorrichtung, wie zum Beispiel etwa der Mobilfunk und Unterhaltungssysteme, innerhalb des breiten Schutzumfangs der Erfindung in Betracht gezogen werden und nicht auf die Anwendungen in digitalen Datensystemen beschränkt zu sein brauchen.
  • Obwohl die vorliegende Erfindung vor allem in Verbindung mit spezifischen exemplarischen Ausführungsbeispielen gezeigt und beschrieben worden ist, sollte es den Fachleuten auf diesem Gebiet klar sein, dass diverse Änderungen bezüglich der Konfiguration und der Einzelheiten davon durchgeführt wer den können, ohne dass von dem Erfindungsgedanken und dem Schutzumfang der Erfindung, wie sie von den nachfolgenden Patentansprüchen definiert sind, abgewichen wird. Der Schutzumfang der Erfindung wird daher von den angehängten Patentansprüchen bestimmt, und alle Abänderungen, die in dem Bereich der Bedeutung und dem Bereich der Äquivalenz der Patentansprüche liegen, sollen von den Patentansprüchen eingeschlossen sein.

Claims (20)

  1. Massenspeicherungsvorrichtung, die Folgendes umfasst: eine nichtflüchtige Speichervorrichtung, die eine Vielzahl von Speicherverwaltungsblöcken und eine logische Blockadressen-Übersetzungstabelle umfasst, die Zeiger auf Speicherstellen der Speicherverwaltungsblöcke umfasst; eine zweite Speichervorrichtung, die eine logische Blockadressen-Indextabelle umfasst, wobei die logische Blockadressen-Indextabelle logische Blockadressen-Indextabellenzeiger auf die Zeiger auf die Speicherstellen der Speicherverwaltungsblöcke umfasst.
  2. Massenspeicherungsvorrichtung nach Anspruch 1, die des Weiteren so konfiguriert ist: dass sie Daten als Seiten in der nichtflüchtigen Speichervorrichtung speichert und liest; und dass sie Blöcke der Seiten in der nichtflüchtigen Speichervorrichtung löscht.
  3. Massenspeicherungsvorrichtung nach einem der vorhergehenden Ansprüche, wobei die Massenspeicherungsvorrichtung des Weiteren so konfiguriert ist, dass sie Daten als Seiten in vorher gelöschten Seiten in der nichtflüchtigen Speichervorrichtung speichert.
  4. Massenspeicherungsvorrichtung nach einem der vorhergehenden Ansprüche, wobei die zweite Speichervorrichtung eine flüchtige Speichervorrichtung ist.
  5. Massenspeicherungsvorrichtung nach einem der vorhergehenden Ansprüche, die des Weiteren eine Batterie einschließt, die mit der zweiten Speichervorrichtung gekoppelt ist, um die zweite Speichervorrichtung beim Verlust oder Ausfall einer Vorspannung, die mit der Massenspeicherungsvorrichtung gekoppelt ist, mit Energie zu versorgen.
  6. Massenspeicherungsvorrichtung nach einem der vorhergehenden Ansprüche, die des Weiteren einen Controller umfasst, der mit der nichtflüchtigen Speichervorrichtung und der zweiten Speichervorrichtung gekoppelt ist, wobei der Controller so konfiguriert ist, dass er die logische Blockadressen-Indextabelle beim Verlust oder Ausfall einer Vorspannung, die mit der Massenspeicherungsvorrichtung gekoppelt ist, in der nichtflüchtigen Speichervorrichtung speichert.
  7. Massenspeicherungsvorrichtung nach einem der vorhergehenden Ansprüche, wobei Änderungen an der logischen Blockadressen-Übersetzungstabelle in der zweiten Speichervorrichtung gesammelt werden und in die logische Blockadressen-Übersetzungstabelle geschrieben werden, wenn wenigstens eine Mindestmenge der Änderungen angesammelt worden ist.
  8. Massenspeicherungsvorrichtung nach einem der vorhergehenden Ansprüche, wobei die Speicherung von neuen Daten in der nichtflüchtigen Speichervorrichtung die Änderungen an der logischen Blockadressen-Übersetzungstabelle erzeugt.
  9. Massenspeicherungsvorrichtung nach einem der vorhergehenden Ansprüche, wobei die Änderungen an der logischen Blockadressen-Übersetzungstabelle, die in der zweiten Speichervorrichtung angesammelt worden sind, auf eine Seite in der logischen Blockadressen-Übersetzungstabelle geschrieben werden, nachdem vorherige Daten in der Seite aktualisiert, auf eine andere Seite geschrieben und dann gelöscht worden sind.
  10. Massenspeicherungsvorrichtung nach einem der vorhergehenden Ansprüche, wobei die logische Blockadressen-Übersetzungstabelle so groß ist, dass sie eine Anzahl von Seiten speichern kann, die mindestens zweimal so groß wie eine Mindestanzahl von Seiten ist, die benötigt wird, um die Zeiger auf die Speicherstellen der Speicherverwaltungsblöcke aufzunehmen.
  11. Verfahren zum Erstellen einer Massenspeicherungsvorrichtung, wobei das Verfahren Folgendes umfasst: Erstellen einer nichtflüchtigen Speichervorrichtung; Aufteilen der nichtflüchtigen Speichervorrichtung in eine Vielzahl von Speicherverwaltungsblöcken und eine logische Blockadressen-Übersetzungstabelle; Ausbilden von Zeigern auf Speicherstellen der Speicherverwaltungsblöcke in der logischen Blockadressen-Übersetzungstabelle; Erstellen einer zweiten Speichervorrichtung; Ausbilden einer logischen Blockadressen-Indextabelle in der zweiten Speichervorrichtung; Ausbilden von Zeigern in der logischen Blockadressen-Indextabelle auf die Zeiger auf die Speicherstellen der Speicherverwaltungsblöcke.
  12. Verfahren nach Anspruch 11, wobei: Daten als Seiten in der nichtflüchtigen Speichervorrichtung gespeichert und gelesen werden; und die Daten als Blöcke der Seiten in der nichtflüchtigen Speichervorrichtung gelöscht werden.
  13. Verfahren nach Anspruch 11 oder 12, das des Weiteren das Speichern der Daten in den Seiten der vorher gelöschten Seiten in der nichtflüchtigen Speichervorrichtung umfasst.
  14. Verfahren nach einem der vorhergehenden Ansprüche 11 bis 13, wobei die zweite Speichervorrichtung eine flüchtige Speichervorrichtung ist.
  15. Verfahren nach Anspruch 14, das des Weiteren das Koppeln einer Batterie mit der zweiten Speichervorrichtung umfasst, um die zweite Speichervorrichtung bei einem Stromausfall von einer Vorspannungsquelle mit Energie zu versorgen.
  16. Verfahren nach einem der vorhergehenden Ansprüche 11 bis 15, das des Weiteren Folgendes umfasst: Koppeln eines Controllers mit der nichtflüchtigen Speichervorrichtung und mit der zweiten Speichervorrichtung; und Konfigurieren des Controllers derart, dass er die logische Blockadressen-Indextabelle beim Verlust oder Ausfall einer Vorspannungsquelle, die mit der Massenspeicherungsvorrichtung gekoppelt ist, in der nichtflüchtigen Speichervorrichtung speichert.
  17. Verfahren nach einem der vorhergehenden Ansprüche 11 bis 16, das des Weiteren Folgendes umfasst: Sammeln von Änderungen an der logischen Blockadressen-Übersetzungstabelle in der zweiten Speichervorrichtung; und Schreiben der gesammelten Änderungen in die logische Blockadressen-Übersetzungstabelle, wenn wenigstens eine Mindestmenge der Änderungen angesammelt worden ist.
  18. Verfahren nach Anspruch 17, wobei die Speicherung von Daten in der nichtflüchtigen Speichervorrichtung die Änderungen an der logischen Blockadressen-Übersetzungstabelle erzeugt.
  19. Verfahren nach Anspruch 17 oder 18, das des Weiteren das Schreiben der Änderungen an der logischen Blockadressen-Übersetzungstabelle, die in der zweiten Speichervorrichtung angesammelt worden sind, in eine Seite in der logischen Blockadressen-Übersetzungstabelle umfasst, nachdem Daten in einer vorher geschriebenen Seite in der logischen Blockadressen-Übersetzungstabelle aktualisiert, aus der vorher geschriebenen Seite gelöscht und in eine andere Seite in der logischen Blockadressen-Übersetzungstabelle geschrieben worden sind.
  20. Verfahren nach einem der vorhergehenden Ansprüche 11 bis 19, das des Weiteren das Auslegen der Größe der logischen Blockadressen-Übersetzungstabelle derart umfasst, dass sie eine Anzahl von Seiten von Daten speichern kann, die wenigstens zweimal so groß wie eine Mindestanzahl von Seiten ist, die benötigt wird, um die Zeiger auf die Speicherstellen der Speicherverwaltungsblöcke aufzunehmen.
DE102009034651A 2008-08-01 2009-07-24 Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten Ceased DE102009034651A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/184,837 2008-08-01
US12/184,837 US8321652B2 (en) 2008-08-01 2008-08-01 Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks

Publications (1)

Publication Number Publication Date
DE102009034651A1 true DE102009034651A1 (de) 2010-04-29

Family

ID=41609514

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009034651A Ceased DE102009034651A1 (de) 2008-08-01 2009-07-24 Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten

Country Status (2)

Country Link
US (1) US8321652B2 (de)
DE (1) DE102009034651A1 (de)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112574B2 (en) * 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
TWI363272B (en) * 2008-07-11 2012-05-01 Silicon Motion Inc Data programming method and device
US8762661B2 (en) * 2008-09-18 2014-06-24 Seagate Technology Llc System and method of managing metadata
US8250333B2 (en) * 2009-01-05 2012-08-21 Sandisk Technologies Inc. Mapping address table maintenance in a memory device
TWI432959B (zh) * 2009-01-23 2014-04-01 Infortrend Technology Inc 執行儲存虛擬化之儲存子系統及儲存系統架構及其方法
TWI407310B (zh) * 2009-10-09 2013-09-01 Silicon Motion Inc 資料儲存裝置及資料存取方法
US9256527B2 (en) * 2010-07-27 2016-02-09 International Business Machines Corporation Logical to physical address mapping in storage systems comprising solid state memory devices
CN101930404B (zh) * 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
US8417914B2 (en) 2011-01-06 2013-04-09 Micron Technology, Inc. Memory address translation
US9081665B2 (en) * 2012-02-02 2015-07-14 OCZ Storage Solutions Inc. Apparatus, methods and architecture to increase write performance and endurance of non-volatile solid state memory components
US9026887B2 (en) 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US8370567B1 (en) * 2012-03-23 2013-02-05 DSSD, Inc. Storage system with self describing data
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US9202577B2 (en) 2012-03-30 2015-12-01 Intel Corporation Solid state drive management in power loss recovery
WO2013147894A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Solid state drive management in power loss recovery
US8862856B2 (en) * 2012-04-09 2014-10-14 HGST Netherlands B.V. Implementing remapping command with indirection update for indirected storage
US8898548B1 (en) * 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US10282286B2 (en) 2012-09-14 2019-05-07 Micron Technology, Inc. Address mapping using a data unit type that is variable
US9094307B1 (en) * 2012-09-18 2015-07-28 Cisco Technology, Inc. Measuring latency within a networking device
US8880786B2 (en) * 2012-09-28 2014-11-04 Apple Inc. Flash translation layer (FTL) database journaling schemes
US9268682B2 (en) * 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9507523B1 (en) 2012-10-12 2016-11-29 Western Digital Technologies, Inc. Methods, devices and systems for variable size logical page management in a solid state drive
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
US9047172B2 (en) * 2012-11-29 2015-06-02 Intel Corporation Adaptive power control of memory map storage devices
US8898410B1 (en) * 2013-02-20 2014-11-25 Google Inc. Efficient garbage collection in a data storage device
US9454474B2 (en) * 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US9208105B2 (en) 2013-05-30 2015-12-08 Dell Products, Lp System and method for intercept of UEFI block I/O protocol services for BIOS based hard drive encryption support
US20140372710A1 (en) * 2013-06-18 2014-12-18 Samsung Electronics Co., Ltd. System and method for recovering from an unexpected shutdown in a write-back caching environment
US9971729B2 (en) 2013-10-16 2018-05-15 Leviton Manufacturing Co., Inc. Power-over-Ethernet powered universal serial bus charging port
US9626331B2 (en) 2013-11-01 2017-04-18 International Business Machines Corporation Storage device control
US9684568B2 (en) 2013-12-26 2017-06-20 Silicon Motion, Inc. Data storage device and flash memory control method
US20150186257A1 (en) * 2013-12-26 2015-07-02 Anand S. Ramalingam Managing a transfer buffer for a non-volatile memory
JP6130800B2 (ja) * 2014-03-06 2017-05-17 株式会社日立製作所 計算機装置
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
KR102248915B1 (ko) 2014-03-26 2021-05-07 삼성전자주식회사 하이브리드 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 데이터 처리 방법
US9959203B2 (en) 2014-06-23 2018-05-01 Google Llc Managing storage devices
US9378149B1 (en) 2014-08-29 2016-06-28 Emc Corporation Method and system for tracking modification times of data in a storage system
TWI587211B (zh) * 2016-03-28 2017-06-11 慧榮科技股份有限公司 資料儲存裝置的映像檔製作方法
US10126962B2 (en) 2016-04-22 2018-11-13 Microsoft Technology Licensing, Llc Adapted block translation table (BTT)
US11216361B2 (en) 2016-06-29 2022-01-04 Western Digital Technologies, Inc. Translation lookup and garbage collection optimizations on storage system with paged translation table
US10229048B2 (en) 2016-06-29 2019-03-12 Western Digital Technologies, Inc. Unified paging scheme for dense and sparse translation tables on flash storage systems
US10353813B2 (en) 2016-06-29 2019-07-16 Western Digital Technologies, Inc. Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices
US10175896B2 (en) 2016-06-29 2019-01-08 Western Digital Technologies, Inc. Incremental snapshot based technique on paged translation systems
US10235287B2 (en) 2016-06-29 2019-03-19 Western Digital Technologies, Inc. Efficient management of paged translation maps in memory and flash
WO2018057039A1 (en) * 2016-09-26 2018-03-29 Hewlett-Packard Development Company, L. Update memory management information to boot an electronic device from a reduced power mode
US10528463B2 (en) * 2016-09-28 2020-01-07 Intel Corporation Technologies for combining logical-to-physical address table updates in a single write operation
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10360163B2 (en) * 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US11113205B2 (en) 2017-07-31 2021-09-07 Micron Technology, Inc. Die addressing using a reduced size translation table entry
US10534718B2 (en) 2017-07-31 2020-01-14 Micron Technology, Inc. Variable-size table for address translation
US10628326B2 (en) 2017-08-21 2020-04-21 Micron Technology, Inc. Logical to physical mapping
CN109753224B (zh) * 2017-11-03 2022-05-13 浙江宇视科技有限公司 存储结构及存储结构配置方法
US10795771B2 (en) * 2018-02-28 2020-10-06 Dell Products, L.P. Information handling system with reduced data loss in block mode
CN110275837A (zh) * 2018-03-15 2019-09-24 光宝电子(广州)有限公司 固态储存装置的对应表管理方法
TWI679538B (zh) * 2018-03-31 2019-12-11 慧榮科技股份有限公司 資料儲存系統之控制單元以及邏輯至物理映射表更新方法
US11061598B2 (en) * 2019-03-25 2021-07-13 Western Digital Technologies, Inc. Optimized handling of multiple copies in storage management
US10990526B1 (en) * 2020-04-30 2021-04-27 Micron Technology, Inc. Handling asynchronous power loss in a memory sub-system that programs sequentially
US11640252B2 (en) * 2021-03-18 2023-05-02 Western Digital Technologies, Inc. Idle-power mitigation circuit

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1464959B1 (de) 2003-04-03 2006-07-12 Services Petroliers Schlumberger Akustisches Verfahren zur Bestimmung der Zementverbindung in Bohrlöchern
WO2007058617A1 (en) 2005-11-17 2007-05-24 Chee Keng Chang A controller for non-volatile memories, and methods of operating the memory controller
US7461229B2 (en) * 2006-05-23 2008-12-02 Dataram, Inc. Software program for managing and protecting data written to a hybrid solid-state disk drive
TW200805394A (en) 2006-07-07 2008-01-16 Alcor Micro Corp Memory storage device and the read/write method thereof
US8510533B2 (en) 2006-12-27 2013-08-13 Intel Corporation Method of managing data on a non-volatile memory
JP4967680B2 (ja) 2007-01-23 2012-07-04 ソニー株式会社 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
US8397014B2 (en) * 2008-02-04 2013-03-12 Apple Inc. Memory mapping restore and garbage collection operations

Also Published As

Publication number Publication date
US20100030999A1 (en) 2010-02-04
US8321652B2 (en) 2012-11-27

Similar Documents

Publication Publication Date Title
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE60121697T2 (de) Verfahren zum ansteuern von remapping in einem flash-speicher und in einer dafür geeigneten flash-speicher-architektur
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE19782041B4 (de) Verfahren zum Durchführen eines kontinuierlichen Überschreibens einer Datei in einem nicht-flüchtigen Speicher
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE69710665T2 (de) Methode und Apparat zur Speicherverwaltung
DE69034227T2 (de) EEprom-System mit Blocklöschung
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE102009048179A1 (de) Prozess und Verfahren für eine Löschstrategie in Festkörperplatten
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102009031125A1 (de) Nand-Fehlerbehandlung
EP2923261B1 (de) VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS
DE112008000180T5 (de) Verfahren und System für die Umsetzung eines Fast-Wakeup eines Flashspeichersystems
DE102006003261A1 (de) Speichersystem und Verfahren zur Datenzusammenführung
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE102009046444A1 (de) An die Software angepasste Abnutzungsausgleichung
DE102010018765A1 (de) Speichervorrichtung und Speicherverfahren
DE102018105854A1 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE102009031923A1 (de) Verfahren zum Verwalten von Datenobjekten
DE112010004667T5 (de) Speichervorrichtung und Speichersteuerung
DE102005063250A1 (de) Datenspeicherungssteuersystem, Speicher- und Rechnersystem und Betriebsverfahren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R006 Appeal filed
R008 Case pending at federal patent court
R003 Refusal decision now final
R010 Appeal proceedings settled by withdrawal of appeal(s) or in some other way