DE102017128952A1 - Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen - Google Patents

Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen Download PDF

Info

Publication number
DE102017128952A1
DE102017128952A1 DE102017128952.6A DE102017128952A DE102017128952A1 DE 102017128952 A1 DE102017128952 A1 DE 102017128952A1 DE 102017128952 A DE102017128952 A DE 102017128952A DE 102017128952 A1 DE102017128952 A1 DE 102017128952A1
Authority
DE
Germany
Prior art keywords
memory
operations
update
control
data
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.)
Granted
Application number
DE102017128952.6A
Other languages
English (en)
Other versions
DE102017128952B4 (de
Inventor
Karin Inbar
Michael Ionin
Einat Zevulun
Einat Lev
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
Priority claimed from US15/440,505 external-priority patent/US20180239532A1/en
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102017128952A1 publication Critical patent/DE102017128952A1/de
Application granted granted Critical
Publication of DE102017128952B4 publication Critical patent/DE102017128952B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • 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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Abstract

Eine Vorrichtung enthält einen nichtflüchtigen Speicher und eine mit dem nichtflüchtigen Speicher gekoppelte Steuereinrichtung. Die Steuereinrichtung enthält einen flüchtigen Speicher, der ausgelegt ist, um eine erste Kopie einer dem nichtflüchtigen Speicher zugehörigen Steuerungstabelle zu speichern. Die Steuereinrichtung ist ausgelegt, um auf eine erste Anforderung hin eine erste Aktualisierung eines Teiles der ersten Kopie auszuführen, um eine zweite Aktualisierung einer zweiten Kopie der Steuerungstabelle in dem nichtflüchtigen Speicher auf der Grundlage der ersten Aktualisierung initiieren und um eine zweite Anforderung einen Zugriff auf den nichtflüchtigen Speicher gleichzeitig mit der zweiten Aktualisierung auszuführen. Die Steuereinrichtung ist ausgelegt, um nichtblockierende Steuerungs-Sync-Operationen und nichtblockierende Konsolidierungsoperationen asynchron auszuführen, wobei nichtblockierende Konsolidierungsoperationen atomische Operationen sind, die ein gleichzeitiges Entleeren und Verdichten einer Aktualisierungsschicht zu einer zwischengespeicherten Adressenumsetzungstabelle in dem flüchtigen Speicher enthalten.

Description

  • Querbezug auf verwandte Anmeldung(en)
  • Diese Anmeldung beansprucht den Vorteil der US-Patentanmeldung Nr. 15/440.505 , eingereicht am 23. Februar 2017, und stellt eine Teilfortsetzung dieser Anmeldung dar, deren gesamte Inhalte hier durch Bezugnahme einbezogen werden.
  • Gebiet der Offenbarung
  • Diese Offenbarung bezieht sich generell auf elektronische Vorrichtungen und insbesondere auf Datenspeichervorrichtungen.
  • Hintergrund
  • Datenspeichervorrichtungen ermöglichen Anwendern, Daten zu speichern und wieder zu gewinnen. Beispiele von Datenspeichervorrichtungen schließen flüchtige Datenspeichervorrichtungen und nichtflüchtige Datenspeichervorrichtungen ein. Eine nichtflüchtige Speichervorrichtung behält Daten nach einem Stromversorgungs-Herunterfahrereignis, und eine flüchtige Speichervorrichtung verliert Daten nach einem Stromversorgungs-Herunterfahrereignis .
  • Eine Datenspeichervorrichtung kann Daten zugehörige Steuerinformationen speichern. Eine Datenspeichervorrichtung kann beispielsweise eine Verwaltungs- bzw. Managementtabelle aufrechterhalten, die eine Abbildung von logischen Adressen auf physikalische Adressen wiedergibt. Bei einigen Realisierungen ist die Verwaltungstabelle in einem flüchtigen Speicher einer Steuereinrichtung einer Datenspeichervorrichtung aufbewahrt. Die Datenspeichervorrichtung kann die Verwaltungstabelle in dem flüchtigen Speicher aktualisieren und periodisch die Verwaltungstabelle an einen nichtflüchtigen Speicher der Datenspeichervorrichtung senden (beispielsweise dazu, durch die Verwaltungstabelle im nichtflüchtigen Speicher unter Heranziehung einer Steuerungs-Aktualisierungsoperation zu „sichern“).
  • Eine Datenspeichervorrichtung kann Schreiboperationen in einen nichtflüchtigen Speicher während einer Steuerungs-Aktualisierungsoperation „blockieren“, um eine Kohärenz zwischen Steuerungstabellen und Hostdaten zu erzeugen. Die Datenspeichervorrichtung kann beispielsweise solange warten, bis eine oder mehrere Schreiboperationen (beispielsweise während einer System-Stillstands- bzw. Leerlaufzeit) abgeschlossen ist bzw. sind, um die Steuerungsinformation zu aktualisieren. Während des Aktualisierens der Steuerungsinformation kann die Datenspeichervorrichtung eine nachfolgende Anforderung für einen Schreibzugriff auf den nichtflüchtigen Speicher solange „blockieren“ (z.B. verzögern), bis die Aktualisierung der Steuerungsinformation abgeschlossen ist. Ein „Blockieren“ stellt eine oder mehrere Schreiboperationen dar, die eine Latenz in einer Datenspeichervorrichtung hervorrufen kann bzw. können.
  • Figurenliste
    • 1 ist ein Diagramm eines ersten veranschaulichenden Beispiels eines Systems, welches eine Datenspeichervorrichtung enthält, die konfiguriert ist, um nichtblockierende Steuerungs-Synchronisieroperationen auszuführen.
    • 2 veranschaulicht ein verdeutlichendes Beispiel eines Programmierungsprozesses, der in der Datenspeichervorrichtung von 1 ausgeführt werden kann.
    • 3 veranschaulicht ein weiteres verdeutlichendes Beispiel eines Programmierungsprozesses, der in der Datenspeichervorrichtung von 1 ausgeführt werden kann.
    • 4 ist ein Diagramm eines zweiten erläuternden Beispiels eines Systems, welches eine Datenspeichervorrichtung enthält, die konfiguriert ist, um nichtblockierende Steuerungs-Synchronisieroperationen auszuführen.
    • 5 veranschaulicht einen Satz von Operationen, die durch die Datenspeichervorrichtung von 4 ausgeführt werden können.
    • 6 ist ein Diagramm, welches gewisse erläuternde Aspekte eines Beispiels der Datenspeichervorrichtung von 4 veranschaulicht.
    • 7 ist ein Diagramm einer Vorrichtung, die in der Datenspeichervorrichtung von 4 enthalten sein kann.
    • 8 ist ein Diagramm von erläuternden Aspekten der Vorrichtung von 7.
    • 9 ist ein Diagramm, welches zusätzliche erläuternde Aspekte eines Beispiels der Datenspeichervorrichtung von 4 veranschaulicht.
    • 10 ist ein Diagramm, welches gewisse Operationen veranschaulicht, die durch die Datenspeichervorrichtung von 4 ausgeführt werden können.
    • 11 ist ein Flussdiagramm eines besonderen veranschaulichenden Beispiels eines Verfahrens des Betriebs der Datenspeichervorrichtung von 1.
    • 12 ist ein Flussdiagramm eines besonderen veranschaulichenden Beispiels eines Verfahrens des Betriebs der Datenspeichervorrichtung von 4.
    • 13 ist ein Diagramm eines veranschaulichenden Beispiels eines Systems, welches eine Datenspeichervorrichtung enthält, die konfiguriert ist, um nichtblockierende Konsolidierungsoperationen auszuführen.
    • 14 ist ein Blockdiagramm, welches gewisse Beispiele von Operationen veranschaulicht, die in der Datenspeichervorrichtung von 13 ausgeführt werden können.
    • 15 ist ein Leiterdiagramm, welches gewisse Beispiele von Operationen veranschaulicht, die in der Datenspeichervorrichtung von 13 ausgeführt werden können.
    • 16 ist ein Diagramm, welches gewisse Beispiele von Operationen veranschaulicht, die in der Datenspeichervorrichtung von 13 ausgeführt werden können.
    • 17 ist ein Diagramm eines besonderen veranschaulichenden Beispiels eines Verfahrens des Betriebs der Datenspeichervorrichtung von 13.
  • Detaillierte Beschreibung
  • Eine Datenspeichervorrichtung gemäß gewissen Aspekten der Offenbarung ist konfiguriert, um eine nichtblockierende Konsolidierungsoperation auszuführen, die Änderungen an einer Erstkopie einer in einem flüchtigen Speicher gespeicherten Steuerungsinformation zu einer zweiten Kopie der in einem nichtflüchtigen Speicher gespeicherten Steuerungsinformation ausbreitet (beispielsweise vermischt oder konsolidiert). Anstelle von „Blockierungs“-Operationen während eines Konsolidierungsprozesses, in der die Steuerungsinformation aktualisiert, kann die Datenspeichervorrichtung beispielsweise die Operationen gleichzeitig ausführen, wie durch gleichzeitiges Ausführen einer Schreiboperation und eine Konsolidierungsoperation.
  • In einigen Fällen kann ein undankbares Abschaltereignis (UGSD) nach Ausführen der Schreiboperationen und vor dem Aktualisieren der Steuerungsinformation durch eine Steuerungs-Synchronisieroperation auftreten. Ein Spannungs- bzw. Stromversorgungsausfall beispielsweise ein UGSD-Ereignis hervorrufen. In diesem Fall kann die Datenspeichervorrichtung eine Speicherabtastung ausführen, um Ergebnisse der Schreiboperation zu identifizieren (um beispielsweise, da die zweite Kopie der Steuerungsinformation nicht aktualisiert worden ist, die Ergebnisse der Schreiboperation wiederzugeben, und die erste Kopie der Steuerungsinformation aus dem flüchtigen Speicher während des UGSD-Ereignisses verloren sein kann). Die Datenspeichervorrichtung kann beispielsweise Metadaten verwenden (beispielsweise eine Header-Information) der in dem nichtflüchtigen Speicher gespeicherten Daten, um Ergebnisse der Schreiboperation zu identifizieren, wie durch Identifizieren von Adressen, die seit einer vorherigen Steuerungs-Synchronisieroperation modifiziert sind. Die Datenspeichervorrichtung kann die Steuerungsinformation auf der Grundlage der Ergebnisse aktualisieren. Folglich kann eine Konsolidierungsoperation in einer nichtblockierenden Weise ohne ein Risiko eines Datenverlustes aufgrund eines UGSD-Ereignisses ausgeführt werden.
  • In der Beschreibung können gemeinsame oder ähnliche durch gemeinsame Bezugszeichen bezeichnet sein. Wie hier verwendet, kann „beispielhaft“ ein Beispiel, eine Realisierung bzw. Implementierung und/oder einen Aspekt angeben und sollte nicht als beschränkend oder als eine Bevorzugung oder eine bevorzugte Realisierung ausgelegt werden.
  • Bezugnehmend auf 1 ist ein besonders veranschaulichendes Beispiel eines Systems dargestellt, generell mit 100 bezeichnet. Das System 100 enthält eine Datenspeichervorrichtung 102 und eine Vorrichtung 180 (beispielsweise eine Host-Vorrichtung oder eine Zusatzvorrichtung). Die Datenspeichervorrichtung 102 enthält einen nichtflüchtigen Speicher 104 und eine Steuereinrichtung 130. Die Steuereinrichtung 130 ist mit dem nichtflüchtigen Speicher 104 gekoppelt.
  • Der nichtflüchtige Speicher 104 enthält eine nichtflüchtige Reihe bzw. Array von Speicherelementen, die in einen oder mehreren Speicherelementen enthalten sind, wie in einem ersten Speicherchip 106 und einem zweiten Speicherchip 108. Zur weiteren Veranschaulichung kann der nichtflüchtige Speicher 104 einen Flash-Speicher (beispielsweise einen NAND-Flashspeicher) oder einen resistiven bzw. Widerstandsspeicher, wie einen Widerstandspeicher mit wahlfreiem Zugriff (ReRAM) als veranschaulichende Beispiele enthalten. Der nichtflüchtige Speicher 104 kann eine dreidimensionale (3D) Speicherkonfiguration aufweisen. Wie hier verwendet, kann eine 3D-Speichervorrichtung eine Vielzahl von physikalischen Ebenen von Speicherelementen enthalten (anstelle einer einzigen physikalischen Speicherelementen enthalten, wie in einer planaren Speichervorrichtung). Als ein Beispiel kann der nichtflüchtige Speicher 104 eine 3D-Vertikal-Bitleitungs-(VBL)-Konfiguration aufweisen. Bei einer besonderen Realisierung weist der nichtflüchtige Speicher 104 eine 3D-Speicherarraykonfiguration auf, die in einer oder mehreren physikalischen Ebenen von Arrays von Speicherzellen monolithisch gebildet ist, welche einen aktiven Bereich aufweist, der oberhalb eines Siliziumsubstrats angeordnet ist. Alternativ kann der nichtflüchtige Speicher 104 eine andere Konfiguration aufweisen, wie eine zweidimensionale (2D)-Speicherkonfiguration oder eine nicht-monolithische 3D-Speicherkonfiguration (beispielsweise eine gestapelte Chip-3D-Speicherkonfiguration).
  • Der nichtflüchtige Speicher 104 enthält ein oder mehrere Regionen von Speicherelementen. Ein Beispiel einer Speicherregion ist ein Block, wie eine NAND-Flash-Löschgruppe von Speicherelementen oder eine Gruppe von widerstandsbasierten Speicherelementen in einer ReRAM-Implementierung. Ein weiteres Beispiel einer Speicherregion ist eine Wortleitung von Speicherelementen (beispielsweise einer Wortleitung von NAND-Speicherelementen oder eine Wortleitung von widerstandsbasierten Speicherelementen). Eine Speicherregion kann eine Einzelebenen-Zellen-(SLC)-Konfiguration, eine Multiebenen-Zellen-(MLC)-Konfiguration oder eine Tri-Ebenen-Zellen-(TLC)-Konfiguration als veranschaulichendes Beispiel aufweisen. Jedes Speicherelement des nichtflüchtigen Speichers 104 kann in einen Stand (z.B. einer Schwellwertspannung in einer Flash-Konfiguration oder einen Widerstandszustand einer Widerstands-Speicherkonfiguration programmierbar sein, der ein oder mehrere Werte angibt. Als Beispiel kann ein Speicherelement in einem veranschaulichenden TLC-System bzw. -Schema in einen Zustand programmiert werden, der drei Werte angibt. Als ein zusätzliches Beispiel kann ein Speicherelement in einem veranschaulichenden MLC-System bzw. -Schema in einen Zustand programmierbar sein, der zwei Werte angibt.
  • Die Steuereinrichtung 130 kann ein Speicher-Interface 132 zu dem nichtflüchtigen Speicher 104 und ferner ein Speicher-Interface 172 (beispielsweise ein Host-Interface) zu der Vorrichtung 180 enthalten. Die Speichereinrichtung 130 kann ferner eine Flash-Umsetzungsschicht bzw. Translationsschicht (FTL) 138, eine Steuerschaltung 140, eine Datenschlange 142, einen flüchtigen Speicher 144 und einen Stromversorgungsanschaltungs-Detektor 146 enthalten. Der flüchtige Speicher 144 kann einen Schreib-Lese-Speicher mit wahlfreiem Zugriff (RAM) als veranschaulichendes Beispiel enthalten.
  • Während des Betriebs kann die Steuereinrichtung 130 Daten 174 von der Vorrichtung 180 empfangen, wie in Verbindung mit einer Forderung für einen Schreibzugriff auf den nichtflüchtigen Speicher 104. Die Steuereinrichtung 130 kann auf der Grundlage der Daten 174 eine oder mehrere Operationen ausführen, um erste Daten 120 zu erzeugen, wie durch Codieren der Daten 174, um die ersten Daten 120 zu erzeugen. Bei einigen Implementierungen (beispielsweise bei einer Flashspeicherimplementierung) kann die FTL-Schicht 138 der Steuereinrichtung 130 konfiguriert sein, um eine Umsetzung von logischer Adresse zu physikalischer Adresse zur Umsetzung der den Daten 174 zugehörigen logischen Adressen in eine den ersten Daten 120 zugehörige physikalische Adresse auszuführen. Die Steuereinrichtung 130 kann konfiguriert sein, um die Daten 174 in der Datenschlange 142 zu speichern (z.B. zu puffern oder „in einer Schlange“) anzuordnen.
  • Das Speicher-Interface 132 ist ausgelegt, um die ersten Daten 120 zu dem nichtflüchtigen Speicher 104 zu senden. Die Steuereinrichtung 130 kann beispielsweise die ersten Daten 120 aus der Datenschlange 142 abholen und die ersten Daten 120 dem Speicher-Interface 132 bereitstellen, um zu dem nichtflüchtigen Speicher 104 gesendet zu werden. Der nichtflüchtige Speicher 104 kann die ersten Daten 120 in einer bestimmten bzw. besonderen Region des nichtflüchtigen Speichers 104 speichern (beispielsweise durch Schreiben der ersten Daten 120 in das erste Speicherchip 106, das zweite Speicherchip 108, in eines oder mehrere andere Speicherchips oder in eine Kombination daraus).
  • der nichtflüchtige Speicher 144 ist konfiguriert, um eine Steuerungsinformation 184 zu speichern. Zur Veranschaulichung kann die Steuerungsinformation 184 eine Abbildungstabelle 186 enthalten, und die Steuerungseinrichtung 130 kann die Abbildungstabelle 186 auf das Speichern der ersten Daten 120 in den nichtflüchtigen Speicher 104 hin aktualisieren, wie durch Aktualisieren der Abbildungstabelle 186, um anzugeben, dass der nichtflüchtige Speicher 104 die ersten Daten 120 speichert. Die Steuerschaltung 140 ist beispielsweise konfiguriert, um die Steuerungsinformation 184 zu aktualisieren, damit eine aktualisierte Steuerungsinformation 124 (beispielsweise eine aktualisierte Abbildungstabelle entsprechend einer aktualisierten Version der Abbildungstabelle 186) auf der Grundlage der Speicherung der ersten Daten 120 in dem nichtflüchtigen Speicher 104 erzeugt wird.
  • Die Steuerschaltung 140 kann konfiguriert sein, um eine Angabe 126 zu erzeugen und um die Angabe 126 in der aktualisierten Steuerungsinformation 124 einzubeziehen. Die Angabe 126 kann durch den nichtflüchtigen Speicher 104 gespeicherte Daten spezifizieren, die in dem nichtflüchtigen Speicher 104 „sicher“ geschrieben worden sind. Die Angabe 126 kann beispielsweise spezifizieren, dass die ersten Daten 120 (und andere Daten, die in dem nichtflüchtigen Speicher 104 vor den ersten Daten 120 geschrieben sind) „sicheren“ (oder zuverlässigen) Daten entsprechen. Die Angabe 126 kann die ersten Daten 120 unter Heranziehung einer den ersten Daten 120 zugehörigen logischen Adresse, einer den ersten Daten 120 zugehörigen physikalischen Adresse oder einer anderen Information oder eine Kombination daraus spezifizieren. Alternativ oder zusätzlich kann die Angabe 126 einen „sicheren Punkt“ (oder einen „Synchronisierpunkt bzw. Sync-Punkt“, wie einen Zeitstempel spezifizieren, wo bzw. zu dem in dem nichtflüchtigen Speicher 104 geschriebene Daten vor dem sicheren Punkt sicheren Daten entsprechen und wo bzw. zu dem in dem nichtflüchtigen Speicher 104 nach dem sicheren Punkt geschriebene Daten verletzliche Daten entsprechen.
  • Die Steuereinrichtung 130 kann die aktualisierte Steuerungsinformation 124 dem nichtflüchtigen Speicher 104 senden (z.B., um eine Kopie der aktualisierten Steuerungsinformation 124 „zu sichern“), um die aktualisierte Steuerungsinformation 124 „zu sichern“), um ein Wiederauffinden der aktualisierten Steuerungsinformation 124 zu ermöglichen (um beispielsweise eine Wiedergewinnung der aktualisierten Steuerungsinformation 124 nach einer Stromversorgungsperiode in der Datenspeichervorrichtung 102 zu ermöglichen). Die aktualisierte Steuerungsinformation 124 kann in Verbindung mit einer nichtblockierenden Steuerungs-Sync-(CS)-Operation (hier auch als Steuerungs-Aktualisierungsoperation oder als eine Steuerungs-Programmoperation bezeichnet) an dem nichtflüchtigen Speicher 104 gesandt werden.
  • Gemäß Aspekten der Offenbarung ist die Steuervorrichtung 130 so ausgelegt bzw. konfiguriert, dass die aktualisierte Steuerungsinformation 124 gleichzeitig mit anderen in dem nichtflüchtigen Speicher 104 zu speichernden Daten an dem nichtflüchtigen Speicher 104 zu senden (beispielsweise ohne „Blockieren“ anderer Zugriffe auf den nichtflüchtigen Speicher 104 und durch diesen ausgeführten Prozesse). Bei einem veranschaulichenden Beispiel ist das Speicherinterface 132 aufgelegt, um gleichzeitig zweite Daten 122 und die in dem nichtflüchtigen Speicher 104 zu speichernde aktualisierte Steuerungsinformation 124 zu senden. Die Datenschlange 142 kann ausgelegt sein, um die in den nichtflüchtigen Speicher 104 zu schreibenden zweiten Daten 122 zu speichern. Bei einem besonderen Beispiel kann die Steuereinrichtung 130 ausgelegt sein, um auf die zweiten Daten 122 aus der Datenschlange 142 und die aktualisierte Steuerungsinformation 124 aus dem nichtflüchtigen Speicher 144 zuzugreifen und um die zweiten Daten 122 und die aktualisierte Steuerungsinformation 124 dem Speicherinterface 132 gleichzeitig bereitzustellen. Bei einem veranschaulichenden Beispiel ist das Speicherinterface 132 ausgelegt, um gleichzeitig die zweiten Daten 122 an ein Chip von dem ersten Speicherchip 106 und dem zweiten Speicherchip 108 zu senden und um die aktualisierte Steuerungsinformation 124 an das andere Chip von dem ersten Speicherchip 106 und dem zweiten Speicherchip 108 zu senden.
  • Wie hier verwendet, kann sich ein „gleichzeitiges“ Senden der zweiten Daten 122 und der aktualisierten Steuerungsinformation 124 auf das Senden der zweiten Daten 122 und der aktualisierten Steuerungsinformation 124 unter Heranziehung zumindest eines gemeinsamen Taktzyklus, zumindest eines gemeinsamen Pakets oder einer anderen gemeinsamen Technik beziehen. Zur Veranschaulichung können die zweiten Daten 122 und die aktualisierte Steuerungsinformation 124 gleichzeitig gesendet werden, falls zumindest ein Teil der zweiten Daten 122 und zumindest ein Teil der aktualisierten Steuerungsinformation 124 während eines gemeinsamen Taktzyklus oder unter Heranziehung eines gemeinsamen Pakets gesendet werden. In einigen Fällen kann das Speicherinterface 132 einen Multikanalbus enthalten, der mit dem nichtflüchtigen Speicher 104 gekoppelt ist, und die zweiten Daten 122 und die aktualisierte Steuerungsinformation 124 können unter Heranziehung des Multikanalbusses an den nichtflüchtigen Speicher 104 gesendet werden.
  • Der nichtflüchtige Speicher 104 ist konfiguriert, um die zweiten Daten 122 und die aktualisierte Steuerungsinformation 124 in einer nichtblockierenden Weise zu speichern. Der nichtflüchtige Speicher 104 kann beispielsweise eine nichtblockierende CS-Operation ausführen, die die aktualisierte Steuerungsinformation 124 in den nichtflüchtigen Speicher 104 ohne ein „blockierendes“ Schreiben der zweiten Daten 122 schreibt.
  • Daten, die in den nichtflüchtigen Speicher 104 nach dem Schreiben der aktualisierten Steuerungsinformation 124 geschrieben sind, können verletzlichen Daten entsprechen. Zur Veranschaulichung kann das Speicherinterface 132 konfiguriert sein, um dritte Daten 123 in den nichtflüchtigen Speicher 104 nach Senden der aktualisierten Steuerungsinformation 124 zu senden. Die Angabe 126 kann spezifizieren, dass die dritten Daten 123 verletzlichen Daten entsprechen. Falls beispielsweise während oder nach dem Schreiben der aktualisierten Steuerungsinformation 124 in den nichtflüchtigen Speicher 104 und vor einer erneuten Aktualisierung der Steuerungsinformation 184 auf der Grundlage des Schreibens der dritten Daten 123 ein Stromversorgungs-Abschaltereignis auftritt, kann die Steuereinrichtung 130 unfähig sein zu bestimmen, ob die dritten Daten 123 erfolgreich programmiert worden sind (was beispielsweise zu „verlorenen“ Daten führt). Demgemäß können die dritten Daten 123 „verletzlichen“ Daten entsprechen.
  • In Abhängigkeit von der besonderen Realisierung bzw. Implementierung können Daten, die in den nichtflüchtigen Speicher 104 gleichzeitig mit dem Schreiben der aktualisierten Steuerungsinformation 124 geschrieben worden sind, „sicheren“ Daten oder „verletzlichen“ Daten entsprechen. Bei einem veranschaulichenden Beispiel ist die Steuerschaltung 140 konfiguriert, um auf die zweiten Daten 122 in der Datenschlange 142 während der Erzeugung der aktualisierten Steuerungsinformation 124 zuzugreifen. Bei diesem Beispiel kann die Steuerschaltung 140 konfiguriert sein, um zu bewirken, dass die Angabe 126 spezifiziert, dass die zweiten Daten sicheren Daten entsprechen (da die zweiten Daten 122 gleichzeitig mit der aktualisierten Steuerungsinformation 124 zu programmieren sind). Bei anderen Implementierungen können die zweiten Daten 122 verletzlichen Daten entsprechen.
  • Zur weiteren Veranschaulichung kann der Stromversorgungs-Anschalt-Detektor 146 ausgelegt sein, um ein Stromversorgungs-Einschaltereignis in der Datenspeichervorrichtung 102 zu detektieren, welches nach dem Schreiben der zweiten Daten 122 und der aktualisierten Steuerungsinformation 124 in dem nichtflüchtigen Speicher 104 auftritt. Die Steuereinrichtung 130 kann ausgelegt sein, um auf das Stromversorgungs-Einschaltereignis hin eine Abtastoperation unter Heranziehung der aktualisierten Steuerungsinformation 124 (beispielsweise unter Heranziehung der Angabe 126) auszuführen, um die dritten Daten 123 zu identifizieren.
  • Bei einem besonderen Beispiel einer implizierten Technik kann die Angabe 126 implizit spezifizieren, dass die dritten Daten 123 verletzlich sind. Die Angabe 126 kann beispielsweise angeben, dass die ersten Daten 120 in dem nichtflüchtigen Speicher 104 vor Erzeugen der aktualisierten Steuerungsinformation 124 gespeichert wurden und dass die Daten, die nach den ersten Daten 120 gespeichert sind, verletzlich sind. Die Steuereinrichtung 130 kann die ersten Daten 120 aus dem nichtflüchtigen Speicher 104 lesen, um einen den ersten Daten 120 zugehörigen besonderen Zeitstempel zu bestimmen, und sie kann den nichtflüchtigen Speicher 104 nach Daten abtasten (beispielsweise den dritten Daten 123), die Zeitstempel nach dem den ersten Daten 120 zugehörigen besonderen Zeitstempel angeben.
  • In Abhängigkeit der besonderen Implementierung kann die Datenspeichervorrichtung 102 eine oder mehrere Operationen auf das Detektieren von verletzlichen Daten hin, wie den zweiten Daten 122, ausführen. Als ein veranschaulichendes Beispiel kann die Datenspeichervorrichtung 102 der Vorrichtung 180 melden, dass die zweiten Daten 122 aufgrund eines Stromversorgungs-Abschaltereignisses in der Datenspeichervorrichtung 102 verletzlich sind.
  • Der Betrieb in der Datenspeichervorrichtung 102 kann mit einer oder mehreren Speicheroperationen fortgesetzt werden. Die Datenspeichervorrichtung 102 kann beispielsweise eine Schreiboperation ausführen, um vierte Daten in den nichtflüchtigen Speicher 104 zu schreiben. Die Datenspeichervorrichtung 102 kann die Steuerungsinformation 184 aktualisieren, um eine dritte Version der Steuerungsinformation 184 auf der Grundlage der Programmierung der vierten Daten zu erzeugen, und die Datenspeichervorrichtung 102 kann gleichzeitig die dritte Version der Steuerungsinformation 184 und in dem nichtflüchtigen Speicher 104 zu speichernde fünfte Daten senden. Die dritte Version der Steuerungsinformation 184 kann spezifizieren, dass die vierten Daten (oder die vierten Daten und die fünften Daten) sicheren Daten entsprechen.
  • Ein oder mehrere unter Bezugnahme auf 1 beschriebene Aspekte können die Leistungsfähigkeit in der Datenspeichervorrichtung 102 verbessern. So kann die Datenspeichervorrichtung 102 beispielsweise eine CS-Operation ohne „Blockieren“ von anderen Speicherzugriffen und Prozesse ausführen, die durch den nichtflüchtigen Speicher 104 während der nichtblockierenden CS-Operation ausgeführt werden, wie durch gleichzeitiges Schreiben der zweiten Daten 122 und der aktualisierten Steuerungsinformation 124 in den nichtflüchtigen Speicher 104. Infolgedessen kann der Durchsatz im Vergleich zu einer Vorrichtung verbessert werden bzw. sein, die Speicherzugriffsoperationen während des Speicherns von aktualisierten Steuerungsinformationen „blockiert“.
  • Bezugnehmend auf 2 ist ein besonderes veranschaulichendes Beispiel eines Programmierungsprozesses dargestellt und generell mit 200 bezeichnet. Der Programmierungsprozess 200 kann durch die Datenspeichervorrichtung 102 von 1 ausgeführt werden. Der Programmierungsprozess 200 kann beispielsweise unter Heranziehung des ersten Speicherchips 106 und des zweiten Speicherchips 108 von 1 ausgeführt werden. 2 veranschaulicht außerdem, dass der Programmierungsprozess 200 unter Heranziehung eines dritten Speicherchips 202 und eines vierten Speicherchips 204 ausgeführt werden kann. Der dritte Speicherchip 202 und der vierte Speicherchip 204 können in dem nichtflüchtigen Speicher 104 von 1 enthalten sein.
  • 2 veranschaulicht einen ersten Satz von Datenprogrammoperationen bei 210. Daten können beispielsweise in einem oder mehreren der Speicherchips 106, 108, 202 und 204 programmiert werden bzw. sein. Die Daten können als veranschaulichendes Beispiel die ersten Daten 120 von 1 enthalten.
  • Der Programmierungsprozess 200 enthält ferner ein gleichzeitiges Ausführen einer Steuerungsprogrammoperation 222 und eine oder mehrere Datenprogrammoperationen bei 220. 2 veranschaulicht beispielsweise, dass Datenprogrammoperationen in dem ersten Speicherchip 106, dem zweiten Speicherchip 108 und dem vierten Speicherchip 204 ausgeführt werden können. Die Daten können als veranschaulichendes Beispiel die zweiten Daten 122 von 1 enthalten. 2 veranschaulicht außerdem, dass der dritte Speicherchip 202 die Steuerungsprogrammoperation 222 ausführen kann. Das Ausführen der Steuerungsprogrammoperation 222 kann beispielsweise ein Programmieren der aktualisierten Steuerungsinformation 124 von Fig.1 für den bzw. in dem dritten Speicherchip 202 gleichzeitig mit dem Schreiben der zweiten Daten 122 von 1 einschließen.
  • 2 zeigt außerdem, dass ein dritter Satz von einem oder mehreren Datenprogrammoperationen bei 230 ausgeführt werden können. Zur Veranschaulichung können der erste Speicherchip 106, das zweite Speicherchip 108 und der dritte Speicherchip 202 Datenprogrammoperationen ausführen. Bei einem veranschaulichenden Beispiel können Daten, die vor der Steuerungsprogrammoperation 222 programmiert sind, sicheren Daten entsprechen. Die Daten, die beispielsweise bei 210 programmiert sind, können sicheren Daten entsprechen, und die Angabe 126 von 1 kann spezifizieren, dass die bei 210 programmierten Daten sicheren Daten entsprechen. Daten, die gleichzeitig oder nach der Steuerungsprogrammoperation 222 programmiert sind, können verletzlichen Daten entsprechen. Daten, die bei 230 programmiert sind, können beispielsweise verletzlichen Daten entsprechen, und die Angabe 126 von 1 kann spezifizieren, dass die bei 230 programmierten Daten verletzlichen Daten entsprechen. In Abhängigkeit von der besonderen Implementierung können Daten, die gleichzeitig mit der Steuerungsprogrammoperation 222 programmiert sind, sichere Daten oder verletzliche Daten einschließen. Daten, die bei 220 programmiert sind, können beispielsweise entweder sicheren Daten oder verletzlichen Daten entsprechen, und die Angabe 126 von 1 kann spezifizieren, dass die bei 220 programmierten Daten entweder sichere Daten oder verletzlichen Daten entsprechen.
  • Ein oder mehrere der unter Bezugnahme auf 2 beschriebenen Aspekte können die Leistungsfähigkeit einer Datenspeichervorrichtung, wie der Datenspeichervorrichtung 102 von 1 verbessern. Durch gleichzeitiges Ausführen der Steuerungsprogrammoperation 222 und einer oder mehrerer Datenprogrammoperationen beispielsweise wird der Durchsatz im Vergleich zu einer Vorrichtung verbessert, die Datenschreiboperationen während des Speicherns von aktualisierter Steuerungsinformation „blockiert“.
  • Bezugnehmend auf 3 ist ein weiteres besonderes veranschaulichendes Beispiel eines Programmierungsprozesses dargestellt und generell mit 300 bezeichnet. Der Programmierungsprozess 300 veranschaulicht Operationen, die einem Host-Datenblock 302 und einem Steuerungsdatenblock 304 zugehörig sind. Der Host-Datenblock 302 kann beispielsweise einer Region (z.B. einer physikalischen Region, einer logischen Region oder einer virtuellen Region) des nichtflüchtigen Speichers 104 entsprechen, und der Steuerungsdatenblock 304 kann einer weiteren Region (beispielsweise einer physikalischen Region, einer logischen Region oder einer virtuellen Region) des nichtflüchtigen Speichers 104 entsprechen.
  • Der Programmierungsprozess 300 kann ein Ausführen einer ersten Steuerungsaktualisierung bei 310 enthalten. Die erste Steuerungsaktualisierung kann ein Speichern der aktualisierten Steuerungsinformation 124 in den nichtflüchtigen Speicher 104 von 1 enthalten. Die Steuerungsaktualisierung kann der Steuerungsaktualisierungsoperation 222 von 2 entsprechen. Die aktualisierte Steuerungsaktualisierung 124 kann die Angabe 126 enthalten, und die Angabe 126 kann spezifizieren, dass Daten, die vor dem Ausführen der ersten Aktualisierung programmiert sind, sichere Daten 312 enthalten. Die Angabe 126 kann ferner spezifizieren, dass Daten, die nach dem Ausführen der ersten Steuerungsaktualisierung programmiert sind, verletzliche Daten 314 enthalten können.
  • Der Programmierungsprozess 300 enthält ferner ein Programmieren einer zweiten Steuerungsaktualisierung bei 320. Die zweite Steuerungsaktualisierung kann ein Speichern einer neu aktualisierten Vision der Steuerungsinformation 184 von 1 in den nichtflüchtigen Speicher 104 von 1 einschließen. Durch erneutes Aktualisieren der Steuerungsinformation 184 kann die neu bzw. erneut aktualisierte Steuerungsinformation eine Angabe enthalten, dass Daten, die in den nichtflüchtigen Speicher 104 vor der erneuten Aktualisierung der Steuerungsinformation 184 programmiert sind, sicheren Daten entsprechen. Die verletzlichen Daten 314 können beispielsweise als sichere Daten neu klassifiziert sein. Ferner können Daten, die nach der zweiten Steuerungsaktualisierung programmiert sind, als verletzlich angegeben sein. So können beispielsweise Daten 324, die nach der zweiten Steuerungsaktualisierung programmiert sind, als verletzlich angegeben sein.
  • 3 veranschaulicht, dass Steuerungs-Aktualisierungsoperationen dazu herangezogen werden können, sichere Daten, verletzliche Daten oder beides anzugeben. Die Steuerungs-Aktualisierungsoperationen können Daten, die zuvor als verletzlich angegeben sind, „neu klassifizieren“.
  • Bezugnehmend auf 4 ist ein besonderes veranschaulichendes Beispiel eines Systems veranschaulicht und generell mit 400 bezeichnet. Das System 400 enthält eine Datenspeichervorrichtung 402 und eine Vorrichtung 480 (beispielsweise eine Hostvorrichtung oder eine Zugriffsvorrichtung). Die Datenspeichervorrichtung 402 enthält einen nichtflüchtigen Speicher 404 und eine Steuereinrichtung 430. Die Steuereinrichtung 430 ist mit dem nichtflüchtigen Speicher 404 gekoppelt.
  • Der nichtflüchtige Speicher 404 enthält eine nichtflüchtige Reihe bzw. ein nichtflüchtiges Array von Speicherelementen, die in einem oder mehreren Speicherchip, wie einem ersten Speicherchip 406 und einem zweiten Speicherchip 408 enthalten sind. Bei einem veranschaulichenden Beispiel entsprechen das erste Speicherchip 406 und das zweite Speicherchip 408 dem ersten Speicherchip 106 und dem zweiten Speicherchip 108 von 1.
  • Die Steuereinrichtung 430 enthält ein Speicherinterface 432 zu dem nichtflüchtigen Speicher 404 und ein weiteres Vorrichtungs- bzw. Einrichtungsinterface 472 (z.B. ein Host-Interface) zu der Vorrichtung 480. Die Steuereinrichtung 430 kann ferner eine Flash-Umsetzungsschicht (FTL) 438, eine Steuerschaltung 440, eine Befehlsschlange 442, einen flüchtigen Speicher 444 und einen Zähler 446 enthalten. Der flüchtige Speicher 444 kann als veranschaulichendes Beispiel einen Schreib-Lese-Speicher mit wahlfreiem Zugriff (RAM) enthalten.
  • Während des Betriebs kann die Steuereinrichtung 430 Daten 474 von der Vorrichtung 480 empfangen, wie in Verbindung mit einer Anforderung nach einem Schreibzugriff auf den nichtflüchtigen Speicher 404. Die Steuereinrichtung 430 kann auf der Grundlage der Daten 474 eine oder mehrere Operationen ausführen, um erste Daten 422 zu erzeugen, wie durch Codieren der Daten 474 zur Erzeugung der ersten Daten 422. Bei einigen Implementierungen (beispielsweise einer Flashspeicher-Implementierung) ist die FTL-Schicht 438 der Steuereinrichtung 430 konfiguriert, um eine Adressenübersetzung von logischer zu physikalischer Adresse vorzunehmen, um die den Daten 474 zugehörige logische Adresse in eine den ersten Daten 422 zugehörige physikalische Adresse umzusetzen.
  • Um ein Speichern der ersten Daten 422 in den nichtflüchtigen Speicher 404 zu initiieren, ist die Steuereinrichtung 430 ausgelegt, um ein oder mehrere Speicherbefehle in der Speicherschlange 442 als Schlange anzuordnen. Die Steuereinrichtung 430 kann beispielsweise ausgelegt sein, um einen ersten Satz von Speicherbefehlen 452 der Befehlsschlange 442 als Schlange anzuordnen, um das Speichern der ersten Daten 422 in dem nichtflüchtigen Speicher 404 zu initiieren. In Abhängigkeit von dem besonderen Beispiel kann der erste Satz von Speicherbefehlen 452 ein Chip oder Speicherchip des nichtflüchtigen Speichers 404, wie das erste Speicherchip 406, das zweite Speicherchip 408, ein oder mehrere andere Speicherchip oder eine Kombination daraus anzielen.
  • Der flüchtige Speicher 444 ist ausgelegt, um die Steuerungsinformation 484 zu speichern. Zur Veranschaulichung kann die Steuerungsinformation 484 eine Abbildungstabelle 486 enthalten, und die Steuereinrichtung 430 kann die Abbildungstabelle 486 aktualisieren, um auf ein Speichern von Daten den nichtflüchtigen Speicher 404 hin eine aktualisierte Abbildungstabelle 428 zu erzeugen, wie durch Aktualisieren der Abbildungstabelle 486 zur Anzeige, dass der nichtflüchtige Speicher 404 die ersten Daten 422 speichert. Die Steuerschaltung 440 kann konfiguriert sein, um auf der Grundlage der Speicherung der ersten Daten 422 in dem nichtflüchtigen Speicher 404 hin die aktualisierte Steuerungsinformation 424 zu erzeugen.
  • Um die Integrität der aktualisierten Steuerungsinformation 424 zu erhalten (beispielsweise nach einem Stromversorgungszyklus in der Datenspeichervorrichtung 402) kann die Steuereinrichtung 430 die aktualisierte Steuerungsinformation 424 an den nichtflüchtigen Speicher 404 senden (um z.B. eine Kopie der aktualisierten Steuerungsinformation 424 „zu sichern“). Die aktualisierte Steuerungsinformation 424 kann in Verbindung mit einer nichtblockierenden Steuerungs-Sync-(CS)-Operation (hier auch als Steuerungs-Aktualisierungsoperation bezeichnet) an den nichtflüchtigen Speicher 404 gesendet werden.
  • Entsprechend Aspekten der Offenbarung kann die Steuereinrichtung 430 ausgelegt sein, um auf den ersten Satz von Speicherbefehlen 452 folgend einen Sperrbefehl 454 für die Befehlsschlange 442 bereitzustellen. Der Sperrbefehl 454 kann ermöglichen, dass der erste Satz von Speicherbefehlen 452 vor dem Senden der aktualisierten Steuerungsinformation 424 auszuführen ist, um in dem einen Speicherchip oder den mehreren Speicherchip gespeichert zu werden. Falls beispielsweise die Steuereinrichtung 430 den Sperrbefehl 454 an die beiden Speicherchip 406, 408 abgibt, kann die Steuereinrichtung 430 Abschluss-Bestätigungen (ACKs) von den Speicherchip 406, 408 auf die Ausführung des Sperrbefehls 454 durch die Speicherchip 406, 408 empfangen. In diesem Fall können die Abschluss-ACKs angeben, dass die Speicherchip 406, 408 den ersten Satz von Speicherbefehlen 452 ausgeführt haben. Infolgedessen kann die Steuereinrichtung 430 die aktualisierte Steuerungsinformation 424 auf die Bestimmung hin (basierend auf den Abschluss-ACKs) speichern, dass der erste Satz von Speicherbefehlen 452 abgeschlossen worden ist (und dass die aktualisierte Steuerungsinformation 424 genau einen Zustand des nichtflüchtigen Speichers 404 repräsentiert). Bei einem veranschaulichenden Beispiel sind die Speicherchip 406 und 408 konfiguriert, um die Verarbeitung von Befehlen aus der Befehlsschlange 442 mit geringer oder keiner Verzögerung unmittelbar nach der Ausführung des Sperrbefehls 454 fortzusetzen. Bei diesem Beispiel stellt die Steuerungs-Sync-Operation eine nichtblockierende Operation dar.
  • Zur weiteren Veranschaulichung kann die Steuereinrichtung 430 die Ausführung des ersten Satzes von Speicherbefehlen 452 dadurch initiieren, dass der erste Satz von Speicherbefehlen 452 dem nichtflüchtigen Speicher 404 bereitgestellt wird. Die Steuereinrichtung 430 kann den Sperrbefehl 454 für den nichtflüchtigen Speicher 404 nach Bereitstellen des ersten Satzes von Speicherbefehlen 452 für den nichtflüchtigen Speicher 404 bereitstellen. Speicherbefehle des ersten Satzes von Speicherbefehlen 452 können für das erste Speicherchip 406, das zweite Speicherchip 408, das eine oder die mehreren anderen Speicherchip des nichtflüchtigen Speichers 404 oder einer Kombination daraus bereitgestellt werden.
  • Auf die Ausführung eines oder mehrerer Speicherbefehle des ersten Satzes von Speicherbefehlen 452 kann ein Speicherchip des nichtflüchtigen Speichers 404 den Sperrbefehl 454 ausführen. Auf das Ausführen des Sperrbefehls 454 hin kann ein Speicherchip des nichtflüchtigen Speichers 404 eine Nachricht (z.B. eine Abschluss-ACK-Nachricht) für die Steuereinrichtung 430 bereitstellen. Zur Veranschaulichung zeigt 4, dass die Steuereinrichtung 430 eine oder mehrere Nachrichten 426 von dem nichtflüchtigen Speicher 404 empfangen kann. Die eine oder mehreren Nachrichten 426 ist bzw. sind dem Sperrbefehl 454 zugehörig und können Abschluss-ACKs von ein oder mehreren Speicherchip 406, 408 enthalten. Auf das erste Speicherchip 406 hin, welches den Sperrbefehl 454 ausführt, kann das erste Speicherchip 406 eine erste Nachricht von den einen oder mehreren Nachrichten 426 für die Steuereinrichtung 430 bereitstellen. Als weiteres Beispiel kann das zweite Speicherchip 408 daraufhin, dass das zweite Speicherchip 408 den Sperrbefehl 454 ausführt, eine zweite Nachricht der einen oder mehreren Nachrichten 426 für die Steuereinrichtung 430 bereitstellen.
  • Die Steuereinrichtung 430 kann konfiguriert sein, um einen durch den Zähler 446 auf den Empfang jedes des einen oder der mehreren Nachrichten 426 hin angegebenen Wert 450 einzustellen. In Abhängigkeit von dem besonderen Beispiel kann die Steuereinrichtung 430 die eine oder mehrere Nachrichten 426 gleichzeitig oder sequentiell empfangen. Als veranschaulichendes Beispiel kann die Steuereinrichtung 430 die eine oder mehrere Nachrichten 426 auf der Grundlage verschiedener Arbeitsbelastungen und Schreibgeschwindigkeiten der Speicherchip 406, 408 sequentiell empfangen.
  • Die Steuereinrichtung 430 ist so ausgelegt, um zu bestimmen, ob ein dem Sperrbefehl 454 zugehöriger Zustand erfüllt ist, wie, ob eine Anzahl der einen oder mehreren Nachrichten 426 einem Schwellwert 448 genügt. Bei einem veranschaulichenden Beispiel entspricht der Schwellwert 448 einer Anzahl von Speicherchip des nichtflüchtigen Speicher 404, die den Sperrbefehl 454 ausführen. Bei diesem Beispiel kann der Schwellwert 448 eine Anzahl von „erwarteten“ Abschluss-ACKs entsprechen, um von dem nichtflüchtigen Speicher 404 empfangen zu werden (auf der Grundlage der Anzahl der Speicherchip des nichtflüchtigen Speichers 404, die den Sperrbefehl 454 empfangen). De Steuereinrichtung 430 kann eine Anzahl von empfangenen Abschluss-ACKs unter Heranziehung des Wertes 450 überwachen (beispielsweise durch Erhöhen des Wertes 450 auf jede empfangene Abschluss-ACK-Nachricht hin).
  • Die Steuereinrichtung 430 kann ausgelegt sein, um den Wert 450 mit dem Schwellwert 448 zu vergleichen, um damit zu bestimmen, ob die Anzahl dem Schwellwert genügt (z.B. größer ist als oder größer als oder gleich Null ist). Als veranschaulichendes Beispiel kann die Steuerschaltung 440 eine Komparatorschaltung enthalten, die mit dem Zähler 446 gekoppelt ist. Die Komparatorschaltung kann ausgelegt sein, um den Wert 450 des mit dem Schwellwert 448 zu vergleichen, um zu bestimmen, ob die Anzahl dem Schwellwert 448 genügt.
  • Falls die Anzahl versagt, dem Schwellwert 448 zu genügen, kann die Steuereinrichtung 430 bestimmen, dass der Zustand nicht erfüllt ist. Infolgedessen kann die Steuereinrichtung 430 warten, um zumindest eine andere Nachricht der einen oder mehreren Nachrichten 426 zu empfangen. Falls als veranschaulichendes Beispiel der Sperrbefehl 454 den beiden Speicherchip 406, 408 bereitgestellt wird, dann kann der Schwellwert 448 zwei entsprechen und eine Anzahl gleich Null oder Eins fällt aus, den Schwellwert 448 zu genügen.
  • Alternativ kann die Steuereinrichtung 430 in dem Fall, dass die Anzahl der einen oder mehreren Nachrichten 426 dem Schwellwert 448 genügt, bestimmen, dass die den Sperrbefehl 454 zugehörige Bedingung erfüllt ist. Zur Veranschaulichung kann dann der Schwellwert 448 in dem Fall, dass der Sperrbefehl 454 für beide Speicherchip 406, 408 bereitgestellt ist, sodann der Zwei entsprechen, und eine Anzahl gleich zwei genügt dem Schwellwert 448. Bei diesem Beispiel kann die Steuereinrichtung 430 bestimmen, dass jeder Befehl des ersten Satzes von Speicherbefehlen 452 ausgeführt worden ist und dass die aktualisierte Steuerungsinformation 424 genau einen Zustand des nichtflüchtigen Speichers 404 (aufgrund der Ausführung des ersten Satzes von Speicherbefehlen 452) wiedergibt. In diesem Fall ist die Steuereinrichtung 430 konfiguriert, um die in dem nichtflüchtigen Speicher 404 zu speichernde aktualisierte Steuerungsinformation 424 auf die Anzahl von einer oder mehreren Nachrichten 426 zu setzen, welche dem Schwellwert 448 genügt.
  • Der Sperrbefehl 454 kann als eine „Steuerungs-Sync-Marke“ bezeichnet werden. Der Sperrbefehl 454 folgt dem ersten Satz von Speicherbefehlen 452, und der Abschluss der Ausführung des Sperrbefehls stellt sicher, dass der erste Satz von Speicherbefehlen 452 vor dem Schreiben der aktualisierten Steuerungsinformation 424 ausgeführt ist. Der zweite Satz von Speicherbefehlen 456 kann für den nichtflüchtigen Speicher 404 parallel zu dem Sperrbefehl 454 bereitgestellt werden (beispielsweise so, dass die Ausführung einer CS-Operation die Schreibbefehle in den nichtflüchtigen Speicher 404 nicht „blockiert“).
  • In Verbindung mit dem Beispiel von 4 wird eine CS-Operation durch die Datenspeichervorrichtung 402 in einer nichtblockierender Weise ausgeführt. Beispielsweise können eine oder mehrere Speicherzugriffsoperationen gleichzeitig mit dem Senden der aktualisierten Steuerungsinformation 424 an den nichtflüchtigen Speicher 404 ausgeführt werden. Zur weiteren Veranschaulichung können bei einigen Implementierungen ein oder mehrere Speicherbefehle des zweiten Satzes von Speicherbefehlen 456 an den nichtflüchtigen Speicher 404 gleichzeitig mit dem Senden der aktualisierten Steuerungsinformation 424 gesendet werden, wie durch Heranziehen des Multikanalbusses, der in dem Speicherinterface 432 enthalten sein kann.
  • Ein oder mehrere der unter Bezugnahme auf 4 beschriebenen Aspekte können die Leistungsfähigkeit der Datenspeichervorrichtung 402 verbessern. So ist beispielsweise die Datenspeichervorrichtung 402 ausgelegt, um eine CS-Operation ohne „Blockieren“ von anderen Speicherzugriffsoperationen während der nichtblockierenden CS-Operation auszuführen. Infolgedessen kann der Durchsatz im Vergleich zu einer Vorrichtung verbessert sein, die Speicherzugriffsoperationen während des Speicherns von aktualisierten Steuerungsinformationen „blockiert“.
  • Bezugnehmend auf 5 sind veranschaulichende Aspekte eines Satzes von Operationen veranschaulicht und generell mit 500 bezeichnet. Der Satz von Operationen 500 kann in der Datenspeichervorrichtung 402 von 4 als veranschaulichendes Beispiel ausgeführt werden.
  • Der Satz von Operationen 500 kann ein Detektieren eines Auslöse- bzw. Triggerereignisses bei 502 enthalten. Das Triggerereignis kann einem Zustand entsprechen, der angibt, dass die Steuerungsinformation 484 zu aktualisieren und in dem nichtflüchtigen Speicher 404 zu speichern ist. Der Triggerzustand bzw. die Triggerbedingung kann beispielsweise einer bestimmten bzw. besonderen Anzahl von Operationen in dem nichtflüchtigen Speicher 404, einer Schwellwertzeitdauer seit einer vorhergehenden Aktualisierung mit der Speicherung der Steuerungsinformation 484, einer oder mehreren anderen Bedingungen oder einer Kombination daraus entsprechen.
  • Der Satz von Operationen 500 kann ferner das Senden eines Sperrbefehls bei 504 enthalten. Die Steuereinrichtung 430 kann beispielsweise den Sperrbefehl 454 an den nichtflüchtigen Speicher 404 senden.
  • Der Satz von Operationen 500 enthält ferner das Schreiben eines Protokolls bei 506. Das Protokoll kann beispielsweise die aktualisierte Steuerungsinformation 424 enthalten, und das Protokoll kann in den nichtflüchtigen Speicher 404 geschrieben werden. Das Protokoll kann in den nichtflüchtigen Speicher 404 auf die Bestimmung hin geschrieben werden, dass eine Anzahl der einen oder mehreren Nachrichten 426 dem Schwellwert 448 genügt.
  • Der Satz von Operationen 500 enthält ferner bei 508 ein Detektieren eines Triggerereignisses. Das Triggerereignis kann beispielsweise auf die Ausführung einer bestimmten bzw. besonderen Anzahl von Operationen in dem nichtflüchtigen Speicher 404, einer Schwellwertzeitdauer seit einem vorhergehenden Aktualisieren und Speichern der Steuerungsinformation 484 (beispielsweise bei 506), einer oder mehreren anderen Bedingungen oder einer Kombination daraus detektiert werden.
  • Der Satz von Operationen 500 enthält ferner bei 510 das Senden eines Sperrbefehls. Ein anderer bzw. weiterer, dem Sperrbefehl 454 entsprechender Sperrbefehl kann beispielsweise für den nichtflüchtigen Speicher 404 bereitgestellt werden, wie in Verbindung mit einer erneuten Aktualisierung der Steuerungsinformation 484.
  • Der Satz von Operationen 500 enthält ferner bei 512 das Schreiben eines Protokolls. Die Steuerungsinformation 484 kann beispielsweise auf der Grundlage von einer oder mehreren Speicheroperationen erneut aktualisiert werden, die in dem nichtflüchtigen Speicher 404 ausgeführt werden, und die erneut aktualisierte Steuerungsinformation kann für den nichtflüchtigen Speicher 404 bereitgestellt werden.
  • Das Beispiel von 5 veranschaulicht, dass ein Sperrbefehl (z.B. der Sperrbefehl 454) in Verbindung mit dem Schreiben eines Protokolls in einen Speicher, wie den nichtflüchtigen Speicher 404, verwendet werden kann. Der Sperrbefehl kann sicherstellen, dass vorherige Speicherbefehle vor dem Sperrbefehl ausgeführt sind und dass nachfolgende Speicherbefehle nach dem Sperrbefehl ausgeführt werden, womit eine Kohärenz des Protokolls in Bezug auf die Speicherbefehle aufrecht erhalten ist.
  • 6 stellt veranschaulichende Aspekte der Datenspeichervorrichtung 402 von 4 dar. In 6 sind Operationen mit Bezug auf die FTL-Schicht 438 von 4, ein erster Prozessor 602 und ein zweiter Prozessor 604 beschrieben. Operationen sind außerdem unter Bezugnahme auf eine Befehlsschlange 606, eine Befehlsschlange 608, eine Befehlsschlange 610 und eine Befehlsschlange 612 beschrieben.
  • Während des Betriebs können die Prozessoren 602, 604 auf die FTL-Schicht 438 hin reagieren. Die FTL-Schicht 438 kann beispielsweise eine Angabe für die Prozessoren 602, 604 zur Erzeugung eines Sperrbefehls bereitstellen, die des Sperrbefehls 454. Bei dem Beispiel von 6 kann jede der Befehlsschlangen 606, 608, 610 und 612 einem bestimmten Speicherchip des nichtflüchtigen Speichers 404 zugehörig sein. Als veranschaulichendes Beispiel kann die Befehlsschlange 606 einem Speicherchip n (beispielsweise dem ersten Speicherchip 406) zugehörig sein, und die Befehlsschlange 608 kann einem Speicherchip n+1 (beispielsweise dem zweiten Speicherchip 408) zugehörig sein, wobei n eine positive ganze Zahl ist. Die Befehlsschlange 610 kann einem Speicherchip 0 zugehörig sein, und die Befehlsschlange 612 kann einem Speicherchip 1 zugehörig sein.
  • Während der Ausführung von Befehlen kann sich der Sperrbefehl 454 durch jede der Befehlsschlangen 606, 608, 610 und 612 ausbreiten (z.B. durch „Hochbewegen in der Schlange“ auf die Ausführung eines vorangehenden Befehls). Aufgrund von unterschiedlichen Chipcharakteristiken, die unterschiedlichen Chip-Arbeitsbelastungen oder unterschiedlichen Schreibgeschwindigkeiten können gewisse Speicherchip des nichtflüchtigen Speichers 404 den Sperrbefehl 454 vor den anderen Speicherchip des nichtflüchtigen Speichers 404 erreichen. In 6 kann beispielsweise die Befehlsschlange 608 angeben, dass der Sperrbefehl 454 für eine Ausführung vor der Befehlsschlange 610 bereitsteht, was anzeigt, dass der Sperrbefehl 454 für die Ausführung bereitsteht.
  • Jedes Speicherchip, welches den Sperrbefehl 454 ausführt, kann eine entsprechende Nachricht der einen oder mehreren Nachrichten 426 für die Steuereinrichtung 430 von 4 sein. Zur Veranschaulichung stellt 6 dar, dass ein bestimmtes Speicherchip entsprechend der Befehlsschlange 610 eine bestimmte bzw. besondere Nachricht senden kann, wie eine Chip-Sperrantwort bei 614. Bei einem besonderen bzw. bestimmten Beispiel bewirkt das Senden der Chip-Sperrantwort bei 614, dass eine Anzahl der einen oder mehreren Nachrichten 426 dem Schwellwert 448 genügt. Bei diesem Beispiel kann die Steuereinrichtung 430 das Senden der aktualisierten Steuerungsinformation 424 an den nichtflüchtigen Speicher 404 auf den Empfang der Chip-Sperrantwort von jedem der Speicherchip n, n+1, 0 und 1 hin initiieren. Bei diesem veranschaulichenden Beispiel kann der Schwellwert 448 vier entsprechen. Als Ergebnis davon, dass die Anzahl der einen oder mehreren Nachrichten 426 dem Schwellwert 448 genügt, kann die Steuereinrichtung 430 detektieren, dass die aktualisierte Steuerungsinformation 424 an den nichtflüchtigen Speicher 404 zu senden ist, womit eine Kohärenz der aktualisierten Steuerungsinformation 424 in Bezug auf die Speicheroperationen aufrecht erhalten ist, die in dem nichtflüchtigen Speicher 404 ausgeführt werden.
  • Bezugnehmend auf 7 sind veranschaulichende Aspekte einer Vorrichtung dargestellt und generell mit 700 bezeichnet. Ein oder mehrere Aspekte der Vorrichtung 700 von Fig. 7 können in der Steuereinrichtung 430 von 4 integriert sein. 7 stellt beispielsweise die FTL-Schicht 438 von 4 und den ersten Prozessor 602 von 6 dar.
  • 7 ist eine Mehrzahl von Schlangen zwischen der FTL-Schicht 438 und dem Prozessor 602 gekoppelt. 7 stellt beispielsweise dar, dass eine Schlange 702, eine Schlange 704, eine Schlange 706 und eine Schlange 708 zwischen der FTL-Schicht 438 und dem Prozessor 602 gekoppelt sein können.
  • Das Beispiel von 7 zeigt eine Mehrzahl von Sperrbefehlen, die verschiedenen Zahlen von Nachrichten zugehörig sind. Zur Veranschaulichung stellt das Beispiel von 7 einen ersten Sperrbefehl und Null dar, der einer ersten Sperridentifikation („Sperr-ID“) zugehörig ist. Der erste Sperrbefehl ist einer ersten Zahl („numReqs“) von einer oder mehreren Nachrichten zugehörig, die gleich vier beträgt (da beispielsweise der erste Sperrbefehl für vier Speicherchip bei dem Beispiel von 7 vorgesehen sein kann). Als weiteres Beispiel stellt 7 außerdem einen zweiten Sperrbefehl dar, der einer zweiten Sperr-ID von zwei zugehörig ist und der einer zweiten Zahl von eins oder mehreren Nachrichten gleich zwei zugeordnet ist (beispielsweise mit Rücksicht darauf, dass der zweite Sperrbefehl für zwei Speicherchip bei dem Beispiel von 7 vorgesehen sein kann).
  • Jeder der Sperrbefehle von 7 kann dem Sperrbefehl 454 von 4 entsprechen, und irgendeine Zahl der Zahlen von Nachrichten, die unter Bezugnahme auf 7 beschrieben sind, kann dem Schwellwert 448 von 4 entsprechen. Jede der Schlangen 702, 704, 706 und 708 kann einem entsprechenden Chip des nichtflüchtigen Speichers 404 zugehörig sein.
  • Das Beispiel von 7 veranschaulicht, dass eine Mehrzahl von Sperrnachrichten verwendet werden kann, wobei jede der Sperrnachrichten einer entsprechenden Identifikation (Sperr-ID) und einer entsprechenden Anzahl von Nachrichten (numReqs) zugehörig ist. Infolgedessen kann die Steuereinrichtung 430 von 4 gleichzeitig eine Mehrzahl von Operationen gleichzeitig planen, die einen Sperrabschluss nutzen und die eine oder mehreren CS-Operationen enthalten. In Abhängigkeit von dem besonderen Beispiel können die multiplen Operationen eine oder mehrere Durchleitoperationen, eine oder mehrere abhängige Steuerungsoperationen, die vom Abschluss vorheriger Operationen abhängen, eine oder mehrere andere Operationen oder eine Kombination daraus einschließen.
  • Bezugnehmend auf 8 sind veranschaulichende Aspekte der Vorrichtung 700 von 7 dargestellt und generell mit 800 bezeichnet. Die Vorrichtung 700 von 8 kann in der Datenspeichervorrichtung 402 von 4 enthalten sein.
  • Bei dem Beispiel von 8 enthält der erste Prozessor 602 ein Sperrmodul 806 und einen Sperrzähler (BC) 808. Bei einem besonderen Beispiel entspricht das Sperrmodul 806 der Steuerschaltung 440, und der BC-Zähler 808 entspricht dem Zähler 446 von 4.
  • Bei dem Beispiel von 8 enthält der erste Prozessor 602 ferner einen ersten Chipverwalter 810, einen zweiten Chipverwalter 812 und einen dritten Chipverwalter 814. Jeder der Chipverwalter bzw. Manager 810, 812 und 814 kann einem entsprechenden Speicherchip des nichtflüchtigen Speichers 404 zugehörig sein. Bei einem veranschaulichenden Beispiel kann der erste Chipverwalter 810 Speicheroperationen managen, die in dem ersten Speicherchip 406 ausgeführt werden, und der zweite Chipverwalter 812 kann Speicheroperationen in dem zweiten Speicherchip 408 von 4 steuern.
  • Bei dem Beispiel von Fig. 8 können die Chipverwalter 810, 812 und 814 ausgelegt sein, um Nachrichten von Speicherchip des nichtflüchtigen Speichers 404 zu empfangen. Zur Veranschaulichung kann der erste Chipverwalter 810 ausgelegt sein, um eine erste Nachricht der einen oder mehreren Nachrichten 426 von dem ersten Speicherchip 406 zu empfangen, und der zweite Chipverwalter 812 kann ausgelegt sein, um eine zweite Nachricht der einen oder mehreren Nachrichten 426 von dem zweiten Speicherchip 408 zu empfangen. Jeder der Chipverwalter 810, 812 und 814 kann ausgelegt sein, um den BC-Zähler 808 zu inkrementieren, und das Sperrmodul 806 kann ausgelegt sein, um zu detektieren, wann ein durch den BC-Zähler 808 angegebener Wert (beispielsweise der Wert 450 des Zählers 446) dem Schwellwert 448 genügt.
  • 9 stellt veranschaulichende Aspekte der Datenspeichervorrichtung 402 von 4 dar. In 9 sind Operationen unter Bezugnahme auf die FTL-Schicht 438 von 4 und einem Satz von Schlangen, wie den Befehlsschlangen 606, 608, 610 und 612 beschrieben. 9 veranschaulicht außerdem, dass der Satz von Schlangen ferner eine Schlange 902, eine Schlange 904 und eine Schlange 906 enthalten kann.
  • Der Satz von Schlangen von 9 kann eine hierarchische Konfiguration aufweisen. So können beispielsweise die Schlangen 606, 608, 610 und 612 einer „unteren“ Ebene einer Hierarchie entsprechen, und die Schlangen 902, 904 können einer „höheren“ Ebene der Hierarchie entsprechen. Jede Schlange „höherer“ Ebene kann mit einer Mehrzahl von Schlangen „unterer“ Ebene verbunden sein. So ist beispielsweise die Schlange 902 mit den Schlangen 606, 608 verbunden. Als zusätzliche Beispiele sind die Schlange 904 mit den Schlangen 606, 608 und der Schlange 906 mit den Schlangen 610, 612 verbunden.
  • Bei dem Beispiel von 9 kann die FTL-Schicht 438 einen Sperrbefehl an eine oder mehrere Schlangen des Satzes der Schlangen senden. Ein an eine „höhere“ Schlange gesendeter Sperrbefehl kann auf eine oder mehrere „untere“ Schlangen ausgebreitet werden. 9 veranschaulicht beispielsweise, dass der Sperrbefehl 454 von der Schlange 902 auf die Schlangen 606, 608 ausgebreitet werden kann. Als weiteres Beispiel veranschaulicht 9, dass der Sperrbefehl 454 von der Schlange 904 auf die Schlangen 606, 608 ausgebreitet werden kann. Auf die Ausführung jedes der Sperrbefehle 454 hin kann die Abschlussnachricht zu der FTL-Schicht 438 weitergeleitet werden.
  • Bezugnehmend auf 10 ist ein Operationen einer Datenspeichervorrichtung veranschaulichendes Diagramm dargestellt und generell mit 1000 bezeichnet. Bei einem veranschaulichenden Beispiel können die Operationen 1000 durch die Datenspeichervorrichtung 402 von 4 ausgeführt werden. Bei dem Beispiel von 10 werden die Operationen 1000 unter Bezugnahme auf den nichtflüchtigen Speicher 404, die FTL-Schicht 438 und das Sperrmodul 806 beschrieben.
  • Die Operationen 1000 können die Erzeugung einer Vor-Sperranforderung bei 1010 einschließen. Die FTL-Schicht 438 kann beispielsweise dem Sperrmodul 806 melden, dass die FTL-Schicht 438 einen Sperrbefehl für das Sperrmodul 806 bereitzustellen hat.
  • Die Operationen 1000 können ferner die Erzeugung einer Sperranforderung 1012 enthalten. Die Sperranforderung kann beispielsweise dem Sperrbefehl 454 entsprechen. Die FTL-Schicht 438 kann die Sperranforderung für das Sperrmodul 806 bereitstellen. Bei einigen Implementierungen kann das Sperrmodul 806 die Sperranforderung von der FTL-Schicht 438 abholen. Bei einigen Beispielen kann das Sperrmodul 806 eine Sperr-ID für das Sperrmodul 806 in Verbindung mit der Sperranforderung bereitstellen. Die Sperr-ID kann beispielsweise irgendeiner der unter Bezugnahme auf 7 beschriebenen Sperr-IDs entsprechen.
  • Die Operationen 1000 können ferner ein Initialisieren eines Zählers 1028 enthalten. Der Wert 450 des Zählers 446 kann beispielsweise auf die Abgabe des Sperrbefehls 454 hin zurückgesetzt werden.
  • Die Operationen 1000 können ferner die Bereitstellung einer Sperrdienstanforderung 1032 enthalten. Die Sperrdienstanforderung kann durch das Sperrmodul 806 für den nichtflüchtigen Speicher 404 bereitgestellt werden, wie für eine Chipzustandsmaschine, die in dem ersten Speicherchip 406 oder dem zweiten Speicherchip 408 als veranschaulichende Beispiele enthalten sein kann.
  • Die Operationen 1000 können ferner die Bereitstellung einer Abschlussnachricht für das Sperrmodul 806 bei 1052 enthalten. Der Zähler kann bei 1064 dekrementiert werden, wie durch Dekrementieren des Wertes 450 des Zählers 446. Die Operationen 1000 können ferner das Senden einer Abschlussnachricht (z.B. an eine der FTL-Schicht 438 von 4 zugehörige FTL-Mailbox 1072 enthalten. Die Abschlussnachricht kann einer besonderen Nachricht der einen oder mehreren Nachrichten 426 von 4 entsprechen.
  • Bezugnehmend auf 11 ist ein veranschaulichendes Beispiel eines Betriebsverfahrens einer Datenspeichervorrichtung dargestellt und generell mit 1100 bezeichnet. Bei einem veranschaulichenden Beispiel wird das Verfahren 1100 durch die Datenspeichervorrichtung 102 von 1 ausgeführt.
  • Das Verfahren 1100 enthält das Senden von in einem nichtflüchtigen Speicher einer Datenspeichervorrichtung zu speichernden ersten Daten bei 1102. Die Steuereinrichtung 130 kann beispielsweise in dem nichtflüchtigen Speicher 104 der Datenspeichervorrichtung 102 zu speichernden ersten Daten 120 senden.
  • Das Verfahren 1100 enthält ferner die Erzeugung einer aktualisierten Abbildungstabelle bei 1104 auf das Senden der in dem nichtflüchtigen Speicher zu speichernden ersten Daten hin. Die Steuerschaltung 140 kann beispielsweise konfiguriert sein, um auf die Steuerungsinformation 184 in den flüchtigen Speicher 144 zuzugreifen und um die Abbildungstabelle 186 zur Erzeugung der aktualisierten Steuerungsinformation 124 zu aktualisieren.
  • Das Verfahren 1100 enthält ferner ein gleichzeitiges Senden der aktualisierten Abbildungstabelle und der in dem nichtflüchtigen Speicher zu speichernden zweiten Daten nach der Erzeugung der aktualisierten Abbildungstabelle 1106. Die Steuereinrichtung 130 kann beispielsweise die zweiten Daten 122 und die aktualisierte Steuerungsinformation 124 an den nichtflüchtigen Speicher 104 senden.
  • Das Verfahren 1100 enthält ferner ein Speichern der aktualisierten Abbildungstabelle und der zweiten Daten durch den nichtflüchtigen Speicher in einer nichtblockierenden Operation (beispielsweise einer nichtblockierenden CS-Operation, in der die Speicherchip nicht angehalten werden) bei 1108. Zur Veranschaulichung kann der nichtflüchtige Speicher 104 Operationen während des Speicherns der aktualisierten Steuerungsinformation 124 und der zweiten Daten 122 fortsetzen (beispielsweise ohne „Anhalten“ der Operationen während einer CS-Operation, welche die aktualisierte Steuerungsinformation 124 in den nichtflüchtigen Speicher 104 schreibt.
  • Bezugnehmend auf 12 ist ein veranschaulichendes Beispiel eines Betriebsverfahrens einer Datenspeichervorrichtung dargestellt und generell mit 1200 bezeichnet. Bei einem veranschaulichenden Beispiel wird das Verfahren 1200 durch die Datenspeichervorrichtung 402 von 4 ausgeführt.
  • Das Verfahren 1200 enthält die Bereitstellung eines ersten Satzes von Speicherbefehlen und eines Sperrbefehls für eine Befehlsschlange einer Datenspeichervorrichtung 1202. Der erste Satz von Speicherbefehlen 452 und der Sperrbefehl 454 können beispielsweise der Befehlsschlange 442 von 4 bereitgestellt werden.
  • Das Verfahren 1200 enthält ferner den Empfang von einer oder mehreren Nachrichten von einer oder mehreren Speicherchip der Datenspeichervorrichtung bei 1204 auf die Ausführung des ersten Satzes der Speicherbefehle hin. Die Speicherchip 406, 408 können beispielsweise eine oder mehrere Nachrichten 426 auf die Ausführung des Sperrbefehls 454 hin (und nach Ausführen des ersten Satzes von Speicherbefehlen 452) bereitstellen.
  • Das Verfahren 1200 enthält ferner das Senden von in einem oder mehreren Speicherchip bei 1206 zu speichernden Abbildungstabellendaten auf eine Anzahl der einen oder mehreren Nachrichten hin, welche einem Schwellwert genügen. Das Ausführen des Sperrbefehls triggert das Senden der in der einen oder den mehreren Speicherchip zu speichernden Abbildungstabellendaten nach der Ausführung des ersten Satzes von Speicherbefehlen. Zur Veranschaulichung kann die Steuereinrichtung 430 die aktualisierte Abbildungstabelle 428 an den nichtflüchtigen Speicher 404 auf eine Anzahl der einen oder mehreren Nachrichten 426 hin senden, welche dem Schwellwert 448 genügen.
  • Das Verfahren 1200 kann ferner das Ausführen einer ununterbrochenen Verarbeitung von in den nichtflüchtigen Speicher durch Speicherchip des nichtflüchtigen Speichers beschriebenen Nutzerdaten während nichtblockierender Steuerungs-Sync-Operationen enthalten. Der nichtflüchtige Speicher 404 kann beispielsweise eine oder mehrere zusätzliche nichtblockierende Steuerungs-Sync-Operationen nach dem Speichern der Abbildungstabelle 428 in den nichtflüchtigen Speicher 404 ausführen, wie durch erneutes Aktualisieren der Abbildungstabelle 428 und durch erneutes Speichern der Abbildungstabelle 428 in dem nichtflüchtigen Speicher 404 in einer nichtblockierenden Weise (beispielsweise während der Ausführung einer ununterbrochenen Verarbeitung der in dem nichtflüchtigen Speicher 404 geschriebenen Nutzerdaten und ohne ein „Blockieren“ des Schreibens der Nutzerdaten in dem nichtflüchtigen Speicher 404).
  • Bei einem weiteren Beispiel ist die Datenspeichervorrichtung ausgelegt, um eine Konsolidierungsoperation asynchron in Bezug auf eine Steuerungs-Sync-Operation auszuführen. Die Konsolidierungsoperation und die Steuerungs-Sync-Operation können als separate nichtblockierende Prozesse ausgeführt werden. Bei einem besonderen Beispiel ist die Datenspeichervorrichtung 402 von 4 ausgelegt, um eine Konsolidierungsoperation asynchron in Bezug auf eine Steuerungs-Sync-Operation auszuführen.
  • Eine durch die Datenspeichervorrichtung ausgeführte Steuerungs-Sync-Operation kann das Schreiben einer Haupttabelle und von Aktualisierungen für die Haupttabelle ist eine nichtflüchtigen Speicher umfassen (beispielsweise durch Kopieren der Haupttabelle aus einem flüchtigen Speicher in den nichtflüchtigen Speicher. Die Haupttabelle kann beispielsweise Zeiger auf vorherige logische-zu-physikalische-(L2P)-Adressen-„Blöcken“ (oder Teilen einer L2P-Abbildungstabelle enthalten, die in dem nichtflüchtigen Speicher gespeichert sind (mittels einer vorherigen Steuerungs-Sync-Operation). Die Haupttabelle kann ferner eine „Aktualisierungsschicht“ enthalten, welche Aktualisierungen für die L2P-Abbildungstabelle (seit der vorherigen Steuerungs-Sync-Operation) angibt. Die L2P-Abbildung kann auf den Daten innerhalb der L2P-Blöcke zuzüglich möglichen Deltas von der „Aktualisierungsschicht“ basiert sein. Deltas können außerdem innerhalb eines Cachespeichers der L2P-Blöcke gespeichert sein und sind als CAT (dem Cachespeicher aufgenommene Adressenumsetzung) bezeichnet. Die CAT-Tabelle kann in einem flüchtigen Speicher, wie in einem statischen Speicher mit wahlfreiem Zugriff (SRAM) gespeichert sein. Bei einigen Implementierungen gibt es keine „Aktualisierungsschicht“, und Aktualisierungen werden innerhalb der CAT-Tabelle gespeichert, die periodisch zwangsgeräumt werden kann, um durch einen Konsolidierungsprozess anzusprechen bzw. aufzublitzen (oder für einen anderen nichtflüchtigen Speicher).
  • Eine Konsolidierungsoperation kann ein Vermischen von Aktualisierungen der Aktualisierungsschicht (oder der in der CAT-Tabelle gespeicherten Aktualisierungen) hin die in dem nichtflüchtigen Speicher gespeicherten L2P-Blöcke umfasst. Die Konsolidierungsoperation kann ausgeführt werden, um Raum in der Aktualisierungsschicht frei zu machen oder um CAT-Aktualisierungen zum Auftreten bzw. aufblinken (oder für einen anderen nichtflüchtigen Speicher) zu vermischen. Die Aktualisierungsschicht kann beispielsweise „voll“ werden, und sie kann durch Kopieren von der Aktualisierungsschicht gehörigen Aktualisierung aus dem flüchtigen Speicher in den nichtflüchtigen Speicher „ausgeräumt“ werden.
  • Durch Trennen einer Konsolidierungsoperation und eine Steuerungs-Sync-Operation können die Operationen „dünner“ sein, und sie können effizienter mit weniger Kürzungszeit und Verarbeitungsressourcen realisiert werden. Ferner kann in einigen Fällen die Häufigkeit der Konsolidierungsoperationen (beispielsweise die Häufigkeit, dass die Aktualisierungsschicht „voll“ wird) größer sein als die Häufigkeit der Steuerungs-Sync-Operationen. Durch Trennen der Operationen können Zeit- und Verarbeitungsressourcen, die zur Ausführung von „unnötigen“ Steuerungs-Sync-Operationen herangezogen werden, verringert werden (beispielsweise durch weniger häufiges Ausführen von Steuerungs-Sync-Operationen als von Konsolidierungsoperationen).
  • Eine nichtblockierende Konsolidierungsoperation kann eine atomische Technik anwenden, die ein Ausräumen der Aktualisierungsschicht in die CAT-Tabelle umfasst, falls die CAT-Tabelle nicht bereits aktualisiert ist. Das Ausräumen der Aktualisierungsschicht und das Verdichten der Aktualisierungsschicht (nach der Aktualisierungsschicht-Ausräumung) kann zusammen ausgeführt werden. Im Falle einer undankbaren Abschaltung (UGSD) nach der nichtblockierenden Konsolidierungsoperation (und vor einer nachfolgenden Steuerungs-Sync-Operation) kann die Datenspeichervorrichtung in einen Zustand, der durch Heranziehen einer vorherigen Steuerungs-Sync-Operation durch eine vorherige Version der in dem nichtflüchtigen Speicher gespeicherten Steuerungstabelle angegeben ist, „zurückgerollt“ werden.
  • Infolge des Trennens der Operationen und des Zurückrollens in den letzten Steuerungs-Sync-Zustand im Falle einer USGD können Aktualisierungen für die CAT-Tabelle ausgeführt werden, während die CAT-Blöcke in dem nichtflüchtigen Speicher gespeichert werden. Demgemäß brauchen Schreiboperationen während Konsolidierungsoperationen nicht gestoppt oder verzögert (beispielsweise „blockiert“) zu werden. Stattdessen können einer Schreiboperation zugehörige Aktualisierungen in die Aktualisierungsschicht und die CAT-Tabelle während einer bestimmten Konsolidierungsoperation geschrieben werden. Die Aktualisierungen können während einer anschließenden Operation in den nichtflüchtigen Speicher geschrieben werden.
  • Zur weiteren Veranschaulichung können bei einem Beispiel einer Konsolidierungsoperation SRAM-Kopien einer Abbildungstabelle aktualisiert werden, wie durch Modifizieren der Aktualisierungsschicht und optional durch Modifizieren eines SRAM-Cachespeichers des entsprechenden L2P-Adressenblocks der CAT-Tabelle. Um die Konsolidierungsoperation als nichtblockierend zu ermöglichen, können Aktualisierungen für die Aktualisierungsschicht in die CAT-Tabelle in einer atomischen Weise pro Block (beispielsweise während der Operation einer zentralen Verarbeitungseinheit (CPU) der Datenspeichervorrichtung) gemischt werden. Nach dem Mischen bzw. Vereinigen der Aktualisierungen in der CAT-Tabelle können die ausgewählten CAT-Blöcke in den nichtflüchtigen Speicher (beispielsweise unter Heranziehung einer Konsolidierungsoperation) geschrieben werden. Während des Ausführens der Konsolidierungsoperation können Anforderungen nach einem Zugriff auf den nichtflüchtigen Speicher ausgeführt werden, wie durch Ausführen einer Anforderung zum Schreiben von Daten in den nichtflüchtigen Speicher. Da die Konsolidierungsoperation die CAT-Tabelle (und nicht die Aktualisierungsschicht) in den nichtflüchtigen Speicher schreibt, kann die Aktualisierungsschicht während der Konsolidierungsoperation modifiziert werden (beispielsweise durch Modifizieren der Aktualisierungsschicht, um aktualisierte L2P-Adressenabbildungen als Ergebnis der Ausführung der Anforderungen anzugeben), und die Aktualisierungsschicht kann anschließend mittels einer Störungs-Sync-Operation in den nichtflüchtigen Speicher geschrieben werden, die nach der Konsolidierungsoperation ausgeführt wird.
  • In einigen Fällen kann eine während einer Konsolidierungsoperation empfangene bestimmte Anforderung eine Adresse angeben, die durch die Konsolidierungsoperation als Ziel gesetzt ist. Infolgedessen kann auf einen bestimmten gecachet L2P „Block“, der auch in den nichtflüchtigen Speicher (beispielsweise des der Konsolidierungsoperation zugeschrieben ist, angewandt werden. In diesem Fall kann vorzeitig einer Aktualisierung in den nichtflüchtigen Speicher geschrieben werden (beispielsweise bevor der bestimmten Anforderung zugehörige Hostdaten für den nichtflüchtigen Speicher übergeben werden). Ein Verfahren bzw. eine Technik entsprechend der Offenbarung erlaubt in vorteilhafter Weise einen solchen Umstand, da in dem nichtflüchtigen Speicher geschriebene neue Blöcke nach einem Stromversorgungszyklus lediglich dann verwendet werden können, falls es zusätzliche Steuerungs-Sync-Operationen gibt (wenn die Zeiger auf die Blöcke während der Steuerungs-Sync-Operationen geschrieben sind). Die Steuerungs-Sync-Operation sollte vor dem Schreiben von Daten in den nichtflüchtigen Speicher übergeben werden, welche die Daten enthalten, die durch die bestimmte Anforderung angegeben sind.
  • Obwohl sich die vorstehende Beschreibung auf bestimmte Beispiele einer Aktualisierungsschicht und einer CAT-Tabelle bezieht, sollte einzusehen sein, dass die Offenbarung auf derartige bestimmte Beispiele nicht beschränkt ist. Zur Veranschaulichung werden nichtblockierende Konsolidierungsoperationen von 13 bis 16 unter Bezugnahme auf einen Teil einer Steuerungstabelle und von gecachet L2P-Teilen beschrieben.
  • Bezugnehmend auf 13 ist ein bestimmtes veranschaulichendes Beispiel eines Systems dargestellt und generell mit 1300 bezeichnet. Das System 1300 enthält eine Datenspeichervorrichtung 1302 und eine Vorrichtung 1380 (beispielsweise eine Hostvorrichtung oder eine Zugriffsvorrichtung). Die Datenspeichervorrichtung 1302 ist ausgelegt, um nichtblockierende Konsolidierungsoperationen auszuführen.
  • Die Datenspeichervorrichtung 1302 umfasst einen nichtflüchtigen Speicher 1304 und eine Steuereinrichtung 1330. Die Steuereinrichtung 1330 ist mit dem nichtflüchtigen Speicher 1304 gekoppelt.
  • Der nichtflüchtige Speicher 1304 enthält ein nichtflüchtiges Array von Speicherelementen, die in einem oder mehreren Speicherchip enthalten sind. Ein oder mehrere Aspekte des nichtflüchtigen Speichers 1304 können unter Bezugnahme auf den nichtflüchtigen Speicher 104 von 1, den nichtflüchtigen Speicher 404 von 4 oder eine Kombination daraus beschrieben sein. Bei einem veranschaulichenden Beispiel enthält der nichtflüchtige Speicher 1304 ein oder mehrere des ersten Speicherchips 106 von 1, des zweiten Speicherchips 108 von 1, des ersten Speicherchips 406 von 4 oder des zweiten Speicherchips 408 von 4. Der nichtflüchtige Speicher 1304 umfasst eine oder mehrere Gruppen von Speicherelementen, wie einen repräsentativen Block 1306.
  • Die Steuereinrichtung 1330 enthält ein Speicherinterface 1332 für den nichtflüchtigen Speicher 1304 und ein weiteres Vorrichtungsinterface 1372 (beispielsweise ein Host-interface) für die Vorrichtung 1380. Die Steuereinrichtung 1330 kann ferner eine Flash-Umsetzungsschicht (FTL) 1338, einen Zähler 1346, einen Zähler 1352 und einen nichtflüchtigen Speicher 1344 umfassen. Der nichtflüchtige Speicher 1344 kann als veranschaulichendes Beispiel einen Speicher mit wahlfreiem Zugriff (RAM) umfassen.
  • Der nichtflüchtige Speicher 1344 ist ausgelegt, um eine erste Kopie 1384 einer dem nichtflüchtigen Speicher 1304 zugehörigen Steuerungstabelle zu speichern. Der nichtflüchtige Speicher 1304 kann ausgelegt sein, um eine zweite Kopie 1310 der Steuerungstabelle zu speichern. Die Steuereinrichtung 1330 kann die erste Kopie 1384 auf der Grundlage von Schreiboperationen modifizieren, die in dem nichtflüchtigen Speicher 1304 ausgeführt werden, und sie kann die zweite Kopie 1310 auf der Grundlage von Änderungen für die erste Kopie 1384 (z.B. durch Ausbreitung von Änderungen der ersten Kopie 1384 zu der zweiten Kopie 1310) anschließend aktualisieren.
  • Während der Operation kann die Steuereinrichtung 1330 die Steuerungsinformation aus dem nichtflüchtigen Speicher 1304 wiedergewinnen. Auf ein Stromversorgungs-Anschaltereignis in der Datenspeichervorrichtung 1302 kann die Steuereinrichtung 1330 als ein Beispiel die erste Kopie 1384 aus dem nichtflüchtigen Speicher 1304 wieder gewinnen und die erste Kopie 1384 in dem nichtflüchtigen Speicher 1344 betriebsmäßig (z.B. im Cachespeicher) speichern.
  • Die Steuereinrichtung 1330 kann eine oder mehrere Anforderungen von der Vorrichtung 1380 für einen Zugriff auf dem nichtflüchtigen Speicher 1304 empfangen. Das Vorrichtungsinterface 1372 ist beispielsweise ausgelegt, um eine erste Anforderung 1376 für einen Zugriff auf den nichtflüchtigen Speicher 1304 von der Vorrichtung 1380 zu empfangen. Bei einem bestimmten Beispiel gibt die erste Anforderung 1376 an, dass Daten 1374 in den nichtflüchtigen Speicher 1304 zu schreiben sind. Die Steuereinrichtung 1330 kann auf der Grundlage der Daten 1374, wie durch Codieren der Daten 1374 eine oder mehrere Operationen ausführen, um codierte Daten zu erzeugen und um die in dem nichtflüchtigen Speicher 1304 zu speichernden codierten Daten zu senden.
  • Bei einigen Implementierungen ist die FTL-Schicht 1338 der Steuereinrichtung 1330 ausgelegt, um auf die erste Anforderung 1376 hin eine Übersetzung von einer logischen zu einer physikalischen (L2P) Adresse vorzunehmen. Die FTL-Schicht 1338 kann beispielsweise ausgelegt sein, um eine den Daten 1374 zugehörige logische Adresse vor der Speicherung der Daten 1374 in dem nichtflüchtigen Speicher 1304 in eine den Daten 1374 zugehörige physikalische Adresse umzusetzen.
  • Die Steuereinrichtung 1330 ist ausgelegt, um auf die erste Anforderung 1376 hin eine erste Aktualisierung eines Teiles 1340 (z.B. einer Aktualisierungsschicht) der ersten Kopie 1384 auszuführen. Der Teil 1340 kann beispielsweise L2P-Adressenumsetzungen vor einer Modifikation der zweiten Kopie 1310 angeben, um die L2P-Adressenumsetzungen anzuheben. Als ein bestimmtes Beispiel kann die Steuereinrichtung 1330 die erste Aktualisierung des Teiles 1340 vornehmen, um eine bestimmte L2P-Adressenumsetzung anzugeben, die auf die Ausführung der ersten Anforderung 1376 hin vor der Initiierung einer zweiten Aktualisierung ausgeführt wird, welche die L2P-Adressenumsetzung mit der zweiten Kopie 1310 konsolidiert. Die erste Aktualisierung kann die Hinzufügung eines bestimmten Eintrags in eine Liste von L2P-Adressenabbildungen umfassen, der durch den Teil 1340 angegeben ist.
  • Bei einigen Implementierungen ist die Steuereinrichtung 1330 ausgelegt, um eine Gültigkeitszählung 1350 auf die Ausführung der ersten Anforderung 1376 hin zu aktualisieren. Die Gültigkeitszählung 1350 kann beispielsweise eine Anzahl von dem nichtflüchtigen Speicher 1304 zugehörigen ungültigen Seiten angeben, und die Steuereinrichtung 1330 kann die Gültigkeitszählung 1350 auf eine Verschiebung von einer bestimmten physikalischen Adresse zugehörigen Daten in eine andere physikalische Adresse des nichtflüchtigen Speichers 1304 aktualisieren.
  • Nach Ausführen der ersten Aktualisierung des Teiles 1340 der ersten Kopie 1384 auf die erste Anforderung 1376 hin kann die Steuereinrichtung 1330 eine zweite Aktualisierung der zweiten Kopie 1310 in dem nichtflüchtigen Speicher 1304 auf der Grundlage der ersten Aktualisierung initiieren. Die zweite Aktualisierung kann beispielsweise in einer atomischen Konsolidierungsoperation 1324 enthalten sein, um der ersten Kopie 1384 in dem flüchtigen Speicher 1344 zugehörige Modifikationen mit der zweiten Kopie 1310 in dem nichtflüchtigen Speicher 1304 zu vermengen, wie durch Speichern von Aktualisierungen 1328 in dem nichtflüchtigen Speicher 1304, um die der ersten Kopie 1384 zugehörigen Modifikationen anzugeben.
  • Bei einem bestimmten Beispiel kann die Steuereinrichtung 1330 die zweite Aktualisierung auf ein Detektieren hin ausführen, dass eine Anzahl von an der ersten Kopie 1384 erfolgten Modifikationen einen Schwellwert 1348 genügt. Zur Veranschaulichung kann der Zähler 1352 konfiguriert sein, um einen Wert 1354 zu speichern, der eine Anzahl von Modifikationen an der ersten Kopie 1384 angibt, die seit einer vorherigen Aktualisierung für die zweite Kopie 1310 ausgeführt sind. Auf den Empfang der ersten Anforderung 1376 hin kann die Steuereinrichtung 1330 ausgelegt sein, um den Wert 1354 zu modifizieren (z.B. zu inkrementieren) und um zu bestimmen, ob der Wert 1354 dem Schwellwert 1348 genügt. Als ein nicht beschränkendes veranschaulichendes Beispiel kann der Schwellwert 1348 zehn Modifikationen, 20 Modifikationen oder einer anderen Anzahl von Modifikationen entsprechen, und die Steuereinrichtung 1330 kann ausgelegt sein, um die zweite Aktualisierung auf ein Detektieren hin auszuführen, dass der Wert 1354 größer als oder gleich 10, 20 oder einer anderen Zahl ist.
  • Bei einem besonderen Beispiel ist die Steuereinrichtung 1330 ausgelegt, um eine Verdichtungsoperation in dem nichtflüchtigen Speicher 1344 auf die Ausführung der zweiten Aktualisierung hin auszuführen. Nach Ausführen der zweiten Aktualisierung kann die Steuereinrichtung 1330 beispielsweise die dem Teil 1340 entsprechende Datenstruktur „löschen“ (oder „leeren“ um beispielsweise zu ermöglichen, dass anschließende L2P-Einträge dem Teil 1340 hinzuzufügen sind).
  • Die zweite Aktualisierung ist in Bezug auf ein oder mehrere andere Operationen nichtblockierend, die durch die Datenspeichervorrichtung 1302 ausgeführt werden können. Die Datenspeichervorrichtung 1302 kann beispielsweise ausgelegt sein, um eine oder mehrere Operationen gleichzeitig mit der zweiten Aktualisierung auszuführen. Zur weiteren Veranschaulichung ist die Steuereinrichtung 1330 ausgelegt, um eine zweite Anforderung 1378 für einen Zugriff auf den nichtflüchtigen Speicher 1304 gleichzeitig mit der zweiten Aktualisierung auszuführen (beispielsweise anstatt eines Blockierens der Leistung der zweiten Anforderung 1378 bis zum Abschluss der zweiten Aktualisierung oder umgekehrt). Als veranschaulichendes Beispiel kann die zweite Anforderung 1378 eine Schreiboperation angeben, um Daten 1377 in den nichtflüchtigen Speicher 1304 zu schreiben, und die zweite Anforderung 1378 kann die Daten 1377 in den nichtflüchtigen Speicher 1304 gleichzeitig mit der Ausführung der zweiten Aktualisierung schreiben.
  • Die Steuereinrichtung 1330 ist ausgelegt, um eine Steuerungs-Sync-Operation 1322 auszuführen. Die Steuerungs-Sync-Operation 1322 kann ein Speichern der ersten Kopie 1384 in den nichtflüchtigen Speicher 1304 umfassen (beispielsweise durch „Vermengen“ von Änderungen, der an der ersten Kopie 1384 erfolgt sind, mit der zweiten Kopie 1310). Die Steuereinrichtung 1330 kann ausgelegt sein, um die Steuerungs-Sync-Operation 1322 auszuführen, um die erste Kopie 1384 der Steuerungstabelle in den nichtflüchtigen Speicher 1304 unabhängig von der atomischen Konsolidierungsoperation 1324 zu kopieren.
  • Die Steuerungs-Sync-Operation 1322 kann der zweiten Aktualisierung zugehörige Änderungen an den nichtflüchtigen Speicher 1304 „übergeben“. Zur weiteren Veranschaulichung kann die zweite Aktualisierung auf einer atomischen Basis ausgeführt werden, wo die zweite Aktualisierung entweder erfolgreich ist oder versagt. Die Leistung der Steuerungs-Sync-Operation 1322 kann bewirken, dass die zweite Aktualisierung erfolgreich, wie durch „Festlegen“ von der zweiten Aktualisierung zugehörigen Änderungen.
  • Alternativ kann die zweite Aktualisierung in einigen Fällen versagen. So kann beispielsweise in einigen Fällen ein undankbares Abschalt-(UGSD)-Ereignis vor der Steuerungs-Sync-Operation 1322 auftreten. Das UGSD-Ereignis kann bewirken, dass in dem nichtflüchtigen Speicher 1344 gespeicherte Informationen von der Datenspeichervorrichtung 1302 verloren sind. Ein UGSD-Ereignis, welches vor der Steuerungs-Sync-Operation 1322 auftritt, kann beispielsweise bewirken, dass die erste Kopie 1384 aus dem flüchtigen Speicher 1344 (und aus der Datenspeichervorrichtung 1302) verloren ist.
  • Die Steuereinrichtung 1330 ist ausgelegt, um ein UGSD-Ereignis nach der zweiten Aktualisierung zu detektieren und um der zweiten Aktualisierung zugehörige Operationen nach dem UGSD-Ereignis neu auszuführen. Die zweite Kopie 1310 kann beispielsweise einen letzten geöffneten Block des nichtflüchtigen Speichers 1304, wie des Blocks 1306 angeben. Die Steuereinrichtung 1330 kann ausgelegt sein, um die Operationen durch Abtasten des Blocks 1306 neu auszuführen, damit in den nichtflüchtigen Speicher 1304 geschriebene Daten vor dem UGSD-Ereignis identifiziert werden, wie durch Identifizieren der Daten 1374, der Daten 1377 oder beider. Als veranschaulichtes Beispiel kann die Steuereinrichtung 1330 Metadaten (z.B. eine Headerinformation) der Daten 1374, 1377 abtasten, um zu bestimmen, dass die Daten 1374, 1377 in den nichtflüchtigen Speicher 1304 nach einer vorherigen Steuerungs-Sync-Operation (beispielsweise einer Steuerungs-Sync-Operation, welche die erste Kopie 1384 in den nichtflüchtigen Speicher 1304 schrieb) und vor dem UGSD-Ereignis geschrieben wurden.
  • Die Steuereinrichtung 1330 kann ausgelegt sein, um eine oder mehrere der zweiten Aktualisierung zugehörige Operationen auf das Identifizieren von Daten hin neu auszuführen, die in den nichtflüchtigen Speicher 1304 vor dem UGSD-Ereignis geschrieben sind. Nach Abrufen der ersten Kopie 1384 aus dem nichtflüchtigen Speicher 1304 und Speichern (z.B. im Cachespeicher) der ersten Kopie 1384 in dem flüchtigen Speicher 1344 kann die Steuereinrichtung 1330 beispielsweise die zweite Kopie 1310 aktualisieren (z.B. die erste Kopie 1384 erzeugen) und sie kann die Steuerungs-Sync-Operation 1322 neu ausführen.
  • Die Steuerungs-Sync-Operation 1322 kann in Bezug auf eine oder mehrere Anforderungen von der Vorrichtung 1380 her blockierend sein. Die Steuereinrichtung 1330 kann beispielsweise ausgelegt sein, um die Ausführung einer Anforderung bis zum Abschluss der Steuerungs-Sync-Operation 1322 (oder umgekehrt) zu blockieren.
  • Die Steuerungs-Sync-Operation 1322 kann ein Kopieren einer Zeigerinformation von dem flüchtigen Speicher 1344 in den nichtflüchtigen Speicher 1304 umfassen, wie durch Kopieren eines Zeigers, der eine Stelle des nichtflüchtigen Speichers 1304 angibt, welches die zweite Kopie 1310 der Steuerungstabelle speichert (beispielsweise die Aktualisierungen 1328 enthält). In diesem Fall ist die Steuereinrichtung 1330 ausgelegt, um einen Zeiger innerhalb der Steuerungstabelle zu aktualisieren, um eine Stelle der zweiten Kopie 1310 der Steuerungstabelle dem nichtflüchtigen Speicher 1304 zu geben.
  • Ein oder mehrere unter Bezugnahme auf 13 beschriebene Aspekte können es ermöglichen, dass eine Konsolidierungsoperation (beispielsweise die atomische Konsolidierungsoperation 1324) in einer nichtblockierenden Weise ohne Risiko eines Datenverlustes aufgrund eines UGSD-Ereignisses auszuführen ist. Falls ein UGSD-Ereignis vor der Ausführung einer Steuerungs-Sync-Operation auftritt, die Änderungen der Konsolidierungsoperation „festlegt“, können Operationen der Aktualisierungsoperation nach dem Hochfahren der Datenspeichervorrichtung 1302 erneut ausgeführt (oder „wiedergegeben“) werden. Folglich kann eine Konsolidierungsoperation in einer nichtblockierenden Weise ohne Risiko eines Datenverlustes aufgrund eines UGSD-Ereignisses ausgeführt werden.
  • 14 ist ein Blockdiagramm, welches gewisse Beispiele von Operationen veranschaulicht, die in der Datenspeichervorrichtung 1302 von 13 ausgeführt werden können. In einem bestimmten bzw. besonderen Beispiel sind der Steuereinrichtung 1330 zugehörige Merkmale in dem oberen Teil von 14 dargestellt, und dem nichtflüchtigen Speicher 1304 zugehörige Merkmale sind in dem unteren Teil von 14 dargestellt.
  • 14 stellt gewisse veranschaulichende Aspekte der ersten Kopie 1384 (beispielsweise eine gegenwärtige Version einer Steuerungstabelle) dar. Die erste Kopie 1384 kann beispielsweise Zeiger 1404 (beispielsweise Zeiger, die gegenwärtige Abschnitte, auch als „Blöcke“ oder „Teile“ einer L2P-Tabelle bezeichnet), eine Liste 1408 von freien Blöcken, die für neue Schreibvorgänge verfügbar sind, und den Teil 1340 umfassen. Bei einem besonderen bzw. bestimmten Beispiel umfasst (oder entspricht) der Teil 1340 eine Aktualisierungs-Datenstruktur, die eine Vielzahl von Listen von Adressenmodifikationen aufweist, deren jede einem eindeutigen Satz von logischen Blockadressen (LBAs) entspricht. Der Teil 1340 kann beispielsweise eine Liste von L2P-Umsetzungen angeben, die in dem nichtflüchtigen Speicher 1304 ausgeführt, jedoch noch nicht konsolidiert sind.
  • Die Steuereinrichtung 1330 kann außerdem gecachet L2P-Teile 1412 (z.B. eine CAT-Tabelle) speichern. Zur weiteren Veranschaulichung stellt das Beispiel von 14 dar, dass die gecachet L2P-Teile 1412 die Teile 1, 2, 12, 32, 57 und 953 enthalten können. Zur Veranschaulichung kann jeder L2P-Teil einem Bereich von LBAs (beispielsweise einem 32-Kilobyte-kB)- Teil, der einen 32-Megabyte-(MB)-Bereich von logischen Adressen in physikalischen Adressen abbildet) entsprechen und physikalische Adressenumsetzungen für die LBAs enthalten. Anstelle eines Kopierens der gesamten L2P-Tabelle aus dem nichtflüchtigen Speicher 1304 in den flüchtigen Speicher 1344 können somit Segmente der Tabelle, die zu aktualisieren sind, als die gecachete bzw. zwischengespeicherte L2P-Teile 1412 in den flüchtigen Speicher 1334 kopiert werden.
  • Der nichtflüchtige Speicher 1304 kann eine L2P-Tabelle 1416 speichern. Bei dem veranschaulichenden Beispiel von 14 enthält die L2P-Tabelle 1416 die Teile 1, 2, 3, 4, 5, 6 ... 100.000. Der Teil 1 kann beispielsweise Umsetzungsdaten für den ersten 32-MB-Bereich von logischen Adressen (beispielsweise 0-32 MB) enthalten, der Teil 2 kann Umsetzungsdaten für einen zweiten 32-MB-Bereich von logischen Adressen z.B. 32-64 MB) enthalten, etc. Obwohl 100.000 Teile veranschaulicht sind, was beispielsweise einen 3,2 Terabyte-(TB) Bereich von logischen Adressen unterstützt) kann die L2P-Tabelle 1416 bei anderen Implementierungen weniger als 100.000 Teile oder mehr als 100.000 Teile umfassen, wie auf der Grundlage der Speicherkapazität des nichtflüchtigen Speichers 1304 und der Größe jedes der L2P-Teile.
  • Der nichtflüchtige Speicher 1304 speichert außerdem die Aktualisierungen 1328. Die Aktualisierungen 1328 können beispielsweise durch die atomische Konsolidierungsoperation 1324 in dem nichtflüchtigen Speicher 1304 gespeichert werden. Bei dem veranschaulichenden Beispiel von 14 enthalten die Aktualisierungen 1328 die Teile 2 und 12.
  • Der nichtflüchtige Speicher 1304 speichert außerdem die zweite Kopie 1310 (beispielsweise eine festgelegte Version einer Steuerungstabelle). Die zweite Kopie 1310 kann Informationen enthalten, die im Vergleich zu der ersten Kopie 1384 „alt“ oder „abgelaufen“ sind (beispielsweise Informationen, die durch die Steuerungs-Sync-Operation 1322 von 13 mit der ersten Kopie 1384 nicht „synchronisiert“ sind). Die zweite Kopie 1310 kann beispielsweise Zeiger 1422 enthalten, die die „alten“ L2P-Teile angeben.
  • Zur Veranschaulichung können die Zeiger 1422 der zweiten Kopie 1310 Teile 1, 2, 3 und 4 der L2P-Tabelle 1416 angeben (z.B. darauf zeigen). Bei dem Beispiel von 14 geben bzw. zeigen die Zeiger 1404 der ersten Kopie 1384 eine Aktualisierung für den Teil 2 an. Die einer bestimmten logischen Adresse zugehörigen Daten können beispielsweise von einer ersten physikalischen Adresse in eine zweiten physikalische Adresse kopiert werden, und die Daten unter der ersten physikalischen Adresse können ungültig gemacht sein. Als Ergebnis können die Aktualisierungen 1328 in den nichtflüchtigen Speicher 1304 (beispielsweise durch die atomische Konsolidierungsoperation 1324) geschrieben werden, um die zweite physikalische Adresse (anstelle der ersten physikalischen Adresse) anzuzeigen. Vor der Ausführung der Steuerungs-Sync-Operation 1322 kann die in dem nichtflüchtigen Speicher 1304 gespeicherte Steuerungsinformation die „alte“ physikalische Adresse (die erste physikalische Adresse) angeben. Auf die Ausführung der Steuerungs-Sync-Operation 1322 hin kann die in dem nichtflüchtigen Speicher 1304 gespeicherte Steuerungsinformation die „korrekte“ physikalische Adresse (die zweite physikalische Adresse) angeben. Ein spezifisches Beispiel der Operation, welche Komponenten von 14 enthält, wird weiter detailliert unter Bezugnahme auf 15 beschrieben.
  • Das Beispiel von 14 veranschaulicht, dass eine Konsolidierungsoperation und eine Steuerungs-Sync-Operation separat in der Datenspeichervorrichtung 1302 ausgeführt werden können. Als Ergebnis können eine oder mehrere Operationen einer Konsolidierungsoperation im Falle eines UGSD-Ereignisses vor der Ausführung der Steuerungs-Sync-Operation „wiedergegeben“ werden.
  • 15 ist ein Leiterdiagramm, welches gewisse Beispiele von Operationen 1500 veranschaulicht, die in der Datenspeichervorrichtung 1302 von 13 ausgeführt werden können. Bei dem Beispiel von 13 werden die Operationen 1500 unter Bezugnahme auf die Vorrichtung 1380, die FTL-Schicht 1338, die erste Kopie 1384 der Steuerungstabelle und den nichtflüchtigen Speicher 1304 beschrieben.
  • Die Operationen 1500 enthalten den Empfang eines eine erste logische Adresse angebenden ersten Schreibbefehls bei 1502. Der erste Schreibbefehl kann beispielsweise einer bestimmten, von der Vorrichtung 1380 gemäß 13 empfangenen Anforderungen entsprechen.
  • Die Operationen 1500 umfassen ferner ein Hinzufügen einer ersten L2P-Adresse, die sich auf den Teil 1340 der ersten Kopie 1384 bei 1504 abbildet. Die Steuereinrichtung 1330 kann beispielsweise den Teil 1340 aktualisieren um anzugeben, dass die erste logische Adresse einer ersten physikalischen Adresse des nichtflüchtigen Speichers 1304 zugehörig ist, wie durch Addieren eines Eintrags in den Teil 1340 um anzugeben, dass die erste logische Adresse der ersten physikalischen Adresse zugehörig ist.
  • Die Operationen 1500 umfassen ferner das Ausführen einer ersten Schreiboperation, die der ersten physikalischen Adresse zugehörig ist, um den ersten Schreibbefehl bei 1506 auszuführen. Die Datenspeichervorrichtung 1302 kann beispielsweise die durch den ersten Schreibbefehl angegebenen Daten in den nichtflüchtigen Speicher 1304 schreiben.
  • Die Operationen 1500 umfassen ferner den Empfang bei 1508 eines zweiten Schreibbefehls, der eine zweite logische Adresse angibt. Der zweite Schreibbefehl kann beispielsweise der ersten Anforderung 1376 von 13 entsprechen.
  • Die Operationen 1500 umfassen ferner bei 1510 das Hinzufügen einer zweiten L2P-Adresse, welche sich auf den Teil 1340 abbildet. Die Steuereinrichtung 1330 kann beispielsweise den Teil 1340 aktualisieren um anzugeben, dass die zweite logische Adresse einer zweiten physikalischen Adresse des nichtflüchtigen Speichers 1304 zugehörig ist, die durch Addieren eines Eintrags zu dem Teil 1340 um anzugeben, dass die zweite logische Adresse der zweiten physikalischen Adresse zugehörig ist.
  • Die Operationen 1500 umfassen ferner bei 1512 das Ausführen einer der zweiten physikalischen Adresse zugehörigen zweiten Schreiboperation, um den zweiten Schreibbefehl auszuführen. Die Datenspeichervorrichtung 1302 kann die Daten 1374 beispielsweise in den nichtflüchtigen Speicher 1304 schreiben.
  • Die Operationen 1500 umfassen ferner bei 1514 das Lesen eines ersten der ersten logischen Adresse zugehörigen L2P-Teiles aus einer ersten Speicherstelle des nichtflüchtigen Speichers 1304. Der erste L2P-Teil kann beispielsweise aus der L2P-Tabelle 1416 in dem nichtflüchtigen Speicher 1304 abgeholt und in dem nichtflüchtigen Speicher 1344 innerhalb der gecachet L2P-Teile 1412 gespeichert (z.B. zwischengespeichert bzw. gecachet) werden.
  • Die Operationen 1500 umfassen ferner bei 1516 ein Vermengen einer Aktualisierung der ersten logischen Adresse in den L2P-Teil. Die Steuereinrichtung 1330 kann beispielsweise den ersten L2P-Teil modifizieren um anzugeben, dass sich die erste L2P-Adresse abbildet (z.B. durch Vermengen der ersten L2P-Adresse, die sich mit dem ersten L2P-Teil abbildet, um einen aktualisierten ersten L2P-Teil zu erzeugen).
  • Die Operationen 1500 umfassen ferner bei 1518 ein Schreiben des aktualisierten ersten L2P-Teiles in eine zweite Stelle des nichtflüchtigen Speichers 1304. Die Datenspeichervorrichtung 1302 kann beispielsweise den aktualisierten ersten L2P-Teil aus dem flüchtigen Speicher 1344 abholen und den aktualisierten ersten L2P-Teil in Aktualisierungen 1328 im nichtflüchtigen Speicher 1304 speichern (um beispielsweise die „korrekte“ L2P-Abbildung anzugeben, die der ersten logischen Adresse zugehörig ist).
  • Die Operationen 1500 umfassen ferner bei 1520 ein Aktualisieren eines dem ersten L2P-Teil zugehörigen Zeigers, um die zweite Stelle bzw. Speicherstelle anzugeben. Ein erster Zeiger des Zeigers 1404 kann beispielsweise aktualisiert sein, um anstelle der ersten Speicherstelle die zweite Stelle anzugeben (um beispielsweise anzugeben, dass die zweite Stelle die der ersten logischen Adresse zugehörige „korrekte“ Abbildung speichert).
  • Die Operationen 1500 umfassen ferner bei 1522 ein Lesen eines der zweiten logischen Adresse zugehörigen zweiten L2P-Teiles aus einer dritten Stelle des nichtflüchtigen Speichers 1304. Der zweite L2P-Teil kann beispielsweise aus der L2P-Tabelle 1416 in dem nichtflüchtigen Speicher 1304 abgeholt und in dem flüchtigen Speicher 1344 innerhalb der zwischengespeicherten bzw. cached L2P-Teiles 1412 gespeichert (z.B. zwischengespeichert bzw. gecachet) werden.
  • Die Operationen 1500 umfassen ferner bei 1524 ein Mischen bzw. Vermengen einer Aktualisierung der zweiten logischen Adresse in den zweiten L2P-Teil. Die Steuereinrichtung 1330 kann beispielsweise den zweiten L2P-Teil modifizieren, um die zweite L2P-Adressenabbildung anzugeben (beispielsweise durch Mischen der zweiten L2P-Adressenabbildung mit dem zweiten L2P-Teil, um einen aktualisierten zweiten L2P-Teil zu erzeugen).
  • Die Operationen 1500 umfassen ferner bei 1532 ein Schreiben des aktualisierten L2P-Teiles in eine vierte Stelle des nichtflüchtigen Speichers 1304. Die Datenspeichervorrichtung 1302 kann beispielsweise den aktualisierten L2P-Teil aus dem flüchtigen Speicher 1344 abholen und den aktualisierten zweiten L2P-Teil in Aktualisierungen 1328 im nichtflüchtigen Speicher 1304 kopieren (um beispielsweise die der zweiten logischen Adresse zugehörige „korrekte“ L2P-Abbildung anzugeben. Bei einem besonderen Beispiel entspricht die Operation 1532 der unter Bezugnahme auf 13 beschriebenen zweiten Aktualisierung.
  • Die Operationen 1500 umfassen ferner bei 1534 ein Aktualisieren eines dem zweiten L2P-Teil zugehörigen Zeigers, um die zweite Stelle anzugeben. Ein zweiter Zeiger der Zeiger 1404 kann beispielsweise aktualisiert sein bzw. werden, um anstelle der dritten Stelle die vierte Stelle anzugeben (um beispielsweise anzugeben, dass die zweite Stelle die der zweiten logischen Adresse zugehörige „korrekte“ Abbildung speichert).
  • Bei dem Beispiel von 15 werden die Operationen 1514, 1516, 1518, 1520, 1522, 1524, 1532 und 1534 in Verbindung mit einer nichtblockierenden Konsolidierungsoperation 1550 ausgeführt. Die nichtblockierende Konsolidierungsoperation 1550 kann der unter Bezugnahme auf 13 bestehenden atomischen Konsolidierungsoperation 1324 entsprechen.
  • Die nichtblockierende Konsolidierungsoperation 1550 kann gleichzeitig mit einer oder mehreren anderen Operationen in der Datenspeichervorrichtung 1302 ausgeführt werden. Zur Veranschaulichung zeigt das Beispiel von 15, dass eine oder mehrere einem Schreibprozess 1560 zugehörige Operationen während der nichtblockierenden Konsolidierungsoperation 1550 ausgeführt werden können. Eine oder mehrere Operationen des Schreibprozesses 1560 können während der nichtblockierenden Konsolidierungsoperation 1550 und ohne eine Verzögerung (oder (Blockierung“) des Schreibprozesses 1560 bis zum Abschluss der nichtblockierenden Konsolidierungsoperation 1550 ausgeführt werden.
  • Zur weiteren Veranschaulichung kann der Schreibprozess 1560 bei 1526 den Empfang eines dritten Schreibbefehls umfassen, der eine dritte logische Adresse angibt. Der dritte Schreibbefehl kann beispielsweise der von der Vorrichtung 1380 von 13 empfangenen zweiten Anforderung 1378 entsprechen. Der Schreibprozess 1560 kann ferner bei 1528 ein Hinzufügen einer dritten L2P-Adressenabbildung zu dem Teil 1340 der ersten Kopie 1384 umfassen. Die Steuereinrichtung 1330 kann den Teil 1340 beispielsweise aktualisieren um anzugeben, dass die dritte logische Adresse einer dritten physikalischen Adresse des nichtflüchtigen Speichers 1304 zugehörig ist, die durch Hinzufügen eines Eintrags zu dem Teil 1340 um anzugeben, dass die dritte logische Adresse der dritten physikalischen Adresse zugehörig ist. Der Schreibprozess 1560 kann bei 1530 ferner das Ausführen einer der dritten physikalischen Adresse zugehörigen dritten Schreiboperation umfassen, um den dritten Schreibbefehl auszuführen. Die Datenspeichervorrichtung 1302 kann beispielsweise durch den dritten Schreibbefehl angegebene Daten in den nichtflüchtigen Speicher 1304 schreiben, wie durch die Schreiben der Daten 1377 in den nichtflüchtigen Speicher 1304.
  • Nach Ausführung der nichtblockierenden Konsolidierungsoperation 1550 können die Operationen 1500 ferner das Ausführen einer Steuerungs-Sync-Operation 1570 enthalten. Bei einem besonderen Beispiel entspricht die Steuerungs-Sync-Operation 1570 der Steuerungs-Sync-Operation 1322 von 13. Die Steuerungs-Sync-Operation 1570 kann ausgeführt werden, um Operationen der nichtblockierenden Konsolidierungsoperation 1550 „festzulegen“ (beispielsweise so, dass Operationen der nichtblockierenden Konsolidierungsoperation 1550 „erfolgreich sind“.
  • Die Steuerungs-Sync-Operation 1570 kann bei 1536 ein Schreiben des Teiles 1340 in den nichtflüchtigen Speicher 1304 umfassen. Die Steuerungs-Sync-Operation 1570 kann ferner bei 1538 ein Schreiben der zwischengespeicherten L2P-Teile 1412 in nichtflüchtigen Speichern 1304 und bei 1540 ein Schreiben der Zeiger 1404 in den nichtflüchtigen Speicher 1304 umfassen. Der Teil 1340, die zwischengespeicherten L2P-Teile 1412 und die Zeiger 1404 können beispielsweise dadurch in den nichtflüchtigen Speicher 1304 geschrieben werden, dass die erste Kopie 1384 von 13 in den nichtflüchtigen Speicher 1304 geschrieben wird.
  • Die Steuerungs-Sync-Operation 1570 kann bei 1542 optional ein Schreiben von anderen Informationen aus der Steuerungstabelle in den nichtflüchtigen Speicher 1304 umfassen. Als ein veranschaulichendes Beispiel kann die Liste 1408 von freien Blöcken, die für neue Schreibvorgänge verfügbar sind, in den nichtflüchtigen Speicher 1304 geschrieben werden.
  • Die Steuerungs-Sync-Operation 1570 kann ferner 1544 ein Aktualisieren eines Zeigers umfassen, um die aktualisierte Steuerungstabelle anzugeben. Ein durch den nichtflüchtigen Speicher 1304 gespeicherter Zeiger kann beispielsweise aktualisiert werden, um auf die Ausführung der Steuerungs-Sync-Operation 1570 hin eine bestimmte Stelle des nichtflüchtigen Speichers 1304 anzugeben, welche die erste Kopie 1384 speichert.
  • Das Beispiel von 15 veranschaulicht, dass eine Konsolidierungsoperation in einer nichtblockierenden Weise ausgeführt werden kann, um verzögernde (oder „blockierende“) Operationen eines Schreibprozesses, wie des Schreibprozesses 1560 zu vermeiden. Infolgedessen kann eine Latenz verringert sein.
  • Zusätzlich zu der Latenzverringerung, die sich auf der nichtblockierenden Konsolidierungsoperation 1550 ergibt, kann sich eine zusätzliche Latenzverringerung auf der Grundlage einer Struktur des Teiles 1340 ergeben. Bei einer Implementierung, bei der der Teil 1340 eine einzelne bzw. einzige nicht sortierte Liste von LBA-Abbildungen enthält, können beispielsweise sämtliche LBA-Abbildungen entsprechend einem einzigen L2P-Teil (beispielsweise sämtliche LBAs innerhalb eines spezifizierten Bereichs) innerhalb der Liste zur Konsolidierung eine relativ lange, linear-zeitliche Suche über eine relativ große Anzahl von Einträgen der Liste umfassen, wiederholt für jeden der L2P-Teile, um auf der Grundlage von Einträgen in dem Teil 1340 modifiziert zu werden bzw. sein.
  • Die derartigen linear-zeitlichen Suchvorgängen zugehörige Latenz kann dadurch reduziert werden, dass der Teil 1340 als Mehrzahl von Listen von LBA-Abbildungen angeordnet wird. Adressenbereiche, die jeder der Mehrzahl von Listen zugehörig sind, können unter den Listen verschachtelt sein. So kann beispielsweise die erste Liste L2P-Abbildungen entsprechend dem Teil 1 der L2P-Tabelle folgen, eine zweite Liste kann L2P-Abbildungen entsprechend dem Teil 2 der L2P-Tabelle folgen, etc., bis zu einer 256. Liste, die dem Teil 256 der L2P-Tabelle entspricht. Die erste Liste kann außerdem Abbildungen entsprechend dem Teil 257 folgen; die zweite Liste kann außerdem Abbildungen entsprechend Details 258 folgen, und so weiter. Generell kann die Listen Nummer „n“ (n=1 bis 256) Abbildungen für den Teil (n, n+256, n+512, etc. folgen. Da jeder Prozess, der auf den nichtflüchtigen Speicher 1304 zugreift, auf einen Bereich von Speicheradressen zugreifen kann, die nicht größer sind als 8 Gigabyte (GB) wird jeder Prozess auf nicht mehr als einen einzigen Teil auswirken, der jeder der Listen zugewiesen ist. Somit enthält jede Liste, welche dem Prozess zugehörige Abbildungsinformationen enthält, lediglich Abbildungsinformationen eines einzelnen Teiles (z.B. enthält die erste Liste lediglich Abbildungen für den Teil 1 und nicht für den Teil 257, 513, etc.). Die einer Einzellistenstruktur des Teiles 1340 zugehörigen linear zeitlichen Suchvorgänge können daher reduziert oder elementiert werden. Es sollte einzusehen sein, dass die Anzahl von Listen (256) und der Bereich von Adressen eines Prozesses (8GB) lediglich veranschaulichend sind und dass andere Implementierungen andere Zahlen von Listen und andere Bereiche von Adressen umfassen können.
  • 16 stellt gewisse veranschaulichende Beispiele von Operationen 1600 dar, die durch eine Datenspeichervorrichtung ausgeführt werden können. Die Operationen 1600 von Fig. 16 können beispielsweise durch die Datenspeichervorrichtung 1302 von 13 ausgeführt werden.
  • Die Operationen 1600 umfassen bei 1602 eine Kommunikation mit einem Host. Die Datenspeichervorrichtung 1302 kann beispielsweise eine oder mehrere Anforderungen für einen Zugriff auf den nichtflüchtigen Speicher 1304 empfangen, wie durch Empfangen der ersten Anforderung 1376.
  • Die Operationen 1600 umfassen ferner bei 1604 das Ausführen von Aktualisierungen bei einem ersten m-Satz (m-Satz 1) und einem zweiten m-Satz (m-Satz 2) einer Aktualisierungsschicht (U-Schicht) in einem flüchtigen Speicher. Die Steuereinrichtung 1330 kann beispielsweise ausgelegt sein, um durch den Teil 1340 in dem nichtflüchtigen Speicher 1344 angegebene L2P-Abbildungen auf die erste Anforderung 1376 hin zu aktualisieren.
  • Die Operationen 1600 umfassen ferner bei 1606 das Ausführen einer atomischen Entleerung und Verdichtung zum gleichzeitigen Leeren und Verdichten der U-Schicht zu bzw. in einer zwischengespeicherten Adressenumsetzungstabelle (CAT) in dem flüchtigen Speicher (beispielsweise dazu, um einen m-Satz 1* und einen m-Satz 2* zu erzeugen). Die Steuereinrichtung 1330 kann beispielsweise ausgelegt sein, um den Teil 1340 für die zwischengespeicherten L2P-Teile 1412 zu leeren und zu verdichten.
  • Die Operationen 1600 umfassen ferner bei 1608 das Ausführen einer nichtblockierenden asynchronen Konsolidierung (beispielsweise, um einen m-Satz 1* und einen m-Satz 2* in einen Flash- oder anderen nichtflüchtigen Speicher zu schreiben).
  • Die Steuereinrichtung 1330 kann beispielsweise ausgelegt sein, um die atomische Konsolidierungsoperation 1324 oder die nichtblockierende Konsolidierungsoperation 1550 auszuführen.
  • Die Operationen 1600 umfassen ferner ein Schreiben eines Protokolls 1620, welches Zeiger auf neue aktualisierte m-Sätze (z.B., um auf die m-Sätze 1*, 2* zu zeigen) für den nichtflüchtigen Speicher in einer nächsten nichtblockierenden Steuerungs-Sync-Operation umfasst (beispielsweise eine der Steuerungs-Sync-Operationen 1322, 1570). Die Aktualisierung der Zeiger auf die neu aktualisierten m-Sätze kann das Protokoll im Vergleich zu einem „alten“-Protokoll 1610 aktualisieren, welches „alte“ m-Sätze (die m-Sätze 1,2) angibt. Das Protokoll 1610 enthält Zeiger auf „alte“ m-Sätze (die m-Sätze 1, 2), und das Protokoll 1620 enthält Zeiger auf die „neuen“ m-Sätze (die m-Sätze 1*, 2*). Die Protokolle 1610, 1620 können beispielsweise jeweils den Kopien 1310, 1384 einer Steuerungstabelle entsprechen, und die zweite Kopie 1310 der Steuerungstabelle kann auf der Grundlage der ersten Kopie 1384 der Steuerungstabelle aktualisiert sein. Die zweite Kopie 1310 kann die Zeiger 1422 auf „alte“ L2P-Teile enthalten, und die erste Kopie 1384 kann Zeiger 1404 auf „gegenwärtige“ L2P-Teile enthalten, wie dies in dem Beispiel von 14 dargestellt ist.
  • Die nichtblockierende Steuerungs-Sync-Operation kann unter Heranziehung eines Sperrbefehls in einer nichtblockierenden Weise ausgeführt werden. Der Sperrbefehl kann beispielsweise dem Sperrbefehl 454 von 4 entsprechen. Der Sperrbefehl kann eine Kohärenz von Daten und Steuerungsinformationen ermöglichen, die in den nichtflüchtigen Speicher geschrieben werden bzw. sind.
  • Die Operationen 1600 können optional ein Detektieren eines UGSD-Ereignisses umfassen. In diesem Fall werden die Steuerungstabellen zurück gerollt und wieder gewonnen, wie durch Wiedergewinnen eines letzten gespeicherten Protokolls aus dem nichtflüchtigen Speicher und dem Schreiben des letzten gespeicherten Protokolls in den flüchtigen Speicher. In diesem Fall wurden kürzlich vorgenommene Aktualisierungen, die bereits in der U-Schicht des flüchtigen Speichers und der CAT-Tabelle durch die Steuereinrichtung ausgeführt wurden, ohne Verlust an Kohärenz verloren gehen und ignoriert werden.
  • 17 ist ein Fluss- bzw. Ablaufdiagramm eines besonderen veranschaulichenden Beispiels eines Verfahrens 1700 des Betriebs bzw. der Operation einer Vorrichtung. Das Verfahren 1700 kann beispielsweise durch die Datenspeichervorrichtung 1302 von 13 ausgeführt werden.
  • Das Verfahren 1700 kann bei 1702 den Empfang einer ersten Anforderung durch eine erste Vorrichtung von einer zweiten Vorrichtung umfassen, um eine erste Schreiboperation in einen nichtflüchtigen Speicher der ersten Vorrichtung auszuführen. Die erste Vorrichtung kann beispielsweise der Datenspeichervorrichtung 1302 entsprechen, und die zweite Vorrichtung kann der Vorrichtung 1380 entsprechen. Die Datenspeichervorrichtung 1302 kann die erste Anforderung 1376 zum Schreiben der Daten 1374 in den nichtflüchtigen Speicher 1304 von der Vorrichtung 1380 empfangen.
  • Das Verfahren 1700 umfasst ferner bei 1704 ein Ausführen einer ersten Aktualisierung eines Teiles einer ersten Kopie der in einem flüchtigen Speicher der ersten Vorrichtung gespeicherten Steuerungstabelle auf das Ausführen der ersten Schreiboperation hin. Die Datenspeichervorrichtung 1302 kann beispielsweise Informationen in den flüchtigen Speicher 1344 aktualisieren, wie durch Ausführen der Operation 1504 oder der Operation 1510 von 15.
  • Das Verfahren 1700 umfasst ferner bei 1706 ein Ausführen einer zweiten Aktualisierung einer zweiten Kopie der Steuerungstabelle in dem nichtflüchtigen Speicher, um Modifikationen der ersten Kopie zu der zweiten Kopie auszubreiten. Die Datenspeichervorrichtung 1302 kann beispielsweise die atomische Konsolidierungsoperation 1324 oder die nichtblockierende Konsolidierungsoperation 1550 zum Schreiben einer der ersten Schreiboperationen zugehörigen L2P-Abbildung von dem flüchtigen Speicher 1344 in den nichtflüchtigen Speicher 1304 ausführen, wie durch Ausführen der Operation 1518 oder der Operation 1532 von 15.
  • Das Verfahren 1700 umfasst ferner ein Ausführen einer zweiten Schreiboperation in den nichtflüchtigen Speicher während des Ausführens der zweiten Aktualisierung bei 1708. Die zweite Schreiboperation kann beispielsweise einer Schreiboperation entsprechen, welche auf der Grundlage der zweiten Anforderung 1378 ausgeführt wird. Als weiteres Beispiel kann die zweite Schreiboperation der Operation 1530 von 15 entsprechen.
  • In Verbindung mit den beschriebenen Ausführungsbeispielen enthält eine Vorrichtung einen nichtflüchtigen Speicher (beispielsweise den nichtflüchtigen Speicher 1304) und eine Steuereinrichtung (beispielsweise die Steuereinrichtung 1330), die mit dem nichtflüchtigen Speicher gekoppelt ist. Die Steuereinrichtung enthält einen flüchtigen Speicher (beispielsweise den flüchtigen Speicher 1344), und sie ist ausgelegt, um separate nichtblockierende Steuerungs-Sync-Operationen (beispielsweise die Steuerungs-Sync-Operationen 1322, 1570) und nichtblockierende Konsolidierungsoperationen (beispielsweise eine oder mehrere der atomischen Konsolidierungsoperationen 1324, die nichtblockierende Konsolidierungsoperation 1550 oder die nichtblockierende asynchrone Konsolidierungs-Operation 1606) auszuführen.
  • Die Steuereinrichtung kann ausgelegt sein, um die nichtblockierenden Konsolidierungsoperationen asynchron mit einer unterschiedlichen Rate in Bezug auf die nichtblockierenden Steuerungs-Sync-Operationen auszuführen, wie dies durch einen Aktualisierungsschicht-Füllzustand gefordert ist. Die Steuereinrichtung 1330 kann beispielsweise die nichtblockierenden Konsolidierungsoperationen auf ein Detektieren hin ausführen, dass die Zahl 1354 von Modifikationen für den Teil 1340 dem Schwellwert 1348 genügt (die Steuereinrichtung 1330 kann beispielsweise den Teil 1340 auf das Detektieren eines „Füllzustands“ 1340 auf der Grundlage der Zahl 1354 hin „entleeren“. Die nichtblockierenden Konsolidierungsoperationen können unabhängig von (und mit einer unterschiedlichen Häufigkeit im Vergleich zu) den nichtblockierenden Steuerungs-Sync-Operationen auftreten.
  • Die nichtblockierenden Konsolidierungsoperationen können atomische Operationen sein, die gleichzeitiges Entleeren und Verdichten einer Aktualisierungsschicht (U-Schicht) zu einer zwischengespeicherten Adressenumsetzungstabelle (CAT) in den flüchtigen Speicher umfassen. Der Teil 1340 kann beispielsweise gleichzeitig zu den zwischengespeicherten L2P-Teilen 1412 in dem flüchtigen Speicher 1344 entleert und verdichtet werden.
  • Die Steuereinrichtung kann ausgelegt sein, um das Ausführen von Aktualisierungen für die U-Schicht und die CAT-Tabelle in dem flüchtigen Speicher fortzusetzen (beispielsweise zu zwischengespeicherten L2P-Blöcken, die hier auch als „m-Sätze“ bezeichnet werden), während die aktualisierten m-Sätze in einen Flash- oder anderen nichtflüchtigen Speicher geschrieben werden. Bei diesem Beispiel wird ein Konsolidierungsprozess ausgeführt, der in Bezug auf eine oder mehrere andere Operationen nichtblockierend ist (beispielsweise ohne Blockieren des Schreibens von aktualisierten Steuerungstabellen in den nichtflüchtigen Speicher, wie bei gewissen Vorrichtungen, die Steuerungs-Sync-Operationen und Konsolidierungsoperationen synchron ausführen).
  • Die Steuereinrichtung kann ausgelegt sein, um Host-Schreiboperationen in den nichtflüchtigen Speicher gleichzeitig mit den nichtblockierenden Konsolidierungsoperationen und den nichtblockierenden Steuerungs-Sync-Operationen fortgesetzt auszuführen. Die zweite Anforderung 1378 kann beispielsweise gleichzeitig mit den nichtblockierenden Konsolidierungsoperationen und nichtblockierenden Steuerungs-Sync-Operationen ausgeführt werden.
  • Die Steuereinrichtung kann ausgelegt sein, um ein Protokoll zu aktualisieren, welches Zeiger auf neu aktualisierte m-Sätze enthält und das Protokoll in dem nichtflüchtigen Speicher bei einer nächst nichtblockierenden Steuerungs-Sync-Operation unter Heranziehung eines Sperrbefehls speichert. Der Sperrbefehl kann eine Kohärenz der Daten und der Steuerdaten ermöglichen, die in den nichtflüchtigen Speicher geschrieben werden bzw. sind. Zur Veranschaulichung entspricht das Protokoll dem zweiten Protokoll 1620, und der Sperrbefehl kann dem Sperrbefehl 454 von 4 entsprechen.
  • Die Steuereinrichtung kann ausgelegt sein, um im Falle eines undankbaren Abschalt-(UGSD)-Ereignisses die Steuerungstabellen zu dem flüchtigen Speicher entsprechend einem letzten gespeicherten Protokoll aus einer zuletzt gespeicherten nichtblockierenden Steuerungs-Synchronisierung in den nichtflüchtigen Speicher zurückzurollen und wiederzugewinnen, und in einem solchen Fall werden Aktualisierungen, die bereits in der U-Schicht und der CAT-Tabelle durch die Steuereinrichtung bereits ausgeführt wurden, werden ohne Verlust an Kohärenz verloren gehen und ignoriert. Das „Zurückrollen“ kann beispielsweise ein Abrufen der zweiten Kopie 1310 aus dem nichtflüchtigen Speicher 1304 und das Speichern der zweiten Kopie 1310 in dem flüchtigen Speicher 1344 umfassen.
  • In Verbindung mit verschiedenen Ausführungsbeispielen enthält eine Vorrichtung einen nichtflüchtigen Speicher (beispielsweise den nichtflüchtigen Speicher 1304) und eine Steuereinrichtung (beispielsweise die Steuereinrichtung 1330), die mit dem nichtflüchtigen Speicher gekoppelt ist. Die Steuereinrichtung enthält einen flüchtigen Speicher (beispielsweise den flüchtigen Speicher 1344) und ist so ausgelegt, um nichtblockierende Steuerungs-Sync-Operationen auszuführen (beispielsweise die Steuerungs-Sync-Operationen 1322, 1570). Die Steuereinrichtung ist ferner ausgelegt, um nichtblockierende Konsolidierungsoperationen (beispielsweise eine oder mehrere von der atomischen Konsolidierungsoperation 1324, der nichtblockierenden Konsolidierungsoperation 1550 oder der nichtblockierenden asynchronen Konsolidierung 1606) asynchron in Bezug auf die nichtblockierenden Steuerungs-Sync-Operationen auszuführen. Bei einem besonderen veranschaulichenden Beispiel stellen die nichtblockierenden Konsolidierungsoperationen atomische Operationen dar, die ein gleichzeitiges Entleeren und Verdichten einer Aktualisierungsschicht (beispielsweise des Teiles 1340) für eine zwischengespeicherte Adressenumsetzungstabelle (beispielsweise die zwischengespeicherten L2P-Teile 1412) in den flüchtigen Speicher umfassen. Die Steuereinrichtung kann ausgelegt sein, um Host-Schreiboperationen in den nichtflüchtigen Speicher gleichzeitig mit den nichtblockierenden Konsolidierungsoperationen (beispielsweise durch Ausführen der zweiten Anforderung 1378) auszuführen.
  • In Verbindung mit den beschriebenen Ausführungsbeispielen enthält eine Vorrichtung Mittel bzw. Einrichtungen (beispielsweise den nichtflüchtigen Speicher 1304) zur Speicherung von Daten. Die Vorrichtung enthält ferner Mittel bzw. Einrichtungen (beispielsweise das Vorrichtungsinterface 1372) zum Empfangen einer ersten Anforderung (beispielsweise der ersten Anforderung 1376) für einen Zugriff auf die Einrichtung zur Speicherung von Daten von einer Zugriffsvorrichtung (beispielsweise von der Vorrichtung 1380). Die Vorrichtung enthält ferner Mittel bzw. Einrichtungen (beispielsweise den flüchtigen Speicher 1344) zur Speicherung eines Teiles (beispielsweise des Teiles 1340) einer ersten Kopie (beispielsweise der ersten Kopie 1384) einer der Einrichtung zur Speicherung von Daten zugehörigen Steuerungstabelle. Die Vorrichtung enthält ferner Mittel bzw. Einrichtungen (z.B. die Steuereinrichtung 1330) zur Ausführung einer ersten Aktualisierung des Teiles der ersten Kopie der Steuerungstabelle auf die erste Anforderung hin zur Initiierung einer zweiten Aktualisierung einer zweiten Kopie der Steuerungstabelle in der Einrichtung bzw. der Einrichtungen zur Speicherung von Daten auf der Grundlage der ersten Aktualisierung hin und zur Ausführung einer zweiten Anforderung (beispielsweise der zweiten Anforderung 1378) für einen Zugriff auf die Einrichtungen zur Speicherung von Daten gleichzeitig mit der zweiten Aktualisierung. Bei einem veranschaulichenden Beispiel enthält die Vorrichtung ferner Mittel bzw. Einrichtungen (beispielsweise das Speicherinterface 1332) zur Bereitstellung des aktualisierten Teiles der ersten Kopie der Steuerungstabelle für die Einrichtungen zur Speicherung von Daten.
  • Obwohl hier verschiedene dargestellte Komponenten als Blockkomponenten veranschaulicht und in generellen Begriffen beschrieben sind, können derartige Komponenten einen oder mehrere Mikroprozessoren, Zustandsmaschinen oder andere Schaltungen umfassen, die ausgelegt sind, um zu ermöglichen, dass derartige Komponenten eine oder mehrere hier beschriebene Operationen ausführen. Ein oder mehrere Aspekte der Steuereinrichtungen 130, 430 und 1330 können beispielsweise physikalische Komponenten darstellen, wie Hardware-Kontroller, Zustandsmaschinen, Logikschaltungen oder andere Strukturen, um den Kontrollern bzw. Steuereinrichtungen 130, 430 und 1330 zu ermöglichen, nichtblockierende Operationen auszuführen.
  • Alternativ und zusätzlich können gewisse Aspekte der Datenspeichervorrichtungen 102, 402 und 1302 unter Verwendung eines Mikroprozessors oder Mikrokontrollers implementiert sein. Bei einem besonderen Ausführungsbeispiel können ein oder mehrere Aspekte der Steuereinrichtungen 130, 430 und 1330 unter Verwendung eines Prozessors implementiert sein, der in den nichtflüchtigen Speichern 104, 404 und 1304 gespeicherte Befehle (z.B. Firmware) ausführt. Alternativ oder zusätzlich können die ausführbaren Befehle, die durch den Prozessor ausgeführt werden, in einer gesonderten Speicherstelle gespeichert werden, die nicht Teil der nichtflüchtigen Speicher 104, 404 und 1304 ist, wie in einem Festwert- bzw. Lesespeicher (ROM), der in den Steuereinrichtungen 130, 430 und 1330 enthalten sein kann.
  • Die Datenspeichervorrichtungen 102, 402 und 1302 können mit einer oder mehreren Zugriffsvorrichtungen gekoppelt, daran angebracht oder darin eingebettet sein, wie innerhalb eines Gehäuses der Vorrichtung 180. Die Datenspeichervorrichtungen 102, 402 und 1302 können in den Vorrichtungen 180, 480 und 1380 entsprechend einer Joint Electron Devices Engineering Council (JEDEC)-Solid-State-Technology-Association-Universal-Flash-Storage (UFS)-Konfiguration eingebettet sein. Zur weiteren Veranschaulichung können die Datenspeichervorrichtungen 102, 402 und 1302 innerhalb einer elektronischen Vorrichtung integriert sein (beispielsweise der Vorrichtung 180 oder der Vorrichtung 480), wie als Mobiltelefon, Computer (z.B. Laptop, Tablet oder NotebookComputer), einem Musik-Abspielgerät, einem Video-Abspielgerät, einer Spielvorrichtung oder -console, einem elektronischen Buchlesegerät, einem persönlichen digitalen Assistenten (PDA), einer tragbaren Navigationsvorrichtung oder einer anderen Vorrichtung, die einen internen nichtflüchtigen Speicher verwendet.
  • Bei einer oder mehreren anderen Implementierungen können die Datenspeichervorrichtungen 102, 402 und 1302 in einer tragbaren Vorrichtung implementiert sein, die ausgelegt ist, um selektiv mit einer oder mehreren externen Vorrichtungen, wie einer Host-vorrichtung gekoppelt zu werden. Die Datenspeichervorrichtungen 102, 402 und 1302 können beispielsweise von den Vorrichtungen 180, 480 und 1380 entfernbar sein (z.B. können sie mit den Vorrichtungen 180, 480 und 1380 „lösbar“ gekoppelt sein). Als Beispiel können die Datenspeichervorrichtungen 102, 402 und 1302 mit den Vorrichtungen 180, 480 und 1380 entsprechend einer entfernbaren universellen Serienbus-(USB)-Konfiguration lösbar gekoppelt sein.
  • Die Vorrichtungen 180, 480 und 1380 können einem Mobiltelefon, einem Computer (z.B. einem Laptop, einem Tablet oder einem Notebookcomputer), einem Musik-Abspielgerät, einem Video-Abspielgerät, einer Spielvorrichtung oder -konsole, einem elektronischen Buchlesegerät, einem persönlichen digitalen Assistenten (PDA), einer tragbaren Navigationsvorrichtung oder anderen elektronischen Vorrichtungen oder einer Kombination daraus entsprechen. Die Vorrichtungen 180, 480 und 1380 können über einen Controller kommunizieren, der den Vorrichtungen 180, 480 und 1380 ermöglicht, mit den Datenspeichervorrichtungen 102, 402 und 1302 zu kommunizieren. Die Vorrichtungen 180, 480 und 1380 können in Übereinstimmung mit einem JEDEC-Festkörpertechnologie-Assoziation-Industriespezifikation arbeiten, wie einer eingebetteten Multimediakarten-(eMMC)-Spezifikation oder einer universellen Speicher-(UFS)-Hostcontroller-Interfacespezifikation. Die Vorrichtungen 180, 480 und 1380 können in Übereinstimmung mit einer oder mehreren anderen Spezifikationen arbeiten, wie einer sicheren digitalen (SD)-Hostcontrollerspezifikation als veranschaulichendes Beispiel. Alternativ können die Vorrichtungen 180, 480 und 1380 mit den Datenspeichervorrichtungen 102, 402 und 1302 entsprechend einem anderen Kommunikationsprotokoll kommunizieren. Bei einigen Implementierungen können die Datenspeichervorrichtungen 102, 402 und 1302 innerhalb eines in einem Netzwerk zugreifbaren Datenspeichersystems, wie einem Unternehmen-Datensystem, einem NAS-System, einem Cloud-System-Datenspeichersystem als veranschaulichende Beispiele integriert sein.
  • Bei einigen Implementierungen können eine oder beide der Datenspeichervorrichtungen 102, 402 und 1302 in einem Festkörper-Laufwerk (SSD) enthalten sein. Eine oder beide der Datenspeichervorrichtungen 102, 402 und 1302 können als eingebettetes Speicherlaufwerk (z.B. eingebettetes SSD-Laufwerk eines mobilen Geräts), eines Unternehmen-Speicherlaufwerks (ESD), eines Cloud-Speichergeräts, einer an einem Netzwerk angebrachten Speichervorrichtung (NAS) oder einer Client-Speichervorrichtung als veranschaulichende, nicht beschränkende Beispiele eingebettet sein. Bei einigen Implementierungen können eine oder beide der Datenspeichervorrichtungen 102, 402 und 1302 mit den Vorrichtungen 180, 480 und 1380 über ein Netzwerk gekoppelt sein. Das Netzwerk kann beispielsweise ein Datenzentrum-Speichersystemnetzwerk, ein Unternehmens-Speichersystemnetzwerk, ein Speicherbereichs-Netzwerk, ein Cloud-Speichernetzwerk, ein lokales Bereichsnetzwerk (LAN), ein Weitbereichs-Netzwerk (WAN), das Internet und/oder ein anderes Netzwerk sein.
  • Zur weiteren Veranschaulichung können eine oder beide der Datenspeichervorrichtungen 102, 402 und 1302 ausgelegt sein, um mit den Vorrichtungen 180, 480 und 1380 als eingebetteter Speicher gekoppelt zu sein, wie in Verbindung mit einer eingebetteten Multimediakarten-(eMMC®) (Marke der JEDEC-Solid State Technology Association, Arlington, Virginia)-Konfiguration als veranschaulichendes Beispiel. Eine oder beide der Datenspeichervorrichtungen 102, 402 und 1302 können einer eMMC-Vorrichtung entsprechen. Als anderes Beispiel können eine oder beide der Datenspeichervorrichtungen 102, 402 und 1302 einer Speicherkarte, wie einer sicheren digitalen (SD®)-Karte, einer microSD®-Karte, einer MiniSD™-Karte (Marken der SD-3C LLC, Wilmington, Delaware), einer Multimediakarten™-(MMC™)-Karte (Marke der JEDEC-Solid State Technology Association, Arlington, Virginia) oder einer CompaktFlash®-(CF)-Karte (Marke der SanDisk Corporation, Milpitas, Kalifornien) entsprechen. Eine oder beide der Datenspeichervorrichtungen 102, 402 und 1302 können in Übereinstimmung mit einer JEDEC-Industriespezifikation arbeiten. Die Datenspeichervorrichtungen 102, 402 und 1302 können beispielsweise in Übereinstimmung mit einer JEDEC-eMMC-Spezifikation, einer JEDEC-Universal Flash-Speicher-(UFS)-Spezifikation, einer oder mehreren anderen Spezifikationen oder einer Kombination daraus arbeiten.
  • Die nichtflüchtigen Speicher 104, 404 und 1304 können einen Widerstands-Schreib-Lesespeicher mit wahlfreiem Zugriff (ReRAM), einen Flash-Speicher (beispielsweise einen NAND-Speicher, einen NOR-Speicher, einen Einebenen-Zellen-(SLC)-Flash-Speicher, einen Multiebenen-Zellen-(MLC)-Flash-Speicher, einen NOR-Speicher mit unterteilter Bitleitung (DINOR), einen UND-Speicher, eine Vorrichtung mit hochkapazitivem Kopplungsverhältnis (HiCR), eine asymmetrische kontaktlose Transistorvorrichtung (ACT) oder einen anderen Flash-Speicher, einen löschbaren programmierbaren Festwertspeicher (EPROM), einen elektrisch löschbaren programmierbaren Festwertspeicher (EEPROM), einen Festwert bzw. Lesespeicher (ROM), einen einmal programmierbaren Speicher (OTP), einen anderen Typ von Speicher oder eine Kombination daraus umfassen. Die nichtflüchtigen Speicher 104, 404 und 1304 können eine Halbleiter-Speichervorrichtung enthalten.
  • Halbleiterspeichervorrichtungen umfassen flüchtige Speichervorrichtungen, wie dynamische Schreib-Lese-Speichervorrichtungen („DRAM“) oder statische Schreib-Lese-Speichervorrichtungen („SRAM“), nichtflüchtige Speichervorrichtungen, wie Widerstands-Schreib-Lese-Speicher mit wahlfreiem Zugriff („ReRAM“), magnetoresistive Schreib-Lese-Speicher mit wahlfreiem Zugriff („MRAM“), elektrisch löschbare programmierbare Festwertspeicher „EEPROM“), Flash-Speicher (die auch als Untersatz bzw. Teilsatz eines EEPROM betrachtet werden können), ferroelektrische Speicher mit wahlfreiem Zugriff („FRAM“), und andere Halbleiterelemente, die imstande sind, Informationen zu speichern. Jeder Typ von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. So können beispielsweise Flash-Speichervorrichtungen in einer NAND- oder einer NOR-Konfiguration ausgelegt sein.
  • Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in irgendwelche Kombinationen gebildet sein. Durch nicht beschränkendes Beispiel enthalten passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente, die bei einigen Ausführungsbeispielen ein Widerstands-Schaltspeicherelement enthalten, wie eine träge Sicherung, Phasenänderungsmaterial, etc. und optional ein Steuerungselement, wie eine Diode, etc. Ferner umfassen durch nicht beschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flash-Speichervorrichtungselemente, die bei einigen Ausführungsbeispielen Elemente enthalten, welche eine Ladungsregion aufweisen, wie ein floatendes bzw. schwimmendes Gate, leitende Nanopartikel oder ladungsspeicherndes dielektrisches Material.
  • Eine Mehrzahl von Speicherelementen kann so konfiguriert sein, dass sie in Reihe geschaltet sind, so dass auf jedes Element individuell zugreifbar ist. Durch nicht beschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) in typischer Weise Speicherelemente, die in Reihe geschaltet sind. Eine NAND-Speicherreihe kann so konfiguriert sein, dass die Reihe aus einer Mehrzahl von Speicherketten besteht, in denen eine Kette aus einer Mehrzahl von Speicherelementen aufgebaut ist, die eine einzige Bitleitung gemeinsam nutzen und auf die als Gruppe zugreifbar ist. Alternativ können die Speicherelemente so konstruiert sein, dass auf jedes Element individuell zugreifbar ist, beispielsweise ein NOR-Speicherarray. NAND und NOR-Speicherkonfigurationen sind beispielhaft, und Speicherelemente können in anderer Weise konfiguriert sein.
  • Die innerhalb und/oder über einem Substrat befindlichen Halbleiterspeicherelemente können in zwei oder drei Dimensionen angeordnet sein, wie als zweidimensionale Speicherstruktur oder als dreidimensionale Speicherstruktur. Bei einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzigen Ebene oder einer einzigen Speichervorrichtungsebene angeordnet. In typischer Weise sind in einer zweidimensionalen Speicherstruktur die Speicherelemente in einer Ebene (beispielsweise in der Ebene einer x-z-Richtung) angeordnet, die im Wesentlichen parallel zur Hauptfläche eines Substrats verläuft, welches die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über dem oder in dem die Schicht der Speicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, welches an den Speicherelementen angebracht ist, nachdem sie gebildet sind. Als nicht beschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium enthalten.
  • Die Speicherelemente können in der Einzel-Speichervorrichtungsebene in einer geordneten Reihe angeordnet sein, wie in einer Vielzahl von Zeilen und/oder Spalten. Die Speicherelemente können jedoch in nicht regulären oder nicht rechtwinkligen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen aufweisen, wie Bitleitungen und Wortleitungen.
  • Ein dreidimensionales Speicherarray ist so angeordnet, dass Speicherelemente eine Mehrzahl von Ebenen oder eine Mehrzahl von Speichervorrichtungsebenen einnehmen, wodurch eine Struktur in drei Dimensionen gebildet ist (das heißt in den Richtungen x, y und z, wobei die y-Richtung im Wesentlichen rechtwinklig zu den Richtungen x und z verlaufend im Wesentlichen parallel zur Hauptfläche des Substrats verläuft). Als nicht beschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als ein Stapel aus einer Mehrzahl von zweidimensionalen Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht beschränkendes Beispiel kann eine dreidimensionale Speicheranordnung als eine Mehrzahl von vertikalen Spalten angeordnet sein (z.B. als Spalten, die im Wesentlichen rechtwinklig zu der Hauptfläche des Substrats, das heißt in der y-Richtung verlaufen), wobei jede Spalte eine Mehrzahl von Speicherelementen in jeder Spalte aufweist. Die Spalten können in einer zweidimensionalen Konfiguration, beispielsweise in einer Ebene x-z, angeordnet sein, was zu einer dreidimensionalen Anordnung von Speicherelementen mit Elementen in einer Mehrzahl von vertikal gestapelten Speicherebenen führt. Andere Konfigurationen von Speicherelementen in drei Dimensionen können ebenfalls ein dreidimensionales Speicherarray bilden.
  • Durch nicht beschränkendes Beispiel können die Speicherelemente in einem dreidimensionalen NAND-Speicherarray miteinander gekoppelt sein, um eine NAND-Folge innerhalb einer einzigen horizontalen (z.B. x-z)-Speichervorrichtungsebene zu bilden. Alternativ können die Speicherelemente zusammen gekoppelt sein, um eine vertikale NAND-Folge zu bilden, welche über eine Mehrzahl von horizontalen Speichervorrichtungsebenen verläuft. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, bei denen einige NAND-Folgen Speicherelemente in einer Einzelspeicherebene enthalten, während andere Folgen Speicherelemente enthalten, die sich über eine Mehrzahl von Speicherelementen erstrecken. Dreidimensionale Speicherarrays können auch in einer NOR-Konfiguration und in einer ReRAM-Konfiguration ausgelegt sein.
  • In typischer Weise sind in einem monolithischen dreidimensionalen Speicherarray eine oder mehrere Speichervorrichtungsebenen oberhalb eines einzigen Substrats gebildet. Optional kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten zumindest teilweise innerhalb des einstigen Substrats aufweisen. Als nicht beschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium enthalten. In einem monolithischen dreidimensionalen Array sind die jede Speichervorrichtungsebene des Arrays bildenden Schichten in typischer Weise auf den Schichten der darunterliegenden Speichervorrichtungsebenen des Arrays gebildet. Schichten von benachbarten Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays können jedoch zwischen Speichervorrichtungsebenen liegenden Zwischenschichten gemeinsam nutzen oder diese aufweisen.
  • Alternativ können zweidimensionale Arrays separat gebildet und dann zusammengepackt sein, um eine nicht monolithische Speichervorrichtung zu bilden, die eine Mehrzahl von Speicherschichten aufweist. Nichtmonolithische zusammengepackte Speicher können beispielsweise dadurch aufgebaut sein, dass Speicherebenen auf gesonderten Substraten gebildet und dann die Speicherebenen übereinander gestapelt werden. Die Substrate können vor dem Stapeln aus den Speichervorrichtungsebenen ausgedünnt oder entfernt werden, wobei jedoch die resultierenden Speicherarrays dann, wenn die Speichervorrichtungsebenen zunächst über bzw. auf gesonderten Substraten gebildet sind, keine monolithischen dreidimensionalen Speicherarrays sind. Ferner kann eine Mehrzahl von zweidimensionalen Speicherarrays oder von dreidimensionalen Speicherarrays (monolithisch oder nichtmonolithisch) auf gesonderten Chips gebildet und dann zusammengepackt sein, um eine gestapelte Chipspeichervorrichtung zu bilden.
  • Für den Betrieb bzw. die Operation der Speicherelemente und zur Kommunikation mit den Speicherelementen ist in typischer Weise eine Schaltungsanordnung erforderlich. Als nicht beschränkende Beispiele können Speichervorrichtungen eine Schaltungsanordnung aufweisen, die zur Steuerung und zum Treiben von Speicherelementen verwendet werden, um Funktionen, wie eine Programmierung und ein Lesen zu erreichen. Diese zugehörige Schaltungsanordnung kann auf demselben Substrat wie die Speicherelemente und/oder auf einem gesonderten Substrat sein. Eine Steuereinrichtung für Speicher-Lese-Schreiboperationen kann sich beispielsweise auf einem gesonderten Steuereinrichtungschip und/oder auf demselben Substrat wie die Speicherelemente befinden.
  • Ein Durchschnittsfachmann wird erkennen, dass diese Offenbarung nicht auf die beschriebenen zweidimensionalen oder dreidimensionalen beispielhaften Strukturen beschränkt ist, sondern sämtliche relevanten Speicherstrukturen innerhalb des Schutzumfangs der Offenbarung abdeckt, wie sie hier beschrieben ist und von einem Durchschnittsfachmann verstanden wird. Die Darstellungen der hier beschriebenen Ausführungsbeispiele dienen dem Zweck, für ein generelles Verständnis der verschiedenen Ausführungsbeispiele zu sorgen. Andere Ausführungsbeispiele können angewandt und aus der Offenbarung abgeleitet werden, so dass strukturelle und logische Substitutionen und Änderungen ohne Abweichung vom Schutzumfang der Offenbarung vorgenommen werden können. Diese Offenbarung dient dem Zweck, jegliche und sämtliche nachfolgenden Anpassungen oder Variationen von verschiedenen Ausführungsbeispielen abzudecken. Jene, die in der Technik bewandert sind, werden erkennen, dass derartige Modifikationen innerhalb des Schutzumfangs der vorliegenden Offenbarung liegen.
  • Der oben offenbarte Gegenstand ist als veranschaulichend und nicht als beschränkend zu betrachten, und die beigefügten Ansprüche dienen dem Zweck, alle derartigen Modifikationen, Verbesserungen und andere Ausführungsbeispiele abzudecken, die in den Schutzumfang der vorliegenden Offenbarung fallen. Somit ist der Schutzumfang der vorliegenden Erfindung im gesetzlich zulässigen Ausmaß durch die weitest mögliche Interpretation der folgenden Ansprüche und deren Äquivalente zu bestimmen und soll nicht durch die vorstehende detaillierte Beschreibung beschränkt oder begrenzt sein.
  • 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 15440505 [0001]

Claims (20)

  1. Eine Vorrichtung, umfassend: einen nichtflüchtigen Speicher und eine mit dem nichtflüchtigen Speicher gekoppelte Steuereinrichtung, die einen flüchtigen Speicher enthält, wobei die Steuereinrichtung ausgelegt ist, um gesonderte nichtblockierende Steuerungs-Sync-Operationen und nichtblockierende Konsolidierungsoperationen auszuführen.
  2. Die Vorrichtung nach Anspruch 1, wobei die nichtblockierenden Konsolidierungsoperationen ein Mischen von Adressenumsetzungs-Modifikationsdaten in einen zwischengespeicherten Teil einer Adressenumsetzungstabelle in dem flüchtigen Speicher ohne Blockieren von Schreiboperationen in den nichtflüchtigen Speicher umfassen.
  3. Die Vorrichtung nach Anspruch 1, wobei die nichtblockierenden Steuerungs-Sync-Operationen ein Kopieren von Steuerungsinformationen aus dem flüchtigen Speicher in den nichtflüchtigen Speicher ohne Blockieren von Schreiboperationen in den nichtflüchtigen Speicher umfassen.
  4. Die Vorrichtung nach Anspruch 1, wobei die Steuereinrichtung ferner ausgelegt ist, um die nichtblockierenden Konsolidierungsoperationen asynchron mit einer unterschiedlichen Rate in Bezug auf die nichtblockierenden Steuerungs-Sync-Operationen auszuführen, wie dies durch einen Aktualisierungsschicht-Füllzustand gefordert wird.
  5. Die Vorrichtung nach Anspruch 1, wobei die nichtblockierenden Konsolidierungsoperationen atomische Operationen sind, die ein gleichzeitiges Entleeren und Verdichten einer Aktualisierungsschicht (U-Schicht) zu einer zwischengespeicherten Adressenumsetzungstabelle (CAT) in dem flüchtigen Speicher umfassen.
  6. Die Vorrichtung nach Anspruch 5, wobei die Steuereinrichtung ferner ausgelegt ist, um Aktualisierungen für die U-Schicht und die CAT-Tabelle in dem flüchtigen Speicher fortgesetzt auszuführen, während aktualisierte m-Sätze in den nichtflüchtigen Speicher geschrieben werden.
  7. Die Vorrichtung nach Anspruch 1, wobei die Steuereinrichtung ferner ausgelegt ist, um fortgesetzt Host-Schreiboperationen in den nichtflüchtigen Speicher gleichzeitig mit den nichtblockierenden Konsolidierungsoperationen und nichtblockierenden Steuerungs-Sync-Operationen auszuführen.
  8. Die Vorrichtung nach Anspruch 1, wobei die Steuereinrichtung ferner ausgelegt ist, um ein Protokoll zu aktualisieren, welches Zeiger auf neue aktualisierte m-Sätze enthält und das Protokoll in dem nichtflüchtigen Speicher in einer nächsten nichtblockierenden Steuerungs-Sync-Operation unter Heranziehung eines Sperrbefehls speichert.
  9. Die Vorrichtung nach Anspruch 1, wobei die Steuereinrichtung ferner ausgelegt ist, um im Falle eines undankbaren Abschalt-(UGSD)-Ereignisses die Steuerungstabellen in den flüchtigen Speicher entsprechend einem zuletzt gespeicherten Protokoll aus einer zuletzt gespeicherten nichtblockierenden Steuerungs-Synchronisierung in dem nichtflüchtigen Speicher zurückzurollen und wiederzugewinnen, und wobei in einem solchen Fall kürzlich erfolgte Aktualisierungen, die bereits in der U-Schicht und der CAT-Tabelle durch die Steuereinrichtung ausgeführt wurden, ohne Verlust von Kohärenz verloren gehen und ignoriert werden.
  10. Eine Vorrichtung, umfassend: einen nichtflüchtigen Speicher und eine mit dem nichtflüchtigen Speicher gekoppelte Steuereinrichtung, die ein Interface enthält, welches ausgelegt ist, um eine erste Anforderung für einen Zugriff auf den nichtflüchtigen Speicher von einer Zugriffsvorrichtung zu empfangen, und einen flüchtigen Speicher, der ausgelegt ist, um eine erste Kopie einer dem nichtflüchtigen Speicher zugehörigen Steuerungsstruktur zu speichern, wobei die Steuereinrichtung ferner ausgelegt ist, um eine erste Aktualisierung eines Teiles der ersten Kopie der Steuerungsstruktur auf die erste Anforderung hin auszuführen, um eine zweite Aktualisierung einer zweiten Kopie der Steuerungsstruktur in den nichtflüchtigen Speicher auf der Grundlage der ersten Aktualisierung zu initiieren und um eine zweite Anforderung für einen Zugriff auf den nichtflüchtigen Speicher gleichzeitig mit der zweiten Aktualisierung auszuführen.
  11. Die Vorrichtung nach Anspruch 10, wobei die Steuerungsstruktur eine Steuerungstabelle enthält und wobei der Teil der ersten Kopie der Steuerungsstruktur logische-zu-physikalische-(L2P)-Adressenumsetzungen vor einer Modifikation der zweiten Kopie der Steuerungsstruktur zur Angabe der L2P-Adressenumsetzungen angibt.
  12. Die Vorrichtung nach Anspruch 10, wobei der Teil eine Aktualisierungs-Datenstruktur mit einer Vielzahl von Listen von Adressenmodifikationen umfasst, wobei jede der Vielzahl von Listen einem eindeutigen Satz von logischen Blockadressen (LBAs) entspricht.
  13. Ein Verfahren, umfassend: Empfangen einer ersten Anforderung durch eine erste Vorrichtung von einer zweiten Vorrichtung, um eine erste Schreiboperation in einem nichtflüchtigen Speicher der ersten Vorrichtung auszuführen; Ausführen einer ersten Aktualisierung eines ersten Teiles einer ersten Kopie einer in dem flüchtigen Speicher der ersten Vorrichtung gespeicherten Steuerungstabelle auf das Ausführen der ersten Schreiboperation hin, Ausführen einer zweiten Aktualisierung einer zweiten Kopie der Steuerungstabelle in den nichtflüchtigen Speicher zur Verbreitung von Modifikationen der ersten Kopie zu der zweiten Kopie hin und Ausführen einer zweiten Schreiboperation in den nichtflüchtigen Speicher während des Ausführens der zweiten Aktualisierung.
  14. Das Verfahren nach Anspruch 13, wobei die zweite Aktualisierung auf ein Detektieren hin ausgeführt wird, dass eine Anzahl der Modifikationen einem Schwellwert genügt, und ferner umfassend ein Inkrementieren der Anzahl auf das Ausführen der ersten Schreiboperation hin.
  15. Das Verfahren nach Anspruch 13, ferner umfassend ein Ausführen einer Steuerungs-Sync-Operation zum Kopieren der Steuerungstabelle in den nichtflüchtigen Speicher unabhängig von der zweiten Aktualisierung.
  16. Das Verfahren nach Anspruch 13, ferner umfassend ein Aktualisieren eines Zeigers innerhalb der Steuerungstabelle zur Angabe einer Stelle der aktualisierten zweiten Kopie der Steuerungstabelle in dem nichtflüchtigen Speicher, wobei die aktualisierte zweite Kopie der Steuerungstabelle zumindest einen Teil einer logischen-zu-physikalischen-(L2P)-Abbildungstabelle angibt.
  17. Eine Vorrichtung, umfassend: Mittel zum Speichern von Daten, Mittel zum Empfangen einer ersten Anforderung für einen Zugriff auf die Mittel zur Speicherung von Daten von einer Zugriffsvorrichtung, Mittel zum Speichern eines Teiles einer ersten Kopie einer den Mitteln zur Speicherung von Daten zugehörigen Steuerungstabelle und Mittel zum Ausführen einer ersten Aktualisierung des Teiles der ersten Kopie der Steuerungstabelle auf die erste Anforderung hin zur Initiierung einer zweiten Aktualisierung einer zweiten Kopie der Steuerungstabelle in den Mitteln zur Speicherung von Daten auf der Grundlage der ersten Aktualisierung und zum Ausführen einer zweiten Anforderung für einen Zugriff auf die Mittel zur Speicherung von Daten gleichzeitig mit der zweiten Aktualisierung.
  18. Die Vorrichtung nach Anspruch 17, wobei die Mittel zur Speicherung von Daten für eine nichtflüchtige Datenspeicherung ausgelegt sind, wobei die Mittel zur Speicherung des Teiles der ersten Kopie für eine flüchtige Datenspeicherung ausgelegt sind und ferner umfassend Mittel zur Bereitstellung des aktualisierten Teiles der ersten Kopie der Steuerungstabelle für die Mittel zur Speicherung von Daten.
  19. Eine Vorrichtung, umfassend: einen nichtflüchtigen Speicher und eine mit dem nichtflüchtigen Speicher gekoppelte Steuereinrichtung, die einen flüchtigen Speicher enthält, wobei die Steuereinrichtung ausgelegt ist, um nichtblockierende Steuerungs-Sync-Operationen auszuführen, und wobei die Steuerungseinrichtung ferner ausgelegt ist, um nichtblockierende Konsolidierungsoperationen asynchron in Bezug auf die nichtblockierenden Steuerungs-Sync-Operationen auszuführen.
  20. Die Vorrichtung nach Anspruch 19, wobei die nichtblockierenden Konsolidierungsoperationen atomische Operationen sind, die ein gleichzeitiges Entleeren und Verdichten einer Aktualisierungsschicht für eine zwischengespeicherte Adressenumsetzungstabelle in dem flüchtigen Speicher enthalten, und wobei die Steuereinrichtung ausgelegt ist, um Host-Schreiboperationen in den nichtflüchtigen Speicher gleichzeitig mit dem nichtblockierenden Konsolidierungsoperationen auszuführen.
DE102017128952.6A 2017-02-23 2017-12-06 Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen Active DE102017128952B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/440,505 2017-02-23
US15/440,505 US20180239532A1 (en) 2017-02-23 2017-02-23 Techniques for performing a non-blocking control sync operation
US15/615,368 2017-06-06
US15/615,368 US10359955B2 (en) 2017-02-23 2017-06-06 Data storage device configured to perform a non-blocking control update operation

Publications (2)

Publication Number Publication Date
DE102017128952A1 true DE102017128952A1 (de) 2018-08-23
DE102017128952B4 DE102017128952B4 (de) 2023-03-30

Family

ID=63046068

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017128952.6A Active DE102017128952B4 (de) 2017-02-23 2017-12-06 Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen

Country Status (4)

Country Link
US (1) US10359955B2 (de)
KR (1) KR102042904B1 (de)
CN (1) CN108509480B (de)
DE (1) DE102017128952B4 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534540B2 (en) * 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US20180239532A1 (en) 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US10445195B2 (en) 2017-08-07 2019-10-15 Micron Technology, Inc. Performing data restore operations in memory
US10628326B2 (en) 2017-08-21 2020-04-21 Micron Technology, Inc. Logical to physical mapping
US10387272B2 (en) * 2017-08-31 2019-08-20 International Business Machines Corporation Restore current version of a track from a non-volatile storage into a new location in cache
US10275352B1 (en) 2017-12-28 2019-04-30 Advanced Micro Devices, Inc. Supporting responses for memory types with non-uniform latencies on same channel
US11048597B2 (en) 2018-05-14 2021-06-29 Micron Technology, Inc. Memory die remapping
TWI653636B (zh) * 2018-06-13 2019-03-11 宏碁股份有限公司 資料儲存裝置及其操作方法
US10990311B2 (en) 2019-06-19 2021-04-27 Western Digital Technologies, Inc. Multi-stream non-volatile storage system
JP7362369B2 (ja) 2019-09-03 2023-10-17 キオクシア株式会社 メモリシステム
CN111597128B (zh) * 2020-05-21 2023-07-14 北京泽石科技有限公司 固态非易失存储设备中数据的管理方法以及管理装置
KR20220049397A (ko) * 2020-10-14 2022-04-21 삼성전자주식회사 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
CN112527698B (zh) * 2020-12-04 2024-03-22 联想(北京)有限公司 一种处理方法、装置及设备
CN112579482B (zh) * 2020-12-05 2022-10-21 西安翔腾微电子科技有限公司 一种非阻塞Cache替换信息表超前精确更新装置及方法
US20220317926A1 (en) * 2021-03-31 2022-10-06 Advanced Micro Devices, Inc. Approach for enforcing ordering between memory-centric and core-centric memory operations
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
US20230280919A1 (en) * 2022-03-07 2023-09-07 Western Digital Technologies, Inc. Write Updates Sorting During BKOPS Idle
KR20230135346A (ko) * 2022-03-16 2023-09-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그의 동작 방법
CN115794446B (zh) * 2023-01-18 2023-05-09 苏州浪潮智能科技有限公司 一种消息处理方法、装置、电子设备和存储介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6526477B1 (en) 1999-09-03 2003-02-25 Adaptec, Inc. Host-memory based raid system, device, and method
US7526599B2 (en) * 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US7366826B2 (en) 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7386655B2 (en) 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7937709B2 (en) 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
US8244958B2 (en) 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
ATE518190T1 (de) * 2005-12-09 2011-08-15 Sandisk Il Ltd Verfahren zur flash-speicher-verwaltung
US7865658B2 (en) 2007-12-31 2011-01-04 Sandisk Il Ltd. Method and system for balancing host write operations and cache flushing
KR101760144B1 (ko) * 2009-01-05 2017-07-31 샌디스크 테크놀로지스 엘엘씨 비휘발성 메모리 및 기록 캐시를 분할하는 방법
WO2011148223A1 (en) 2010-05-27 2011-12-01 Sandisk Il Ltd Memory management storage to a host device
CN101930404B (zh) * 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US8904118B2 (en) 2011-01-07 2014-12-02 International Business Machines Corporation Mechanisms for efficient intra-die/intra-chip collective messaging
US9104614B2 (en) * 2011-09-16 2015-08-11 Apple Inc. Handling unclean shutdowns for a system having non-volatile memory
US8966327B1 (en) 2012-06-21 2015-02-24 Inphi Corporation Protocol checking logic circuit for memory system reliability
US9141534B2 (en) * 2012-12-14 2015-09-22 Sandisk Technologies Inc. Tracking read accesses to regions of non-volatile memory
EP2939100B1 (de) * 2012-12-31 2017-09-06 SanDisk Technologies LLC Verfahren und system für asynchrone chipoperationen in einem nichtflüchtigen speicher
US9727453B2 (en) * 2013-03-14 2017-08-08 Sandisk Technologies Llc Multi-level table deltas
US9519591B2 (en) * 2013-06-22 2016-12-13 Microsoft Technology Licensing, Llc Latch-free, log-structured storage for multiple access methods
US9263136B1 (en) * 2013-09-04 2016-02-16 Western Digital Technologies, Inc. Data retention flags in solid-state drives
US9229876B2 (en) * 2013-12-17 2016-01-05 Sandisk Technologies Inc. Method and system for dynamic compression of address tables in a memory
US10073721B2 (en) 2014-08-20 2018-09-11 The Florida International University Board Of Trustees Non-blocking writes to file data
CN104716954A (zh) * 2015-03-17 2015-06-17 广东高云半导体科技股份有限公司 带有片上用户非易失性存储器的可编程逻辑器件
US9817588B2 (en) * 2015-04-10 2017-11-14 Macronix International Co., Ltd. Memory device and operating method of same
KR102447471B1 (ko) * 2015-06-24 2022-09-27 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치
US9870170B2 (en) * 2015-09-10 2018-01-16 Toshiba Memory Corporation Memory controller, memory system and memory control method
US9959044B2 (en) * 2016-05-03 2018-05-01 Macronix International Co., Ltd. Memory device including risky mapping table and controlling method thereof
US9921956B2 (en) * 2016-07-20 2018-03-20 Sandisk Technologies Llc System and method for tracking block level mapping overhead in a non-volatile memory
CN108089991A (zh) * 2016-11-23 2018-05-29 广明光电股份有限公司 固态硬盘重建对照表的方法

Also Published As

Publication number Publication date
CN108509480A (zh) 2018-09-07
KR20180097441A (ko) 2018-08-31
CN108509480B (zh) 2021-08-24
US10359955B2 (en) 2019-07-23
US20180239547A1 (en) 2018-08-23
KR102042904B1 (ko) 2019-11-08
DE102017128952B4 (de) 2023-03-30

Similar Documents

Publication Publication Date Title
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE112014005521B4 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE102017104125A1 (de) Zonen von Übersetzungstabellen von logischen in physische Datenadressen mit parallelisiertem Log-Listenreplay
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112010002663B4 (de) Speichermanagementsysteme, Verfahren zur Verbesserung der Schreib-Lösch-Ausdauerlebenszeit von Speichervorrichtungen und Computerprogrammprodukt
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE102018214013A1 (de) Automatische kontinuierliche Prüfpunktsetzung
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE102015012566A1 (de) Mehrlagenkonzept für logische speicherungsverwaltung
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112017005637T5 (de) Verfahren und System zur Schreibverstärkungsanalyse
DE112015003536T5 (de) Host-Verwalter nicht flüchtiger Speicher
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
DE112017005782T5 (de) Warteschlange für Speichervorgänge

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final