DE112015004873T5 - Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung - Google Patents

Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung Download PDF

Info

Publication number
DE112015004873T5
DE112015004873T5 DE112015004873.1T DE112015004873T DE112015004873T5 DE 112015004873 T5 DE112015004873 T5 DE 112015004873T5 DE 112015004873 T DE112015004873 T DE 112015004873T DE 112015004873 T5 DE112015004873 T5 DE 112015004873T5
Authority
DE
Germany
Prior art keywords
storage device
write cache
data
command
mapping table
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
DE112015004873.1T
Other languages
English (en)
Inventor
Senthil Thangaraj
Divya Reddy
Venkatesh K. Paulsamy
Satish Babu Vasudeva
Jimmy Sy
Rakesh Chandra
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 DE112015004873T5 publication Critical patent/DE112015004873T5/de
Ceased legal-status Critical Current

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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • 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
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7207Details relating to flash memory management management of metadata or control 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/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

Eine Speicherungsvorrichtung und ein Verfahren ermöglichen Verarbeitung von Entabbildungsbefehlen. In einem Aspekt umfasst das Verfahren (1) Bestimmen, ob eine Größe eines Entabbildungsbefehls eine Größenschwelle erfüllt (z.B. größer oder gleich dieser ist), (2) wenn die Größe des Entabbildungsbefehls die Größenschwelle erfüllt, Ausführen einer oder mehrerer Operationen eines ersten Entabbildungsprozesses, wobei der erste Entabbildungsprozess Abspeichern einer Abbildungstabelle in nichtflüchtigem Speicher einer Speicherungsvorrichtung unterlässt (nicht umfasst) und (3) wenn die Größe des Entabbildungsbefehls die Größenschwelle nicht erfüllt, Ausführen einer oder mehrerer Operationen eines zweiten Entabbildungsprozesses, wobei der zweite Entabbildungsprozess Abspeichern der Abbildungstabelle in nichtflüchtigem Speicher der Speicherungsvorrichtung unterlässt (nicht umfasst) und Flushen eines Schreib-Cache in nichtflüchtigen Speicher der Speicherungsvorrichtung unterlässt (nicht umfasst).

