DE102019134294A1 - Nichtflüchtiges speichersystem mit schneller wiederherstellung nach nicht ordnungsgemässem herunterfahren - Google Patents

Nichtflüchtiges speichersystem mit schneller wiederherstellung nach nicht ordnungsgemässem herunterfahren Download PDF

Info

Publication number
DE102019134294A1
DE102019134294A1 DE102019134294.5A DE102019134294A DE102019134294A1 DE 102019134294 A1 DE102019134294 A1 DE 102019134294A1 DE 102019134294 A DE102019134294 A DE 102019134294A DE 102019134294 A1 DE102019134294 A1 DE 102019134294A1
Authority
DE
Germany
Prior art keywords
data
volatile memory
control data
host
sequential
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.)
Pending
Application number
DE102019134294.5A
Other languages
English (en)
Inventor
Uri Peltz
Einat Lev
Judah Gamliel Hahn
Daphna Einav
Karin Inbar
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102019134294A1 publication Critical patent/DE102019134294A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/1474Saving, restoring, recovering or retrying in transactions
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • 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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0653Monitoring storage devices or systems
    • 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/0656Data buffering arrangements
    • 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/0658Controller construction arrangements
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Eine Vorrichtung schließt eine Vielzahl von nichtflüchtigen Speicherzellen und eine Steuerschaltlogik ein, die mit der Vielzahl von nichtflüchtigen Speicherzellen verbunden ist. Die Steuerschaltlogik ist konfiguriert, Schreibbefehle von einem Host zu empfangen und Schreibbefehle zu identifizieren, die temporären Daten zugeordnet sind. In einem Wiederherstellungsvorgang werden Steuerdaten, die den temporären Daten zugeordnet sind, aus wieder aufgebauten Steuerdaten weggelassen.

