DE112015004863T5 - Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen - Google Patents

Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen Download PDF

Info

Publication number
DE112015004863T5
DE112015004863T5 DE112015004863.4T DE112015004863T DE112015004863T5 DE 112015004863 T5 DE112015004863 T5 DE 112015004863T5 DE 112015004863 T DE112015004863 T DE 112015004863T DE 112015004863 T5 DE112015004863 T5 DE 112015004863T5
Authority
DE
Germany
Prior art keywords
storage device
log
nonvolatile memory
mapping table
storing
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
DE112015004863.4T
Other languages
English (en)
Inventor
Douglas A. Prins
Anand Kulkarni
Yipei Yu
Aaron K. Olbrich
Huapeng Guan
Graeme Weston-Lewis
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 DE112015004863T5 publication Critical patent/DE112015004863T5/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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/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

Systeme, Verfahren und/oder Vorrichtungen werden verwendet, um die Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen zu ermöglichen. In einem Aspekt umfasst das Verfahren (1) Empfangen mehrerer Befehle von einem Host in einer Speicherungsvorrichtung, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst, (2) Unterhalten eines Logs entsprechend Schreibbefehlen und Entabbildungsbefehlen vom Host, (3) Unterhalten einer Abbildungstabelle in flüchtigem Speicher, wobei die Abbildungstabelle zum Übersetzen von logischen Adressen in physische Adressen verwendet wird, (4) Abspeichern der Abbildungstabelle auf eingeplanter Basis, die von den Entabbildungsbefehlen unabhängig ist, im nichtflüchtigen Speicher der Speicherungsvorrichtung, (5) Abspeichern des Logs im nichtflüchtigen Speicher und (6) Wiederaufbauen der Abbildungstabelle aus der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung und aus dem abgespeicherten Log im nichtflüchtigen Speicher der Speicherungsvorrichtung beim Herauffahren der Speicherungsvorrichtung.