Description

  • TECHNISCHES GEBIET
  • Die offenbarten Ausführungsformen betreffen allgemein Speichersysteme und insbesondere die Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung (die z.B. eine oder mehrere Flash-Speichervorrichtungen umfasst).
  • STAND DER TECHNIK
  • Halbleiter-Speichervorrichtungen, darunter Flash-Speicher, benutzen typischerweise Speicherzellen zum Speichern von Daten als einen elektrischen Wert, wie etwa eine elektrische Ladung oder Spannung. Eine Flash-Speicherzelle umfasst z.B. einen einzelnen Transistor mit einem Floating-Gate, das zum Speichern einer Ladung verwendet wird, die einen Datenwert repräsentiert. Flash-Speicher ist eine nichtflüchtige Datenspeicherungsvorrichtung, die elektrisch gelöscht und umprogrammiert werden kann. Allgemeiner behält nichtflüchtiger Speicher (z.B. Flash-Speicher sowie andere Arten von nichtflüchtigem Speicher, die unter Verwendung vielfältiger Technologien implementiert werden) gespeicherte Informationen, selbst wenn er nicht mit Strom versorgt wird, im Gegensatz zu flüchtigem Speicher, der Stromversorgung benötigt, um die gespeicherten Informationen aufrechtzuerhalten.
  • Da Flash-Speicher nur eine begrenzte Anzahl von Malen programmiert und gelöscht werden kann und ferner einige Speicherbefehle in einer vordefinierten Zeitdauer abgeschlossen werden müssen (z.B. um Qualifikationsanforderungen zu erfüllen), ist es wichtig, Speicherverwaltungsprozesse (z.B. Befehlsverarbeitung) zu optimieren, um die Leistungsfähigkeit und Standzeit von Speichervorrichtungen zu verbessern.
  • KURZFASSUNG
  • Verschiedene Ausführungsformen von Systemen, Verfahren und Vorrichtungen im Schutzumfang der angefügten Ansprüche weisen jeweils mehrere Aspekte auf, von denen kein einzelner alleinig für die hier beschriebenen Attribute verantwortlich ist. Ohne Beschränkung des Schutzumfangs der angefügten Ansprüche wird nach Betrachtung der vorliegenden Offenbarung und insbesondere nach Betrachtung des Abschnitts mit dem Titel "Ausführliche Beschreibung" verständlich werden, wie Aspekte verschiedener Ausführungsformen verwendet werden, um Verarbeitung von Entabbildungsbefehlen zur Verbesserung von Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung zu ermöglichen. In einem Aspekt werden eine oder mehrere Operationen eines ersten Entabbildungsprozesses gemäß einer Bestimmung ausgeführt, dass eine Größe eines Entabbildungsbefehls eine Größenschwelle erfüllt, und eine oder mehrere Operationen eines zweiten Entabbildungsprozesses gemäß einer Bestimmung ausgeführt, dass der Entabbildungsbefehl die Größenschwelle nicht erfüllt, wobei weder der erste Entabbildungsprozess noch der zweite Entabbildungsprozess Abspeichern einer Abbildungstabelle in nichtflüchtigem Speicher einer Speicherungsvorrichtung umfasst.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Damit die vorliegende Offenbarung ausführlicher verstanden werden kann, erfolgt eine konkretere Beschreibung anhand der Merkmale verschiedener Ausführungsformen von denen einige in den angefügten Zeichnungen dargestellt sind. Die angefügten Zeichnungen stellen jedoch lediglich sachbezogene Merkmale der vorliegenden Offenbarung dar und sind deshalb nicht als einschränkend zu betrachten, da die Beschreibung andere effektive Merkmale zulassen kann.
  • 1 ist eine Blockdarstellung einer Implementierung eines Datenspeicherungssystems gemäß einigen Ausführungsformen.
  • 2 ist eine Blockdarstellung einer Implementierung eines Verwaltungsmoduls gemäß einigen Ausführungsformen.
  • 3 ist eine Blockdarstellung eines logischen Adressenraums und insbesondere eines Logikblockadressen- bzw. LBA-Raums gemäß einigen Ausführungsformen.
  • 4 ist eine Blockdarstellung einer Abbildungstabelle und eines physischen Adressenraums gemäß einigen Ausführungsformen.
  • 5A5C zeigen eine Flussdiagrammdarstellung eines Verfahrens zur Verwaltung eines Speicherungssystems gemäß einigen Ausführungsformen.
  • 6 ist eine Blockdarstellung des Abspeicherns von Daten in einer Speicherungsvorrichtung und insbesondere des Abspeicherns von in flüchtigem Speicher in einer Abbildungstabelle, einem Log und einem Schreib-Cache gespeicherten Informationen in nichtflüchtigem Speicher gemäß einigen Ausführungsformen.
  • 7 zeigt eine Flussdiagrammdarstellung eines Verfahrens zum Verarbeiten von Entabbildungsbefehlen in einer Speicherungsvorrichtung gemäß einigen Ausführungsformen.
  • Gemäß der üblichen Praxis sind die verschiedenen in den Zeichnungen dargestellten Merkmale möglicherweise nicht maßstabsgetreu gezeichnet. Die Abmessungen der verschiedenen Merkmale können dementsprechend der Klarheit halber willkürlich vergrößert oder verkleinert sein. Außerdem können einige der Zeichnungen nicht alle Komponenten eines gegebenen Systems, eines gegebenen Verfahrens oder einer gegebenen Vorrichtung abbilden. Als letztes können in der Beschreibung und in den Figuren durchweg gleiche Bezugszahlen verwendet werden, um gleiche Merkmale zu bezeichnen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die verschiedenen hier beschriebenen Ausführungsformen umfassen Systeme, Verfahren und/oder Vorrichtungen, mit denen Verarbeitung von Entabbildungsbefehlen zur Verbesserung von Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung ermöglicht wird. Einige Ausführungsformen umfassen Systeme, Verfahren und/oder Vorrichtungen zum Ausführen einer oder mehrerer Operationen eines ersten Entabbildungsprozesses gemäß einer Bestimmung, dass eine Größe eines Entabbildungsbefehls eine Größenschwelle erfüllt (z.B. größer oder gleich dieser ist), und zum Ausführen einer oder mehrerer Operationen eines zweiten Entabbildungsprozesses gemäß einer Bestimmung, dass der Entabbildungsbefehl die Größenschwelle nicht erfüllt (z.B. kleiner als diese ist), wobei weder der erste Entabbildungsprozess noch der zweite Entabbildungsprozess Abspeichern einer Abbildungstabelle in nichtflüchtigem Speicher einer Speicherungsvorrichtung umfasst.
    • (A1) Genauer gesagt umfassen einige Ausführungsformen ein Verfahren zum Verwalten eines Speicherungssystems. Bei einigen Ausführungsformen umfasst das Verfahren (1) Unterhalten eines Schreib-Cache in flüchtigem Speicher zum Speichern von Daten, die Schreibbefehlen von einem Host entsprechen, wobei der Host wirksam mit einer Speicherungsvorrichtung des Speicherungssystems gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst, (2) Unterhalten einer Abbildungstabelle in flüchtigem Speicher, wobei die Abbildungstabelle zum Übersetzen von logischen Adressen in einem logischen Adressenraum, der dem Host verfügbar ist, in physische Adressen in einem physischen Adressenraum der Speicherungsvorrichtung verwendet wird, (3) Empfangen eines Entabbildungsbefehls vom Host in der Speicherungsvorrichtung, (4) Bestimmen, ob eine Größe des Entabbildungsbefehls eine Größenschwelle erfüllt, wobei die Größe des Entabbildungsbefehls einer Anzahl von durch den Entabbildungsbefehl ent-abzubildenden logischen Adressen entspricht, (5) gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle erfüllt, Ausführen einer oder mehrerer Operationen eines ersten Entabbildungsprozesses, wobei der erste Entabbildungsprozess Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung unterlässt (d.h. nicht umfasst), und (6) gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle nicht erfüllt, Ausführen einer oder mehrerer Operationen eines zweiten Entabbildungsprozesses, wobei der zweite Entabbildungsprozess Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung unterlässt (d.h. nicht umfasst) und Flushen eines Schreib-Cache in dem nichtflüchtigen Speicher der Speicherungsvorrichtung unterlässt (d.h. nicht umfasst).
    • (A2) Bei einigen Ausführungsformen des Verfahrens von A1 umfassen die eine oder mehreren Operationen des ersten Entabbildungsprozesses (1) Bestimmen einer Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, und Bestimmen, ob die Anzahl von Einträgen in dem Schreib-Cache, die schmutzige Daten enthalten, eine Schwelle erfüllt, (2) gemäß einer Bestimmung, dass die Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, die Schwelle erfüllt, Flushen des Schreib-Cache in den nichtflüchtigen Speicher der Speicherungsvorrichtung, (3) gemäß einer Bestimmung, dass die Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, die Schwelle nicht erfüllt, Auslöschen jedes Eintrags des Schreib-Cache, der schmutzige Daten enthält, für eine durch den Entabbildungsbefehl ent-abgebildete logische Adresse, (4) Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl, und (5) Hinzufügen eines oder mehrerer Einträge zu einem Log, wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen.
    • (A3) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A2 umfassen die eine oder mehreren Operationen des zweiten Entabbildungsprozesses Auslöschen des Eintrags aus dem Schreib-Cache für jede logische Adresse, die durch den Entabbildungsbefehl spezifiziert wird, gemäß einer Bestimmung, dass die logische Adresse in einem Eintrag aus dem Schreib-Cache repräsentiert wird.
    • (A4) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A2 umfassen die eine oder mehreren Operationen des zweiten Entabbildungsprozesses (1) Bestimmen, ob Daten für eine jeweilige durch den Entabbildungsbefehl spezifizierte logische Adresse in dem Schreib-Cache gespeichert sind, (2) gemäß einer Bestimmung, dass die Daten für die jeweilige logische Adresse in dem Schreib-Cache gespeichert sind: (a) Bestimmen, ob die Daten für die jeweilige logische Adresse im Fluge befindlich sind, (b) gemäß einer Bestimmung, dass die Daten für die jeweilige logische Adresse im Fluge befindlich sind, Warten auf den Abschluss einer entsprechenden Schreiboperation, und (c) Auslöschen eines die Daten für die jeweilige logische Adresse speichernden Eintrags aus dem Schreib-Cache, (3) Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl, und (4) Hinzufügen eines oder mehrerer Einträge zu einem Log, wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen
    • (A5) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A4 erlaubt der zweite Entabbildungsprozess Verarbeitung anderer Befehle vom Host zusammen mit dem Entabbildungsbefehl.
    • (A6) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A5 entspricht Ansprechzeit des Entabbildungsbefehls der Größe des Entabbildungsbefehls.
    • (A7) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A6 umfasst das Verfahren ferner Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung auf geplanter Basis, die von vom Host empfangenen Entabbildungsbefehlen unabhängig ist.
    • (A8) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A7 umfasst das Log einen Eintrag für einen jeweiligen Entabbildungsbefehl, der Informationen umfasst, die mehrere gemäß dem jeweiligen Entabbildungsbefehl ent-abgebildete logische Adressen identifizieren.
    • (A9) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A8 umfasst das Log einen Eintrag für einen jeweiligen Entabbildungsbefehl, der Informationen umfasst, die einen Bereich von gemäß dem jeweiligen Entabbildungsbefehl ent-abgebildeten logischen Adressen identifizieren.
    • (A10) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A9 umfasst die Speicherungsvorrichtung eine oder mehrere Flash-Speichervorrichtungen.
    • (A11) In einem anderen Aspekt umfasst eine Speicherungsvorrichtung nichtflüchtigen Speicher (der z.B. eine oder mehrere nichtflüchtige Speicherungsvorrichtung, wie etwa Flash-Speicherungsvorrichtungen, umfasst), einen Schreib-Cache und einen Speicherungscontroller mit einem oder mehreren Prozessoren, die dafür ausgelegt sind, Anweisungen in einem oder mehreren Programmen auszuführen, wobei der Speicherungscontroller dafür ausgelegt ist, beliebige der hier beschriebenen Verfahren A1 bis A10 auszuführen.
    • (A12) Bei einigen Ausführungsformen der Speicherungsvorrichtung von A11 umfasst der Speicherungscontroller ein Schreib-Cache-Modul zum Unterhalten des Schreib-Cache; ein Abbildungsmodul zum Unterhalten der Abbildungstabelle; und ein Entabbildungsmodul, das bestimmt, ob die Größe des Entabbildungsbefehls die Größenschwelle erfüllt, gemäß der Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle erfüllt, den ersten Entabbildungsprozess ausführt und gemäß der Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle nicht erfüllt, den zweiten Entabbildungsprozess ausführt.
    • (A13) In einem weiteren Aspekt werden beliebige der oben beschriebenen Verfahren A1 bis A10 durch eine Speicherungsvorrichtung ausgeführt, die Mittel zum Ausführen beliebiger der hier beschriebenen Verfahren umfasst.
    • (A14) In einem weiteren Aspekt umfasst ein Speicherungssystem (1) ein Speicherungsmedium (das z.B. eine oder mehrere nichtflüchtige Speicherungsvorrichtungen, wie etwa Flash-Speichervorrichtungen, umfasst) (2) einen oder mehrere Prozessoren und (3) Speicher (z.B. nichtflüchtigen Speicher oder flüchtigen Speicher in dem Speicherungssystem), der ein oder mehrere Programme speichert, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, bewirken, dass das Speicherungssystem Ausführung beliebiger der hier beschriebenen Verfahren A1 bis A10 durchführt oder steuert.
    • (A15) In einem weiteren Aspekt umfassen einige Ausführungsformen ein nichttransitorisches computerlesbares Speicherungsmedium, das ein oder mehrere Programme speichert, die für Ausführung durch einen oder mehrere Prozessoren einer Speicherungsvorrichtung ausgelegt sind, wobei das eine oder die mehreren Programme Anweisungen zum Ausführen beliebiger der hier beschriebenen Verfahren umfassen.
  • Es werden hier zahlreiche Einzelheiten beschrieben, um ein umfassendes Verständnis der in den beigefügten Zeichnungen dargestellten Ausführungsbeispiele zu gewährleisten. Einige Ausführungsformen können jedoch ohne viele der spezifischen Einzelheiten praktiziert werden, und der Schutzumfang der Ansprüche wird nur durch die Merkmale und Aspekte beschränkt, die spezifisch in den Ansprüchen angeführt werden. Ferner wurden wohlbekannte Verfahren, Komponenten und Schaltungen nicht in erschöpfendem Detail beschrieben, um so betreffende Aspekte der hier beschriebenen Ausführungsformen nicht unnötigerweise zu verschleiern.
  • 1 ist eine Blockdarstellung einer Speicherungsvorrichtung 120 in einem Datenspeicherungssystem 100 gemäß einigen Ausführungsformen. Obwohl einige beispielhafte Merkmale dargestellt sind, wurden der Kürze halber verschiedene andere Merkmale nicht dargestellt, um so betreffende Aspekte der hier offenbarten beispielhaften Ausführungsformen nicht zu verschleiern. Zu diesem Zweck umfasst als nicht einschränkendes Beispiel die Speicherungsvorrichtung 120 (die manchmal auch als Informationsspeicherungsvorrichtung oder Datenspeicherungsvorrichtung oder Speichervorrichtung bezeichnet wird) einen Speicherungscontroller 124, einen oder mehrere Controller 130 für nichtflüchtigen Speicher (NVM), wie etwa Flash-Controller, und nichtflüchtigen Speicher (z.B. eine oder mehrere NVM-Vorrichtungen 140, 142, wie etwa eine oder mehrere Flash-Speichervorrichtungen) und wird in Verbindung mit dem Computersystem 110 verwendet. Bei einigen Ausführungsformen umfasst die Speicherungsvorrichtung 120 eine einzige NVM-Vorrichtung, während die Speicherungsvorrichtung 120 bei anderen Ausführungsformen mehrere NVM-Vorrichtungen umfasst. Bei einigen Ausführungsformen umfassen die NVM-Vorrichtungen 140, 142 Flash-Speicher des NAND-Typs oder Flash-Speicher des NOR-Typs. Ferner sind bei einigen Ausführungsformen die NVM-Controller 130 SSD-Controller (Solid-State Drive). Es können jedoch andere Arten von Speicherungsmedien gemäß Aspekten einer Vielfalt von Ausführungsformen vorgesehen sein (z.B. PCRAM, ReRAM, STT-RAM usw.). Bei einigen Ausführungsformen umfasst eine Flash-Speichervorrichtung einen oder mehrere Flash-Speicherchips, eine oder mehrere Flash-Speicherkapselungen, einen oder mehrere Flash-Speicherkanäle oder dergleichen. Bei einigen Ausführungsformen kann das Datenspeicherungssystem 100 mehr als eine Speicherungsvorrichtung 120 enthalten.
  • Das Computersystem 110 ist durch Datenverbindungen 101 mit dem Speicherungscontroller 124 gekoppelt. Bei einigen Ausführungsformen umfasst das Computersystem 110 jedoch den Speicherungscontroller 124 oder einen Teil des Speicherungscontrollers 124 als eine Komponente und/oder ein Subsystem. Zum Beispiel wird bei einigen Ausführungsformen ein Teil der oder die gesamte Funktionalität des Speicherungscontroller 124 durch auf dem Computersystem 110 ausgeführte Software implementiert. Das Computersystem 110 kann eine beliebige geeignete Computervorrichtung sein, wie etwa ein Computer, ein Laptop-Computer, eine Tablet-Vorrichtung, ein Netbook, ein Internetkiosk, ein Personal Digital Assistant, ein Mobiltelefon, ein Smartphone, eine Spielvorrichtung, ein Computerserver oder eine beliebige andere Datenverarbeitungsvorrichtung. Das Computersystem 110 wird manchmal als Host, Hostsystem, Client oder Clientsystem bezeichnet. Bei einigen Ausführungsformen ist das Computersystem 110 ein Serversystem, wie etwa ein Serversystem in einer Datenzentrale. Bei einigen Ausführungsformen umfasst das Computersystem 110 einen oder mehrere Prozessoren, eine oder mehrere Arten von Speicher, eine Anzeige und/oder andere Benutzeroberflächenkomponenten wie eine Tastatur, eine Berührungsschirmanzeige, eine Maus, ein Trackpad, eine Digitalkamera und/oder eine beliebige Anzahl von Ergänzungsvorrichtungen zum Hinzufügen von Funktionalität. Bei einigen Ausführungsformen verfügt das Computersystem 110 nicht über eine Anzeige und andere Benutzeroberflächenkomponenten.
  • Der eine oder die mehreren NVM-Controller 130 sind durch Verbindungen 103 mit dem Speicherungscontroller 124 gekoppelt. Die Verbindungen 103 werden manchmal als Datenverbindungen bezeichnet, übermitteln aber typischerweise Befehle zusätzlich zu Daten und Übermitteln gegebenenfalls Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen zusätzlich zu Datenwerten, die in den NVM-Vorrichtungen 140, 142 zu speichern sind, und Datenwerten, die aus den NVM-Vorrichtungen 140, 142 gelesen werden. Bei einigen Ausführungsformen sind jedoch der Speicherungscontroller 124, der eine oder die mehreren NVM-Controller 130 und die NVM-Vorrichtungen 140, 142 in derselben Vorrichtung (d.h. einer integrierten Vorrichtung) wie Komponenten enthalten. Ferner sind bei einigen Ausführungsformen der Speicherungscontroller 124, der eine oder die mehreren NVM-Controller 130 und die NVM-Vorrichtungen 140, 142 in einer Hostvorrichtung (z.B. das Computersystem 110), wie etwa eine mobile Vorrichtung, ein Tablet oder eine andere Computer- oder computergesteuerte Vorrichtung, eingebettet, und die hier beschriebenen Verfahren werden mindestens teilweise durch den eingebetteten Speicherungscontroller ausgeführt.
  • Bei einigen Ausführungsformen umfasst die Speicherungsvorrichtung 120 NVM-Vorrichtungen 140, 142, wie etwa Flash-Speichervorrichtungen (z.B. NVM-Vorrichtungen 140-1 bis 140-n und NVM-Vorrichtungen 142-1 bis 142-k) und NVM-Controller 130 (z.B. NVM-Controller 130-1 bis 130-m). Anders gesehen umfasst die Speicherungsvorrichtung 120 m Speicherkanäle, die jeweils einen NVM-Controller 130 und eine Menge von NVM-Vorrichtungen 140 oder 142, die mit dem NVM-Controller 130 gekoppelt sind, aufweisen, wobei m eine ganze Zahl größer als 1 ist. Bei einigen Ausführungsformen teilen sich jedoch zwei oder mehr Speicherkanäle einen NVM-Controller 130. In jedem Beispiel hat jeder Speicherkanal seine eigene distinkte Menge von NVM-Vorrichtungen 140 oder 142. In einem nicht einschränkenden Beispiel beträgt die Anzahl von Speicherkanälen in einer typischen Speicherungsvorrichtung 8, 16 oder 32. In einem anderen nicht einschränkendem Beispiel beträgt die Anzahl der NVM-Vorrichtungen 140 oder 142 pro Speicherkanal typischerweise 8, 16, 32 oder 64. Ferner ist bei einigen Ausführungsformen die Anzahl der NVM-Vorrichtungen 140/142 in verschiedenen Speicherkanälen verschieden.
  • Bei einigen Ausführungsformen umfasst jeder NVM-Controller der NVM-Controller 130 eine oder mehrere Verarbeitungseinheiten (die manchmal auch als CPUs oder Prozessoren oder Mikroprozessoren oder Mikrocontroller bezeichnet werden), die dafür ausgelegt sind, Anweisungen in einem oder mehreren Programmen (z.B. in den NVM-Controllern 130) auszuführen. Bei einigen Ausführungsformen teilen sich den einen oder die mehreren Prozessoren eine oder mehrere Komponenten in der Funktion der NVM-Controller 130 und in einigen Fällen darüber hinaus. Die NVM-Vorrichtungen 140, 142 sind durch Verbindungen mit den NVM-Controllern 130 gekoppelt, die typischerweise Befehle zusätzlich zu Daten und gegebenenfalls Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen zusätzlich zu Datenwerten, die in den NVM-Vorrichtungen 140, 142 zu speichern sind, und Datenwerten, die aus den NVM-Vorrichtungen 140, 142 gelesen werden, übermitteln. Die NVM-Vorrichtungen 140, 142 können eine beliebige Anzahl (d.h. eine oder mehrere) von Speichervorrichtungen umfassen, darunter, aber ohne Beschränkung, nichtflüchtige Halbleiter-Speichervorrichtungen wie Flash-Speichervorrichtung(en).
  • Die Flash-Speichervorrichtung(en) (z.B. die NVM-Vorrichtungen 140, 142) können zum Beispiel für Unternehmensspeicherung ausgelegt sein, die sich für Anwendungen wie Cloud-Datenverarbeitung, für Datenbankanwendungen, primäre und/oder sekundäre Speicherung oder zum Cache-Speichern von Daten, die in sekundärer Speicherung wie etwa Festplattenlaufwerken, gespeichert werden (oder zu speichern sind) geeignet ist. Zusätzlich und/oder als Alternative können Flash-Speichervorrichtung(en) (z.B. die NVM-Vorrichtungen 140, 142) auch für Anwendungen auf relativ kleinerem Maßstab ausgelegt sein, wie etwa persönliche Flash-Laufwerke oder Festplattenersätze für PCs, Laptop- und Tablet-Computer. Obwohl hier als Beispiel Flash-Speichervorrichtungen und Flash-Controller verwendet werden, umfasst bei einigen Ausführungsformen die Speicherungsvorrichtung 120 andere nichtflüchtige Speicherungsvorrichtung(en) und entsprechende(n) nichtflüchtige(n) Speichercontroller.
  • Bei einigen Ausführungsformen werden die NVM-Vorrichtungen 140, 142 in eine Anzahl von adressierbaren und einzeln auswählbaren Blöcken aufgeteilt. Bei einigen Ausführungsformen sind die einzeln auswählbaren Blöcke die löschbaren Einheiten minimaler Größe in einer Flash-Speichervorrichtungen. Anders ausgedrückt, enthält jeder Block die Mindestanzahl von Speicherzellen, die gleichzeitig gelöscht werden kann. Jeder Block wird gewöhnlich weiter in mehrere Seiten und/oder Wortleitungen aufgeteilt, wobei jede Seite oder Wortleitung typischerweise eine Instanz des kleinsten einzeln zugänglichen (lesbaren) Teils in einem Block ist. Bei einigen Ausführungsformen (die z.B. einige Arten von Flash-Speicher verwenden) ist die kleinste einzeln zugängliche Einheit eines Datensatzes jedoch ein Sektor, der eine Subeinheit einer Seite ist. Das heißt, ein Block umfasst mehrere Seiten, jede Seite enthält mehrere Sektoren und jeder Sektor ist die Mindesteinheit von Daten zum Lesen von Daten von der Flash-Speichervorrichtung.
  • Obwohl Datenspeicherungsdichten von nichtflüchtigen Halbleiter-Speichervorrichtungen im Allgemeinen zunehmen, ist, wie oben erwähnt, ein Nachteil der Vergrößerung der Speicherungsdichte, dass die gespeicherten Daten anfälliger dafür sind, falsch gespeichert und/oder gelesen zu werden. Bei einigen Ausführungsformen kann Fehlersteuercodierung benutzt werden, um die Anzahl unkorrigierbarer Fehler zu begrenzen, die durch elektrische Fluktuationen, Defekte im Speicherungsmedium, Betriebsbedingungen, Vorrichtungsvorgeschichte, Schreib-Lese-Schaltkreise usw. oder eine Kombination dieser und verschiedener anderer Faktoren eingeführt werden.
  • Bei einigen Ausführungsformen umfasst der Speicherungscontroller 124 ein Verwaltungsmodul 121-1, eine Hostschnittstelle 129, eine Speicherungsmedium-E/A-Schnittstelle 128 und zusätzliche Module 125. Der Speicherungscontroller 124 kann verschiedene zusätzliche Merkmale umfassen, die der Klarheit halber, und um die betreffenden Merkmale der hier offenbarten beispielhaften Ausführungsformen nicht zu verschleiern, nicht dargestellt wurden, und es kann eine andere Anordnung von Merkmalen möglich sein.
  • Die Hostschnittstelle 129 stellt durch Datenverbindungen 101 eine Schnittstelle zu dem Computersystem 110 bereit. Ähnlich stellt die Speicherungsmediumschnittstelle 128 durch Verbindungen 103 eine Schnittstelle zu den NVM-Controllern 130 bereit. Bei einigen Ausführungsformen umfasst die Speicherungsmediumschnittstelle 128 Lese- und Schreibschaltkreise, darunter Schaltkreise mit der Fähigkeit, NVM-Controllern 130 Lesesignale zuzuführen (z.B. Leseschwellenspannungen für Flash-Speicher des NAND-Typs). Bei einigen Ausführungsformen werden die Verbindungen 101 und die Verbindungen 103 als Kommunikationsmedien implementiert, über die Befehle und Daten unter Verwendung eines Protokolls wie DDR3, SCSI, SATA, SAS oder dergleichen übermittelt werden. Bei einigen Ausführungsformen umfasst der Speicherungscontroller 124 einen oder mehrere Verarbeitungseinheiten (die manchmal auch als CPUs oder Prozessoren oder Mikroprozessoren oder Mikrocontroller bezeichnet werden), die dafür ausgelegt sind, Anweisungen in einem oder mehreren Programmen (z.B. in dem Speicherungscontroller 124) auszuführen. Bei einigen Ausführungsformen teilen sich den einen oder die mehreren Prozessoren eine oder mehrere Komponenten in der Funktion des Speicherungscontrollers 124 und in einigen Fällen darüber hinaus.
  • Bei einigen Ausführungsformen umfasst das Verwaltungsmodul 121-1 eine oder mehrere Verarbeitungseinheiten (die manchmal auch als CPUs oder Prozessoren oder Mikroprozessoren oder Mikrocontroller bezeichnet werden) 122, die dafür ausgelegt sind, Anweisungen in einem oder mehreren Programmen (z.B. in dem Verwaltungsmodul 121-1) auszuführen. Bei einigen Ausführungsformen teilen sich den einen oder die mehreren CPUs 122 eine oder mehrere Komponenten in der Funktion des Speicherungscontrollers 124 und in einigen Fällen darüber hinaus. Das Verwaltungsmodul 121-1 ist mit der Hostschnittstelle 129, zusätzlichen Modulen 125 und der Speicherungsmediumschnittstelle 128 gekoppelt, um den Betrieb dieser Komponenten zu koordinieren. Bei einigen Ausführungsformen werden ein oder mehrere Module des Verwaltungsmoduls 121-1 in dem Verwaltungsmodul 121-2 des Computersystems 110 implementiert. Bei einigen Ausführungsformen sind ein oder mehrere Prozessoren des Computersystems 110 (nicht gezeigt) dafür ausgelegt, Anweisungen in einem oder mehreren Programmen (z.B. in dem Verwaltungsmodul 121-2) auszuführen. Das Verwaltungsmodul 121-2 ist mit der Speicherungsvorrichtung 120 gekoppelt, um den Betrieb der Speicherungsvorrichtung 120 zu verwalten.
  • Es sind zusätzliche Module 125 mit der Speicherungsmediumschnittstelle 128, der Hostschnittstelle 129 und dem Verwaltungsmodul 121-1 gekoppelt. Beispielsweise können die zusätzlichen Module 125 ein Fehlerkontrollmodul zur Begrenzung der Anzahl von unkorrigierbaren Fehlern umfassen, die unabsichtlich während Schreibvorgängen in Speicher und/oder Lesevorgängen aus Speicher in Daten eingeführt werden. Bei einigen Ausführungsformen werden die zusätzlichen Module 125 in Software durch eine oder mehrere CPUs 122 des Verwaltungsmoduls 121-1 ausgeführt, und bei anderen Ausführungsformen werden die zusätzlichen Module 125 ganz oder teilweise unter Verwendung von Spezialschaltkreisen (z.B. zum Ausführen von Codierungs- und Decodierungsfunktionen) implementiert. Bei einigen Ausführungsformen werden die zusätzlichen Module 125 ganz oder teilweise durch auf dem Computersystem 110 ausgeführte Software implementiert.
  • Bei einigen Ausführungsformen umfasst ein in den zusätzlichen Modulen 125 enthaltenes Fehlerkontrollmodul einen Codierer und einen Decodierer. Bei einigen Ausführungsformen codiert der Codierer Daten durch Anwendung eines Fehlerkontrollcodes (ECC), um ein Codewort zu produzieren, das danach in den NVM-Vorrichtungen 140, 142 gespeichert wird. Wenn codierte Daten (z.B. ein oder mehrere Codewörter) aus den NVM-Vorrichtungen 140, 142 gelesen werden, wendet der Decodierer einen Decodierungsprozess auf die codierten Daten an, um die Daten wiederzugewinnen und um in den wiedergewonnen Daten innerhalb der Fehlerkorrekturfähigkeit des Fehlerkontrollcodes Fehler zu korrigieren. Für Fachleute ist erkennbar, dass verschiedene Fehlerkontrollcodes verschiedene Fehlerdetektions- und -korrekturkapazitäten aufweisen und dass aus Gründen, die den Rahmen der vorliegenden Offenbarung sprengen, bestimmte Codes für verschiedene Anwendungen ausgewählt werden. Dementsprechend wird hier keine erschöpfende Übersicht über die verschiedenen Arten von Fehlerkontrollcode angegeben. Außerdem ist für Fachleute erkennbar, dass jede Art oder Familie von Fehlerkontrollcodes Codierungs- und Decodierungsalgorithmen aufweisen kann, die dieser Art oder Familie von Fehlerkontrollcodes eigen sind. Andererseits können einige Algorithmen mindestens bis zu einem gewissen Grad bei der Decodierung einer Anzahl verschiedener Arten oder Familien von Fehlerkontrollcodes benutzt werden. Der Kürze halber wird dementsprechend hier keine erschöpfende Beschreibung der verschiedenen Arten von Codierungs- und Decodierungsalgorithmen gegeben, die allgemein verfügbar und Fachleuten bekannt sind.
  • Bei einigen Ausführungsformen empfängt die Hostschnittstelle 129 während einer Schreiboperation in den NVM-Vorrichtungen 140, 142 zu speichernde Daten von dem Computersystem 110. Die durch die Hostschnittstelle 129 empfangenen Daten werden einem Codierer (z.B. in zusätzlichem Modul bzw. zusätzlichen Modulen 125) zur Verfügung gestellt, der die Daten codiert, um ein oder mehrere Codewörter zu produzieren. Das eine oder die mehreren Codewörter werden der Speicherungsmediumschnittstelle 128 zur Verfügung gestellt, die das eine oder die mehreren Codewörter zu den NVM-Vorrichtungen 140, 142 (z.B. durch die NVM-Controller 130) auf eine Weise transferiert, die von der Art von benutztem Speicherungsmedium abhängig ist.
  • Bei einigen Ausführungsformen wird eine Leseoperation eingeleitet, wenn das Computersystem (Host) 110 einen oder mehrere Host-Lesebefehle (über die Datenverbindungen 101 oder als Alternative eine getrennte Steuerleitung oder einen getrennten Bus) zu dem Speicherungscontroller 124 sendet, die Daten von den NVM-Vorrichtungen 140, 142 anfordern. Der Speicherungscontroller 124 sendet einen oder mehrere Lesezugriffsbefehle zu den NVM-Vorrichtungen 140, 142 (z.B. durch die NVM-Controller 130) über die Speicherungsmediumschnittstelle 128, um unverarbeitete Lesedaten gemäß Speicherstellen (Adressen) zu erhalten, die durch den einen oder die mehreren Host-Lesebefehle spezifiziert werden. Die Speicherungsmediumschnittstelle 128 führt die unverarbeiteten Lesedaten (die z.B. ein oder mehrere Codewörter umfassen) einem Decodierer (z.B. in dem zusätzlichen Modul bzw. den zusätzlichen Modulen 125) zu. Wenn die Decodierung erfolgreich ist, werden die decodierten Daten der Hostschnittstelle 129 zugeführt, in der die decodierten Daten dem Computersystem 110 zur Verfügung gestellt werden. Bei einigen Ausführungsformen kann, wenn die Decodierung nicht erfolgreich ist, der Speicherungscontroller 124 auf eine Anzahl von Behebungsaktionen zurückgreifen oder eine Angabe eines unauflösbaren Fehlerzustands bereitstellen.
  • Wie oben erläutert, wird ein Speicherungsmedium (z.B. die NVM-Vorrichtungen 140, 142) in eine Anzahl adressierbarer und einzeln auswählbarer Blöcke aufgeteilt, und jeder Block wird gegebenenfalls (aber typischerweise) weiter in mehrere Seiten und/oder Wortleitungen und/oder Sektoren aufgeteilt. Obwohl Löschung eines Speicherungsmediums blockweise durchgeführt wird, wird bei vielen Ausführungsformen Lesen und Programmieren des Speicherungsmediums an einer kleineren Subeinheit eines Blocks durchgeführt (z.B. seitenweise, wortleitungsweise oder sektorweise). Bei einigen Ausführungsformen besteht die kleinere Subeinheit eines Blocks aus mehreren Speicherzellen (z.B. Zellen einer einzigen Ebene oder Zellen mehrerer Ebenen). Bei einigen Ausführungsformen wird Programmierung an einer gesamten Seite ausgeführt. Bei einigen Ausführungsformen weist ein NAND-Flash mit Zellen mehrerer Ebenen (MLC) typischerweise vier mögliche Zustände pro Zelle auf, was zwei Bit Informationen pro Zelle ergibt. Ferner weist bei einigen Ausführungsformen ein MLC-NAND zwei Seitentypen auf: (1) eine (manchmal als schnelle Seite bezeichnete) untere Seite und (2) eine (manchmal als langsame Seite bezeichnete) obere Seite. Bei einigen Ausführungsformen weist ein NAND-Flash mit Zellen dreifacher Ebene (TLC) acht mögliche Zustände pro Zelle auf, was drei Bit Informationen pro Zelle ergibt. Obwohl die Beschreibung hier TLC, MLC und SLC als Beispiele verwendet, ist für Fachleute erkennbar, dass die hier beschriebenen Ausführungsformen auf Speicherzellen erweitert werden können, die mehr als acht mögliche Zustände pro Zelle aufweisen, was mehr als drei Bit Informationen pro Zelle ergibt. Bei einigen Ausführungsformen ist das Codierungsformat der Speicherungsmedien (d.h. TLC, MLC oder SLC und/oder ein gewählter Datenredundanzmechanismus) eine Wahl, die getroffen wird, wenn die Daten tatsächlich in die Speicherungsmedien geschrieben werden.
  • Wenn beispielsweise Daten in Seiten in ein Speicherungsmedium geschrieben werden, aber das Speicherungsmedium in Blöcken gelöscht wird, können Seiten in dem Speicherungsmedium ungültige (z.B. abgestandene) Daten enthalten, aber diese Seiten können erst überschrieben werden, wenn der gesamte diese Seiten enthaltende Block gelöscht wird. Um in die Seiten mit ungültigen Daten zu schreiben, werden die (etwaigen) Seiten mit gültigen Daten in diesem Block gelesen und in einen neuen Block umgeschrieben, und der alte Block wird gelöscht (oder in eine Warteschlange für Löschung eingereiht). Dieser Prozess wird als Müllabfuhr bezeichnet. Nach der Müllabfuhr enthält der neue Block die Seiten mit gültigen Daten und kann freie Seiten aufweisen, die für das Schreiben neuer Daten verfügbar sind, und der alte Block kann gelöscht werden, um so für neue zu schreibende Daten verfügbar zu sein. Da Flash-Speicher nur eine begrenzte Anzahl von Malen programmiert und gelöscht werden kann, hat die Effizienz des zum Aussuchen des nächsten Blocks bzw. der nächsten Blöcke, der bzw. die umzuschreiben und zu löschen ist bzw. sind, eine signifikante Auswirkung auf die Lebensdauer und Zuverlässigkeit von auf Flash basierenden Speicherungssystemen.
  • Schreibverstärkung ist ein Phänomen, bei dem die tatsächliche Menge an in ein Speicherungsmedium (z.B. die NVM-Vorrichtungen 140, 142 in der Speicherungsvorrichtung 120) zu schreibenden physischen Daten ein Vielfaches der logischen Menge an durch einen Host (z.B. das Computersystem 110, manchmal als Host bezeichnet) in das Speicherungsmedium zu schreibenden Daten ist. Wie oben besprochen führt, wenn ein Block Speicherungsmedium gelöscht werden muss, bevor er umgeschrieben werden kann, der Müllabfuhrprozess zum Ausführen dieser Operationen zu einem ein- oder mehrmaligen Umschreiben von Daten. Dieser Vervielfachungseffekt vergrößert die Anzahl der über die Lebenszeit eines Speicherungsmediums erforderlichen Schreibvorgänge, wodurch die Zeit verkürzt wird, für die es zuverlässig arbeiten kann. Die Formel zur Berechnung der Schreibverstärkung eines Speicherungssystems wird durch die folgende Gleichung gegeben: Menge an in ein Speicherungsmedium geschriebenen Daten / Menge an durch einen Host geschriebenen Daten
  • Eines der Ziele jeder auf Flash-Speicher basierenden Datenspeicherungssystemarchitektur ist, Schreibverstärkung soweit wie möglich zu verringern, so dass verfügbare Standzeit verwendet wird, um Speicherungsmedium-Zuverlässigkeits- und -Garantiespezifikationen zu erfüllen. Höhere Systemstandzeit führt auch zu geringeren Kosten, da das Speicherungssystem weniger Überprovisionierung benötigen kann. Durch Verringern von Schreibverstärkung wird die Standzeit des Speicherungsmediums vergrößert, und die Gesamtkosten des Speicherungssystems werden verringert. Müllabfuhr wird im Allgemeinen für beste Leistungsfähigkeit und beste Schreibverstärkung an Löschblöcken mit der kleinsten Anzahl gültiger Seiten ausgeführt.
  • Flash-Speichervorrichtungen benutzen Speicherzellen zum Speichern von Daten als elektrische Werte, wie etwa elektrische Ladungen oder Spannungen. Jede Flash-Speicherzelle umfasst typischerweise einen einzelnen Transistor mit einem Floating-Gate, das zum Speichern einer Ladung verwendet wird, wodurch die Schwellenspannung des Transistors (d.h. die zum Einschalten des Transistors benötigte Spannung) modifiziert wird. Der Betrag der Ladung und die entsprechende Schwellenspannung, die die Ladung erzeugt, wird zum Repräsentieren eines oder mehrerer Datenwerte verwendet. Bei einigen Ausführungsformen wird während einer Leseoperation eine Leseschwellenspannung an das Steuergate des Transistors angelegt, und der resultierende erfasste Strom oder die resultierende erfasste Spannung wird auf einen Datenwert abgebildet.
  • Im Kontext von Flash-Speicherzellen bedeuten die Ausdrücke „Zellenspannung“ und „Speicherzellenspannung“ die Schwellenspannung der Speicherzelle, also die Mindestspannung, die an das Gate des Transistors der Speicherzelle angelegt werden muss, damit der Transistor Strom leitet. Ähnlich sind Leseschwellenspannungen (manchmal auch als Lesesignale und Lesespannungen bezeichnet), die an Flash-Speicherzellen angelegt werden, Gate-Spannungen, die an die Gates der Flash-Speicherzellen angelegt werden, um zu bestimmen, ob die Speicherzellen bei dieser Gatespannung Strom leiten. Bei einigen Ausführungsformen ist, wenn der Transistor einer Flash-Speicherzelle bei einer gegebenen Leseschwellenspannung Strom leitet, wodurch angegeben wird, dass die Zellenspannung kleiner als die Leseschwellenspannung ist, der unverarbeitete Datenwert für diese Leseoperation eine „1“, und andernfalls ist der unverarbeitete Datenwert eine „0“.
  • 2 ist eine Blockdarstellung eines Verwaltungsmoduls 121-1 gemäß einigen Ausführungsformen, wie in 1 gezeigt. Das Verwaltungsmodul 121-1 umfasst typischerweise eine oder mehrere Verarbeitungseinheiten (die manchmal als CPUs oder Prozessoren bezeichnet werden) 122-1 zum Ausführen von Modulen, Programmen und/oder Anweisungen, die im Speicher 206 gespeichert sind, und um dadurch Verarbeitungsoperationen auszuführen, Speicher 206 (der manchmal als Controllerspeicher bezeichnet wird) und einen oder mehrere Kommunikationsbusse 208 zum Verbinden dieser Komponenten. Der eine oder die mehreren Kommunikationsbusse 208 umfassen gegebenenfalls (manchmal als Chipsatz bezeichnete) Schaltkreise, die Systemkomponenten verbinden und die Kommunikation zwischen ihnen steuern. Das Verwaltungsmodul 121-1 ist durch den einen oder die mehreren Kommunikationsbusse 208 mit der Hostschnittstelle 129, dem zusätzlichen Modul bzw. den zusätzlichen Modulen 125 und der Speicherungsmedium-E/A 128 gekoppelt. Der Speicher 206 umfasst schnellen Direktzugriffsspeicher wie DRAM, SRAM, DDR RAM oder andere Direktzugriffs-Halbleiterspeichervorrichtungen und kann nichtflüchtigen Speicher umfassen, wie etwa eine oder mehrere magnetische Plattenspeicherungsvorrichtungen, optische Plattenspeicherungsvorrichtungen, Flash-Speichervorrichtungen oder andere nichtflüchtige Halbleiter-Speicherungsvorrichtungen. Der Speicher 206 umfasst gegebenenfalls eine oder mehrere entfernt von der CPU bzw. den CPUs 122-1 angeordnete Speicherungsvorrichtungen. Der Speicher 206 oder als Alternative die nichtflüchtige(n) Speichervorrichtung(en) in dem Speicher 206 umfasst ein nichttransitorisches computerlesbares Speicherungsmedium. Bei einigen Ausführungsformen speichert der Speicher 206 oder das nichttransitorische computerlesbare Speicherungsmedium des Speichers 206 die folgenden Programme, Module und Datenstrukturen oder eine Teilmenge oder Übermenge davon:
    • • eine Übersetzungstabelle 212, die zur Abbildung von logischen Adressen auf physische Adressen verwendet wird (z.B. umfasst bei einigen Ausführungsformen die Übersetzungstabelle 212 die Abbildungstabelle 402, 4);
    • • ein Datenlesemodul 214, das zum Lesen von Daten aus einem oder mehreren Codewörtern, Seiten oder Blöcken in einem Speicherungsmedium (z.B. den NVM-Vorrichtungen 140, 142, 1) verwendet wird;
    • • ein Datenschreibmodul 214, das zum Schreiben von Daten auf ein oder mehrere Codewörter, Seiten oder Blöcke in einem Speicherungsmedium (z.B. den NVM-Vorrichtungen 140, 142, 1) verwendet wird;
    • • ein Datenlöschmodul 218, das zum Löschen von Daten aus einem oder mehreren Blöcken in einem Speicherungsmedium (z.B. den NVM-Vorrichtungen 140, 142, 1) verwendet wird;
    • • ein Müllabfuhrmodul 220, das zur Müllabfuhr für einen oder mehrere Blöcke in einem Speicherungsmedium (z.B. den NVM-Vorrichtungen 140, 142, 1) verwendet wird;
    • • ein Befehlsempfangsmodul 222, das zum Empfangen mehrerer Befehle (z.B. Entabbildungsbefehle und E/A-Befehle, wie etwa Schreibanforderungen und/oder Leseanforderungen) von einem Host verwendet wird;
    • • Ein Log-Modul 224, das zum Unterhalten und/oder Abspeichern eines Logs (z.B. des Logs 226, manchmal als Replay-FIFO bezeichnet) verwendet wird;
    • • ein Log 226, das eine Ansammlung von Datenstrukturen entsprechend Schreibbefehlen und Entabbildungsbefehlen von einem Host umfasst und ausreichende Informationen enthält, um es der Übersetzungstabelle 212 zu ermöglichen, beginnend von einer teilweise veralteten Kopie der Übersetzungstabelle 212 im Fall eines Stromausfalls neu aufzubauen;
    • • ein Abbildungsmodul 228, das zum Ausführen einer oder mehrerer Operationen in Bezug auf eine Abbildungstabelle (z.B. die Übersetzungstabelle 212) verwendet wird, das gegebenenfalls Folgendes umfasst: – ein Wartungsmodul 230, das zum Unterhalten der Abbildungstabelle in flüchtigem Speicher verwendet wird; – ein Abspeichermodul 232, das zum Abspeichern der Abbildungstabelle in nichtflüchtigem Speicher der Speicherungsvorrichtung verwendet wird; und – ein Neuaufbaumodul 234, das zum Neuaufbauen der Abbildungstabelle verwendet wird;
    • • ein Schreib-Cache-Modul 236, das zum Unterhalten eines Schreib-Cache verwendet wird (z.B. Verwaltung des Schreibens und Flushens von Daten zu und von Schreib-Cache 238);
    • • einen Schreib-Cache 238, der eine Ansammlung von Datenstrukturen (z.B. Schreib-Cache-Einträgen) zum Speichern von Schreibbefehlen von einem Host entsprechenden Daten umfasst; und
    • • ein Entabbildungsmodul 240, das zum Bestimmen einer Größe eines Entabbildungsbefehls und zum Ausführen einer oder mehrerer Operationen eines Entabbildungsprozesses verwendet wird.
  • Jedes der oben identifizierten Elemente kann in einer oder mehreren der zuvor erwähnten Speichervorrichtungen gespeichert sein und entspricht einer Menge von Anweisungen zum Ausführen einer oben beschriebenen Funktion. Die obigen identifizierten Module oder Programme (d.h. Mengen von Anweisungen) müssen nicht als getrennte Softwareprogramme, Prozeduren oder Module implementiert werden und somit können verschiedene Teilmengen dieser Module bei verschiedenen Ausführungsformen kombiniert oder anderweitig umgeordnet werden. Bei einigen Ausführungsformen kann der Speicher 206 eine Teilmenge der oben identifizierten Module und Datenstrukturen speichern. Ferner kann der Speicher 206 zusätzliche Module und Datenstrukturen speichern, die oben nicht beschrieben werden. Bei einigen Ausführungsformen stellen die in dem Speicher 206 oder dem nichttransitorischen computerlesbaren Speicherungsmedium des Speichers 206 gespeicherten Programme, Module und Datenstrukturen Anweisungen zur Implementierung einiger der nachfolgend beschriebenen Verfahren bereit. Bei einigen Ausführungsformen können einige oder alle dieser Module mit spezialisierten Hardwareschaltungen implementiert werden, in die die Modulfunktionalität ganz oder teilweise untergeordnet werden kann.
  • Obwohl 2 das Verwaltungsmodul 121-1 gemäß einigen Ausführungsformen zeigt, ist 2 eher als eine funktionale Beschreibung der verschiedenen Merkmale gedacht, die in dem Verwaltungsmodul 121-1 anwesend sein können, statt als Strukturschema der hier beschriebenen Ausführungsformen. In der Praxis und so wie es von Durchschnittsfachleuten anerkannt wird, könnten die getrennt gezeigten Programme, Module und Datenstrukturen kombiniert werden und einige Programme, Module und Datenstrukturen könnten getrennt werden.
  • 3 ist eine Blockdarstellung eines LBA-Raums (logische Blockadressen) 320 (der manchmal als LA-Raum (logische Adresse) bezeichnet wird) gemäß einigen Ausführungsformen. Bei einigen Ausführungsformen ist eine logische Adresse die Adresse, an der ein Posten (z.B. eine Datei oder andere Daten) von der Perspektive eines Hosts (z.B. des Computersystems 110, 1) aus gesehen residiert. Bei einigen Ausführungsformen unterscheidet sich eine logische Adresse (z.B. im LBA-Raum 320) aufgrund der Funktionsweise einer Abbildungsfunktion oder eines Adressenübersetzers (z.B. einer Funktion oder eines Moduls mit der Übersetzungstabelle 212, 2, oder der Abbildungstabelle 402, 4) von einer physischen Adresse (z.B. im physischen Raum 318). Bei einigen Ausführungsformen werden logische Adressen als LBA (logische Blockadressen) implementiert, die auf physische Flash-Adressen (z.B. PPN (physische Seitennummern)) abgebildet werden. Physische Adressen umfassen typischerweise Teile wie etwa Bank, Block und Seite, die mehreren Ebenen einer Speicherhierarchie entsprechen.
  • Bei einigen Ausführungsformen wird eine LBA (logische Blockadresse) auf eine physische Flash-Adresse (z.B. eine PPN (physische Seitennummer), darunter eine Bank, ein Block und eine Seite) abgebildet, wie weiter mit Bezug auf 4 beschrieben wird.
  • Bei einigen Ausführungsformen umfasst ein logischer Adressenraum zugeteilten logischen Adressenraum (z.B. zugeteilten LBA-Raum 342) und nichtzugeteilten logischen Adressenraum (z.B. nichtzugeteilten LBA-Raum 340). Bei einigen Ausführungsformen ist ein nichtzugeteilter logischer Adressenraum ein logischer Adressenraum, in dem keine Daten gespeichert werden. Bei einigen Ausführungsformen umfasst ein nichtzugeteilter logischer Adressenraum logischen Adressenraum, in den niemals geschrieben wurde und/oder der verworfen wurde (zuvor geschriebene Daten können durch eine Trimm- oder Entabbildungsoperation verworfen werden und werden manchmal als getrimmter logischer Adressenraum bezeichnet). Zum Beispiel umfasst in 3 der nichtzugeteilte LBA-Raum 340 getrimmten LBA-Raum 330. Bei einigen Ausführungsformen ist zugeteilter logischer Adressenraum ein logischer Adressenraum, in den zuvor ein Host geschrieben hat, wobei die zuvor geschriebenen Daten Daten umfassen, die nicht mehr von einem Host verwendet werden (z.B. keine Live-Daten 332) und Daten, die immer noch vom Host verwendet werden (z.B. Live-Daten 334). Bei einigen Ausführungsformen sind Nicht-Live-Daten Daten in einem Teil des logischen Adressenraums, der in den Metadaten eines Dateisystems als frei, verfügbar oder unbenutzt markiert ist. Gegebenenfalls kann ein Dateisystem wählen, Nicht-Live-Adressenraum durch eine Trimm- oder Entabbildungsoperation in nichtzugeteilten Adressenraum umzuwandeln.
  • In 3 repräsentiert der zugeteilte LBA-Raum 342 eine Menge an zugeteiltem Raum und der nichtzugeteilte LBA-Raum 340 eine Menge an nichtzugeteiltem Raum. Weder der zugeteilte LBA-Raum 342 noch der nichtzugeteilte LBA-Raum 340 ist jedoch notwendigerweise eine einzige zusammenhängende Region des LBA-Raums 320. Ähnlich repräsentieren die Live-Daten 334 und Nicht-Live-Daten 332 in 3 Mengen (z.B. Zählwerte von LBAs) von Live-Daten bzw. Nicht-Live-Daten. Weder die Live-Daten 334 noch die Nicht-Live-Daten 332 sind jedoch notwendigerweise eine einzige zusammenhängende Region des LBA-Raums 320 oder des zugeteilten LBA-Raums 342 und die Positionen der Live-Daten 334 und Nicht-Live-Daten 332, die in 3 dargestellt sind, weisen auch keinerlei Korrelation mit den logischen oder physischen Adressenwerten der Live-Daten und Nicht-Live-Daten auf. Die Live-Daten 334 und/oder Nicht-Live-Daten 332 werden typischerweise in mehreren Regionen des LBA-Raums 320 vorliegen und sind somit nicht zusammenhängend. Gegebenenfalls kann jedoch ein Umabbildungs- oder Vereinigungsprozess ausgeführt werden, der auch als Defragmentierung bezeichnet werden kann, um einige oder alle Live-Daten 334 zu einer zusammenhängenden Region des LBA-Raums 320 zu konsolidieren.
  • Der zugeteilte logische Adressenraum (342) ist Raum, der benutzt wird. Verringern der Größe des zugeteilten logischen Adressenraums erfordert typischerweise Verringerung der Menge an Live-Daten 334 und/oder Nicht-Live-Daten 332, die durch eine Speicherungsvorrichtung oder ein Speicherungssystem gespeichert werden, um dadurch einen Teil des zugeteilten logischen Adressenraums in nichtzugeteilten logischen Adressenraum zu verwandeln. Bei einigen Ausführungsformen werden Teile von Nicht-Live-Daten 332 getrimmt und dadurch mittels Verwendung von Trimm- oder Entabbildungsoperationen in nichtzugeteilten logischen Adressenraum verwandelt.
  • 4 ist eine Blockdarstellung einer Abbildungstabelle 402 und eines physischen Adressenraums 410 gemäß einigen Ausführungsformen. Bei einigen Ausführungsformen enthält die Abbildungstabelle 402 mehrere Einträge, wobei ein Eintrag der Abbildungstabelle 402 zum Übersetzen einer logischen Adresse (z.B. einer logischen Blockadresse (LBA)) in einem logischen Adressenraum eines Hosts (z.B. des Computersystems 110, 1) in eine physische Adresse in einem physischen Adressenraum (z.B. dem physischen Adressenraum 410) von nichtflüchtigem Speicher in einer Speichervorrichtung (z.B. der Speicherungsvorrichtung 120, 1) verwendet wird. Bei einigen Ausführungsformen ist eine LBA die Adresse der kleinsten Einheit gespeicherter Daten, die durch einen Host adressierbar ist (z.B. 512 B oder 4096 B). Bei einigen Ausführungsformen sind LBA eine Sequenz von ganzen Zahlen, die in numerischer Reihenfolge im logischen Adressenraum organisiert sind. Bei einigen Ausführungsformen sind LBA ganze Zahlen, die aus einem logischen Adressenraum ausgewählt sind, aber nicht zusammenhängend sein müssen. Zum Beispiel wird bei Implementierungen, die einen spärlichen logischen Adressenraum benutzen, die Menge an adressierbarem Raum durch eine Grenze bezüglich der Anzahl logischer Adressen bestimmt, die zugeteilt werden können, aber diese logischen Adressen sind über einen größeren Adressenraum als die Maximalzahl logischer Adressen, die (z.B. einem Host oder einer Menge von Hosts oder Clients) zugeteilt werden kann, verteilt.
  • Bei einigen Ausführungsformen wird die Abbildungstabelle 402 in Speicher gespeichert, der der Speicherungsvorrichtung zugeordnet ist (z.B. im Speicher 206 als Teil der Übersetzungstabelle 212, 2). Bei einigen Ausführungsformen dient die Abbildungstabelle 402 zum Implementieren der Übersetzungstabelle 212 in dem Verwaltungsmodul 121-1 (2). Bei einigen Ausführungsformen ist eine physische Adresse eine physische Seitennummer (PPN), einschließlich einer Banknummer, einer Blocknummer und einer Seitennummer. In dem in 4 gezeigten Beispiel wird LBA 0 auf Bank 1 (z.B. Bank 420-1), Block 3 (z.B. Block 421-3), Seite 37 (Seiten in Block 421-3 nicht gezeigt) des physischen Adressenraums 410 abgebildet. 4 zeigt, dass der physische Adressenraum 410 mehrere nichtflüchtige Speicherblöcke 421, 422 423, 424 umfasst. Wie oben beschrieben und wie in der Darstellung des Blocks 424-p gezeigt, umfasst jeder nichtflüchtige Speicherblock im physischen Adressenraum einer Speicherungsvorrichtung typischerweise mehrere Seiten 426, wobei jede Seite typischerweise eine Instanz des kleinsten einzeln zugänglichen (z.B. lesbaren oder beschreibbaren) Teils eines Blocks ist. Obwohl 4 ein Beispiel für Abbildung von logischen Adressen auf physische Adressen zeigt, können bei anderen Ausführungsformen andere Abbildungen verwendet werden. Zum Beispiel entspricht bei einigen Ausführungsformen jeder der logischen Adresseneinträge mehrfachen (z.B. acht) logischen Adressen (z.B. 8 LBA pro logischem Adresseneintrag). Bei einigen Ausführungsformen muss die Abbildungstabelle 402 nicht zusammenhängende LBA-Adressen enthalten und kann auf eine beliebige Weise organisiert werden, die effiziente Nachschlagoperationen erleichtert, z.B. Hash-Tabelle, Binärbaum, inhaltsadressierbarer Speicher und anderes.
  • Wie oben erwähnt, ist das Abspeichern von Daten und missionskritischen Metadaten, die in flüchtiger Speicherung gehalten werden, für eine nichtflüchtige Datenspeicherungsvorrichtung wichtig. Bei Flash-Speichervorrichtungen müssen Daten über Stromversorgungszyklen geschützt sein, und damit eine Speicherungsvorrichtung (z.B. die Speicherungsvorrichtung 120, 1) gültig ist, ist eine volle Übersetzungstabelle (z.B. die Übersetzungstabelle 212, 2 oder Abbildungstabelle 402, 4) erforderlich. Für Unternehmensprodukte ist die Übersetzungstabelle jedoch typischerweise extrem groß (z.B. mehrere hundert MB), und Abspeichern der vollen Übersetzungstabelle ist in dem durch Batterie-Backups (z.B. Kondensatoren) bereitgestellten Zeitrahmen nicht durchführbar. Bei einigen Ausführungsformen werden inkrementelle Teile der Übersetzungstabelle zu eingeplanten Zeiten abgespeichert, um die Menge an Daten, die im Fall eines Stromausfalls abgespeichert werden muss, zu minimieren. Es wird jedoch erwartet, dass Entabbildungsbefehle, die effektiv einen Teil von Daten (z.B. einen Sektor, eine Einheit, die gesamte Speicherungsvorrichtung usw.) löschen, nahezu augenblicklich ausgeführt werden, zum Beispiel mit einer Ansprechzeit von höchsten 1 Millisekunde. Diese Ansprechzeit erlaubt nicht das Abspeichern der vollen Übersetzungstabelle. Abspeichern der vollen Übersetzungstabelle als Reaktion auf jeden Entabbildungsbefehl ist ferner zeitaufwendig, vergrößert die Schreibverstärkung, verringert die Standzeit und verringert die Leistungsfähigkeit. Die hier beschriebenen verschiedenen Ausführungsformen umfassen Systeme, Verfahren und/oder Vorrichtungen, mit denen ein schnelles Reagieren auf einen Entabbildungsbefehl ermöglicht wird, wobei Kohärenz der Übersetzungstabelle durch Verwendung eines Log (manchmal als Replay-FIFO bezeichnet) sichergestellt und Leistungsfähigkeit und Standzeit verbessert werden. Die durch die verschiedenen hier beschriebenen Ausführungsformen bereitgestellten Vorteile werden durch Bezugnahme auf die nachfolgenden Beschreibungen von 6 und 7 besser verständlich.
  • 6 ist eine Blockdarstellung des Abspeicherns von Daten in einer Speicherungsvorrichtung und insbesondere des Abspeicherns in nichtflüchtigem Speicher (z.B. NVM 140, 142) von Informationen, die in flüchtigem Speicher 600 gespeichert sind, in einer Abbildungstabelle, einem Log und einem Schreib-Cache (z.B. Abbildungstabelle 402, Log 226 und Schreib-Cache 238) gemäß einigen Ausführungsformen. Der flüchtige Speicher 600 enthält bei einigen Ausführungsformen eine oder mehrere Abbildungstabellen (z.B. die Abbildungstabelle 402), ein oder mehrere Logs (z.B. Log 226) und einen oder mehrere Schreib-Caches (z.B. den Schreib-Cache 238). Bei einigen Ausführungsformen ist der flüchtige Speicher 600 der Speicher 206 (2) oder ein Teil des Speichers 206.
  • Um Befehlsverarbeitungs- und Ausführungszeit für von einem Host empfangene Befehle, wie etwa Entabbildungsbefehle, zu verringern, speichert die Speicherungsvorrichtung bei einigen Ausführungsformen Informationen in verschiedenen Datenstrukturen in flüchtigem Speicher. Um diese Informationen zwischen Stromversorgungszyklen zu bewahren, speichern die Speicherungsvorrichtungen mindestens Teile dieser Informationen in nichtflüchtigem Speicher ab. Zum Beispiel speichert die Speicherungsvorrichtung 120 Informationen in der Abbildungstabelle 402, dem Log 226 und dem Schreib-Cache 238 in flüchtigem Speicher 600 in NVM 140, 142 auf eine Weise, die Befehlsverarbeitungs- und Ausführungszeiten verbessert. Bei einigen Ausführungsformen koordiniert ein Verwaltungsmodul das Abspeichern von Informationen aus diesen Datenstrukturen in nichtflüchtigem Speicher. Zum Beispiel dient das Verwaltungsmodul 121-1 bei einigen Ausführungsformen zum Koordinieren des Flushens des Schreib-Cache 238, Kopierens des Log 226 und eingeplanter Abspeicherungen für die Abbildungstabelle 402 in NVM 140, 142. Spezieller wird bei einigen Ausführungsformen ein Schreib-Cache-Modul 236 zur Ermöglichung von Schreib-Cache-Flushen verwendet, ein Log-Modul 240 zum Ermöglichen des Kopierens eines oder mehrerer Segmente des Logs 226 verwendet und ein Abspeichermodul 232 des Abbildungsmoduls 228 zum Koordinieren eingeplanter Abspeicherungen eines oder mehrerer Segmente der Abbildungstabelle 402 verwendet.
  • Bei einigen Ausführungsformen umfasst die in flüchtigem Speicher gespeicherte Abbildungstabelle zwei oder mehr distinkte Segmente, die manchmal als Regionen oder Teile bezeichnet werden. Wie in 6 abgebildet, enthält die Abbildungstabelle 402 eine Sequenz von Abbildungstabellensegmenten MTS 0 bis MTS m. Bei einigen Ausführungsformen enthält jedes MTS in der Abbildungstabelle eine Anzahl von Einträgen. Zum Beispiel enthält MTS 0 der Abbildungstabelle 402 einen Eintrag, der angibt, dass LBA 0 auf eine sich in Bank 1 befindende PPN, Block 3 und Seite 37 (abgekürzt als „1-3-37“) in dem NVM 140, 142 abgebildet wird). Die Inhalte der Abbildungstabelle werden oben mit Bezug auf 4 ausführlicher besprochen.
  • Wie nachfolgend ausführlicher mit Bezug auf 5A5C beschrieben wird, werden Segmente (z.B. MTS 0) der Abbildungstabelle (z.B. Abbildungstabelle 402) auf eingeplante Weise in nichtflüchtigem Speicher abgespeichert, die von vom Host empfangenen Entabbildungsbefehlen unabhängig ist (z.B. unabhängig vom Empfangen und/oder Verarbeiten der Entabbildungsbefehle). Bei einigen Ausführungsformen enthält jedes Segment der Abbildungstabelle 660 einen Log-Zeiger, der eine Position im Log 630 angibt. Wie zum Beispiel in 6 abgebildet ist, enthält die nichtflüchtige Kopie von MTS 0 den Log-Zeiger 640, der auf den Eintrag 630-1 in dem Log 630 zeigt. Wenn ein Segment der Abbildungstabelle in nichtflüchtigen Speicher kopiert wird, zeigt der entsprechende Log-Zeiger typischerweise entweder auf den letzten Eintrag im Log 226 (oder die entsprechende Position im Log 630) oder den ersten ungefüllten Eintrag des Log 226 (oder die entsprechende Position im Log 630). Anders ausgedrückt, wird bei einigen Ausführungsformen der Log-Zeiger 640 in jedem Abbildungstabellensegment von einem letzten Eintrag versetzt, der in das Log geschrieben wird, bevor das Abbildungstabellensegment in dem nichtflüchtigen Speicher der Speicherungsvorrichtung abgespeichert wird. Ferner entspricht der älteste Log-Zeiger 640 dem ältesten Log-Eintrag, der zu verarbeiten ist, wenn die Abbildungstabelle 402 in flüchtigem Speicher 600 neu aufgebaut wird. Bei einigen Ausführungsformen wird das Neuaufbauen der Abbildungstabelle 402 nach einem Stromausfallereignis eingeleitet.
  • Bei einigen Ausführungsformen enthält das in flüchtigem Speicher gespeicherte Log ein oder mehrere distinkte Segmente, die manchmal als Regionen oder Teile bezeichnet werden. Bei einigen Ausführungsformen enthält jedes Segment des Log einen oder mehrere Einträge, die Schreibbefehlen und Entabbildungsbefehlen vom Host entsprechen. Wie zum Beispiel in 6 abgebildet ist, enthält das Log 226 ein Log-Segment 0 („LogS 0“) und LogS 1 und jedes Log-Segment enthält eine Anzahl von Einträgen entsprechend Schreibbefehlen und Entabbildungsbefehlen vom Host (z.B. Einträge 612-0, 612-1 und 612-2 von LogS 0). Spezieller entspricht in diesem Beispiel der Eintrag 612-0 einem Entabbildungsbefehl, der Entabbildung von LBA 1 anfordert (in dem Abbildungstabelleneintrag 602 mit durchgestrichenem Text dargestellt), und der Eintrag 612-0 enthält Informationen, die angeben, dass LBA1 ent-abgebildet wurde.
  • Bei einigen Ausführungsformen umfasst Kopieren des Log von flüchtigem Speicher in nichtflüchtigen Speicher Abspeichern mindestens eines ersten Teils des Log in nichtflüchtigem Speicher (z.B. den NVM-Vorrichtungen 140, 142), wenn das Log vordefinierte Vollheitskriterien erfüllt, und Abspeichern eines End-Teils des Log in nichtflüchtigem Speicher in Verbindung mit einem Stromausfallereignis. Wenn das Log halb voll ist, wird zum Beispiel bei einigen Ausführungsformen eine erste Hälfte des Log in nichtflüchtigem Speicher abgespeichert, und in Verbindung mit einem Stromausfallereignis wird ein End-Teil (z.B. ein Rest des Log, der noch nicht abgespeichert ist) des Log in nichtflüchtigen Speicher abgespeichert. Wie in 6 abgebildet, kopiert zum Beispiel, wenn LogS 0 die vordefinierten Vollheitskriterien erfüllt, die Speicherungsvorrichtung LogS 0 in nichtflüchtigen Speicher. Nach dem Kopieren von LogS 0 in nichtflüchtigen Speicher fügt die Speicherungsvorrichtung bei einigen Ausführungsformen weiter Log-Einträge zu dem Log 226 hinzu, indem Einträge zu LogS 1 hinzugefügt werden. Gemäß einer Bestimmung, dass ein Stromausfallereignis aufgetreten ist, wird ein End-Segment des Log in nichtflüchtigem Speicher abgespeichert (z.B. LogS 1 von Log 226). Bei einigen Ausführungsformen werden Log-Informationen (Schreiboperations- und Entabbildungsinformationen) der Reihe nach in das Log geschrieben: nachdem LogS 0 gefüllt ist, wird es in nichtflüchtigen Speicher kopiert, und es werden neue Log-Informationen in LogS 1 geschrieben, bis es gefüllt ist, wobei an diesem Punkt LogS 1 in nichtflüchtigen Speicher kopiert wird und neue Log-Informationen in LogS 0 geschrieben werden. Ferner wird bei einigen Ausführungsformen die nichtflüchtige Kopie jedes Log-Segments 630-i behalten, bis der älteste Log-Zeiger 640 für die Segmente der Abbildungstabelle 660 auf eine Log-Position jenseits des Endes dieses Log-Segments zeigt.
  • Bei einigen Ausführungsformen enthält ein in flüchtigem Speicher gespeicherter Schreib-Cache (z.B. der Schreib-Cache 238) eine Anzahl von einzelnen Einträgen (z.B. Cache-Linien), wobei die einzelnen Einträge oder Cache-Linien (ausschließlich leerer Cache-Linien) jeweils Adresseninformationen (z.B. eine logische Adresse, physische Adresse oder beides) und Schreibdaten umfassen, die Schreibbefehlen vom Host entsprechen. Bei einigen Ausführungsformen sind die Schreibdaten noch nicht in dem nichtflüchtigen Speicher der Speicherungsvorrichtung abgespeichert. Wie zum Beispiel in 6 abgebildet, enthält der Schreib-Cache 238 einzelne Einträge 610-0, 610-1, 610-2, ... 610-w. Um die für Entabbildungsbefehle erforderliche Verarbeitungszeit zu verringern, erfolgt Flushen des Schreib-Cache in nichtflüchtigen Speicher auf optimierte Weise (siehe die nachfolgende Besprechung von 7 für zusätzliche Einzelheiten). Während des Flushens des Schreib-Cache werden die Daten in einzelnen Einträgen oder Cache-Linien mit anderen dauerhaft (d.h. persistent) gespeicherten Hostdaten in nichtflüchtigem Speicher gespeichert. Wie zum Beispiel in 6 abgebildet, werden nach dem Flushen des Schreib-Cache 238 in nichtflüchtigen Speicher die den einzelnen Einträgen 610-1 und 610-2 entsprechenden Daten mit dauerhaft gespeicherten Hostdaten 620 gespeichert, die hier als Daten 620-1 und 620-2 gezeigt sind. Schreib-Cache-Flushen im Kontext der Entabbildungsbefehlsverarbeitung bei einigen Ausführungsformen wird mit Bezug auf 7 besser verständlich.
  • 7 zeigt eine Flussdiagrammdarstellung eines Verfahrens zum Verarbeiten von Entabbildungsbefehlen in einem Speicherungssystem gemäß einigen Ausführungsformen. Mindestens bei einigen Ausführungsformen wird das Entabbildungs-Befehlsverarbeitungsverfahren 700 durch eine Speicherungsvorrichtung (z.B. die Speicherungsvorrichtung 120, 1) oder eine oder mehrere Komponenten der Speicherungsvorrichtung (z.B. den Speicherungscontroller 124, NVM-Controller 130 und/oder NVM-Vorrichtungen 140, 142, 1) ausgeführt, wobei die Speicherungsvorrichtung wirksam mit einem Hostsystem (z.B. dem Computersystem 110, 1) gekoppelt ist. Bei einigen Ausführungsformen wird das Entabbildungs-Befehlsverarbeitungsverfahren 700 durch Anweisungen bestimmt, die in einem nichttransitorischen computerlesbaren Speicherungsmedium gespeichert sind und die durch einen oder mehrere Prozessoren einer Vorrichtung, wie etwa die eine oder mehreren Verarbeitungseinheiten (CPUs) 122-1 des Verwaltungsmoduls 121-1, die in 1 und 2 gezeigt sind, ausgeführt werden. Bei einigen Ausführungsformen wird das Entabbildungs-Befehlsverarbeitungsverfahren 700 durch eine Speicherungsvorrichtung (z.B. die Datenspeicherungsvorrichtung 120, 1) oder eine oder mehrere Komponenten eines Speicherungssystems (z.B. des Computersystems 110 und/oder der Speicherungsvorrichtung 120, 1) ausgeführt. Bei einigen Ausführungsformen werden einige der Operationen des Entabbildungs-Befehlsverarbeitungsverfahrens 700 in einem Host (z.B. im Computersystem 110, 1) ausgeführt, und Informationen werden zu einer Speicherungsvorrichtung (z.B. der Speicherungsvorrichtung 120, 1) gesendet. Bei einigen Ausführungsformen wird das Entabbildungs-Befehlsverabeitungsverfahren 700 mindestens teilweise durch Anweisungen bestimmt, die in einem nichttransitorischen computerlesbaren Speicherungsmedium gespeichert sind und die durch einen oder mehrere Prozessoren eines Hosts (in 1 nicht gezeigt) ausgeführt werden. Der leichteren Erläuterung halber beschreibt das Folgende das Entabbildungs-Befehlsverarbeitungsverfahren 700 als durch eine Speicherungsvorrichtung (z.B. den Speicherungscontroller 124 der Speicherungsvorrichtung 120, 1) ausgeführt. Bei einigen Ausführungsformen werden die Operationen des Verfahrens 700 mindestens teilweise durch das Befehlsempfangsmodul 222, das Entabbildungsmodul 240, das Schreib-Cache-Modul 236 und das Log-Modul 224 des Verwaltungsmoduls 121-1 (2) ausgeführt. Für Fachleute ist jedoch erkennbar, dass bei anderen Ausführungsformen eine oder mehrere in dem Entabbildungs-Befehlsverarbeitungsverfahren 700 beschriebene Operationen durch einen Host (z.B. das Computersystem 110, 1) ausgeführt werden.
  • Das Entabbildungs-Befehlsverarbeitungsverfahren 700 beginnt bei einigen Ausführungsformen, wenn die Speicherungsvorrichtung einen Entabbildungsbefehl empfängt (702). Es wird die Größe des Entabbildungsbefehls bestimmt. Bei einigen Ausführungsformen ist zum Beispiel die Größe des Entabbildungsbefehls gleich der Anzahl logischer Blockadressen, die durch den Entabbildungsbefehl ent-abgebildet werden, oder entspricht dieser. Bei einigen Ausführungsformen ist die Größe des Entabbildungsbefehls gleich der Größe des logischen Adressenraumteils, der durch den Entabbildungsbefehl ent-abgebildet wird, oder entspricht dieser. Gemäß einer ersten Bestimmung (704-Nein), dass eine Größe des Entabbildungsbefehls eine Größenschwelle nicht erfüllt (z.B. kleiner als diese ist) („kleiner Entabbildungsbefehl“) schreitet die Speicherungsvorrichtung zur Bestimmung, ob Daten für jede jeweilige logische Adresse (706), die durch den Entabbildungsbefehl spezifiziert wird, in einem Schreib-Cache gespeichert sind. Wenn Daten für eine jeweilige logische Adresse (z.B. eine LBA) im Schreib-Cache gespeichert sind, löscht die Speicherungsvorrichtung diese Schreib-Cache-Einträge, die Daten für die jeweilige logische Adresse speichern, aus dem Schreib-Cache (z.B. einem Schreib-Cache in flüchtigem Speicher der Speicherungsvorrichtung) aus (708). Daten für eine jeweilige logische Blockadresse werden typischerweise, wenn sie im Schreib-Cache gespeichert sind, in einem einzigen Schreib-Cache-Eintrag gespeichert, und somit wird nur der eine Schreib-Cache-Eintrag ausgelöscht.
  • Wenn als Alternative Daten für die jeweilige logische Adresse (z.B. eine LBA) in einem Schreib-Cache-Eintrag gespeichert sind, markiert die Speicherungsvorrichtung bei einigen Ausführungsformen die Daten in dem Schreib-Cache-Eintrag als nicht schmutzig, statt den Schreib-Cache-Eintrag auszulöschen. Bei einigen solchen Ausführungsformen werden Schreib-Cache-Einträge gemäß einem Cache-Eintrag-Ausräumschema ausgelöscht oder überschrieben. Bei einigen Ausführungsformen schreitet die Speicherungsvorrichtung zum Aktualisieren einer Abbildungstabelle (718) gemäß dem Entabbildungsbefehl und um einen oder mehrere Einträge zu einem Log (720) hinzuzufügen.
  • Wenn zum Beispiel mit Bezug auf 6 ein kleiner Entabbildungsbefehl Entabbildung von LBA 2 (604) anfordert und der Schreib-Cache 238 einen Schreib-Cache-Eintrag 610-0 mit Daten für LBA 2 enthält, löscht die Speicherungsvorrichtung den Cache-Eintrag 610-0 aus (als Alternative markiert die Speicherungsvorrichtung bei einigen Ausführungsformen die Daten in dem Schreib-Cache-Eintrag 610-0 als nicht schmutzig). Bei einigen Ausführungsformen aktualisiert die Speicherungsvorrichtung auch die Abbildungstabelle 402 durch Entabbilden (dargestellt durch durchgestrichenen Text in dem Abbildungstabelleneintrag 604) von LBA 2 von einer PPN, die sich bei 2-6-7 in NVM 140, 142 befindet, und fügt einen Eintrag zum Log 226 hinzu, der angibt, dass LBA 2 ent-abgebildet wurde. Folglich werden, nachdem Operation 708 ausgeführt wurde, zuvor in dem Schreib-Cache 238 für LBA 2 gespeicherte Daten das nächste Mal, wenn der Schreib-Cache 238 in nichtflüchtigen Speicher (z.B. NVM 140, 142) geflusht wird, nicht in nichtflüchtigem Speicher abgespeichert.
  • Bei einigen Ausführungsformen führt demgemäß, dass die erste Bestimmung (704-Ja) stattdessen angibt, dass die Größe des Entabbildungsbefehls die Größenschwelle erfüllt (z.B. größer oder gleich dieser ist) („großer Entabbildungsbefehl“) die Speicherungsvorrichtung eine zweite Bestimmung (710) durch. Demgemäß, dass die zweite Bestimmung (710) angibt, dass eine Anzahl von Einträgen im Schreib-Cache mit schmutzigen Daten kleiner als eine Schwellenanzahl (die hier manchmal als zweite Schwelle oder Schreib-Cache-Benutzungsschwelle bezeichnet wird, um sie von der oben erwähnten Größenschwelle zu unterscheiden) von Einträgen mit schmutzigen Daten ist (710-Nein), schreitet die Speicherungsvorrichtung zum Analysieren jeder Schreib-Cache-Linie (712) in dem Schreib-Cache. Für jede jeweilige Schreib-Cache-Linie (712) bestimmt die Speicherungsvorrichtung, ob die jeweilige Schreib-Cache-Linie ein Entabbildungsziel enthält (d.h. die jeweilige Schreib-Cache-Linie enthält Daten für eine durch den Entabbildungsbefehl spezifizierte logische Adresse). Gemäß einer dritten Bestimmung, dass die jeweilige Schreib-Cache-Linie ein Entabbildungsziel enthält, löscht die Speicherungsvorrichtung die Cache-Linie aus dem Schreib-Cache aus (714) (als Alternative markiert die Speicherungsvorrichtung bei einigen Ausführungsformen die Daten in der Cache-Linie als nicht schmutzig). Außerdem aktualisiert die Speicherungsvorrichtung die Abbildungstabelle (718) gemäß dem Entabbildungsbefehl und fügt einen oder mehrere Einträge zum Log (720) hinzu.
  • Wenn zum Beispiel mit Bezug auf 6 ein großer Entabbildungsbefehl Entabbildung der LBA 1–2 (Abbildungstabelleneinträge 602 und 604) anfordert und der Schreib-Cache 238 den Schreib-Cache-Eintrag 610-0 mit Daten für LBA 2 enthält und keine anderen Einträge im Schreib-Cache Entabbildungsziele enthalten, löscht die Speicherungsvorrichtung den Schreib-Cache-Eintrag 610-0 aus (oder markiert als Alternative die Daten in dem Schreib-Cache-Eintrag 610-0 als nicht schmutzig) und löscht keine anderen Einträge aus dem Schreib-Cache 238 aus. Außerdem aktualisiert die Speicherungsvorrichtung die Abbildungstabelle 402 durch Entabbilden von LBA 1 (z.B. Abbildungstabelleneintrag 602) von einer PPN, die sich an 5-2-43 in dem NVM 140, 142 befindet, und Entabbilden von LBA 2 (z.B. Abbildungstabelleneintrag 604) von der PPN, die sich an 2-6-7 in dem NVM 140, 142 befindet. Bei einigen Ausführungsformen fügt die Speicherungsvorrichtung außerdem einen Eintrag zu dem Log 226 hinzu, der angibt, dass die LBA 1–2 ent-abgebildet wurden. Als Ergebnis werden, nachdem Operation 714 ausgeführt wurde, zuvor im Schreib-Cache 238 für LBA 1 und 2 gespeicherte Daten das nächste Mal, wenn der Schreib-Cache 238 in nichtflüchtigen Speicher (z.B. NVM 140, 142) geflusht wird, nicht in nichtflüchtigem Speicher abgespeichert.
  • Demgemäß, dass die erste Bestimmung (704-Ja) angibt, dass der Entabbildungsbefehl groß ist und die zweite Bestimmung (710) stattdessen angibt dass die Anzahl der Einträge im Schreib-Cache mit schmutzigen Daten größer als eine Schwellenanzahl von Einträgen mit schmutzigen Daten ist (710-Ja), flusht die Speicherungsvorrichtung den Schreib-Cache (716) in nichtflüchtigen Speicher, um dadurch alle schmutzigen Daten in dem Schreib-Cache in nichtflüchtigen Speicher zu schreiben. Wenn beispielsweise mit Bezug auf 6 ein großer Entabbildungsbefehl Entabbildung der LBA 1–2 anfordert und der Schreib-Cache 238 eine Anzahl von Einträgen mit schmutzigen Daten enthält, die größer als die Schwellenanzahl von Einträgen mit schmutzigen Daten ist, flusht die Speicherungsvorrichtung den Schreib-Cache 238 (z.B. die Daten in allen Schreib-Cache-Einträgen mit schmutzigen Daten werden als dauerhaft gespeicherte Host-Daten 620 in NVM 140, 142 gespeichert). Die Speicherungsvorrichtung aktualisiert auch die Abbildungstabelle (718) gemäß dem Entabbildungsbefehl und fügt einen oder mehrere entsprechende Einträge zu dem Log (720) hinzu.
  • Verarbeitung von Entabbildungsbefehlen gemäß den oben besprochenen Ergebnissen führt zu signifikanten Leistungsfähigkeitsgewinnen. Speziell wird die Verarbeitungszeit sowohl für große Entabbildungsbefehle als auch kleine Entabbildungsbefehle signifikant verringert, weil das Abspeichern von Daten (z.B. Abbildungstabelle(n), Log(s) und Schreib-Cache(s)) auf optimierte Weise erfolgt und nicht auf ineffiziente Art und Weise (z.B. nach jedem Entabbildungsbefehl). Insbesondere umfassen die mit Bezug auf das Entabbildungs-Befehlsverarbeitungsverfahren 700 (sowohl für kleine als auch große Entabbildungsbefehle) besprochenen Verarbeitungsschritte kein Abspeichern der Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung. Abspeichern der Abbildungstabelle in nichtflüchtigem Speicher ist wie oben erwähnt zeitaufwändig, erhöht die Schreibverstärkung, verringert die Standzeit und verringert die Leistungsfähigkeit. Die mit Bezug auf das Entabbildungs-Befehlsverarbeitungsverfahren 700 besprochenen Verarbeitungsschritte flushen außerdem bei einigen Ausführungsformen den Schreib-Cache in nichtflüchtigen Speicher nur, wenn der Entabbildungsbefehl groß ist und die Anzahl der Einträge im Schreib-Cache mit schmutzigen Daten eine Schwelle erfüllt (z.B. die Anzahl von Einträgen im Schreib-Cache mit schmutzigen Daten größer als eine Schwellenanzahl von Einträgen mit schmutzigen Daten ist). Als Ergebnis verringert sich bei einigen Implementierungen Entabbildungs-Befehlsverarbeitungszeit für kleine Entabbildungsbefehle um mindestens einen Faktor zehn, und die Entabbildungs-Befehlsverarbeitungszeit für große Entabbildungsbefehle verringert sich um mindestens einen Faktor vier.
  • Zusätzliche Einzelheiten bezüglich jedes der Verarbeitungsschritte für das Entabbildungs-Befehlsverarbeitungsverfahren 700 sowie Einzelheiten bezüglich zusätzlichen Verarbeitungsschritten für Entabbildungsbefehle werden nachfolgend mit Bezug auf 5A5C gegeben.
  • 5A5C zeigen eine Flussdiagrammdarstellung eines Verfahrens 500 zum Verwalten eines Speicherungssystems gemäß einigen Ausführungsformen. Mindestens bei einigen Ausführungsformen wird das Verfahren 500 durch eine Speicherungsvorrichtung (z.B. die Speicherungsvorrichtung 120, 1) oder eine oder mehrere Komponenten der Speicherungsvorrichtung (z.B. den Speicherungscontroller 124, NVM-Controller 130 und/oder NVM-Vorrichtungen 140, 142, 1) ausgeführt, wobei die Speicherungsvorrichtung wirksam mit einem Hostsystem (z.B. dem Computersystem 110, 1) gekoppelt ist. Bei einigen Ausführungsformen wird das Verfahren 500 durch Anweisungen bestimmt, die in einem nichttransitorischen computerlesbaren Speicherungsmedium gespeichert sind und die durch einen oder mehrere Prozessoren einer Vorrichtung, wie etwa die eine oder mehreren Verarbeitungseinheiten (CPUs) 122-1 des Verwaltungsmoduls 121-1, die in 1 und 2 gezeigt sind, ausgeführt werden. Bei einigen Ausführungsformen wird das Verfahren 500 durch eine Speicherungsvorrichtung (z.B. die Speicherungsvorrichtung 120, 1) oder eine oder mehrere Komponenten eines Speicherungssystems 100 (z.B. des Computersystems 110 und/oder der Speicherungsvorrichtung 120, 1) ausgeführt. Bei einigen Ausführungsformen werden einige der Operationen des Verfahrens 500 in einem Host (z.B. im Computersystem 110, 1) ausgeführt, und Informationen werden zu einer Speicherungsvorrichtung (z.B. der Speicherungsvorrichtung 120, 1) gesendet. Bei einigen Ausführungsformen wird das Verfahren 500 mindestens teilweise durch Anweisungen bestimmt, die in einem nichttransitorischen computerlesbaren Speicherungsmedium gespeichert sind und die durch einen oder mehrere Prozessoren eines Hosts (in 1 nicht gezeigt) ausgeführt werden. Der leichteren Erläuterung halber beschreibt das Folgende das Verfahren 500 als durch eine Speicherungsvorrichtung (z.B. die Speicherungsvorrichtung 120, 1) ausgeführt. Bei einigen Ausführungsformen werden die Operationen des Verfahrens 500 mindestens teilweise durch das Befehlsempfangsmodul 222, das Entabbildungsmodul 240, das Schreib-Cache-Modul 236 und das Log-Modul 224 des Verwaltungsmoduls 121-1 (2) ausgeführt. Für Fachleute ist jedoch erkennbar, dass bei anderen Ausführungsformen eine oder mehrere in dem Verfahren 500 beschriebene Operationen durch einen Host (z.B. das Computersystem 110, 1) ausgeführt werden.
  • Eine Speicherungsvorrichtung (z.B. die Speicherungsvorrichtung 120, 1) unterhält (502) einen Schreib-Cache (z.B. den Schreib-Cache 238, 2) in flüchtigem Speicher der Speicherungsvorrichtung zum Speichern von Daten, die Schreibbefehlen von einem Host (z.B. dem Computersystem 110, 1) entsprechen. Der Host ist wirksam mit der Speicherungsvorrichtung gekoppelt und die Speicherungsvorrichtung umfasst nichtflüchtigen Speicher (z.B. NVM-Vorrichtungen 140, 142, 1) zusätzlich zu dem Schreib-Cache in flüchtigem Speicher. Bei einigen Ausführungsformen wird ein Schreib-Cache-Modul (z.B. das Schreib-Cache-Modul 236, 2) zum Verwalten des Schreib-Cache verwendet. Ferner speichert bei einigen Ausführungsformen der Schreib-Cache Daten, die noch nicht im nichtflüchtigen Speicher der Speicherungsvorrichtung abgespeichert sind, wie oben mit Bezug auf 2 beschrieben.
  • Bei einigen Ausführungsformen umfasst (504) die Speicherungsvorrichtung eine oder mehrere Flash-Speichervorrichtungen. Bei einigen Ausführungsformen umfasst die Speicherungsvorrichtung ein Speicherungsmedium (z.B. die NVM-Vorrichtungen 140, 142, 1), und das Speicherungsmedium umfasst eine oder mehrere nichtflüchtige Speicherungsvorrichtungen, wie etwa Flash-Speichervorrichtungen. Bei einigen Ausführungsformen ist das Speicherungsmedium eine einzige Flash-Speichervorrichtung, während das Speicherungsmedium bei anderen Ausführungsformen mehrere Flash-Speichervorrichtungen umfasst. Zum Beispiel umfasst bei einigen Ausführungsformen das Speicherungsmedium dutzende oder hunderte Flash-Speichervorrichtungen, die in parallelen Speicherkanälen organisiert sind, wie etwa 16, 32 oder 64 Flash-Speichervorrichtungen pro Speicherkanal und 8, 16 oder 32 parallele Speicherkanäle. Bei einigen Ausführungsformen umfasst das nichtflüchtige Speicherungsmedium (z.B. die NVM-Vorrichtungen 140, 142, 1) Flash-Speicher des NAND-Typs oder Flash-Speicher des NOR-Typs. Bei anderen Ausführungsformen umfasst das Speicherungsmedium eine oder mehrere andere Arten von nichtflüchtigen Speicherungsvorrichtungen.
  • Die Speicherungsvorrichtung unterhält (506) eine Abbildungstabelle (z.B. die Übersetzungstabelle 212, 2, und/oder die Abbildungstabelle 402, 4) in flüchtigem Speicher, wobei die Abbildungstabelle zum Übersetzen von logischen Adressen in einem dem Host verfügbaren logischen Adressenraum in physische Adressen in einem physischen Adressenraum der Speicherungsvorrichtung verwendet wird. Bei einigen Ausführungsformen dient ein Wartungsmodul (z.B. das Wartungsmodul 230 oder das Abbildungsmodul 228, 2) zum Unterhalten einer Abbildungstabelle in flüchtigem Speicher, wobei die Abbildungstabelle zum Übersetzen von logischen Adressen in einem dem Host verfügbaren logischen Adressenraum in physische Adressen in einem physischen Adressenraum der Speicherungsvorrichtung verwendet wird, wie oben mit Bezug auf 2 beschrieben.
  • Die Speicherungsvorrichtung empfängt (508) in der Speicherungsvorrichtung des Speicherungssystems einen Entabbildungsbefehl vom Host. Bei einigen Ausführungsformen dient ein Befehlsempfangsmodul (z.B. das Befehlsempfangsmodul 222, 2) zum Empfangen eines Entabbildungsbefehls vom Host in der Speicherungsvorrichtung des Speicherungssystems, wie oben mit Bezug auf 2 beschrieben.
  • Die Speicherungsvorrichtung bestimmt (510), ob eine Größe des Entabbildungsbefehls eine Größenschwelle erfüllt (z.B. größer oder gleich dieser ist), wobei die Größe des Entabbildungsbefehls einer Anzahl von durch den Entabbildungsbefehl ent-abzubildenden logischen Adressen entspricht. Bei einigen Ausführungsformen dient ein Entabbildungsmodul (z.B. das Entabbildungsmodul 240, 2) zum Bestimmen, ob eine Größe des Entabbildungsbefehls eine Größenschwelle erfüllt, wobei die Größe des Entabbildungsbefehls eine Anzahl von durch den Entabbildungsbefehl ent-abzubildenden logischen Adressen entspricht, wie oben mit Bezug auf 2 und 7 beschrieben.
  • Bei einigen Ausführungsformen entspricht (512) Ansprechzeit des Entabbildungsbefehls der Größe des Entabbildungsbefehls. Bei einigen Ausführungsformen ist die Ansprechzeit des Entabbildungsbefehls proportional zu der Größe des Entabbildungsbefehls. Zum Beispiel ist bei einigen Ausführungsformen die Ansprechzeit eines ersten Entabbildungsbefehls der Größe x eine erste Ansprechzeit und die Ansprechzeit eines zweiten Entabbildungsbefehls der Größe y, wobei y größer als x ist, eine zweite Ansprechzeit, wobei die zweite Ansprechzeit größer als die erste Ansprechzeit ist.
  • Gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle erfüllt, führt die Speicherungsvorrichtung eine oder mehrere Operationen eines ersten Entabbildungsprozesses aus (514), wobei der erste Entabbildungsprozess Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung unterlässt (d.h. nicht umfasst). Wie bereits erwähnt ist Abspeichern der Abbildungstabelle in nichtflüchtigem Speicher zeitaufwendig, erhöht Schreibverstärkung, verringert Standzeit und verringert Leistungsfähigkeit. Bei einigen Ausführungsformen dient ein Entabbildungsmodul (z.B. das Entabbildungsmodul 240, 2) zum Ausführen einer oder mehrerer Operationen des ersten Entabbildungsprozesses gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle erfüllt. Ein Entabbildungsmodul wird oben mit Bezug auf 2 beschrieben.
  • Bei einigen Ausführungsformen umfassen (516) die eine oder mehreren Operationen des ersten Entabbildungsprozesses: (1) Bestimmen einer Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, und Bestimmen, ob die Anzahl von Einträgen in dem Schreib-Cache, die schmutzige Daten enthalten, eine Schwelle erfüllt (z.B. die Schwelle übersteigt, die hier manchmal als zweite Schwelle bezeichnet wird, um sie von der oben erwähnten Größenschwelle zu unterscheiden), (2) gemäß einer Bestimmung, dass die Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, die Schwelle erfüllt, Flushen des Schreib-Cache in den nichtflüchtigen Speicher der Speicherungsvorrichtung, (3) gemäß einer Bestimmung, dass die Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, die Schwelle nicht erfüllt, Auslöschen jedes Eintrags des Schreib-Cache, der schmutzige Daten enthält, für eine durch den Entabbildungsbefehl ent-abgebildete logische Adresse (z.B. durch Prüfen jedes Eintrags des Schreib-Cache, um zu bestimmen, ob er schmutzige Daten für eine durch den Entabbildungsbefehl ent-abgebildete logische Adresse speichert, und dann Auslöschen dieses Eintrags, falls er solche Daten enthält), (4) Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl, und (5) Hinzufügen eines oder mehrerer Einträge zu einem Log (z.B. Log 226, 2, das manchmal als Replay-FIFO bezeichnet wird), wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen. Mit Bezug auf Operation 516(1) umfasst bei einigen Ausführungsformen zum Beispiel Bestimmen, ob mehr als eine Schwellenanzahl von Einträgen im Schreib-Cache schmutzige Daten enthält, Bestimmen, ob der Schreib-Cache mehr als halbvoll mit schmutzigen Daten ist. Mit Bezug auf Operation 516(3) führt bei einigen Ausführungsformen die Speicherungsvorrichtung eine umgekehrte Suche nach einem Schreib-Cache-Treffer durch (z.B. Prüfen jeder Cache-Linie mit schmutzigen Daten, um zu bestimmen, ob sie einen Eintrag enthält, der einer durch den Entabbildungsbefehl ent-abgebildeten logischen Adresse entspricht). Mit Bezug auf Operation 516(5) entspricht das Log bei einigen Ausführungsformen Schreibbefehlen und Entabbildungsbefehlen vom Host. Bei einigen Ausführungsformen ist das Log eine FIFO-Warteschlange (First-In, First-Out). Bei einigen Ausführungsformen unterhält die Speicherungsvorrichtung ein einziges Log für die Speicherungsvorrichtung. Bei einigen Ausführungsformen unterhält die Speicherungsvorrichtung für jeden logischen Port (der manchmal als Speicherkanal bezeichnet wird) der Speicherungsvorrichtung ein distinktes Log. Bei einigen Ausführungsformen führen ein Schreib-Cache-Modul (z.B. das Schreib-Cache-Modul 236, 2), ein Entabbildungsmodul (z.B. das Entabbildungsmodul 240, 2), ein Abbildungsmodul (z.B. das Abbildungsmodul 228, 2) und/oder ein Log-Modul (z.B. das Log-Modul 224, 2) die Operation 516 oder einen oder mehrere Teile der Operation 516 aus.
  • Bei einigen Ausführungsformen umfasst (518) das Log einen Eintrag für einen jeweiligen Entabbildungsbefehl, der Informationen umfasst, die mehrere gemäß dem jeweiligen Entabbildungsbefehl ent-abgebildete logische Adressen identifizieren. Wenn zum Beispiel bei einigen Ausführungsformen ein jeweiliger Entabbildungsbefehl LBA 8, LBA 13 und LBA 63 ent-abbildet, umfasst der Eintrag im Log für den jeweiligen Entabbildungsbefehl Informationen, die LBA 8, LBA 13 und LBA 63 identifizieren. Bei einigen alternativen Ausführungsformen umfasst das Log mehrere Entabbildungsbefehlen entsprechende Einträge, wobei jeder Eintrag entweder eine einzelne LBA oder einen Bereich von LBA, die bzw. der durch den Entabbildungsbefehl ent-abgebildet wird bzw. werden, spezifiziert. Zum Beispiel enthält das Log für einen Entabbildungsbefehl, der LBA 8 und die LBA 100-130 ent-abbildet, zwei Einträge, einen für LBA 8 und den anderen für den LBA-Bereich 100-130.
  • Bei einigen Ausführungsformen umfasst (520) das Log einen Eintrag für einen jeweiligen Entabbildungsbefehl, der Informationen enthält, die einen Bereich von gemäß dem jeweiligen Entabbildungsbefehl ent-abgebildeten logischen Adressen identifizieren. Wenn zum Beispiel bei einigen Ausführungsformen ein jeweiliger Entabbildungsbefehl LBA 8 bis LBA 63 ent-abbildet, umfasst der Eintrag im Log für den jeweiligen Entabbildungsbefehl Informationen, die einen Bereich logischer Adressen von LBA 8 bis LBA 63 identifizieren. Bei einigen Ausführungsformen identifiziert der Eintrag im Log den Bereich logischer Adressen durch Identifizierung der ersten ent-abzubildenden LBA und der letzten ent-abzubildenden LBA.
  • Die Speicherungsvorrichtung führt gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle nicht erfüllt (z.B. kleiner als diese ist) eine oder mehrere Operationen eines zweiten Entabbildungsprozesses aus (522), wobei der zweite Entabbildungsprozess Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung unterlässt (d.h. nicht umfasst) und Flushen des Schreib-Cache in den nichtflüchtigen Speicher der Speicherungsvorrichtung nicht umfasst. Abspeichern der Abbildungstabelle in nichtflüchtigem Speicher ist wie bereits erwähnt zeitaufwändig, erhöht Schreibverstärkung, verringert Standzeit und verringert Leistungsfähigkeit. Ferner verringert Flushen des Schreib-Cache in nichtflüchtigen Speicher Standzeit des nichtflüchtigen Speichers und verursacht unter bestimmten Umständen, dass sich offene Blöcke (die noch nicht voll sind) schließen, um dadurch Überprovisionierung zu verringern und Schreibverstärkung zu erhöhen. Bei einigen Ausführungsformen dient ein Entabbildungsmodul (z.B. das Entabbildungsmodul 240, 2) gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle nicht erfüllt, zum Ausführen einer oder mehrerer Operationen eines zweiten Entabbildungsprozesses, wobei der zweite Entabbildungsprozess Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung unterlässt (d.h. nicht umfasst) und Flushen des Schreib-Cache in den nichtflüchtigen Speicher der Speicherungsvorrichtung unterlässt (d.h. nicht umfasst), wie oben mit Bezug auf 2 beschrieben.
  • Bei einigen Ausführungsformen umfassen (524) die eine oder mehreren Operationen des zweiten Entabbildungsprozesses für jede durch den Entabbildungsbefehl spezifizierte logische Adresse gemäß einer Bestimmung, dass der Schreib-Cache einen Eintrag mit schmutzigen Daten, der der logischen Adresse entspricht, aufweist, Auslöschen dieses Eintrags aus dem Schreib-Cache. Anders ausgedrückt, löscht gemäß einer Bestimmung, dass der Schreib-Cache schmutzige Daten für die logische Adresse speichert, der zweite Entabbildungsprozess aus dem Schreib-Cache den Eintrag aus, der schmutzige Daten für die logische Adresse speichert. Bei einigen Ausführungsformen umfasst Auslöschen des Eintrags aus dem Schreib-Cache Auslöschen eines Schmutzig-Flag und Befreien einer entsprechenden Cache-Linie des Schreib-Cache.
  • Bei einigen Ausführungsformen umfassen (526) die eine oder mehreren Operationen des zweiten Entabbildungsprozesses (1) Bestimmen, ob eine jeweilige durch den Entabbildungsbefehl spezifizierte logische Adresse in einem Eintrag von dem Schreib-Cache repräsentiert ist, (2) gemäß einer Bestimmung, dass schmutzige Daten für die jeweilige logische Adresse in dem Schreib-Cache gespeichert sind: (a) Bestimmen, ob die Daten für die jeweilige logische Adresse im Fluge befindlich sind, (b) gemäß einer Bestimmung, dass die Daten für die jeweilige logische Adresse im Fluge befindlich sind, Warten auf den Abschluss einer entsprechenden Schreiboperation, und (c) Auslöschen eines die Daten für die jeweilige logische Adresse speichernden Eintrags aus dem Schreib-Cache, (3) Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl, und (4) Hinzufügen eines oder mehrerer Einträge zu einem Log, wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen. Mit Bezug auf Operation 526(2)(c) umfasst bei einigen Ausführungsformen Auslöschen des Eintrags aus dem Schreib-Cache Auslöschen eines Schmutzig-Flag und Befreien einer entsprechenden Cache-Linie des Schreib-Cache. Mit Bezug auf Operation 526(4) entspricht das Log bei einigen Ausführungsformen Schreibbefehlen und Entabbildungsbefehlen vom Host. Bei einigen Ausführungsformen ist das Log eine FIFO-Warteschlange (First-In, First-Out). Bei einigen Ausführungsformen unterhält die Speicherungsvorrichtung ein einziges Log für die Speicherungsvorrichtung. Bei einigen Ausführungsformen unterhält die Speicherungsvorrichtung für jeden logischen Port der Speicherungsvorrichtung ein distinktes Log. Bei einigen Ausführungsformen führen ein Schreib-Cache-Modul (z.B. das Schreib-Cache-Modul 236, 2), ein Entabbildungsmodul (z.B. das Entabbildungsmodul 240, 2), ein Abbildungsmodul (z.B. das Abbildungsmodul 228, 2) und/oder ein Log-Modul (z.B. das Log-Modul 224, 2) die Operation 526 oder einen oder mehrere Teile der Operation 526 aus.
  • Bei einigen Ausführungsform erlaubt (528) der zweite Entabbildungsprozess Verarbeitung anderer Befehle vom Host zusammen mit dem Entabbildungsbefehl. Zum Beispiel werden bei einigen Ausführungsformen Lese- und/oder Schreibbefehle vom Host zusammen mit dem Entabbildungsbefehl während des zweiten Entabbildungsprozesses verarbeitet. Bei einigen Ausführungsformen erlaubt der zweite Entabbildungsprozess Verarbeitung anderer Befehle vom Host zusammen mit dem Entabbildungsbefehl, während strikte Reihenfolge von Befehlen vom Host aufrechterhalten wird.
  • Bei einigen Ausführungsformen speichert die Speicherungsvorrichtung die Abbildungstabelle auf eingeplante Weise, die von vom Host empfangenen Entabbildungsbefehlen unabhängig ist (z.B. von Empfangen und/oder Verarbeiten der Entabbildungsbefehle unabhängig ist) in dem nichtflüchtigen Speicher (z.B. NVM-Vorrichtungen 140, 142, 1) der Speicherungsvorrichtung ab (530). Zum Beispiel speichert bei einigen Ausführungsformen die Speicherungsvorrichtung die Abbildungstabelle periodisch ab. Zum Beispiel werden Segmente der Abbildungstabelle der Reihe nach mit einer Rate von einem Segment pro Zeiteinheit (z.B. eine Minute, fünf Minuten usw.) in nichtflüchtigen Speicher kopiert, bis die gesamte Abbildungstabelle kopiert wurde, und nimmt dann mit dem ersten Segment der Abbildungstabelle wieder auf. Bei einigen Ausführungsformen speichert die Speicherungsvorrichtung die Abbildungstabelle auf eingeplante Weise ab, die nichtperiodisch ist (z.B. um 1:00 Uhr, um 3:30 Uhr und um 6:00 Uhr). Bei einigen Ausführungsformen wird ein Abspeichermodul (z.B. das Abspeichermodul 232, 2) verwendet, um die Abbildungstabelle auf eingeplante Weise, die von vom Host empfangenen Entabbildungsbefehlen unabhängig ist, in dem nichtflüchtigen Speicher der Speicherungsvorrichtung abzuspeichern, wie oben mit Bezug auf 2 beschrieben.
  • Bei einigen Ausführungsformen umfasst Abspeichern der Abbildungstabelle Speichern mehrerer distinkter Teile der Abbildungstabelle in dem nichtflüchtigen Speicher zu distinkten eingeplanten Zeiten. Bei einigen Ausführungsformen speichert die Speicherungsvorrichtung einen Teil (z.B. 10 MB) der Abbildungstabelle periodisch (z.B. jede Stunde usw.). Bei einigen Ausführungsformen speichert die Speicherungsvorrichtung einen Teil der Abbildungstabelle auf eingeplante Weise, die nichtperiodisch ist (z.B. um 1:00 Uhr, um 3:30 Uhr und um 6:00 Uhr). Bei einigen Ausführungsformen speichert die Speicherungsvorrichtung zu einem ersten Zeitpunkt einen ersten Teil der Abbildungstabelle ab, speichert zu einem zweiten Zeitpunkt einen zweiten Teil der Abbildungstabelle ab, speichert zu einem dritten Zeitpunkt einen dritten Teil der Abbildungstabelle ab usw.
  • Obwohl hier die Ausdrücke „erstes“, „zweites“ usw. zur Beschreibung verschiedener Elemente verwendet werden können, versteht sich, dass diese Elemente durch diese Ausdrücke nicht eingeschränkt werden sollten. Die Ausdrücke dienen lediglich zur Unterscheidung eines Elements von einem anderen. Zum Beispiel könnte eine erste Region als zweite Region bezeichnet werden und ähnlich eine zweite Region als eine erste Region, ohne die Bedeutung der Beschreibung zu ändern, solange jedes Auftreten der „ersten Region“ einheitlich umbenannt wird und jedes Auftreten der „zweiten Region“ einheitlich umbenannt wird. Die erste Region und die zweite Region sind beide Regionen, aber sie sind nicht dieselbe Region.
  • Die hier gebrauchte Terminologie dient lediglich zur Beschreibung konkreter Ausführungsformen und soll keine Beschränkung der Ansprüche sein. Wie in der Beschreibung der Ausführungsformen und den angefügten Ansprüchen verwendet, sollen die Singularformen „ein“, „eine“ und „das“ auch die Pluralformen umfassen, solange es der Kontext nicht deutlich anders angibt. Außerdem versteht sich, dass der Ausdruck „und/oder“, so wie er hier gebraucht wird, beliebige und alle mögliche(n) Kombinationen eines oder mehrerer der zugeordneten aufgelisteten Posten bedeutet und einschließt. Ferner versteht sich, dass die Ausdrücke „umfasst“ und/oder „umfassend“, wenn sie in der vorliegenden Beschreibung verwendet werden, die Anwesenheit angegebener Merkmale, ganzer Zahlen, Schritte, Operationen, Elemente und/oder Komponenten spezifizieren, aber nicht die Anwesenheit oder den Zusatz eines oder mehrerer anderer Merkmale, einer oder mehrerer anderer ganzer Zahlen, eines oder mehrerer anderer Schritte, einer oder mehrerer anderer Operationen, eines oder mehrerer anderer Elemente, einer oder mehrerer anderer Komponenten und/oder Gruppen davon ausschließen.
  • Im vorliegenden Gebrauch ist die Phrase „mindestens eines von A, B und C“ als einen oder mehrere der aufgelisteten Posten erfordernd aufzufassen, und diese Phrase lautet auf eine einzige Instanz von A alleine, eine einzige Instanz von B alleine oder eine einzige Instanz von C alleine, schließt aber gleichzeitig Kombinationen der aufgelisteten Posten ein, wie „eines oder mehr von A und eines oder mehr von B ohne irgendwelche von C“ und dergleichen.
  • Im vorliegenden Gebrauch kann der Ausdruck „falls“ abhängig vom Kontext so aufgefasst werden, dass er „wenn“ oder „beim“ oder „als Reaktion auf Bestimmen“ oder „gemäß einer Bestimmung“ oder „als Reaktion auf Detektion“, dass eine angegebene Vorbedingung wahr ist, bedeuten. Ähnlich kann die Phrase „wenn bestimmt wird (dass eine angegebene Vorbedingung wahr ist)“ oder „wenn (eine angegebene Vorbedingung wahr ist)“ oder „wenn (eine angegebene Vorbedingung wahr ist)“ abhängig vom Kontext so aufgefasst werden, dass sie „bei Bestimmung“ oder „als Reaktion auf Bestimmung“ oder „gemäß einer Bestimmung“ oder „bei Detektion“ oder „als Reaktion auf Detektion“, dass die angegebene Vorbedingung wahr ist, bedeutet.
  • Die obige Beschreibung wurde zur Erläuterung unter Bezugnahme auf spezifische Ausführungsformen beschrieben. Die beispielhaften Besprechungen sollen jedoch nicht erschöpfend sein oder die Ansprüche auf die genaue offenbarte Form beschränken. Im Hinblick auf die obigen Lehren sind viele Modifikationen und Abwandlungen möglich. Die Ausführungsformen wurden gewählt und beschrieben, um Prinzipien des Betriebs und praktischer Anwendungen am besten zu erläutern, um dadurch andere Fachleute zu befähigen.