Description

  • HINTERGRUND
  • Viele elektronische Vorrichtungen verwenden Speichersysteme. Oft schließt das Speichersystem einen nichtflüchtigen Speicher wie einen Flash-Speicher ein. Eine elektronische Vorrichtung, die ein Speichersystem einschließt oder mit einem Speichersystem verbunden ist, wird oft als Host bezeichnet.
  • Ein Speichersystem, das einen Halbleiterspeicher einschließt, kann über eine Schnittstelle mit einem Host in Verbindung stehen. In einigen Fällen kann mehr als eine Datenspeichervorrichtung durch eine oder mehrere Schnittstellen mit einem Hostsystem in Verbindung stehen.
  • Ein Speichersystem, das einen Halbleiterspeicher einschließt, kann einen oder mehrere nichtflüchtige Speicherchips einschließen, die mit einer Steuerung in Verbindung stehen. Zum Beispiel kann ein Speicherbus nichtflüchtige Speicherchips mit einer Steuerung in einem Speichersystem verbinden.
  • Figurenliste
  • Gleich nummerierte Elemente beziehen sich auf gemeinsame Komponenten in den verschiedenen Figuren.
    • 1 ist ein Blockdiagramm, das eine Ausführungsform eines Speichersystems darstellt, das mit dem Host verbunden ist.
    • 2 ist ein Blockdiagramm einer Ausführungsform einer Front-End-Prozessorschaltung. Die Front-End-Prozessorschaltung ist Teil einer Steuerung.
    • 3 ist ein Blockdiagramm einer Ausführungsform einer Back-End-Prozessorschaltung. In einigen Ausführungsformen ist die Back-End-Prozessorschaltung Teil einer Steuerung.
    • 4 ist ein Blockdiagramm einer Ausführungsform eines Speicherpakets.
    • 5 ist ein Blockdiagramm einer Ausführungsform eines Speicherchips.
    • 6 zeigt ein Beispiel von Komponenten eines Speichersystems, die Steuerdaten zugeordnet sind.
    • 7 zeigt ein Beispiel von Daten, die in einem offenen Block in einem nichtflüchtigen Speicher gespeichert sind.
    • 8 zeigt ein Beispiel für Schritte zur Wiederherstellung nach einem nicht ordnungsgemäßen Herunterfahren.
    • 9 zeigt ein Beispiel eines Verfahrens zum Konfigurieren eines Speichersystems, bei dem die Wiederherstellungszeit unter einer Grenze liegt.
    • 10 zeigt ein Beispiel eines nichtflüchtigen Speichers mit sequentiellen und nicht sequentiellen offenen Blöcken.
    • 11 zeigt ein Beispiel eines Verfahrens zum Kopieren von Steuerdaten in einem Speichersystem.
    • 12 zeigt ein Beispiel eines Verfahrens zum Schreiben temporärer und nicht temporärer Daten in ein Speichersystem.
    • 13 zeigt Beispiele eines nichtflüchtigen Speichers, der einen offenen Block für temporäre Daten einschließt.
    • 14 zeigt ein Beispiel eines Verfahrens zum Kopieren von Steuerdaten in einem Speichersystem.
    • 15 zeigt ein Beispiel eines Verfahrens zum Rückgewinnen nach einem nicht ordnungsgemäßen Herunterfahren in einem Speichersystem, das temporäre Daten trennt.
    • 16 zeigt ein Beispiel eines Verfahrens zum Betreiben eines Speichersystems.
  • DETAILLIERTE BESCHREIBUNG
  • In einigen nichtflüchtigen Speichersystemen können Steuerdaten in einem flüchtigen Speicher gespeichert und in Intervallen in einen nichtflüchtigen Speicher kopiert werden. Ein Stromausfall kann zu einem nicht ordnungsgemäßen Herunterfahren (UGSD) führen, was zum Verlust von Steuerdaten im flüchtigen Speicher führen kann, die nicht in den nichtflüchtigen Speicher kopiert wurden. Während eines Wiederherstellungsvorgangs nach einem nicht ordnungsgemäßen Herunterfahren können Steuerdaten wieder aufgebaut werden (z. B. durch Durchsuchen offener Blöcke, um gespeicherte Daten zu identifizieren, die nicht in Steuerdaten widergespiegelt werden, die im nichtflüchtigen Speicher gefunden werden). Ein Wiederaufbau kann viel Zeit in Anspruch nehmen und kann in einigen Fällen eine Zeitgrenze überschreiten. Ein Speichersystem kann möglicherweise keine Lesebefehle von einem Host ausführen, bevor Steuerdaten wieder aufgebaut werden, was sich auf die Wiederherstellungszeit des Host auswirken kann. Wie schnell eine solche UGSD wieder hergestellt werden kann, stellt ein technisches Problem dar, das durch Aspekte der vorliegenden Technologie angegangen werden kann.
  • Gemäß einigen hier vorgestellten Beispielen kann die Menge nicht kopierter Steuerdaten (Steuerdaten in einem flüchtigen Speicher, die nicht in einen nichtflüchtigen Speicher kopiert werden) verwaltet werden, um sicherzustellen, dass die Zeit zum Wiederaufbauen von Steuerdaten nicht übermäßig lang ist. Host-Schreibbefehle können überwacht werden (z. B. um zu identifizieren, wie viele sequentielle Daten und wie viele nicht-sequentielle Daten geschrieben werden). Die Frequenz zum Kopieren der Steuerdaten von dem flüchtigen Speicher in einen nichtflüchtigen Speicher gemäß dem Überwachen der Host-Schreibbefehle kann bestimmt werden. Zum Beispiel ist das Wiederaufbauen von Steuerdaten, die einer bestimmten Menge (z. B. 100 MB) sequentieller Daten zugeordnet sind, schneller als das Wiederaufbauen von Steuerdaten für dieselbe Menge nicht sequentieller Daten. Basierend auf der Host-Schreiblast (wie viele sequentielle und nicht-sequentielle Daten empfangen werden) kann die Frequenz des Kopierens von Steuerdaten eingestellt werden, um sicherzustellen, dass die geschätzte Zeit für den Wiederaufbau von Steuerdaten auf einem angemessenen Niveau bleibt (z. B. unter einer vorbestimmten Zeitgrenze). Die Steuerdaten-Kopierfrequenz kann entsprechend Änderungen der Host-Schreiblast eingestellt werden (z. B. Frequenz, die durch die geschätzte Zeit zum Wiederaufbauen von Steuerdaten bestimmt wird, sodass die maximale geschätzte Zeit zum Wiederaufbauen unter einer Zeitgrenze liegt). Die Einstellung der Steuerdaten-Kopierfrequenz entsprechend einer Host-Schreibarbeitslast kann eine technische Lösung für das Problem einer rechtzeitigen UGSD-Wiederherstellung darstellen. Eine solche Lösung kann den Betrieb von Speichersystemen verbessern, indem ein schneller Wiederaufbau von Steuerdaten in einem Speichersystem ermöglicht wird, was eine schnelle Ausführung von Host-Lesebefehlen nach UGSD ermöglicht.
  • Gemäß einigen hier vorgestellten Beispielen kann ein nichtflüchtiges Speichersystem beim Empfangen von Host-Schreibbefehlen temporäre Daten identifizieren, die von einem Host während des Wiederaufbaus als Reaktion auf ein nicht ordnungsgemäßes Herunterfahren (z. B. Seiten- oder Auslagerungsdatei-Daten, von Browsern verwendete Cache-Dateien und/oder von Anwendungen erstellten temporäre Dateien) nicht benötigt werden. Zum Beispiel kann ein Host bestimmte Schreibdaten als temporär identifizieren, wenn er einen entsprechenden Schreibbefehl sendet. Das nichtflüchtige Speichersystem kann temporäre Daten in einem dedizierten Bereich (z. B. dedizierter Block oder Blöcke) speichern. Während eines Wiederherstellungsvorgangs nach einem nicht ordnungsgemäßen Herunterfahren kann das nichtflüchtige Speichersystem Steuerdaten, die temporären Daten zugeordnet sind, weglassen, wenn Steuerdaten wieder aufgebaut werden, z. B. durch Weglassen eines dedizierten Bereichs, der temporären Daten zugeordnet ist, wenn offene Blöcke gescannt werden. Somit werden Steuerdaten, die temporären Daten zugeordnet sind, nicht wieder aufgebaut. Das Reduzieren der Menge der wieder aufzubauenden Steuerdaten kann das Wiederaufbauen beschleunigen und somit einen schnelleren Wiederherstellungsvorgang ermöglichen und eine technische Lösung für das Problem des rechtzeitigen UGSD-Wiederaufbaus bieten. Eine solche Lösung kann den Betrieb von Speichersystemen verbessern, indem ein schneller Wiederaufbau von Steuerdaten in einem Speichersystem ermöglicht wird, was eine schnelle Ausführung von Host-Lesebefehlen nach UGSD ermöglicht. Eine getrennte Behandlung von temporären Daten kann mit einer Anpassung der Steuerdaten-Kopierfrequenz entsprechend der Schreibarbeitslast kombiniert werden (z. B. können Steuerdaten, die temporären Daten zugeordnet sind, weggelassen werden, wenn die Zeit zum Wiederaufbauen von Steuerdaten geschätzt wird).
  • 1 ist ein Blockdiagramm, das eine Ausführungsform eines Speichersystems 100 darstellt, das mit dem Host 120 verbunden ist. Das Speichersystem 100 kann die hier vorgeschlagene Technologie implementieren. Viele unterschiedliche Arten von Speichersystemen können mit der hier vorgeschlagenen Technologie verwendet werden. Ein beispielhaftes Speichersystem ist ein Festkörperlaufwerk („SSD“). Das Speichersystem weist eine Steuerung 102, einen nichtflüchtigen Speicher 104 zum Speichern von Daten und einen lokalen Speicher (z. B. DRAM/ReRAM) 106 auf. Die Steuerung 102 weist eine Front-End-Prozessor-Schaltung (FEP-Schaltung) 110 und eine oder mehrere Back-End-Prozessor--Schaltungen (BEP-Schaltungen) 112 auf. In einer Ausführungsform ist die FEP-Schaltung 110 auf einer ASIC implementiert. In einer Ausführungsform ist jede BEP-Schaltung 112 auf einem separaten ASIC implementiert. Die ASICs für jede der BEP-Schaltungen 112 und die FEP-Schaltung 110 sind auf dem gleichen Halbleiter implementiert, sodass die Steuerung 102 als ein System auf einem Chip („SoC“) hergestellt wird. Die FEP-Schaltung 110 und die BEP-Schaltung 112 enthalten beide ihre eigenen Prozessoren. In einer Ausführungsform arbeiten FEP 110 und BEP 112 als Master-Slave-Konfiguration, wobei FEP 110 der Master ist und jeder BEP 112 ein Slave ist. Beispielsweise implementiert die FEP-Schaltung 110 eine Flash-Übersetzungsschicht, die eine Speicherverwaltung (z. B. Speicherbereinigung, Abnutzungsnivellierung usw.), eine Übersetzung von logischen zu physischen Adressen, eine Kommunikation mit dem Host, eine Verwaltung von DRAM (lokaler flüchtiger Speicher) und eine Verwaltung des Gesamtbetriebs der SSD (oder eines anderen nichtflüchtigen Speichersystems) durchführt. Die BEP-Schaltung 112 verwaltet Speicheroperationen in den Speicherpaketen/-chip auf Anforderung der FEP-Schaltung 110. Zum Beispiel kann die BEP-Schaltung 112 die Lese -, Lösch- und Programmierprozesse ausführen. Außerdem kann die BEP-Schaltung 112 eine Pufferverwaltung durchführen, spezifische Spannungspegel einstellen, die von der FEP-Schaltung 110 benötigt werden, eine Fehlerkorrektur (ECC) durchführen, die Schnittstellen zu den Speicherpaketen (z. B. Toggle-Modus-Schnittstellen) steuern usw. In einer Ausführungsform ist jede BEP-Schaltung 112 für ihren eigenen Satz von Speicherpaketen verantwortlich.
  • In einer Ausführungsform weist der nichtflüchtige Speicher 104 eine Vielzahl von Speicherpaketen auf. Jedes Speicherpaket enthält einen oder mehrere Speicherchips. Daher ist die Steuerung 102 mit einem oder mehreren nichtflüchtigen Speicherchips verbunden. In einer Ausführungsform verwendet jeder Speicherchip in den Speicherpaketen 104 einen NAND-Flash-Speicher (einschließlich eines zweidimensionalen NAND-Flash-Speichers und/oder eines dreidimensionalen NAND-Flash-Speichers). In anderen Ausführungsformen kann das Speicherpaket andere Speichertypen einschließen.
  • Die Steuerung 102 kommuniziert mit dem Host 120 über eine Schnittstelle 130, die NVM-Express (NVMe) über PCI-Express (PCle) implementiert. Für die Zusammenarbeit mit dem Speichersystem 100 schließt der Host 120 einen Hostprozessor 122, einen Hostspeicher 124 und eine PCIe-Schnittstelle 126 ein. Der Hostspeicher 124 ist der physikalische Speicher des Hosts und kann ein DRAM, ein SRAM, ein nichtflüchtiger Speicher oder ein anderer Speichertyp sein. Der Host 120 ist extern und getrennt von dem Speichersystem 100 (z. B. ein SSD). In einer Ausführungsform ist das Speichersystem 100 in den Host 120 eingebettet.
  • 2 ist ein Blockdiagramm einer Ausführungsform der FEP-Schaltung 110. 2 zeigt eine PCIe-Schnittstelle 150 zum Kommunizieren mit dem Host 120 und einen Hostprozessor 152 in Kommunikation mit dieser PCIe-Schnittstelle. Der Hostprozessor 152 kann jeder in der Technik bekannte Prozessortyp sein, der für die Implementierung geeignet ist. Der Hostprozessor 152 kommuniziert mit einem Network-On-Chip (NOC) 154. Ein NOC ist ein Kommunikationsuntersystem auf einer integrierten Schaltung, in der Regel zwischen Kernen in einem SoC. NOCs können synchrone und asynchrone Taktdomänen umspannen oder ungetaktete asynchrone Logik verwenden. Die NOC-Technologie wendet Netzwerktheorie und -verfahren auf On-Chip-Kommunikationen an und liefert beträchtliche Verbesserungen gegenüber herkömmlichen Bus- und Crossbar-Verbindungen. NOC verbessert die Skalierbarkeit von SoCs und die Leistungseffizienz komplexer SoCs im Vergleich zu anderen Designs. Die Drähte und die Verbindungen des NOC werden von vielen Signalen gemeinsam genutzt. Eine hohe Parallelität wird erreicht, da alle Verbindungen in dem NOC gleichzeitig an unterschiedlichen Datenpaketen arbeiten können. Daher liefert ein NOC, wenn die Komplexität integrierter Subsysteme wächst, eine verbesserte Leistung (wie Durchsatz) und Skalierbarkeit im Vergleich zu früheren Kommunikationsarchitekturen (z. B. dedizierten Punkt-zu-Punkt-Signaldrähten, gemeinsam genutzten Bussen oder segmentierten Bussen mit Brücken). Verbunden mit und in Kommunikation mit NOC 154 ist der Speicherprozessor 156, SRAM 160 und eine DRAM-Steuerung 162. Die DRAM-Steuerung 162 wird verwendet, um mit dem DRAM (z. B. DRAM 106) zu arbeiten und damit zu kommunizieren. SRAM 160 ist ein lokaler RAM-Speicher, der von dem Speicherprozessor 156 verwendet wird. Der Speicherprozessor 156 wird verwendet, um die FEP-Schaltung zu betreiben und die verschiedenen Speicheroperationen auszuführen. In Kommunikation mit dem NOC stehen auch zwei PCIe-Schnittstellen 164 und 166. In der Ausführungsform von 2 schließt der SSD-Controller zwei BEP-Schaltungen 112 ein; daher gibt es zwei PCIe-Schnittstellen 164/166. Jede PCIe-Schnittstelle kommuniziert mit einer der BEP-Schaltungen 112. In anderen Ausführungsformen können mehr oder weniger als zwei BEP-Schaltungen 112 vorhanden sein; daher kann es mehr als zwei PCIe-Schnittstellen geben.
  • 3 ist ein Blockdiagramm einer Ausführungsform einer BEP-Schaltung 112. 3 zeigt eine PCIe-Schnittstelle 200 zum Kommunizieren mit der FEP-Schaltung 110 (z. B. in Verbindung mit einer der PCIe-Schnittstellen 164 und 166 von 2). Die PCIe-Schnittstelle 200 ist in Verbindung mit zwei NOCs, 202 und 204. In einer Ausführungsform können die beiden NOCs zu einem großen NOC kombiniert werden. Jeder NOC (202/204) ist über eine XOR-Engine (224/254) und eine ECC-Engine (226/256) mit dem SRAM (230/260), einem Puffer (232/262), einem Prozessor (220/250) und einer Datenpfadsteuerung (222/252) verbunden. Die ECC-Maschinen 226/256 werden verwendet, um eine Fehlerkorrektur durchzuführen, wie in der Technik bekannt ist. Die XOR-Engines 224/254 werden zum XOR der Daten verwendet, sodass Daten auf eine Weise kombiniert und gespeichert werden können, die im Falle eines Programmierfehlers wiederhergestellt werden kann. Die Datenpfadsteuerung 22 ist mit einem Schnittstellenmodul verbunden, um über vier Kanäle mit Speicherpaketen zu kommunizieren. Somit ist der obere NOC 202 einer Schnittstelle 228 für vier Kanäle zur Kommunikation mit Speicherpaketen zugeordnet, und der untere NOC 204 ist einer Schnittstelle 258 für vier zusätzliche Kanäle zur Kommunikation mit Speicherpaketen zugeordnet. Jede Schnittstelle 228/258 enthält vier Toggle-Mode-Schnittstellen (TM-Schnittstelle), vier Puffer und vier Scheduler. Für jeden Kanal gibt es einen Scheduler, einen Puffer und eine TM-Schnittstelle. Der Prozessor kann irgendein Standardprozessor sein, der in der Technik bekannt ist. Die Datenpfadsteuerungen 222/252 können ein Prozessor, ein FPGA, ein Mikroprozessor oder eine andere Art von Steuerung sein. Das XOR-Maschinen 224/254 und ECC-Maschinen 226/256 sind dedizierte Hardware-Schaltungen, bekannt als Hardware-Beschleuniger. In anderen Ausführungsformen können die XOR-Maschinen 224/254 und ECC-Maschinen 226/256 in Software implementiert sein. Die Scheduler, Puffer und TM-Schnittstellen sind Hardwareschaltungen.
  • 4 ist ein Blockdiagramm einer Ausführungsform eines Speicherpakets eines nichtflüchtigen Speichers 104, der eine Vielzahl von Speicherchips 292 einschließt, die mit einem Speicherbus 294 (Datenleitungen und Chipfreigabeleitungen) verbunden sind. Der Speicherbus 294 ist mit einer Toggle-Mode-Schnittstelle 296 zur Kommunikation mit der TM-Schnittstelle einer BEP-Schaltung 112 (siehe z. B. 3) verbunden. In einigen Ausführungsformen kann das Speicherpaket eine kleine Steuerung einschließen, die mit dem Speicherbus und der TM-Schnittstelle verbunden ist. Das Speicherpaket kann einen oder mehrere Speicherchips aufweisen. In einer Ausführungsform schließt jedes Speicherpaket acht oder 16 Speicherchips ein; andere Anzahlen von Speicherchips können jedoch ebenfalls implementiert werden. Die hierin beschriebene Technologie ist nicht auf eine spezifische Anzahl von Speicherchips beschränkt.
  • 5 ist ein Funktionsblockdiagramm einer Ausführungsform eines Speicherchips 300. Die in 5 dargestellten Komponenten sind elektrische Schaltungen. In einer Ausführungsform schließt jeder Speicherchip 300 eine Speicherstruktur 326, eine Steuerschaltlogik 310 und Lese-/Schreibschaltungen 328 ein. Die Speicherstruktur 326 ist durch Wortleitungen über einen Zeilen-Decoder 324 und durch Bitleitungen über einen Spalten-Decoder 332 adressierbar. Die Lese-/Schreibschaltungen 328 schließin mehrere Leseblöcke 350 ein, einschließlich SB1, SB2, .., SBp (Messschaltung), und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Befehle und Daten werden zwischen der Steuerung und dem Speicherchip 300 über Leitungen 318 übertragen. In einem Ausführungsbeispiel schließt der Speicherchip 108 einen Satz von Eingangs- und/oder Ausgangsstiften (I/O-Stiften) ein, die mit den Leitungen 118 verbunden sind.
  • Die Steuerschaltlogik 310 wirkt mit den Lese-/Schreibschaltungen 328 zusammen, um Speicheroperationen (z. B. Schreiben, Lesen und andere) auf der Speicherstruktur 326 auszuführen, und schließt eine Zustandsmaschine 312, einen On-Chip-Adressdecodierer 314, ein Leistungssteuermodul 316 (Leistungssteuerschaltung) und eine Temperaturerfassungsschaltung 319 ein. Die Zustandsmaschine 312 stellt eine Chippegelsteuerung von Speichervorgängen bereit. In einer Ausführungsform ist die Zustandsmaschine 312 durch Software programmierbar. In anderen Ausführungsformen verwendet die Zustandsmaschine 312 keine Software und ist vollständig in Hardware (z. B. elektrischen Schaltungen) implementiert. In einer Ausführungsform schließt die Steuerschaltlogik 310 Puffer, wie Register, ROM-Sicherungen und andere Speichervorrichtungen zum Speichern von Vorgabewerten wie Basisspannungen und anderen Parametern ein.
  • Der On-Chip-Adressdecodierer 314 stellt eine Adressschnittstelle zwischen Adressen, die von einer Steuerung 102 verwendet werden, zu der Hardwareadresse, die von den Decodierern 324 und 332 verwendet wird, bereit. Das Leistungssteuermodul 316 steuert die Leistung und Spannungen, mit denen die Wortleitungen und Bitleitungen bei Speicheroperationen versorgt werden. Das Leistungssteuermodul 316 kann Ladungspumpen zum Erzeugen von Spannungen einschließen. Die Leseblöcke schließen Bitleitungstreiber ein.
  • In einer Ausführungsform weist die Speicherstruktur 326 ein dreidimensionales Array von nichtflüchtigen Speicherzellen auf, auf denen mehrere Speicherstufen über einem einzigen Substrat, wie einem Wafer, ausgebildet sind. Die Speicherstruktur kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Speicherzellen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Silizium- (oder anderen Typ von) Substrat angeordnet ist. In einem Beispiel schließen die nichtflüchtigen Speicherzellen vertikale NAND-Ketten mit ladungseinfangendem Material ein, wie es zum Beispiel im US-Patent 9,721,662 beschrieben ist, auf das hier in seiner Gesamtheit Bezug genommen wird.
  • In einer anderen Ausführungsform weist die Speicherstruktur 326 ein zweidimensionales Speicherarray von nichtflüchtigen Speicherzellen auf. In einem Beispiel, sind die nichtflüchtigen Speicherzellen NAND-Flash-Speicherzellen unter Verwendung von Floating-Gates wie beschrieben, zum Beispiel, im U.S. Patentschrift 9,082,502 , hierin durch Bezugnahme in seiner Gesamtheit aufgenommen. Andere Arten von Speicherzellen (z. B. NOR-Typ-Flashspeicher) können ebenfalls verwendet werden.
  • Die exakte Art der Speicher-Array-Architektur oder Speicherzelle, die in der Speicherstruktur 326 enthalten ist, ist nicht auf die obigen Beispiele beschränkt. Viele unterschiedliche Arten von Speicher-Array-Architekturen oder Speichertechnologien können verwendet werden, um die Speicherstruktur 326 zu bilden. Keine spezielle nichtflüchtige Speichertechnologie ist für die Zwecke der neuen beanspruchten Ausführungsformen, die hier vorgeschlagen werden, erforderlich. Andere Beispiele geeigneter Technologien für Speicherzellen der Speicherstruktur 326 schließen ReRAM-Speicher, magnetoresistive Speicher (z. B. MRAM, Spin Transfer Torque MRAM, Spin Orbit Torque MRAM), Phasenwechselspeicher (z. B. PCM) und dergleichen ein. Beispiele von geeigneten Technologien für die Speicherzellen-Architekturen der Speicherstruktur 126 schließen zweidimensionale Arrays, dreidimensionale Arrays, Kreuzpunkt-Arrays, gestapelte zweidimensionale Arrays, vertikale Bitleitungs-Arrays und dergleichen ein.
  • Ein Beispiel eines ReRAM- oder PCMRAM-Kreuzpunktspeichers schließt reversible Widerstandsschaltelemente ein, die in Kreuzpunktarrays angeordnet sind, auf die durch X-Leitungen und Y-Leitungen (z. B. Wortleitungen und Bitleitungen) zugegriffen wird. In einer anderen Ausführungsform können die Speicherzellen leitfähige Brückenspeicherelemente einschließen. Ein leitfähiges Brückenspeicherelement kann auch als programmierbare Metallisierungszelle bezeichnet werden. Ein leitfähiges Brückenspeicherelement kann als Zustandsänderungselement basierend auf der physikalischen Verlagerung von Ionen innerhalb eines Festelektrolyten verwendet werden. In einigen Fällen kann ein leitfähiges Brückenspeicherelement zwei feste Metallelektroden einschließen, eine relativ inerte (z. B. Wolfram) und eine elektrochemisch aktive (z. B. Silber oder Kupfer), mit einer dünnen Folie des Festelektrolyten zwischen den beiden Elektroden. Mit steigender Temperatur steigt auch die Mobilität der Ionen, sodass die Programmierschwelle für die leitfähige Brückenspeicherzelle abnimmt. Somit kann das leitfähige Brückenspeicherelement einen weiten Bereich von Programmschwellenwerten als Funktion der Temperatur aufweisen.
  • Ein magnetoresistiver Speicher (MRAM) speichert Daten durch Magnetspeicherelemente. Die Elemente sind aus zwei ferromagnetischen Platten gebildet, von denen jede eine Magnetisierung halten kann, die durch eine dünne Isolierschicht getrennt ist. Eine der beiden Platten ist ein Permanentmagnet, der auf eine bestimmte Polarität eingestellt ist; die Magnetisierung der anderen Platte kann so geändert werden, dass sie der eines externen Felds entspricht, um Speicher zu speichern. Eine Speichervorrichtung ist aus einem Gitter solcher Speicherzellen aufgebaut. Bei einer Ausführungsform zum Programmieren liegt jede Speicherzelle zwischen einem Paar von Schreibleitungen, die in rechten Winkeln zueinander parallel zu der Zelle, eine über und eine unter der Zelle angeordnet sind. Wenn Strom durch sie fließt, wird ein Induktionsmagnetfeld erzeugt.
  • Phasenwechselspeicher (PCM) nutzt das einzigartige Verhalten von Chalkogenidglas aus. Eine Ausführungsform verwendet ein GeTe-Sb2Te3-Übergitter, um nicht-thermische Phasenänderungen zu erreichen, indem einfach der Koordinationszustand der Germaniumatome mit einem Laserimpuls (oder Lichtimpuls von einer anderen Quelle) geändert wird. Daher sind die Dosen der Programmierung Laserimpulse. Die Speicherzellen können gesperrt werden, indem die Speicherzellen daran gehindert werden, das Licht zu empfangen. Es sei darauf hingewiesen, dass die Verwendung von „Impuls“ in diesem Dokument keinen Rechteckimpuls erfordert, sondern eine (kontinuierliche oder nicht kontinuierliche) Schwingung oder einen Stoß eines Schalls, Stroms, Spannungslichts oder einer anderen Welle einschließt.
  • In einigen Fällen kann ein Speichersystem unerwartet an Leistung verlieren, sodass das Speichersystem nicht ordnungsgemäß heruntergefahren wird. Dies kann Konsequenzen haben, wenn das Speichersystem wieder eingeschaltet wird (z. B. wenn die Stromversorgung wiederhergestellt wird). Wenn ein Stromverlust zu erwarten ist, durchläuft ein Speichersystem möglicherweise eine Routine zur ordnungsgemäßen Vorbereitung und zum ordnungsgemäßen Herunterfahren (Graceful Shutdown oder GSD). Zum Beispiel können bestimmte Daten, die in einem flüchtigen Speicher gespeichert werden können, als Vorbereitung auf einen Stromverlust in einen nichtflüchtigen Speicher kopiert werden. Im Gegensatz dazu wird während eines nicht ordnungsgemäßen Herunterfahren (UGSD) keine solche Vorbereitung durchgeführt, und im flüchtigen Speicher gespeicherte Daten können verloren gehen. Diese Daten können Steuerdaten enthalten, die wieder aufgebaut werden können. Das Wiederaufbauen solcher Steuerdaten kann jedoch zeitaufwändig sein. Das Verringern der Zeit, die zum Durchführen eines solchen Wiederaufbaus als Reaktion auf ein nicht ordnungsgemäßes Herunterfahren benötigt wird, kann bestimmte Vorteile bieten, zum Beispiel das Sicherstellen, dass die Gesamtzeit für einen Wiederherstellungsvorgang nach einem unerwarteten Stromausfall kürzer als eine vorbestimmte Zeitdauer ist.
  • 6 veranschaulicht ein Beispiel einiger Komponenten des Speichersystems 100, welche mit dem Host 120 durch die Schnittstelle 130 zum Empfangen von Schreibbefehlen vom Host 120 verbunden ist, wie zuvor in 1 dargestellt. Mit Schreibbefehlen vom Host 120 empfangene Schreibdaten werden in die offenen Blöcke 602, 604, 606 im nichtflüchtigen Speicher 104 geschrieben (wenngleich in dieser Darstellung drei offene Blöcke gezeigt sind, versteht es sich, dass die Anzahl der offenen Blöcke mehr oder weniger als drei sein kann). Im Allgemeinen können solche Schreibdaten, die mit Host-Schreibbefehlen empfangen werden, von einem Host mit entsprechenden logischen Adressen (z. B. logischen Blockadressen oder LBAs) empfangen werden, die durch die Zuordnungsschaltung 608 der Steuerung 102 physikalischen Adressen in einem nichtflüchtigen Speicher 104 (z. B. Orten in offenen Blöcken 602, 604, 606) zugeordnet werden. Die Zuordnungsschaltung 608 kann Daten an verschiedenen Orten gemäß den Eigenschaften der Daten (z. B. sequentiell, nicht sequentiell) speichern. Die Zuordnungsschaltung 608 erzeugt Steuerdaten 610 (in diesem Beispiel logische-zu-physische Zuordnungsdaten), die in einem flüchtigen Speicher wie dem lokalen Speicher 106 gespeichert sein können. Die Steuerdaten 610 können durch die Steuerdaten-Kopierschaltung 612 in den nichtflüchtigen Speicher 104 kopiert werden. Dies stellt eine Kopie der Steuerdaten 614 im nichtflüchtigen Speicher 104 bereit, sodass sie nach einem Stromverlust verfügbar sind (eine solche Kopie im nichtflüchtigen Speicher kann als „Journal“ bezeichnet werden). Zum Beispiel können die Steuerdaten 610 mit einer gewissen Frequenz basierend auf der Menge neuer Daten, die in den nichtflüchtigen Speicher 104 geschrieben wurden, kopiert werden, oder sie können zur Vorbereitung auf einen Stromverlust oder ein anderes Ereignis kopiert werden. Wenn Steuerdaten 610 als Teil einer Herunterfahrroutine zur Vorbereitung auf einen Stromverlust kopiert werden, dann enthalten die Steuerdaten 614 zum Zeitpunkt des Stromverlustes alle aktuellen Steuerdaten, sodass die Steuerdaten 610 im lokalen Speicher 106 durch Kopieren von Steuerdaten 614 im nichtflüchtigen Speicher 104 wiederhergestellt werden können. In einigen Speichersystemen stellt eine Batterie oder ein Kondensator ausreichend Leistung bereit, um eine Herunterfahrroutine abzuschließen, wenn die externe Leistung verloren geht. In anderen Speichersystemen kann Srom ohne Warnung verloren gehen, sodass keine Herunterfahrroutine durchgeführt wird. Wenn Strom ohne ausreichende Vorbereitung verloren geht, kann es Unterschiede zwischen den Steuerdaten 610 in einem lokalen Speicher 106 und Steuerdaten 614 im nichtflüchtigen Speicher 104 geben. Zum Beispiel können Steuerdaten, die Daten zugeordnet sind, die seit der letzten Steuerdaten-Kopieroperation geschrieben wurden, in Steuerdaten 610 im lokalen Speicher 106 aufgezeichnet werden, sie werden jedoch möglicherweise nicht in Steuerdaten 614 im nichtflüchtigen Speicher 614 aufgezeichnet. Die Steuerdaten-Wiederaufbauschaltung 616 ist bereitstellt, um in solchen Fällen Steuerdaten 610 wieder aufzubauen (d. h. alle verlorenen Steuerdaten wieder aufzubaue, die sich vor dem Stromverlust möglicherweise im lokalen Speicher 106, jedoch nicht im nichtflüchtigen Speicher 104 befanden). Die Steuerdaten-Wiederaufbauschaltung 616 kann die zuletzt aufgezeichneten Einträge in den Steuerdaten 614 prüfen, um festzustellen, wo die zuletzt aufgezeichneten Schreibvorgänge in den offenen Blöcken 602, 604, 606 stattgefunden haben. Die Steuerdaten-Wiederaufbauschaltung 616 kann dann über die letzten aufgezeichneten Schreibvorgänge in den offenen Blöcken 602, 604, 606 hinaus scannen, um festzustellen, ob nach diesen Schreibvorgängen irgendwelche Daten geschrieben wurden. Wenn es zusätzliche Schreibvorgänge gab, werden mit solchen Daten geschriebene Metadaten (z. B. LBA und/oder andere Identifizierungsinformationen) gelesen und zum Wiederaufbauen von Steuerdaten 610 verwendet (z. B. zum Erstellen einer logischen-zu-physischen Zuordnung basierend auf physischen Orten, an denen Daten gefunden werden, und LBAs, die den Daten zugewiesen sind).
  • 7 zeigt ein Beispiel von Steuerdaten 610 im lokalen Speicher 106 und Steuerdaten 614 im nichtflüchtigen Speicher 104 zu einem Zeitpunkt zwischen Steuerdaten-Kopiervorgängen (d. h. zu einem Zeitpunkt, zu dem Daten in den nichtflüchtigen Speicher 104 geschrieben wurden und die entsprechenden Steuerdaten im lokalen Speicher 106 nicht in den nichtflüchtigen Speicher 104 kopiert wurden). Der offene Block 602 enthält einen ersten geschriebenen Abschnitt 720, der Daten enthält, die vor der letzten Steuerdatenkopieroperation geschrieben wurden. Da diese Daten vor dem letzten Steuerdaten-Kopiervorgang geschrieben wurden, wurden Steuerdaten, die dem ersten geschriebenen Abschnitt 720 entsprechen, in dem letzten Steuerdaten-Kopiervorgang in den nichtflüchtigen Speicher 104 kopiert. Somit schließen die Steuerdaten 614 im nichtflüchtigen Speicher 104 logische-zu-physische Zuordnungsdaten für den ersten geschriebenen Abschnitt 720 (und für entsprechende Abschnitte der offenen Blöcke 604, 606, die vor dem letzten Steuerdaten-Kopiervorgang geschrieben wurden), ein. Der zweite geschriebene Abschnitt 722 enthält Daten, die nach dem letzten Steuerdaten-Kopiervorgang geschrieben wurden. Da diese Daten nach dem letzten Steuerdaten-Kopiervorgang geschrieben wurden, wurden Steuerdaten, die dem zweiten geschriebenen Abschnitt 722 entsprechen, nicht in den nichtflüchtigen Speicher 104 kopiert. Somit schließen die Steuerdaten 614 im nichtflüchtigen Speicher 104 keine logische-zu-physische Zuordnung für den zweiten geschriebenen Abschnitt 722 (oder für entsprechende Abschnitte der offenen Blöcke 604, 606) ein. Während Steuerdaten, die dem zweiten geschriebenen Abschnitt 722 entsprechen, im lokalen Speicher 106 vorhanden sind, können diese Steuerdaten im Fall einer UGSD verloren gehen.
  • Während der Wiederherstellung von einem UGSD werden Steuerdaten 614 gelesen, um die zuletzt aufgezeichneten Einträge für alle offenen Blöcke zu identifizieren. Dies identifiziert die Grenze 724 des ersten geschriebenen Abschnitts 720. Das Scannen des offenen Blockes 602 geht von der Grenze 724 aus, um Daten zu identifizieren, die in dem zweiten geschriebenen Abschnitt 722 gespeichert sind (z. B. um LBAs für jeden geschriebenen Ort in dem zweiten geschriebenen Abschnitt 722 zu identifizieren). Das Scannen wird fortgesetzt, bis die Grenze 726 zwischen dem zweiten geschriebenen Abschnitt 722 und dem unbeschriebenen Abschnitt 728 liegt. Ein solches Scannen wird für offene Blöcke 604, 606 und alle anderen offenen Blöcke durchgeführt, die unterschiedliche zu scannende Datenmengen enthalten können. Unterschiedliche Kopien derselben Daten (dieselbe LBA) können in unterschiedlichen offenen Blöcken vorhanden sein, und der korrekte Wiederaufbau von Steuerdaten erfordert möglicherweise die Bestimmung der zuletzt geschriebenen Version (d. h. einige Scanergebnisse werden möglicherweise als veraltete Daten verworfen).
  • Ein solcher Prozess des Identifizierens von Daten, die in einem nichtflüchtigen Speicher gespeichert sind, um Steuerdatenstrukturen wiederherzustellen, kann langsam sein, insbesondere für nicht sequentielle Daten, wobei Metadaten für jede Einheit, die nach der letzten Steuerdatenkopie geschrieben wurde (z. B. für jede Flash Management Unit, „FMU“, die seit der letzten Kopie der Steuerdaten in jeden offenen Block geschrieben wurde), einzeln gelesen werden können. Der Wiederaufbau kann für sequentielle Daten schneller sein, wenn Einheiten mit sequentiellen Adressen (z. B. sequentielle LBAs) zusammen empfangen und zusammen in einem nichtflüchtigen Speicher gespeichert werden. Wenn Daten, die in einem offenen Block gespeichert sind, als sequentiell identifiziert werden, kann die logische-zu-physische Zuordnung für alle Einheiten einer solchen Sequenz zusammen und nicht einzeln wieder aufgebaut werden. In vielen Fällen schließt der Wiederaufbau von Steuerdaten den Wiederaufbau von Steuerdaten sowohl für sequentielle als auch für nicht sequentielle Daten ein, sodass die benötigte Zeit nicht nur davon abhängt, wie viele Daten seit der letzten Steuerdatenkopie geschrieben wurden, sondern auch davon, wie viel dieser Daten sequentiell waren und wie viele nicht sequentiell waren.
  • 8 zeigt ein Beispiel eines Prozesses, der zum Wiederaufbauen von Steuerdaten verwendet wird, wie beispielsweise Steuerdaten 610 im lokalen Speicher 106 nach einer UGSD. Firmware wird geladen 830 (z. B. Firmware für den Betrieb der Steuerung 102 kann aus dem nichtflüchtigen Speicher 104 geladen werden, um den Betrieb der Steuerung 102 zu ermöglichen). Ein Journal von FTL-Transaktionen (Flash Translation Layer-Transaktionen) wird dann gelesen 832. Zum Beispiel können Steuerdaten 614 im nichtflüchtigen Speicher 104 ein solches Journal einschließen. Transaktionen können Einträge einschließen, die sich auf die logische-zu-physische Zuordnung von Daten beziehen, einschließlich Daten, die in offenen Blöcken vor dem letzten Steuerdatenkopiervorgang geschrieben wurden. Wenn ein ordnungsgemäßes Herunterfahren stattgefunden hat, ist dieses Journal möglicherweise vollständig und aktuell. Dies wird möglicherweise durch ein Flag angezeigt, das beim ordnungsgemäßen Herunterfahren gesetzt wird. Wenn eine UGSD aufgetreten ist (z. B. wenn ein Flag nicht gesetzt ist), ist das Journal möglicherweise nicht vollständig und nicht auf dem neuesten Stand. Offene Blöcke werden nach gültigen Daten und Metadaten gescannt 834 (z. B. Scannen des zweiten geschriebenen Abschnitts 722 des offenen Blocks 602 nach gültigen Daten und nach LBAs, die solchen gültigen Daten zugewiesen sind). Aus den Ergebnissen dieses Scannens (angewendet auf alle offenen Blöcke) werden FTL-Tabellen wieder aufgebaut 836 (z. B. werden FTL-Tabellen in Steuerdaten 610 im lokalen Speicher 106 wieder aufgebaut). Vor dem Wiederaufbauen von FTL-Tabellen verfügt ein Speichersystem nicht über ausreichende Informationen, um Host-Daten zu lokalisieren und Host-Lesebefehle auszuführen. Somit kann ein Host nicht auf Daten in einem solchen Speichersystem zugreifen, bis die Steuerdaten wieder aufgebaut sind, und daher möglicherweise nicht in der Lage sein, Daten für Host-Wiederherstellungsvorgänge zu laden (z. B. kann ein Host, der von einem Speichersystem bootet, möglicherweise nicht auf Startdaten zugreifen, bis das Speichersystem den Wiederaufbau aller verlorenen Steuerdaten abschließt). Ein Bereitschaftsindikator kann einem Host bereitgestellt werden, nachdem FTL-Tabellen wieder aufgebaut wurden 836, z. B. ein Bereitschaftssignal, das vom Speichersystem 100 an den Host 120 gesendet wird, um anzuzeigen, dass sich das Speichersystem 100 in einem Bereitschaftszustand befindet, in dem es Lesebefehle annehmen kann. Wenn die in 8 dargestellten Schritte schneller ausgeführt werden, können Lesebefehle schneller angenommen werden, sodass sich ein Host nach einem Stromverlust schneller erholen kann.
  • Im Allgemeinen ist das Scannen und Wiederaufbauen von Steuerdaten für sequentielle Daten schneller als für nicht sequentielle Daten. Die Zeit, die für einen dieser Vorgänge benötigt wird, kann einigermaßen vorhersagbar sein. So kann beispielsweise das Scannen und Wiederaufbauen von Steuerdaten für 32 MB zufälliger (nicht sequentieller) Hostdaten 10 ms dauern, während das Scannen und Wiederaufbauen von Steuerdaten für 1 GB sequentieller Hostdaten ebenfalls 10 ms dauern kann. In vielen Fällen enthalten die zu scannenden Daten sowohl sequentielle als auch nicht sequentielle Daten, und die zu scannende Datenmenge hängt davon ab, wie viele Daten seit dem letzten Kopiervorgang der Steuerdaten geschrieben wurden. Während die Durchführung von Steuerdaten-Kopiervorgängen häufiger die zu scannende Datenmenge verringert, erhöht dies auch die Anzahl der Schreibvorgänge in den nichtflüchtigen Speicher, was die Speicherlebensdauer beeinträchtigen kann.
  • Gemäß Beispielen der vorliegenden Technologie kann ein Speichersystem sicherstellen, dass seine Wiederherstellungszeit nach einem UGSD einen Grenzwert nicht überschreitet, der von einem Host festgelegt werden kann. Zum Beispiel kann ein Speichersystem unter Verwendung einer Schätzung der Wiederherstellungszeit (die auf einem Modell basieren kann oder durch Messen der aktuellen Zeit erhalten werden kann oder auf andere Weise geschätzt werden kann) zum Identifizieren einer Beziehung zwischen Steuerdaten-Kopiefrequenz und Wiederherstellungszeit und Einstellen einer Steuerdaten-Kopiefrequenz erhalten werden, um sicherzustellen, dass die Wiederherstellungszeit geringer als eine Grenze ist (z. B. um sicherzustellen dass der Wiederaufbau der maximalen Menge von Steuerdaten keine vorbestimmte Zeit überschreitet).
  • 9 zeigt ein Beispiel eines Verfahrens, das auf ein Speichersystem wie das Speichersystem 100 angewendet werden kann, um sicherzustellen, dass die Wiederherstellungszeit keine Grenze überschreitet. Ein Speichersystem schätzt oder misst die Wiederherstellungszeit für die Schreibarbeitslast 940. Beispielsweise kann ein Speichersystem dies tun, indem es die Arbeitslast des Host-Schreibbefehls überwacht, z. B. Host-Schreibbefehle überwacht, die vom Speichersystem empfangen werden, um die Menge der empfangenen sequentiellen Daten und nicht sequentiellen Daten zu bestimmen, und kann daraus die Zeit schätzen, die zum Wiederaufbauen entsprechender Steuerdaten benötigt wird. Das Speichersystem kann dann eine Grenze für flüchtige Steuerstrukturen (z. B. Steuerdaten 610) basierend auf einer gewünschten Wiederherstellungszeit 942 festlegen (z. B. einer Wiederherstellungszeit, die in Firmware festgelegt ist, von einem Host, einer Anwendung oder auf andere Weise festgelegt ist). Wenn zum Beispiel eine Wiederherstellung von Steuerdaten, die 4 GB nicht sequentiellen Hostdaten entsprechen, ungefähr 1,2 Sekunden dauert, dauert die Wiederherstellung von Steuerdaten, die 70 MB Hostdaten entsprechen, ungefähr 20 ms. Unter der Annahme, dass die anderen Vorgänge, die für das Booten des Speichersystems erforderlich sind (z. B. Laden der Firmware), ungefähr 30 ms dauern, würde das Kopieren von Steuerdaten bei jedem Schreiben von 70 MB Hostdaten die UGSD-Wiederherstellungszeit auf 50 ms selbst unter ungünstigsten Umständen begrenzen, wenn alle 70 MB von Hostdaten nicht sequentiell sind. Das Überwachen von Schreibbefehlen zum Identifizieren von sequentiellen und nicht-sequentiellen Schreibvorgängen stellt eine genauere Schätzung der Wiederherstellungszeit bereit und ermöglicht möglicherweise eine niedrigere Steuerdaten-Kopierfrequenz (längeres Intervall zwischen Steuerdaten-Kopiervorgängen, wodurch nichtflüchtige Speicherzellen weniger beansprucht werden).
  • In einigen nichtflüchtigen Speichern werden Daten, die von einem Host empfangen werden, um in den nichtflüchtigen Speicher geschrieben zu werden, als sequentiell oder nicht sequentiell (zufällig) identifiziert und entsprechend gespeichert, z. B. in verschiedenen Blöcken. Daten können als nicht sequentiell klassifiziert werden, wenn weniger als eine Schwellenanzahl von sequentiellen FMUs geschrieben werden, und können klassifiziert werden, wenn mehr als die Schwellenanzahl von sequentiellen FMUs geschrieben werden. Somit kann es einen oder mehrere offene sequentielle Blöcke zum Speichern von sequentiellen Daten und einen oder mehrere offene nicht sequentielle Blöcke zum Speichern von nicht sequentiellen Daten geben. Eine solche getrennte Speicherung kann die Schätzung der Wiederherstellungszeit erleichtern, obwohl dies nicht erforderlich ist.
  • 10 zeigt ein Beispiel eines nichtflüchtigen Speichers 104 zu einem Zeitpunkt zwischen Steuerkopiervorgängen. In diesem Beispiel ist der offene Block 602 ein offener nicht sequentieller Block, der nur nicht sequentielle Daten speichert, während der offene Block 606 ein offener sequentieller Block ist, der nur sequentielle Daten speichert. Der offene Block 602 schließt einen ersten geschriebenen Abschnitt 720 (der nicht sequentielle Daten enthält, für die entsprechende Steuerdaten in den Steuerdaten 614 gespeichert sind) und einen zweiten geschriebenen Abschnitt 722 (der nicht sequentielle Daten enthält, für die sich entsprechende Steuerdaten in Steuerdaten 610 im lokalen Speicher 106 befinden, jedoch nicht in Steuerdaten 614 im nichtflüchtigen Speicher 104 gespeichert sind) ein. Der offene Block 606 schließt einen ersten geschriebenen Abschnitt 1050 (der sequentielle Daten enthält, für die entsprechende Steuerdaten in den Steuerdaten 614 gespeichert sind) und einen zweiten geschriebenen Abschnitt 1052 (der sequentielle Daten enthält, für die sich entsprechende Steuerdaten in Steuerdaten 610 im lokalen Speicher 106 befinden, jedoch nicht in Steuerdaten 614 im nichtflüchtigen Speicher 104 gespeichert sind) ein. Eine Schätzung der Wiederherstellungszeit kann eine Schätzung zum Wiederaufbauen von Steuerdaten einschließen, die nicht sequentiellen Daten im zweiten geschriebenen Abschnitt 722 und sequentiellen Daten im zweiten geschriebenen Abschnitt 1052 entsprechen. Im Allgemeinen dauert das Wiederaufbauen von Steuerdaten für eine gegebene Menge von nicht sequentiellen Daten länger als für die gleiche Menge von sequentiellen Daten, sodass, selbst wenn mehr sequentielle Daten in dem zweiten geschriebenen Abschnitt 1052 als nicht sequentielle Daten in dem zweiten geschriebenen Abschnitt 722 vorhanden sein können, das Wiederaufbauen entsprechender Steuerdaten für sequentielle Daten in dem zweiten geschriebenen Abschnitt 1052 schneller sein kann als für nicht sequentielle Daten in dem zweiten geschriebenen Abschnitt 722. Es können Gewichtungen angewendet werden, um eine Schätzung zu generieren, die diese Unterschiede bei dem Wiederaufbau von Steuerdaten für sequentielle und nicht sequentielle Daten widerspiegelt. Wenn zum Beispiel das Wiederaufbauen von Steuerdaten, die nicht sequentiellen Daten entsprechen, zehn Mal (10x) länger dauert als das Wiederaufbauen von Steuerdaten, die sequentiellen Daten entsprechen, können die jeweiligen Gewichtungen dieses Verhältnis widerspiegeln (d. h. 10:1). Diese Gewichtungen können dynamisch angewendet werden, um Daten zu schreiben, wenn sie von einem Host empfangen und in einem nichtflüchtigen Speicher gespeichert werden, oder sie können basierend auf einer Schätzung der Zusammensetzung von Schreibdaten von einem Host oder gemäß einer auf der Modellierung basierenden Vorhersage oder anderweitig angewendet werden.
  • 11 zeigt ein Verfahren zum Verwalten von Steuerdaten-Kopiervorgängen in einem Speichersystem wie dem Speichersystem 100. Schreibbefehle werden von einem Host 1160 (z. B. von Host 120) empfangen und überwacht, um zu bestimmen, ob Schreibdaten sequentiell sind 1162. Für sequentielle Daten wird eine sequentielle Gewichtung angewendet 1164 (z. B. durch Multiplizieren der Anzahl der in den nichtflüchtigen Speicher geschriebenen Einheiten sequentieller Daten mit einem ersten Gewichtungsfaktor, der die Zeit pro Einheit zum Rückgewinnen von Steuerdaten widerspiegelt). Für nicht sequentielle Daten wird eine nicht sequentielle Gewichtung angewendet 1166 (z. B. durch Multiplizieren der Anzahl von Einheiten nicht sequentieller Daten, die in den nichtflüchtigen Speicher geschrieben werden, mit einem zweiten Gewichtungsfaktor, der die Zeit pro Einheit zum Wiederherstellen von Steuerdaten widerspiegelt). Die gewichteten Werte (z. B. gewichtete Datenmengen) werden kombiniert 1168, um einen Wert zu erzeugen, der der Zeit entspricht, die benötigt wird, um entsprechende Steuerdaten sowohl für sequentielle als auch für nicht sequentielle Daten wiederherzustellen. Die Steuerdaten werden dann gemäß den kombinierten gewichteten Werten 1170 in den nichtflüchtigen Speicher (NVM, z. B. den nichtflüchtigen Speicher 104) kopiert. Zum Beispiel können Steuerdaten mit einer Frequenz kopiert werden, die so ausgewählt ist, dass die längste Wiederherstellungszeit für Steuerdaten der sequentiellen und nicht sequentiellen Daten, die seit der letzten Steuerdatenkopie gespeichert wurden, kleiner als eine vorbestimmte maximale Zeit ist. Die Kopierfrequenz kann dynamisch in Echtzeit angepasst werden, sodass das Kopieren von Steuerdaten erfolgt, wenn sich die Menge der sequentiellen und nicht sequentiellen Daten einer Grenze nähert, oder sie kann basierend auf einer früheren Abtastung von Schreibbefehlen angewendet werden, um die Wiederherstellungszeit der Steuerdaten zu schätzen, oder kann auf einer anderen Charakterisierung der Arbeitslast von Schreibbefehlen basieren (z. B. Offline-Modellierung).
  • In einigen Fällen können temporäre Daten von einem Host in einem nichtflüchtigen Speicher wie dem nichtflüchtigen Speicher 104 gespeichert werden. Solche temporären Daten werden vom Host (z. B. Host 120) nach einem UGSD möglicherweise nicht benötigt, sodass ein Wiederaufbau entsprechender Steuerdaten möglicherweise nicht erforderlich ist. Beispiele für solche temporären Daten können Seiten- oder Dateiaustauschdaten, Cache-Dateien (z. B. Cache-Dateien, die von Browsern auf einem Host verwendet werden), von einer Anwendung erstellte temporäre Dateien und andere temporäre Daten sein, die von einem Host nach einem UGSD nicht gelesen werden. Seiten- oder Auslagerungsdatei-Daten können Daten sein, die temporär von einem Host im nichtflüchtigen Speicher gespeichert werden, während im Hauptspeicher eines Hosts kein Speicherplatz verfügbar ist. Nach einem UGSD liest ein Host solche Daten nicht aus dem nichtflüchtigen Speicher. Browser-Cache-Dateien können durch einen Browser erzeugt werden, um das Laden einiger Seiten zu beschleunigen. Nach einem UGSD kann ein Browser solche Dateien möglicherweise von der Originalquelle herunterladen und nicht aus dem nichtflüchtigen Speicher (wo solche Dateien veraltet sein können). Andere Anwendungen als Browser können auch temporäre Dateien erstellen, die nach einem UGSD nicht aus dem nichtflüchtigen Speicher gelesen werden (z. B. Dateien, die sich auf eine Benutzeroberfläche beziehen). Beim Scannen und Wiederaufbauen von Steuerdaten nach einem UGSD können solche temporären Daten, von denen nicht erwartet wird, dass sie gelesen werden, weggelassen werden, was erhebliche Zeiteinsparungen ermöglichen kann. Beispielsweise werden temporäre Daten möglicherweise nicht gescannt und es werden möglicherweise keine Steuerdaten für solche temporären Daten wieder aufgebaut. In einigen Fällen können temporäre Daten von einem Host identifiziert werden, wenn dieser Host-Schreibdaten an einen nichtflüchtigen Speicher sendet. Ein expliziter Indikator kann von einem Host (z. B. einem NVMe-Kontextattribut) bereitgestellt oder von einem Speichersystem abgeleitet werden. Temporäre Daten können in einem oder mehreren dedizierten Blöcken gespeichert werden. Somit kann es einen oder mehrere offene Blöcke geben, die für die Speicherung temporärer Daten zu jeder gegebenen Zeit dediziert sind. Während eines Wiederherstellungsvorgangs von UGSD können solche offenen Blöcke weggelassen werden, wenn Steuerdaten gescannt und wiederhergestellt werden.
  • 12 zeigt ein Beispiel eines Verfahrens zum Betreiben eines Speichersystems, wie des Speichersystems 100, das temporäre Daten und nicht temporäre Daten trennt. Wenn Schreibdaten empfangen werden 1274, wird bestimmt, ob die Schreibdaten temporär sind 1276. Wenn die Schreibdaten nicht temporär sind, wird eine sekundäre Klassifizierung durchgeführt 1278. Zum Beispiel können Daten als sequentiell oder nicht sequentiell klassifiziert werden. Daten können auch gemäß der Zugriffsfrequenz als häufig aufgerufene „heiße“ Daten oder selten aufgerufene „kalte“ Daten klassifiziert und/oder auf eine oder mehrere andere Arten klassifiziert werden. Die Daten werden dann entsprechend 1280 in sequentielle und nicht sequentielle (zufällige) Blöcke geschrieben (z. B. wie in 10 dargestellt). Wenn Schreibdaten temporär sind, werden sie in einen temporären Block oder in temporäre Blöcke 1282 geschrieben, die dedizierte Blöcke sein können, die ausschließlich für temporäre Daten verwendet werden. In einigen Fällen können alle temporären Daten in einen einzelnen offenen temporären Block geschrieben werden, während in anderen Fällen temporäre Daten in zwei oder mehr offene temporäre Blöcke geschrieben werden können. Zum Beispiel kann eine sekundäre Klassifizierung (z. B. in sequentielle und nicht sequentielle temporäre Daten) für temporäre Daten durchgeführt werden, und temporäre Daten können dementsprechend in verschiedene offene Blöcke geschrieben werden.
  • 13 zeigt ein Beispiel eines nichtflüchtigen Speichers 104 zu einem Zeitpunkt zwischen Steuerkopiervorgängen. In diesem Beispiel ist der offene Block 602 ein offener nicht sequentieller Block, während der offene Block 606 ein offener sequentieller Block ist, wie zuvor in 10 dargestellt. Außerdem ist der offene Block 604 ein offener temporärer Block, der zum Speichern temporärer Daten bestimmt ist. Der offene Block 604 enthält einen ersten geschriebenen Abschnitt 1384 (für den Steuerdaten in Steuerdaten 614 in dem nichtflüchtigen Speicher 104 gespeichert sind) und einen zweiten geschriebenen Abschnitt 1386 (für den Steuerdaten in dem lokalen Speicher 106, jedoch nicht in dem nichtflüchtigen Speicher 104 gespeichert sind). Nach einer UGSD können Steuerdaten-Wiederaufbauschaltungen offene Blöcke 602, 606 scannen, um Daten zu identifizieren, die in den zweiten geschriebenen Abschnitten 772 bzw. 1052 gespeichert sind. Der offene Block 604 kann von einem solchen Scannen weggelassen werden, weil der zweite geschriebene Abschnitt 1386 des offenen Blocks 604 nur temporäre Daten enthält, die von einem Host nicht gelesen werden. Das Weglassen des Scan-Öffnungsblocks 604 und das Wiederaufbauen entsprechender Steuerdaten können während der Wiederherstellung von UGSD erhebliche Zeit sparen.
  • 14 zeigt ein Verfahren zum Betreiben eines Speichersystems, wie eines Speichersystems 100, das eine schnelle Wiederherstellung von einem UGSD bereitstellen kann. Schreibbefehle werden von einem Host 1488 empfangen, und es wird festgestellt, ob den Schreibbefehlen zugeordnete Schreibdaten temporäre Daten 1490 sind (z. B. Prüfen auf Hostindikatoren, wie NVMe-Kontextattribute, die mit Hostschreibbefehlen empfangen werden können). Die Bestimmung kann von der Zuordnungsschaltung 608 (die als Mittel zum Identifizieren temporärer Daten betrachtet werden kann, die mit einem Host-Schreibbefehl empfangen werden, und zum Speichern der temporären Daten in einem dedizierten Block der Vielzahl von nichtflüchtigen Speicherzellen, die zum Speichern von temporären Daten dediziert sind) vorgenommen werden. Wenn bestimmt wird, dass die Daten temporäre Daten sind, werden sie in einem temporären Block 1492 gespeichert, z. B. in einem Block, der für die Speicherung temporärer Daten gemäß dem Zuordnungsschema der Zuordnungsschaltung 608 bereitgestellt ist. Wenn die Daten nicht temporäre Daten sind, wird eine Bestimmung vorgenommen, ob die Daten sequentiell sind 1493. Für sequentielle Daten wird eine sequentielle Gewichtung angewendet 1494 und für nicht sequentielle Daten wird eine nicht sequentielle Gewichtung angewendet 1495 und die gewichteten Werte werden kombiniert 1496. Steuerdaten werden dann gemäß den kombinierten gewichteten Werten 1498 in den nichtflüchtigen Speicher kopiert (z. B. mit einer Steuerdaten-Kopierfrequenz kopiert, die sicherstellt, dass das Wiederaufbauen nicht kopierter Steuerdaten für nicht temporäre Daten weniger als eine vorbestimmte Zeit dauert). Es sei zu beachten, dass die kombinierten gewichteten Werte keinen Wert einschließen, der temporäre Daten widerspiegelt, da temporäre Daten separat gespeichert und nicht in die gewichteten Werte einbezogen werden. Da temporäre Daten nicht gescannt werden und entsprechende Steuerdaten nicht wieder aufgebaut werden, können temporäre Daten weggelassen werden, wenn die Wiederherstellungszeit geschätzt und die Frequenz des Kopierens von Steuerdaten festgelegt wird.
  • 15 zeigt ein Beispiel eines Verfahrens zum Rückgewinnen von einem UGSD, das in einem Speichersystem wie dem nichtflüchtigen Speichersystem 100 angewendet werden kann. Das Verfahren von 15 kann in einem Speichersystem verwendet werden, das temporäre Daten separat speichert (z. B. wie in 14 dargestellt). Ein nicht ordnungsgemäßes Herunterfahren wird erkannt 1500 (z. B. durch Prüfen auf ein Flag, wenn Strom zum ersten Mal empfangen wird). Steuerdaten werden aus dem nichtflüchtigen Speicher 1502 gelesen und offene Blöcke werden nach Daten durchsucht, die nicht in den Steuerdaten aus dem nichtflüchtigen Speicher widergespiegelt sind, während temporäre Daten 1504 weggelassen werden (z. B. Daten in einem offenen temporären Block). Steuerdaten werden in einem flüchtigen Speicher (z. B. dem lokalen Speicher 106) unter Verwendung der Scanergebnisse 1506 wieder aufgebaut. Das Abtasten und Wiederaufbauen kann durch Steuerdaten-Wiederaufbauschaltungen wie Steuerdaten-Wiederaufbauschaltungen 616 durchgeführt werden (die als Mittel zum Rückgewinnen nach einem nicht ordnungsgemäßen Herunterfahren durch Scannen offener Blöcke der Vielzahl von nichtflüchtigen Speicherzellen betrachtet werden können, wobei in den offenen Blöcken gespeicherte temporäre Daten weggelassen werden, um entsprechende Steuerdaten für die Vielzahl von nichtflüchtigen Speicherzellen wiederherzustellen, wobei den temporären Daten zugeordnete Steuerdaten weggelassen werden). Dann benachrichtigt das Speichersystem den Host, dass es für Lesebefehle bereit ist 1508. Da der temporäre Block nicht gescannt wird und die entsprechenden Steuerdaten nicht wieder aufgebaut werden, können diese Schritte möglicherweise schneller ausgeführt werden, als wenn die temporären Daten nicht auf diese Weise getrennt wurden.
  • In einigen Fällen kann die Zeit zum Wiederaufbauen verlorener Steuerdaten durch Scannen offener Blöcke und Wiederaufbauen der entsprechenden Steuerdaten in einem flüchtigen Speicher (d. h. die Schritte 1504 und 1506 von 15) aufgezeichnet werden. Die aufgezeichnete Zeit oder Zeiten können mit einer Zeitgrenze für den Wiederaufbau verglichen werden (z. B. eine Zeit, die von einem Host eingestellt wird). Die Frequenz des Kopierens der Steuerdaten aus dem flüchtigen Speicher in den nichtflüchtigen Speicher kann gemäß der Differenz zwischen der aufgezeichneten Wiederaufbauzeit und der Zeitgrenze eingestellt werden. Wenn zum Beispiel die Wiederaufbauzeit erheblich unter der Grenze liegt, kann die Frequenz verringert werden. Wenn die Wiederaufbauzeit in der Nähe der Grenze liegt oder die Grenze überschreitet, kann die Frequenz erhöht werden, um ein schnelleres Wiederaufbauen zu gewährleisten. Somit kann sich das Speichersystem dynamisch anpassen, um sicherzustellen, dass das Kopieren nicht unnötig ausgeführt wird, während die Zeit zum Wiederaufbauen unter einer Grenze gehalten wird. Zum Beispiel kann die Steuerdaten-Kopierschaltung 612 eine Frequenz zum Kopieren von Steuerdaten bestimmen und Steuerdaten mit der Frequenz kopieren (die Kopierschaltung 612 kann als Mittel zum Bestimmen einer Frequenz zum Kopieren von Steuerdaten von einem flüchtigen Speicher in eine Vielzahl von nichtflüchtigen Speicherzellen basierend auf Mengen von sequentiellen und nicht sequentiellen Daten, die von einem Host und einer Zeitgrenze für die Wiederherstellung nach einem nicht ordnungsgemäßen Herunterfahren empfangen werden, betrachtet werden).
  • Ein Beispiel einer Vorrichtung schließt eine Vielzahl von nichtflüchtigen Speicherzellen und eine Steuerschaltlogik ein, wobei die Steuerschaltlogik konfiguriert ist, Schreibbefehle von einem Host zu empfangen, Schreibbefehle zu identifizieren, die temporären Daten zugeordnet sind, und Steuerdaten, die den temporären Daten zugeordnet sind, aus wieder aufgebauten Steuerdaten in einem Wiederherstellungsvorgang als Reaktion auf ein nicht ordnungsgemäßes Herunterfahren wegzulassen.
  • Die Steuerschaltlogik kann konfiguriert sein, Schreibbefehle, die temporären Daten zugeordnet sind, gemäß Indikatoren zu identifizieren, die mit den Schreibbefehlen von dem Host bereitgestellt werden. Die Steuerschaltlogik kann konfiguriert sein, die temporären Daten in einem oder mehreren dedizierten Blöcken der Vielzahl von nichtflüchtigen Speicherzellen zu speichern, die für die Speicherung der temporären Daten dediziert sind. Die Steuerschaltlogik kann konfiguriert sein, Steuerdaten in einem flüchtigen Speicher wieder aufzubauen, indem offene Blöcke der Vielzahl von nichtflüchtigen Speicherzellen gescannt werden, wobei der eine oder die mehreren dedizierten Blöcke weggelassen werden. Die temporären Daten können eines oder mehrere von folgenden einschließen: Seiten- oder Austauschdateidaten, Browser-Cache-Dateien und von der Anwendung erstellte temporäre Dateien. Die Steuerschaltlogik kann ferner konfiguriert sein, mit den Schreibbefehlen empfangene sequentielle Daten und nicht sequentielle Daten zu identifizieren. Die Steuerschaltlogik kann konfiguriert sein, Steuerdaten von einem flüchtigen Speicher in die Vielzahl von nichtflüchtigen Speicherzellen bei einer Frequenz zu kopieren, die durch Mengen von sequentiellen Daten und nicht sequentiellen Daten bestimmt ist, die mit den Schreibbefehlen und einer Zeitgrenze für den Wiederherstellungsvorgang empfangen werden. Eine Zeitgrenze für den Wiederherstellungsvorgang kann vom Host ausgewählt werden, und die Steuerschaltlogik kann konfiguriert sein, Steuerdaten von einem flüchtigen Speicher in die Vielzahl von nichtflüchtigen Speicherzellen bei einer Frequenz zu kopieren, die durch die geschätzte Zeit zum Wiederaufbauen der Steuerdaten bestimmt wird, sodass eine maximale geschätzte Zeit zum Wiederaufbauen der Steuerdaten kleiner als die Zeitgrenze ist.
  • Ein Beispiel eines Verfahrens schließt ein: Überwachen von Host-Schreibbefehlen, die von einem Speichersystem empfangen werden; Aufzeichnen von Steuerdaten für die mit den Host-Schreibbefehlen empfangenen Daten in einem flüchtigen Speicher; Bestimmen einer Frequenz zum Kopieren der Steuerdaten von dem flüchtigen Speicher in einen nichtflüchtigen Speicher gemäß dem Überwachen der Host-Schreibbefehle; und Kopieren der Steuerdaten von dem flüchtigen Speicher in den nichtflüchtigen Speicher bei der Frequenz.
  • Das Überwachen von Host-Schreibbefehlen, die von dem Speichersystem empfangen werden, kann das Bestimmen einer Menge von sequentiellen Daten, die den Host-Schreibbefehlen zugeordnet sind, und einer Menge von nicht sequentiellen Daten, die den Host-Schreibbefehlen zugeordnet sind, einschließen. Das Bestimmen der Frequenz zum Kopieren der Steuerdaten kann das Anwenden entsprechender Gewichtungen auf die Menge sequentieller Daten und die Menge nicht sequentieller Daten gemäß der geschätzten Zeit zum Wiederaufbauen entsprechender Steuerdaten einschließen, wobei gewichtete Mengen sequentieller und nicht sequentieller Daten kombiniert werden, um eine Beziehung zwischen den Host-Schreibbefehlen und der geschätzten Zeit zum Wiederaufbauen der entsprechenden Steuerdaten zu erhalten. Das Bestimmen der Frequenz zum Kopieren der Steuerdaten kann ferner das Auswählen der Frequenz gemäß der Beziehung zwischen den Host-Schreibbefehlen und der geschätzten Zeit zum Wiederaufbauen entsprechender Steuerdaten einschließen, sodass die geschätzte maximale Zeit zum Wiederaufbauen entsprechender Steuerdaten, die bei der Frequenz kopiert werden, geringer als eine vorbestimmte zeitliche Begrenzung ist, die von einem Host ausgewählt wird. Das Verfahren kann ferner einschließen: nach dem Kopieren der Daten aus dem flüchtigen Speicher in den nichtflüchtigen Speicher, Verlieren von Strom und Verlieren von Steuerdaten, die im flüchtigen Speicher aufgezeichnet sind; Wiederherstellen von kopierten Daten aus dem nichtflüchtigen Speicher; Wiederaufbauen von verlorenen Steuerdaten durch Scannen offener Blöcke; und Anzeigen eines Bereitschaftszustands für einen Host nach dem Wiederaufbauen verlorener Steuerdaten. Die verlorenen Steuerdaten können aus Steuerdaten bestehen, die in einem Intervall zwischen Kopiervorgängen bei der Frequenz empfangen werden, sodass das Wiederaufbauen der verlorenen Steuerdaten weniger als eine vorbestimmte Zeitgrenze dauert. Das Verfahren kann einschließen: Aufzeichnen einer Wiederaufbauzeit zum Wiederaufbauen verlorener Steuerdaten durch Scannen offener Blöcke; Vergleichen der Wiederaufbauzeit mit der vorbestimmten Zeitgrenze; und Einstellen der Frequenz entsprechend einer Differenz zwischen der Wiederaufbauzeit und der vorbestimmten Zeitgrenze. Das Überwachen von Host-Schreibbefehlen kann das Identifizieren von temporären und nicht temporären Daten einschließen, die mit Host-Schreibbefehlen empfangen werden, und das Wiederaufbauen verlorener Steuerdaten durch Scannen offener Blöcke kann das Scannen eines oder mehrerer offener Blöcke, die für das Speichern temporärer Daten dediziert sind, weglassen. Das Anzeigen des Bereitschaftszustands für den Host kann erfolgen, ohne den einen oder die mehreren offenen Blöcke zu scannen, die für das Speichern von temporären Daten dediziert sind.
  • Ein Beispiel für ein Speichersystem schließt eine Vielzahl von nichtflüchtigen Speicherzellen und Mittel zum Rückgewinnen von einem nicht ordnungsgemäßen Herunterfahren durch Scannen offener Blöcke der Vielzahl von nichtflüchtigen Speicherzellen ein, wobei in den offenen Blöcken gespeicherte temporäre Daten weggelassen werden, um entsprechende Steuerdaten für die Vielzahl von nichtflüchtigen Speicherzellen wieder aufzubauen, wobei den temporären Daten zugeordnete Steuerdaten weggelassen werden.
  • Das Speichersystem kann ferner Folgendes einschließen: Mittel zum Identifizieren von temporären Daten, die mit einem Host-Schreibbefehl empfangen werden, und zum Speichern der temporären Daten in einem dedizierten Block der Vielzahl von nichtflüchtigen Speicherzellen, die zum Speichern von temporären Daten dediziert sind. Das Speichersystem kann ferner einschließen: Mittel zum Bestimmen einer Frequenz zum Kopieren von Steuerdaten aus einem flüchtigen Speicher in die Vielzahl von nichtflüchtigen Speicherzellen basierend auf Mengen von sequentiellen und nicht sequentiellen Daten, die von einem Host und von einem Zeitlimit zur Wiederherstellung nach einem nicht ordnungsgemäßen Herunterfahren empfangen werden.
  • Für die Zwecke dieses Dokuments kann eine Bezugnahme in der Beschreibung auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „eine andere Ausführungsform“ verwendet werden, um verschiedene Ausführungsformen oder dieselbe Ausführungsform zu beschreiben.
  • Für die Zwecke dieses Dokuments kann eine Verbindung eine direkte Verbindung oder eine indirekte Verbindung sein (z. B. über einen oder mehrere andere Teile). In einigen Fällen, wenn ein Element als mit einem anderen Element verbunden oder gekoppelt bezeichnet wird, kann das Element direkt mit dem anderen Element verbunden sein oder indirekt über zwischenliegende Elemente mit dem anderen Element verbunden sein. Wenn ein Element als direkt mit einem anderen Element verbunden bezeichnet wird, gibt es keine Zwischenelemente zwischen dem Element und dem anderen Element. Zwei Vorrichtungen sind „in Kommunikation“, wenn sie direkt oder indirekt miteinander verbunden sind, sodass sie elektronische Signale untereinander übertragen zu können.
  • Für die Zwecke dieses Dokumentes kann der Begriff „basierend auf“ als „zumindest teilweise basierend auf“ gelesen werden.
  • Für die Zwecke dieses Dokuments impliziert ohne zusätzlichen Kontext die Verwendung numerischer Ausdrücke, wie ein „erstes“ Objekt, ein „zweites“ Objekt und ein „drittes“ Objekt möglicherweise keine Sortierung von Objekten, sondern kann stattdessen zu Identifikationszwecken verwendet werden, um verschiedene Objekte zu identifizieren.
  • Für die Zwecke dieses Dokuments kann sich der Ausdruck „Satz“ von Objekten auf einen „Satz“ von einem oder mehreren der Objekte beziehen.
  • Die vorhergehende detaillierte Beschreibung wurde zu Zwecken der Veranschaulichung und Beschreibung vorgelegt. Sie soll nicht erschöpfend sein oder die genaue offenbarte Form beschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Lehre möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der vorgeschlagenen Technologie und ihre praktische Anwendung am besten zu erläutern und damit anderen Fachleuten die Möglichkeit zu geben, sie in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen, die für die jeweilige vorgesehene Verwendung geeignet sind, am besten zu nutzen. Es ist beabsichtigt, dass der Schutzumfang durch die hier beigefügten Ansprüche definiert wird.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 9721662 [0017]
    • US 9082502 [0018]