Description

  • TECHNISCHES GEBIET
  • Die offenbarten Ausführungsformen betreffen allgemein Speichersysteme und insbesondere das Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen in 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.
  • Datenhärtung, das Abspeichern von Daten und missionskritischen Metadaten, die in flüchtiger Speicherung gehalten werden, ist für eine Speicherungsvorrichtung wichtig. Wenn es zu einem Stromausfall kommt, können missionskritische Daten in flüchtigem Speicher in einer Anzahl von Subsystemkomponenten residieren. Das Koordinieren und Verwalten mehrerer Subsystemkomponenten, um sicherzustellen, dass flüchtige Daten erfolgreich abgespeichert werden, ist für den Schutz der Datenintegrität einer Speicherungsvorrichtung wichtig.
  • 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 das Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen zu ermöglichen. In einem Aspekt wird beim Herauffahren einer Speicherungsvorrichtung eine Abbildungstabelle in flüchtigem Speicher aus einem abgespeicherten Schnappschuss der Abbildungstabelle in nichtflüchtigem Speicher der Speicherungsvorrichtung und aus einem abgespeicherten Log im nichtflüchtigem Speicher der Speicherungsvorrichtung wieder aufgebaut.
  • 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.
  • 5A5B zeigen eine Flussdiagrammdarstellung eines Verfahrens zur Verwaltung eines Speicherungssystems 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 Fig.en 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 das Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen ermöglicht wird. Einige Ausführungsformen umfassen Systeme, Verfahren und/oder Vorrichtungen zum Wiederaufbau einer Abbildungstabelle in flüchtigem Speicher aus einem abgespeicherten Schnappschuss der Abbildungstabelle und aus einem abgespeicherten Log beim Herauffahren einer Speicherungsvorrichtung.
    • (A1) Genauer gesagt umfassen einige Ausführungsformen ein Verfahren zum Verwalten eines Speicherungssystems. Bei einigen Ausführungsformen umfasst das Verfahren (1) Empfangen mehrerer Befehle in einer Speicherungsvorrichtung des Speicherungssystems von einem Host, mit dem die Speicherungsvorrichtung wirksam gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst, (2) Unterhalten eines Schreibbefehlen und Entabbildungsbefehlen vom Host entsprechenden Logs, (3) 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, (4) Abspeichern der Abbildungstabelle auf eingeplante Weise, die von den Entabbildungsbefehlen unabhängig ist, im nichtflüchtigen Speicher der Speicherungsvorrichtung, (5) Abspeichern des Logs im nichtflüchtigen Speicher der Speicherungsvorrichtung und (6) Wiederaufbauen der Abbildungstabelle aus der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung und aus dem abgespeicherten Log im nichtflüchtigen Speicher der Speicherungsvorrichtung beim Herauffahren der Speicherungsvorrichtung.
    • (A2) Bei einigen Ausführungsformen des Verfahrens von A1 umfasst Abspeichern der Abbildungstabelle Speichern eines Positionszeigers auf eine Position im Log in dem nichtflüchtigen Speicher.
    • (A3) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A2 umfasst Abspeichern der Abbildungstabelle Speichern mehrerer distinkter Teile der Abbildungstabelle im nichtflüchtigen Speicher zu distinkten eingeplanten Zeiten.
    • (A4) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A3 umfasst das Log für Schreibbefehle physische Adressen, an denen Daten gespeichert werden, in Verbindung mit der Ausführung der Schreibbefehle.
    • (A5) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A4 umfasst das Log einen Eintrag für einen jeweiligen Entabbildungsbefehl (der manchmal als „erster Entabbildungsbefehl” bezeichnet wird), der Informationen umfasst, die mehrere logische Adressen identifizieren, die gemäß dem jeweiligen Entabbildungsbefehl ent-abgebildet werden.
    • (A6) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A4 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.
    • (A7) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A6 umfasst Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines Teils des Logs im nichtflüchtigen Speicher in Verbindung mit einem Stromversorgungs-Ausfallereignis.
    • (A8) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A7 umfasst Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines ersten Teils des Logs im nichtflüchtigen Speicher, wenn das Log vordefinierte Vollheitskriterien erfüllt, und Abspeichern eines Endteils des Logs im nichtflüchtigen Speicher in Verbindung mit einem Stromversorgungs-Ausfallereignis.
    • (A9) Bei einigen Ausführungsformen des Verfahrens nach einem von A1 bis A8 umfasst die Speicherungsvorrichtung eine oder mehrere Flash-Speichervorrichtungen.
    • (A10) In einem anderen Aspekt umfasst eine Speicherungsvorrichtung (1) nichtflüchtigen Speicher (der z. B. eine oder mehrere nichtflüchtige Speicherungsvorrichtungen, wie etwa Flash-Speichervorrichtungen, umfasst), (2) einen oder mehrere Prozessoren und (3) Controllerspeicher (z. B. nichtflüchtigen Speicher oder flüchtigen Speicher im Controller oder damit gekoppelt), der ein oder mehrere Programme speichert, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, bewirken, dass die Speicherungsvorrichtung Ausführung eines beliebigen der hier beschriebenen Verfahren A1 bis A9 durchführt oder steuert.
    • (A12) In einem weiteren Aspekt werden beliebige der oben beschriebenen Verfahren A1 bis A9 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 A9 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 eines Datenspeicherungssystems 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 das Datenspeicherungssystem 100 die Speicherungsvorrichtung 120 (die manchmal auch als Informationsspeicherungsvorrichtung oder Datenspeicherungsvorrichtung oder Speichervorrichtung bezeichnet wird), die 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) umfasst und in Verbindung mit dem Computersystem 110 verwendet wird. 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(Solid-State Drive)-Controller. 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 eine oder mehrere Speicherungsvorrichtung 120en 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. dem 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 120m 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änkenden 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 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) Speicherungscontroller.
  • 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-Speichervorrichtung. 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 ein zusätzliches Modul bzw. zusätzliche Module 125. Der Speicherungscontroller 124 kann verschiedene zusätzliche Merkmale umfassen, die der Kürze 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 die eine 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, einem zusätzlichen Modul bzw. 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 ein zusätzliches Modul bzw. 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 das zusätzliche Modul bzw. die zusätzlichen Module 125 ganz oder teilweise durch auf dem Computersystem 110 ausgeführte Software implementiert.
  • Bei einigen Ausführungsformen umfasst ein in dem zusätzlichen Modul bzw. 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 einem zusätzlichen 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. einem zusätzlichen Modul bzw. 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 sektorenweise). 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 eine 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 bzw. einer oder mehreren Codewörtern, Seiten oder Blöcken in einem Speicherungsmedium (z. B. den NVM-Vorrichtungen 140, 142, 1) verwendet wird;
    • • ein Datenschreibmodul 216, das zum Schreiben von Daten auf ein bzw. eine 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
    • • 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 Wiederaufbaumodul 234, das zum Wiederaufbauen der Abbildungstabelle 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(logische Blockadressen)-Raums 320 (der manchmal als LA(logische Adresse)-Raum 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 repräsentiert 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 wird die Abbildungstabelle 402 zum Übersetzen einer logischen Blockadresse (LBA) von der Perspektive 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 Speicherungsvorrichtung (z. B. der Speicherungsvorrichtung 120, 1) verwendet. 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 Maximalanzahl 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 einer Abbildung einer logischen Adresse auf eine physische Adresse 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 100 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 antwortet. Diese Ansprechzeit erlaubt nicht das Abspeichern der vollen Übersetzungstabelle. Die hier beschriebenen verschiedenen Ausführungsformen umfassen Systeme, Verfahren und/oder Vorrichtungen, mit denen ein schnelles Reagieren auf einen Entabbildungsbefehl ermöglicht und Kohärenz der Übersetzungstabelle sichergestellt wird, indem die Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen über ein Log (das manchmal als Replay-FIFO bezeichnet wird) verfolgt wird.
  • 5A5B 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, die NVM-Controller 130 und/oder die 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 ein Speicherungssystem (z. B. das Datenspeicherungssystem 100, 1) oder eine oder mehrere Komponenten des Speicherungssystems (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 Rosts (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. 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) eines Speicherungssystems (z. B. des Datenspeicherungssystems 100, 1) empfängt (502) mehrere Befehle von einem Host (z. B. dem Computersystem 110, 1), mit dem die Speicherungsvorrichtung wirksam gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher (z. B. die NVM-Vorrichtungen 140, 142, 1) umfasst. Bei einigen Ausführungsformen umfassen die mehreren Befehle Schreibbefehle, Lesebefehle und/oder Entabbildungsbefehle. Bei einigen Ausführungsformen wird ein Befehlsempfangsmodul (z. B. das Befehlsempfangsmodul 222, 2) verwendet, um in einer Speicherungsvorrichtung eines Speicherungssystems mehrere Befehle von einem Host zu empfangen, mit dem die Speicherungsvorrichtung wirksam gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst, 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) ein Log (z. B. das Log 226, 2, das manchmal als Replay-FIFO bezeichnet wird) entsprechend Schreibbefehlen und Entabbildungsbefehlen vom Host. Bei einigen Ausführungsformen ist das Log eine FIFO(First In First Out)-Warteschlange. 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 dient ein Log-Modul (z. B. das Log-Modul 224, 2) zum Unterhalten eines Logs entsprechend Schreibbefehlen und Entabbildungsbefehlen vom Host, wie oben mit Bezug auf 2 beschrieben.
  • Bei einigen Ausführungsformen umfasst (508) für Schreibbefehle das Log physische Adressen, in denen Daten in Verbindung mit der Ausführung der Schreibbefehle gespeichert werden. Zum Beispiel umfasst bei einigen Ausführungsformen jeder physische Seiteneintrag im Log eine Die-Nummer, Blocknummer und Seitennummer der Seite, sowie sie physisch geschrieben wird. Bei einigen Ausführungsformen werden die physischen Seiteneinträge in der verschachtelten Reihenfolge, in der sie im Speicherungsmedium (z. B. den NVM-Vorrichtungen 140, 142) geschrieben werden, in dem Log protokolliert.
  • Bei einigen Ausführungsformen umfasst (510) 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, wenn die durch den Entabbildungsbefehl ent-abgebildeten logischen Adressen nicht eine einzige Adresse sind und nicht ein einziger Bereich von logischen Adressen sind, mehrere dem Entabbildungsbefehl 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 100130 ent-abbildet, zwei Einträge, einen für LBA 8 und den anderen für den LBA-Bereich 100130.
  • Bei einigen Ausführungsformen umfasst (512) 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 unterhält (514) 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, 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 speichert die Abbildungstabelle auf eingeplante Weise, die von den Entabbildungsbefehlen unabhängig ist (z. B. von Empfangen und/oder Verarbeiten der Entabbildungsbefehle unabhängig ist), in dem nichtflüchtigen Speicher (z. B. der NVM-Vorrichtungen 140, 142, 1) der Speicherungsvorrichtung ab (516). Zum Beispiel speichert bei einigen Ausführungsformen die Speicherungsvorrichtung die Abbildungstabelle (z. B. einen Teil der Abbildungstabelle) periodisch ab (z. B. jede Stunde usw.). 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 den Entabbildungsbefehlen unabhängig ist, in dem nichtflüchtigen Speicher der Speicherungsvorrichtung abzuspeichern, wie oben mit Bezug auf 2 beschrieben.
  • Bei einigen Ausführungsformen umfasst (518) Abspeichern der Abbildungstabelle Speichern eines Positionszeigers auf eine Position im Log im nichtflüchtigen Speicher. Bei einigen Ausführungsformen entspricht eine Position im Log einem Eintrag im Log, der zu verarbeiten ist, wenn die Abbildungstabelle (wie nachfolgend mit Bezug auf Operation 528 beschrieben) wieder aufgebaut wird. Bei einigen Ausführungsformen ist eine Position im Log von einem letzten Eintrag im Log, der einem Teil der Abbildungstabelle entspricht, der vor dem Abspeichern der Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung aktualisiert wird, versetzt. Wenn zum Beispiel Eintrag n der letzte Eintrag im Log war, der in der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher widergespiegelt wird, würde die Position im Log auf Eintrag n + 1 als den nächsten zu verarbeitenden Eintrag zeigen, wenn die Abbildungstabelle wieder aufgebaut wird.
  • Bei einigen Ausführungsformen umfasst (520) 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, der von dem ersten Zeitpunkt distinkt ist (und typischerweise später als dieser ist) einen zweiten Teil der Abbildungstabelle ab, speichert zu einem dritten Zeitpunkt, der von dem ersten Zeitpunkt und dem zweiten Zeitpunkt distinkt ist (und typischerweise später als diese ist) einen dritten Teil der Abbildungstabelle ab usw.
  • Die Speicherungsvorrichtung speichert das Log (z. B. das Log 226, 2) im nichtflüchtigen Speicher (z. B. NVM-Vorrichtungen 140, 142, 1) der Speicherungsvorrichtung ab (522). Bei einigen Ausführungsformen speichert ein Log-Modul (z. B. das Log-Modul 224, 2) das Log im nichtflüchtigen Speicher der Speicherungsvorrichtung ab, wie oben mit Bezug auf 2 beschrieben.
  • Bei einigen Ausführungsformen umfasst (524) Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines Teils des Logs im nichtflüchtigen Speicher (z. B. NVM-Vorrichtungen 140, 142, 1) in Verbindung mit einem Stromversorgungs-Ausfallereignis. Zum Beispiel wird bei einigen Ausführungsformen ein Teil des Logs entsprechend Einträgen, die noch nicht in der abgespeicherten Abbildungstabelle widergespiegelt werden, im nichtflüchtigen Speicher abgespeichert.
  • Bei einigen Ausführungsformen umfasst (526) Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines ersten Teils des Logs im nichtflüchtigen Speicher (z. B. NVM-Vorrichtungen 140, 142, 1), wenn das Log vordefinierte Vollheitskriterien erfüllt, und Abspeichern eines Endteils des Logs im nichtflüchtigen Speicher in Verbindung mit einem Stromversorgungs-Ausfallereignis. Zum Beispiel wird bei einigen Ausführungsformen, wenn das Log halbvoll ist, eine erste Hälfte des Logs im nichtflüchtigen Speicher abgespeichert und in Verbindung mit einem Stromversorgungs-Ausfallereignis ein Endteil (z. B. ein Rest des noch nicht abgespeicherten Logs) des Logs im nichtflüchtigen Speicher abgespeichert.
  • Beim Herauffahren der Speicherungsvorrichtung baut die Speicherungsvorrichtung die Abbildungstabelle aus der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung und aus dem abgespeicherten Log im nichtflüchtigen Speicher der Speicherungsvorrichtung wieder auf (528). Bei einigen Ausführungsformen baut die Speicherungsvorrichtung die Abbildungstabelle wieder auf, indem die abgespeicherte Abbildungstabelle mit Einträgen aus dem abgespeicherten Log, beginnend an einer abgespeicherten Position im Log (wie oben mit Bezug auf Operation 518 beschrieben), aktualisiert wird und die Abbildungstabelle aktualisiert wird, bis das Ende des Logs erreicht ist. Bei einigen Ausführungsformen umfasst Wiederaufbauen der Abbildungstabelle Erhalten von Block-Metadaten (z. B. um entsprechende logische Adressen für die physischen Adressen im Log zu erhalten). Bei einigen Ausführungsformen dient ein Wiederaufbaumodul (z. B. das Wiederaufbaumodul 234, 2) zum Wiederaufbauen der Abbildungstabelle aus der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung und aus dem abgespeicherten Log im nichtflüchtigen Speicher der Speicherungsvorrichtung beim Herauffahren der Speicherungsvorrichtung, wie oben mit Bezug auf 2 beschrieben.
  • Obwohl hier die Ausdrücke „erste/r/s”, „zweite/r/s” 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 eine 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/e” und „der/die/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, bedeutet. Ähnlich kann die Phrase „wenn bestimmt wird (dass eine angegebene Vorbedingung wahr ist)” oder „falls (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 (22)

  1. Verfahren zum Verwalten eines Speicherungssystems, wobei das Verfahren Folgendes umfasst: Empfangen mehrerer Befehle in einer Speicherungsvorrichtung des Speicherungssystems von einem Host, mit dem die Speicherungsvorrichtung wirksam gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst; Unterhalten eines Logs entsprechend Schreibbefehlen und Entabbildungsbefehlen vom Host; 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; Abspeichern der Abbildungstabelle auf eingeplanter Basis, die von den Entabbildungsbefehlen unabhängig ist, im nichtflüchtigen Speicher der Speicherungsvorrichtung; Abspeichern des Logs im nichtflüchtigen Speicher der Speicherungsvorrichtung; und Wiederaufbauen der Abbildungstabelle aus der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung und aus dem abgespeicherten Log im nichtflüchtigen Speicher der Speicherungsvorrichtung beim Herauffahren der Speicherungsvorrichtung.
  2. Verfahren nach Anspruch 1, wobei Abspeichern der Abbildungstabelle Speichern eines Positionszeigers auf eine Position im Log im nichtflüchtigen Speicher umfasst.
  3. Verfahren nach einem der Ansprüche 1–2, wobei Abspeichern der Abbildungstabelle Speichern mehrerer distinkter Teile der Abbildungstabelle im nichtflüchtigen Speicher zu distinkten eingeplanten Zeitpunkten umfasst.
  4. Verfahren nach einem der Ansprüche 1–3, wobei für Schreibbefehle das Log physische Adressen umfasst, in denen Daten in Verbindung mit der Ausführung der Schreibbefehle gespeichert werden.
  5. Verfahren nach einem der Ansprüche 1–4, wobei das Log einen Eintrag für einen ersten Entabbildungsbefehl umfasst, wobei der Eintrag Informationen umfasst, die mehrere logische Adressen identifizieren, die gemäß dem ersten Entabbildungsbefehl ent-abgebildet werden.
  6. Verfahren nach einem der Ansprüche 1–4, wobei das Log einen Eintrag für einen ersten Entabbildungsbefehl umfasst, wobei der Eintrag Informationen umfasst, die einen Bereich logischer Adressen identifizieren, der gemäß dem ersten Entabbildungsbefehl ent-abgebildet wird.
  7. Verfahren nach einem der Ansprüche 1–6, wobei Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines Teils des Logs im nichtflüchtigen Speicher in Verbindung mit einem Stromversorgungs-Ausfallereignis umfasst.
  8. Verfahren nach einem der Ansprüche 1–6, wobei Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines ersten Teils des Logs im nichtflüchtigen Speicher, wenn das Log vordefinierte Vollheitskriterien erfüllt, und Abspeichern eines Endteils des Logs im nichtflüchtigen Speicher in Verbindung mit einem Stromversorgungs-Ausfallereignis umfasst.
  9. Verfahren nach einem der Ansprüche 1–8, wobei die Speicherungsvorrichtung eine oder mehrere Flash-Speichervorrichtungen umfasst.
  10. Speicherungsvorrichtung, umfassend: Mittel zum Empfangen mehrerer Befehle in der Speicherungsvorrichtung von einem Host, mit dem die Speicherungsvorrichtung wirksam gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst; Mittel zum Unterhalten eines Logs entsprechend Schreibbefehlen und Entabbildungsbefehlen vom Host; Mittel 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; Mittel zum Abspeichern der Abbildungstabelle auf eingeplanter Basis, die von den Entabbildungsbefehlen unabhängig ist, im nichtflüchtigen Speicher der Speicherungsvorrichtung; Mittel zum Abspeichern des Logs im nichtflüchtigen Speicher der Speicherungsvorrichtung; und Mittel zum Wiederaufbauen der Abbildungstabelle aus der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung und aus dem abgespeicherten Log im nichtflüchtigen Speicher der Speicherungsvorrichtung beim Herauffahren der Speicherungsvorrichtung.
  11. Speicherungsvorrichtung nach Anspruch 10, die ferner dafür ausgelegt ist, gemäß dem Verfahren nach einem der Ansprüche 2–9 zu arbeiten.
  12. Speicherungsvorrichtung, umfassend: nichtflüchtigen Speicher; einen oder mehrere Prozessoren; und Controllerspeicher, der ein oder mehrere Programme speichert, die für Ausführung durch den einen oder die mehreren Prozessoren ausgelegt sind, wobei das eine oder die mehreren Programme Anweisungen umfassen zum: Empfangen mehrerer Befehle in der Speicherungsvorrichtung von einem Host, mit dem die Speicherungsvorrichtung wirksam gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst; Unterhalten eines Logs entsprechend Schreibbefehlen und Entabbildungsbefehlen vom Host; 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; Abspeichern der Abbildungstabelle auf eingeplanter Basis, die von den Entabbildungsbefehlen unabhängig ist, im nichtflüchtigen Speicher der Speicherungsvorrichtung; Abspeichern des Logs im nichtflüchtigen Speicher der Speicherungsvorrichtung; und Wiederaufbauen der Abbildungstabelle aus der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung und aus dem abgespeicherten Log im nichtflüchtigen Speicher der Speicherungsvorrichtung beim Herauffahren der Speicherungsvorrichtung.
  13. Speicherungsvorrichtung nach Anspruch 12, wobei Abspeichern der Abbildungstabelle Speichern eines Positionszeigers auf eine Position im Log im nichtflüchtigen Speicher umfasst.
  14. Speicherungsvorrichtung nach einem der Ansprüche 12–13, wobei Abspeichern der Abbildungstabelle Speichern mehrerer distinkter Teile der Abbildungstabelle im nichtflüchtigen Speicher zu distinkten eingeplanten Zeitpunkten umfasst.
  15. Speicherungsvorrichtung nach einem der Ansprüche 12–14, wobei für Schreibbefehle das Log physische Adressen umfasst, in denen Daten in Verbindung mit der Ausführung der Schreibbefehle gespeichert werden.
  16. Speicherungsvorrichtung nach einem der Ansprüche 12–14, wobei das Log einen Eintrag für einen ersten Entabbildungsbefehl umfasst, wobei der Eintrag Informationen umfasst, die mehrere logische Adressen identifizieren, die gemäß dem ersten Entabbildungsbefehl ent-abgebildet werden.
  17. Speicherungsvorrichtung nach einem der Ansprüche 12–16, wobei Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines Teils des Logs im nichtflüchtigen Speicher in Verbindung mit einem Stromversorgungs-Ausfallereignis umfasst.
  18. Speicherungsvorrichtung nach einem der Ansprüche 12–16, wobei Abspeichern des Logs im nichtflüchtigen Speicher Abspeichern mindestens eines ersten Teils des Logs im nichtflüchtigen Speicher, wenn das Log vordefinierte Vollheitskriterien erfüllt, und Abspeichern eines Endteils des Logs im nichtflüchtigen Speicher in Verbindung mit einem Stromversorgungs-Ausfallereignis umfasst.
  19. Speicherungsvorrichtung nach einem der Ansprüche 12–18, wobei die Speicherungsvorrichtung eine oder mehrere Flash-Speichervorrichtungen umfasst.
  20. 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 des Verfahrens nach einem der Ansprüche 1–9 umfassen.
  21. 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 umfassen zum: Empfangen mehrerer Befehle in der Speicherungsvorrichtung von einem Host, mit dem die Speicherungsvorrichtung wirksam gekoppelt ist, wobei die Speicherungsvorrichtung nichtflüchtigen Speicher umfasst; Unterhalten eines Logs entsprechend Schreibbefehlen und Entabbildungsbefehlen vom Host; 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; Abspeichern der Abbildungstabelle auf eingeplanter Basis, die von den Entabbildungsbefehlen unabhängig ist, im nichtflüchtigen Speicher der Speicherungsvorrichtung; Abspeichern des Logs im nichtflüchtigen Speicher der Speicherungsvorrichtung; und Wiederaufbauen der Abbildungstabelle aus der abgespeicherten Abbildungstabelle im nichtflüchtigen Speicher der Speicherungsvorrichtung und aus dem abgespeicherten Log im nichtflüchtigen Speicher der Speicherungsvorrichtung beim Herauffahren der Speicherungsvorrichtung.
  22. Speicherungsmedium nach Anspruch 21, wobei das eine oder die mehreren Programme Anweisungen umfassen, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, bewirken, dass die Speicherungsvorrichtung das Verfahren nach einem der Ansprüche 2–9 ausführt.
DE112015004863.4T 2014-10-27 2015-10-01 Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen Ceased DE112015004863T5 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201462069251P 2014-10-27 2014-10-27
US201462069249P 2014-10-27 2014-10-27
US62/069,249 2014-10-27
US62/069,251 2014-10-27
US14/659,493 US9753649B2 (en) 2014-10-27 2015-03-16 Tracking intermix of writes and un-map commands across power cycles
US14/659,493 2015-03-16
PCT/US2015/053582 WO2016069192A1 (en) 2014-10-27 2015-10-01 Tracking intermix of writes and un-map commands across power cycles

Publications (1)

Publication Number Publication Date
DE112015004863T5 true DE112015004863T5 (de) 2017-08-10

Family

ID=55792032

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015004863.4T Ceased DE112015004863T5 (de) 2014-10-27 2015-10-01 Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen

Country Status (4)

Country Link
US (1) US9753649B2 (de)
CN (1) CN107077427B (de)
DE (1) DE112015004863T5 (de)
WO (1) WO2016069192A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11726708B2 (en) * 2020-02-17 2023-08-15 SK Hynix Inc. Storage device which stores write data and an authentication code into a protected memory block and method of operating the same

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10430092B1 (en) * 2014-07-28 2019-10-01 Rambus Inc. Memory controller systems with nonvolatile memory for storing operating parameters
US9952978B2 (en) 2014-10-27 2018-04-24 Sandisk Technologies, Llc Method for improving mixed random performance in low queue depth workloads
US9753649B2 (en) 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US9824007B2 (en) 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9817752B2 (en) 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
KR102178538B1 (ko) * 2014-12-16 2020-11-13 삼성전자주식회사 메모리 장치, 메모리 장치의 커맨드 신호/어드레스 신호의 로그 생성 방법 및 메모리 장치의 에러 분석 방법
US9647697B2 (en) 2015-03-16 2017-05-09 Sandisk Technologies Llc Method and system for determining soft information offsets
US9645765B2 (en) 2015-04-09 2017-05-09 Sandisk Technologies Llc Reading and writing data at multiple, individual non-volatile memory portions in response to data transfer sent to 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
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
WO2017081794A1 (ja) * 2015-11-12 2017-05-18 オリンパス株式会社 サーバ、クライアント、通信システム、通信方法、およびプログラム
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
GB2549927B (en) * 2016-04-25 2018-06-13 Imagination Tech Ltd Circuit architecture
US10481830B2 (en) 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
TWI619018B (zh) * 2016-11-10 2018-03-21 慧榮科技股份有限公司 可用於資料儲存裝置之垃圾蒐集方法
CN108536619B (zh) * 2017-03-03 2021-12-14 北京忆恒创源科技股份有限公司 快速恢复ftl表的方法与装置
CN107506311B (zh) * 2017-08-30 2020-10-20 苏州浪潮智能科技有限公司 一种固态硬盘的ftl表的刷写方法及装置
CN110275837A (zh) * 2018-03-15 2019-09-24 光宝电子(广州)有限公司 固态储存装置的对应表管理方法
US11030089B2 (en) * 2018-09-28 2021-06-08 Micron Technology, Inc. Zone based reconstruction of logical to physical address translation map
KR20210012085A (ko) * 2019-07-23 2021-02-03 삼성전자주식회사 저널 리플레이를 개선하기 위한 스토리지 장치, 그것의 동작 방법, 및 스토리지 장치를 포함하는 전자 장치
US11704035B2 (en) * 2020-03-30 2023-07-18 Pure Storage, Inc. Unified storage on block containers
US11853599B2 (en) * 2020-03-31 2023-12-26 Kioxia Corporation Memory system and information processing system
US11379141B2 (en) * 2020-07-31 2022-07-05 Kioxia Corporation SSD supporting read-only mode after PLP backup failure
US11893277B2 (en) * 2020-10-14 2024-02-06 Western Digital Technologies, Inc. Data storage device managing low endurance semiconductor memory write cache
US11749335B2 (en) * 2020-11-03 2023-09-05 Jianzhong Bi Host and its memory module and memory controller
EP4268084A1 (de) * 2020-12-22 2023-11-01 Telefonaktiebolaget LM Ericsson (publ) Snapshot-speicherung von anstehenden speicherschreiboperationen mithilfe eines nichtflüchtigen speichers
US11556420B2 (en) * 2021-04-06 2023-01-17 Macronix International Co., Ltd. Managing error correction coding in memory systems
CN113190472B (zh) * 2021-05-27 2023-10-13 深圳忆联信息系统有限公司 固态存储设备nomap信息快速重建方法、装置、计算机设备及存储介质
CN115145489B (zh) * 2022-07-22 2023-03-24 北京熵核科技有限公司 一种基于缓存结构的对象扫描方法

Family Cites Families (128)

* 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
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
KR100632940B1 (ko) 2004-05-06 2006-10-12 삼성전자주식회사 프로그램 사이클 시간을 가변시킬 수 있는 불 휘발성반도체 메모리 장치
US20060282610A1 (en) * 2005-06-08 2006-12-14 M-Systems Flash Disk Pioneers Ltd. Flash memory with programmable endurance
KR100616214B1 (ko) 2005-06-30 2006-08-28 주식회사 하이닉스반도체 멀티-레벨 셀을 가지는 플래시 메모리 장치의 프로그램제어 회로 및 그 프로그램 제어 방법
US7594067B2 (en) * 2005-10-20 2009-09-22 Stec, Inc. Enhanced data access in a storage device
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US8286159B2 (en) 2005-12-22 2012-10-09 Alan Joshua Shapiro Method and apparatus for gryphing a data storage medium
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
KR100862661B1 (ko) * 2006-11-16 2008-10-10 삼성전자주식회사 지연된 로깅 방법 및 그 장치
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 삼성전자주식회사 메모리 시스템 및 그것의 데이터 전송 방법
KR101354152B1 (ko) 2006-12-18 2014-01-27 삼성전자주식회사 비휘발성 데이터 저장장치에 구비된 가상 파일 시스템의작업 스케줄링 방법 및 장치
US8122202B2 (en) 2007-02-16 2012-02-21 Peter Gillingham Reduced pin count interface
US20080235480A1 (en) 2007-03-21 2008-09-25 Shai Traister Systems for storing memory operations in a queue
US7987332B2 (en) 2007-03-21 2011-07-26 Sandisk Technologies Inc. Methods for storing memory operations in a queue
US8341623B2 (en) 2007-05-22 2012-12-25 International Business Machines Corporation Integrated placement planning for heterogenous storage area network data centers
US7934052B2 (en) 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
US20090177943A1 (en) 2008-01-09 2009-07-09 Broadcom Corporation Error correction coding using soft information and interleaving
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
US9123422B2 (en) 2012-07-02 2015-09-01 Super Talent Technology, Corp. Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells
US8010738B1 (en) 2008-06-27 2011-08-30 Emc Corporation Techniques for obtaining a specified lifetime for a data storage device
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
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
US7969809B2 (en) 2008-08-05 2011-06-28 Sandisk Il Ltd. Power consumption-oriented management of a storage system
US8756369B2 (en) 2008-09-26 2014-06-17 Netapp, Inc. Priority command queues for low latency solid state drives
US20100174845A1 (en) 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
KR20100082185A (ko) 2009-01-08 2010-07-16 삼성전자주식회사 플래시 메모리, 캐시 메모리, 그리고 제어기를 포함하는 사용자 장치
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8250328B2 (en) 2009-03-24 2012-08-21 Micron Technology, Inc. Apparatus and method for buffered write commands in a memory
US8429498B1 (en) 2009-03-25 2013-04-23 Apple Inc. Dual ECC decoder
US8055816B2 (en) 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
EP2284714A1 (de) 2009-08-14 2011-02-16 Nxp B.V. Speichersteuerung mit externem Auffrischungsmechanismus
US8473669B2 (en) 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US8213255B2 (en) 2010-02-19 2012-07-03 Sandisk Technologies Inc. Non-volatile storage with temperature compensation based on neighbor state information
US8164967B2 (en) 2010-03-24 2012-04-24 Apple Inc. Systems and methods for refreshing non-volatile memory
US20110252215A1 (en) 2010-04-09 2011-10-13 International Business Machines Corporation Computer memory with dynamic cell density
US8397101B2 (en) 2010-06-03 2013-03-12 Seagate Technology Llc Ensuring a most recent version of data is recovered from a memory
KR101491484B1 (ko) 2010-06-18 2015-02-10 엘에스아이 코포레이션 스케일러블 스토리지 디바이스들
EP2598996B1 (de) 2010-07-28 2019-07-10 SanDisk Technologies LLC Vorrichtung, system und verfahren für bedingte speichervorgänge auf nichtflüchtigen speichern
US8862807B2 (en) 2010-08-20 2014-10-14 Samsung Electronics Co., Ltd. Semiconductor storage device and method of throttling performance of the same
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
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
US8539139B1 (en) 2010-12-17 2013-09-17 Teradota Us, Inc. Managing device wearout using I/O metering
US8397023B2 (en) 2010-12-18 2013-03-12 Lsi Corporation System and method for handling IO to drives in a memory constrained environment
US8595415B2 (en) 2011-02-02 2013-11-26 Micron Technology, Inc. At least semi-autonomous modules in a memory system and methods
US8472274B2 (en) 2011-03-02 2013-06-25 Apple Inc. Using temperature sensors with a memory device
US8918595B2 (en) 2011-04-28 2014-12-23 Seagate Technology Llc Enforcing system intentions during memory scheduling
US8954689B2 (en) 2011-06-30 2015-02-10 Seagate Technology Llc Limiting activity rates that impact life of a data storage media
KR101798036B1 (ko) 2011-08-09 2017-11-15 엘에스아이 코포레이션 I/o 디바이스 및 컴퓨팅 호스팅 상호동작
KR101900423B1 (ko) 2011-09-19 2018-09-21 삼성전자주식회사 반도체 메모리 장치
US8321627B1 (en) 2011-10-06 2012-11-27 Google Inc. Memory operation command latency management
US8255618B1 (en) 2011-10-06 2012-08-28 Google Inc. Performance isolation in a shared memory device
US8886872B1 (en) 2011-10-06 2014-11-11 Google Inc. Memory command dispatch in a data storage device
US8683309B2 (en) 2011-10-28 2014-03-25 Lsi Corporation Systems and methods for ambiguity based decode algorithm modification
US8443271B1 (en) 2011-10-28 2013-05-14 Lsi Corporation Systems and methods for dual process data decoding
KR101861184B1 (ko) 2011-11-02 2018-05-28 삼성전자주식회사 스토리지의 동작 성능 조절방법 및 그에 따른 반도체 저장장치
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
US9082489B2 (en) 2012-01-13 2015-07-14 Stec, Inc. Programming algorithm for improved flash memory endurance and retention
US8949512B2 (en) * 2012-02-17 2015-02-03 Apple Inc. Trim token journaling
US8892811B2 (en) 2012-03-01 2014-11-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Reducing write amplification in a flash memory
JP5853899B2 (ja) 2012-03-23 2016-02-09 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
US9135192B2 (en) 2012-03-30 2015-09-15 Sandisk Technologies Inc. Memory system with command queue reordering
US9218281B2 (en) 2012-05-04 2015-12-22 Seagate Technology Llc Maintaining ordering via a multi-level map of a solid-state media
US9337865B2 (en) 2012-05-04 2016-05-10 Seagate Technology Llc Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders
US9053808B2 (en) 2012-06-21 2015-06-09 Sandisk Technologies Inc. Flash memory with targeted read scrub algorithm
US9477591B2 (en) 2012-07-06 2016-10-25 Seagate Technology Llc Memory access requests in hybrid memory system
JP5788369B2 (ja) 2012-09-12 2015-09-30 株式会社東芝 メモリシステム、コンピュータシステム、およびメモリ管理方法
US8595590B1 (en) 2012-12-03 2013-11-26 Digital PowerRadio, LLC Systems and methods for encoding and decoding of check-irregular non-systematic IRA codes
US20140173239A1 (en) 2012-12-19 2014-06-19 Apple Inc. Refreshing of memory blocks using adaptive read disturb threshold
US9547586B2 (en) * 2013-01-03 2017-01-17 Macronix International Co., Ltd. Metadata containers with indirect pointers
US9552288B2 (en) 2013-02-08 2017-01-24 Seagate Technology Llc Multi-tiered memory with different metadata levels
US20140229655A1 (en) 2013-02-08 2014-08-14 Seagate Technology Llc Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
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
US20140244897A1 (en) 2013-02-26 2014-08-28 Seagate Technology Llc Metadata Update Management In a Multi-Tiered Memory
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US8984376B1 (en) 2013-03-14 2015-03-17 Pmc-Sierra Us, Inc. System and method for avoiding error mechanisms in layered iterative decoding
US9218279B2 (en) * 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9136874B2 (en) 2013-03-15 2015-09-15 Ibiquity Digital Corporation Method and apparatus for transmission and reception of in-band on-channel radio signals including complementary low density parity check coding
US10209904B2 (en) 2013-04-09 2019-02-19 EMC IP Holding Company LLC Multiprocessor system with independent direct access to bulk solid state memory resources
US9311326B2 (en) 2013-04-12 2016-04-12 Alterante, Inc. Virtual file system for automated data replication and review
US9128825B1 (en) 2013-05-17 2015-09-08 Google Inc. Optimizing allocation of flash memory to file groups
US9507733B2 (en) 2013-06-21 2016-11-29 Microsoft Technology Licensing, Llc Cache destaging for virtual storage devices
JP6007329B2 (ja) 2013-07-17 2016-10-12 株式会社日立製作所 ストレージコントローラ、ストレージ装置、ストレージシステム
WO2015012838A1 (en) 2013-07-25 2015-01-29 Hewlett-Packard Development Company, L.P. Response control for memory modules that include or interface with non-compliant memory technologies
US9590916B2 (en) 2013-09-04 2017-03-07 Aruba Networks, Inc. Method and system for dynamically prioritizing user connections on network
US9201728B2 (en) 2013-09-12 2015-12-01 Seagate Technology Llc Memory device with variable code rate
KR102102224B1 (ko) 2013-10-01 2020-04-20 삼성전자주식회사 저장 장치 및 그것의 프로그램 방법
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US20150186278A1 (en) 2013-12-26 2015-07-02 Sarathy Jayakumar Runtime persistence
US9170876B1 (en) 2013-12-31 2015-10-27 Pmc-Sierra Us, Inc. Method and system for decoding encoded data stored in a non-volatile memory
US20150261473A1 (en) 2014-03-11 2015-09-17 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
US20150262632A1 (en) 2014-03-12 2015-09-17 Fusion-Io, Inc. Grouping storage ports based on distance
KR102318478B1 (ko) 2014-04-21 2021-10-27 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
KR102321501B1 (ko) 2014-05-14 2021-11-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 스토리지 장치의 동작 방법
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US9612957B2 (en) 2014-07-30 2017-04-04 Qualcomm Innovation Center, Inc. Read disturb and data retention handling for NAND devices
US9582220B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
KR20160028680A (ko) 2014-09-04 2016-03-14 삼성전자주식회사 데이터 저장 장치와 이의 작동 방법
US9362000B2 (en) 2014-09-05 2016-06-07 Kabushiki Kaisha Toshiba Memory system and management method thereof
US9753649B2 (en) 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US9916087B2 (en) 2014-10-27 2018-03-13 Sandisk Technologies Llc Method and system for throttling bandwidth based on temperature
KR20160049200A (ko) 2014-10-27 2016-05-09 삼성전자주식회사 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
US9558125B2 (en) 2014-10-27 2017-01-31 Sandisk Technologies Llc Processing of un-map commands to enhance performance and endurance of a storage device
CN105701021B (zh) 2014-12-10 2021-03-02 慧荣科技股份有限公司 数据储存装置及其数据写入方法
US20160210060A1 (en) 2015-01-21 2016-07-21 HGST Netherlands B.V. Dynamic resource allocation within storage devices
KR102291803B1 (ko) 2015-04-07 2021-08-24 삼성전자주식회사 불휘발성 메모리 시스템의 동작 방법, 및 그것을 포함하는 사용자 시스템의 동작 방법
US9645765B2 (en) 2015-04-09 2017-05-09 Sandisk Technologies Llc Reading and writing data at multiple, individual non-volatile memory portions in response to data transfer sent to single relative memory address
US9639282B2 (en) 2015-05-20 2017-05-02 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices
US9606737B2 (en) 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning
US20160371394A1 (en) 2015-06-22 2016-12-22 The Governing Council Of The University Of Toronto Indoor localization using crowdsourced data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11726708B2 (en) * 2020-02-17 2023-08-15 SK Hynix Inc. Storage device which stores write data and an authentication code into a protected memory block and method of operating the same

Also Published As

Publication number Publication date
US20160117099A1 (en) 2016-04-28
CN107077427B (zh) 2020-06-30
US9753649B2 (en) 2017-09-05
CN107077427A (zh) 2017-08-18
WO2016069192A1 (en) 2016-05-06

Similar Documents

Publication Publication Date Title
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE102008057219B4 (de) Verfahren zum Betreiben eines Solid-State-Speichersystems, Solid-State-Speichersystem und Computersystem
DE102018105427A1 (de) Beibehalten von Daten bei einer Stromabschaltung
DE102018105854A1 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE102018115163A1 (de) Routing von datenblöcken während einer thermodrosselung
DE112014004778T5 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE102017120840A1 (de) Verfahren und Vorrichtung zur Detektion und Handhabung von Lesestörungen
DE102012112354A1 (de) Speichervorrichtung und nichtflüchtige Speichervorrichtung sowie Betriebsverfahren davon
DE112011102160T5 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE102018123805A1 (de) Vorgang für verteiltes Programmieren
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE102015117500A1 (de) Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112020000143T5 (de) Ssd-system, das einschaltzyklus-basierten read-scrub verwendet

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