Claims (21)

  1. Verfahren zum Verwalten einer Speicherungsvorrichtung, wobei das Verfahren Folgendes umfasst: Unterhalten eines Schreib-Cache in flüchtigem Speicher der Speicherungsvorrichtung zum Speichern von Daten, die Schreibbefehlen von einem Host entsprechen, wobei der Host wirksam mit der Speicherungsvorrichtung gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst; Unterhalten einer Abbildungstabelle in flüchtigem Speicher, wobei die Abbildungstabelle zum Übersetzen von logischen Adressen in einem logischen Adressenraum, der dem Host verfügbar ist, in physische Adressen in einem physischen Adressenraum der Speicherungsvorrichtung verwendet wird; Empfangen eines Entabbildungsbefehls vom Host in der Speicherungsvorrichtung; Bestimmen, ob eine Größe des Entabbildungsbefehls eine Größenschwelle erfüllt, wobei die Größe des Entabbildungsbefehls einer Anzahl von durch den Entabbildungsbefehl ent-abzubildenden logischen Adressen entspricht; gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle erfüllt, Ausführen einer oder mehrerer Operationen eines ersten Entabbildungsprozesses, wobei der erste Entabbildungsprozess kein Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung umfasst; und gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle nicht erfüllt, Ausführen einer oder mehrerer Operationen eines zweiten Entabbildungsprozesses, wobei der zweite Entabbildungsprozess kein Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung umfasst und kein Flushen des Schreib-Cache in den nichtflüchtigen Speicher der Speicherungsvorrichtung umfasst; wobei die eine oder mehreren Operationen des ersten Entabbildungsprozesses Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl und Hinzufügen eines oder mehrerer Einträge zu einem Log, wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen, umfassen; und wobei die eine oder mehreren Operationen des zweiten Entabbildungsprozesses Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl und Hinzufügen eines oder mehrerer Einträge zu einem Log, wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen, umfassen.
  2. Verfahren nach Anspruch 1, wobei die eine oder mehreren Operationen des ersten Entabbildungsprozesses Folgendes umfassen: Bestimmen einer Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, und Bestimmen, ob die Anzahl von Einträgen in dem Schreib-Cache, die schmutzige Daten enthalten, eine Schwelle erfüllt; gemäß einer Bestimmung, dass die Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, die Schwelle erfüllt, Flushen des Schreib-Cache in den nichtflüchtigen Speicher der Speicherungsvorrichtung; gemäß einer Bestimmung, dass die Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, die Schwelle nicht erfüllt, Auslöschen jedes Eintrags des Schreib-Cache, der schmutzige Daten enthält, für eine durch den Entabbildungsbefehl ent-abgebildete logische Adresse. Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl und Hinzufügen eines oder mehrerer Einträge zu einem Log, wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen, umfassen; und
  3. Verfahren nach einem der Ansprüche 1–2, wobei die eine oder mehreren Operationen des zweiten Entabbildungsprozesses Folgendes umfassen: für jede durch den Entabbildungsbefehl spezifizierte logische Adresse gemäß einer Bestimmung, dass Daten für die logische Adresse in dem Schreib-Cache gespeichert sind, Auslöschen eines die Daten für die logische Adresse speichernden Eintrags aus dem Schreib-Cache.
  4. Verfahren nach einem der Ansprüche 1–2, wobei die eine oder mehreren Operationen des zweiten Entabbildungsprozesses Folgendes umfassen: Bestimmen, ob Daten für eine jeweilige durch den Entabbildungsbefehl spezifizierte logische Adresse in dem Schreib-Cache gespeichert sind; gemäß einer Bestimmung, dass die Daten für die jeweilige logische Adresse in dem Schreib-Cache gespeichert sind: Bestimmen, ob die Daten für die jeweilige logische Adresse im Fluge befindlich sind; gemäß einer Bestimmung, dass die Daten für die jeweilige logische Adresse im Fluge befindlich sind, Warten auf den Abschluss einer entsprechenden Schreiboperation; und Auslöschen eines die Daten für die jeweilige logische Adresse speichernden Eintrags aus dem Schreib-Cache. Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl und Hinzufügen eines oder mehrerer Einträge zu einem Log, wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen, umfassen.
  5. Verfahren nach einem der Ansprüche 1–4, wobei der zweite Entabbildungsprozess die Verarbeitung von anderen Befehlen vom Host zusammen mit dem Entabbildungsbefehl erlaubt.
  6. Verfahren nach einem der Ansprüche 1–5, wobei Ansprechzeit des Entabbildungsbefehls der Größe des Entabbildungsbefehls entspricht.
  7. Verfahren nach einem der Ansprüche 1–6, dass ferner Abspeicherung der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung auf geplanter Basis umfasst, die von vom Host empfangenen Entabbildungsbefehlen unabhängig ist.
  8. Verfahren nach einem der Ansprüche 1–7, wobei das Log einen Eintrag für einen jeweiligen Entabbildungsbefehl umfasst, der Informationen umfasst, die mehrere gemäß dem jeweiligen Entabbildungsbefehl ent-abgebildete logische Adressen identifizieren.
  9. Verfahren nach einem der Ansprüche 1–7, wobei das Log einen Eintrag für einen jeweiligen Entabbildungsbefehl umfasst, der Informationen umfasst, die einen Bereich von gemäß dem jeweiligen Entabbildungsbefehl ent-abgebildeten logischen Adressen identifizieren.
  10. Verfahren nach einem der Ansprüche 1–9, wobei die Speicherungsvorrichtung eine oder mehrere Flash-Speichervorrichtungen umfasst.
  11. Speicherungsvorrichtung, umfassend: nichtflüchtigen Speicher; einen Schreib-Cache; und einen Speicherungscontroller mit einem oder mehreren Prozessoren, die dafür ausgelegt sind, Anweisungen in einem oder mehreren Programmen auszuführen; wobei der Speicherungscontroller dafür ausgelegt ist, Operationen auszuführen, umfassend: Unterhalten des Schreib-Cache für Schreibbefehle von einem Host in flüchtigem Speicher der Speicherungsvorrichtung, wobei der Host wirksam mit der Speicherungsvorrichtung gekoppelt ist und der Schreib-Cache Schreibbefehle vom Host umfasst, die noch nicht in dem nichtflüchtigen Speicher der Speicherungsvorrichtung abgespeichert sind; Unterhalten einer Abbildungstabelle in flüchtigem Speicher, wobei die Abbildungstabelle zum Übersetzen von logischen Adressen in einem logischen Adressenraum, der dem Host verfügbar ist, in physische Adressen in einem physischen Adressenraum der Speicherungsvorrichtung verwendet wird; Empfangen eines Entabbildungsbefehls vom Host in der Speicherungsvorrichtung; Bestimmen, ob eine Größe des Entabbildungsbefehls eine Größenschwelle erfüllt, wobei die Größe des Entabbildungsbefehls einer Anzahl von durch den Entabbildungsbefehl ent-abzubildenden logischen Adressen entspricht; gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle erfüllt, Ausführen einer oder mehrerer Operationen eines ersten Entabbildungsprozesses, wobei der erste Entabbildungsprozess kein Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung umfasst; und gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle nicht erfüllt, Ausführen einer oder mehrerer Operationen eines zweiten Entabbildungsprozesses, wobei der zweite Entabbildungsprozess kein Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung umfasst und kein Flushen des Schreib-Cache in den nichtflüchtigen Speicher der Speicherungsvorrichtung umfasst; wobei die eine oder mehreren Operationen des ersten Entabbildungsprozesses Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl und Hinzufügen eines oder mehrerer Einträge zu einem Log, wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen, umfassen; und wobei die eine oder mehreren Operationen des zweiten Entabbildungsprozesses. Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl und Hinzufügen eines oder mehrerer Einträge zu einem Log, wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen, umfassen.
  12. Speicherungsvorrichtung nach Anspruch 11, wobei der Speicherungscontroller Folgendes umfasst: ein Schreib-Cache-Modul zum Unterhalten des Schreib-Cache; ein Abbildungsmodul zum Unterhalten der Abbildungstabelle; und ein Entabbildungsmodul, das bestimmt, ob die Größe des Entabbildungsbefehls die Größenschwelle erfüllt, gemäß der Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle erfüllt, den ersten Entabbildungsprozess ausführt und gemäß der Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle nicht erfüllt, den zweiten Entabbildungsprozess ausführt.
  13. Speicherungsvorrichtung nach einem der Ansprüche 11–12, wobei die eine oder mehreren Operationen des ersten Entabbildungsprozesses Folgendes umfassen: Bestimmen einer Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, und Bestimmen, ob die Anzahl von Einträgen in dem Schreib-Cache, die schmutzige Daten enthalten, eine Schwelle erfüllt; gemäß einer Bestimmung, dass die Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, die Schwelle erfüllt, Flushen des Schreib-Cache in den nichtflüchtigen Speicher der Speicherungsvorrichtung; gemäß einer Bestimmung, dass die Anzahl von Einträgen in den Schreib-Cache, die schmutzige Daten enthalten, die Schwelle nicht erfüllt, Auslöschen jedes Eintrags des Schreib-Cache, der Daten enthält, für eine durch den Entabbildungsbefehl ent-abgebildete logische Adresse.
  14. Speicherungsvorrichtung nach einem der Ansprüche 11–13, wobei die eine oder mehreren Operationen des zweiten Entabbildungsprozesses Folgendes umfassen: für jede durch den Entabbildungsbefehl spezifizierte logische Adresse gemäß einer Bestimmung, dass Daten für die logische Adresse in dem Schreib-Cache gespeichert sind, Auslöschen eines die Daten für die logische Adresse speichernden Eintrags aus dem Schreib-Cache.
  15. Speicherungsvorrichtung nach einem der Ansprüche 11–13, wobei die eine oder mehreren Operationen des zweiten Entabbildungsprozesses Folgendes umfassen: Bestimmen, ob Daten für eine jeweilige durch den Entabbildungsbefehl spezifizierte logische Adresse in dem Schreib-Cache gespeichert sind; gemäß einer Bestimmung, dass die Daten für die jeweilige logische Adresse in dem Schreib-Cache gespeichert sind: Bestimmen, ob die Daten für die jeweilige logische Adresse im Fluge befindlich sind; gemäß einer Bestimmung, dass die Daten für die jeweilige logische Adresse im Fluge befindlich sind, Warten auf den Abschluss einer entsprechenden Schreiboperation; und Auslöschen eines die Daten für die jeweilige logische Adresse speichernden Eintrags aus dem Schreib-Cache.
  16. Speicherungsvorrichtung nach einem der Ansprüche 11–15, wobei der zweite Entabbildungsprozess die Verarbeitung von anderen Befehlen vom Host zusammen mit dem Entabbildungsbefehl erlaubt.
  17. Speicherungsvorrichtung nach einem der Ansprüche 11–16, wobei Ansprechzeit des Entabbildungsbefehls der Größe des Entabbildungsbefehls entspricht.
  18. Speicherungsvorrichtung nach einem der Ansprüche 11–17, die ferner Abspeicherung der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung auf geplanter Basis umfasst, die von vom Host empfangenen Entabbildungsbefehlen unabhängig ist.
  19. Speicherungsvorrichtung nach einem der Ansprüche 11–18, wobei die Speicherungsvorrichtung eine oder mehrere Flash-Speichervorrichtungen umfasst.
  20. Computerlesbares Speicherungsmedium, das ein oder mehrere Programme speichert, die für Ausführung durch einen oder mehrere Prozessoren eines Speicherungscontrollers in einer Speicherungsvorrichtung ausgelegt sind, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher und einen Schreib-Cache aufweist, wobei Ausführung des einen oder der mehreren Programme durch den einen oder die mehreren Prozessoren bewirkt, dass die Speicherungsvorrichtung Operationen ausführt, umfassend: Unterhalten des Schreib-Cache in flüchtigem Speicher der Speicherungsvorrichtung für Schreibbefehle von einem Host, wobei der Host wirksam mit der Speicherungsvorrichtung gekoppelt ist und die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst, wobei der Schreib-Cache Schreibbefehle vom Host umfasst, die noch nicht in dem nichtflüchtigen Speicher der Speicherungsvorrichtung abgespeichert sind; Unterhalten einer Abbildungstabelle in flüchtigem Speicher, wobei die Abbildungstabelle zum Übersetzen von logischen Adressen in einem logischen Adressenraum, der dem Host verfügbar ist, in physische Adressen in einem physischen Adressenraum der Speicherungsvorrichtung verwendet wird; Empfangen eines Entabbildungsbefehls vom Host in der Speicherungsvorrichtung; Bestimmen, ob eine Größe des Entabbildungsbefehls eine Größenschwelle erfüllt, wobei die Größe des Entabbildungsbefehls einer Anzahl von durch den Entabbildungsbefehl ent-abzubildenden logischen Adressen entspricht; gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle erfüllt, Ausführen einer oder mehrerer Operationen eines ersten Entabbildungsprozesses, wobei der erste Entabbildungsprozess kein Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung umfasst; und gemäß einer Bestimmung, dass die Größe des Entabbildungsbefehls die Größenschwelle nicht erfüllt, Ausführen einer oder mehrerer Operationen eines zweiten Entabbildungsprozesses, wobei der zweite Entabbildungsprozess kein Abspeichern der Abbildungstabelle in dem nichtflüchtigen Speicher der Speicherungsvorrichtung umfasst und kein Flushen des Schreib-Cache in den nichtflüchtigen Speicher der Speicherungsvorrichtung umfasst; wobei die eine oder mehreren Operationen des ersten Entabbildungsprozesses Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl und Hinzufügen eines oder mehrerer Einträge zu einem Log, wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen, umfassen; und wobei die eine oder mehreren Operationen des zweiten Entabbildungsprozesses. Aktualisieren der Abbildungstabelle in flüchtigem Speicher gemäß dem Entabbildungsbefehl und Hinzufügen eines oder mehrerer Einträge zu einem Log, wobei der eine oder die mehreren Einträge dem Entabbildungsbefehl entsprechen, umfassen.
  21. Computerlesbares Speicherungsmedium nach Anspruch 20, wobei Ausführung des einen oder der mehreren Programme durch den einen oder die mehreren Prozessoren bewirkt, dass die Speicherungsvorrichtung das Verfahren nach einem der Ansprüche 2–10 ausführt.