Claims (20)

  1. Vorrichtung aufweisend: eine Vielzahl von nichtflüchtigen Speicherzellen; und eine Steuerschaltlogik, die mit der Vielzahl von nichtflüchtigen Speicherzellen verbunden ist, wobei die Steuerschaltlogik konfiguriert ist, Schreibbefehle von einem Host zu empfangen, Schreibbefehle zu identifizieren, die temporären Daten zugeordnet sind, und Steuerdaten, die den temporären Daten zugeordnet sind, aus wieder aufgebauten Steuerdaten in einem Wiederherstellungsvorgang als Reaktion auf ein nicht ordnungsgemäßes Herunterfahren wegzulassen.
  2. Vorrichtung nach Anspruch 1, wobei die Steuerschaltlogik konfiguriert ist, Schreibbefehle, die temporären Daten zugeordnet sind, gemäß Indikatoren zu identifizieren, die mit den Schreibbefehlen von dem Host bereitgestellt werden.
  3. Vorrichtung nach Anspruch 1, wobei die Steuerschaltlogik konfiguriert ist, die temporären Daten in einem oder mehreren dedizierten Blöcken der Vielzahl von nichtflüchtigen Speicherzellen zu speichern, die für die Speicherung der temporären Daten dediziert sind.
  4. Vorrichtung nach Anspruch 3, wobei die Steuerschaltlogik konfiguriert ist, Steuerdaten in einem flüchtigen Speicher wiederherzustellen, indem offene Blöcke der Vielzahl von nichtflüchtigen Speicherzellen gescannt werden, wobei der eine oder die mehreren dedizierten Blöcke weggelassen werden.
  5. Vorrichtung nach Anspruch 1, wobei die temporären Daten eines oder mehrere der folgenden Elemente einschließen: Seiten- oder Auslagerungsdatei-Daten, Browser-Cache-Dateien und von einer Anwendung erstellte temporäre Dateien.
  6. Vorrichtung nach Anspruch 1, wobei die Steuerschaltlogik ferner konfiguriert ist, mit den Schreibbefehlen empfangene sequentielle Daten und nicht sequentielle Daten zu identifizieren.
  7. Vorrichtung nach Anspruch 6, wobei die Steuerschaltlogik konfiguriert ist, Steuerdaten von einem flüchtigen Speicher in die Vielzahl von nichtflüchtigen Speicherzellen bei einer Frequenz zu kopieren, die durch Mengen von sequentiellen Daten und nicht sequentiellen Daten bestimmt ist, die mit den Schreibbefehlen und einer Zeitgrenze für den Wiederherstellungsvorgang empfangen werden.
  8. Vorrichtung nach Anspruch 1, wobei eine Zeitgrenze für den Wiederherstellungsvorgang vom Host ausgewählt wird und die Steuerschaltlogik konfiguriert ist, Steuerdaten von einem flüchtigen Speicher in die Vielzahl von nichtflüchtigen Speicherzellen bei einer Frequenz zu kopieren, die durch die geschätzte Zeit zum Wiederherstellen der Steuerdaten bestimmt wird, sodass eine maximale geschätzte Zeit zum Wiederherstellen der Steuerdaten kleiner als die Zeitgrenze ist.
  9. Verfahren, aufweisend: Überwachen von Host-Schreibbefehlen, die von einem Speichersystem empfangen werden; Aufzeichnen von Steuerdaten für die mit den Host-Schreibbefehlen empfangenen Daten in einem flüchtigen Speicher; Bestimmen einer Frequenz zum Kopieren der Steuerdaten von dem flüchtigen Speicher in einen nichtflüchtigen Speicher gemäß dem Überwachen der Host-Schreibbefehle; und Kopieren der Steuerdaten von dem flüchtigen Speicher in den nichtflüchtigen Speicher bei der Frequenz.
  10. Verfahren nach Anspruch 9, wobei das Überwachen von Host-Schreibbefehlen, die von dem Speichersystem empfangen werden, das Bestimmen einer Menge von sequentiellen Daten, die den Host-Schreibbefehlen zugeordnet sind, und einer Menge von nicht sequentiellen Daten, die den Host-Schreibbefehlen zugeordnet sind, einschließt.
  11. Verfahren nach Anspruch 10, wobei das Bestimmen der Frequenz zum Kopieren der Steuerdaten das Anwenden entsprechender Gewichtungen auf die Menge sequentieller Daten und die Menge nicht sequentieller Daten gemäß der geschätzten Zeit zum Wiederherstellen entsprechender Steuerdaten einschließt, wobei gewichtete Mengen sequentieller und nicht sequentieller Daten kombiniert werden, um eine Beziehung zwischen den Host-Schreibbefehlen und der geschätzten Zeit zum Wiederherstellen der entsprechenden Steuerdaten zu erhalten.
  12. Verfahren nach Anspruch 11, wobei das Bestimmen der Frequenz zum Kopieren der Steuerdaten ferner das Auswählen der Frequenz gemäß der Beziehung zwischen den Host-Schreibbefehlen und der geschätzten Zeit zum Wiederaufbauen entsprechender Steuerdaten einschließt, sodass die geschätzte maximale Zeit zum Wiederaufbauen entsprechender Steuerdaten, die bei der Frequenz kopiert werden, geringer als eine vorbestimmte zeitliche Begrenzung ist, die von einem Host ausgewählt wird.
  13. Verfahren nach Anspruch 9, ferner aufweisend: nach dem Kopieren der Daten aus dem flüchtigen Speicher in den nichtflüchtigen Speicher, Verlieren von Strom und Verlieren von Steuerdaten, die im flüchtigen Speicher aufgezeichnet sind; Wiederherstellen von kopierten Daten aus dem nichtflüchtigen Speicher; Wiederaufbauen von verlorenen Steuerdaten durch Scannen offener Blöcke; und Anzeigen eines Bereitschaftszustands für einen Host nach dem Wiederaufbauen verlorener Steuerdaten.
  14. Verfahren nach Anspruch 13, wobei die verlorenen Steuerdaten aus Steuerdaten bestehen, die in einem Intervall zwischen Kopiervorgängen bei der Frequenz empfangen werden, sodass das Wiederaufbauen der verlorenen Steuerdaten weniger als eine vorbestimmte Zeitgrenze dauert.
  15. Verfahren nach Anspruch 14, ferner aufweisend: Aufzeichnen einer Wiederaufbauzeit zum Wiederaufbauen verlorener Steuerdaten durch Scannen offener Blöcke; Vergleichen der Wiederaufbauzeit mit der vorbestimmten Zeitgrenze; und Einstellen der Frequenz entsprechend einer Differenz zwischen der Wiederaufbauzeit und der vorbestimmten Zeitgrenze.
  16. Verfahren nach Anspruch 13, wobei das Überwachen von Host-Schreibbefehlen das Identifizieren von temporären und nicht temporären Daten einschließt, die mit Host-Schreibbefehlen empfangen werden, und wobei das Wiederaufbauen verlorener Steuerdaten durch Scannen offener Blöcke das Scannen eines oder mehrerer offener Blöcke, die für das Speichern temporärer Daten dediziert sind, weglässt.
  17. Verfahren nach Anspruch 16, wobei das Anzeigen des Bereitschaftszustands für den Host erfolgt, ohne den einen oder die mehreren offenen Blöcke zu scannen, die für das Speichern von temporären Daten dediziert sind.
  18. Speichersystem, aufweisend: eine Vielzahl von nichtflüchtigen Speicherzellen; und Mittel zum Rückgewinnen nach einem nicht ordnungsgemäßen Herunterfahren durch Scannen offener Blöcke der Vielzahl von nichtflüchtigen Speicherzellen, wobei in den offenen Blöcken gespeicherte temporäre Daten weggelassen werden, um entsprechende Steuerdaten für die Vielzahl von nichtflüchtigen Speicherzellen wiederherzustellen, wobei den temporären Daten zugeordnete Steuerdaten weggelassen werden.
  19. Speichersystem nach Anspruch 18, ferner aufweisend: Mittel zum Identifizieren von temporären Daten, die mit einem Host-Schreibbefehl empfangen werden, und zum Speichern der temporären Daten in einem dedizierten Block der Vielzahl von nichtflüchtigen Speicherzellen, die zum Speichern von temporären Daten dediziert sind.
  20. Speichersystem nach Anspruch 18, ferner aufweisend: Mittel zum Bestimmen einer Frequenz zum Kopieren von Steuerdaten aus einem flüchtigen Speicher in die Vielzahl von nichtflüchtigen Speicherzellen basierend auf Mengen von sequentiellen und nicht sequentiellen Daten, die von einem Host und von einem Zeitlimit zur Wiederherstellung nach einem nicht ordnungsgemäßen Herunterfahren empfangen werden.
DE102019134294.5A 2019-01-16 2019-12-13 Nichtflüchtiges speichersystem mit schneller wiederherstellung nach nicht ordnungsgemässem herunterfahren Pending DE102019134294A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/249,479 2019-01-16
US16/249,479 US11086737B2 (en) 2019-01-16 2019-01-16 Non-volatile storage system with rapid recovery from ungraceful shutdown

Publications (1)

Publication Number Publication Date
DE102019134294A1 true DE102019134294A1 (de) 2020-07-16

Family

ID=71132223

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019134294.5A Pending DE102019134294A1 (de) 2019-01-16 2019-12-13 Nichtflüchtiges speichersystem mit schneller wiederherstellung nach nicht ordnungsgemässem herunterfahren

Country Status (4)

Country Link
US (1) US11086737B2 (de)
KR (1) KR102315300B1 (de)
CN (1) CN111443866B (de)
DE (1) DE102019134294A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11372754B2 (en) 2020-06-12 2022-06-28 Western Digital Technologies, Inc. Storage system and method for enabling a software-defined dynamic storage response
US11366601B2 (en) * 2020-06-22 2022-06-21 EMC IP Holding Company LLC Regulating storage device rebuild rate in a storage system
US20220334929A1 (en) * 2021-04-14 2022-10-20 Pure Storage, Inc. Ensuring timely restoration of an application
US11635900B2 (en) * 2021-08-27 2023-04-25 Micron Technology, Inc. Memory sub-system signature generation
US11797445B2 (en) 2021-12-06 2023-10-24 Western Digital Technologies, Inc. Data storage device and method for preventing data loss during an ungraceful shutdown
CN117687845A (zh) * 2024-02-04 2024-03-12 成都佰维存储科技有限公司 上电恢复方法、装置、可读存储介质及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9082502B2 (en) 2013-10-10 2015-07-14 Sandisk Technologies Inc. Bit line and compare voltage modulation for sensing nonvolatile storage elements
US9721662B1 (en) 2016-01-13 2017-08-01 Sandisk Technologies Llc Non-volatile memory with efficient programming

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101495795B1 (ko) 2008-06-13 2015-02-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US7941692B2 (en) * 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
US8074014B2 (en) * 2008-03-31 2011-12-06 Microsoft Corporation Storage systems using write off-loading
US9547589B2 (en) * 2008-06-18 2017-01-17 Super Talent Technology, Corp. Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
US8392479B1 (en) * 2009-09-14 2013-03-05 Symantec Corporation Method and apparatus for optimizing storage space allocation for computer data
US8886870B2 (en) * 2010-05-25 2014-11-11 Marvell World Trade Ltd. Memory access table saving and restoring system and methods
JP4829370B1 (ja) * 2010-07-09 2011-12-07 株式会社東芝 メモリ制御装置、メモリ装置および停止制御方法
WO2012129191A2 (en) * 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US20140143476A1 (en) * 2012-11-16 2014-05-22 Rotem Sela Usage of cache and write transaction information in a storage device
US9170938B1 (en) * 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
US9645769B2 (en) * 2014-10-24 2017-05-09 Western Digital Technologies, Inc. Performance acceleration during shutdown of a data storage device
US10007433B2 (en) 2015-01-21 2018-06-26 Sandisk Technologies Llc Systems and methods for performing adaptive host memory buffer caching of transition layer tables
US9977623B2 (en) 2015-10-15 2018-05-22 Sandisk Technologies Llc Detection of a sequential command stream
US20180011714A1 (en) * 2016-07-08 2018-01-11 Super Micro Computer, Inc. Graceful shutdown with asynchronous dram refresh of non-volatile dual in-line memory module
US9817593B1 (en) * 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US10223272B2 (en) * 2017-04-25 2019-03-05 Seagate Technology Llc Latency sensitive metadata object persistence operation for storage device
KR102259256B1 (ko) * 2017-05-16 2021-06-02 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10013194B1 (en) * 2017-06-02 2018-07-03 Western Digital Technologies, Inc. Handling thermal shutdown for memory devices
DE102017124188A1 (de) * 2017-10-17 2019-04-18 Hyperstone Gmbh Verfahren und Vorrichtung zum Steuern eines Speichersystems zum Zwecke eines sicheren Herunterfahrens eines flüchtigen Speichers eines Hosts
US10838629B2 (en) * 2018-09-24 2020-11-17 Western Digital Technologies, Inc. Solid state device with fast boot after ungraceful shutdown
US10895991B2 (en) * 2018-11-14 2021-01-19 Western Digital Technologies, Inc. Solid state device with improved sustained data writing speed

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9082502B2 (en) 2013-10-10 2015-07-14 Sandisk Technologies Inc. Bit line and compare voltage modulation for sensing nonvolatile storage elements
US9721662B1 (en) 2016-01-13 2017-08-01 Sandisk Technologies Llc Non-volatile memory with efficient programming