DE112015004873.1T 2014-10-27 2015-10-01 Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung Ceased DE112015004873T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462069249P 2014-10-27 2014-10-27
US62/069,249 2014-10-27
US14/668,690 US9558125B2 (en) 2014-10-27 2015-03-25 Processing of un-map commands to enhance performance and endurance of a storage device
US14/668,690 2015-03-25
PCT/US2015/053551 WO2016069188A1 (en) 2014-10-27 2015-10-01 Processing of un-map commands to enhance performance and endurance of a storage device

Publications (1)

Publication Number Publication Date
DE112015004873T5 true DE112015004873T5 (de) 2017-07-06

Family

ID=55792105

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015004873.1T Ceased DE112015004873T5 (de) 2014-10-27 2015-10-01 Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung

Country Status (4)

Country Link
US (1) US9558125B2 (de)
CN (1) CN107003942B (de)
DE (1) DE112015004873T5 (de)
WO (1) WO2016069188A1 (de)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495423B2 (en) * 2009-08-11 2013-07-23 International Business Machines Corporation Flash-based memory system with robust backup and restart features and removable modules
US9652415B2 (en) 2014-07-09 2017-05-16 Sandisk Technologies Llc Atomic non-volatile memory data transfer
US9904621B2 (en) 2014-07-15 2018-02-27 Sandisk Technologies Llc Methods and systems for flash buffer sizing
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US9753649B2 (en) 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US9952978B2 (en) 2014-10-27 2018-04-24 Sandisk Technologies, Llc Method for improving mixed random performance in low queue depth workloads
US9817752B2 (en) 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9824007B2 (en) 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9647697B2 (en) 2015-03-16 2017-05-09 Sandisk Technologies Llc Method and system for determining soft information offsets
KR102506135B1 (ko) 2015-03-16 2023-03-07 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US9772796B2 (en) 2015-04-09 2017-09-26 Sandisk Technologies Llc Multi-package segmented data transfer protocol for sending sub-request to multiple memory portions of solid-state drive using a single relative memory address
US9864545B2 (en) 2015-04-14 2018-01-09 Sandisk Technologies Llc Open erase block read automation
US10372529B2 (en) 2015-04-20 2019-08-06 Sandisk Technologies Llc Iterative soft information correction and decoding
US9778878B2 (en) 2015-04-22 2017-10-03 Sandisk Technologies Llc Method and system for limiting write command execution
US10891264B2 (en) * 2015-04-30 2021-01-12 Vmware, Inc. Distributed, scalable key-value store
US9870149B2 (en) 2015-07-08 2018-01-16 Sandisk Technologies Llc Scheduling operations in non-volatile memory devices using preference values
US9715939B2 (en) 2015-08-10 2017-07-25 Sandisk Technologies Llc Low read data storage management
US11385797B2 (en) 2015-10-05 2022-07-12 Micron Technology, Inc. Solid state storage device with variable logical capacity based on memory lifecycle
US10228990B2 (en) 2015-11-12 2019-03-12 Sandisk Technologies Llc Variable-term error metrics adjustment
US10126970B2 (en) 2015-12-11 2018-11-13 Sandisk Technologies Llc Paired metablocks in non-volatile storage device
US9837146B2 (en) 2016-01-08 2017-12-05 Sandisk Technologies Llc Memory system temperature management
US10732856B2 (en) 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
CN106055280B (zh) * 2016-06-29 2019-08-27 联想(北京)有限公司 一种元数据回写方法和电子设备
US10481830B2 (en) 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
US10229047B2 (en) * 2016-08-06 2019-03-12 Wolley Inc. Apparatus and method of wear leveling for storage class memory using cache filtering
KR20190044968A (ko) * 2017-10-23 2019-05-02 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN109840048B (zh) * 2017-11-29 2022-04-15 北京忆恒创源科技股份有限公司 存储命令处理方法及其存储设备
WO2019105029A1 (zh) * 2017-11-29 2019-06-06 北京忆恒创源科技有限公司 去分配命令处理方法及其存储设备
KR102535828B1 (ko) * 2018-02-06 2023-05-23 삼성전자주식회사 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법
KR102493323B1 (ko) * 2018-02-21 2023-01-31 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR102583592B1 (ko) * 2018-03-27 2023-10-06 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
TWI660271B (zh) * 2018-04-24 2019-05-21 群聯電子股份有限公司 整理指令記錄方法、記憶體控制電路單元與記憶體儲存裝置
CN110413211B (zh) * 2018-04-28 2023-07-07 伊姆西Ip控股有限责任公司 存储管理方法、电子设备以及计算机可读介质
CN110442300B (zh) * 2018-05-03 2022-12-13 群联电子股份有限公司 整理指令记录方法、存储器控制电路单元与存储装置
US10725931B2 (en) * 2018-08-22 2020-07-28 Western Digital Technologies, Inc. Logical and physical address field size reduction by alignment-constrained writing technique
KR20200074647A (ko) * 2018-12-17 2020-06-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
CN111857547A (zh) * 2019-04-29 2020-10-30 伊姆西Ip控股有限责任公司 用于管理数据存储的方法、设备和计算机程序产品
CN112100087B (zh) * 2019-06-17 2024-04-02 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN112099985B (zh) 2019-06-17 2023-09-12 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN112130750B (zh) 2019-06-25 2023-11-07 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN112130749B (zh) 2019-06-25 2023-12-22 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN110413228B (zh) * 2019-07-09 2022-10-14 江苏芯盛智能科技有限公司 一种映射表管理方法、系统及电子设备和存储介质
US10957381B1 (en) * 2019-08-28 2021-03-23 Micron Technology, Inc. Metadata grouping for un-map techniques
EP4085335A1 (de) 2019-12-31 2022-11-09 Micron Technology, Inc. Datenentfernungsmarkierung in einer speichervorrichtung
US11372754B2 (en) * 2020-06-12 2022-06-28 Western Digital Technologies, Inc. Storage system and method for enabling a software-defined dynamic storage response
CN111881065B (zh) * 2020-07-30 2022-07-05 北京浪潮数据技术有限公司 数据重删操作的物理地址处理方法、装置、设备及介质
US11893277B2 (en) * 2020-10-14 2024-02-06 Western Digital Technologies, Inc. Data storage device managing low endurance semiconductor memory write cache
US11593309B2 (en) * 2020-11-05 2023-02-28 International Business Machines Corporation Reliable delivery of event notifications from a distributed file system
CN112765051B (zh) * 2021-01-22 2022-12-20 珠海妙存科技有限公司 降低闪存设备trim消耗的方法、装置及介质
CN113553008A (zh) * 2021-07-20 2021-10-26 深圳忆联信息系统有限公司 映射表更新方法、装置、计算机设备及存储介质
US11768631B2 (en) * 2021-08-31 2023-09-26 Micron Technology, Inc. Rapid reliable file system access
CN114090494B (zh) * 2021-11-29 2024-04-05 海光信息技术股份有限公司 数据传输方法、装置、设备和存储介质
CN115543865B (zh) * 2022-11-25 2023-04-11 成都佰维存储科技有限公司 掉电保护方法、装置、可读存储介质及电子设备
CN116244216B (zh) * 2023-03-17 2024-03-01 摩尔线程智能科技(北京)有限责任公司 缓存控制方法、装置、缓存行结构、电子设备和存储介质
CN117492663B (zh) * 2023-12-29 2024-03-26 合肥康芯威存储技术有限公司 一种存储器及其数据处理方法

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4586167A (en) 1983-01-24 1986-04-29 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device
EP0376285B1 (de) 1988-12-27 1994-03-09 Nec Corporation Mikrorechner mit einem elektrisch löschbaren und programmierbaren nichtflüchtigen Speicher
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5909559A (en) 1997-04-04 1999-06-01 Texas Instruments Incorporated Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width
US6209072B1 (en) 1997-05-06 2001-03-27 Intel Corporation Source synchronous interface between master and slave using a deskew latch
US6449709B1 (en) 1998-06-02 2002-09-10 Adaptec, Inc. Fast stack save and restore system and method
KR100306882B1 (ko) 1998-10-28 2001-12-01 박종섭 반도체메모리소자에서데이터스트로브신호를버퍼링하기위한방법및장치
US6401213B1 (en) 1999-07-09 2002-06-04 Micron Technology, Inc. Timing circuit for high speed memory
US6944731B2 (en) 2001-12-19 2005-09-13 Agere Systems Inc. Dynamic random access memory system with bank conflict avoidance feature
US6792516B2 (en) 2001-12-28 2004-09-14 Intel Corporation Memory arbiter with intelligent page gathering logic
US6922754B2 (en) 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US20110264851A1 (en) 2006-12-07 2011-10-27 Tae-Keun Jeon Memory system and data transmitting method thereof
KR100843280B1 (ko) 2006-12-07 2008-07-04 삼성전자주식회사 메모리 시스템 및 그것의 데이터 전송 방법
US8122202B2 (en) 2007-02-16 2012-02-21 Peter Gillingham Reduced pin count interface
US8533384B2 (en) 2007-12-27 2013-09-10 Sandisk Enterprise Ip Llc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
US8285940B2 (en) 2008-02-29 2012-10-09 Cadence Design Systems, Inc. Method and apparatus for high speed cache flushing in a non-volatile memory
DE102008022831B4 (de) 2008-05-08 2015-09-10 Fujitsu Technology Solutions Intellectual Property Gmbh Arbeitsverfahren für ein Speichersubsystem und Vorrichtungen zur Durchführung des Arbeitsverfahrens
US7855931B2 (en) 2008-07-21 2010-12-21 Micron Technology, Inc. Memory system and method using stacked memory device dice, and system using the memory system
US8289760B2 (en) 2008-07-02 2012-10-16 Micron Technology, Inc. Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes
KR20100082185A (ko) 2009-01-08 2010-07-16 삼성전자주식회사 플래시 메모리, 캐시 메모리, 그리고 제어기를 포함하는 사용자 장치
US8250328B2 (en) 2009-03-24 2012-08-21 Micron Technology, Inc. Apparatus and method for buffered write commands in a memory
US8397101B2 (en) 2010-06-03 2013-03-12 Seagate Technology Llc Ensuring a most recent version of data is recovered from a memory
EP2583184A4 (de) 2010-06-18 2014-07-09 Lsi Corp Skalierbare speichervorrichtungen
US8862806B2 (en) 2010-08-20 2014-10-14 Samsung Electronics Co., Ltd Semiconductor storage device and method of throttling performance of the same
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8397023B2 (en) 2010-12-18 2013-03-12 Lsi Corporation System and method for handling IO to drives in a memory constrained environment
US8954689B2 (en) 2011-06-30 2015-02-10 Seagate Technology Llc Limiting activity rates that impact life of a data storage media
KR101438716B1 (ko) * 2011-08-09 2014-09-11 엘에스아이 코포레이션 I/o 디바이스 및 컴퓨팅 호스팅 상호동작
KR101900423B1 (ko) 2011-09-19 2018-09-21 삼성전자주식회사 반도체 메모리 장치
KR101824949B1 (ko) 2011-11-23 2018-02-05 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 그것을 포함한 사용자 장치
US8825967B2 (en) 2011-12-08 2014-09-02 Conversant Intellectual Property Management Inc. Independent write and read control in serially-connected devices
US8949512B2 (en) * 2012-02-17 2015-02-03 Apple Inc. Trim token journaling
JP5853899B2 (ja) 2012-03-23 2016-02-09 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
US9218281B2 (en) * 2012-05-04 2015-12-22 Seagate Technology Llc Maintaining ordering via a multi-level map of a solid-state media
US20140229655A1 (en) 2013-02-08 2014-08-14 Seagate Technology Llc Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure
US9552288B2 (en) 2013-02-08 2017-01-24 Seagate Technology Llc Multi-tiered memory with different metadata levels
US20140244897A1 (en) 2013-02-26 2014-08-28 Seagate Technology Llc Metadata Update Management In a Multi-Tiered Memory
US20140241071A1 (en) 2013-02-26 2014-08-28 Seagate Technology Llc Fast Power Loss Recovery By Swapping Boot and Recovery Data Sets in a Memory
US9311326B2 (en) 2013-04-12 2016-04-12 Alterante, Inc. Virtual file system for automated data replication and review
KR20160034913A (ko) 2013-07-25 2016-03-30 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 미―준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어
US20150186278A1 (en) 2013-12-26 2015-07-02 Sarathy Jayakumar Runtime persistence
KR102318478B1 (ko) 2014-04-21 2021-10-27 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
CN104035729B (zh) * 2014-05-22 2017-02-15 中国科学院计算技术研究所 一种日志映射的块设备精简配置方法

Also Published As

Publication number Publication date
CN107003942A (zh) 2017-08-01
WO2016069188A8 (en) 2017-03-30
US9558125B2 (en) 2017-01-31
WO2016069188A1 (en) 2016-05-06
CN107003942B (zh) 2020-09-22
US20160117252A1 (en) 2016-04-28

Similar Documents

Publication Publication Date Title
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE102018105427A1 (de) Beibehalten von Daten bei einer Stromabschaltung
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE102018105854A1 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE102018115163A1 (de) Routing von datenblöcken während einer thermodrosselung
CN107957961A (zh) 存储设备、存储系统和计算设备
DE102018123805A1 (de) Vorgang für verteiltes Programmieren
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102015117500A1 (de) Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final