Also Published As

Publication number Publication date
US20200226038A1 (en) 2020-07-16
CN111443866B (zh) 2023-06-27
US11086737B2 (en) 2021-08-10
KR102315300B1 (ko) 2021-10-19
KR20200089211A (ko) 2020-07-24
CN111443866A (zh) 2020-07-24

Similar Documents

Publication Publication Date Title
DE102019134294A1 (de) Nichtflüchtiges speichersystem mit schneller wiederherstellung nach nicht ordnungsgemässem herunterfahren
DE112018004322T5 (de) Nichtflüchtiges speichersystem mit hostseitiger befehlseinspeisung
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE102018105750A1 (de) System und Verfahren für Hybrid-Push-Pull-Datenmanagement in einem nichtflüchtigen Datenspeicher
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE102017104448A1 (de) Datenspeichervorrichtung
DE112019000139T5 (de) Nichtflüchtiges speichersystem mit dynamischer zuweisung von anwendungen zu einem speicher basierend auf nutzungsüberwachung
DE112017005890T5 (de) Abrufen von Datenpufferzeigern für direkten Speicherzugriff
DE112017005637T5 (de) Verfahren und System zur Schreibverstärkungsanalyse
DE112019000147T5 (de) Partielle rücksetzung einer speichersteuerung
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102016009807A1 (de) Korrelieren von physikalischen seitenadressen für soft-decision-dekodierung
DE102018130164A1 (de) Speicherungsvorrichtung mit programmierten zellenspeicherungsdichtenmodi, die eine funktion einer speicherungsvorrichtungskapazitätsnutzung sind
DE102021106911A1 (de) Vertikales abbilden und berechnen für tiefe neuronale netze in einem nichtflüchtigen speicher
DE102019124668A1 (de) Transistorschwellenspannungshaltung in 3d-speicher
DE102016010717A1 (de) Verschleißmanagement für Flash-Speicher-Systeme
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE112017004916T5 (de) Verwendung von Kompression zur Kapazitätserhöhung eines speicherseitigen Caches mit grosser Blockgrösse
DE102018109929A1 (de) NAND-Flash-Speichervorrichtung mit NAND-Puffer

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE