DE112015000378T5 - Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher - Google Patents

Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher Download PDF

Info

Publication number
DE112015000378T5
DE112015000378T5 DE112015000378.9T DE112015000378T DE112015000378T5 DE 112015000378 T5 DE112015000378 T5 DE 112015000378T5 DE 112015000378 T DE112015000378 T DE 112015000378T DE 112015000378 T5 DE112015000378 T5 DE 112015000378T5
Authority
DE
Germany
Prior art keywords
data
memory cells
nonvolatile memory
module
nonvolatile
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.)
Withdrawn
Application number
DE112015000378.9T
Other languages
English (en)
Inventor
Robert Wood
Jea Hyun
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE112015000378T5 publication Critical patent/DE112015000378T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Abstract

Es werden Vorrichtungen, Systeme, Verfahren und Computerprogrammprodukte für ein auf einem Chipplättchen (123, 606) gepuffertes nichtflüchtiges Speicher-(122)-Management offenbart. Ein Verfahren enthält ein Speichern von Daten in einem ersten Satz nichtflüchtiger Speicherzellen (410). Ein Verfahren enthält ein Bestimmen von einem oder mehreren Attributen, die Daten zugehörig sind. Ein Verfahren enthält ein Bestimmen auf der Grundlage von einem oder mehreren Attributen, ob Daten in einen zweiten Satz nichtflüchtiger Speicherzellen (412) zu speichern sind. Ein zweiter Satz nichtflüchtiger Speicherzellen (412) kann konfiguriert sein, um mehr Bits pro Zelle zu speichern als ein erster Satz von nichtflüchtigen Speicherzellen (410).

Description

  • Querbezüge auf verwandte Anmeldungen
  • Diese Anmeldung beansprucht den Vorteil der vorläufigen US-Patentanmeldung, Nr. 61/925.549, mit dem Titel "Management eines auf einem Chip gepufferten nichtflüchtigen Speichers", eingereicht am 9. Januar 2014 für Jea Hyun et al., wobei deren gesamte Inhalte hier durch Bezugnahme für sämtliche Zwecke einbezogen wird.
  • Technisches Gebiet
  • Die vorliegende Offenbarung in verschiedenen Ausführungsbeispielen bezieht sich auf ein Speichermanagement und insbesondere bezieht sie sich auf das Management eines auf einem Chipplättchen gepufferten nichtflüchtigen Speichers.
  • Hintergrund
  • Gewisse Flash-Speicher und andere Festkörperspeichervorrichtungen realisieren Metapegel-Zellen-(MLC)-Speichermedien, Dreifachpegel-Zellen-(TLC)-Speichermedien oder dergleichen, um eine Vielzahl von Datenbits in derselben Speicherzelle zu speichern. Generell sind MLC- und TLC-Speicherzellen in mehrere Zustände programmierbar, die jeweils durch gesonderte Spannungsschwellwerte charakterisiert sind. Als ein Beispiel kann eine Zwei-Bit-MLC-Speicherzelle in einen von vier verschiedenen Zuständen programmiert werden oder eine Drei-Bit-TLC-Speicherzelle kann in einen von acht verschiedenen Zuständen programmiert werden, wobei jeder Zustand einem eindeutigen Spannungsbereich entspricht.
  • Falls Einzelpegel-Zellen-(SLC)-Speichermedien in derselben Vorrichtung mit MLC- und/oder TLC-Speichermedien enthalten sind, muss de Zuteilung und Nutzung der verschiedenen Typen von Speichermedien gemanagt werden. SLC-, MLC- und TLC-Speichermedien können verschiedene Schreibzeiten, Lesezeiten, Programmierungsanforderungen, Zuverlässigkeit, Fehlerraten und dergleichen aufweisen. Ferner kann ein Kopieren von Daten zwischen verschiedenen Typen von Speichermedien Fehler einführen, die Einführung von Fehlern verstärken, wenn Daten kopiert werden. Falls Leistung verloren geht oder eine Vorrichtung abgeschaltet wird, während Daten von einem Typ von Speichermedien in einen anderen kopiert werden, können die Daten beschädigt werden oder verloren sein. Verschiedene Daten können außerdem verschiedene Nutzungsmuster, Prioritäten oder dergleichen aufweisen, die für gewisse Typen von Speichermedien nicht konsistent oder für diese optimal sind.
  • Zusammenfassung
  • Es werden Verfahren für das Management für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher (ODB) aufgezeigt. Bei einem Ausführungsbeispiel enthält ein Verfahren das Speichern von Daten in einem ersten Satz von nichtflüchtigen Speicherzellen. Ein Verfahren enthält bei einem weiteren Ausführungsbeispiel ein Bestimmen eines oder mehrerer den Daten zugehöriger Attribute. Bei gewissen Ausführungsbeispielen enthält ein Verfahren ein Bestimmen auf der Grundlage von einem oder mehreren den Daten zugehörigen Attributen, ob Daten in einem zweiten Satz von nichtflüchtigen Speicherzellen zu speichern sind. Ein zweiter Satz von nichtflüchtigen Speicherzellen ist bei einem anderen Ausführungsbeispiel konfiguriert, um mehr Bits pro Zelle als ein erster Satz von nichtflüchtigen Speicherzellen zu speichern.
  • Es werden Vorrichtungen für das Management des auf einem Chipplättchen gepufferten nichtflüchtigen Speichers (ODP) aufgezeigt. Bei einem Ausführungsbeispiel ist ein Puffermodul konfiguriert, um Daten in einem ersten Satz von nichtflüchtigen Speicherzellen zu speichern. Bei einem weiteren Ausführungsbeispiel ist ein Rückkopiermodul konfiguriert, um auf der Grundlage von einem oder mehreren Datenfaktoren zu bestimmen, ob Daten in einen zweiten Satz von nichtflüchtigen Speicherzellen zu speichern sind. Ein zweiter Satz von nichtflüchtigen Speicherzellen liefert bei einem anderen Ausführungsbeispiel Daten unter Verwendung von mehr Speicherzuständen pro Zelle als ein erster Satz von nichtflüchtigen Speicherzellen.
  • Es werden Systeme für das Management eines auf einem Chipplättchen gepufferten nichtflüchtigen Speichers (ODBP) aufgezeigt. Ein nichtflüchtiges Speicherelement umfasst bei gewissen Ausführungsbeispielen einen Satz von nichtflüchtigen Einzelpegel-Zellen-(SLC)-Speicherzellen und einen Satz von nichtflüchtigen Dreipegel-Zellen (TLC) Speicherzellen. Bei einem Ausführungsbeispiel bestimmt eine Steuereinrichtung bzw. ein Controller selektiv, Daten von einem Satz von nichtflüchtigen SLC-Speicherzellen in einen Satz von nichtflüchtigen TLC-Speicherzellen zu kopieren. Eine Steuereinrichtung stellt bei einem weiteren Ausführungsbeispiel einen oder mehrere Lesespannungsschwellwerte für einen Satz der nichtflüchtigen SLC-Speicherzellen auf der Grundlage von einem oder mehreren Speichermedien-Charakteristiken für den Satz der nichtflüchtigen SLC-Speicherzellen zum Kopieren von Daten von dem Satz der nichtflüchtigen SLC-Speicherzellen in einen Satz der nichtflüchtigen TLC-Speicherzellen ein.
  • Kurze Beschreibung der Zeichnungen
  • Damit die Vorteile der Offenbarung leicht verstanden werden, wird eine weiter ins Einzelne gehende Beschreibung der oben kurz beschriebenen Offenbarung durch Bezugnahme auf spezifische Ausführungsbeispiele gegeben, die in den angehängten Zeichnungen veranschaulicht sind. In dem Verständnis, dass diese Zeichnungen lediglich typische Ausführungsbeispiele der Offenbarung wiedergeben und daher nicht als deren Umfang beschränkend zu betrachten sind, wird die Beschreibung mit zusätzlicher Ausprägung und dem Detail durch die Verwendung der beigefügten Zeichnungen beschrieben und erläutert, in denen 1 ein schematisches Blockdiagramm ist, welches ein Ausführungsbeispiel eines Systems für das Management eines auf einem Chipplättchen gepufferten nichtflüchtigen Speichers (ODB) veranschaulicht,
  • 2 ein schematisches Blockdiagramm ist, welches ein Ausführungsbeispiel eines nichtflüchtigen Speichersystems veranschaulicht,
  • 3A ein schematisches Blockdiagramm ist, welches ein Ausführungsbeispiel eines Managementmoduls veranschaulicht,
  • 3B ein schematisches Blockdiagramm ist, welches ein weiteres Ausführungsbeispiel eines Managementmoduls veranschaulicht,
  • 4 ein schematisches Blockdiagramm ist, welches ein Ausführungsbeispiel einer Dreifachpegel-Speicherzelle veranschaulicht,
  • 5 ein schematisches Blockdiagramm ist, welches ein Ausführungsbeispiel eines nichtflüchtigen Speicherelements veranschaulicht,
  • 6 ein schematisches Blockdiagramm ist, welches ein Ausführungsbeispiel einer Abbildungsstruktur, eines Logikadressenraumes und einer Log-basierten Schreibstruktur veranschaulicht,
  • 7 ein schematisches Blockdiagramm ist, welches ein Ausführungsbeispiel eines Systems zur Speicherung von Daten in einer Mehrpegel-Speicherzelle veranschaulicht,
  • 8A ein schematisches Blockdiagramm ist, welches ein Ausführungsbeispiel eines Arrays von Speicherelementen von nichtflüchtigen Speichermedien veranschaulicht,
  • 8B ein schematisches Blockdiagramm ist, welches ein weiteres Ausführungsbeispiel eines Arrays von Speicherelementen von nichtflüchtigen Speichermedien veranschaulicht,
  • 9A ein Diagramm ist, welches ein Ausführungsbeispiel von Zuständen in Zellen einer nichtflüchtigen Speichervorrichtung veranschaulicht,
  • 9B eine Tabelle ist, die ein Ausführungsbeispiel eines Codierens einer Mehrzahl von Bits durch eine Zelle einer nichtflüchtigen Speichervorrichtung veranschaulicht,
  • 10 eine Reihe von Diagrammen ist, die Zustände eines Codierungsmodells für einen Dreifachpegel-Zellenspeicher veranschaulichen,
  • 11 ein schematisches Ablaufdiagramm ist, welches ein Ausführungsbeispiel eines Verfahrens für das Management eines auf einem Chipplättchen gepufferten nichtflüchtigen Speichers (ODB) veranschaulicht,
  • 12 ein schematisches Ablaufdiagramm ist, welches ein anderes Ausführungsbeispiel eines Verfahrens für das Management eines auf einem Chipplättchen gepufferten nichtflüchtigen Speichers (ODB) veranschaulicht, und
  • 13 ein schematisches Ablaufdiagramm ist, welches ein weiteres Ausführungsbeispiel eines Verfahrens für das Management eines auf einem Chipplättchen gepufferten nichtflüchtigen Speichers (ODB) veranschaulicht.
  • Detaillierte Beschreibung
  • Aspekte der vorliegenden Offenbarung können als eine Vorrichtung, ein System, ein Verfahren oder ein Computerprogrammprodukt verkörpert sein. Demgemäß können Aspekte der vorliegenden Offenbarung die Form einer gänzlichen Hardware-Ausführungsform, einer gänzlichen Software-Ausführungsform, (einschließlich Firmware, residenter Software eines Mikrocodes oder dergleichen) oder einer Ausführungsform besitzen, welche Software- und Hardwareaspekte kombiniert, die alle generell hier als "Schaltung", "Modul", "Vorrichtung" oder "System" bezeichnet werden. Außerdem können Aspekte der vorliegenden Offenbarung die Form eines Computerprogrammprodukts besitzen, welches in einem oder mehreren nichtflüchtigen, mittels eines Computers lesbaren Speichermedien verkörpert ist, die einen mittels eines Computers lesbaren und/oder ausführbaren Programmcode speichern.
  • Viele der in dieser Beschreibung beschriebenen funktionalen Einheiten sind als Module gekennzeichnet worden, um insbesondere ihre Realisierungsunabhängigkeit hervorzuheben. Ein Modul kann beispielsweise als Hardware-Schaltung realisiert sein, die gebräuchliche VLSI-Schaltungen oder Gate-Arrays, Standard-Halbleiter, wie Logik-Chips, Transistoren oder andere diskrete Bauelemente umfasst. Ein Modul kann auch in programmierbaren Hardwarevorrichtungen realisiert sein, wie als im Feld programmierbare Gate-Arrays, programmierbare Array-Logik, programmierbare Logikvorrichtungen oder dergleichen.
  • Module können auch für die Ausführung durch verschiedene Typen von Prozessoren zumindest teilweise in Software realisiert sein. Ein identifiziertes Modul eines ausführbaren Codes kann beispielsweise einen oder mehrere physikalische oder logische Blöcke von Computerbefehlen umfassen, die beispielsweise als Objekt, Prozedur oder Funktion organisiert sein können. Gleichwohl brauchen die Ausführbarkeiten eines identifizierten Moduls nicht physikalisch zusammen zu liegen, sondern sie können ganz verschiedene Befehle umfassen, die an verschiedenen Stellen gespeichert sind, und die wenn sie logisch miteinander verbunden werden, das Modul umfassen und den angegebenen Zweck für das Modul erzielen.
  • In der Tat kann ein Modul eines ausführbaren Codes einen einzelnen Befehl oder viele Befehle enthalten und es kann sogar über mehrere verschiedene Codesegmente, über verschiedene Programme, über mehrere Speichervorrichtungen oder dergleichen verteilt sein. Wenn ein Modul oder Teile eines Moduls in Software realisiert sind, können die Softwareteile in einem oder mehreren mittels eines Computers lesbaren und/oder ausführbaren Speichermedien gespeichert sein. Jegliche Kombination von einem oder mehreren mittels eines Computers lesbaren Speichermedien kann angewandt werden. Ein mittels eines Computers lesbares Speichermedium kann beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine Vorrichtung oder ein Gerät oder irgendeine geeignete Kombination aus Vorstehendem enthalten, würde jedoch nicht die Verbreitung von Signalen einschließen. Im Kontext dieses Dokuments kann ein mittels eines Computers lesbares und/oder ausführbares Speichermedium irgendein greifbares und/oder nichtflüchtiges Medium sein, welches ein Programm zur Verwendung durch ein oder in Verbindung mit einem Befehlsausführungssystem, einer Befehlsausführungsvorrichtung, einem Prozessor oder einem Gerät enthalten oder speichern kann.
  • Ein Computerprogrammcode zur Ausführung von Operationen für Aspekte der vorliegenden Offenbarung kann in irgendeiner Kombination von einer oder mehreren Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmierungssprache, wie Python, Java, Smalltalk, C++, C#, Objektive C, oder dergleichen, konventionelle prozedurale Programmiersprachen, wie die "C"-Programmiersprache, Script-Programmiersprachen und/oder andere ähnliche Programmiersprachen. Der Programmcode kann teilweise oder gänzlich auf einem oder mehreren von einem Nutzer-Computer und/oder auf einem fern liegenden Computer oder Server über ein Datennetzwerk oder dergleichen ausgeführt werden.
  • Eine Komponente, wie sie hier verwendet wird, umfasst eine greifbare, physikalische, nichtflüchtige Vorrichtung. Beispielsweise kann eine Komponente als Hardware-Verknüpfungsschaltung realisiert sein, umfassend gebräuchliche VLSI-Schaltungen, Gate-Arrays oder andere integrierte Schaltungen; Standard-Halbleiter, wie Logik-Chips, Transistoren oder andere diskrete Vorrichtungen; und/oder andere mechanische oder elektrische Vorrichtungen. Eine Komponente kann außerdem in programmierbaren Hardware-Vorrichtungen realisiert sein, wie in im Feld programmierbaren Gate-Arrays, programmierbarer Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen. Eine Komponente kann eine oder mehrere integrierte Siliziumschaltungsvorrichtungen (z.B. Chips, Chipplättchen, Chipebenen, Packungen) oder andere diskrete elektrische Vorrichtungen, in elektrischer Verbindung mit einem oder mehreren anderen Komponenten durch elektrische Leitungen einer gedruckten Schaltungsplatte (PCB) oder dergleichen umfassen. Jedes der hier beschriebenen Module kann bei gewissen Ausführungsbeispielen alternativ als eine Komponente verkörpert oder realisiert sein.
  • Eine Bezugnahme auf "ein Ausführungsbeispiel", "eine Ausführungsform" oder eine ähnliche Redeweise im Zuge dieser Beschreibung bedeutet, dass ein in Verbindung mit dem Ausführungsbeispiel beschriebenes bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik in zumindest einem Ausführungsbeispiel der vorliegenden Offenbarung enthalten ist. Somit können das Auftreten der Redewendungen "bei einem Ausführungsbeispiel", "in einem Ausführungsbeispiel" und eine ähnliche Redeweise sich im Zuge dieser Beschreibung, jedoch nicht notwendigerweise alle auf dasselbe Ausführungsbeispiel beziehen, bedeuten jedoch "ein oder mehrere, jedoch nicht sämtliche Ausführungsbeispiele", sofern nicht ausdrücklich anders angegeben ist. Die Begriffe "enthaltend", "umfassend", "aufweisend" und deren Abwandlungen bedeuten "enthaltend, jedoch nicht beschränkt auf" sofern nicht ausdrücklich anders angegeben ist. Eine Aufzählung von Posten impliziert nicht, dass irgendeiner oder sämtliche der Posten gegenseitig ausgeschlossen und/oder gegenseitig eingeschlossen sind, sofern nicht ausdrücklich anders angegeben ist. Die Ausdrücke "ein", "eine" und "der bzw. die bzw. das" beziehen sich ebenfalls auf "einen oder mehrere", sofern nicht ausdrücklich anders angegeben ist.
  • Aspekte der vorliegenden Offenbarung werden unter Bezugnahme auf schematische Ablaufdiagramme und/oder schematische Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsbeispielen der Offenbarung unten beschrieben. Es wird einzusehen sein, dass jeder Block der schematischen Ablaufdiagramme und/oder schematischen Blockdiagramme und Kombinationen von Blöcken in den schematischen Ablaufdiagrammen und/oder schematischen Blockdiagrammen durch Computerprogrammbefehle realisiert werden kann. Diese Computerprogrammbefehle können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erstellen, so dass die Befehle, die mittels des Prozessors oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Realisierung der Funktionen und/oder Vorgänge erzeugen, die in den schematischen Ablaufdiagrammen und/oder schematischen Blockdiagrammen als Block oder Blöcke spezifiziert sind.
  • Es sollte außerdem darauf hingewiesen werden, dass bei einigen alternativen Realisierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. So können beispielsweise zwei nacheinander dargestellte Blöcke in der Tat im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können zuweilen in der umgekehrten Reihenfolge ausgeführt werden, und zwar in Abhängigkeit von der einbezogenen Funktionalität. Andere Schritte und Verfahren können erdacht werden, die in der Funktion, Verknüpfung oder Wirkung einem oder mehreren Blöcken oder Teilen davon in den dargestellten Figuren äquivalent sind. Obwohl verschiedene Pfeiltypen und Linientypen in den Ablauf- und/oder Blockdiagrammen verwendet sein können, werden sie nicht dahingehend verstanden, den Umfang der entsprechenden Ausführungsbeispiele zu beschränken. So kann ein Pfeil der Warte- oder Überwachungszeitspanne von unspezifizierter Dauer zwischen aufgezählten Schritten des dargestellten Ausführungsbeispiels angeben.
  • In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Tel davon bilden. Die vorstehende Zusammenfassung ist lediglich veranschaulichend und dient nicht dem Zweck, in irgendeiner Weise beschränkend zu sein. Zusätzlich zu den oben beschriebenen veranschaulichenden Aspekten, Ausführungsbeispielen und Merkmalen werden weitere Aspekte, Ausführungsbeispiele und Merkmale durch Bezugnahme auf die Zeichnungen und die folgende detaillierte Beschreibung ersichtlich werden. Die Beschreibung von Elementen in jeder Figur kann sich auf Elemente von vorangehenden Figuren beziehen. Entsprechende Zahlen bzw. Bezugszeichen können entsprechende Elemente in den Figuren angeben, einschließlich alternative Ausführungsbeispiele von entsprechenden Elementen.
  • Gemäß verschiedenen Ausführungsbeispielen managt bzw. verwaltet eine Steuereinrichtung eines nichtflüchtigen Speichers eine oder mehrere nichtflüchtige Speichervorrichtungen. Die nichtflüchtige Speichervorrichtung bzw. die nichtflüchtigen Speichervorrichtungen können Speicher- oder Speicherungsvorrichtungen umfassen, wie eine Festkörperspeichervorrichtung bzw. Festkörperspeichervorrichtungen, die in einer Vielzahl von adressierbaren Medienspeicherstellen angeordnet und/oder aufgeteilt sind. Wie hier verwendet, bezieht sich eine Medienspeicherstelle auf irgendeine physikalische Einheit eines Speichers (beispielsweise irgendeine Größe von physikalischen Speichermedien in einer nichtflüchtigen Speichervorrichtung). Speichereinheiten können, ohne darauf beschränkt zu sein, enthalten: Seiten, Speicheraufteilungen, Löschblöcke, Sektoren, Blöcke, Sammlungen oder Sätze von physikalischen Speicherstellen (z.B. logische Seiten, logische Löschblöcke, wie unten beschrieben) oder dergleichen.
  • Die Steuereinrichtung des nichtflüchtigen Speichers kann eine Speichermanagementschicht (SML) umfassen, die einen logischen Adressenraum für einen oder mehrere Speicher-Clients bereitstellen kann. Ein Beispiel einer SML ist die virtuelle Speicherschicht ist die virtuale Storage Layer® der Fusion-io, Inc. von Salt Lage City, Utah. Alternativ kann jede nichtflüchtige Speichervorrichtung eine Steuereinrichtung von nichtflüchtigen Speichermedien umfassen, die einen logischen Adressenraum für die Speicherung von Clients bereitstellen kann. Wie hier verwendet, bezieht sich ein logischer Adressenraum auf eine logische Darstellung von Speicherressourcen. Der logische Speicherraum kann eine Vielzahl (beispielsweise einen Bereich) von verknüpfungs- bzw. logischen Adressen umfassen. Wie hier verwendet, bezieht sich eine logische Adresse auf irgendeine Identifizierungskennzeichen zur Bezugnahme auf eine Speicherressource (z.B. Daten), einschließlich, jedoch nicht beschränkt auf: eine logische Blockadresse (LBA), eine Zylinder/Kopf/Sektor(CHS)-Adresse, einen Dateinamen, eine Objekt-Identifizierungsangabe, einen Inode, einen universellen eindeutigen Identifizierer (UUID), einen globalen eindeutigen Identifizierer (GUID), einen Hash-Code, eine Signatur, einen Indexeintrag, einen Bereich, einen Umfang oder dergleichen.
  • Die SML kann Metadaten erhalten, wie einen Vorwärts-Index, um logische Adressen des logischen Adressenraums für Medien-Speicherplätze in nichtflüchtigen Speichervorrichtung(en) abzubilden. Die SML kann für beliebige Abbildungen von irgendeinem zu irgendeinem von logischen Adressen in physikalische Speicherressourcen sorgen. Wie hier verwendet, kann eine Abbildung "von irgendeinem zu irgendeinem" irgendeine logische Adresse in irgendeine physikalische Speicherressource abbilden. Demgemäß braucht es keine zuvor definierten und/oder zuvor festgelegten Abbildungen zwischen logischen Adressen und insbesondere Medien-Speicherplätzen und/oder Medienadressen zu geben. Wie hier verwendet, bezieht sich eine Medienadresse auf eine Adresse einer Speicherressource, die eine Speicherressource von einer anderen für eine Steuereinrichtung eindeutig identifiziert, welche eine Vielzahl von Speicherressourcen verwaltet bzw. managt. Beispielsweise enthält eine Medienadresse, ohne darauf beschränkt zu sein: die Adresse eines Medienspeicherplatzes, einer physikalischen Speichereinheit, einer Sammlung von physikalischen Speichereinheiten (beispielsweise einer logischen Speichereinheit) eines Teiles einer Speichereinheit (z.B. eine logische Speichereinheitsadresse und einen Versatz, einen Bereich und/oder ein Ausmaß) oder dergleichen. Demgemäß kann die SML logische Adressen in physikalische Datenressourcen irgendeiner Größe und/oder Feinheit abbilden, was dem darunterliegenden Datenaufteilungssystem des/der nichtflüchtigen Speichervorrichtung(en) entsprechen oder nicht entsprechen kann. Bei einigen Ausführungsbeispielen ist die Steuereinrichtung des nichtflüchtigen Speichers beispielsweise konfiguriert, um Daten innerhalb von Verknüpfungs-Speichereinheiten zu speichern, die durch logisches Kombinieren einer Vielzahl von physikalischen Speichereinheiten gebildet sind, was der Steuereinrichtung des nichtflüchtigen Speichers ermöglichen kann, viele verschiedene virtuelle Speichereinheitsgrößen und/oder Feinheiten zu unterstützen.
  • Wie hier verwendet, bezieht sich ein logisches bzw. Verknüpfungs-Speicherelement auf einen Satz von zwei oder mehr nichtflüchtigen Speicherelementen, die parallel gemanagt bzw. verwaltet werden oder die dazu imstande sind (beispielsweise mittels einer Eingabe/Ausgabe-I/O- und/oder eines Steuerbuses). Ein logisches Speicherelement kann eine Vielzahl von logischen Speichereinheiten umfassen, wie logische Seiten, logische Speicheraufteilungen (z.B. logische Löschblöcke) und so weiter. Wie hier verwendet, bezieht sich eine logische Speichereinheit auf ein Verknüpfungskonstrukt, welches zwei oder mehr physikalische Speichereinheiten kombiniert, und zwar jede physikalische Speichereinheit in einem jeweiligen nichtflüchtigen Speicherelement in dem jeweiligen Verknüpfungsspeicherelement (auf jedes nichtflüchtige Speicherelement ist parallel zugreifbar). Wie hier verwendet, bezieht sich eine Verknüpfungsspeicheraufteilung auf einen Satz von zwei oder mehr physikalischen Speicheraufteilungen, wobei jede physikalische Speicheraufteilung in einem jeweiligen nichtflüchtigen Speicherelement in dem jeweiligen Verknüpfungsspeicherelement vorliegt.
  • Der logische Adressenraum, der durch die Speichermanagementschicht dargestellt wird, kann eine logische Kapazität aufweisen, die der Anzahl von verfügbarer logischer Adressen in dem logischen Adressenraum und der Größe (oder Feinheit) der Daten entspricht, auf die durch die logischen Adressen Bezug genommen wird. Die logische Kapazität eines logischen Adressenraums umfasst beispielsweise 2^32 eindeutige logische Adressen, wobei jede sich auf 2048 Bytes (2KiB) von Daten 2^43 Bytes bezieht. (Wie hier verwendet, bezieht sich ein Kibibyte (KiB) auf 1024 Bytes). Bei einigen Ausführungsbeispielen kann der logische Adressenraum dünn vorgehalten sein. Wie hier verwendet, bezieht sich ein "dünn vorgehaltener" logischer Adressenraum auf einen logischen Adressenraum, der eine Verknüpfungskapazität besitzt, welche die physikalische Kapazität der darunter liegenden nichtflüchtigen Speichervorrichtung(en) übersteigt. Die Speichermanagementschicht kann beispielsweise einen logischen 64-Bit-Adressenraum für die Speicher-Clients (beispielsweise einen durch 64-Bit-Logikadressen bezeichneten logischen Adressenraum) darstellen, was die physikalische Kapazität der darunterliegenden nichtflüchtigen Speichervorrichtung(en) übersteigt. Der große logische Adressenraum kann den Speicher-Clients ermöglichen, angrenzende Bereiche von logischen Adressen zuzuweisen und/oder darauf sich zu beziehen, während die Chance von Namenskonflikten reduziert ist. Die Speichermanagementschicht kann einen Einfluss auf Abbildungen von irgendeinem zu irgendeinem zwischen logischen Adressen und physikalischen Speicherressourcen besitzen, um den logischen Adressenraum unabhängig von den darunterliegenden physikalischen Speichervorrichtungen zu verwalten. Die Speichermanagementschicht kann beispielsweise physikalische Speicherressourcen bei Bedarf nahtlos und ohne Änderung der von den Speicher-Clients verwendeten logischen Adressen physikalische Speicherressourcen hinzufügen und/oder entfernen.
  • Die Steuereinrichtung des nichtflüchtigen Speichers kann konfiguriert sein, um Daten in einem kontextabhängigen Format zu speichern. Wie hier verwendet, bezieht sich ein kontextabhängiges Format auf ein selbstbeschreibendes Datenformat, in welchem beständige kontextabhängige Metadaten mit den Daten in den physikalischen Speichermedien gespeichert werden bzw. sind. Die beständigen kontextabhängigen Metadaten stellen den Kontext für die Daten bereit, mit denen sie gespeichert werden bzw. sind. Bei gewissen Ausführungsbeispielen identifizieren die beständigen kontextabhängigen Metadaten die Daten eindeutig, die mit den beständigen kontextabhängigen Metadaten gespeichert sind. Die beständigen kontextabhängigen Metadaten können beispielsweise einen Sektor von Daten, der von einem Speicher-Client besessen wird, von anderen Sektoren von Daten, die von dem Speicher-Client besessen werden, eindeutig identifizieren. Bei einem weiteren Ausführungsbeispiel identifizieren die beständigen kontextabhängigen Metadaten eine Operation, die bezüglich der Daten ausgeführt wird. Bei einem weiteren Ausführungsbeispiel identifizieren die beständigen kontextabhängigen Metadaten eine Folge von Operationen, die bezüglich der Daten ausgeführt werden. Bei einem weiteren Ausführungsbeispiel identifizieren die beständigen kontextabhängigen Metadaten Sicherheitsteuerungen, einen Datentyp oder andere Attribute der Daten. Bei einem gewissen Ausführungsbeispiel identifizieren die beständigen kontextabhängigen Metadaten zumindest einen von einer Vielzahl von Aspekten, einschließlich eines Datentyps, eines eindeutigen Datenidentifizierers, einer Operation und einer Folge von Operationen, die bezüglich der Daten ausgeführt wird bzw. werden. Die beständigen kontextabhängigen Metadaten können, ohne darauf beschränkt zu sein, enthalten: eine logische Adresse der Daten, einen Identifizierer der Daten (beispielsweise einen Dateinamen, eine Objekt-ID, ein Kennzeichen, einen eindeutigen Identifizierer oder dergleichen), Bezugnahme(n) auf andere Daten (z.B. ein Kennzeichen, dass die Daten anderen Daten zugehörig sind), eine relative Position oder einen Versatz der Daten in Bezug auf andere Daten (z.B. einen Datei-Versatz, etc.), Datengröße und/oder -bereich und dergleichen. Das kontextabhängige Datenformat kann ein Paketformat umfassen, welches ein Datensegment und einen oder mehrere Header umfasst. Alternativ kann ein kontextabhängiges Datenformat Daten einer Kontextinformation in anderen Weisen zuordnen (beispielsweise in einem zweckbestimmten Index in den nichtflüchtigen Speichermedien, einem Speicheraufteilungsindex oder dergleichen).
  • Bei einigen Ausführungsbeispielen kann das kontextabhängige Datenformat ermöglichen, den Datenkontext auf der Grundlage des Inhalts der nichtflüchtigen Speichermedien und unabhängig von anderen Metadaten zu bestimmten (und/oder zu rekonstruieren), wie die oben erörterten beliebigen Abbildungen von irgendeinem zu irgendeinem. Da der Medienplatz von Daten unabhängig von der logischen Adresse der Daten ist, kann es ineffizient (oder unmöglich) sein, den Kontext der Daten allein auf der Grundlage des Medienplatzes oder der Medienadresse der Daten zu bestimmen. Die Speicherung von Daten in einem kontextabhängigen Format in den nichtflüchtigen Speichermedien kann es ermöglichen, den Datenkontext ohne Bezugnahme auf andere Metadaten zu bestimmen. So kann das kontextabhängige Datenformat beispielsweise ermöglichen, die Metadaten allein auf der Grundlage des Inhalts der nichtflüchtigen Speichermedien zu rekonstruieren (beispielsweise Abbildungen von irgendeinen zu irgendeinem zwischen logischen Adressen und Medienplätzen zu rekonstruieren).
  • Bei einigen Ausführungsbeispielen kann die Steuereinrichtung des nichtflüchtigen Speichers konfiguriert sein, um Daten in einen oder asymmetrischeren Einmalschreibmedien, wie Festkörperspeichermedien zu speichern. Wie hier verwendet, bezieht sich ein "Einmalschreib" Speichermedium auf ein Speichermedium, welches jedes Mal neu initialisiert (beispielsweise gelöscht wird), wenn neue Daten darin geschrieben oder programmiert werden. Wie hier verwendet, bezieht sich ein "asymmetrisches" Speichermedium auf ein Speichermedium, welches unterschiedliche Latenzen für verschiedene Speicheroperationen aufweist. Viele Typen von Festkörper-Speichermedien sind asymmetrisch; beispielsweise kann eine Leseoperation wesentlich schneller sein als eine Schreib-/Programmieroperation, und eine Schreib/Programmieroperation kann wesentlich schneller sein als eine Löschoperation (z.B. kann ein Lesen der Medien hunderte Male schneller sein als Löschen und mehrere zehn Male schneller sein als Programmieren der Medien). Die Speichermedien können in Speicherabteilungen unterteilt sein, welche als Gruppe gelöscht werden können (z.B. Löschblöcke), um unter anderem die asymmetrischen Eigenschaften der Medien zu berücksichtigen. Als solches kann ein Modifizieren eines einzelnen Datensegments an der Stelle ein Löschen des gesamten Blocks, der die Daten umfasst, und ein Neuschreiben der modifizierten Daten in den Löschblock zusammen mit den ursprünglichen unveränderten Daten erfordern. Dies kann zu einer ineffizienten "Schreibausweitung" führen, die die Medien übermäßig abnutzt. Daher kann die Steuereinrichtung des nichtflüchtigen Speichers bei einigen Ausführungsbeispielen konfiguriert sein, um Daten platzversetzt zu schreiben. Wie hier verwendet, bezieht sich das "platzversetzte" Schreiben von Daten auf ein Schreiben von Daten in einen anderen Medienspeicherplatz/andere Medienspeicherplätze anstatt auf ein Überschreiben der Daten "an Ort und Stelle" (beispielsweise ein Überschreiben des ursprünglichen physikalischen Platzes der Daten). Ein Modifizieren der platzversetzten Daten kann eine Schreibausweitung vermeiden, da existierende gültige Daten in dem Löschblock mit den zu modifizierenden Daten nicht gelöscht und neu kopiert zu werden brauchen. Außerdem kann ein platzversetztes Schreiben von Daten die Löschung aus dem Latenzpfad von vielen Speicheroperationen beseitigen (die Löschungslatenz ist nicht länger teil des kritischen Pfades einer Schreiboperation).
  • Die Steuereinrichtung des nichtflüchtigen Speichers kann einen oder mehrere Prozesse umfassen, die außerhalb des regulären Pfades zur Bedienung von Speicheroperationen arbeiten (der "Pfad" zur Ausführung einer Speicheroperation und/oder einer Bedienung einer Speicheranforderung). Wie hier verwendet, bezieht sich der "Pfad zur Bedienung einer Speicheranforderung" oder der "Pfad zur Bedienung einer Speicheroperation" (auch als der "kritische Pfad" bezeichnet) auf einer Reihe von Verarbeitungsoperationen, die zur Bedienung der Speicheroperation oder -anforderung benötigt werden, wie einem Lesen, Schreiben, Modifizieren oder dergleichen. Der Pfad zur Bedienung der Speicheranforderung kann die Aufnahme der Anforderung von einem Speicher-Client, das Identifizieren der logischen Adressen der Anforderung, das Ausführen von einer oder mehreren Speicheroperationen in den nichtflüchtigen Speichermedien und eine Rückführung eines Ergebnisses, wie eine Bestätigung oder Daten umfassen. Verarbeitungen, die außerhalb des Pfades zur Bedienung der Speicheranforderungen auftreten, können, ohne darauf beschränkt zu sein, enthalten: eine Glättungs- bzw. Pflegeeinrichtung, eine De-Duplizierung und so weiter. Diese Prozesse können autonom und im Hintergrund realisiert werden, so dass sie die Leistung von anderen Speicheroperationen und/oder Anforderungen nicht stören oder beeinträchtigen. Demgemäß können diese Prozesse unabhängig von der Bedienung von Speicheranforderungen arbeiten.
  • Bei einigen Ausführungsbeispielen umfasst die nichtflüchtige Speichersteuereinrichtung eine Glättungseinrichtung, die konfiguriert ist, um Speicheraufteilungen (beispielsweise Löschblöcke) für eine Wiederverwendung zurückzuholen. Das durch die Steuereinrichtung des nichtflüchtigen Speichers realisierte Paradigma des platzversetzten Schreibens kann zu obsoleten oder ungültigen Daten führen, die in den nichtflüchtigen Speichermedien verbleiben. Ein Überschreiben von Daten X mit Daten Y kann beispielsweise zur Speicherung von Y in einer neuen Speicherunterteilung (anstatt dem Überschreiben von X an Ort und Stelle) und zu einer Aktualisierung der Abbildungen der Metadaten von irgendeinem zu irgendeinem für eine Identifizierung von Y als gültige aktualisierte Version der Daten führen. Die obsolete Version der Daten X kann als ungültig markiert werden, braucht jedoch nicht unmittelbar entfernt (z.B. gelöscht) zu werden, da, wie oben erörtert, das Löschen von X ein Löschen einer gesamten Speicherabteilung umfassen kann, was eine zeitraubende Operation ist und zu einer Schreibausweitung führen kann. In ähnlicher Weise brauchen Daten, die nicht länger in Gebrauch sind (beispielsweise gelöschte oder getrimmte Daten) nicht unmittelbar entfernt zu werden. Die nichtflüchtigen Speichermedien können eine signifikante Menge ungültiger Daten akkumulieren. Ein Glättungsprozess kann außerhalb des kritischen Pfades zur Bedienung der Speicheroperationen arbeiten. Der Glättungsprozess kann die Speicheraufteilungen zurückgewinnen, so dass sie wieder für andere Speicheroperationen verwendet werden können. Wie hier verwendet, bezieht sich das Zurückgewinnen einer Speicherunterteilung auf das Löschen der Speicherunterteilung, so dass neue Daten darin gespeichert/programmiert werden können. Das Zurückgewinnen einer Speicherunterteilung kann eine Verlagerung von gültigen Daten in der Speicherunterteilung zu einem neuen Platz umfassen. Die Glättungseinrichtung kann Speicherunterteilungen für die Rückgewinnung auf der Grundlage von einem oder mehreren Faktoren identifizieren, die, ohne darauf beschränkt zu sein, enthalten können: Die Menge an ungültigen Daten in der Speicherunterteilung, die Menge an gültigen Daten in der Speicherunterteilung, die Abnutzung in der Speicherunterteilung (z.B. die Anzahl der Löschzyklen), die Zeit, seit der die Speicherunterteilung programmiert oder aufgefrischt wurde, und so weiter.
  • Die Steuereinrichtung des nichtflüchtigen Speichers kann ferner konfiguriert sein, um Daten in einem Log-Format zu speichern. Wie oben beschrieben, bezieht sich ein Log-Format auf ein Datenformat, welches eine geordnete Folge von Speicheroperationen festlegt, die in einem nichtflüchtigen Speichermedium ausgeführt werden. Bei einigen Ausführungsbeispielen umfasst das Log-Format das Speichern von Daten in einer zuvor bestimmten Folge von Medienadressen der nichtflüchtigen Speichermedien (beispielsweise innerhalb von sequentiellen Seiten und/oder Löschblöcken der Medien). Das Log-Format kann ferner Zuordnungsdaten (z.B. jedes Paket oder Datensegment) mit jeweiligen Sequenzanzeigern umfassen. Die Sequenzanzeiger können individuell auf Daten angewandt sein (beispielsweise auf jedes Datenpaket angewandt) und/oder auf Datengruppierungen (beispielsweise Pakete, die sequentiell in einer Speicherunterteilung, wie einem Löschblock, gespeichert sind). Bei einigen Ausführungsbeispielen können die Sequenzanzeiger, wie oben beschrieben, auf Speicherunterteilungen angewandt sein, wenn die Speicherunterteilungen zurückgewonnen (beispielsweise gelöscht werden) und/oder wenn die Speicherunterteilungen zuerst zur Speicherung von Daten verwendet werden.
  • Bei einigen Ausführungsbeispielen kann das Log-Format das Speichern von Daten in einem Paradigma "nur anhängen" umfassen. Die Steuereinrichtung des nichtflüchtigen Speichers kann einen gegenwärtigen Anhängpunkt an einer Medienadresse der nichtflüchtigen Speichervorrichtung aufrecht erhalten. Der Anhängpunkt kann eine gegenwärtige Speicherunterteilung und/oder ein Versatz innerhalb einer Speicherunterteilung sein. Daten können dann sequentiell von dem Anhängpunkt angehängt werden. Die sequentielle Reihenfolge der Daten kann daher auf der Grundlage des Sequenzanzeigers der Speicherunterteilung der Daten in Kombination mit der Sequenz der Daten innerhalb der Speicherunterteilung bestimmt sein. Auf das Erreichen des Endes einer Speicherunterteilung hin kann die Steuereinrichtung des nichtflüchtigen Speichers die "nächste" verfügbare Speicherunterteilung identifizieren (die nächste Speicherunterteilung, die initialisiert ist und bereitsteht zur Speicherung von Daten). Die Glättungseinrichtung kann die Speicherunterteilungen zurückgewinnen, die ungültige, alte und/oder gelöschte Daten umfassen, um sicherzustellen, dass die Daten fortfahren können, um an das Medien-Log angehängt zu werden.
  • Das hier beschriebene Log-Format kann ermöglichen, gültige Daten von ungültigen Daten auf der Grundlage der Inhalte der nichtflüchtigen Speichermedien und unabhängig von anderen Metadaten zu unterscheiden. Wie oben erörtert, brauchen ungültige Daten nicht aus den nichtflüchtigen Speichermedien entfernt zu werden, bis die Daten umfassende Speicherunterteilung zurückgewonnen wird. Daher kann eine Vielfalt von "Versionen" von Daten, die denselben Kontext aufweisen, in den nichtflüchtigen Speichermedien (beispielsweise eine Vielfalt von Versionen von Daten, die dieselben logischen Adressen aufweisen) existieren. Die den Daten zugehörigen Sequenzanzeiger können dazu verwendet werden, ungültige Versionen von Daten von der gegenwärtigen aktuellen Version der Daten zu unterscheiden; die Daten, die die jüngsten in dem Log sind, sind die gegenwärtige Version, und vorhergehende Versionen können als ungültig identifiziert werden.
  • In der folgenden detaillierten Beschreibung wird Bezug genommen auf die beigefügten Zeichnungen, die einen Teil davon bilden. Die vorstehende Zusammenfassung ist lediglich veranschaulichend und dient nicht dem Zweck, in irgendeiner Weise zu beschränken. Zusätzlich zu den veranschaulichenden Aspekten, Ausführungsbeispielen und oben beschriebenen Merkmalen werden weitere Aspekte, Ausführungsbeispiele und Merkmale durch Bezugnahme auf die Zeichnungen und die folgende detaillierte Beschreibung ersichtlich werden.
  • 1 ist ein Blockdiagramm eines Ausführungsbeispiels eines Systems 100, welches ein Verwaltungs- bzw. Managementmodul 150 umfasst. Generell ist das Managementmodul 150 konfiguriert, um Rückkopier- und/oder interne Datenverschiebungs-(IDM)-Operationen für die nichtflüchtigen Speichermedien 122 dyna misch und/oder intelligent zu managen, um das Kopieren oder Verschieben von Daten zwischen Speicherzellen unterschiedlicher Typen (z.B. SLC, MLC, TLC) und/oder den Zugriff der Daten zu optimieren. Bei gewissen Ausführungsbeispielen kann das Managementmodul 150 konfiguriert sein, um auf der Grundlage von einem oder mehreren Attributen der Daten (z.B. Datenfaktoren) selektiv zu bestimmen, ob Daten unter Heranziehung einer Rückkopieroperation, einer IDM-Operation oder dergleichen von einem ersten Satz von nichtflüchtigen Speicherzellen (z.B. SLC-Speicherzellen) zu einem zweiten Satz von nichtflüchtigen Speicherzellen (z.B. TLC-Speicherzellen) intern zu kopieren oder zu verschieben sind oder nicht. Das Managementmodul 150 kann bei einem weiteren Ausführungsbeispiel konfiguriert sein, um auf der Grundlage von einem oder mehreren Attributen der Daten (z.B. Datenfaktoren) oder dergleichen selektiv zu bestimmen, ob Daten einer Rückkopier- oder IDM-Operation aufzufrischen sind (z.B. Decodieren der Daten, um einen oder mehrere Fehler zu korrigieren und Neucodieren der korrigierten Daten). Bei einem Ausführungsbeispiel kann das Managementmodul 150 konfiguriert sein, um einen oder mehrere Lesespannungsschwellwerte für einen ersten Satz von nichtflüchtigen Speicherzellen (z.B. SLC-Speicherzellen) einzustellen, um Fehler in den Daten für das Kopieren oder Verschieben der Daten zu einem zweiten Satz von nichtflüchtigen Speicherzellen (z.B. TLC-Speicherzellen) zu reduzieren.
  • Das Managementmodul 150 kann Teil einer und/oder in Verbindung mit einer Speichermanagementschicht (SML) 130 sein. Die SML-Schicht 130 kann in einem nichtflüchtigen Speichersystem 102 einer Rechenvorrichtung 110 arbeiten, die einen Prozessor 111, einen flüchtigen Speicher 112 und ein Kommunikations-Interface 113 umfassen kann. Der Prozessor 111 kann eine oder mehrere zentrale Verarbeitungseinheiten, einen oder mehrere Allzweckprozessoren, einen oder mehrere anwendungsspezifische Prozessoren, einen oder mehrere virtuelle Prozessoren (beispielsweise kann die Rechenvorrichtung 110 eine virtuelle Maschine sein, die innerhalb eines Hostes arbeitet), einen oder mehrere Prozessorkerne oder dergleichen umfassen. Das Kommunikations-Interface 113 kann ein oder mehrere Netzwerk-Schnittstellen umfassen, die konfiguriert sind, um die Rechenvorrichtung 110 (und/oder die Steuereinrichtung 124 des nichtflüchtigen Speichers) kommunikativ mit einem Kommunikationsnetzwerk, wie einem Internet-Protokoll-Netzwerk, einem Speicherbereichs-Netzwerk oder dergleichen zu verbinden.
  • Die Rechenvorrichtung 110 kann ferner flüchtige, mittels eines Computers lesbare nichtflüchtige Speichermedien 114 umfassen. Die mittels eines Computers lesbaren Speichermedien 114 können ausführbare Befehle umfassen, die konfiguriert sind, um die Rechenvorrichtung 110 (beispielsweise den Prozessor 111) zu veranlassen, Schritte eines oder mehrerer der hier angegebenen Verfahren auszuführen. Alternativ oder zusätzlich können die Speichermanagementschicht und/oder eines oder mehrere Module davon als ein oder mehrere mittels eines Computers lesbare Befehle verkörpert sein, die in den nichtflüchtigen Speichermedien 114 gespeichert sind.
  • Die Speichermanagementschicht 130 kann konfiguriert sein, um Speicherdienste für einen oder mehrere Speicher-Clients 116 bereitzustellen. Die Speicher-Clients 116 können lokale Speicher-Clients 116, welche in der Rechenvorrichtung 110 arbeiten, und/oder fern liegende Speicher-Clients 116 enthalten, auf die mittels des Netzwerks (und der Netzwerk-Schnittstelle 113) zugreifbar ist. Die Speicher-Clients 116 können, ohne darauf beschränkt zu sein, enthalten: Betriebssysteme, Dateisysteme, Datenbankanwendungen, Serveranwendungen, Kernel-Ebenen-Prozesse, Anwender-Ebenen-Prozesse, Anwendungen und dergleichen.
  • Die Speichermanagementschicht 130 umfasst eine oder mehrere nichtflüchtige Speichervorrichtungen 120 und/oder ist mit diesen kommunikativ verbunden. Die nichtflüchtigen Speichervorrichtungen 120 können verschiedene Typen von nichtflüchtigen Speichervorrichtungen enthalten, einschließlich, jedoch nicht beschränkt auf: Festkörper-Speichervorrichtungen, Festplattenantriebe, SAN-Speicherressourcen oder dergleichen. Die nichtflüchtigen Speichervorrichtungen 120 können ein oder mehrere Steuereinrichtungen 126 der jeweiligen nichtflüchtigen Speichermedien und nichtflüchtige Speichermedien 122 umfassen. Die SML-Schicht 130 kann auf die eine oder mehreren nichtflüchtigen Speichervorrichtungen 120 über ein traditionelles Block-I/O- bzw. Block-Eingabe/Ausgabe-Interface 131 zugreifen. Außerdem kann die SML-Schicht 130 einen Zugriff auf eine erweiterte Funktionalität (großer, virtueller Adressenraum) durch das SML-Interface 132 bereitstellen. Die Metadaten 135 können dazu verwendet werden, Operationen zu managen und/oder Speicheroperationen zu verfolgen, die durch irgendeinen von dem Block-I/O-Interface 131, dem SML-Interface 132, dem Cache-Interface 133 oder anderen verbundenen Schnittstellen ausgeführt werden.
  • Das Cache-Interface 133 kann Cache-spezifische Merkmale herausstellen, auf die mittels der Speichermanagementschicht 130 zugreifbar ist. Außerdem liefert das SML-Interface 132, welches für die Speicher-Clients 116 vorhanden ist, bei einigen Ausführungsbeispielen einen Zugriff auf Datentransformationen, die durch eine oder mehrere nichtflüchtige Speichervorrichtungen 120 und/oder die Steuereinrichtungen 126 der einen oder mehreren nichtflüchtigen Speichermedien realisiert sind.
  • Die SML-Schicht 130 kann Speicherdienste über eine oder mehrere Schnittstellen bereitstellen, die, ohne darauf beschränkt zu sein, enthalten können: ein Block-I/O-Interface, ein Interface einer erweiterten Speichermanagementschicht, ein Cache-Interface und dergleichen. Die SML-Schicht 130 kann einen logischen Adressenraum 134 für Speicher-Clients 116 durch eine oder mehrere Schnittstellen enthalten. Wie oben erörtert, kann der logische Adressenraum 134 eine Vielzahl von logischen Adressen umfassen, deren jede entsprechenden Medienplätzen in der einen oder den mehreren nichtflüchtigen Speichervorrichtungen 120 entspricht. Die SML-Schicht 130 kann Metadaten 135 behalten, die Abbildungen von irgendeinem auf irgendeinem zwischen logischen Adressen und Medienplätzen umfassen, wie oben beschrieben.
  • Die SLM-Schicht 130 kann ferner ein Log-Speichermodul 137 umfassen, welches konfiguriert ist, um Daten in einem kontextabhängigen Log-Format zu speichern. Das kontextabhängige Log-Datenformat kann die Zuordnung von Daten zu beständigen kontextabhängigen Metadaten umfassen, wie die logischen Adressen der Daten oder dergleichen. Das kontextabhängige Log-Format kann ferner die Zuordnung von Daten zu jeweiligen Sequenz-Identifizierern in den nichtflüchtigen Speichermedien 122 umfassen, die eine geordnete Sequenz von Speicheroperationen festlegen, welche in der einen oder den mehreren nichtflüchtigen Speichervorrichtungen 120 ausgeführt werden, wie oben beschrieben.
  • Die SML-Schicht 130 kann ferner ein Interface 139 der nichtflüchtigen Speichervorrichtung umfassen, welches konfiguriert ist, um Daten, Befehle und/oder Anfragen nach einer oder mehreren nichtflüchtigen Speichervorrichtungen 120 über einen Bus 125 zu übertragen, der, jedoch nicht ausgeschlossen, enthalten kann: einen Kopplungs-Express-(PCI Express oder PCIe)-Bus einer peripheren Komponente, einen seriellen ATA-(Advanced Technology Attachment)-Bus, einen parallelen ATA-Bus, ein SCSI-Interface (Kleincomputersystem-Interface), ein FireWire, einen Fiber-Kanal, einen USB-Bus (Universal Serial Bus), einen PCIe-Bus(Advanced Switching-PCIeAS)-Bus, ein Netzwerk, ein Infiniband, ein SCSI-RDMA oder dergleichen. Das Interface 139 der nichtflüchtigen Speichervorrichtung kann mit der einen oder den mehreren nichtflüchtigen Speichervorrichtungen 120 unter Heranziehung von Eingabe-Ausgabe-Steuerungs-(IO-CTL)-Befehlen, IO-CTL-Befehlserweiterung(en), einem fernen Direktspeicherzugriff oder dergleichen kommunizieren. Das Kommunikations-Interface 113 kann ein oder mehrere Netzwerk-Schnittstellen bzw. -Interfaces umfassen, die konfiguriert sind, um die Rechenvorrichtung 110 (und/oder die Steuereinrichtung 124 der nichtflüchtigen Speicher) mit einem Netzwerk 115 und/oder dem einen oder den mehreren fern liegenden, über das Netzwerk zugreifbaren Speicher-Clients 116 kommunikativ zu koppeln.
  • Die Rechenvorrichtung 110 kann eine Steuereinrichtung 124 der nichtflüchtigen Speicher umfassen, die konfiguriert ist, um Speicherdienste für die Speicher-Clients 116 bereitzustellen. Die Speicher-Clients 116 können lokale Speicher-Clients 116, die in der Rechenvorrichtung 110 arbeiten, und/oder fern liegende Speicher-Clients 116 enthalten, auf die über das Netzwerk 115 (und das Netzwerk-Interface 113) zugreifbar ist. Die Steuereinrichtung 124 der nichtflüchtigen Speicher umfasst eine oder mehrere nichtflüchtige Speichervorrichtungen 120. Obwohl 1B eine einzelne nichtflüchtige Speichervorrichtung 120 aufzeigt, ist die Offenbarung in dieser Hinsicht nicht beschränkt und könnte angepasst werden, um irgendeine Anzahl von nichtflüchtigen Speichervorrichtungen 120 einzubeziehen.
  • Die nichtflüchtige Speichervorrichtung 120 kann nichtflüchtige Speichermedien 122 umfassen, die, ohne darauf beschränkt zu sein, enthalten können: einen NAND-Flash-Speicher, einen NOR-Flash-Speicher, einen Nano-Speicher mit wahlfreiem Zugriff (nano-RAM oder NRAM), einen leitungsbasierten Nanokristall-Speicher, einen auf Siliziumoxid basierten Sub-10-Nanometer-Prozess-Speicher, einen Graphen-Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS), einen Widerstands-RAM (RRAM), eine programmierbare Metallisierungszelle (PMC), einen leitenden Überbrückungs-RAM (CBRAM), einen magnetoresistiven RAM (MRAM), einen dynamischen RAM (DRAM), einen Phasenänderungsspeicher (PRAM oder PCM), magnetische Speichermedien (z.B. eine Festplatte, ein Band) optische Speichermedien oder dergleichen. Während die nichtflüchtigen Speichermedien 122 hier als "Speichermedien" bezeichnet sind, können die nichtflüchtigen Speichermedien 122 bei verschiedenen Ausführungsbeispielen genereller nichtflüchtige Aufzeichnungsmedien umfassen, die imstande sind Daten aufzuzeichnen, wobei diese Medien als nichtflüchtige Speichermedien, nichtflüchtige Speicherungsmedien oder dergleichen bezeichnet werden. Ferner kann die nichtflüchtige Speichervorrichtung 120 bei verschiedenen Ausführungsbeispielen eine nichtflüchtige Aufzeichnungsvorrichtung, eine nichtflüchtige Speichervorrichtung, eine nichtflüchtige Speicherungsvorrichtung oder dergleichen umfassen.
  • Die nichtflüchtigen Speichermedien 122 können eine Vielzahl von Zellen zur Speicherung von Daten umfassen. Wie hier verwendet, bezieht sich eine Zelle auf die kleinste physikalische Einheit der Speicherung oder eines Speichers der nichtflüchtigen Speichermedien 122. Bei einigen Ausführungsbeispielen kann jede Zelle eine physikalische und/oder elektrische Eigenschaft aufweisen, die geändert werden kann, um Daten zu codieren oder in sonstiger Weise zu speichern. Während Zellen der nichtflüchtigen Speichermedien 122 hier generell als "Speicherzellen" oder "Speicherungszellen" bezeichnet werden, können die Zellen genereller Aufzeichnungszellen umfassen, die imstande sind, Daten aufzuzeichnen. Während das Managementmodul 150 hier hauptsächlich im Hinblick auf die nichtflüchtigen Speichermedien 122 beschrieben wird, kann das Managementmodul 150 ferner bei gewissen Ausführungsbeispielen in einer im Wesentlichen ähnlichen Weise arbeiten, um flüchtige Speichermedien zu verwalten.
  • Die nichtflüchtigen Speichermedien 122 können das eine oder die mehreren nichtflüchtigen Speicherelemente 123 umfassen, die, jedoch nicht beschränkt darauf, enthalten können: Chips, Packungen, Ebenen, Chipplättchen und dergleichen. Eine Steuereinrichtung 126 der nichtflüchtigen Speichermedien kann konfiguriert sein, um Speicheroperationen in den nichtflüchtigen Speichermedien 122 zu verwalten bzw. zu managen, und sie kann einen oder mehrere Prozessoren, programmierbare Prozessoren (z.B. im Feld programmierbare Gate-Arrays) oder dergleichen umfassen. Bei einigen Ausführungsbeispielen ist die Steuereinrichtung 126 der nichtflüchtigen Speichermedien konfiguriert, um Daten in den nichtflüchtigen Speichermedien 122 in dem oben beschriebenen kontextabhängigen Log-Format zu speichern (und daraus Daten zu lesen) und Daten zu/von der nichtflüchtigen Speichervorrichtung 120 zu übertragen und so weiter.
  • Die Steuereinrichtung 126 der nichtflüchtigen Speichermedien kann mittels eines Busses 127 mit den nichtflüchtigen Speichermedien 122 kommunikativ gekoppelt sein. Der Bus 127 kann einen I/O- bzw. Eingabe-/Ausgabe-Bus zur Übertragung von Daten zu/von den nichtflüchtigen Speicherelementen 123 umfassen. Der Bus 127 kann ferner einen Steuerbus zur Übertragung der Adressierungs- und anderen Befehls- und Steuerinformationen zu den nichtflüchtigen Speicherelementen 123 umfassen. Bei einigen Ausführungsbeispielen kann der Bus 127 die nichtflüchtigen Speicherelemente 123 mit der Steuereinrichtung 126 der nichtflüchtigen Speichermedien kommunikativ parallel koppeln. Dieser parallele Zugriff kann es ermöglichen, die nichtflüchtigen Speicherelemente 123 als eine Gruppe, die ein Verknüpfungs- bzw. logisches Speicherelement 129 bildet, zu verwalten. Wie oben erörtert, kann das logische Speicherelement in jeweilige logische Speichereinheiten (beispielsweise logische Seiten) und/oder logische Speicherunterteilungen (beispielsweise logische Löschblöcke) aufgeteilt sein. Die logischen Speichereinheiten können durch logisches Verbinden von physikalischen Speichereinheiten jedes der nichtflüchtigen Speicherelemente gebildet sein. Falls beispielsweise die nichtflüchtigen Speichermedien 122 fünfundzwanzig (25) nichtflüchtige Speicherelemente umfassen, kann jede logische Speichereinheit fünfundzwanzig (25) Seiten umfassen (eine Seite jedes Elements der nichtflüchtigen Speichermedien 122).
  • Die Steuereinrichtung 124 des nichtflüchtigen Speichers kann eine SML-Schicht 130 und die Steuereinrichtung 126 der nichtflüchtigen Speichermedien umfassen. Die SML-Schicht 130 kann Speicherdienste für die Speicher-Clients 116 über eines oder mehrere Interfaces 131, 132 und/oder 133 bereitstellen. Bei einigen Ausführungsbeispielen stellt die SML-Schicht 130 ein Block-Vorrichtungs-I/O-Interface 131 bereit, über das die Speicher-Clients 116 Block-Ebenen-I/O-Operationen ausführen. Alternativ oder zusätzlich kann die SML-Schicht 130 ein Interface 132 der Speichermanagementschicht (SML) bereitstellen, die andere Speicherungsdienste für die Speicherungs-Clients 116 bereitstellen kann. Bei einigen Ausführungsbeispielen kann das SML-Interface 132 Erweiterungen auf das Blockvorrichtungs-Interface 131 umfassen (beispielsweise können die Speicherungs-Clients 116 auf das SML-Interface 132 durch Erweiterungen zu dem Block-Vorrichtungs-Interface 131 zugreifen). Alternativ oder zusätzlich kann das SML-Interface 132 als gesondertes API, Dienst und/oder Bibliothek bereitgestellt sein. Die SML-Schicht 130 kann ferner konfiguriert sein, um ein Cache-Interface 133 zur Zwischenspeicherung von Daten unter Verwendung des nichtflüchtigen Speichersystems 102 bereitzustellen.
  • Wie oben beschrieben, kann die SML-Schicht 130 einen logischen Adressenraum 134 für die Speicher-Clients 116 (über die Interfaces 131, 132 und/oder 133) darstellen. Die SML-Schicht 130 kann Metadaten 135 behalten, umfassend Abbildungen von irgendeinem zu irgendeinem zwischen logischen Adressen in dem logischen Adressenraum 134 und Medien stellen in der nichtflüchtigen Speichervorrichtung 120. Die Metadaten 135 können eine Struktur für eine logische zu einer physikalischen Abbildung mit Einträgen umfassen, die logische Adressen in dem logischen Adressenraum 134 und Medienstellen in der nichtflüchtigen Speichervorrichtung 120 abbilden. Die Struktur der logischen zur physikalischen Abbildung der Metadaten 135 ist spärlich mit Einträgen für logische Adressen, für die bzw. unter denen die nichtflüchtige Speichervorrichtung 120 Daten speichert, und mit keinen Einträgen für logische Adressen bestückt, für die die nichtflüchtige Speichervorrichtung 120 derzeit keine Daten speichert. Die Metadaten 135 verfolgen bei gewissen Ausführungsbeispielen Daten in einer Blockebene, wobei die SML-Schicht 130 die Daten als Blöcke verwaltet.
  • Das nichtflüchtige Speichersystem 102 kann ferner ein Log-Speichermodul 137 umfassen, welches, wie oben beschrieben, konfiguriert sein kann, um Daten in der nichtflüchtigen Speichervorrichtung 120 in einem kontextabhängigen Log-Format zu speichern. Das kontextabhängige Log-Datenformat kann die Zuordnung von Daten zu einer logischen Adresse in den nichtflüchtigen Speichermedien 122 umfassen. Das kontextabhängige Log-Format kann ferner die Zuordnung von Daten zu jeweiligen Sequenz-Identifizierern in den nichtflüchtigen Speichermedien 122 umfassen, die eine geordnete Folge von Speicheroperationen festlegen, welche, wie oben beschrieben, in den nichtflüchti gen Speichermedien 122 ausgeführt werden. Die Steuereinrichtung 124 des nichtflüchtigen Speichers kann ferner ein Interface 139 der nichtflüchtigen Speichervorrichtung umfassen, welches konfiguriert ist, um Daten, Befehle und/oder Anfragen an die Steuereinrichtung 126 der nichtflüchtigen Speichermedien über einen Bus 125, wie oben beschrieben, zu übertragen.
  • Bei gewissen Ausführungsbeispielen umfassen die nichtflüchtigen Speichermedien 122 eine Vielfalt von unterschiedlichen Typen von Medien, wie SLC-Speicherungszellen, MLC-Speicherungszellen, TLC-Speicherungszellen oder dergleichen. Beispielsweise kann jedes Chip, jedes Chipplättchen, jede Chipebene oder dergleichen der nichtflüchtigen Speichermedien 122 einen oder mehrere Löschblöcke aus SLC-Speicherzellen umfassen, um Daten für einen oder mehrere Löschblöcke der TLC-Speicherungszellen zu puffern oder andererseits zu speichern. Bei einem anderen Ausführungsbeispiel können einzelne Wortleitungen und/oder Seiten innerhalb eines Löschblocks als SLC-Speicherungszellen, MLC-Speicherungszellen, TLC-Speicherungszellen oder dergleichen bei verschiedenen Ausführungsbeispielen konfiguriert und/oder verwendet sein. Beispielsweise können gewisse Typen von 3D-NAND-Flashspeichermedien 122 Löschblöcke mit Wortleitungen oder Seiten umfassen, die einzeln als SLC, MLC, TLC, Vier-Pegel-Zelle (QLC) oder dergleichen konfigurierbar sind.
  • Nichtflüchtige Speichermedien 122, die unterschiedliche Pegel oder Typen von Medien umfassen, können als "auf dem Chipplättchen gepufferte" Speichermedien 122 bezeichnet werden, wie sie hier verwendet sind. Bei anderen Ausführungsbeispielen können die nichtflüchtigen Speichermedien 122 SLC-Speicherungszellen zur Pufferung von Daten für MLC-Speicherungszellen, MLC-Speicherungszellen zur Pufferung von Daten für TLC-Speicherungszellen oder andere Kombinationen von ersten, Quell-Speicherungszellen zur Pufferung von Daten für zweite, Ziel-Speicherungszellen umfassen, die mehr Speicherungszustände und Bits pro Zelle aufweisen als die ersten Quell-Speicherungszellen. Während das Ausführen von Zurückkopieroperationen von den SLC-Speicherungszellen zu den TLC-Speicherungszellen hier zum Zwecke der Vereinfachung beschrieben ist, gilt die Beschreibung in gleicher Weise auf Rückkopieroperationen von SLC- zu MLC-, von MLC- zu TLC-, von SLC- zu QLC-, von MLC- zu QLC-, von TLC- zu QLC-Speicherzellen und so weiter für andere Sätze von Speicherzellen in verschiedenen Moden oder verschiedenen Typen.
  • Wenn die Anzahl von Speicherungszuständen und Bits pro Zelle zunimmt, können auch die Lesezeiten, Schreib-/Programmierungszeiten und dergleichen zunehmen. Je mehr Datenbits jede Speicherungszelle eines Satzes von Speicherungszellen zu speichern konfiguriert ist, umso mehr Daten können ferner bei gewissen Ausführungsbeispielen gepuffert werden, bevor der Satz von Speicherungszellen programmiert wird. Anstatt Daten in einem flüchtigen Speicher der Steuereinrichtung 126 der nichtflüchtigen Speichermedien der SML-Schicht 130 der Host-Rechenvorrichtung 110 oder dergleichen zu puffern, kann das Managementmodul 150 Daten in den nichtflüchtigen Speichermedien 122 puffern. Das Managementmodul 150 kann beispielsweise Daten in drei Löschblöcken von SLC-Speicherungszellen zur Speicherung in einem einzelnen Löschblock von TLC-Speicherungszellen oder dergleichen puffern oder speichern.
  • Wie hier verwendet, umfasst ein(e) Rückkopier- oder IDM-Operation, -Prozedur oder Prozess ein Kopieren oder Verschieben von Daten von einem ersten Quellsatz von Speicherzellen zu einem zweiten, Zielsatz von Speicherzellen. Eine Rückkopier- oder IDM-Operation kann die kopierten Daten durch Kopieren oder Verschieben der Daten von weniger dichteren Speicherzellen kompakter machen (beispielsweise durch Kopieren von Daten von SLC-Speicherzellen zu MLC- oder TLC-Speicherzellen). Das Rückkopieren oder IDM kann auch ein Rückführen bei Ausführungsbeispielen umfassen, wo Daten in einem ersten Satz von Speicherzellen zur Speicherung in einem zweiten Satz von Speicherzellen oder dergleichen zwischengespeichert werden.
  • Das Management-Modul 150 kann das Kopieren oder Verschieben von Daten zwischen verschiedenen Sätzen von Speicherzellen (beispielsweise Seiten, Löschblöcken oder dergleichen) unter Heranziehung von Rückkopier- oder IDM-Operationen managen. Die nichtflüchtigen Speichermedien 122 können beispielsweise einen Rückkopier- oder IDM-Befehl zur Ausführung einer Rückkopier-Operation unterstützen oder bereitstellen, die das Management-Modul 150 heranziehen kann, um intern Daten zu kopieren oder zu verschieben. Bei anderen Ausführungsbeispielen kann das Managementmodul 150 eine Rückkopier- oder IDM-Operation ohne einen Rückkopier- oder IDM-Befehl unter Heranziehung von Allzweck-Lese- und -Schreib-/Programmier-Befehlen oder dergleichen ausführen. Das Managementmodul 150 ist bei einem Ausführungsbeispiel konfiguriert, um Rückkopier- und/oder IDM-Operationen für nichtflüchtige Speichermedien 122 dynamisch und/oder intelligent zu verwalten, damit das Kopieren oder das Verschieben von Daten zwischen Speicherzellen unterschiedlicher Typen (zum Beispiel SLC, MLC, TLC) und/oder der Zugriff der Daten optimiert werden.
  • Bei gewissen Ausführungsbeispielen kann das Managementmodul 150 konfiguriert sein, um selektiv auf der Grundlage von einem oder mehreren Datenfaktoren zu bestimmen, ob Daten unter Heranziehung einer Rückkopier-Operation, einer IDM-Operation oder dergleichen von einem ersten Satz von nichtflüchtigen Speicherzellen (zum Beispiel SLC-Speicherzellen) zu einem zweiten Satz von nichtflüchtigen Speicherzellen (zum Beispiel TLC-Speicherzellen) intern zu kopieren oder zu verschieben sind oder nicht. Das Managementmodul 150 kann beispielsweise Daten geringerer Priorität und/oder auf die weniger häufig zugegriffen wird, von schnelleren, wenig dichten Speicherzellen, wie SLC-Speicherzellen, zu dichteren Speicherzellen, wie TLC-Speicherzellen intern zurückkopieren oder verschieben, während Daten höherer Priorität und/oder auf die häufig zugegriffen wird, in schnellere, weniger dichte Speicherzellen, zumindest temporär, zurückkopiert oder verschoben werden, wodurch eine größere Leistung, Zuverlässigkeit oder dergleichen für Daten höherer Priorität und/oder auf die häufiger zugegriffen wird, bereitgestellt werden.
  • Das Managementmodul 150 kann bei einem weiteren Ausführungsbeispiel konfiguriert sein, um auf der Grundlage von einem oder mehreren Faktoren oder dergleichen selektiv zu bestimmen, ob Daten einer Rückkopier- oder IDM-Operation aufzufrischen sind (beispielsweise Dekodieren der Daten, um einen oder mehrere Fehler zu korrigieren und Neucodieren der korrigierten Daten). Ein Auffrischen von Daten durch Dekodieren und Neucodieren der Daten kann ein Kopieren oder Verschieben der Daten von dem nichtflüchtigen Speicherelement 123 (zum Beispiel einem Chip, einem Chipplättchen, einer Chipebene) zu der Steuereinrichtung 126 der nichtflüchtigen Speichermedien, der Speicher-Managementschicht 130 und/oder einer anderen Einheit zum Dekodieren und Neucodieren umfassen. Bei Ausführungsbeispielen, bei denen das Managementmodul 150 Daten ohne Auffrischen der Daten zurückkopieren oder verschieben kann, können die Daten innerhalb eines einzelnen nichtflüchtigen Speicherelements 123 (beispielsweise einem Chip, einem Chipplättchen, einer Chipebene) verbleiben, so dass die Rückkopier- und/oder IDM-Prozedur ohne die Leistungserschwerung des Kopierens oder Verschiebens der Daten aus dem nichtflüchtigen Speicherelement 123 zum Dekodieren und Neucodieren und zum Kopieren oder Verschieben der neu codierten Daten zurück in das nichtflüchtige Speicherelement 123 abschliessen können. Auf diese Weise kann das Managementmodul 150 gewisse Daten auffrischen, um Fehler während des Zurückkopierens oder -Verschiebens von anderen Daten ohne Auffrischen der Daten zu verringern oder zu verhindern.
  • Bei einem Ausführungsbeispiel kann das Managementmodul 150 konfiguriert sein, um einen oder mehrere Lesespannungs-Schwellwerte für einen ersten Satz von nichtflüchtigen Speicherzellen (beispielsweise SLC-Speicherzellen) einzustellen, damit Fehler in den Daten für das Kopieren oder Verschieben der Daten zu einem zweiten Satz von nichtflüchtigen Speicherzellen (zum Beispiel TLC-Speicherzellen) verringert sind. Ohne das Managen von Lesespannungs-Schwellwerten für nichtflüchtige Quell-Speicherzellen kann das Managementmodul 150 eine begrenzte Zeit besitzen, innerhalb der eine Rückkopier- oder IDM-Operation für Daten auszuführen ist, bevor die Daten beschädigt werden und Fehler eingeführt werden. Jegliche in die Daten eingeführten Fehler in den nichtflüchtigen Quell-Speicherzellen (beispielsweise SLC-Speicherzellen) können durch das Kopieren oder Verschieben von beschädigten Daten zu den nichtflüchtigen Ziel-Speicherzellen (zum Beispiel TLC-Speicherzellen) ausgeweitet oder intensiviert werden. Durch Einstellen einer oder mehrerer Lesespannungs-Schwellwerte für die nichtflüchtigen Quell-Speicherzellen kann das Managementmodul 150 Datenfehler verringern oder eliminieren, und zwar mit oder ohne Auffrischen der Daten, was ermöglicht, die Daten in den nichtflüchtigen Quell-Speicherzellen während einer längeren Zeitspanne zu speichern, als wenn Vorgabe- bzw. Standard-Lesespannungs-Schwellwerte verwendet wären.
  • Das Managementmodul 150 kann bei einem Ausführungsbeispiel einen ausführbaren Software-Code, wie einen Gerätetreiber, für die nichtflüchtige Speichervorrichtung 120, die SML-Schicht 130 oder dergleichen umfassen, der in mittels eines Computers lesbaren Speicherungsmedien 114 zur Ausführung in dem Prozessor 111 gespeichert ist. Bei einem anderen Ausführungsbeispiel kann das Managementmodul 150 eine Verknüpfungs- bzw. Logik-Hardware der einen oder mehreren nichtflüchtigen Speichervorrichtungen 120, wie eine Steuereinrichtung 126 der nichtflüchtigen Speichermedien, eine Steuereinrichtung 124 des nichtflüchtigen Speichers, eine Vorrichtungs-Steuereinrichtung, ein im Feld programmierbares Gate-Array (FPGA) oder eine andere programmierbare Logik, Firmware für einen FPGA oder eine andere programmierbare Logik, einen Mikrocode zur Ausführung in einem Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC) oder dergleichen umfassen. Bei einem weiteren Ausführungsbeispiel kann das Managementmodul 150 eine Kombination sowohl aus einem ausführbaren Software-Code als auch aus einer Verknüpfungs-Hardware enthalten.
  • Bei einem Ausführungsbeispiel ist das Managementmodul 150 konfiguriert, um Speicheranforderungen von der SML-Schicht 130 über einen Bus 125 oder dergleichen zu empfangen. Das Managementmodul 150 kann ferner konfiguriert sein, um Daten über den Bus 125 zu/von der SML-Schicht 130 und/oder Speicherelementen 116 zu übertragen. Demgemäß kann das Managementmodul 150 bei einigen Ausführungsbeispielen ein oder mehrere Direktspeicherzugriffs-(DMA)-Module, fern liegende DMA-Module, Bus-Controller, Brücken, Puffer und so weiter umfassen und/oder mit diesen in Kommunikation sein, um die Übertragung von Speicheranforderungen und zugehörigen Daten zu erleichtern. Bei einem anderen Ausführungsbeispiel kann das Managementmodul 150 Speicheranforderungen als einen API-Anruf von einem Speicher-Client 116, als einen IO-CTL-Befehl oder dergleichen empfangen. Das Managementmodul 150 wird unten unter Bezugnahme auf die 3A und 3B detaillierter beschrieben.
  • Eine "Zelle" bezieht sich auf die kleinste physikalische Einheit zur Speicherung oder eines Speichers aus nichtflüchtigen Speichermedien 122. Bei einigen Ausführungsbeispielen weist jede Zelle eine physikalische und/oder elektrische Eigenschaft auf, die geändert werden kann, um Daten zu kodieren oder in sonstiger Weise zu speichern. In einem Flash-Speicher kann eine Zelle beispielsweise einen Transistor mit schwimmendem Gate enthalten, und die zur Kodierung von Daten genutzte physikalische Eigenschaft kann die auf dem schwimmenden Gate gespeicherte Ladung, die Schwellwertspannung Vt, die ausreicht, um den Transistor leitend zu machen, wenn sie an das Steuergate angelegt wird, oder dergleichen sein. Als weiteres Beispiel kann in einem Phasenänderungs-Speicher eine Zelle eine Region von Chalkogenid-Glas sein, und die zum Kodieren von Daten benutzte physikalische Eigenschaft kann der Grad an Kristallisierung der Region, der elektrische Widerstand der Zelle oder dergleichen sein. Wie oben unter Bezugnahme auf die nichtflüchtigen Speichermedien 122 beschrieben, können viele Typen von Zellen Daten einer nichtflüchtigen Speichervorrichtung 120 zur Verwendung mit dem Managementmodul 150 codieren.
  • Bei einem Ausführungsbeispiel wird der Bereich von möglichen Werten für die physikalische Datencodierungs-Eigenschaft einer Zelle in diskrete Programmzustände oder -aufenthaltsorte unterteilt, so dass jeder Programmzustand oder -aufenthaltsort einen oder mehrere mögliche Datenwerte codiert. Bei einigen Ausführungsbeispielen sind die Programmzustände oder -aufenthaltsorte konfiguriert, um Werte für eine Vielzahl von Bits zu codieren. Falls beispielsweise eine Zelle ein einzelnes Bit unter Heranziehung von zwei Zuständen (beispielsweise im SLC-Modus) speichert, kann ein erster Zustand eine binäre Eins, "1" codieren, und ein zweiter Zustand kann eine binäre Null, "0" codieren. Falls eine Zelle zwei Bits unter Heranziehung von vier Zuständen (zum Beispiel im MLC-Modus) speichert, kann jeder Zustand einen anderen Wert für die zwei Bits der Zelle codieren, wie als "11", "01", "00" oder "10". Falls eine Zelle drei Bits unter Heranziehung von acht Zuständen speichert (zum Beispiel im TLC-Modus), kann jeder Zustand einen anderen Wert für die drei Bits der Zelle codieren, wie als "111", "011", "001", "101", "100", "000", "010" oder "110". Bei einem weiteren Ausführungsbeispiel können die Zustände oder Aufenthaltsorte einer Zelle durch Sicherheitsbänder oder Trennabstände getrennt sein. Wie hier verwendet, bezieht sich ein Programm-"Zustand" oder -"Aufenthaltsort" auf einen Sub-Bereich von möglichen Werten für die physikalische Datencodierungs-Eigenschaft einer Zelle, so dass jeder Zustand einem einzelnen Satz von einem oder mehreren Datenwerten entspricht. Ein Aufenthaltsort, ein Programmzustand, ein Programmierungszustand oder ein Speicherzustand können einen Bereich von Lesepegeln umfassen, wie einen Lesespannungspegel für Flash-Medien, einen Lese-Widerstandspegel für PCM-Medien oder dergleichen, die einem bestimmten Satz von einem oder mehreren Datenwerten zugeordnet sind. Lese-Schwellwerte, wie ein Lesespannungs-Schwellwert, ein Lesewiderstands-Schwellwert oder dergleichen können Aufenthaltsorte- oder Programmzustände trennen. Zustände/Aufenthaltsorte und Sicherheitsbänder werden unten auf Bezugnahme auf 9A weiter detailliert beschrieben.
  • Bei einigen Ausführungsbeispielen bildet eine Kodierung Zustände oder Aufenthaltsorte einer Zelle auf Datenwerte ab. Generell ist ein Codieren ein Abbilden, welches jedem Zustand oder Aufenthaltsort einer Zelle erlaubt, einen entsprechenden Datenwert oder einen Satz von Datenwerten darzustellen. In einer Zelle mit zwei Zuständen (zum Beispiel SLC) kann die Codierung beispielsweise den unteren Zustand als binäre "1" abbilden und den oberen Zustand als binäre "0", so dass die Zelle ein Informationsbit speichert. Als anderes Beispiel kann in einer Zelle mit vier Zuständen (zum Beispiel MLC) eine Gray-Code-Codierung oder dergleichen die vier Zustände L0, L1, L2 und L3 auf die Datenwerte "11", "01", "00" bzw. "10" abbilden, so dass die Zelle zwei Informationsbit speichert. In ähnlicher Weise kann in einer Zelle mit acht Zuständen (zum Beispiel TLC) eine Gray-Code-Codierung oder dergleichen die acht Zustände L0, L1, L2, L3, L4, L5, L6 und L7 auf die Datenwerte "111", "011", "001", "101", "100", "000", "010" und "110" abbilden, so dass die Zelle drei Informationsbits speichert, enthält und/oder codiert. Die nichtflüchtigen Speichermedien 122 können Daten unter Heranziehung von anderen Codierungen speichern. Codierungen werden unten unter Bezugnahme auf 9B in weiterem Detail beschrieben.
  • Wie unten beschrieben, speichert eine Mehrpegel- oder MLC-Speicherzelle zumindest zwei Bits, ein höchstwertiges Bit (MSB) und ein niederwertigstes Bit (LSB). Ein Typ von MLC-Speichermedien ist durch Dreifachpegel-Zellen-(TLC)-Speichermedien gegeben, die drei Bits speichern oder codieren, ein MSB-Bit, ein Bit von mittlerer Wertigkeit (CSB) und ein LSB-Bit. Andere Ausführungsbeispiele von MLC-Speichermedien können mehr als drei Bits pro Zelle speichern oder codieren, wie eine Vierpegel-Zelle mit 16 Aufenthaltsorten oder Programmzuständen pro Zelle, die vier Bits codiert, oder dergleichen. Bei gewissen Ausführungsbeispielen kann ein MSB-, CSB- und/oder LSB-Bit, obwohl es Teil derselben physikalischen Speicherzelle ist, unterschiedlichen Seiten der nichtflüchtigen Speichermedien 122 zugewiesen sein (beispielsweise einer oberen, mittleren und/oder unteren Seite).
  • Bei gewissen Ausführungsbeispielen ist eine Vielzahl von Mehrpegel-Speicherzellen in den nichtflüchtigen Speichermedien 122 (zum Beispiel NAND-Flash-Speichermedien) als eine physikalische Seite organisiert. Bei gewissen nichtflüchtigen Speichermedien 122 ist eine physikalische Seite die kleinste Einheit, in die in den nichtflüchtigen Speichermedien 122 geschrieben oder programmiert werden kann. Bei derartigen Ausführungsbeispielen kann eine Speicherzelle einem Seiten-Tupel zugeordnet sein, umfassend eine Seite für jedes Bits der Zelle (zum Beispiel zwei Seiten oder ein Seitenpaar für MLC, drei Seiten für TLC). Ein Seiten-Tupel ist ein Satz von Seiten (zum Beispiel obere, mittlere und/oder untere), der einem einzigen gemeinsamen Satz von physikalischen Speicherzellen zugeordnet ist. Einer Speicherzelle kann beispielsweise ein Seitenpaar, welches eine obere Seite und eine untere Seite enthält, und ein Seiten-Tupel zugeordnet sein, welches eine obere Seite, eine mittlere Seite und eine untere Seite enthält, oder dergleichen. Eine obere Seite kann den MSB-Bits zugeordnet sein, eine mittlere Seite kann den CSB-Bits zugeordnet sein, und die untere Seite kann den LSB-Bits zugeordnet sein oder umgekehrt. Physikalische Seiten können bei gewissen Ausführungsbeispielen in logische Seiten gruppiert oder organisiert sein, wobei jede logische Seite mehrere physikalische Seiten umfasst.
  • Somit können die MSB-, CSB- und LSB-Bits einer Speicherzelle unterschiedliche Adressen in der nichtflüchtigen Speichervorrichtung 120 haben. Bei gewissen Ausführungsbeispielen enthält die obere Seite die MSB-Bits einer Vielzahl von Speicherzellen; die mittlere Seite enthält die CSB-Bits der Vielzahl von Speicherzellen, und die untere Seite enthält die LSB-Bits desselben gemeinsamen Satzes oder der Vielzahl von Speicherzellen. Schreibvorgänge, die an die obere Seite gerichtet sind, können daher Änderungen lediglich in den MSB-Bits der zugehörigen Speicherzellen hervorrufen; Schreibvorgänge, die an die mittlere Seite gerichtet sind, können Änderungen lediglich in den CSB-Bits der zugehörigen Speicherzellen hervorrufen, und Schreibvorgänge, die an die untere Seite gerichtet sind, können lediglich Änderungen in den LSB-Bits der zugehörigen Speicherzellen auf der Grundlage einer Datencodierung für Aufenthaltsorte oder Programmzustände der Speicherzellen hervorrufen.
  • Das Managementmodul 150 schreibt bei gewissen Ausführungsbeispielen Daten und/oder veranlasst, dass Daten in einen Satz von Speicherzellen entsprechend einer sequentiellen Seitenprogrammierungsreihenfolge für die nichtflüchtigen Speichermedien 122 zu programmieren sind. Eine sequentielle Seitenprogrammierungsreihenfolge kann beispielsweise angeben, dass eine erste/untere Seite programmiert wird, bevor eine zweite/mittlere Seite programmiert wird, dass eine zweite/mittlere Seite programmiert wird, bevor eine dritte/obere Seite programmiert wird, oder sie kann eine andere zuvor festgelegte Reihenfolge der Seitenprogrammierung für einen Satz von Zellen angeben. Die nichtflüchtigen Speichermedien 122 können einen mehrstufigen Programmierungsprozess, wie einen zweistufigen Programmierungsprozess (zum Beispiel untere Seite, dann obere Seite oder umgekehrt), einen dreistufigen Programmierungsprozess (zum Beispiel untere Seite, dann mittlere Seite, dann obere Seite) oder dergleichen erfordern. Bei einem weiteren Ausführungsbeispiel können gewisse nichtflüchtige Speichermedien 122 erfordern, dass jede Seite oder jedes Bit eines Satzes von Speicherzellen bekannt ist, vorhanden ist, bereit ist, programmiert zu werden, und/oder zur selben Zeit programmiert zu werden (zum Beispiel, dass eine mittlere und/oder obere Seite von Daten programmiert wird oder bereitsteht zur Programmierung, bevor eine untere Seite programmiert wird).
  • Bei einigen Ausführungsbeispielen weist jede nichtflüchtige Speicherzelle 2^X mögliche Programmierungszustände oder Aufenthaltsorte auf, wobei X gleich die Anzahl von Bits pro nichtflüchtiger Speicherzelle ist. Beispielsweise kann eine nichtflüchtige MLC-Speicherzelle zwei Informationsbits speichern und weist demgemäß vier mögliche Programmierungszustände oder Aufenthaltsorte auf. Gemäß einem anderen Beispiel kann eine nichtflüchtige TLC-Speicherzelle drei Informationsbits speichern und weist demgemäß acht mögliche Programmierungszustände oder Aufenthaltsorte auf.
  • Wie oben beschrieben, können, obwohl die MSB-, CSB- und LSB-Bits Teil derselben physikalischen Dreifachpegel-Speicherzelle 402 sind, die MSB, die CSB- und LSB-Bits verschiedenen physikalischen und/oder logischen Seiten der Medien zugeordnet sein. Bei gewissen Ausführungsbeispielen ist eine Vielzahl der nichtflüchtigen Speicherzellen logisch als eine oder mehrere Seiten in der nichtflüchtigen Speichervorrichtung 120 organisiert. Eine Seite kann als Bestimmung der kleinsten Einheit verwendet werden, die in die nichtflüchtige Speichervorrichtung geschrieben oder programmiert werden kann. Außerdem kann der nichtflüchtigen Speicherzelle ein Seiten-Tupel zugeordnet sein. Ein Seiten-Tupel ist ein Satz von Seiten (zum Beispiel bestimmt als untere, mittlere und/oder obere Seiten), die einem einzigen gemeinsamen Satz von physikalischen nichtflüchtigen Speicherzellen zugeordnet sind. Bei einem Beispiel ist eine nichtflüchtige Zwei-Bit-Speicherzelle einem Seitenpaar zugeordnet, bei dem das MSB-Bit einer oberen Seite zugeordnet ist und bei dem das LSB-Bit einer unteren Seite zugeordnet ist. Das zum Korrelieren der MSB-/CSB-/LSB-Bits mit den oberen/mittleren/unteren Seiten bei einem besonderen Ausführungsbeispiel verwendete spezifische Übereinkommen beschränkt nicht notwendigerweise andere Übereinkommen, die bei anderen Ausführungsbeispielen angewandt sein können. Somit können die MSB-, CSB- und LSB-Bits in derselben nichtflüchtigen Speicherzelle unterschiedliche logische und/oder physikalische Adressen in der nichtflüchtigen Speichervorrichtung 120 aufweisen.
  • Zusätzlich können die Schreiboperationen in einer oder mehreren Stufen realisiert sein, und jede Stufe kann eine oder mehrere inkrementale Spannungspegeländerungen enthalten (zum Beispiel eine inkrementale Stufenimpulsprogrammierung). Beispielsweise kann eine Änderung des Zustands einer nichtflüchtigen Speicherzelle vom Löschzustand/L0 in einen Zustand A/L1 in einer einzelnen Programmierungsphase über eine Vielzahl von inkrementalen Spannungspegeländerungen auftreten, wobei jede Spannungspegeländerung den Spannungspegel der nichtflüchtigen Speicherzelle um einen Anteil der Differenz zwischen dem Löschzustand/L0 und dem A/L1-Zustand erhöht. Bei einem anderen Beispiel kann die Änderung des Zustands einer nichtflüchtigen Speicherzelle von dem Löschzustand/L0 zu dem LM-Zustand in einer einzigen Programmierungsphase über eine einzige Spannungspegeländerung (mit einer relativ hohen Programmierungsspannung) oder über eine Vielzahl von inkrementalen Spannungspegeländerungen (jeweils unter Verwendung einer relativ niedrigen Programmierungsspannung) ausgeführt werden.
  • Bei einigen Ausführungsbeispielen können eine oder mehrere Leseoperationen bei Lese-Spannungs-Schwellwerten zwischen verschiedenen Aufenthaltsorten oder Programmierungszuständen ausgeführt werden, um zu bestimmen, in welchen Aufenthaltsorte oder Programmierungszustand die Lese-Spannung fällt. Beispielsweise kann für eine MLC-Speicherzelle eine erste Leseoperation in einer nichtflüchtigen Speicherzelle ausgeführt werden, um zu bestimmen, ob die Lesespannung zwischen dem Lösch/L0-Zustand und dem A/L1-Zustand liegt; eine zweite Leseoperation kann ausgeführt werden, um zwischen dem A/L1-Zustand und dem B/L2-Zustand zu unterscheiden, und eine dritte Leseoperation kann ausgeführt werden, um zwischen dem B/L2-Zustand und dem C/L3-Zustand zu unterscheiden. Nachdem ein Programmierungszustand identifiziert ist, können die MSB- und LSB-Bits bekannt sein, da jeder Programmierungszustand zwei (oder mehr) Bits entspricht. Bei gewissen Ausführungsbeispielen werden die Datenbits auf Anforderungen nach Daten gelesen, die in der nichtflüchtigen Speichervorrichtung 120 gespeichert sind.
  • 2 veranschaulicht ein Ausführungsbeispiel eine Steuereinrichtung 124 des nichtflüchtigen Speichers, umfassend ein Managementmodul 150. Die nichtflüchtige Speichervorrichtung 120 kann eine Steuereinrichtung 126 der nichtflüchtigen Speichermedien und nichtflüchtige Speichermedien 122 umfassen. Die nichtflüchtigen Speichermedien 122 können eine Vielzahl von nichtflüchtigen Speicherelementen 123 umfassen, die über einen Bus 127, wie oben beschrieben, mit der Steuereinrichtung 126 der nichtflüchtigen Speichermedien kommunikativ gekoppelt sein können.
  • Die Steuereinrichtung 126 der nichtflüchtigen Medien kann eine Schreib-Pipeline 240 umfassen, die konfiguriert ist, um Daten auf Anforderungen hin, die über das Managementmodul 150 erhalten werden, in den nichtflüchtigen Speichermedien 122 in einem kontextabhängigen Format zu speichern. Die Anforderungen können in den nichtflüchtigen Speichermedien 122 zu speichernde Daten enthalten und/oder sich darauf beziehen, sie können eine logische Adresse bzw. logische Adressen der Daten und so weiter enthalten. Wie oben beschrieben, kann das kontextabhängige Format ein Speichern einer logischen Adresse der Daten in Zuordnung zu den Daten in den nichtflüchtigen Speichermedien 122 umfassen. Beispielsweise kann die Schreib-Pipeline 240 konfiguriert sein, um Daten in Paketen zu formatieren, und sie kann die logische Adresse der Daten in einem Paket-Header (oder anderem Paketfeld) enthalten. Die Schreib-Pipeline 240 kann bei gewissen Ausführungsbeispielen die Daten unter Verwendung eines Fehlerkorrekturcodes (ECC), wie eines Blockcodes, eines Faltungscodes, eines Bose-Chaudhuri-Hocquenghem-(BCH)-Codes, eines Paritätskontrollcodes geringer Dichte (LDPC), eines Hamming-Codes, eines Reed-Solomon-Codes, eines Turbo-Codes oder dergleichen, codieren und/oder schützen. Die Schreib-Pipeline 240 kann konfiguriert sein, um Daten zur Speicherung in den nichtflüchtigen Speichermedien 122 zu puffern. Bei einigen Ausführungsbeispielen kann die Schreib-Pipeline 240 einen oder mehrere Synchronisierpuffer umfassen, um einen Taktbereich der Steuereinrichtung 126 der nichtflüchtigen Speichermedien mit einem Taktbereich der nichtflüchtigen Speichermedien 122 (und/oder dem Bus 127) zu synchronisieren.
  • Das Log-Speichermodul 248 kann konfiguriert sein, um einen Medienplatz bzw. Medienplätze für die Daten auszuwählen, und es kann eine Adressierungs- und/oder Steuerinformation für die nichtflüchtigen Speicherelemente 123 über den Bus 127 bereitstellen. Bei einigen Ausführungsbeispielen ist das Log-Speichermodul 248 konfiguriert, um Daten sequentiell in einem Log-Format innerhalb der nichtflüchtigen Speichermedien zu speichern. Das Log-Speichermodul 248 kann ferner konfiguriert sein, um die nichtflüchtigen Speichermedien, wie oben beschrieben, zu glätten. Bei gewissen Ausführungsbeispielen ist das Log-Speichermodul 248 im Wesentlichen dem Log-Speichermodul 137, wie oben beschrieben, ähnlich. Das Log-Speichermodul 248 kann durch die SML-Schicht 130 und/oder durch die Steuereinrichtung 126 der nichtflüchtigen Speichermedien ausgeführt werden.
  • Auf das Schreiben von Daten in die nichtflüchtigen Speichermedien hin kann die Steuereinrichtung 126 der nichtflüchtigen Speichermedien konfiguriert sein, um Metadaten 135 (zum Beispiel einen Vorwärts-Index) zur Zuordnung der logischen Adresse(n) der Daten zu der Medienadresse bzw. den Medienadressen der Daten in den nichtflüchtigen Speichermedien 122 zu aktualisieren. Bei einigen Ausführungsbeispielen können die Metadaten 135 in der Steuereinrichtung 126 der nichtflüchtigen Speichermedien behalten werden; die Metadaten 135 können beispielsweise in den nichtflüchtigen Speichermedien 122, in einem (nicht dargestellten) flüchtigen Speicher oder dergleichen gespeichert werden. Alternativ oder zusätzlich können die Metadaten 135 innerhalb der SML-Schicht 130 behalten werden (zum Beispiel in einem flüchtigen Speicher 112 der Rechenvorrichtung 110 von 1). Bei einigen Ausführungsbeispielen können die Metadaten 135 in einem flüchtigen Speicher durch die SML-Schicht 130 erhalten werden, und sie können periodisch in den nichtflüchtigen Speichermedien 122 gespeichert werden.
  • Die Steuereinrichtung 126 der nichtflüchtigen Speichermedien kann ferner eine Lese-Pipeline 241 umfassen, die konfiguriert ist, um kontextabhängige Daten aus den nichtflüchtigen Speichermedien 122 auf Anforderungen hin zu lesen, die über das Managementmodul 150 erhalten werden. Die Anforderungen können eine logische Adresse der angeforderten Daten, eine Medienadresse der angeforderten Daten und so weiter umfassen. Die Lese-Pipeline 241 kann bei gewissen Ausführungsbeispielen einen oder mehrere Datenfehler für die Daten unter Heranziehung eines Fehlerkorrekturcodes (ECC), wie eines Blockcodes, eines Faltungscodes, eines Bose-Chaudhuri-Hocquenghem-(BCH)-Codes, eines Paritätskontrollcodes geringer Dichte (LDPC), eines Hamming-Codes, eines Reed-Solomon-Codes, eines Turbo-Codes oder dergleichen decodieren und/oder korrigieren. Die Lese-Pipeline 241 kann konfiguriert sein, um in einem kontextabhängigen Format gespeicherte Daten aus den nichtflüchtigen Speichermedien 122 zu lesen und die Daten der SML-Schicht 130 und/oder einem Speicher-Client 116 bereitzustellen. Die Lese-Pipeline 241 kann konfiguriert sein, um die Medienadresse der Daten unter Heranziehung einer logischen Adresse der Daten und der Metadaten 135 zu bestimmen. Alternativ oder zusätzlich kann die SML-Schicht 130 die Medienadresse der Daten bestimmen und die Medienadresse in die Anforderung einschließen. Das Log-Speichermodul 248 kann die Medienadresse für die nichtflüchtigen Speicherelemente 123 bereitstellen und die Daten können über einen Puffer in die Lese-Pipeline 241 strömen. Die Lese-Pipeline 241 kann, wie oben beschrieben, einen oder mehrere Lese-Synchronisierpuffer für eine Taktbereichs-Synchronisierung umfassen.
  • Die Steuereinrichtung 126 der nichtflüchtigen Speichermedien kann ferner einen Multiplexer 249 umfassen, der konfiguriert ist, um Daten und/oder Befehle selektiv zu/von der Schreib-Pipeline 240 und der Lese-Pipeline 241 zu leiten. Bei einigen Ausführungsbeispielen kann die Steuereinrichtung 126 der nichtflüchtigen Speichermedien konfiguriert sein, um Daten zu lesen, während ein Puffer der Schreib-Pipeline 240 gefüllt wird, und/oder er kann eine oder mehrere Speicher-Operationen in einer oder mehreren Banken von nichtflüchtigen Speicherelementen 123 (nicht dargestellt) verschachteln.
  • 3A veranschaulicht ein Ausführungsbeispiel eines Managementmoduls 150. Das Managementmodul 150 ist im Wesentlichen dem oben unter Bezug auf 1 beschriebenen Managementmodul 150 ähnlich. Bei dem veranschaulichten Ausführungsbeispiel enthält das Managementmodul 150 ein Puffermodul 302, ein Auffrischmodul 304 und ein Rückkopiermodul 306.
  • Bei einem Ausführungsbeispiel puffert das Puffermodul 302 oder speichert in sonstiger Daten (zum Beispiel Nutzerdaten oder andere Nutzlastdaten von einer Schreibanforderung) in einen ersten Satz von nichtflüchtigen Speicherzellen, wie einen oder mehrere Löschblöcke von SLC-Speicherzellen. Das Puffermodul 302 kann Daten von einem oder mehreren Speicher-Clients 116 empfangen, die einem oder mehreren Schreib-/Programm-Anforderungen oder dergleichen zugehörig sind. Das Puffermodul 302 kann Daten in einem flüchtigen Speicherpuffer, wie dem flüchtigen Speicher 112 der Host-Rechenvorrichtung 110, einem flüchtigen Speicher der nichtflüchtigen Speichervorrichtung 120 oder dergleichen, temporär speichern oder bereitstellen, um ein Programmieren der Daten in einem Satz von Speicherzellen der nichtflüchtigen Speichermedien 122 zu erleichtern.
  • Bei gewissen Ausführungsbeispielen kann das Puffermodul 302 gepufferte Daten innerhalb der nichtflüchtigen Speichermedien 122 der nichtflüchtigen Speichervorrichtung 120 selbst speichern, wie in einen oder mehreren ersten/Quell-Löschblöcken, die als SLC-Speicherzellen konfiguriert oder unterteilt sind, so dass die Daten andauern gespeichert sind, jedoch so, dass eine sequentielle Programmierungsreihenfolge nicht gilt. Beispielsweise kann innerhalb der nichtflüchtigen Speichervorrichtung 120 genügend flüchtiger Speicher nicht existieren; eine Wartezeit für die nichtflüchtige Speichervorrichtung 120 kann nicht lang genug sein, um sämtlich der gepufferten Daten oder dergleichen zu programmieren, und eine Pufferung der Daten in den nichtflüchtigen Speichermedien 122 kann die Daten vor einem Stromausfall schützen, so dass die Daten nach der Erholung von dem Stromausfall aus einem oder mehreren ersten/Quell-Löschblöcken noch programmiert werden können. Um beispielsweise einen größeren Datendurchsatz, eine größere Bandbreite oder dergleichen zu liefern, können die nichtflüchtigen Steuereinrichtungen 124, 126 und/oder das Puffermodul 302 eine verschachtelte Programmierungsreihenfolge anwenden. Für TLC-Speicherzellen mit drei Seiten oder Bits pro Zelle kann das Puffermodul 302 die nichtflüchtige Speichervorrichtung 120 anweisen, in einer verschachtelten Reihenfolge zu programmieren, wie eine untere Seite eines ersten Satzes von Speicherzellen, eine untere Seite eines zweiten Satzes von Speicherzellen, eine untere Seite eines dritten Satzes von Speicherzellen, eine mittlere Seite des ersten Satzes von Speicherzellen, eine mittlere Seite des zweiten Satzes von Speicherzellen, eine mittlere Seite des dritten Satzes von Speicherzellen, eine obere Seite des ersten Satzes von Speicherzellen, eine obere Seite des zweiten Satzes von Speicherzellen und eine obere Seite des dritten Satzes von Speicherzellen oder dergleichen. Bei einem solchen Ausführungsbeispiel kann das Puffermodul 302 mehrere Seiten zu einer Zeit puffern.
  • Bei gewissen Ausführungsbeispielen können die nichtflüchtigen Speichermedien 122 erfordern, dass sämtliche drei Seiten von Daten für einen Satz von Speicherzellen bekannt sind vor der Programmierung irgendwelcher der Seiten oder dass sämtliche drei Seiten zur selben Zeit programmiert werden. Falls sämtliche drei Seiten nicht programmiert sind, können sogar die programmierten Seiten verloren sein, falls ein Neustart-Ereignis auftritt. Zumindest aus diesen Gründen kann das Puffermodul 302 bei gewissen Ausführungsbeispielen sämtliche drei Seiten von Daten für einen Satz von Speicherzellen puffern oder speichern. Um, wie oben beschrieben, zu verschachteln, kann das Puffermodul 302 bei einem weiteren Ausführungsbeispiel neun Seiten, drei für jeweils drei verschiedene Sätze von Speicherzellen puffern (zum Beispiel Seiten oder Wortleitungen innerhalb eines Löschblockes, innerhalb eines oder mehrerer verschiedener Löschblöcke oder dergleichen).
  • Das Puffermodul 302 kann bei verschiedenen Ausführungsbeispielen Daten in SLC-Speicherzellen zum Kopieren in TLC-Speicherzellen, in SLC-Speicherzellen zum Kopieren in MLC-Speicherzellen, in MLC-Speicherzellen zum Kopieren in TLC-Speicherzellen oder in sonstiger Weise Daten in einem ersten Satz von Speicherzellen zum Kopieren in einen zweiten Satz von Speicherzellen mit mehr Speicherzuständen oder Bits pro Zelle als dem ersten Satz von Speicherzellen puffern oder speichern.
  • Das Puffermodul 302 kann beispielsweise Daten in drei SLC-Löschblöcken zum Kopieren oder Zurückschieben in einen TLC-Löschblock oder dergleichen puffern oder speichern. Das Puffermodul 302 kann Daten zur Pufferung oder Speicherung von einer Lese-Pipeline, wie oben unter Bezugnahme auf 2 beschrieben, aufnehmen, welche die Daten paketieren, die Daten mit einem Fehlerkorrekturcode (ECC) codieren, die Daten komprimieren und/oder die andere Operationen bezüglich der Daten ausführen kann.
  • Bei einem Ausführungsbeispiel frischt das Auffrischmodul 304 selektiv Daten aus einem ersten Satz von nichtflüchtigen Speicherzellen (zum Beispiel SLC-Speicherzellen) zum Kopieren oder Zurückschieben der Daten in einen zweiten Satz von nichtflüchtigen Speicherzellen (zum Beispiel TLC-Speicherzellen) auf. Wie hier verwendet, umfasst das Auffrischen von Daten das Ausführen von einer oder mehreren Operationen oder Prozessen an den Daten. Bei einem Ausführungsbeispiel kann ein ECC-Auffrischen für Daten das Ausführen einer ECC-Decodierung zur Korrektur von Fehlern bezüglich der Daten und ein Ausführen einer ECC-Neucodierung bezüglich der Daten umfassen, um die Daten vor Folgefehlern zu schützen. Das Auffrischmodul 304 kann bei gewissen Ausführungsbeispielen beispielsweise einen ECC-Decoder zum Decodieren der Daten und/oder zum Korrigieren von einem oder mehreren Datenfehlern in den Daten verwenden und einen ECC-Codierer zum Neucodieren der Daten verwenden. Bei einem weiteren Ausführungsbeispiel kann das Auffrischmodul 304 Daten durch Neupaketieren der Daten auffrischen und/oder neu codieren (zum Beispiel Entfernen der Header oder anderen Metadaten und zur Neuformatierung der Daten mit neuen Headern und anderen Metadaten). Das Neu-Paktieren der Daten kann bei gewissen Ausführungsbeispielen dem Auffrischmodul 304 die Chance liefern, ungültige Daten von einer Seite oder einem Löschblock, der aufgefrischt wird, zu entfernen (zum Beispiel Daten, die durch eine Schreibanforderung bezüglich derselben logischen Adresse überschrieben worden sind).
  • Anstatt sämtliche Daten aufzufrischen, die das oben beschriebene Rückkopiermodul 306 in dichtere Speicherzellen (zum Beispiel von SLC-Speicherzellen in TLC-Speicherzellen) zurückkopiert, kann das Auffrischmodul 304 Daten selektiv auffrischen, indem auf der Grundlage von einem oder mehreren Attributen (zum Beispiel Datenfaktoren) oder dergleichen bezüglich der Daten bestimmt wird, ob Daten aufzufrischen sind oder nicht. Das Bestimmen von Datenfaktoren oder anderen Attributen von Daten wird im Hinblick auf das Datenfaktormodul 322 von 3B unten detaillierter beschrieben. Bei einem Ausführungsbeispiel umfasst ein Daten zugehöriges Attribut (zum Beispiel ein Datenfaktor) eine Charakteristik oder einen Aspekt, der gespeicherten Daten, nichtflüchtigen Speicherzellen, die Daten speichern, oder dergleichen zugehörig ist. Ein Daten zugehöriger Datenfaktor oder anderes Attribut kann bei gewissen Ausführungsbeispielen ein Kennzeichen für eine Wahrscheinlichkeit umfassen, dass die zugehörigen Daten einen oder mehrere Datenfehler aufweisen. Ein Daten zugehöriger Datenfaktor oder ein anderes Attribut kann bei verschiedenen Ausführungsbeispielen ein oder mehrere Dienstqualitäts-(QoS)-Pegel oder eine andere Priorität für die Daten, eine Fehlerrate für die Daten, wie eine Rohbitfehlerrate (RBER) oder eine unkorrigierbare Bitfehlerrate (UBER), ein Alter bezüglich der Daten (zum Beispiel eine Speicherungszeit oder eine Zeit, seitdem geschrieben worden ist), eine Programmierungs-/Löschzyklus-Zählung für den ersten/Quellsatz von nichtflüchtigen Speicherzellen, eine Schreibhäufigkeit für die Daten, eine Lesehäufigkeit für die Daten, einen Kapazitäts-Schwellwert, der für den ersten/Quellsatz von nichtflüchtigen Speicherzellen erfüllt ist, oder dergleichen enthalten. Das Auffrischmodul 304 kann beispielsweise Daten, die eine gewisse Fehlerrate aufweisen, Daten, die einen gewissen Dienstqualitäts-Pegel aufweisen, Daten, die älter sind als ein gewisses Alter, oder einen Speicherungszeit-Schwellwert oder dergleichen aufweisen, gerade auffrischen, was dem Rückkopiermodul 306 ermöglicht, andere Daten zurückzukopieren oder zu verschieben, ohne dass die Daten aufgefrischt werden.
  • Bei einem Ausführungsbeispiel können das Auffrischmodul 304 und/oder das Datenfaktormodul 322 auf der Grundlage eines Datenfaktors oder eines anderen Attributs gerade für einen Untersatz der Daten, wie eines einzelnen ECC-Codeworts oder eines Datenblocks oder dergleichen bestimmen, ob Daten eines ersten Quellsatzes von Speicherzellen (zum Beispiel eine logische oder physikalische SLC-Seite, ein logischer oder physikalischer SLC-Löschblock) aufzufrischen sind oder nicht, und in Ergebnissen des Lesens des Untersatzes der Daten einzubeziehen, um einen oder mehrere Datenfaktoren oder andere Attribute zu bestimmen. Bei Ausführungsbeispielen, bei denen das Auffrischmodul 304 konfiguriert ist, um Daten auf einer seitenweisen Grundlage aufzufrischen, und eine physikalische oder logische Seite eine Vielzahl von ECC-Codewörtern oder Datenblöcken umfasst, können das Auffrischmodul 304 und/oder das Datenfaktormodul 322 beispielsweise einen Untersatz von einem oder mehreren ECC-Codewörtern lesen und/oder decodieren und auf der Grundlage der Ergebnisse des Lesens des Untersatzes der ECC-Codewörter, wie einer Fehlerrate, einer Anzahl von Fehlern, einer Dienstqualitäts- oder Prioritätsebene, welche durch mit den Daten gespeicherte Metadaten angezeigt wird, oder dergleichen, bestimmen, ob die gesamte physikalische oder logische Seite aufzufrischen ist oder nicht. Falls das Auffrischmodul 304 und/oder das Datenfaktormodul 322 beispielsweise bestimmen, dass ein Proben-ECC-Codewort von einer logischen oder physikalischen Seite keinerlei Fehler aufweist, keinerlei unkorrigierbare Fehler hat, eine Anzahl von Fehlern aufweist, die nicht einem bestimmten Fehler-Schwellwert genügen, oder dergleichen, kann das Auffrischmodul 304 bestimmen, dass das Rückkopier-modul 306 die logische oder physikalische Seite zu einem zweiten, Zielsatz von Speicherzellen (zum Beispiel einer Seite von TLC-Speicherzellen) ohne Auffrischen der Daten intern zurückkopiert oder verschiebt.
  • Bei Ausführungsbeispielen, bei denen eine Rückkopier- und/oder IDM-Operation ein Kopieren oder Verschieben einer Vielzahl von Seiten (beispielsweise das Kopieren von drei SLC-Seiten zu drei demselben Satz von TLC-Speicherzellen zugehörigen TLC-Seiten) umfasst, kann das Auffrischmodul 304 eine oder mehrere Seiten der Rückkopier- und/oder IDM-Operation ohne Auffrischen von einer oder mehreren Seiten auffrischen. Das Auffrischmodul 304 kann bei gewissen Ausführungsbeispielen mit dem Rückkopiermodul 306, zusammenarbeiten, um auf Daten zum Auffrischen zuzugreifen, um zu bestimmen, ob Daten oder dergleichen aufzufrischen sind. Bei einem Ausführungsbeispiel kann das Rückkopiermodul 306, wie unten beschrieben, Daten aus einem ersten Satz von Speicherzellen (zum Beispiel einer SLC-Seite und/oder einem Löschblock) in einen flüchtigen Speicher, wie einen flüchtigen Lesespeicher, einen flüchtigen Programmpuffer, einen Cache-Puffer oder dergleichen, lesen, laden, verschieben und/oder kopieren, und das Auffrischmodul 304 kann Daten aus dem flüchtigen Puffer lesen oder in anderer Weise darauf zugreifen, um zu bestimmen, ob die Daten aufzufrischen sind oder nicht, um die Daten oder dergleichen aufzufrischen.
  • Bei Daten, die das Auffrischmodul 304 auffrischt, kann das Auffrischmodul 304 bei gewissen Ausführungsbeispielen die aufgefrischten, neu codierten Daten in den flüchtigen Speicher zurück verschieben, kopieren oder laden, so dass das Kopiermodul 306 die Rückkopier- und/oder IDM-Operation unter Verwendung von aufgefrischten, neu codierten Daten abschließen kann. Wie unten auf Bezugnahme auf 4 in detaillierter beschrieben, kann ein einzelnes nichtflüchtiges Speicherelement 123 (zum Beispiel ein Chip, ein Chipplättchen, eine Chipebene, eine Packung, eine Bank, ein Kanal oder dergleichen von nichtflüchtigen Speichermedien 122) nichtflüchtige Speicherzellen mit unterschiedlichen Zahlen von Speicherzuständen oder Aufenthaltsorten, die verschiedene Zahlen von Bits codieren (zum Beispiel einen oder mehrere SLC-Löschblöcke, einen oder mehrere MLC-Löschblöcke, einen oder mehrere TLC-Löschblöcke oder dergleichen) und einen flüchtigen Speicher enthalten (zum Beispiel einen flüchtigen Lesepuffer, einen flüchtigen Programmpuffer, einen Cache-Puffer oder dergleichen).
  • Bei gewissen Ausführungsbeispielen verbleiben Daten, die das Auffrischmodul 304 nicht auffrischt, in demselben nichtflüchtigen Speicherelement 123 während der gesamten Rückkopier- oder IDM-Prozedur (sie werden beispielsweise aus einem ersten Satz von Speicherzellen in einen flüchtigen Speicher und aus dem flüchtigen Speicher in einen zweiten Satz von Speicherzellen kopiert oder verschoben). Daten, die das Auffrischmodul 304 auffrischt und/oder neu codiert, können bei einem Ausführungsbeispiel das zugehörige nichtflüchtige Speicherelement 123 über einen Bus 127, 125 zu der Steuereinrichtung 126 der nichtflüchtigen Speichermedien, zu der SML-Schicht 130, zu dem flüchtigen Host-Speicher 112 oder dergleichen zum Auffrischen verlassen.
  • Nachdem das Auffrischmodul 304 Daten aufgefrischt und/oder neu codiert hat, kann das Auffrischmodul 304 bei gewissen Ausführungsbeispielen die Daten in einen flüchtigen Speicher des zugehörigen nichtflüchtigen Speicherelements 123 zurückverschieben, kopieren oder laden, so dass die Rückkopier- und/oder IDM-Operation abgeschlossen werden kann. Bei einem anderen Ausführungsbeispiel kann zumindest für gewisse Typen des Auffrischens oder Neu-Codierens, wie dem Neupaketieren der Daten, das Auffrischmodul 304 die Daten in eine Schreib-Pipeline 240 stellen, welche die Daten auffrischen, codieren und/oder paketieren kann. Anstelle des Beendens einer Rückkopier- und/oder IDM-Operation zu demselben nichtflüchtigen Speicherelement 123 für Daten, die unter Verwendung der Schreib-Pipeline 240 aufgefrischt sind, können bei gewissen Ausführungsbeispielen das Auffrischmodul 304 und/oder die Schreib-Pipeline 240 die aufgefrischten Daten in eine neue Stelle schreiben wie einen Anhängepunkt einer sequentiellen, Log-basierten Schreibstruktur oder dergleichen. Bei gewissen Ausführungsbeispielen kann die neue Stelle Speicherzellen umfassen, welche dieselbe Anzahl von Speicherzuständen, dieselbe Anzahl von Bits pro Zelle oder dergleichen aufweisen können wie der erste, Quellsatz von Speicherzellen, aus denen die Daten gelesen wurden (zum Beispiel zurück zu einem Puffer von SLC-Speicherzellen), wo die Daten später Gegenstand einer anschließenden Rückkopier- und/oder IDM-Operation oder dergleichen sein können.
  • Durch selektives Bestimmen, ob Daten einer Quell-Seite, eines Quell-Löschblocks oder dergleichen (zum Beispiel von SLC-Speicherzellen) für eine Rückkopier- und/oder IDM-Operation aufzufrischen sind oder nicht anstatt einfach sämtliche Daten aufzufrischen, kann das Auffrischmodul 304 die Menge an Daten, die aus einem nichtflüchtigen Speicherelement 123 kopiert werden, während der Rückkopier- und/oder IDM-Operationen verringern. Das Auffrischmodul 304 kann dadurch die Leistungseinbuße des Auffrischens von gewissen Daten vermeiden, während dennoch andere Daten aufgefrischt werden, um gewisse Datenfehler zu korrigieren. Auf diese Weise kann das Auffrischmodul 304 die auf dem Chipplättchen gepufferte Rückkopier- und/oder IDM-Operation für die nichtflüchtigen Speichermedien 122 dadurch optimieren, dass optimal bestimmt wird, ob eine Seite, die verschoben wird (zum Beispiel von SLC-Speicherzellen zu TLC-Speicherzellen), hinsichtlich Fehler überprüft und/oder korrigiert werden sollte, bevor sie verschoben wird (zum Beispiel zu einer TLC-Seite). Wie oben beschrieben, kann der Prozess des Decodierens eines ECC-Codewortes, des Korrigierens von einem oder mehreren Fehlern und des Neucodierens des Codewortes als ein Auffrischen, ein Datenauffrischen, ein Codierungsauffrischen, ein Neucodieren, ein Daten-Neucodieren oder dergleichen bezeichnet werden.
  • Obwohl bei gewissen Ausführungsbeispielen ein Hersteller der nichtflüchtigen Speichermedien 122 empfehlen kann, dass sämtliche Daten einer Rückkopier- und/oder IDM-Operation aufgefrischt werden, kann das Auffrischmodul 304 selektiv bestimmen, ob Daten aufzufrischen sind oder nicht, ob lediglich ein Untersatz von Daten aufzufrischen ist, den das Rückkopiermodul 306 zurückkopiert. Bei einem Ausführungsbeispiel braucht das Auffrischmodul 304 nicht jegliche Rückkopierdaten aufzufrischen, so dass sämtliche oder im Wesentlichen sämtliche Daten in dem nichtflüchtigen Speicherelement 123 während der Rückkopier- und/oder IDM-Operation verbleiben.
  • Das Rückkopier-Modul 306 kann bei gewissen Ausführungsbeispielen einen bestimmten, zuvor festgelegten oder bekannten Auswahlprozess anwenden, um auf der Grundlage einer Adresse oder eines anderen Kennzeichens der Quell- und/oder Zielspeicherzellen eine Stelle in dem zweiten Zielsatz von Speicherzellen bestimmen, an bzw. zu der Daten zu verschieben oder zurück zu kopieren sind. Falls der Zielsatz von Speicherzellen (zum Beispiel ein TLC-Löschblock oder dergleichen) nicht verwendbar ist (zum Beispiel ausgeschieden, schlecht, abgenutzt, Fehler aufweisend oder in anderer Weise nicht verfügbar ist, um Daten zu speichern), kann das Rückkopiermodul 306 nicht imstande sein, Daten zu dem Ziel zu verschieben oder zu kopieren. Anstatt den zuvor festgelegten Ziel-Auswahlprozess zu ändern, kann das Auffrischmodul 304 bei gewissen Ausführungsbeispielen viel mehr konfiguriert sein, um eine Auffrischoperation für Daten auszuführen, die für einen nicht benutzbaren oder nicht verfügbaren Satz von Speicherzellen bestimmt sind, so dass die Daten an eine andere Stelle geschrieben werden. Das Auffrischmodul 304 kann beispielsweise eine erweiterte Auffrischoperation, wie ein Neupaketieren der Daten zusätzlich zum Neucodieren der Daten mit einem ECC-Codierer ausführen, und es kann die Daten an die andere Stelle, wie einen Anhängepunkt einer sequentiellen Log-basierten Schreibstruktur unter Verwendung der Schreib-Pipeline 240 oder dergleichen schreiben. Auf diese Weise können unbrauchbare oder nicht verfügbare Ziele für Rückkopier- und/oder IDM-Operationen übersprungen werden, ohne dass ein zuvor bestimmter Ziel-Auswahlprozess modifiziert oder geändert wird.
  • Wie unten unter Bezugnahme auf 8A und 8B beschrieben, können die nichtflüchtigen Speicherelemente 123 bei gewissen Ausführungsbeispielen physikalisch oder logisch in einer Matrix angeordnet sein, und die Matrix kann in Zeilen von einer n Chipplättchen Weite (zum Beispiel n = 29 Spalten = 28 Daten-Chipplättchen + 1 Paritäts-Chipplättchen oder dergleichen) organisiert sein, wobei die physikalischen Löschblöcke in der Zeile als ein logischer Löschblock oder dergleichen verwaltet werden. Zeilen der Matrix können bei einem Ausführungsbeispiel unter Verwendung eines adaptiven Flashbacks verwaltet werden, was bedeutet, dass dann, wenn ein physikalischer Löschblock in einer Zeile ausfällt, anstelle eines Neuabbildens eines weiteren Löschblocks zur Aufrechterhaltung derselben Zeilenbreite die Zeilengröße reduziert und eine kürzere Zeile verwendet werden können.
  • Falls ein logischer Ziel-Löschblock für eine Rückkopier- und/oder IDM-Operation eine kürzere Zeile und weniger physikalische Löschblöcke aufweist als der logische Ziel-Löschblock, dann kann die Rückkopier- und/oder IDM-Operation jedoch nicht für jeden physikalischen Löschblock abschließen. Damit ein Rückkopieren und/oder IDM zwischen zwei Zeilen der Matrix zu verwenden ist, sollte folglich die Anzahl von nutzbaren physikalischen Löschblöcken in jeder Zeile für jede Rückkopier- und/oder IDM-Operation zumindest dieselbe sein. Mit anderen Worten sollte die Ziel-Zeile (zum Beispiel eine TLC-Zeile) so breit wie oder breiter sein als die Quell-Zeile (zum Beispiel eine SLC-Zeile). Falls bei gewissen Ausführungsbeispielen die Ziel-Zeile nicht so breit ist wie die Quell-Zeile, kann das Rückkopiermodul 306 ein anderes Ziel für die Daten, wie einen alternativen Löschblock auswählen, der aus einem Pool von reservierten Löschblöcken abseits für diesen Zweck gewählt wird. Falls die Ziel-Zeile nicht so breit ist wie die Quell-Zeile, kann das Rückkopiermodul 306 bei einem weiteren Ausführungsbeispiel mit dem Auffrischmodul 304 zusammenarbeiten, um die Daten aufzufrischen (zum Beispiel neu zu codieren, neu zu paketieren oder dergleichen) und um die Quell-Daten zu einer anderen Stelle hin umzuleiten, wie einem Anhänge-Punkt der sequentiellen Log-basierten Schreibstruktur unter Heranziehung der Schreib-Pipeline 240 oder dergleichen anstatt die Rückkopier- und/oder IDM-Operation zu beenden.
  • Das Auffrischmodul 304 kann bei einem Ausführungsbeispiel eine Logik bzw. Verknüpfung in der Steuereinrichtung 126 der nichtflüchtigen Speichermedien, wie die Lese-Pipeline 241, die Schreib-Pipeline 240 oder dergleichen umfassen. Das Auffrischmodul 304 kann bei gewissen Ausführungsbeispielen bestimmen, ob eine Codierungsauffrischung innerhalb der Steuereinrichtung 126 vorzunehmen ist oder nicht, und falls das Auffrischmodul 304 bestimmt, eine Codierungsauffrischung auszuführen, kann das Auffrischmodul 304 die Daten in bzw. zu einem oder mehreren neuen ECC-Codewörtern innerhalb der Steuereinrichtung 126 decodieren und neu codieren. Bei einem weiteren Ausführungsbeispiel können die Daten, die das Auffrischmodul 304 auffrischt, in der Steuereinrichtung 126 verbleiben, ohne während des Auffrischens über den Bus 125 zu dem flüchtigen Hauptspeicher 112 der Host-Rechenvorrichtung 110 gesendet oder kopiert zu werden.
  • Das Auffrischmodul 304 kann konfiguriert sein, um auf der Grundlage von verfügbaren Informationen (beispielsweise Attributen, die den Daten zugehörig sind, Datenfaktoren) oder dergleichen, schnell und effizient zu bestimmen, ob Daten aufzufrischen sind. Bei gewissen Ausführungsbeispielen, wie unten unter Bezugnahme auf das Datenfaktormodul 322 beschrieben, können das Auffrischmodul 304 und/oder das Datenfaktormodul 322 ein bestimmtes Modell oder eine bestimmte Charakterisierung anwenden, das bzw. die einem Satz von Speicherzellen zugehörig ist, um voraussagend zu bestimmen, ob Daten der Speicherzellen aufzufrischen sind oder nicht, ohne notwendigerweise die Daten aus den Speicherzellen zu lesen oder in anderer Weise zu verarbeiten. Bei einem weiteren Ausführungsbeispiel, wie es unten beschrieben wird, kann das Datenfaktormodul 322 die nichtflüchtigen Speichermedien 122 als Hintergrundprozess abtasten, um einen oder mehrere Datenfaktoren oder andere Attribute für die Daten zu bestimmen, um zu bestimmen, ob das Auffrischmodul 304 die Daten aufzufrischen hat oder nicht, oder dergleichen, so dass das Auffrischmodul 304 einfach Datenfaktoren nachschlagen und/oder auf Datenfaktoren Bezugnehmen und/oder eine Bestimmung auf eine Rückkopier- und/oder IDM-Operation für die Daten hin vornehmen kann, ob Daten aufzufrischen sind.
  • Bei gewissen Ausführungsbeispielen kann das Auffrischmodul 304 konfiguriert sein, um eine Abfallsammlung oder eine Speicherkapazitäts-Wiedergewinnungsoperation für Daten in Zuordnung zu einer Auffrischprozedur auszuführen, wie dies unten bezüglich des Speicherkapazitäts-Wiedergewinnungsmoduls 318 detaillierter beschrieben ist. Das Auffrischmodul 304 und/oder das Speicherkapazitäts-Wiedergewinnungsmodul 318 können beispielsweise ungültige Daten (zum Beispiel Daten, die ersetzt oder durch eine nachfolgende Schreiboperation für bzw. unter denselben Adressen überschrieben sind) von Daten entfernen, die für eine Rückkopier- und/oder IDM-Operation aufgefrischt werden bzw. sind. Auf diese Weise kann das Auffrischmodul 304 die Größe der Daten reduzieren, die Daten effektiv verdichten oder komprimieren. Das Auffrischmodul 304 kann bei einem Ausführungsbeispiel mit der oben beschriebenen Schreib-Pipeline 240 zusammenarbeiten, um Daten neu zu codieren und/oder neu zu paketieren, nachdem die ungültigen Anteile beseitigt worden sind.
  • Bei einem weiteren Ausführungsbeispiel kann das Rückkopiermodul 306 sämtliche Daten aus einem ersten Satz von Speicherzellen (zum Beispiel SLC-Speicherzellen) verschieben, zurückkopieren, und das Auffrischmodul 304 kann eine Auffrischoperation für zumindest einen Teilsatz der Daten ausführen, nachdem das Kopiermodul 306 die Daten in einen zweiten Satz von Speicherzellen zurückkopiert oder in diesem sonstiger Weise gespeichert hat. Das Auffrischmodul 304 kann auf der Grundlage von einem oder mehreren Datenfaktoren oder anderen den Daten zugehörigen Attributen, wie oben beschrieben, bestimmen, welche Daten aufzufrischen sind. Bei gewissen Ausführungsbeispielen kann das Auffrischmodul 304 auf der Grundlage eines Aspekts oder Attributs der Rückkopier- und/oder IDM-Operation selbst, wie einer Programmzeit (zum Beispiel Tprog) für die Rückkopier- und/oder IDM-Operation, auf Fehler hin, die während der Rückkopier- und/oder IDM-Operation detektiert sind, oder dergleichen bestimmen, welche Daten aufzufrischen sind. Das Ausführen einer Auffrischoperation nach einer Rückkopier- und/oder IDM-Prozedur kann bei einigen Ausführungsbeispielen mehr Fehler ermöglichen als die Ausführung einer Rückkopier- und/oder IDM-Operation vor oder während einer Rückkopier- und/oder IDM-Prozedur, jedoch kann sie ermöglichen, dass das Auffrischen während Zeiten geringen Drucks und geringerer Belastung stattfindet, was ermöglicht, dass die Rückkopier- und/oder IDM-Prozedur schneller oder dergleichen stattfindet.
  • Das Auffrischmodul 304 kann bei gewissen Ausführungsbeispielen mit dem Rückkopiermodul 306 zusammenarbeiten, um ein Ziel für aufgefrischte Daten zu bestimmen. Falls ein Zielsatz von Speicherzellen (zum Beispiel TLC-Speicherzellen) einen Abnutzungs- und/oder Fehler-Schwellwert überschreitet oder diesem in anderer Weise entspricht (zum Beispiel eine bestimmte Programm/Löschzyklus-Zählung, Fehlerrate oder dergleichen überschreitet) können, wie oben beschrieben, das Auffrischmodul 304 und/oder das Rückkopiermodul 306 beispielsweise bestimmen, dass die Daten stattdessen an einen anderen Platz geschrieben werden sollen, wie einen Anhängepunkt der sequentiellen Log-basierten Schreibstruktur (zum Beispiel in einen anderen Satz von SLC-Speicherzellen), in einen alternativen Satz von Speicherzellen (zum Beispiel einen anderen Satz von TLC-Speicherzellen) oder dergleichen anstelle des ursprünglich bestimmten Zieles. Wenn bei einem Ausführungsbeispiel das Auffrischmodul 304 bestimmt, dass die Daten einer Rückkopier- und/oder IDM-Operation sich bei einer niedrigen Nachfrage befinden (zum Beispiel eine Lesezählung für die Daten fällt aus, um einer zuvor festgelegten Häufigkeitsschwelle zu entsprechen) kann das Auffrischmodul 304 mit dem Speicherkapazitäts-Wiedergewinnungsmodul 318 zusammenarbeiten, um ungültige Daten zu entfernen, und sie können die Daten zu dem Anhängepunkt der sequentiellen Log-basierten Schreibstruktur umleiten.
  • Bei einem Ausführungsbeispiel ist das Rückkopiermodul 306 konfiguriert, um zu bestimmen, wann und/oder falls eine Rückkopier- und/oder IDM-Operation für Daten auszuführen ist (zum Beispiel, ob Daten aus einem Satz von SLC-Speicherzellen in einen Satz von TLC-Speicherzellen zu speichern sind oder nicht). Das Rückkopiermodul 306 kann Rückkopier- und/oder IDM-Operationen (zum Beispiel zwischen SLC-Speicherzellen und TLC-Speicherzellen) derart selektiv ausführen, dass nicht sämtliche Daten aus dem Quellsatz der Speicherzellen verschoben oder kopiert und in dem Zielsatz von Speicherzellen gespeichert werden. Bei Ausführungsbeispielen, bei denen die Quelle, der Puffersatz von Speicherzellen weniger Speicherzustände als der Zielsatz von Speicherzellen aufweist und eine geringere Anzahl von Bits codiert oder darstellt als der Zielsatz, kann der Quellsatz der Speicherzellen anders als die Speicherkapazität schnellere Lesezeiten, schnellere Schreib-/Programmierungszeiten, weniger Zellverlust oder andere bessere, robustere Zugriffseigenschaften aufweisen als der Zielsatz von Speicherzellen. Das Rückkopiermodul 306 kann auf der Grundlage von einem oder mehreren Datenfaktoren oder anderen den Daten zugehörigen Attributen bestimmen, ob Daten zu speichern, zu verschieben oder zurückzukopieren sind.
  • Das Rückkopiermodul 306 speichert bei einem Ausführungsbeispiel Daten in einem zweiten/Zielsatz von Speicherzellen anschließend an das Puffermodul 302, das Daten in einem ersten/Quellsatz von Speicherzellen speichert. Bei gewissen Ausführungsbeispielen ist das Rückkopiermodul 306 konfiguriert, um die Zeitdauer zwischen dem Zeitpunkt zu minimieren, wenn Daten in einen ersten/Quellsatz von nichtflüchtigen Speicherzellen gespeichert werden und dem Zeitpunkt, zu dem das Rückkopiermodul 306 die Daten aus dem ersten/Quellsatz der nichtflüchtigen Speicherzellen zu einem zweiten/Zielsatz von nichtflüchtigen Speicherzellen (zum Beispiel von SLC-Zellen zu TLC-Zellen) kopiert, verschiebt oder in sonstiger Weise speichert. Bei einem Ausführungsbeispiel kann das Rückkopiermodul 306 beispielsweise auf die Daten hin, unmittelbar oder im Wesentlichen unmittelbar als Antwort darauf, dass die Daten in einen ersten/Quellsatz von Zellen geschrieben werden bzw. sind, bestimmen, ob Daten zu einem zweiten/Zielsatz von Zellen zurück zu kopieren sind oder nicht, und auf die Vornahme der Bestimmung hin unmittelbar oder im Wesentlichen unmittelbar die Daten in dem zweiten/Zielsatz von Zellen speichern.
  • Durch Bestimmen, ob Daten von einem ersten/Quellsatz von Zellen zu einem zweiten/Zielsatz von Zellen zurückzukopieren oder zurückzuschieben sind oder nicht und ob die Daten sobald als möglich zu kopieren und zu verschieben sind, kann das Rückkopiermodul 306 bei einem Ausführungsbeispiel Fehler verringern oder verhindern, die in den Daten auftreten können, bevor sie zu dem zweiten/Zielsatz von Zellen kopiert oder verschoben werden. Durch so schnell wie mögliches Ausführen einer Rückkopier- und/oder IDM-Operation bezüglich Daten kann das Rückkopiermodul 306 bei einem weiteren Ausführungsbeispiel die Menge der Daten verringern, für die das Auffrischmodul 304 Auffrischoperationen ausführt, da eine Anzahl von Fehlern in den Daten geringer sein kann als dann, wenn die Daten in einem ersten/Quellsatz von Zellen über eine längere Zeitspanne gespeichert wurden.
  • Das so schnell wie mögliche Ausführen einer Rückkopier- und/oder IDM-Operation bezüglich der Daten kann bei gewissen Ausführungsbeispielen den Betrieb eines Speicher-Clients 116 oder einen anderen Prozess der Host-Rechenvorrichtung 110 nicht negativ beeinträchtigen oder verlangsamen, die die Daten in die nichtflüchtige Speichervorrichtung 120 schrieb. Die Schreib-Pipeline 240, das Stromabschaltungs-Modul 320, die Steuereinrichtung 126 der nichtflüchtigen Speichermedien, die SML-Schicht 130 oder dergleichen können bei einem Ausführungsbeispiel die Beendigung einer Schreibanforderung bezüglich der Daten an einen anfordernden Speicher-Client 116 auf die Speicherung der Daten in einen Schreibpuffer der nichtflüchtigen Speichermedien-Steuereinrichtung 126, der nichtflüchtigen Speichermedien 122 oder dergleichen bestätigen, wenn das Stromabschaltungs-Modul 320 sicherstellen kann, dass die Daten in einem ersten/Quellsatz von Speicherzellen sogar dann, gespeichert sind, falls ein Stromausfall oder eine Stromunterbrechung auftritt, wie unten beschrieben. Bei einem weiteren Ausführungsbeispiel können die Schreib-Pipeline 240, das Stromabschaltungs-Modul 320, die Steuereinrichtung 126, der nichtflüchtigen Speichermedien, die SML-Schicht 130 den Abschluss einer Schreibanforderung bezüglich der Daten an einen anfordernden Speicher-Client 116 auf das Speichern der Daten in einen ersten/Quellsatz von Speicherzellen bestätigen. Bei jedem Ausführungsbeispiel kann die Speicherung der Daten an einen anfordernden Speicher-Client 116 bestätigt werden, bevor das Rückkopiermodul 306 eine Rückkopier- und/oder IDM-Operation ausführt, so dass die Leistung der Operation eine geringe oder keine Auswirkung auf den Betrieb des anfordernden Speicher-Client 116 oder die Beendigung der zugehörigen Schreibanforderung haben kann.
  • Die Bestimmung von Datenfaktoren und anderen den Daten zugehörigen Attributen wird unter Bezugnahme auf das Datenfaktormodul 322 von 3B unten detaillierter beschrieben. Bei einem Ausführungsbeispiel umfasst ein Attribut von Daten (zum Beispiel ein Datenfaktor) eine gespeicherte, Daten zugehörige Charakteristik oder einen zugehörigen Aspekt, wobei nichtflüchtige Datenzellen Daten speichern oder dergleichen. Ein Datenfaktor oder ein anderes Attribut, welches Daten zugehörig ist, kann bei gewissen Ausführungsbeispielen ein Kennzeichen einer Wahrscheinlichkeit umfassen, dass die zugehörigen Daten einen oder mehrere Datenfehler aufweisen. Ein Datenfaktor oder ein anderes Attribut, das bzw. der den Daten zugehörig ist, kann bei verschiedenen Ausführungsbeispielen eines oder mehrere von einer Dienstqualitätsniveau oder eine andere Priorität für die Daten, eine Fehlerrate für die Daten, wie eine Rohbitfehlerrate (RBRE) oder eine unkorrigierbare Fehlerbitrate (UBER), ein Alter für die Daten (zum Beispiel eine Speicherungszeit oder eine Zeit, seitdem geschrieben ist), eine Programmierungs-/Löschzykluszählung für die Speicherzellen, eine Schreibhäufigkeit für die Daten, eine Lesehäufigkeit für die Daten, einen Kapazitätsschwellwert, dem für die Speicherzellen genügt wird, eine Dauer einer Programmoperation für die Speicherzellen oder dergleichen enthalten. Das Rückkopiermodul 306 kann beispielsweise Daten, die ein gewisses Dienstqualitätsniveau besitzen, Daten, die älter sind als ein gewisses Alter, oder die einen Speicherungszeit-Schwellwert besitzen, oder dergleichen, gerade verschieben oder zurückkopieren, was anderen Daten ermöglicht, in dem ersten/Quellsatz von nichtflüchtigen Speicherzellen (zum Beispiel SLC-Speicherzellen) zu verbleiben, ohne zurückkopiert zu werden.
  • Der erste/Quellsatz von Speicherzellen (zum Beispiel SLC-Speicherzellen) kann eine höhere Zuverlässigkeit, schnellere Zugriffszeiten (zum Beispiel Lesezeiten und/oder Schreib-/Programmierungszeiten) aufweisen als der zweite/Zielsatz von Speicherzellen. Ein Zurücklassen von einigen Daten in dem ersten/Quellsatz von Speicherzellen kann dem Rückkopiermodul 306 ermöglichen, eine gewisse Dienstqualität, Zuverlässigkeit und/oder Leistungsanforderungen für die Daten zu erzielen. Bei gewissen Ausführungsbeispielen kann das Rückkopiermodul 306 die Speicherung von und/oder die Datenintegrität von Daten in dem zweiten/Zielsatz von nichtflüchtigen Speicherzellen überprüfen. Das Rückkopiermodul 306 kann die Speicherung von und/oder die Datenintegrität der Daten durch Lesen der Daten von dem zweiten/Zielsatz von nichtflüchtigen Speicherzellen dadurch überprüfen, dass ein Beendigungs-Kennzeichen oder eine Bestätigung von den nichtflüchtigen Speichermedien 122 empfangen wird, dass eine Fehlerkorrektur bezüglich der Daten ausgeführt wird, dass die gelesenen Daten mit bekannten oder erwarteten Daten verglichen werden, oder dergleichen. Bei einem Ausführungsbeispiel kann das Rückkopiermodul 306 das Überprüfen der Speicherung der Daten in dem zweiten/Zielsatz von nichtflüchtigen Speicherzellen bis zu einem späteren Zeitpunkt auf einen Trigger oder dergleichen hin verzögern. Das Rückkopiermodul 306 kann beispielsweise die Speicherung von und/oder die Datenintegrität der Daten auf eine Leseanforderung bezüglich der Daten, eine Hintergrund-Abtastung des zweiten/Zielsatzes von nichtflüchtigen Speicherzellen, einen Speicherungskapazitäts-Schwellwert, dem genügt ist (zum Beispiel für den ersten/Quellsatz von nichtflüchtigen Speicherzellen, für die nichtflüchtigen Speicherzellen 122, für die nichtflüchtige Speichervorrichtung 120), ein Speicherkapazitäts-Rückgewinnungsereignis für den ersten/Quellsatz von nichtflüchtigen Speicherzellen hin oder dergleichen überprüfen. Durch Verzögern des Überprüfens der Daten kann das Rückkopiermodul 306 bei gewissen Ausführungsbeispielen die Daten überprüfen, nachdem die Daten bereits von dem zweiten/Zielsatz von nichtflüchtigen Speicherzellen für einen anderen Zweck (zum Beispiel dazu, einer Leseanforderung bezüglich der Daten oder dergleichen zu genügen) gelesen worden sind.
  • Das Rückkopiermodul 306 kann bei einem Ausführungsbeispiel ein interner Datenübertragungsbefehl, wie ein Rückkopier- und/oder IDM-Befehl eines nichtflüchtigen Speicherelements 123 sein, um Daten von einem ersten/Quellsatz von nichtflüchtigen Speicherzellen zu einem zweiten/Zielsatz von nichtflüchtigen Speicherzellen intern zu kopieren oder zu verschieben. Der interne Datenübertragungsbefehl (zum Beispiel der Rückkopier- und/oder IDM-Befehl) kann eine Rückkopier- und/oder IDM-Operation für Daten ausführen, die sich innerhalb eines einzigen nichtflüchtigen Speicherelements 123 (zum Beispiel einem integrierten Schaltungschip, einem Chipplättchen und/oder einer Chipplättchen ebene) innerhalb des nichtflüchtigen Speicherelements 123, ohne dass Daten das nichtflüchtige Speicherelement 123 verlassen, einer Packung des nichtflüchtigen Speicherelements 123 (zum Beispiel einem Chip, ein Chipplättchen und/oder einer Chipplättchenebene) oder dergleichen befinden. Die nichtflüchtigen Speichermedien 122 können beispielsweise einen Rückkopierbefehl, einen IDM-Befehl oder einen anderen internen Datenübertragungsbefehl unterstützen, und das Rückkopiermodul 306 kann eine Quelle und ein Ziel mit jedem Rückkopier- und/oder IDM-Befehl bereitstellen. Als Teil der internen Datenübertragungsoperation können das Rückkopiermodul 306 und/oder die nichtflüchtigen Speichermedien 122 Daten von einem ersten/Quellsatz von Speicherzellen (zum Beispiel SLC-Speicherzellen) in einen flüchtigen Speicher (zum Beispiel einen Seitenpuffer) des zugehörigen nichtflüchtigen Speicherelements 123 verschieben, kopieren oder laden, wo das Auffrischmodul 304 die Daten oder dergleichen selektiv auffrischen kann. Das Rückkopiermodul 306 kann dann die Daten aus dem flüchtigen Speicher zu dem zweiten, Zielsatz von Speicherzellen intern kopieren oder verschieben. Bei gewissen Ausführungsbeispielen kann das Rückkopiermodul 306 mehrere Seiten oder andere Sätze von Daten in den flüchtigen Speicher laden (zum Beispiel drei Seiten von Daten von den SLC-Seiten zum Zurückkopieren zu TLC-Seiten).
  • 3B veranschaulicht ein weiteres Ausführungsbeispiel eines Managementmoduls 150. Das Managementmodul 150 kann im Wesentlichen dem oben unter Bezugnahme auf 1 und 3A beschriebenen Managementmodul 150 ähnlich sein. In dem veranschaulichten Ausführungsbeispiel enthält das Managementmodul 150 das Puffermodul 302, das Auffrischmodul 304 und das Rückkopiermodul 306, und ferner enthält es ein Abbruchmodul 308, ein Lesemodul 310, ein Lesespannungsmodul 312, ein Zellenkapazitätsmodul 314, ein von logischer in physikalische Abbildung vornehmendes Modul 316, ein Speicherungskapazitäts-Wiedergewinnungsmodul 318, ein Stromabschaltungsmodul 320 und ein Datenfaktormodul 322.
  • Bei einem Ausführungsbeispiel ist das Abbruchmodul 308 konfiguriert, um eine in Bearbeitung befindliche Rückkopier- und/oder IDM-Prozedur des Rückkopiermoduls 306 daraufhin abzubrechen, zu stoppen, aufzuheben und/oder zu unterbrechen, dass das Rückkopiermodul 306 auf der Grundlage eines oder mehrerer Datenfaktoren oder dergleichen bestimmt, die zugehörigen Daten nicht zu einem zweiten/Zielsatz von Speicherzellen zu kopieren oder zu verschieben. Bei gewissen Ausführungsbeispielen ist das Abbruchmodul 308 konfiguriert, um eine in Bearbeitung befindliche Rückkopier- und/oder IDM-Prozedur des Rückkopiermoduls 306 daraufhin abzubrechen, zu stoppen, aufzuheben und/oder zu unterbrechen, dass das Stromabschaltungsmodul 320 bestimmt oder detektiert, dass ein Leistungs- bzw. Stromversorgungspegel für die nichtflüchtige Speichervorrichtung 120 ausgefallen ist, einem Leistungs- bzw. Stromversorgungspegel zu genügen. Das Abbrechen einer in Bearbeitung befindlichen Rückkopier- und/oder IDM-Prozedur auf einen Stromversorgungsausfall kann bei gewissen Ausführungsformen Leistung erhalten, die es anderen Befehlen oder Prozeduren ermöglicht, abzuschließen.
  • Das Abbruchmodul 308 kann bei einem Ausführungsbeispiel eine Rückkopier- und/oder IDM-Prozedur dadurch abbrechen, dass ein Rücksetzbefehl an ein nichtflüchtiges Speicherelement 123 in Zuordnung zu der Rückkopier- und/oder IDM-Prozedur abgegeben wird. Bei einem weiteren Ausführungsbeispiel kann das Abbruchmodul 308 eine Rückkopier- und/oder IDM-Prozedur dadurch abbrechen, dass Daten, die in einen flüchtigen Speicher (zum Beispiel einen flüchtigen Seitenpuffer) für die Rückkopier- und/oder IDM-Prozedur geladen sind, durch Starten einer nächsten Rückkopier- und/oder IDM-Prozedur oder dergleichen ignoriert und/oder überschrieben werden.
  • Bei einem Ausführungsbeispiel ist das Lesemodul 310 konfiguriert, um Leseanforderungen von den nichtflüchtigen Speichermedien 122 zu bedienen. Das Lesemodul 310 kann mit der oben beschriebenen Lese-Pipeline 241 zusammenarbeiten und/oder mit dieser integriert sein. Aufgrund des Rückkopier- und/oder IDM-Prozesses kann es Zeiten geben, zu denen mehrere Kopien derselben Daten in dem nichtflüchtigen Speichermedium 122 existieren. Das Lesemodul 310 kann bei gewissen Ausführungsbeispielen Daten bevorzugen, die in Speicherzellen mit weniger Speicherungszuständen und Bits pro Zelle gespeichert sind. Falls beispielsweise Daten sowohl in SLC-Speicherungszellen als auch in TLC-Speicherungszellen gespeichert sind, kann das Lesemodul 310 konfiguriert sein, um eine Leseanforderung bezüglich der Daten aus den SLC-Speicherungszellen zu bedienen.
  • Wie unten unter Bezugnahme auf das Speicherungskapazitäts-Wiedergewinnungsmodul 318 beschrieben, können Daten, die zurückkopiert worden sind, in dem ersten/Quellsatz von Speicherzellen nach der Rückkopier- und/oder IDM-Operation gespeichert bleiben, bis die Speicher- bzw. Speicherungskapazität benötigt wird oder dergleichen. Das Speicherungskapazitäts-Wiedergewinnungsmodul 318 kann beispielsweise Daten, auf die häufig zugegriffen wird, Daten, die ein gewisses Bedienungsqualitäts- oder anderes Prioritätsniveau aufweisen oder dergleichen, in dem ersten/Quellsatz von Speicherzellen belassen und Speicherungskapazität von anderen Sätzen von Speicherungszellen (zum Beispiel Löschblöcke mit einem geringeren Prozentsatz oder Verhältnis an Daten, auf die häufig zugegriffen wird, von hohen QoS oder anderen Prioritätsdaten) zurückgewinnen, so dass das Lesemodul 310 Leseanforderungen von dem ersten/Quellsatz von Speicherzellen solange wie möglich bedienen kann. Das Lesemodul 310 kann die Bedienung von Leseanforderungen von dem ersten/Quellsatz von Speicherzellen solange fortsetzen, bis die Speicherkapazität wieder gewonnen ist und die zugehörigen Daten gelöscht sind. Auf das Löschen der Daten aus dem ersten/Quellsatz von Speicherzellen (zum Beispiel SLC-Speicherzellen) durch das Speicherungskapazitäts-Wiedergewinnungsmodul 318 oder dergleichen hin kann das Lesemodul 310 Leseanforderungen bezüglich der Daten von dem zweiten/Zielsatz von Speicherungszellen (zum Beispiel TLC-Speicherungszellen) bedienen. Bei Ausführungsbeispielen, bei denen das Rückkopiermodul 306 bestimmt, eine Rückkopier- und/oder IDM-Operation bezüglich Daten zum internen Kopieren oder Verschieben der Daten zurück zu einem zweiten/Zielsatz von Speicherungszellen (TLC-Speicherungszellen) nicht auszuführen, kann das Lesemodul 310 die Bedienung von Leseanforderungen bezüglich der Daten von dem ersten/Quellsatz von Speicherungszellen fortsetzen.
  • Bei gewissen Ausführungsbeispielen können die nichtflüchtigen Speichermedien 122 konfiguriert sein, um sich auf einen Programmstörungseffekt zu stützen, der durch Programmieren einer nächsten benachbarten Seite oder Wortleitung hervorgerufen wird, um die Programmierung einer ersten Seite oder Wortleitung abzuschließen. Ein Hersteller kann eine Seiten- oder Wortleitungs-Programmierungsreihenfolge spezifizieren. Die Seiten- oder Wortleitungs-Programmierungsreihenfolge kann erfordern, dass eine untere Seite von WLn mit einer ersten Seite programmiert wird, dass eine untere Seite von WLn+1 mit einer zweiten Seite programmiert wird und dass eine mittlere Seite von WLn mit einer dritten Seite programmiert wird. Außerdem kann es die Seiten-Programmierungsreihenfolge des Herstellers erfordern, dass die mittlere Seite von WLn + 1 mit einer vierten Seite programmiert wird und dass eine obere Seite von WLn mit einer fünften Seite programmiert wird. Auf diese Weise werden Wortleitungen fortschreitend verwendet, um Seiten von Daten in einer Reihenfolge zu speichern, welche die Datenintegrität in den Zellen verbessert.
  • Ein Hersteller der nichtflüchtigen Speichermedien 122 kann empfehlen oder fordern, dass eine nächste benachbarte Seite oder Wortleitung programmiert wird, bevor eine erste Seite oder Wortleitung gelesen werden kann, zumindest für TLC-Speicherzellen. Ein Hersteller kann beispielsweise spezifizieren, dass eine Wortleitung WLn solange nicht gelesen wird, bis die Wortleitung WLn+1 programmiert ist. Eine derartige Beschränkung kann die Bedienung einer Leseanforderung für eine zuvor programmierte Seite (zum Beispiel auf WLn) verzögern. Wie hier unter Bezugnahme auf Seiten oder Wortleitungen verwendet, umfasst "benachbart" oder "nächstes" bei einem Ausführungsbeispiel numerisch und/oder logisch aufeinander folgende Seiten oder Wortleitungen innerhalb einer spezifizierten Programmierungsreihenfolge oder Adressierungsreihenfolge. Bei anderen Ausführungsbeispielen kann "benachbart" oder "nächstes" sich auf physikalisch oder temporär aufeinander folgende oder angrenzende Seiten oder Wortleitungen innerhalb eines nichtflüchtigen Speicherelements 123 beziehen.
  • Das Lesemodul 310 kann bei gewissen Ausführungsbeispielen konfiguriert sein, um Leseanforderungen bezüglich einer Seite oder Wortleitung sogar vor oder früher als eine nächste oder benachbarte Seite oder Wortleitung programmiert wird (zum Beispiel dass eine Leseanforderung bezüglich WLn bedient wird, bevor WLn + 1 programmiert wird). Das Lesemodul 310 ist bei einem Ausführungsbeispiel konfiguriert, um lediglich eine Leseanforderung bezüglich einer Seite oder Wortleitung zu bedienen, bevor eine nächste, benachbarte Seite oder Wortleitung darauf hin programmiert wird, dass das Lesemodul 310 bestimmt, dass Fehler in den Daten unter Heranziehung einer ECC-Codierung für die Daten oder dergleichen korrigierbar sind. Das Lesemodul 310 kann bewirken, dass die Leseanforderung fehlschlägt, an einen anfordernden Speicherungs-Client 116 einen Fehler zurückzuleiten, eine Meldung oder andere Nachricht oder dergleichen zu senden, falls Fehler in den Daten nicht korrigiert werden können. Bei einem anderen Ausführungsbeispiel kann das Lesemodul 310 Daten einer Leseanforderung sogar dann zurückführen, wenn Fehler in den Daten unkorrigierbar sind. Die Bedienung von Leseanforderungen bezüglich Daten sogar bevor eine nächste, benachbarte Seite oder Wortleitung geschrieben/programmiert worden ist, kann bei gewissen Ausführungsbeispielen die Leistung dadurch steigern, dass die Daten schneller zugreifbar gemacht sind.
  • Bei einem Ausführungsbeispiel werden durch das Lesespannungsmodul 312 ein oder mehrere Lesespannungs-Schwellwerte für die ersten/Quell-Speicherungszellen der nichtflüchtigen Speichermedien 122 verwaltet und eingestellt, die weniger Speicherungszustände zum Codieren von weniger Bits aufweisen als die zweiten/Ziel-Speicherungszellen (zum Beispiel SLC-Speicherungszellen, die zur Pufferung von Daten für TLC-Speicherungszellen verwendet sind). Die gespeicherten Lesespannungspegel für Speicherzellen können in Folge von Störungseffekten, wie einer Lesestörung oder Programmstörung, aufgrund von Abnutzung in den Speicherzellen, aufgrund hoher Programm-/Löschzählungen, aufgrund von Herstellerdefekten oder dergleichen über die Zeit driften oder sich ändern. Wie oben unter Bezugnahme auf das Auffrischmodul 304 beschrieben, können in die ersten/Quell-Speicherzellen (zum Beispiel SLC-Speicherzellen) eingeführte Fehler verstärkt bzw. erweitert werden, wenn die Daten in die zweiten/Ziel-Speicherzellen (zum Beispiel TLC-Speicherzellen) zurückkopiert werden, was es erforderlich macht, dass das Auffrischmodul 304 zum Auffrischen der zurückkopierten Daten die Fehler korrigiert, was Verarbeitungs- und Bandbreite-Overhead hinzufügt.
  • Um die Menge an Daten, die das Auffrischmodul 304 für Rückkopier- und/oder IDM-Operationen auffrischt, zu verringern und/oder einen zeitlichen Umfang auszudehnen, in welchem Daten in ersten/Quell-Speicherzellen vor einem Rückkopieren gespeichert werden können, kann das Lesespannungsmodul 312 bei gewissen Ausführungsbeispielen einen oder mehrere Lesespannungs-Schwellwerte einstellen, um Änderungen in gespeicherten Spannungspegeln zur Verringerung von Fehlern entgegenzuwirken oder zu kompensieren. Das Lesespannungsmodul 312 bestimmt bei einem Ausführungsbeispiel einen Lesespannungs-Schwellwert für einen Satz von Speicherzellen auf der Grundlage von einem oder mehreren Speichermediencharakteristiken für den zugehörigen Satz von Speicherzellen. Das Lesespannungsmodul 312 kann beispielsweise einen oder mehrere Lesespannungs-Schwellwerte für einen Satz von Speicherzellen proaktiv in einer offenen Schleifenweise auf der Grundlage von einem oder mehreren Speichermediencharakteristiken für den Satz von Speicherzellen bestimmen, ohne Daten aus dem Satz der Speicherzellen als Rückkopplung für die Bestimmung zu lesen.
  • Wie hier verwendet, umfasst eine "offene Schleifen"-Bestimmung eine Bestimmung, die nicht auf eine Rückkopplung oder eine andere Anzeige oder Messung eines Ergebnisses der Bestimmung basiert vorgenommen ist. Das Lesespannungsmodul 312 kann beispielsweise bei gewissen Ausführungsbeispielen in einer offenen Schleifenweise einen eingestellten oder aktualisierten Lesespannungsschwellwert für einen Satz von Speicherzellen auf der Grundlage von einem oder mehreren Speichermediencharakteristiken bestimmen, ohne zuerst Daten aus dem Satz der Zellen als Rückkopplung zu lesen. Die Speichermediencharakteristiken können auf der Grundlage eines vorhergehenden Untersuchungs- und Entwicklungstestens der Speichermedienvorrichtung (zum Beispiel einer Vorrichtungscharakterisierung) bestimmt sein. Eine "geschlossene Schleifen"-Bestimmung, wie sie hier verwendet wird, umfasst eine Bestimmung, die zumindest teilweise auf eine gewisse Rückkopplung oder andere Anzeige oder Messung der Ergebnisse der Bestimmung hin vorgenommen oder aktualisiert ist. Das Lesespannungsmodul 312 kann bei einem Ausführungsbeispiel beispielsweise einen Lesespannungsschwellwert für einen Satz von Speicherzellen auf der Grundlage von Daten iterativ aktualisieren, die aus den Speicherzellen zurückgelesen sind (zum Beispiel eine Fehlerrate für die Daten, einen Vergleich der Daten mit bekannten Daten oder dergleichen). Bei gewissen Ausführungsbeispielen kann das Lesespannungsmodul 312 anfänglich einen Lesespannungsschwellwert für einen Satz von Speicherzellen in einer offenen Schleifenweise auf der Grundlage von einen oder mehreren Speichermediencharakteristiken für den Satz von Speicherzellen oder dergleichen bestimmen, und es kann anschließend den Lesespannungsschwellwert in einer geschlossenen Schleifenweise durch Lesen der Daten aus dem Satz von Speicherzellen und Aktualisieren oder in anderer Weise erfolgender Einstellung des Lesespannungsschwellwerts auf der Grundlage einer Fehlerrate oder anderen Rückkopplung fein abstimmen oder einstellen.
  • Bei einem Ausführungsbeispiel nimmt das Lesespannungsmodul 312 auf eine oder mehrere Mediencharakteristiken für einen Satz von Speicherzellen der nichtflüchtigen Speichermedien 122 bezüglich Aufenthaltsorte oder Speicherzustände eines Satzes von Speicherzellen der nichtflüchtigen Speichermedien 122 oder dergleichen Bezug oder bestimmt sie in anderer Weise. Der Satz von Speicherzellen kann eine einzige Speicherregion, wie eine physikalische Seite, eine logische Seite, einen physikalischen Löschblock, einen logischen Löschblock, eine Wortleitung, ein(en) ECC-Datenblock/Codewort, ein Chip, ein Chipplättchen, eine Ebene in einem Chipplättchen oder dergleichen umfassen, oder er kann einen Satz von mehreren Speicherregionen umfassen. Bei gewissen Ausführungsbeispielen können unterschiedliche Speicherzustände, Aufenthaltsorte, Codierungsziffern (zum Beispiel LSB, MSB) der Speicherzellen der nichtflüchtigen Speichermedien 122 unterschiedliche Mediencharakteristiken aufweisen, und das Lesespannungsmodul 312 kann die unterschiedlichen Mediencharakteristiken für unterschiedliche Aufenthaltsorte/Speicherzustände oder dergleichen separat überwachen oder in sonstiger Weise bestimmen.
  • Das Lesespannungsmodul 312 kann selbst eine oder mehrere Mediencharakteristiken bestimmen; es kann Mediencharakteristiken von einem anderen Modul empfangen; es kann Mediencharakteristiken aus einem Mediencharakteristikenspeicher oder dergleichen abrufen. Eine Mediencharakteristik ist ein statistischer, heuristischer oder anderer Deskriptor, der einem Attribut der nichtflüchtigen Speichermedien 122 zugehörig ist. Mediencharakteristiken können ein Modell, einen Hersteller, eine Produktversion oder dergleichen für die nichtflüchtige Speichervorrichtung 120 und/oder für die nichtflüchtigen Speichermedien 122 enthalten und/oder sich auf eine Erstellung davon beziehen; ein Attribut oder eine statistische Angabe für einen Satz von Speicherzellen; einen Umgebungszustand für einen Anwendungsfall der nichtflüchtigen Speichervorrichtung 120 und/oder der nichtflüchtigen Speichermedien 122; und/oder einen weiteren statistischen heuristischen oder anderen Deskriptor für ein Attribut der nichtflüchtigen Speichermedien 122.
  • Eine Mediencharakteristik für einen Satz von Speicherzellen beeinflusst oder informiert die Bestimmung eines Lesespannungs-Schwellwerts für den Satz von Speicherzellen. Bei einem Ausführungsbeispiel enthalten die Mediencharakteristiken eine Programm- bzw. Programmierungs-/Löschzyklus-Zählung für einen Satz von Speicherzellen. Bei einem anderen Ausführungsbeispiel enthalten die Mediencharakteristiken eine Lesezählung für einen Satz von Speicherzellen. Bei einem weiteren Ausführungsbeispiel enthalten die Mediencharakteristiken eine Speicher- bzw. Verweilzeit seit einem vorangehenden Schreibvorgang für einen Satz von Speicherzellen. Bei einem zusätzlichen Ausführungsbeispiel enthalten die Mediencharakteristiken eine Temperatur für einen Satz von Speicherzellen. Die Mediencharakteristiken enthalten bei gewissen Ausführungsbeispielen einen Anwendungsfall für einen Satz von Speicherzellen. Bei einem anderen Ausführungsbeispiel enthalten die Mediencharakteristiken eine Fehlerstatistik für einen Satz von Speicherzellen, wie einen UBER, einen RBER oder dergleichen. Bei einem weiteren Ausführungsbeispiel können die Mediencharakteristiken vorangehende oder historische Lesespannungs-Schwellwerte für einen Satz von Speicherzellen, Lesespannungs-Schwellwerte oder Mediencharakteristiken für andere Sätze von Speicherzellen oder dergleichen enthalten.
  • Das Lesespannungsmodul 312 verwaltet bei gewissen Ausführungsbeispielen die Sammlung von und/oder Verwaltung bzw. Pflege von Mediencharakteristiken. Das Lesespannungsmodul 312 kann Mediencharakteristiken in einem Mediencharakteristik-Speicher behalten und/oder aus diesem abrufen. Das Lesespannungsmodul 312 nimmt bei gewissen Ausführungsbeispielen eine Bezugnahme, Bestimmung und/oder Verwaltung von Mediencharakteristiken für mehrere unterschiedliche Sätze von Speicherzellen vor, wie für jede Speicherregion oder Speicherabteilung der nichtflüchtigen Speichervorrichtung 120. Eine Medienregion kann einen Löschblock (logisch oder physikalisch), eine Seite (logisch oder physikalisch), ein(en) ECC-Datenblock/Codewort, eine Abteilung innerhalb einer Seite, einen Satz von Seiten, ein Chipplättchen, eine Ebene in einem Chipplättchen, ein Chip oder dergleichen enthalten.
  • Bei einem Ausführungsbeispiel kann das Lesespannungsmodul 312 ähnlich dem oben unter Bezugnahme auf 3B beschriebenen Datenfaktormodul 322 sein, mit diesem arbeiten und/oder mit diesem integriert sein. Die Mediencharakteristiken können beispielsweise eine oder mehrere der Statistikangaben enthalten, die oben bezüglich des Datenfaktormoduls 322 beschrieben sind, wie eine Temperatur für die nichtflüchtige Speichervorrichtung 120, eine Fehlerrate für die nichtflüchtige Speichervorrichtung 120 (wie einen UBER, RBER oder dergleichen), eine Programmierungs-/Löschzykluszählung für die nichtflüchtige Speichervorrichtung 120, eine Speicheranforderungs-Latenz für die nichtflüchtige Speichervorrichtung 120 (wie einen Mittelwert, Maximalwert oder eine andere Speicheranforderungs-Ausführungslatenz), ein Alter der nichtflüchtigen Speichervorrichtung 120 und/oder andere Statistiken oder Charakteristiken. Das Lesespannungsmodul 312 kann bei gewissen Ausführungsbeispielen ein Eingangssignal direkt oder indirekt von einem oder mehreren Sensoren, von anderen Modulen oder Elementen, wie einem ECC-Decoder oder dergleichen, empfangen.
  • Bei einem Ausführungsbeispiel bestimmt das Lesespannungsmodul 312 einen Lesespannungs-Schwellwert für einen Satz von Speicherzellen auf der Grundlage von einem oder mehreren Mediencharakteristiken für den Satz von Speicherzellen. Der Satz von Speicherzellen, für den das Lesespannungsmodul 312 den Lesespannungs-Schwellwert bestimmt, kann einen Löschblock (logisch oder physikalisch), eine Seite (logisch oder physikalisch), ein(en) ECC-Datenblock/Codewort, eine Abteilung innerhalb einer Seite, einen Satz von Seiten, ein Chipplättchen, eine Ebene in einem Chipplättchen, ein Chip oder dergleichen enthalten. Das Lesespannungsmodul 312 kann unterschiedliche Lesespannungs-Schwellwerte für unterschiedliche Sätze von Speicherzellen, unterschiedliche Sätze von Seiten, unterschiedliche Aufenthaltsorte/Speicherzustände von Speicherzellen oder dergleichen auf der Grundlage der entsprechenden Mediencharakteristiken bestimmen. Das Lesespannungsmodul 312 bestimmt bei gewissen Ausführungsbeispielen Lesespannungs-Schwellwerte dynamisch während des Betriebs oder der Laufzeit der nichtflüchtigen Speichervorrichtung 120 als Einstellungen oder Aktualisierung zu anfänglichen oder Standardeinstellungen.
  • Wie oben beschrieben, ist ein Lesespannungs-Schwellwert ein Parameter eines Satzes von Speicherzellen, der mittels eines Interfaces modifizierbar ist, um gespeicherte Werte, wie binäre Einsen und Nullen zu unterscheiden. Das Lesespannungsmodul 312 kann einen Lesespannungs-Schwellwert als einen absoluten Datenwert, als einen Versatz oder eine Einstellung auf einen Datenwert oder als anderen Parameter bestimmen, mit dem das Lesespannungsmodul 312 einen Satz von Speicherzellen konfigurieren kann.
  • Das Lesespannungsmodul 312 kann einen Lesespannungs-Schwellwert durch Einführen der einen oder mehreren Mediencharakteristiken in eine Gleichung, in ein mathematisches Modell, in eine Nachschlagtabelle (LUT), in eine Matrix oder dergleichen auf eine oder mehrere Mediencharakteristiken gründen; durch Ausführen einer zuvor festgelegten Transformation oder Operation auf die eine oder mehreren Mediencharakteristiken; oder durch in anderer Weise erfolgende Bezugnahme und/oder Manipulation der einen oder mehreren Mediencharakteristiken, um den Lesespannungs-Schwellwert zu bestimmen. Eine Lesespannungs-Schwellwert-Gleichung, ein mathematisches Modell, eine LUT, eine Matrix oder dergleichen können auf empirischen Daten, wie Testdaten, historischen Daten oder dergleichen basiert sein. Ein Konstrukteur oder dergleichen kann bei einem Ausführungsbeispiel Sätze von Speicherzellen mit verschiedenen Mediencharakteristiken, wie nichtflüchtige Speichermedien von verschiedenen Herstellern oder dergleichen testen und optimale Lesespannungs-Schwellwerte für Speicherzellen mit den verschiedenen Mediencharakteristiken bestimmen. Eine Gleichung, ein mathematisches Modell, eine LUT, eine Matrix oder dergleichen können beispielsweise anzeigen, dass nichtflüchtige Speichermedien 122 vom Hersteller X dazu neigen, einen Y-Betrag an natürlicher Drift in Zellenwerten nach tausend Progammierungs-/Löschzyklen aufzuweisen, so dass ein Leseschwellwert zur Kompensation oder dergleichen um Z Volt gesteigert werden kann.
  • Bei anderen Ausführungsbeispielen kann das Lesespannungsmodul 312 einen Lesespannungs-Schwellwert; eine Gleichung, ein mathematisches Modell, eine LUT, eine Matrix, eine Transformation oder dergleichen, um einen Lesespannungs-Schwellwert zu definieren; eine Einstellung auf einen Lesespannungs-Schwellwert; oder dergleichen, während des Betriebs der nichtflüchtigen Speichervorrichtung 120 dynamisch bestimmen, wie unter Bezugnahme auf das Einstellmodul 408 beschrieben. Das Lesespannungsmodul 312 kann beispielsweise Lesespannungs-Schwellwerte für verschiedene Mediencharakteristiken bestimmen, die anfänglich auf einem Standardwert basiert sind, die auf systematisches Ausprobieren basiert sind oder dergleichen, und es kann die Wirksamkeit des Lesespannungs-Schwellwerts auf der Grundlage einer Änderung in einer Fehlerrate, wie als RBER, UBER, einer Programmierungs-/Löschzählung oder dergleichen automatisch korrelieren, um eine Gleichung, ein mathematisches Modell, eine LUT, eine Matrix, eine Transformation oder dergleichen zur Bestimmung von nachfolgenden Lesespannungs-Schwellwerten und/oder Lesespannungs-Schwellwert-Einstellungen zu bestimmen.
  • Bei einem Ausführungsbeispiel enthalten die Mediencharakteristiken für einen Satz von Speicherzellen eine Temperatur. Eine Temperatur für einen Satz von Speicherzellen kann die Geschwindigkeit der Auswirkungen von einem oder mehreren anderen Mediencharakteristiken auf den Satz der Speicherzellen beeinflussen. Bei höheren Temperaturen können die Änderungsrate für Mediencharakteristiken, die sich auf Fehlerstatistikangaben, wie Rohbitfehlerraten (RBER) beziehen, und Datenverweilzeiten beispielsweise zunehmen, und gewisse Einstellungen auf Lesespannungs-Schwellwerte können die Auswirkung abschwächen. Bei gewissen Ausführungsbeispielen kann das Lesespannungsmodul 312 einen Lesespannungs-Schwellwert, eine Mediencharakteristik oder dergleichen durch eine Temperatur einstellen oder in der Größe festlegen, um Auswirkungen der Temperatur zu kompensieren, was die Daten für die Temperatur normiert. Die Temperatur für einen Satz von Speicherzellen kann eine mittlere Temperatur, eine Temperatur über ein Schiebeintervall bzw. -fenster, eine gegenwärtige Temperatur, eine Temperatur für die nichtflüchtige Speichervorrichtung 120 oder eine andere Temperaturmessung in Verbindung mit einem oder mehreren Sätzen von Speicherzellen sein.
  • Die eine oder mehreren Mediencharakteristiken geben bei einem Ausführungsbeispiel dem Lesespannungsmodul 312 einen Trend, eine Optimierung oder dergleichen für einen Lesespannungs-Schwellwert an, und das Lesespannungsmodul 312 bestimmt einen Lesespannungs-Schwellwert, um dem Trend oder einer Optimierung zu entsprechen. Eine Größe einer Programmierungs-/Löschzyklus-Zählung, eine Lesezählung, ein UBER, ein RBER oder eine andere Mediencharakteristik können beispielsweise einen Betrag angeben, um den eine Lesespannung oder ein anderer Lesespannungs-Schwellwert gedriftet hat, und das Lesespannungsmodul 312 kann einen Lesespannungs-Schwellwert auf der Grundlage der Mediencharakteristiken ohne eine direkte Rückkopplung von den Speicherzellen, wie einem Lesen, einem erneuten Lesen oder dergleichen proaktiv bestimmen.
  • Bei einem Ausführungsbeispiel behält das Lesespannungsmodul 312 die Lesespannungs-Schwellwerte für Sätze von Speicherzellen unterschiedlicher Speicherregionen oder Speicherabteilungen der nichtflüchtigen Speichermedien 122, wie einen Löschblock (logisch oder physikalisch), eine Seite (logisch oder physikalisch), ein(en) ECC-Datenblock/Codewort, eine Abteilung innerhalb einer Seite, einen Satz von Seiten, einen Aufenthaltsort/Speicherzustand, ein Chipplättchen, eine Ebene in einem Chipplättchen, ein Chip oder dergleichen in einem Lesespannungs-Schwellwert-Speicher. Durch Bestimmen und Verwalten von separaten Mediencharakteristiken und/oder Lesespannungs-Schwellwerten für unterschiedliche Speicherregionen, für unterschiedliche Aufenthaltsorte/Speicherzustände oder dergleichen kann das Lesespannungsmodul 312 bei gewissen Ausführungsbeispielen Lesespannungs-Schwellwerte für jede Speicherregion oder jeden Aufenthaltsort/Speicherzustand individuell anpassen, wodurch Fehler verringert werden, die Lebensdauer der nichtflüchtigen Speichermedien 122 verlängert oder dergleichen wird.
  • Unterschiedliche Aufenthaltsorte/Speicherzustände von Speicherzellen können unterschiedliche Mediencharakteristiken aufweisen. Gewisse Aufenthaltsorte/Speicherzustände, wie der L0-Zustand können beispielsweise für eine Programmierung, ein Lesen oder andere Störungen empfänglicher sein. Ein Aufenthaltsort oder Speicherzustand, wie er hier verwendet wird, ist der Bereich von Lesepegeln, wie eines Lesespannungspegels für Flashmedien, ein Lesewiderstandspegel für PCM-Medien oder dergleichen, verbunden mit einem bestimmten Satz von Datenwerten. Leseschwellwerte, wie ein Lesespannungs-Schwellwert, ein Lesewiderstands-Schwellwert oder dergleichen können Aufenthaltsorte oder Speicherzustände trennen. Ein Beispiel von Aufenthaltsorten oder Speicherzuständen wird unten unter Bezugnahme auf 9A beschrieben.
  • Bei gewissen Ausführungsbeispielen führt das Lesespannungsmodul 312 eine Bestimmung und/oder Einstellung von Lesespannungs-Schwellwerten allein für Rückkopier- und/oder IDM-Operationen von einem ersten/Quellsatz von Speicherzellen (zum Beispiel SLC-Speicherzellen) zu einem zweiten/Zielsatz von Speicherzellen (zum Beispiel TLC-Speicherzellen) aus, um Fehler zu verringern, um den Betrag an Datenauffrischungen oder dergleichen zu verringern. Bei derartigen Ausführungsbeispielen kann das Lesespannungsmodul 312 auf eine Leseanforderung von einem Speicher-Client 116 oder dergleichen nicht einen Lesespannungs-Schwellwert für eine Standard-Nutzlast-Leseoperation bestimmen oder einstellen, sondern es kann einen Voreinstellungs-Lesespannungsschwellwert oder dergleichen anwenden. Das Lesespannungsmodul 312 kann bei einem weiteren Ausführungsbeispiel einen eingestellten Lesespannungs-Schwellwert gerade für Speicherzellen (zum Beispiel Seiten, Löschblöcke oder andere Sätze von Speicherzellen) verwenden, die zuvor festgelegte Mediencharakteristiken aufweisen, während ein Voreinstellungs-Lesespannungs-Schwellwert für andere Speicherzellen verwendet wird. Bei einem Ausführungsbeispiel kann das von dem Lesespannungsmodul 312 benutzte proaktive Lesespannungs-Schwellwert-Modell auch eine oder mehrere Seiten, Löschblöcke oder andere Sätze von Speicherzellen angeben, die das Auffrischmodul 304 während einer Rückkopier- und/oder IDM-Operation aufzufrischen hat.
  • Während SLC-Speicherzellen bei gewissen Ausführungsbeispielen als relativ robust und zuverlässig betrachtet werden können, zumindest im Vergleich zu MLC- oder TLC-Speicherzellen, können zum Ende der Lebensdauer der SLC-Speicherzellen bei SLC-Speicherzellen, die als MLC- und/oder TLC-Speicherzellen verwendet worden sind, wie unten in Bezug auf das Zellenkapazitätsmodul 314 oder dergleichen beschrieben, Datenfehler schnell eingeführt werden, was ein begrenztes Fenster zurücklässt, in welchem Daten ohne Fehler zu verschieben oder zurückzukopieren sind. Durch Einstellen eines oder mehrerer Lesespannungs-Schwellwerte für den ersten/Quellsatz von Speicherzellen kann das Lesespannungsmodul 312 dieses Fenster erweitern, was es erlaubt, Daten in dem ersten/Quellsatz von Speicherzellen während einer längeren Zeitspanne zu speichern, während dennoch der Betrag an Auffrischungen für ein Verschieben oder Zurückkopieren zu dem zweiten/Zielsatz von Speicherzellen minimiert ist.
  • Bei einem Ausführungsbeispiel ist das Zellenkapazitätsmodul 314 konfiguriert, um die Anzahl von Bits, die pro Zelle für die nichtflüchtigen Speichermedien 122 gespeichert sind, einzustellen, indem das Verhältnis von SLC-Speicherzellen oder Löschblöcken, MLC-Speicherzellen oder Löschblöcken, TLC-Speicherzellen oder Löschblöcken oder dergleichen eingestellt wird. Die nichtflüchtigen Speichermedien 122 können bei gewissen Ausführungsbeispielen von einem Hersteller mit einem bestimmten Verhältnis von SLC-Löschblöcken und TLC-Löschblöcken, wie 1,2% SLC-Löschblöcke und 98,8% TLC-Löschblöcke, oder mit einem anderen bestimmtes Verhältnis vorkonfiguriert sein. Das vom Hersteller vorbestimmte Verhältnis mag für einen Anwendungsfall der nichtflüchtigen Speichervorrichtung 120 nicht optimal sein. Ferner ist die Zuteilung von SLC- und TLC-Löschblöcken durch den Hersteller in typischer Weise, mit denselben Speicherzellen, die als SLC-Speicherzellen oder als TLC-Speicherzellen festgelegt sind für die Lebensdauer der Vorrichtung 120 statisch.
  • Das Zellenkapazitätsmodul 314 bestimmt bei einem Ausführungsbeispiel eine Zuteilung von verschiedenen Typen von Speicherzellen und/oder Löschblöcken (zum Beispiel SLC-, MLC- und/oder TLC), um eine Lebensdauer der nichtflüchtigen Speichermedien 122 zu maximieren. Bei einem weiteren Ausführungsbeispiel kann das Zellenkapazitätsmodul 314 eine Zuteilung von unterschiedlichen Typen von Speicherzellen und/oder Löschblöcken (zum Beispiel SLC, MLC und/oder TLC) zum Maximieren der Leistung der nichtflüchtigen Speichermedien 122 bestimmen. Bei einem anderen Ausführungsbeispiel kann das Zellenkapazitätsmodul 314 eine Zuteilung von unterschiedlichen Typen von Speicherzellen und/oder Löschblöcken (zum Beispiel SLC, MLC und/oder TLC) zur Maximierung einer Speicherkapazität der nichtflüchtigen Speichermedien 122 bestimmen. Das Zellenkapazitätsmodul 314 kann bei gewissen Ausführungsbeispielen ein Nutzer-Interface bereitstellen, welches einem Speicher-Client 116 oder anderem Nutzer ermöglicht, eine Zuteilung von unterschiedlichen Typen von Speicherzellen und/oder Löschblöcken (zum Beispiel SLC, MLC und/oder TLC) zu bestimmen.
  • Das Zellenkapazitätsmodul 314 bestimmt bei gewissen Ausführungsbeispielen eine Zuteilung von unterschiedlichen Typen von Speicherzellen und/oder Löschblöcken (zum Beispiel SLC, MLC und/oder TLC) auf der Grundlage von einem oder mehreren Datenfaktoren oder anderen Attributen für Daten der nichtflüchtigen Speichervorrichtung 120. Das Zellenkapazitätsmodul 314 kann bei einem Ausführungsbeispiel beispielsweise die Anzahl der Löschblöcke im SLC-Modus relativ zu einer Anzahl von Löschblöcken im TLC-Modus als eine Dienstqualitäts- oder Prioritätsniveau für die Daten steigern, es kann die Anzahl von Löschblöcken im SLC-Modus relativ zu einer Anzahl von Löschblöcken im TLC-Modus als ein Dienstqualitäts- oder anderes Prioritätsniveau für die Daten senken oder dergleichen, so dass Daten mit einer höheren Dienstqualität oder einem anderen Prioritätsniveau in SLC-Speicherzellen gespeichert werden können. Auf diese Weise kann das Zellenkapazitätsmodul 314 bei gewissen Ausführungsbeispielen differenzierte Dienstqualitäts-(QoS)-Niveaus unter Heranziehung von verschiedenen Typen von Speicherzellen und/oder Löschblöcken bereitstellen (zum Beispiel Speichern von Daten hohen QoS-Niveaus in SLC-Zellen, von Daten mittleren QoS-Niveaus in MLC-Zellen, Speichern von Daten niedrigen QoS-Niveaus in TLC-Zellen oder dergleichen), und es kann die Zuteilung von Speicherzellen in verschiedenen Moden einstellen oder ändern, um der Eigenschaft (zum Beispiel SLC-Modus, MLC-Modus, TLC-Modus) Rechnung zu tragen.
  • Bei einem Ausführungsbeispiel bestimmt das Zellenkapazitätsmodul 314 eine statische Zuteilung von unterschiedlichen Typen von Speicherzellen und/oder Löschblöcken (zum Beispiel SLC und TLC), die das Zellenkapazitätsmodul 314 über die Lebensdauer der nichtflüchtigen Speichermedien 122 hinweg verwendet. Bei anderen Ausführungsbeispielen kann das Zellenkapazitätsmodul 314 eine Zuteilung von unterschiedlichen Typen von Speicherzellen und/oder Löschblöcken (zum Beispiel SLC und TLC), wenn der nichtflüchtige Speicher altert (zum Beispiel auf der Grundlage einer Programmierungs-/Löschzählung, einem Alter in der Zeit oder dergleichen), wenn sich ein Anwendungsfall für die nichtflüchtige Speichervorrichtung 120 ändert (zum Beispiel eine Cache-Vorrichtung, eine Back-Up-Vorrichtung, eine Server-Vorrichtung, eine Vorrichtung mit hoher Schreiblast, eine Vorrichtung mit hoher Leselast, eine Vorrichtung mit niedriger Schreiblast, eine Vorrichtung mit niedriger Leselast oder dergleichen) dynamisch aktualisieren und einstellen.
  • Bei gewissen Ausführungsbeispielen kann das Zellenkapazitätsmodul 314 dynamisch ändern, wechseln oder hinsichtlich des Verschleißes egalisieren, welche Sätze von Speicherzellen (zum Beispiel Löschblöcke) als SLC-Speicherzellen, MLC-Speicherzellen, TLC-Speicherzellen und/oder andere Ebenen von Speicherzellen über die Zeit konfiguriert werden. Bei einem Ausführungsbeispiel kann das Zellenkapazitätsmodul 314 festsetzen, welche Sätze von Speicherzellen (zum Beispiel Löschblöcke) mit unterschiedlichen Pegeln oder Zahlen von Bits pro Zelle im Wesentlichen gleichmäßig konfiguriert werden, was hinsichtlich eines Verschleißes abgleicht, welche Speicherzellen unterschiedlichen Pegeln (zum Beispiel SLC, MLC, TLC) zugeordnet werden. Für auf einem Chipplättchen gepufferte nichtflüchtige Speichermedien 122 mit SLC- und TLC-Speicherzellen kann das Zellenkapazitätsmodul 314 beispielsweise im Wesentlichen gleichmäßig abwechseln, welche Löschblöcke als SLC und welche als TLC konfiguriert werden, wenn Löschblöcke für eine Speicherkapazitäts-Wiedergewinnung oder dergleichen ausgewählt werden, so dass jeder Löschblock eine im Wesentlichen gleiche Zeitspanne in der Nutzung als SLC-Speicher wie bei der Nutzung als TLC-Speicher verbringt. Bei einem anderen Ausführungsbeispiel kann das Zellenkapazitätsmodul 314 Löschblöcke oder andere Sätze von Speicherzellen für eine geringere Anzahl von Bits pro Zelle (zum Beispiel SLC) auswählen, die höhere Fehlerraten, höhere Programmierungs-/Löschzählungen oder dergleichen aufweisen als andere Löschblöcke, welche das Zellenkapazitätsmodul 314 für höhere Zahlen von Bits pro Zelle (zum Beispiel TLC) auswählen kann. Das Zellenkapazitätsmodul 314 kann beispielsweise Zellenmoden zuordnen, derart, dass eine brauchbare Lebensdauer (zum Beispiel ein Zeitmaß) für jeden Satz von Speicherzellen im Wesentlichen gleich ist, so dass die verschiedenen Sätze von Speicherzellen sich zur oder nahezu zur selben Zeit abnutzen.
  • Bei einem Ausführungsbeispiel können die nichtflüchtigen Speichermedien 122 eine Operation oder einen Befehl zum Festlegen der Anzahl von Bits pro Zelle (zum Beispiel SLC-Modus, MLC-Modus und/oder TLC-Modus) unterstützen, wie als Merkmalsfestlegungs-Befehl oder dergleichen. Bei einem weiteren Ausführungsbeispiel kann das Zellenkapazitätsmodul 314 die Anzahl von Bits pro Zelle (zum Beispiel SLC-Modus, MLC-Modus und/oder TLC-Modus) ohne eine Operation oder einen Befehl durch Hinzufügen oder Einstellen eines oder mehrerer Lesespannungs-Schwellwerte im Zusammenwirken mit dem Lesespannungsmodul 312 oder dergleichen festlegen. Sogar dann, wenn die nichtflüchtigen Speichermedien 122 einen MLC-Modus nicht unterstützen oder bereitstellen, können das Zellenkapazitätsmodul 314 und/oder das Lesespannungsmodul 312 beispielsweise logisch bzw. verknüpfungsmäßig Lesespannungs-Schwellwerte einem SLC-Modus hinzufügen oder Lesespannungs-Schwellwerte von einem TLC-Modus logisch bzw. verknüpfungsmäßig entfernen (zum Beispiel Ignorieren, Komprimieren, Überlappen), um einen Satz von Speicherzellen in einem virtuellen MLC-Modus oder dergleichen zu betreiben.
  • Das Zellenkapazitätsmodul 314 kann bei gewissen Ausführungsbeispielen einen Modus für einen Satz von Speicherzellen einmal für jede Zuordnung festlegen, wobei die nichtflüchtigen Speichermedien 122 den festgelegten Modus solange anwenden, bis er geändert wird. Bei einem weiteren Ausführungsbeispiel kann das Zellenkapazitätsmodul 314 den Modus mit jedem Befehl oder jeder Operation festlegen. Das Zellenkapazitätsmodul 314 kann bei einem Ausführungsbeispiel Metadaten behalten, die angeben, welche Löschblöcke oder anderen Sätze von Speicherzellen in verschiedenen Moden zugeordnet werden, derart, dass das Zellenkapazitätsmodul 314 die Zuordnung sogar dann konsistent machen kann, wenn die nichtflüchtige Speichervorrichtung 120 zurückgesetzt oder ausgeschaltet wird.
  • Bei gewissen Ausführungsbeispielen kann das Zellenkapazitätsmodul 314 in Zusammenarbeit mit dem Datenfaktormodul 322, dem Speicherungskapazitäts-Wiedergewinnungsmodul 318 oder dergleichen eine oder mehrere Statistik-Angaben für jeden Löschblock überwachen oder verfolgen, wie eine Fehlerrate (zum Beispiel RBER, UBER), eine Programmierungs-/Löschzählung, eine T-Löschzeit, die es braucht, um einen Löschblock zu löschen, eine T-Prog-Zeit, die es braucht, einen Löschblock zu programmieren, und/oder eine andere Speichermediencharakteristik, einen Datenfaktor und/oder ein Attribut, welches den Daten mit jedem Speicherungskapazitäts-Wiedergewinnungsereignis zugehörig ist, wie eine periodische Hintergrund-Abtastung der nichtflüchtigen Speichermedien 122 oder dergleichen. T-Löschen, T-prog oder dergleichen können über die Zeit hinweg zunehmen, da Speicherzellen altern, und sie können eine Zuverlässigkeit der Speicherzellen angeben. Das Speicherungskapazitäts-Wiedergewinnungsmodul 318 kann bei einem Beispiel die T-Löschzeit für einen Löschblock messen, wenn es den Block während einer Speicherungskapazitäts-Wiedergewinnungsoperation löscht. Das Zellenkapazitätsmodul 314 kann die verlustreichsten Speicherzellen (zum Beispiel Löschblöcke) dem SLC-Modus zuordnen und den Rest dem TLC-Modus oder dergleichen. Fällt eine Zuverlässigkeit eines TLC-Löschblocks unter einen Zuverlässigkeits-Schwellwert, kann das Zellenkapazitätsmodul 314 bei einem Ausführungsbeispiel den TLC-Löschblock dem MLC-Modus, dem SLC-Modus oder dergleichen mit weniger Zuständen und Bits pro Speicherzelle wieder zuordnen.
  • Bei einem Ausführungsbeispiel ist das Modul 316 für eine logische-in-physikalische Abbildung konfiguriert, um eine logische-in-physikalische Abbildungsstruktur zu behalten, die logische Kennzeichen (zum Beispiel LBAs) zu physikalischen Plätzen in den nichtflüchtigen Speichermedien 122 abbildet. Ein Ausführungsbeispiel einer logischen-in-physikalischen Abbildungsstruktur wird unten unter Bezugnahme auf 6 beschrie ben. Wie oben beschrieben, können auf Grund der Rückkopier- und/oder IDM-Prozeduren bei gewissen Ausführungsbeispielen dieselben gültigen Daten an zwei Plätzen bzw. Stellen innerhalb der nichtflüchtigen Speichermedien 122 existieren. Die unterschiedlichen Stellen können in unterschiedlichen Typen von Speicherzellen sein (zum Beispiel SLC-Speicherzellen und TLC-Speicherzellen).
  • Das Modul 316 der logischen-in-physikalische Abbildung arbeitet bei einem Ausführungsbeispiel mit dem Rückkopiermodul 306 zusammen, um Stellen bzw. Plätze für Daten in den nichtflüchtigen Speichermedien 122 vor, während und nach den Rückkopier- und/oder IDM-Operationen zu verfolgen. Das Modul 316 der logischen-in-physikalische Abbildung kann bei gewissen Ausführungsbeispielen mehrere Abbildungen für dieselben Daten erhalten, eine primäre/vor der Abbildung an einer Stelle in einem ersten/Quellsatz von Speicherzellen und eine sekundäre/nach der Abbildung an einer Stelle in einem zweiten/Zielsatz von Speicherzellen oder dergleichen. Bei gewissen Ausführungsbeispielen kann das Modul 316 der logischen-in-physikalische Abbildung mehrere Abbildungen für dieselbe logische Adresse oder denselben logischen Adressenbereich in demselben Eintrag innerhalb der logischen-in-physikalischen Abbildungsstruktur speichern oder behalten (zum Beispiel eine primäre Abbildung zu einer SLC-Stelle und eine sekundäre Abbildung zu einer TLC-Stelle). Bei anderen Ausführungsbeispielen kann das Modul 316 der logischen-in-physikalische Abbildung unterschiedliche Abbildungen für dieselbe logische Adresse oder denselben logischen Adressenbereich in verschiedenen Einträgen in einer logischen-in-physikalischen Abbildungsstruktur speichern oder behalten. Das Modul 316 der logischen-in-physikalischen Abbildung kann mit dem Lesemodul 310 zusammenarbeiten, so dass Leseanforderungen unter Heranziehung der primären Abbildung (zum Beispiel eine Abbildung für bzw. auf Daten in SLC-Speicherzellen) sogar bedient werden, nachdem die Daten zu dem zweiten/Zielsatz von Speicherzellen zurückkopiert worden sind, die langsamere Zugriffszeiten, niedrigere Zuverlässigkeit oder dergleichen aufweisen können als der erste/Quellsatz von Speicherzellen.
  • Das Modul 316 der logischen-in-physikalischen Abbildung kann bei einem Ausführungsbeispiel konfiguriert sein, um eine logische-in-physikalische Abbildung für eine Stelle der Daten in dem ersten/Quellsatz von nichtflüchtigen Speicherzellen auf ein Kopieren oder Verschieben der Daten zu dem zweiten/Zielsatz von Speicherzellen hin ohne Überprüfung zu aktualisieren, zu entfernen oder zu ersetzen. Bei einem weiteren Ausführungsbeispiel kann das Modul 316 der logischen-in-physikalischen Abbildung mit dem Rückkopiermodul 306 zusammenarbeiten, um die Speicherung und/oder Datenintegrität von Daten in dem zweiten/Zielsatz von nichtflüchtigen Speicherzellen vor einem Aktualisieren, Entfernen oder Ersetzen der Abbildung zu dem ersten/Quellsatz von nichtflüchtigen Speicherzellen durch Lesen der Daten aus dem zweiten/Zielsatz von nichtflüchtigen Speicherzellen, durch Aufnahme einer Abschlussanzeige oder Bestätigung von den nichtflüchtigen Speichermedien 122, durch Ausführen einer Fehlerkorrektur bezüglich der Daten oder dergleichen, wie oben beschrieben zu überprüfen. Das Modul 316 der logischen-in-physikalische Abbildung kann mit dem Speicherungskapazitäts-Wiedergewinnungsmodul 318 zusammenarbeiten, um die Speicherkapazität des ersten/Quellsatzes von Speicherzellen zu löschen und wiederzugewinnen, nachdem das Modul 316 der logischen-in-physikalische Abbildung die Abbildung zu dem bzw. auf den ersten/Quellsatz von Speicherzellen entfernt hat.
  • Das Modul 316 der logischen-in-physikalische Abbildung kann bei gewissen Ausführungsbeispielen das Aktualisieren, Entfernen oder Ersetzen der Abbildung zu dem ersten/Quellsatz von nichtflüchtigen Speicherzellen verzögern, bis einem bestimmten Auslöser bzw. Trigger entsprochen ist. Das Modul 316 der logischen-in-physikalischen Abbildung kann solange warten, bis das Speicherungskapazitäts-Wiedergewinnungsmodul 318 den ersten/Quellsatz von Speicherzellen für eine Speicherungskapazitäts-Wiedergewinnungsoperation ausgewählt hat, bis eine verfügbare nicht benutzte Kapazität der nichtflüchtigen Speicher vorrichtung 120 unter einen Kapazitätsschwellwert gefallen ist, bis eine Leserate für Daten des ersten/Quellsatzes von Speicherzellen unter einer Schwelle eines häufigen Zugriffs fällt oder dergleichen. Durch Verzögern des Entfernens einer Abbildung auf Daten des ersten/Quellsatzes von Speicherzellen erlaubt das Modul 316 der logischen-in-physikalische Abbildung bei einem Ausführungsbeispiel, dass auf Daten von dem ersten/Quellsatz von Speicherzellen solange wie möglich zuzugreifen ist, was die Leistung bezüglich der Daten optimiert.
  • Das Modul 316 der logischen-in-physikalischen Abbildung arbeitet bei gewissen Ausführungsbeispielen mit dem unten beschriebenen Stromabschaltungsmodul 320 zusammen, um sicherzustellen, dass die logische-in-physikalische Abbildungsstruktur, die logischen-in-physikalischen Abbildungen und zugehörigen Daten zugreifbar und zurückgewinnbar sind, nachdem ein Strom- bzw. Spannungsversorgungspegel für die nichtflüchtige Speichervorrichtung 120 unter einen Schwellwert fällt (zum Beispiel ein Abschalten, ein Stromausfall, ein Neustart, ein Rebooten, ein Spannungsverlust oder dergleichen). Bei einem Ausführungsbeispiel aktualisiert das Modul 316 der logischen-in-physikalischen Abbildung beispielsweise die logische-in-physikalische Abbildung lediglich, nachdem Daten einer Rückkopier- und/oder IDM-Operation von den zweiten/Zielspeicherzellen (zum Beispiel eine oder mehrere Seiten eines TLC-Löschblockes) gelesen und/oder in anderer Weise überprüft werden können, und bevor die Daten aus den ersten/Quellspeicherzellen gelöscht worden sind (zum Beispiel eine oder mehrere Seiten eines SLC-Löschblocks). Auf diese Weise kann das Modul 316 der logischen-in-physikalischen Abbildung mit dem Stromausfallmodul 320 zusammenarbeiten, um einen Datenverlust aufgrund von teilweise gefüllten Löschblöcken zu verhindern, da der erste/Quell-Löschblock (zum Beispiel ein SLC-Löschblock) bei gewissen Ausführungsbeispielen solange nicht gelöscht wird, bis der zweite/Ziel-Löschblock als vollständig gefüllt bestätigt oder überprüft worden ist.
  • Wie oben beschrieben, kann das Rückkopiermodul 306 den Rückkopier- und/oder IDM-Prozess optimieren. Das Modul 316 der logischen-in-physikalischen Abbildung kann den Zugriff auf Daten in Seiten oder Löschblöcken optimieren, die in eine Rückkopier- und/oder IDM-Operation einbezogen sind. Falls auf Daten in einer Seite mit hoher Häufigkeit zugegriffen wird, kann das Rückkopiermodul 306 beispielsweise im Zusammenwirken mit dem Abbruchmodul 308 oder dergleichen die Rückkopier- und/oder IDM-Operation abbrechen oder verschieben und die Daten in dem ersten/Quellsatz von Speicherzellen (zum Beispiel SLC-Speicherzellen) belassen, was zu schnelleren Lesevorgängen führen kann als der zweite/Zielsatz von Speicherzellen (zum Beispiel TLC-Speicherzellen). Wie oben beschrieben, kann das Rückkopiermodul 306 bei gewissen Ausführungsbeispielen dann, wenn auf Daten in einer Seite mit hoher Häufigkeit zugegriffen wird, dem Rückkopiermodul 306 ermöglichen, die Rückkopier- und/oder IDM-Operation fortzusetzen, wobei es jedoch die Rückkopier- und/oder IDM-Operation derart modifizieren kann, dass eine Kopie der Daten in dem ersten/Quellsatz von Speicherzellen zumindest solange verbleibt, bis die hohe Häufigkeit von Zugriffen abnimmt oder dergleichen.
  • Das Modul 316 der logischen-in-physikalischen Abbildung kann bei einem Ausführungsbeispiel Metadaten in der logischen-zu-physikalischen Abbildungsstruktur von dem Datenfaktormodul 322 oder dergleichen speichern, was einen oder mehrere Datenfaktoren oder andere Attribute für die zugehörigen Daten anzeigt, und dem Auffrischmodul 304 ermöglicht zu bestimmen, ob Daten einer Rückkopier- und/oder IDM-Operation aufzufrischen sind, was dem Rückkopiermodul 306 ermöglicht zu bestimmen, ob eine Rückkopier- und/oder IDM-Operation bezüglich Daten auszuführen ist oder nicht. Das Modul 316 der logischen-in-physikalischen Abbildung kann in jedem logischen-zu-physikalischen Abbildungseintrag Metadaten, die eine Dienstqualität oder andere Priorität für die zugehörigen Daten angeben, eine Zugriffshäufigkeit oder eine Häufigkeitszählung (zum Beispiel eine Lesezählung, eine Schreibzählung oder dergleichen) für die Daten oder dergleichen enthalten. Wie oben beschrieben, kann das Rückkopiermodul 306 in dem Fall, dass Daten des ersten/Quellsatzes von Speicherzellen (zum Beispiel ein SLC-Löschblock) ein hohes QoS-Niveau aufweist, bestimmen, ob die Daten unter Heranziehung einer Rückkopier- und/oder IDM-Operation zu verschieben sind oder nicht, um die Daten zu dem zweiten/Zielsatz von Speicherzellen (zum Beispiel TLC-Speicherzellen) zu kopieren, jedoch um außerdem die Daten zumindest temporär in dem ersten/Quellsatz von Speicherzellen zu belassen, um eine höhere Leseleistung bereitzustellen.
  • Bei einem Ausführungsbeispiel arbeitet das Speicherungskapazitäts-Wiedergewinnungsmodul 318 mit dem Modul 316 der logischen-in-physikalischen Abbildung und/oder dem Rückkopiermodul 306 zusammen, um Speicherkapazität eines ersten/Quellsatzes von Speicherzellen zu löschen und wiederzugewinnen, nachdem eine Rückkopier- und/oder IDM-Operation bezüglich der Daten in dem ersten/Quellsatz von Speicherzellen (zum Beispiel einem SLC-Löschblock) erfolgreich abgeschlossen ist, was als Abfallsammlung bezeichnet werden kann. Das Speicherkapazitäts-Wiedergewinnungsmodul 318 kann bei einem Ausführungsbeispiel konfiguriert sein, um eine Speicherkapazität eines ersten/Quellsatzes von nichtflüchtigen Speicherzellen auf eine Überprüfung der Speicherung der Daten in einem zweiten/Zielsatz von nichtflüchtigen Speicherzellen nach einer Rückkopier- und/oder IDM-Operation zurückzugewinnen bzw. wiederzugewinnen, indem die Daten gelesen werden, indem die Daten mit den Daten in dem ersten/Quellsatz von Speicherzellen, verglichen erden, indem eine Bestätigung von den nichtflüchtigen Speichermedien 122 oder dergleichen empfangen wird. Das Speicherkapazitäts-Wiedergewinnungsmodul 318 kann bei einem Ausführungsbeispiel die Speicherung der Daten auf eine Leseanforderung bezüglich der Daten im Zusammenwirken mit dem Lesemodul 310 überprüfen, welches die Leseanforderung von einem zweiten/Zielsatz von Speicherzellen oder dergleichen bedient, so dass die Überprüfung einen geringen oder keinen Overhead hinzufügt, da die Daten bereits gelesen worden sind.
  • Bei gewissen Ausführungsbeispielen kann das Speicherkapazitäts-Wiedergewinnungsmodul 318 die Wiedergewinnung der Speicherkapazität bezüglich eines oder mehrerer Löschblöcke des ersten/Quellsatzes von Speicherzellen verzögern, nachdem das Rückkopiermodul 306 Daten aus den Löschblöcken kopiert hat. Das Speicherkapazitäts-Wiedergewinnungsmodul 318 kann bei gewissen Ausführungsbeispielen auf der Grundlage von einem oder mehreren Datenfaktoren oder anderen Attributen für die Daten des Löschblocks selektiv bestimmen, wann eine Speicherkapazitäts-Wiedergewinnungsoperation bezüglich eines ersten/Quell-Löschblocks auszuführen ist, für den das Rückkopiermodul 306 bereits eine Rückkopier- und/oder IDM-Operation ausgeführt hat. Das Speicherkapazitäts-Wiedergewinnungsmodul 318 kann beispielsweise einen Löschblock von Quell-(zum Beispiel SLC)-Speicherzellen für eine Speicherkapazitäts-Wiedergewinnung mit einer niedrigsten Dienstqualität oder einem niedrigsten Prioritätsniveau, mit einer niedrigsten Lesehäufigkeit, mit einer höchsten Schreibhäufigkeit (zum Beispiel voraussichtlich durch anschließendes Schreiben ungültig zu machen), mit einer längsten Verweilzeit, mit einer höchsten Fehlerrate (zum Beispiel RBER, UBER) oder dergleichen auswählen. Bei einem Ausführungsbeispiel kann das Speicherkapazitäts-Wiedergewinnungsmodul 318 warten, um eine Speicherkapazität für einen ersten/Quellsatz von Speicherzellen (zum Beispiel einen SLC-Löschblock) wiederzugewinnen, bis eine Zugriffsrate, wie eine Leserate bezüglich der Daten der Speicherzellen, ausfällt, einem zuvor festgelegten Zugriffsschwellwert zu entsprechen. Das Speicherkapazitäts-Wiedergewinnungsmodul 318 kann bei gewissen Ausführungsbeispielen warten, um eine Speicherkapazität eines ersten/Quellsatzes von Speicherzellen wiederzugewinnen, bis einem Speicherkapazitäts-Schwellwert für die nichtflüchtige Speichervorrichtung 120 entsprochen ist (zum Beispiel die Vorrichtung 120 voll ist, sich annähert, voll zu werden, oder dergleichen, und die Speicherkapazitäts-Wiedergewinnung erforderlich ist). Bei einem weiteren Ausführungsbeispiel kann das Speicherkapazitäts-Wiedergewinnungsmodul 318 einen Löschblock für eine Speicherkapazitäts-Wiedergewinnungsoperation auf der Grundlage einer Kombination von mehreren Datenfaktoren oder anderen Attributen, wie einer gewichteten Mittelung, einer Kombination von skalierten Datenfaktoren oder Attributen, einem Entscheidungsbaum oder dergleichen auswählen.
  • Bei einem Ausführungsbeispiel verwaltet das Stromabschaltungsmodul 320 die Konsistenz von Daten nach einem Stromausfall bzw. Stromabschaltungs-Ereignis für die nichtflüchtigen Speichermedien 122, die nichtflüchtige Speichervorrichtung 120, die Rechenvorrichtung 110 oder dergleichen. Die Speichervorrichtung 120 enthält bei gewissen Ausführungsbeispielen eine Schreib-Pipeline 240 und eine Lese-Pipeline 241, wie oben beschrieben. Die Schreib-Pipeline 240 kann gewisse Operationen bezüglich Daten ausführen, wenn die Daten von dem Speicher-Client 116 in die nichtflüchtigen Speichermedien 122 übertragen werden. Diese Operationen können beispielsweise eine Fehlerkorrekturcode-(ECC)-Erzeugung, eine Verschlüsselung, eine Komprimierung oder dergleichen enthalten. Die Lese-Pipeline 241 kann ähnlich und potentiell umgekehrt Operationen bezüglich Daten ausführen, die aus nichtflüchtigen Speichermedien 122 gelesen und zu dem Speicher-Client 116 gesendet werden.
  • Die Speichervorrichtung 120 enthält bei gewissen Ausführungsbeispielen außerdem eine sekundäre Spannungsversorgung, die Spannung bzw. Strom im Falle einer vollständigen oder teilweisen Stromunterbrechung bereitstellt, welche dazu führt, dass die Speichervorrichtung 120 nicht genügend elektrische Leistung über die primäre Stromversorgungsverbindung 125 erhält. Eine Stromunterbrechung ist irgendein Ereignis, das in unerwarteter Weise die Speichervorrichtung 120 veranlasst, die Aufnahme von Leistung über die primäre Stromverbindung 125 zu stoppen, oder sie bewirkt eine signifikante Verringerung in der Leistung, die von der Speichervorrichtung 120 über die primäre Stromverbindung 125 aufgenommen wird. Eine signifikante Herabsetzung in der Leistung enthält bei einem Ausführungsbeispiel, dass die Leistung bzw. der Strom unter einen zuvor festgelegten Schwellwert fällt. Der zuvor festgelegte Schwellwert kann bei einem weiteren Ausführungsbeispiel ausgewählt sein, um normale Schwankungen im Pegel des Stromes bzw. der Spannung von der primären Stromverbindung 125 zuzulassen. Die Energieversorgung für ein Gebäude, in dem sich der Speicher-Client 116 und die Speichervorrichtung 120 befinden, kann ausfallen oder ausgehen. Eine Benutzer-Aktion (wie ein unsachgemäßes Herunterfahren der Rechenvorrichtung 110, die Strom für die Speichervorrichtung 120 liefert), ein Ausfall in der primären Stromverbindung 125 oder ein Ausfall in der primären Stromversorgung kann die Speichervorrichtung 120 veranlassen, die Stromaufnahme zu stoppen. Verschiedene Typen von Stromunterbrechungen können einen unerwarteten Stromverlust für die Speichervorrichtung 120 hervorrufen.
  • Die sekundäre Stromversorgung kann einen oder mehrere Batterien, einen oder mehrere Kondensatoren, eine Bank von Kondensatoren, eine gesonderte Verbindung zu einer Stromversorgung oder dergleichen enthalten. Bei einem Ausführungsbeispiel liefert die sekundäre Stromversorgung Strom bzw. Energie an die Speichervorrichtung 120 für zumindest eine Strom-Haltezeit während einer Stromunterbrechung oder anderen Verringerung im Strom von der primären Stromverbindung 125. Die sekundäre Stromversorgung kann bei einem weiteren Ausführungsbeispiel eine Strom-Haltezeit bereitstellen, die lang genug ist, um der Speichervorrichtung 120 zu erlauben, gewisse Daten, die nicht in den nichtflüchtigen Speichermedien 122 sind, in die nichtflüchtigen Speichermedien 122 zu leeren.
  • Bei einem Ausführungsbeispiel ist die sekundäre Stromversorgung Teil einer elektrischen Schaltung, die auf einen teilweisen oder vollständigen Verlust an Energie von der primären Stromverbindung 125 automatisch Energie bzw. Strom an die Speichervorrichtung 120 liefert. In ähnlicher Weise kann die Speichervorrichtung 120 konfiguriert sein, um während eines teilweisen oder vollständigen Energie- bzw. Stromverlustes elektrische Energie von der sekundären Stromversorgung automatisch an- oder aufzunehmen. Bei einem Ausführungsbeispiel kann die sekundäre Stromversorgung beispielsweise mit der Speichervorrichtung 120 parallel mit der primären Stromverbindung 125 elektrisch gekoppelt sein, so dass die primäre Stromverbindung 125 die sekundäre Stromversorgung während des normalen Betriebs lädt und die sekundäre Stromversorgung auf einen Energie- bzw. Stromverlust hin automatisch Energie bzw. Strom an die Speichervorrichtung 120 liefert. Bei einem Ausführungsbeispiel enthält die Speichervorrichtung 120 ferner eine Diode oder einen anderen Rückstromschutz zwischen der sekundären Stromversorgung und der primären Stromverbindung 125, um zu verhindern, dass Strom von der sekundären Stromversorgung die primäre Stromverbindung 125 erreicht. Bei einem anderen Ausführungsbeispiel kann das Stromabschaltungsmodul 320 auf eine verringerte Leistung von der primären Stromversorgung 125 hin die sekundäre Stromversorgung an die Speichervorrichtung 120 unter Verwendung eines Schalters oder dergleichen anschalten oder mit dieser verbinden.
  • Zusätzlich können bei gewissen Ausführungsbeispielen einige Daten innerhalb der Schreib-Pipeline 240 als Ergebnis der Stromunterbrechung beschädigt sein. Eine Stromunterbrechung kann einen Stromausfall ebenso wie unerwartete Änderungen in zugeführten Strompegeln enthalten. Die unerwarteten Änderungen in Strompegeln können Daten gefährden, die in der Speichervorrichtung 120 sind, aber noch nicht in den nichtflüchtigen Speichermedien 122. Eine Datenbeschädigung kann sogar beginnen aufzutreten, bevor das Stromabschaltungsmodul 320 gewarnt (oder unterrichtet) wird, dass eine Stromunterbrechung vorhanden gewesen ist.
  • Bei gewissen Ausführungsbeispielen ist das Stromabschaltungsmodul 320 als Teil der Steuereinrichtung 124 des nichtflüchtigen Speichers, der Steuereinrichtung 126 der nichtflüchtigen Speichermedien oder dergleichen realisiert. Das Stromabschaltungsmodul 320 kann beispielsweise ein Hardware-Treiber (zum Beispiel die SML-Schicht 130) oder in Firmware für die Speichervorrichtung 120 realisiert sein (zum Beispiel die Steuereinrichtung 126 der nichtflüchtigen Speichermedien). Bei anderen Ausführungsbeispielen kann das Stromabschaltungsmodul 320 teilweise in einem Treiber und teilweise in der Steuereinrichtung 126 der nichtflüchtigen Speichermedien oder dergleichen realisiert sein. Bei einem anderen Ausführungsbeispiel ist zumindest ein Teil des Stromabschaltungsmoduls 320 in der Speichervorrichtung 120, als Teil der Steuereinrichtung 126 der nichtflüchtigen Speichermedien oder dergleichen realisiert, so dass das Stromabschaltungsmodul 320 während eines teilweisen oder vollständigen Stromverlustes fortfährt, sogar dann, wenn der Speicher-Client 116 nicht länger funktioniert, unter Verwendung von Energie von der sekundären Stromversorgung zu arbeiten.
  • Bei einem Ausführungsbeispiel initiiert das Stromabschaltungsmodul 320 einen Stromverlustmodus in der Speichervorrichtung 120 auf eine Verringerung im Strom bzw. der Energie von der primären Stromverbindung 125. Während des Stromverlustmodus leitet bzw. spült das Stromabschaltungsmodul 320 bei einem Ausführungsbeispiel Daten, die sich in der Speichervorrichtung 120 befinden, jedoch noch nicht in den nichtflüchtigen Speichermedien 122 gespeichert sind, in die nichtflüchtigen Speichermedien 122. Bei besonderen Ausführungsbeispielen kann das Stromabschaltungsmodul 320 die Daten, die bestätigt worden sind und die sich in der Speichervorrichtung 120 befinden, jedoch noch nicht in den nichtflüchtigen Speichermedien 122 gespeichert sind, in die nichtflüchtigen Speichermedien 122 leiten bzw. spülen. Bei gewissen Ausführungsbeispielen kann das Stromabschaltungsmodul 320 die Ausführung von Datenoperationen bezüglich der Speichervorrichtung 120 so einstellen, um sicherzustellen, dass wesentliche Operationen enden, bevor die sekundäre Stromversorgung genügend Strom bzw. Energie verliert, um die wesentlichen Operationen während der Stromhaltezeit zu beenden, die die sekundäre Stromversorgung bereitstellt.
  • Bei gewissen Ausführungsbeispielen umfassen die wesentlichen Operationen jene Operationen für Daten, die als gespeichert bestätigt worden sind, wie bestätigte Schreiboperationen. Bei anderen Ausführungsbeispielen umfassen die wesentlichen Operationen jene Operationen für Daten, die als gespeichert oder gelöscht bestätigt worden sind. Bei anderen Ausführungsbei spielen umfassen die wesentlichen Operationen jene Operationen für Daten, die als gespeichert, gelesen und gelöscht bestätigt worden sind. Das Stromabschaltungs-Modul 320 kann außerdem nicht wesentliche Operationen beenden, um sicherzustellen, dass jene nicht wesentlichen Operationen keine Leistung unnötig verbrauchen und/oder nicht wesentliche Operationen hinsichtlich der Ausführung blockieren; das Stromabschaltungs-Modul 320 kann beispielsweise Löschoperationen, Leseoperationen, unbestätigte Schreiboperationen und dergleichen beenden.
  • Bei einem Ausführungsbeispiel erhält die Beendigung von nicht wesentlichen Operationen Energie von der sekundären Stromversorgung, was der sekundären Stromversorgung erlaubt, die Stromhaltezeit bereitzustellen. Bei einem weiteren Ausführungsbeispiel nimmt das Stromabschaltungsmodul 320 eine Stilllegung oder eine in sonstiger Weise erfolgende Abschaltung einer Operation von einer oder mehreren Teilkomponenten der Speichervorrichtung 120 während eines Stromverlustmodus vor, um Energie von der sekundären Stromversorgung zu bewahren. Bei verschiedenen Ausführungsbeispielen kann das Stromabschaltungsmodul 320 beispielsweise eine Stilllegungsoperation der Lese-Pipeline 241, einer Lese-Direktspeicherzugriffs-(DMA)-Maschine und/oder anderer Teilkomponenten der Speichervorrichtung 120 vornehmen, die mit nicht wesentlichen Operationen verbunden sind.
  • Das Stromabschaltungsmodul 320 kann außerdem für die Bestimmung verantwortlich sein, welche Daten durch die Stromunterbrechung beschädigt wurden, was verhindert, dass die beschädigten Daten in den nichtflüchtigen Speichermedien 122 gespeichert werden und was sicherstellt, dass der Speicher-Client 116 gewahr wird, dass die beschädigten Daten niemals tatsächlich in der Speichervorrichtung 120 gespeichert wurden. Dies verhindert eine aus der Stromunterbrechung resultierende Beschädigung von Daten in der Speichervorrichtung 120.
  • Da Daten einer Rückkopier- und/oder IDM-Operation in dem ersten/Quellsatz von Speicherzellen bereits gespeichert sind, wird bei einem Ausführungsbeispiel das Stromabschaltungsmodul 320 eine in Bearbeitung befindliche Rückkopier- und/oder IDM-Operation als nicht wesentlich betrachten und mit dem Abbruchmodul 308 zusammen arbeiten, um in Bearbeitung befindliche Rückkopier- und/oder IDM-Operationen als Antwort darauf, dass der Energie- bzw. Strompegel ausfällt, einem Schwellwert zu entsprechen, während eines Stromverlustmodus oder dergleichen abzubrechen. Ferner kann die Programmierung gewisser Typen von Speicherzellen, wie der TLC-Speicherzellen, erfordern, dass der gesamte Löschblock programmiert wird oder dass andernfalls der teilweise gefüllte Löschblock unbenutzbar oder beschädigt sein kann, was potentiell einen Datenverlust hervorruft. Das Stromabschaltungsmodul 320 kann mit dem Modul 316 der logischen-in-physikalischen Abbildung zusammenarbeiten, um sicherzustellen, dass Daten einer abgebrochenen Rückkopier- und/oder IDM-Operation nach einem Stromausfall in dem ersten/Quellsatz von Speicherzellen verfügbar bleiben und dass die logische-zu-physikalische Abbildungsstruktur nicht irgendeine Abbildungen bezüglich Daten enthält, die in einen teilweise gefüllten Löschblock zurückkopiert sind.
  • Das Stromabschaltungsmodul 320 kann bei einem Ausführungsbeispiel mit dem Speicherkapazitäts-Wiedergewinnungsmodul 318 zusammenarbeiten, um die Speicherkapazität irgendwelcher teilweise gefüllter Löschblöcke der zweiten/Zielsätze von Speicherzellen (zum Beispiel TLC-Löschblöcke) zu löschen und wiederzugewinnen. Das Rückkopiermodul 306 kann bei gewissen Ausführungsbeispielen jegliche abgebrochenen Rückkopier- und/oder IDM-Operationen nach der Erholung von dem Netz- bzw. Strompegelausfall oder dergleichen neu starten. Um die Erholung von einem Netz- bzw. Stromausfall, ein Löschen von teilweise gefüllten Löschblöcken oder dergleichen zu erleichtern, kann das Stromabschaltungsmodul 320 bei gewissen Ausführungsbeispielen mit dem Rückkopiermodul 306 zusammenarbeiten, um auf Rückkopier- und/oder IDM-Operationen hin, welche die Löschblöcke füllen, Löschblöcke der zweiten/Ziel-Speicherzellen (zum Beispiel TLC-Löschblöcke) als gefüllt zu markieren. Während der Erholung können das Stromabschaltungsmodul 320 und/oder das Speicherkapazitäts-Wiedergewinnungsmodul 318 Speicherkapazitäts-Wiedergewinnungsoperationen für jegliche Löschblöcke der zweiten/Ziel-Speicherzellen ausführen, die nicht als gefüllt markiert sind. Bei einem weiteren Ausführungsbeispiel können das Stromabschaltungsmodul 320 und/oder das Speicherkapazitäts-Wiedergewinnungsmodul 318 eine Wiedergewinnungsabtastung der nichtflüchtigen Speichermedien 122 ausführen, um teilweise gefüllte Löschblöcke der zweiten/Ziel-Speicherzellen sogar bei Ausführungsbeispielen zu lokalisieren, bei denen teilweise gefüllte Löschblöcke nicht markiert sind.
  • Bei einem Ausführungsbeispiel ist das Datenfaktormodul 322 konfiguriert, um einen oder mehrere Datenfaktoren oder andere Attribute für Daten von ersten/Quellsätzen nichtflüchtiger Speicherzellen (zum Beispiel SLC-Löschblöcke) mit einer geringeren Anzahl von Bits, die pro Zelle dargestellt werden, als zweite/Zielsätze von nichtflüchtigen Speicherzellen (zum Beispiel TLC-Löschblöcke) zu bestimmen. Bei gewissen Ausführungsbeispielen kann das Datenfaktormodul 322 Metadaten aufbewahren, die die Datenfaktoren oder anderen Attribute angeben, welche das Datenfaktormodul 322 bestimmt hat. Das Datenfaktormodul 322 kann mit dem Modul 316 der logischen-in-physikalischen Abbildung zusammenarbeiten, um Metadaten zu speichern, die einen oder mehrere Datenfaktoren oder andere Attribute angeben, welche Daten in der logischen-in-physikalischen Abbildungsstruktur zugehörig sind; es kann die Anzeigen von einem oder mehreren Datenfaktoren oder anderen Attributen mit den zugehörigen Daten in den nichtflüchtigen Speichermedien 122 speichern und/oder es kann andere Metadaten beibehalten, die einen oder mehrere Datenfaktoren oder andere Attribute angeben. Wie oben beschrieben, kann das Auffrischmodul 304 auf der Grundlage von einem oder mehreren Datenfaktoren oder anderen Attributen von dem Datenfaktormodul 322 bestimmen, welche Daten aufzufrischen sind; das Rückkopiermodul 306 kann auf der Grundlage von einem oder mehreren Datenfaktoren oder anderen Attributen von dem Datenfaktormodul 322 bestimmen, welche Daten zu verschieben oder zurückzukopieren sind; das Speicherkapazitäts-Wiedergewinnungsmodul 318 kann auf der Grundlage von einem oder mehreren Datenfaktoren oder anderen Attributen von dem Datenfaktormodul 322 oder dergleichen Löschblöcke für eine Speicherkapazitäts-Wiedergewinnung oder eine Abfallsammlung auswählen.
  • Bei einem Ausführungsbeispiel umfasst ein Daten zugehöriges Attribut (zum Beispiel ein Datenfaktor) eine Charakteristik oder einen Aspekt in Verbindung mit gespeicherten Daten, mit nichtflüchtigen Speicherzellen, welche die Daten speichern, oder dergleichen oder einen Anzeiger oder ein Flag, welches einer derartigen Charakteristik oder einem derartigen Aspekt zugehörig ist. Ein Daten zugehöriges Attribut (zum Beispiel ein Datenfaktor) kann bei gewissen Ausführungsbeispielen einen Anzeiger für eine Wahrscheinlichkeit dafür umfassen, dass zugehörige Daten einen oder mehrere Datenfehler aufweisen. Ein Daten zugehöriges Attribut (zum Beispiel ein Datenfaktor) kann bei gewissen Ausführungsbeispielen einen Anzeiger bzw. eine Anzeige einer Anzahl von Datenfehlern für die zugehörigen Daten umfassen. Ein Daten zugehöriges Attribut (zum Beispiel ein Datenfaktor) kann bei verschiedenen Ausführungsbeispielen eines oder mehrere von einem Dienstqualitäts-Niveau oder einer anderen Priorität für die Daten, eine Fehlerrate für die Daten, wie eine Rohbitfehlerrate (RBER) oder eine Fehlerrate eines unkorrigierbaren Bitfehlers (UBER), ein Alter bezüglich der Daten (zum Beispiel eine Verweil- bzw. Speicherzeit oder die Zeit, seitdem geschrieben ist), eine Programmierungs-/Löschzyklus-Zählung für den ersten/Quellsatz von nichtflüchtigen Speicherzellen, eine Schreibhäufigkeit für die Daten, eine Lesehäufigkeit für die Daten, einen Kapazitätsschwellwert, dem für den ersten/Quellsatz von nichtflüchtigen Speicherzellen entsprochen wird, oder dergleichen enthalten.
  • Bei gewissen Ausführungsbeispielen kann ein Datenfaktor oder ein anderes Daten zugehöriges Attribut ein Flag oder einen anderen Anzeiger in Verbindung mit Daten enthalten, womit angegeben wird, dass die Daten einem Datenfaktor-Schwellwert genügen, wie einem Dienstqualitäts- oder anderen Prioritäts-Schwellwert, einem Fehlerraten-Schwellwert, einem Alter- Schwellwert, einem Programmierungs-/Löschzählungs-Schwellwert, einem Schreibhäufigkeits-Schwellwert, einem Lesehäufigkeits-Schwellwert, einem Kapazitäts-Schwellwert oder dergleichen. Das Datenfaktormodul 322 kann auf eine Speicheranforderung nach den Daten, auf eine Hintergrundabtastung der Daten, auf ein Speicherkapazitäts-Wiedergewinnungsereignis für einen Löschblock oder einen anderen Satz von Speicherzellen, die Daten speichern oder dergleichen, ein Flag oder anderen Anzeiger für Daten periodisch festlegen oder speichern. Bei einem Ausführungsbeispiel kann das Auffrischmodul 304 auf der Grundlage eines Flags oder anderen Anzeigers, das bzw. den das Datenfaktormodul 322 für die Daten gesetzt hat (zum Beispiel einen Datenfaktor) bestimmen, ob Daten aufzufrischen sind oder nicht. Das Rückkopiermodul 306 kann bei gewissen Ausführungsbeispielen auf der Grundlage eines Flags oder anderen Anzeigers, das bzw. den das Datenfaktormodul 322 für die Daten gesetzt hat (zum Beispiel einen Datenfaktor) bestimmen, ob Daten in einem zweiten/Zielsatz von Speicherzellen zu speichern sind oder nicht. Wie unten beschrieben, kann das Datenfaktormodul 322 Metadaten auf einen oder mehrere Datenfaktoren oder andere Attribute hin, wie auf einen oder mehrere Attribute hin, wie auf einen oder mehrere Flags oder andere Anzeiger für die Datenfaktoren in Einträgen einer logischen-zu-physikalischen Abbildungsstruktur, mit Daten in den nichtflüchtigen Speichermedien 122, in einer gesonderten Datenstruktur oder dergleichen speichern oder beibehalten.
  • Das Datenfaktormodul 322 kann Datenfaktoren oder andere Attribute für eine oder mehrere Feinheiten von Daten, wie pro ECC-Codewort oder Datenblock, pro logischer oder physikalischer Seite, pro logischem oder physikalischem Löschblock, pro Bereich von LBAs in der logischen-zu-physikalischen Abbildungsstruktur oder dergleichen bestimmen, überwachen und/oder verfolgen. Das Datenfaktormodul 322 betreibt bei einem Ausführungsbeispielen einen Hintergrundprozess, der die nichtflüchtigen Speichermedien 122 abtastet, um Datenfaktoren oder andere Attribute zu bestimmen, die Daten liest und sie verarbeitet, um die Datenfaktoren oder Attribute zu bestimmen. Bei ei nem weiteren Ausführungsbeispiel kann das Datenfaktormodul 322 Datenfaktoren oder Attribute für Löschblöcke bestimmen, die das Speicherkapazitäts-Wiedergewinnungsmodul 318 wiedergewinnt. Bei einem anderen Ausführungsbeispiel kann das Datenfaktormodul 322 Datenfaktoren oder Attribute bestimmen, wenn das Puffermodul 302 und/oder das Lesemodul 310 Speicheranforderungen, wie Leseanforderungen und Schreibanforderungen bezüglich der Daten empfangen und erfüllen. Bei gewissen Ausführungsbeispielen kann das Datenfaktormodul 322 ein bestimmtes Modell oder eine bestimmte Charakterisierung in Zuordnung zu einem Satz von Speicherzellen verwenden, um Datenfaktoren oder Attribute voraussagend zu bestimmen, ohne notwendigerweise die Daten aus den Speicherzellen zu lesen oder in anderer Weise zu verarbeiten.
  • 4 veranschaulicht eine Darstellung einer Dreifachpegel-Speicherzelle 402 in einer Speichervorrichtung 120. Die Dreifachpegel-Speicherzelle 402 ist eine Zelle, die 2^n mögliche Zustände aufweist, wobei n gleich der Anzahl von Bits pro Zelle ist. Eine Dreifachpegel-Speicherzelle 402, wie die eine in 4 gezeigte, kann beispielsweise drei Informationsbits speichern, und demgemäß weist sie acht mögliche Zustände oder Aufenthaltsorte auf, wie dies weiter unten detaillierter erörtert wird. Bei anderen Ausführungsbeispielen kann eine Speicherzelle 402 zwei Informationsbits speichern und weist demgemäß acht mögliche Zustände oder Aufenthaltsorte auf; sie kann vier Informationsbits und demgemäß 32 mögliche Zustände oder Aufenthaltsorte aufweisen, oder dergleichen.
  • Die Dreifachpegel-Speicherzelle 402 speichert zumindest ein höchstwertiges Bit (MSB), ein Bit mittlerer Wertigkeit (CSB) und ein niederwertigstes Bit (LSB). Bei gewissen Ausführungsbeispielen, wie in 4 gezeigt, können das MSB-, CSB- und das LSB-Bit, obwohl Teil derselben physikalischen Dreifachpegel-Speicherzelle 402, unterschiedlichen Seiten der Medien 122 zugeteilt sein. Bei gewissen Ausführungsbeispielen ist eine Vielzahl der Dreifachpegel-Speicherzellen 402 in den nichtflüchtigen Speichermedien 122 (wie beispielsweise als NAND- Flash) als eine Seite oder ein Seiten-Tupel organisiert. Bei gewissen nichtflüchtigen Speichermedien 122, die eine Vielzahl von Dreifachpegel-Speicherzellen 402 umfassen, ist eine Seite die kleinste Einheit, die in die Medien 122 geschrieben werden kann. Bei derartigen Ausführungsbeispielen kann die Dreifachpegel-Speicherzelle 402 einem Seiten-Tupel, wie oben beschrieben, zugeordnet sein, welches die obere Seite 404, die mittlere Seite 405 und die untere Seite 406 enthält. Die obere Seite 404 ist dem MSB-Bit zugeordnet, die mittlere Seite 405 ist dem CSB-Bit zugeordnet und die untere Seite 406 ist dem LSB-Bit zugeordnet. Auf diese Weise können die obere Seite 404, die mittlere Seite 405 und die untere Seite 406 demselben gemeinsamen Satz von Speicherzellen 402 der nichtflüchtigen Speichermedien 122 zugeordnet oder durch diese gespeichert sein.
  • Somit können das MSB-Bit, das CSB-Bit und das LSB-Bit in derselben Dreifachpegel-Speicherzelle 402 unterschiedliche Adressen in der Speichervorrichtung 120 aufweisen. Bei gewissen Ausführungsbeispielen enthält die obere Seite 404 die MSB-Bits einer Vielzahl von Dreifachpegel-Speicherzellen 402; die mittlere Seite 405 enthält die CSB-Bits einer Vielzahl von Dreifachpegel-Speicherzellen 402 und die untere Seite 406 enthält die LSB-Bits derselben Dreifachpegel-Speicherzellen 402. An die obere Seite 404 gerichtete Schreibvorgänge können daher Änderungen lediglich in den MSB-Bits der zugehörigen Dreifachpegel-Speicherzellen 402 bewirken, während an die untere Seite 406 gerichtete Schreibvorgänge Änderungen lediglich in den LSB-Bits der zugehörigen Dreifachpegel-Speicherzellen 402 bewirken, und so weiter, für Schreibvorgänge für die mittlere Seite 405. Für Dreifachpegel-Speicherzellen 402, wie Nand-Flash, bewirken an eine obere Seite 404, eine mittlere Seite 405 oder eine untere Seite 406 gerichtete Schreibvorgänge Änderungen für lediglich gewisse der zugehörigen Dreifachpegel-Speicherzellen 402, da eine Löschoperation die Dreifachpegel-Speicherzellen 402 in einen ersten Logikwert-Zustand versetzt und die Schreiboperation oder die Programm- bzw. Progammieroperation lediglich Änderungen von gewissen Dreifachpegel-Speicherzellen 402 einer Seite zum entgegengesetzten Logik wert-Zustand bewirkt. In ähnlicher Weise rufen Lesevorgänge von Daten, die in der oberen Seite 404 gespeichert sind, Lesevorgänge der MSB-Bits von mehreren Dreifachpegel-Speicherzellen 402 hervor; Lesevorgänge von Daten, die in der mittleren Seite 405 gespeichert sind, bewirken ein Lesen der CSB-Bits von mehreren Dreifachpegel-Speicherzellen 402, und Lesevorgänge von Daten, die in der unteren Seite 406 gespeichert sind, bewirken Lesevorgänge der LSB-Bits von mehreren Dreifachpegel-Speicherzellen 402.
  • Bei gewissen Ausführungsbeispielen werden die Datenbits auf Anforderungen nach Daten hin gelesen, die in der Speichervorrichtung 120 gespeichert worden sind. Eine derartige Anforderung kann als erste Leseoperation bezeichnet werden. Bei gewissen Ausführungsbeispielen ist die erste Leseoperation an die untere Seite 406 gerichtet, so dass lediglich das LSB-Bit von der Dreifachpegel-Speicherzelle 402 zurückgeführt wird. Ein Speicher-Client 116 (zum Beispiel eine Dateisystem-Software-Anwendung, eine Betriebssystem-Anwendung, eine Software-Anwendung von Datenbank-Verwaltungssystemen, ein Client-Computer, eine Client-Vorrichtung oder dergleichen) kann beispielsweise Daten in einer Speichervorrichtung 120 speichern. Wenn bei diesem Beispiel der Speicher-Client 116 eine Schreibanforderung sendet, werden die Daten ausschließlich in die untere Seite 406 und/oder die mittlere Seite 405 geschrieben. Als Ergebnis werden die LSB-Bits und/oder die CSB-Bits in den verschiedenen Dreifachpegel-Speicherzellen 402 geändert; die MSB-Bits werden durch den Schreibvorgang jedoch nicht geändert. Wenn bei diesem Beispiel der Speicher-Client 116 Daten liest, wird in ähnlicher Weise der Lesevorgang an die untere Seite 406 und/oder die mittlere Seite 405 gerichtet oder adressiert, und lediglich die LSB-Bits und/oder die CSB-Bits werden gelesen.
  • 5 veranschaulicht ein Ausführungsbeispiel eines nichtflüchtigen Speicherelements 123. In dem veranschaulichten Ausführungsbeispiel enthält das nichtflüchtige Speicherelement 123 einen oder mehrere SLC-Löschblöcke 410a–n, einen oder meh rere TLC-Löschblöcke 412a–n, einen SLC-Seitenpuffer 414, einen unteren TLC-Seitenpuffer 416a, einen mittleren TLC-Seitenpuffer 416b, einen oberen TLC-Seitenpuffer 416c und einen Cachepuffer 418.
  • Bei einem Ausführungsbeispiel schreibt das Puffermodul 302 Daten von Schreibanforderungen in den SLC-Seitenpuffer 414, von dem die Daten zu einem oder mehreren SLC-Löschblöcken 410a–n programmiert werden. Wenn das Puffermodul 302 die SLC-Löschblöcke 410a–c mit Daten füllt, bestimmt das Rückkopiermodul 306 auf der Grundlage von einem oder mehreren Datenfaktoren oder Attributen für die Daten von dem Datenfaktormodul 322 oder dergleichen, ob die Daten zu einem TLC-Löschblock 412 intern zurückzukopieren oder zu verschieben sind oder nicht. Falls das Rückkopiermodul 306 bestimmt, die Daten von den SLC-Löschblöcken 410a–c zu einem TLC-Löschblock 412 intern zurückzukopieren oder zu verschieben, kann das Rückkopiermodul 306 die Daten Seite um Seite in die TLC-Seitenpuffer 416 laden.
  • Das Auffrischmodul 304 kann bestimmen, ob eine Auffrischoperation bezüglich der Daten, eines Teiles der Daten oder dergleichen auszuführen ist oder nicht, die das Rückkopiermodul 306 in die TLC-Seitenpuffer 416 geladen hat, und es kann aufgefrischte Daten zu den TLC-Seitenpuffern 416 zurückführen und nicht aufgefrischte Daten in den TLC-Seitenpuffern 416 zurücklassen oder dergleichen. Bei gewissen Ausführungsbeispielen schreibt oder programmiert das Rückkopiermodul 306 drei Seiten von den SLC-Löschblöcken 410a–n zu einer Zeit in einen TLC-Löschblock 412 von den TLC-Seitenpuffern 416a–c. Nachdem die Rückkopier- und/oder IDM-Operation abgeschlossen ist, können Daten in den SLC-Löschblöcken 410a–n zur Verwendung durch das Lesemodul 310 verbleiben, bis das Speicherkapazitäts-Wiedergewinnungsmodul 318 bestimmt, Daten zu einer späteren Zeit zu löschen.
  • 6 veranschaulicht ein Ausführungsbeispiel einer Abbildungsstruktur 1000, eines Logikadressenraums 1120 und einer sequentiellen Log-basierten, lediglich anhängenden Schreibstruktur 1140. Die Abbildungsstruktur 1000 wird bei einem Ausführungsbeispiel durch ein Modul 316 logischen-zur-physikalischen Abbildung der nichtflüchtigen Speichereinrichtung 124 erhalten, um LBAs oder andere logische Adresse in physikalische Plätze in den nichtflüchtigen Speichermedien 122 abzubilden. Die Abbildungsstruktur 1000 ist bei dem veranschaulichten Ausführungsbeispiel ein B-Baum mit mehreren Einträgen. Bei dem veranschaulichten Ausführungsbeispiel enthalten die Knoten der Abbildungsstruktur 1000 direkte Bezugnahmen auf physikalische Plätze in der nichtflüchtigen Speichervorrichtung 120. Bei anderen Ausführungsbeispielen kann die Abbildungsstruktur 1000 Verbindungen enthalten, die Einträge in eine Rückwärts-Abbildung oder dergleichen abbilden. Die Abbildungsstruktur 1000 kann bei verschiedenen Ausführungsbeispielen entweder mit oder ohne eine Rückwärts-Abbildung verwendet werden. Bei anderen Ausführungsbeispielen können die Bezugnahmen in der Abbildungsstruktur 1000 alphanumerische Zeichen, Hexadezimalzeichen, Zeiger, Verbindungen bzw. Links und dergleichen enthalten.
  • Die Abbildungsstruktur 1000 enthält bei dem veranschaulichten Ausführungsbeispiel eine Vielzahl von Knoten. Jeder Knoten in dem veranschaulichten Ausführungsbeispiel ist imstande, zwei Einträge zu speichern. Bei anderen Ausführungsbeispielen kann jeder Knoten imstande sein, eine größere Anzahl von Einträgen zu speichern, wobei die Anzahl an Einträgen je Pegel sich ändern kann, wenn die Abbildungsstruktur 1000 durch Gebrauch oder dergleichen wächst oder schrumpft.
  • Jeder Eintrag bildet bei dem veranschaulichten Ausführungsbeispiel einen Bereich variabler Länge von LBAs der nichtflüchtigen Speichervorrichtung 120 auf einen physikalischen Platz in den Speichermedien 122 für die nichtflüchtige Speichervorrichtung 120 ab. Während Bereiche variabler Länge von LBAs in dem veranschaulichten Ausführungsbeispiel durch eine Anfangs-Adresse und eine End-Adresse dargestellt sind, kann der Bereich variabler Länge von LBAs bei anderen Ausführungsbeispielen durch eine Anfangs-Adresse und eine Länge oder dergleichen dargestellt sein. Bei einem anderen Ausführungsbeispiel kann die Abbildungsstruktur 1000 anstatt Bereiche variabler Länge von LBAs zu speichern, eine einzige LBA oder andere logische Adresse in einem Eintrag als Anfangs-Adresse für einen Datenwert und/oder für zugehörige Metadaten speichern.
  • Bei einem Ausführungsbeispiel stellen die Großbuchstaben ‘A‘ bis ‘M‘ einen logischen oder physikalischen Löschblock in den physikalischen Speichermedien 122 der nichtflüchtigen Speichervorrichtung 120 dar, der die Daten des entsprechenden Bereichs von LBAs speichert. Bei anderen Ausführungsbeispielen können die Großbuchstaben andere physikalische Adressen oder Plätze der nichtflüchtigen Speichervorrichtung 120 darstellen. Bei dem veranschaulichten Ausführungsbeispiel sind die Großbuchstaben ‘A‘ bis ‘M‘ auch in der Log-basierten Schreibstruktur 1140 veranschaulicht, die die physikalischen Speichermedien 122 der nichtflüchtigen Speichervorrichtung 120 darstellt.
  • In dem veranschaulichten Ausführungsbeispiel bezeichnet eine Mitgliedschaft in der Abbildungsstruktur 1000 eine Mitgliedschaft (oder Speicherung) in der nichtflüchtigen Speichervorrichtung 120. Bei einem Ausführungsbeispiel kann ein Eintrag ferner einen Zeiger bzw. eine Anzeige dazu enthalten, ob die nichtflüchtige Speichervorrichtung 120 Daten entsprechend einem Logikblock innerhalb des Bereiches der LBAs, Daten einer Rückwärtsabbildung und/oder andere Daten speichert.
  • Bei dem veranschaulichten Ausführungsbeispiel enthält der Fußknoten 1008 Einträge 1102, 1104 mit nicht aneinander grenzenden Bereichen von LBAs. Bei dem LBA "208" existiert zwischen den zwei Einträgen 1102, 1104 in dem Fußknoten ein "Loch". Bei einem Ausführungsbeispiel zeigt ein "Loch" an, dass eine nichtflüchtige Speichervorrichtung 120 nicht Daten entsprechend einer oder mehreren LBAs entsprechend dem "Loch" speichert. Bei einem Ausführungsbeispiel unterstützt die nichtflüchtige Speichervorrichtung 120 Block-I/O-Anforderungen (Lesen, Schreiben, Trimmen, etc.) mit mehreren angrenzenden und/oder nicht-angrenzenden Bereichen von LBAs (das sind Bereiche, in denen ein oder mehrere "Löcher" enthalten ist/sind). Ein "Loch" kann bei einem Ausführungsbeispiel das Ergebnis einer einzelnen Block-I/O-Anforderung bei zwei oder mehr nicht angrenzenden Bereichen von LBAs sein. Bei einem weiteren Ausführungsbeispiel kann ein "Loch" das Ergebnis von mehreren verschiedenen Block-I/O-Anforderungen mit LBA-Bereichen sein, die das "Loch" säumen.
  • Bei dem veranschaulichten Ausführungsbeispiel existieren ähnliche "Löcher" oder nicht benachbarte Bereiche von LBAs zwischen den Einträgen 1106, 1108 des Knotens 1014, zwischen den Einträgen 1110, 1112 des linken Kind-Knoten des Knotens 1014, zwischen den Einträgen 1114, 1116 des Knotens 1018 und zwischen Einträgen des Knotens 1118. Bei einem Ausführungsbeispiel können ähnliche "Löcher" auch zwischen Einträgen in Eltern-Knoten und Kind-Knoten existieren. In dem veranschaulichten Ausführungsbeispiel existiert ein "Loch" von LBAs "060–071" beispielsweise zwischen dem linken Eintrag 1106 des Knotens 1014 und dem rechten Eintrag 1112 des linken Kind-Knotens des Knotens 1014.
  • Das "Loch" bei LBA "003" kann bei dem veranschaulichten Ausführungsbeispiel auch in dem logischen Adressenraum 1120 der nichtflüchtigen Speichervorrichtung 120 als Logikadresse "003" 1130 gesehen werden. Die Schraffurmarkierungen bei LBA "003" 1140 stellen einen leeren Platz oder einen Platz dar, für den bzw. in dem die nichtflüchtige Speichervorrichtung 120 keine Daten speichert. Das "Loch" bei LBA 1134 in dem Logikadressenraum 1120 geht auf eine oder mehrere Block-I/O-Anforderungen bei nicht angrenzenden Bereichen, einen PTRIM- oder anderen Freigabebefehl für die nichtflüchtige Speichervorrichtung 120 oder dergleichen zurück.
  • Der Logikadressenraum 1120 der nichtflüchtigen Speichervorrichtung 120 ist bei dem veranschaulichten Ausführungsbeispiel größer als die physikalische Speicherkapazität und der entsprechende Speichervorrichtungs-Adressenraum der nichtflüchti gen Speichervorrichtung 120. Bei dem veranschaulichten Ausführungsbeispiel weist die nichtflüchtige Speichervorrichtung 120 einen 64-Bit-Logikadressenraum 1120 auf, beginnend mit der Logikadresse "0" 1120, und erstreckt sich zur Logikadresse "264-1" 1126. Da der Speichervorrichtungs-Adressenraum lediglich einem Teilsatz des Logikadressenraums 1120 der nichtflüchtigen Speichervorrichtung 120 entspricht, kann der Rest des Logikadressenraums 1120 begrenzt oder für andere Funktionen der nichtflüchtigen Speichervorrichtung 120 genutzt sein.
  • Die sequentielle Log-basierte, lediglich anhängende Schreibstruktur 1140 ist bei dem veranschaulichten Ausführungsbeispiel eine logische Darstellung der physikalischen Speichermedien 122 der nichtflüchtigen Speichervorrichtung 120. Bei gewissen Ausführungsbeispielen speichert die nichtflüchtige Speichervorrichtung 120 Daten sequentiell, hängt Daten an die Log-basierte Schreibstruktur 1140 an einem Anhängepunkt 1144 an. Die nichtflüchtige Speichervorrichtung 120 nutzt bei einem weiteren Ausführungsbeispiel einen Speicherraum-Wiedergewinnungsprozess, wie ein Speicherkapazitäts-Wiedergewinnungsmodul 318 oder ein anderes Speicherraum-Wiedergewinnungsmodul, welches nichtflüchtige Speichermedien 122 wieder verwendet, die freigegebene/nicht genutzte Logikblöcke speichern. Nichtflüchtige Speichermedien, die freigegebene/unbenutzte Logikblöcke speichern, werden bei dem veranschaulichten Ausführungsbeispiel einem verfügbaren Speicherpool 1146 für die nichtflüchtige Speichervorrichtung 120 hinzugefügt. Durch Löschen von ungültigen Daten aus der nichtflüchtigen Speichervorrichtung 120, wie oben beschrieben, und Hinzufügen der physikalischen Speicherkapazität entsprechend den für den verfügbaren Speicherpool 1146 zurück gelöschten Daten, ist die Log-basierte Schreibstruktur 1140 bei einem Ausführungsbeispiel zyklisch, ringartig und weist eine theoretisch unendliche Kapazität auf.
  • Bei dem veranschaulichten Ausführungsbeispiel schreitet der Anhängepunkt 1144 um die Log-basierte, lediglich Anhänge-Schreibstruktur 1140 in einem kreisförmigen Muster 1142 fort.
  • Bei einem Ausführungsbeispiel gleicht das kreisförmige Muster 1142 die Abnutzung der nichtflüchtigen Speichermedien 122 aus, was die nutzbare Haltbarkeit der nichtflüchtigen Speichermedien 122 steigert. Bei dem veranschaulicht Ausführungsbeispiel hat ein Speicherkapazitäts-Wiedergewinnungsmodul 318 oder ein anderer Speicherkapazitäts-Rückgewinnungsprozess verschiedene Blöcke 1148, 1150, 1152, 1154 als ungültig markiert, was in den Blöcken 1148, 1150, 1152, 1154 durch eine "X"-Markierung dargestellt ist. Das Speicherkapazitäts-Wiedergewinnungsmodul 318 wird bei einem Ausführungsbeispiel die physikalische Speicherkapazität der ungültigen Blöcke 1148, 1150, 1152, 1154 zurückgewinnen und die zurückgewonnene Kapazität dem verfügbaren Speicherpool 1146 hinzufügen. Bei dem veranschaulichten Ausführungsbeispiel sind modifizierte Versionen der Blöcke 1148, 1150, 1152, 1154 der Log-basierten Schreibstruktur 1140 als neue Blöcke 1156, 1158, 1160, 1162 in einer Lese-, Modifizierungs-, Schreib-Operation oder dergleichen angehängt worden, was es ermöglicht, die ursprünglichen Blöcke 1148, 1150, 1152, 1154 wiederzugewinnen.
  • 7 veranschaulicht ein Ausführungsbeispiel eines Systems zur Speicherung von Informationen in einer Speichervorrichtung 120, die eine oder mehrere Dreifachpegel-Speicherzellen 402 enthält. Bei einem Ausführungsbeispiel enthält das System einen Treiber 702, ein Abbildungs-Logikmodul 704, eine Hardware-Steuereinrichtung 706 und nichtflüchtige Speichermedien 122. Bei gewissen Ausführungsbeispielen sind diese Komponenten Teil der Speichervorrichtung 120.
  • Bei einem Ausführungsbeispiel empfängt der Treiber 702 von einem oder mehreren Clients 116 an die nichtflüchtigen Speichermedien 122 gerichtete Schreibanforderungen und Leseanforderungen. Die Anforderungen enthalten in typischer Weise eine Adressenkomponente, wie eine Seitenadresse, eine Logikblockadresse, einen Dateinamen und einen Versatz oder dergleichen. Bei gewissen Ausführungsbeispielen stehen weder die oberen Seiten 404 noch die mittleren Seiten 405 noch die unteren Seiten 406 für den Speicher-Client 116 offen. Vielmehr präsen tiert der Treiber 702 einen Satz von logisch angrenzenden Blockadressen, Cluster-Kennzeichen, Dateikennzeichen oder Objektkennzeichen (hier als Logikblockadressen bezeichnet) für den Speicher-Client 116.
  • Das Abbildungs-Logikmodul 704 kann Software, Hardware oder eine Kombination daraus sein. Bei einem Ausführungsbeispiel sind die physikalischen Medienseitenadressen aufeinander folgend, und die Abbildungslogik bildet die physikalischen Medienseitenadressen auf der Grundlage des gegenwärtigen Betriebsmodus der Speichervorrichtung 120 und des Abnutzungszustands der Dreifachpegel-Speicherzellen 402 der Speichervorrichtung 102 in eine geeignete untere Seite 406, mittlere Seite 405 und obere Seite 404 ab. Bei einem anderen Ausführungsbeispiel bildet der Treiber 702 die Logikblockadresse direkt in die in Frage kommende Adresse für die physikalische untere Seite 406 ab.
  • Das Abbildungs-Logikmodul 704 kann Software, Hardware oder eine Kombination daraus sein. Bei einem Ausführungsbeispiel bildet das Abbildungs-Logikmodul 704 die physikalische Seitenadresse in ein Seiten-Tupel der Speichervorrichtung 120 ab. Wie oben erläutert, kann das Seiten-Tupel eine untere Seite 406, die den LSB-Bits der Dreifachpegel-Speicherzellen 402 in den nichtflüchtigen Speichermedien 122 zugehörig ist, eine mittlere Seite 405, die den CSB-Bits der Dreifachpegel-Speicherzellen 402 zugehörig ist, und eine obere Seite 404 enthalten, die den MSB-Bits der Dreifachpegel-Speicherzellen 402 zugehörig ist.
  • Die Hardware-Steuereinrichtung 706 empfängt die Schreib- und/oder Lese-Anforderungen von dem Abbildungs-Logikmodul 704 und führt diese aus, so dass die Daten in den nichtflüchtigen Speichermedien 122 gespeichert werden, wie dies durch von dem Abbildungs-Logikmodul 704 gelieferte Befehle angewiesen ist. Die Hardware-Steuereinrichtung 706 kann Hardware, Firmware, Software oder eine Kombination daraus sein. Bei gewissen Ausführungsbeispielen kann die Hardware-Steuereinrichtung 706 einen im Feld programmierbares Gate-Array (FPGA), einen Prozessor oder eine anwendungsspezifische integrierte Schaltung (ASIC) umfassen.
  • 8A ist ein schematisches Blockdiagramm, welches ein Ausführungsbeispiel eines Arrays 600 aus einer Anzahl N von Speicherelementen 606 veranschaulicht. Bei dem veranschaulichten Ausführungsbeispiel enthält ein ECC-Datenblock 616 Daten 612 von mehreren Speicherelementen 606. Bei einem weiteren Ausführungsbeispiel sind auch ECC-Prüfbits für den ECC-Datenblock 616 über mehrere Speicherelemente 606 gespeichert.
  • Das Array 600 von Speicherelementen 606 enthält bei einem Ausführungsbeispiel eine Anzahl N von Speicherelementen 606a, 606b, 606c, ... 606n. Jedes Speicherelement 606 kann eine Vorrichtung, einen Chip, einen Teil eines Chips, ein Chipplättchen, eine Ebene in einem Chipplättchen oder dergleichen umfassen. Bei dem veranschaulichten Ausführungsbeispiel bilden die Speicherelemente 606a–n eine Bank 602a. Das Array 600 enthält bei einem Ausführungsbeispiel mehrere Banken 602a ... 602m. Die Banken 602a–m enthalten bei dem veranschaulichten Ausführungsbeispiel mehrere Kanäle 604a, 604b, 604c, ... 604n. Bei einem Ausführungsbeispiel wird ein Paket oder Datensatz über die verschiedenen Kanäle 604a–n geschrieben, und Daten werden separat von jedem Kanal 604a–n gelesen und in dem Paket neu zusammengestellt. Bei einem anderen Ausführungsbeispiel wird ein ECC-Datenblock 616, ein Paket oder ein Datensatz über die verschiedenen Kanäle 604a–n geschrieben, und Daten werden parallel von sämtlichen der Kanäle 604a–n gelesen. Eine Leseoperation in einer Bank 602a kann einen gesamten ECC-Datenblock 616, ein Paket oder einen Datensatz oder einen Teil eines ECC-Datenblocks 616, eines Pakets oder Datensatzes lesen, der bzw. das in einem ganzen ECC-Datenblock 616, Paket oder Datensatz neu zusammengestellt wird bzw. ist. Bei dem veranschaulichten Ausführungsbeispiel enthält jeder Kanal zumindest ein Speicherelement 606 in jeder Bank 602.
  • Darüber hinaus enthält jedes Speicherelement 606 bei einem Ausführungsbeispiel einen physikalischen Löschblock oder "PEB" 608. Das Speicherelement Eins 606a enthält beispielsweise das PEB Eins 608a. Ein physikalischer Löschblock ist in typischer Weise ein Löschblock, der sich auf bzw. in einem Chipplättchen, Chip oder anderem Speicherelement 606 befindet. Jeder PEB 608 enthält m physikalische Seiten 610. Der PEB eins 608a enthält beispielsweise Seite 0 610a ... Seite m 614a. Jede physikalische Seite 610a speichert einen Teil von Daten ("D0, D1, ... Dm") 612 und ECC-Prüfbits, die mit den Daten 612 verteilt sind. Wie oben beschrieben, können mehrere Seiten 610 desselben Speicherelements 606, desselben PEB-Blocks 608 oder dergleichen sich denselben gemeinsamen Satz von Speicherzellen teilen. Drei Seiten 610 können beispielsweise durch Aufenthaltsorte oder Programmzustände desselben gemeinsamen Satzes von TLC-Speicherzellen gespeichert oder codiert sein.
  • Bei einem Ausführungsbeispiel bildet eine Gruppe von PEBs (PEB1 608a–PEBm 608m) einen logischen Löschblock ("LEB"). Ein LEB-Block kann die Reihe von N Speicherelementen 600 umspannen. Bei gewissen Ausführungsbeispielen ist ein LEB-Block von einer Größe, um in eine Bank 602a–m zu passen, und zwar mit einem PEB 608a–m von jedem Speicherelement 606a–n oder dergleichen. Bei anderen Ausführungsbeispielen kann ein LEB-Block verschiedene Banken 602a–m überspannen, und er kann einen oder mehrere PEB-Blöcke 608a–m von mehreren Banken 602a–m enthalten. Bei einem Ausführungsbeispiel umspannt eine logische Seite ("LP") ferner eine Vielzahl von physikalischen Seiten 610 in einer Reihe bzw. Zeile. Bei einem anderen Ausführungsbeispiel überspannt eine logische Seite N Speicherelemente 606a–n.
  • Bei einem Ausführungsbeispiel ist der ECC-Code ein Blockcode, der mit den Daten verteilt ist. Darüber hinaus brauchen die Daten und der ECC-Block nicht mit irgendeiner besonderen physikalischen Hardware-Grenze bündig zu sein. Als Ergebnis ist die Fehlerkorrektur mit den ECC-Codes nicht von einer bestimmten Hardware-Konfiguration abhängig. Daher können der ECC-Code und entsprechende Daten einen ECC-Datenblock 616 bilden, und der ECC-Datenblock 616 kann auf einen oder mehrere der N Speicherelemente 606a–n aufgeteilt und in diesem/diesen gespeichert sein. Ein ECC-Datenblock 616 überspannt in typischer Weise zumindest einen Teil einer Vielzahl von physikalischen Seiten 610 einer logischen Seite, wobei die Daten und der aus den Daten 612a, 612b, ... 612m erzeugte ECC-Code über die N Speicherelemente 606a–n verteilt sind. Bei einem Ausführungsbeispiel enthält eine LP eine Vielzahl von ECC-Datenblöcken 616. Eine physikalische Seite 610 kann ein oder mehrere Datenbytes des ECC-Datenblocks 616 enthalten. Ein ECC-Datenblock 616 kann mehrere Reihen bzw. Zeilen innerhalb einer physikalischen Seite 610 überspannen und eine physikalische Seite 610 kann eine Vielzahl von ECC-Datenblöcken 616 enthalten.
  • Da bei dem veranschaulichten Ausführungsbeispiel die ECC-Prüfbits für den ECC-Datenblock 616 über mehrere Speicherelemente 606a–n und Kanäle 604a–n verteilt sind, kann ein ECC-Modul oder –Decoder dann, wenn ein Datenfehler in Folge einer Lesespannungsverschiebung in einem oder mehreren Speicherelementen 606a–n auftritt, nicht imstande sein zu bestimmen, welche Speicherelemente 606 einen Fehler aufweisen, der unter Heranziehung von Prüfbits eines zuvor festgelegten Belastungs-Datenmusters korrigierbar ist. Bei einem Ausführungsbeispiel bestimmt das Managementmodul 150, welche Speicherelemente 606 oder Kanäle 604 Datenbits aufweisen, die nicht zu einem erwarteten Prüfbit passen, um eine Fehlerkorrektur durch einen ECC-Decoder oder dergleichen zu erleichtern.
  • Bei einem Ausführungsbeispiele bestimmen das Managementmodul 150 und/oder ein ECC-Modul oder -Decoder, dass ein Datensatz einen Fehler oder ein Prüfbit aufweist, welches von einem bekannten oder erwarteten Wert abweicht, und das Managementmodul 150 bestimmt, von welchem Speicherelement 606 der Datensatz gelesen wurde. Bei einem Ausführungsbeispiel kann das Array 600 beispielsweise 24 Kanäle 604 aufweisen, und acht Bytes können parallel aus 24 Speicherelementen 606 einer einzigen Bank 602 während einer Leseoperation für eine Gesamtheit von 192 Bytes pro Leseoperation gelesen werden. Auf der Grundlage dieser Information kann das Managementmodul 150 bei einem Ausführungsbeispiel auf der Grundlage der Position eines 8-Byte-Datensatzes innerhalb der 192 Bytes bestimmen, von welchem Speicherelement 606 ein Datensatz gelesen wurde. Bei einem Ausführungsbeispiel umfassen die 192 Bytes den ECC-Datenblock 616.
  • 8B ist ein schematisches Blockdiagramm, welches ein Ausführungsbeispiel eines Arrays 650 aus N Speicherelementen 606 veranschaulicht. Das Array 650 ist bei dem veranschaulichten Ausführungsbeispiel dem Array 600 von 10A im Wesentlichen ähnlich, wobei jedoch der ECC-Datenblock 652 Daten 612a in einem einzigen Speicherelement 606a anstatt über mehrere Speicherelemente 606a–n enthält. Bei einem Ausführungsbeispiel sind ECC-Prüfbits für den ECC-Datenblock 652 in dem einzigen Speicherelement 606a gespeichert. Da jedes Speicherelement 606a–n oder jeder Kanal 604a–n gesonderte ECC-Prüfbits aufweist, verwendet ein ECC-Modul oder -Decoder bei einem Ausführungsbeispiel die gesonderten ECC-Prüfbits, um zu bestimmen, in welchen Speicherelementen 606a–n oder Kanälen 604a–n ein Fehler aufgetreten ist, und es kann mit dem Managementmodul 150 zusammenarbeiten, um Prüfdaten als eine Extra-Schicht eines Fehlerschutzes zu verwenden, sollten die ECC-Prüfbits in Folge eines oder mehrerer Fehler ausfallen, als unter Verwendung der ECC-Prüfbits allein korrigierbar sind.
  • 9A veranschaulicht ein Diagramm 500 von Programmierungszuständen oder Aufenthaltsorten für TLC-Speicherzellen einer nichtflüchtigen Speichervorrichtung 120. Bei dem veranschaulichten Ausführungsbeispiel kann die nichtflüchtige Speichervorrichtung 120 beispielsweise eine TLC-NAND-Flash-Speichervorrichtung sein, und jede Zelle weist acht Zustände auf; es können jedoch bei anderen Ausführungsbeispielen verschiedene Speichertypen und Zahlen von Zuständen pro Zelle verwendet sein. Bei dem veranschaulichten Ausführungsbeispiel ist der physikalische Datencodierungswert jeder Zelle der Lesespannungspegel. Der Lesespannungspegel, wie er hier verwen det wird, bezieht sich auf eine Spannung, die den Kanal eines Transistors mit schwimmendem Gate leitend macht, wenn ein Lesespannungs-Schwellwert ("Vt") an das Steuergate angelegt ist. Daten werden in jeder Zelle dadurch gespeichert, dass die Menge der gespeicherten Ladung in dem schwimmenden Gate geändert wird, die den Lesespannungspegel bestimmt.
  • Bei dem veranschaulichten Ausführungsbeispiel unterteilen die Lesespannungs-Schwellwerte 510a–g den Bereich möglicher Lesespannungspegel für eine Zelle in Zustände L0, L1, L2, L3, L4, L5, L6 und L7, wobei L0 der gelöschte Zustand ist. Bei einigen Ausführungsbeispielen kann der gelöschte Zustand L0 einem negativen Lesespannungspegel entsprechen. Falls der Lesespannungspegel für eine Zelle unter einem Lesespannungs-Schwellwert 510a liegt, befindet sich die Zelle im L0-Zustand. Falls die Schwellwertspannung Vt für eine Zelle über dem Lesespannungs-Schwellwert 510a, jedoch unter dem Lesespannungs-Schwellwert 510b liegt, befindet sich die Zelle im L1-Zustand und so weiter. Auf eine Zelle hin, die programmiert (oder gelöscht) wird, kann der Zustand der Zelle dadurch bestimmt werden, dass eine Überprüfungs-Schwellwertspannung 520a–g an das Steuergate angelegt und festgestellt wird, ob die Zelle leitet, um zu bestimmen, ob der Lesespannungspegel oberhalb oder unterhalb der angelegten Überprüfungs-Schwellwertspannung 520a–g liegt. Durch Verwenden von unterschiedlichen Spannungs-Schwellwerten für die Lesespannungs-Schwellwerte 510a–g und die Überprüfungs-Schwellwertspannungen 520a–g bildet das Lesespannungsmodul 312 zwischen den Zellzuständen Sicherheitsbänder 530a–g oder Trennabstände.
  • Obwohl das Diagramm 500 eine gleichmäßige Verteilung von Zellen über die Zustände L0–L7 veranschaulicht, ist eine glockenförmige Verteilung von Lesespannungspegeln in jedem Zustand dargestellt, da jede Zelle in einem bestimmten bzw. besonderen Zustand einen unterschiedlichen Lesespannungspegel innerhalb eines Bereichs von Lesespannungspegeln für den Zustand haben kann und Lesespannungspegel über die Zeit driften können oder dergleichen. Abweichungen in den Zellen und im Programmierungsprozess können Abweichungen in den Lesespannungspegeln hervorrufen, wenn die Zellen programmiert werden. Außerdem kann der Lesespannungspegel einer Zelle von seiner ursprünglich programmierten Spannung über die Zeit in Folge von Lesestörungen, Programmstörungen, eines durch Belastung induzierten Leckstroms oder dergleichen driften. Obwohl eine symmetrische glockenförmige Verteilung dargestellt ist, sind verzogene Verteilungen und andere Verteilungen möglich. Über die Zeit können sich die Verteilungen erweitern oder verziehen, wenn Zellen von ihren ursprünglich programmierten Lesespannungspegeln aus driften, und derartige Effekte können über die Zeit mit dem Alter zunehmen.
  • Falls sich die Verteilung über den nächstgelegenen Lesespannungs-Schwellwert 510a–g hinaus erweitert, dann sind einige Zellen in einen benachbarten Zustand hinein gedriftet, was Fehler hervorruft. Um diesen Effekt zu verringern, sind bzw. werden die Zustände L0, L7 durch Sicherheitsbänder 530a–g eines zuvor festgelegten Trennabstands getrennt. Wie oben beschrieben, umfasst ein Sicherheitsband oder Trennabstand einen Bereich einer physikalischen Datencodierungseigenschaft einer Zelle, wie einen Lesespannungspegel oder dergleichen, der Zustände der Zelle trennt. Bei dem veranschaulichten Ausführungsbeispiel werden die Sicherheitsbänder erzeugt, wenn die Zellen programmiert werden, indem überprüft wird, dass jede Zelle mit einem Lesespannungspegel über zumindest einer Überprüfungsspannung 520a–g programmiert ist, die über dem Lesespannungs-Schwellwert Vt 510a–g liegt oder größer als dieser ist, was den unteren Rand des Zustands festlegt. Somit enthält das erste Sicherheitsband 530a bei dem veranschaulichten Ausführungsbeispiel den Spannungsbereich 530a zwischen dem Lesespannungs-Schwellwert 510a und dem Überprüfungs-Spannungsschwellwert 520a; das zweite Sicherheitsband ist der Spannungsbereich 530b zwischen dem Lesespannungs-Schwellwert 510b und dem Überprüfungs-Spannungsschwellwert 520b, und so weiter.
  • Bei verschiedenen Ausführungsbeispielen können die Zustände unterschiedliche Abstände von benachbarten Zuständen aufweisen, und die Sicherheitsbänder 530a–g können unterschiedliche Breiten oder Größen aufweisen. Bei dem veranschaulichten Ausführungsbeispiel ist die Trennung 530a zwischen den Zuständen L0 und L1 beispielsweise größer als die Trennung 530b–g zwischen anderen benachbarten Zuständen, und das Sicherheitsband 530a zwischen L0 und L1 ist entsprechend breiter. Außerdem liegen die Lesespannungs-Schwellwerte 510b–g bei dem veranschaulichten Ausführungsbeispiel in der Mitte zwischen den wahrscheinlichsten Spannungen für benachbarte Zustände; bei einem anderen Ausführungsbeispiel können die Lesespannungs-Schwellwerte 510 jedoch niedriger sein und dichter bei dem Rand der Verteilung von Zellen für die unteren Zustände liegen, was die Sicherheitsbänder ausweitet und die Trennabstände vergrößert. Andere Anordnungen von Zuständen, Sicherheitsbändern 530a–g, Lesespannungs-Schwellwerten 510a–g und Überprüfungs-Spannungsschwellwerten 520a–g sind möglich und können durch das Lesespannungsmodul 312 gemanagt und eingestellt werden, um die Trennabstände für einen Zellmodus bei verringertem Pegel zu vergrößern.
  • 9B veranschaulicht eine Tabelle 550, die ein Beispiel der Codierung für die Zustände L0–L7 von 11A zeigt. Da jede Zelle bei dem veranschaulichten Ausführungsbeispiel sich in einem von acht unterschiedlichen Zuständen befinden kann, codiert jede Zelle drei verschiedene Bits. Das erste Bit wird als das höchstwertige Bit ("MSB") bezeichnet, das zweite Bit wird als das Bit mittlerer bzw. zentraler Wertigkeit ("CSB") bezeichnet und das dritte Bit wird als das niederwertigste Bit ("LSB") bezeichnet. Bei dem veranschaulichten Ausführungsbeispiel ist die Codierung eine Gray-Code-Codierung, bei der sich lediglich ein Bit zwischen benachbarten Zuständen ändert. Bei anderen Ausführungsbeispielen können andere Codierungen angewandt sein.
  • Bei einem Ausführungsbeispiel kann das Zuverlässigkeits-Niveau für ein Bit einer Zelle auf einer Anzahl von Übergängen für das Bit zwischen benachbarten Zuständen in einer Codierung der Zelle basiert sein. Ein Übergang 552 für ein Bit tritt zwischen benachbarten Zuständen auf, falls der Wert des Bits sich zwischen jenen Zuständen ändert. Aus der veranschaulichten Codierung kann ersehen werden, dass das LSB-Bit einen Übergang 552 zwischen den Zuständen L3 und L4 aufweist. Das CSB-Bit weist zwei Übergänge 552 zwischen den Zuständen L1 und L2 und zwischen den Zuständen L5 und L6 auf, und das MSB-Bit weist vier Übergänge 552 auf. Da bei gewissen Ausführungsbeispielen die meisten Fehler zwischen benachbarten Zuständen auftreten, erfährt ein Bit ein höheres Fehlerrisiko in Zuständen nahe eines Übergangs 552 für das betreffende Bit. Da das LSB-Bit bei dem veranschaulichten Ausführungsbeispiel einen Übergang 552 aufweist, liefert das LSB-Bit somit ein Zuverlässigkeits-Niveau, welches höher ist als jenes, welches durch das CSB-Bit und das MSB-Bit bereitgestellt wird. Das CSB-Bit mit zwei Übergängen 552 bei dem veranschaulichten Ausführungsbeispiel liefert ein Zuverlässigkeits-Niveau zwischen den Zuverlässigkeits-Niveaus, welche durch das LSB-Bit und das MSB-Bit bereitgestellt werden. Das MSB-Bit mit vier Übergängen 552 liefert bei dem veranschaulichten Ausführungsbeispiel ein niedrigeres Zuverlässigkeits-Niveau als jene, die durch das LSB-Bit und das CSB-Bit bereitgestellt werden.
  • Bei einem anderen Ausführungsbeispiel kann das Zuverlässigkeits-Niveau für ein Bit einer Zelle auf einer Größe eines Sicherheitsbandes 530a–g oder einem Trennabstand zwischen benachbarten Zuständen, wie den Zuständen mit einem Übergang 552 für das Bit bei einer Codierung der Zelle basiert und/oder damit korreliert sein. Das Zuverlässigkeits-Niveau für das LSB-Bit kann bei dem veranschaulichten Ausführungsbeispiel beispielsweise durch Erweitern des Sicherheitsbandes 530d an dem Übergang 552 zwischen den Zuständen L3 und L4 erhöht sein. Das Erweitern des Sicherheitsbandes an einem Übergang 552 kann ein Verschieben der Zustände und ein Einengen von anderen Sicherheitsbändern, ein Verschmelzen von Zuständen, Maskieren von Zuständen, ein Annullieren von Zuständen oder dergleichen einschließen und somit auch die Zuverlässigkeits-Niveaus von anderen Bits, wie der MSB- und CSB-Bits beeinflussen.
  • 10 veranschaulicht ein Ausführungsbeispiel von Grenz-Schwellwerten 662a–g für einen Satz von Dreifachpegel-Speicherzellen, wie MLC-NAND-Flash-Speicherzellen, TLC-NAND-Flash-Speicherzellen, oder dergleichen mit einem Beispiel eines Codierungs- oder Programmierungsmodells. Jegliche dem dargestellten Codierungsmodul innewohnende Beschränkungen gelten nicht notwendigerweise für alle anderen Codierungsmodelle, und die vorliegende Offenbarung sollte nicht dahingehend ausgelegt werden, jegliche derartige Beschränkungen als innewohnend zu enthalten. Die Aufenthaltsorte oder Programmzustände bei dem veranschaulichten Ausführungsbeispiel werden unter Verwendung eines Grey-Code-Codierungsmodells codiert, bei dem Binärwerte für benachbarte Zustände sich durch ein einziges Bit in der Codierung unterscheiden. Die veranschaulichte Codierung von 10 kann ein Ausführungsbeispiel von Programmierungszuständen sein, die zur Programmierung der unteren/LSB-, mittleren/CSB- und oberen/MSB-Seiten unter Heranziehung der Codierung 550 und Zustände 500 verwendet werden, wie dies oben unter Bezugnahme auf 9A und 9B beschrieben ist.
  • Bei dem veranschaulichten Ausführungsbeispiel umfasst die Stufe 1 eine Programmoperation für die untere/LSB-Seite, wobei eine binäre 1 für die untere/LSB-Seite die Speicherzelle in den Zustand oder Aufenthaltsort L0 bringt, und eine binäre 0 für die untere/LSB-Seite bringt die Speicherzelle in den Zustand oder Aufenthaltsort L1. Die Stufe 2 umfasst eine Programmoperation für die mittlere/CSB-Seite, wo in Abhängigkeit von dem Wert des unteren/LSB-Bits, welches in der Stufe 1 programmiert ist, und dem Wert des mittleren/CSB-Bits, welches programmiert ist, die Speicherzelle einen von vier möglichen Zuständen oder Aufenthaltsorten haben kann. Die Stufe 3 umfasst eine Programmoperation für die obere/MSB-Seite, die acht mögliche Zustände oder Aufenthaltsorte hat, und zwar in Abhängigkeit von den Werten der unteren/LSB-Seite, die in der Stufe 1 programmiert ist, der mittleren/CSB-Seite, die in der Stufe 2 programmiert ist, und der oberen/MSB-Seite, die in der Stufe 3 programmiert ist.
  • Die Stufen, Zahlen von Zuständen oder Aufenthaltsorten pro Stufe und die zugehörige Codierung können für gewisse Architekturen-Typen, Ausführungen oder Modelle von nichtflüchtigen Speichermedien 122 spezifisch sein. Bei gewissen Ausführungsbeispielen können eine oder mehrere unterschiedliche Architekturen von nichtflüchtigen Speichermedien 122 dieselbe gemeinsame, zuvor festgelegte Codierung anwenden, wie in 12 veranschaulicht (zum Beispiel Gray-Code; L0 = 111, L1 = 011, L2 = 001, L3 = 101, L4 = 100, L5 = 000, L6 = 010, L7 = 110, oder dergleichen). Anstelle der Verarbeitung von zwei Aufenthaltsorten (SLC-Modus) zu vier Aufenthaltsorten (MLC-Modus) zu acht Aufenthaltsorten (TLC-Modus) in aufeinanderfolgenden Stufen, wie veranschaulicht, können andere Architekturen eine erste Stufe mit zwei Aufenthaltsorten verwenden und zu zweiten und dritten Stufen jeweils mit acht Aufenthaltsorten fortschreiten, wobei eine Größe oder Breite der Aufenthaltsorte in der dritten Stufe einfach verengt oder verfeinert ist. Andere Architekturen können acht Aufenthaltsorte in jeder der drei Stufen enthalten oder dergleichen.
  • 11 veranschaulicht ein Ausführungsbeispiel eines Verfahrens 1300 für eine auf einem Chipplättchen gepufferte (ODB) nichtflüchtige Speicherverwaltung. Das Verfahren 1300 beginnt und das Puffermodul 302 speichert bei 1302 Daten in einem ersten Satz von nichtflüchtigen Speicherzellen. Das Datenfaktormodul 322 bestimmt bei 1304 einen oder mehrere Datenfaktoren oder Attribute, die den Daten zugehörig sind. Das Rückkopiermodul 306 bestimmt bei 1306 auf der Grundlage des einen oder der mehreren Datenfaktoren oder Attribute, ob die Daten intern zu einem zweiten Satz von nichtflüchtigen Speicherzellen zu kopieren oder zu verschieben sind. Der zweite Satz von nichtflüchtigen Speicherzellen ist bei einem Ausführungsbeispiel konfiguriert, um mehr Bits pro Zelle zu speichern als der erste Satz von nichtflüchtigen Speicherzellen. Falls das Rückkopiermodul 306 bei 1306 bestimmt, die Daten zu verschieben oder zurückzukopieren, kopiert das Rückkopiermodul 306 bei 1308 die Daten zu dem zweiten Satz von nichtflüchtigen Speicherzellen. Das Verfahren endet bei 1300.
  • 12 veranschaulicht ein weiteres Ausführungsbeispiel eines Verfahrens 1400 für die auf einem Chipplättchen gepufferte (ODB) nichtflüchtige Speicherverwaltung. Das Verfahren beginnt bei 1400, und ein Puffermodul 302 speichert bei 1402 Daten in einem ersten Satz von nichtflüchtigen Speicherzellen. Ein Auffrischmodul 304 bestimmt bei 1404, ob die Daten aufzufrischen sind. Falls das Auffrischmodul 304 bei 1404 auf der Grundlage von einem oder mehreren Datenfaktoren oder Attributen, die den Daten zugehörig sind, bestimmt, die Daten aufzufrischen, decodiert das Auffrischmodul 304 bei 1406 die Daten von dem ersten Satz von nichtflüchtigen Speicherzellen und codiert die Daten bei 1406 zum Kopieren oder Verschieben zu einem zweiten Satz von nichtflüchtigen Speicherzellen neu. Der zweite Satz von nichtflüchtigen Speicherzellen codiert bei einem Ausführungsbeispiel Daten mit mehr Speicherzuständen pro Zelle als der erste Satz von nichtflüchtigen Speicherzellen. Ein Rückkopiermodul 306 kopiert bei 1408 die Daten zu dem bzw. in den zweiten Satz von nichtflüchtigen Speicherzellen, und das Verfahren endet bei 1400.
  • 13 veranschaulicht ein weiteres Ausführungsbeispiel eines Verfahrens 1500 für eine auf einem Chipplättchen gepufferte (ODB) nichtflüchtige Speicherverwaltung. Das Verfahren beginnt bei 1500, und ein Puffermodul 302 puffert bei 1502 Daten in einem ersten Satz von nichtflüchtigen Speicherzellen. Ein Lesespannungsmodul 312 stellt bei 1504 einen oder mehrere Lesespannungs-Schwellwerte für den ersten Satz von nichtflüchtigen Speicherzellen auf der Grundlage von einem oder mehreren Speichermediencharakteristiken ein. Ein Rückkopiermodul 306 kopiert bei 1506 die Daten von dem ersten Satz von nichtflüchtigen Speicherzellen zu einem bzw. in einen zweiten Satz von nichtflüchtigen Speicherzellen unter Heranziehung der bei 1504 eingestellten einen oder mehreren Lesespannungs-Schwellwerte. Der zweite Satz von nichtflüchtigen Speicherzellen ist bei einem Ausführungsbeispiel konfiguriert, um mehr Bits pro Zelle zu speichern als der erste Satz von nichtflüchtigen Speicherzellen.
  • Zusätzliche Beschreibung:
  • Bei einem Ausführungsbeispiel optimiert das Managementmodul 150 die ODB-Programmierungsschritte im TLC-NAND. Bei einem Ausführungsbeispiel kann das Managementmodul 150 optimal bestimmen, ob eine Seite, die von SLC zu TLC in einer NAND-Vorrichtung verschoben wird, hinsichtlich Fehler geprüft/korrigiert werden sollte, bevor sie in der TLC-Seite untergebracht wird. Der Prozess des Decodierens des Codeworts, des Korrigierens jeglicher Fehler und dann des Neucodierens des Codeworts kann als "Codeauffrischen" bezeichnet werden. Mehrere Faktoren können herangezogen werden, um diese Bestimmung vorzunehmen, einschließlich des gegenwärtigen Alters (P/E) des NAND, einer Abtasterrückkopplung, etc. Bei gewissen Ausführungsbeispielen kann es besser sein, wenn der Faktor entweder leicht verfügbar oder schnell und einfach zu messen/detektieren ist.
  • ODB ist ein Programmierungsmodell für TLC. Dieses Modell kann einige der Daten in den NAND-Chips in einem SLC-Block solange puffern, bis die Daten später in den TLC-Block zusammengepresst werden. Die Steuereinrichtung (und der Host) können verantwortlich sein für die Verwaltung der Daten, die sich zwischen dem SLC-Block und dem TLC-Block verschieben.
  • Der Prozess des Zusammenpressens von Seiten von SLC-Blöcken in TLC-Blöcke kann eine "Rückkopier"-Operation umfassen. Der NAND-Hersteller kann empfehlen, dass aus SLC-Blöcken gelesene Blöcke während des Zurückkopierens durch einen Fehlerschutzmechanismus (ECC), eine "Codierungsauffrischung" decodiert und neu codiert werden, um eine hohe Datenzuverlässigkeit zu gewährleisten. Das Managementmodul 150 kann mehrere Varianten aufweisen, die von dem Nichtausführen einer Codierungsauffrischung bis zur Vornahme einer selektiven Codierungsauffrischung bis zu einer gesamten Codierungsauffrischung reichen.
  • Ein "Zurückkopieren" kann nicht abgeschlossen werden, falls der Ziel-TLC-EB nicht brauchbar ist (als schlecht/abgenutzt markiert). Wenn das Managementmodul 150 in einem Flash-Array verwendet wird, kann das Array überdies in Zeilen von n (n = 29 = 28 + 1 Parität) Chipplättchen breite organisiert sein. Die Zeile kann unter Anwendung eines adaptiven Flashbacks verwaltet werden- dies bedeutet, dass dann, wenn EBs in einer Zeile bzw. Reihe ausfallen, anstelle einer Neuabbildung von EBs zur Erhaltung derselben Zeilenbreite die Zeilengröße verkürzt werden kann und eine kürzere Zeile verwendet wird. Um für ein Zurückkopieren zwischen zwei Reihen bzw. Zeilen des Arrays verwendet zu werden, kann folglich bei einem Ausführungsbeispiel die Anzahl von nutzbaren EBs in jeder Zeile zumindest dieselbe sein (mit anderen Worten kann die Zielzeile (TLC-Zeile) so breit wie oder breiter als die Quell-Zeile (SLC-Zeile) sein).
  • Bei gewissen Ausführungsbeispielen kann die Codierungsauffrischung und/oder Abfallsammlung angemessen sein, falls der Ziel-TLC-EB für eine gegebene Spalte des Arrays nicht nutzbar (abgenutzt) ist. Ein "Zurückkopieren" ist eine Operation, die in der Packungsebene für den NAND-Chip sein kann. Falls der Ziel-TLC-EB für eine gegebene Spalte des Arrays nicht nutzbar ist, dann braucht die Rückkopieroperation bei gewissen Ausführungsbeispielen nicht ausgeführt zu werden, da für eine gegebene Packung/ein gegebenes Chipplättchen kein Ziel-TLC-EB verfügbar sein kann. Bei gewissen Ausführungsbeispielen kann die Steuereinrichtung bezüglich der Tatsache alarmiert werden, dass der Ziel-TLC-EB für eine gegebene Spalte des Arrays nicht nutzbar ist, und den Ziel-TLC-EB für die Rückkopieroperation zu einem anderen TLC-EB neu abbilden, der verfügbar ist. (Der benutzte alternative TLC-EB kann aus einem Pool von reservierten TLC-EBs ausgewählt werden, die für diesen Zweck beiseitegelegt sind). Falls der Ziel-TLC-EB für eine gegebene Spalte des Arrays nicht nutzbar ist, dann kann bei einem anderen Ausführungsbeispiel der gesamte LEB aus dem NAND in die Steuereinrichtung gelesen und neu paketiert werden, bevor er in dem TLC-EB gespeichert wird.
  • Ein Array von Zellen kann aus Zeilen von LEBs gebildet sein, die zur selben EB-Adresse in jedem Block über eine Zeile von Blöcken abbilden. Diese Abbildung kann Rückkopieroperationen schwierig machen, falls der Ziel-TLC-EB nicht nutzbar ist. Um dieses zu lösen, kann die Abbildung von PEBs in LEBs in der Zeile des Arrays durch eine beliebige Zuteilung aufrecht erhalten werden, die nicht auf der physikalischen Position oder Adresse in der Zeile des Arrays basiert. Falls ein LEB 0 zu bzw. in EB1, EBm, EBn, EBo, etc. abgebildet wird, dann kann die Rückkopieroperation durch Neuabbildung von PEBs in anderen Zeilen des Arrays ausgeführt werden.
  • Bei einem Ausführungsbeispiel kann das Managementmodul 150 Daten einer SLC-Seite zu einem der TLC-Puffer senden und die Daten für eine "Codierungsauffrischung" herausschicken bzw. streamen. Die Verknüpfung bzw. Logik in der Steuereinrichtung/Lese-Pipeline kann bestimmen, ob eine Codierungsauffrischung auszuführen ist oder nicht. Die Bestimmung kann auf der Grundlage von RBER (oder # von Fehlern) und/oder anderen Faktoren vorgenommen werden. Falls eine Codierungsauffrischung angekündigt wird, dann kann die Seite decodiert und zu einem neuen Codewort innerhalb der Steuereinrichtung codiert werden. Die Daten der Seite können bei einem Ausführungsbeispiel in der Steuereinrichtung verbleiben und brauchen nicht zu dem Hauptspeicher über das PCIe-Interface der während der Codierungsauffrischung verschoben zu werden. Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen schnell bestimmen, ob die Auffrischungscodierung vorzunehmen ist oder nicht.
  • Bei einem anderen Ausführungsbeispiel kann das Managementmodul 150 das NAND derart charakterisieren, dass das Managementmodul 150 ein Modell aufweist, welches vorhersagt, wann eine Codierungsauffrischung nützlich sein kann.
  • Bei einem anderen Ausführungsbeispiel umfasst das Managementmodul 150 einen Abtaster, der konfiguriert ist, um Seiten zu markieren oder in sonstiger Weise zu kennzeichnen, die eine Codierungsauffrischung erhalten bzw. nicht erhalten sollten, wenn sie in einer Rückkopieroperation verschoben werden. Bei jedem dieser Ausführungsbeispiele ermöglicht das Flag-Setzen oder Markieren der Seite, dass die Seite direkt zu der Steuereinrichtung für eine Codierungsauffrischung oder ein Verbleiben in dem NAND-Chipplättchen für ein Zurückkopieren zu senden ist anstatt die Daten den langen Pfad herunterzusenden.
  • Bei gewissen Ausführungsbeispielen kann das NAND-Interface einen ausreichend hohen Durchsatz für Auffrischoperationen haben.
  • Eine weitere Operation, die das Managementmodul 150 ausführen kann, ist eine "Kompression" – falls Daten eines Blockes in SLC zu TLC verschoben werden – wobei diese Chance zur Abfallsammlung des Blocks herangezogen wird.
  • Bei einem gewissen Ausführungsbeispiel kann das TLC-NAND verlustbehafteter sein als SLC/MLC, und daher können Daten, die im SLC-NAND gespeichert sind, einer Fehlerprüfung und Neucodierung unterzogen werden, um ein gewünschtes Niveau an Datenzuverlässigkeit aufrecht zu erhalten. Wenn eine SLC-NAND-Seite aus dem SLC-NAND gelesen wird, um zu dem TLC-NAND als Teil einer ODB-Rückkopieroperation verschoben zu werden, dann kann das Managementmodul 150 bei einem Ausführungsbeispiel selektiv entscheiden, für welche SLC-NAND-Seiten die Codierungsauffrischung vorzunehmen ist. Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen sämtliche oder nahezu sämtliche SLC-NAND-Seiten zurückkopieren und später auf der Grundlage von einigen Kriterien eine Codierungsauffrischung an einem Teilsatz vornehmen. Die Kriterien können auf der Grundlage einer Abtastung, einer NAND-Charakterisierung (Modelle), von Tprog für das Zurückkopieren, der Nutzungs- oder Abnutzungsmessung, von Fehlern, die während des Rückkopierens berichtet sind, oder dergleichen berechnet sein.
  • Bei gewissen Ausführungsbeispielen kann das Managementmodul 150 Metadaten sammeln, um eine Entscheidung darüber zu treffen, ob eine Auffrischung in einer Weise vorzunehmen ist oder nicht, die einer oder mehreren Leistungsmetriken genügt. Bei einem Ausführungsbeispiel kann das Managementmodul 150 gerade einige wenige Seiten lesen und den RBER für diese berechnen. Das Managementmodul 150 braucht bei einem weiteren Ausführungsbeispiel nicht irgendwelche Daten zu sammeln, sondern es kann Daten wirksam einsetzen, die für andere Zwecke aufrecht erhalten sind, wie eine Programm- bzw. Programmierungs-/Löschzählung, RBER, UBER, eine Verweilzeit oder dergleichen. Bei einem anderen Ausführungsbeispiel braucht das Managementmodul 150 nicht irgendwelche Daten zu sammeln, und es kann die Entscheidung auf der Grundlage einer Rückkopplung von den NAND-Vorrichtungen triggern – (zum Beispiel längeres Tprog oder Rückkopieren, Fehler oder Warnnachrichten von dem NAND-Chip oder dergleichen).
  • Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen ein Ziel aus einer Vielzahl von Zielen für aufgefrischte Daten auf eine Entscheidung hin auswählen, eine Codierungsauffrischung vorzunehmen, wie das ursprüngliche TLC-NAND, ein alternatives TLC-NAND, einen Log-Anhängepunkt oder dergleichen. Falls die Ziel-TLC-Seite schlecht, zu abgenutzt oder in sonstiger Weise nicht nutzbar ist (Belegung einer anderen Operation), dann kann das Managementmodul 150 bei einem Ausführungsbeispiel die SLC-Seite zu dem Log-Anhängepunkt umleiten. Falls die SLC-Seite sich in einer niedrigen Nachfrage befindet (wenige Lese-/Schreibvorgänge) und ein niedriger Leistungsdruck vorhanden ist, dann kann das Managementmodul 150 bei einem Ausführungsbeispiel ungültige Blöcke (zum Beispiel Abfall) aus der SLC-Seite entfernen und die SLC-Seite zu dem Log-Anhängepunkt umleiten.
  • Das Managementmodul 150 kann bei einem Ausführungsbeispiel Rückkopieroperationen zwischen SLC-EBs und TLC-EBs selektiv ausführen, so dass nicht sämtliche Daten zu den TLC-EBs verschoben werden. Das Zurücklassen von einigen der Daten in den SLC-EBs kann der Vorrichtung ermöglichen, gewisse QOS-Anforderungen zu erzielen. Das Managementmodul 150 entscheidet bei gewissen Ausführungsbeispielen selektiv auf der Grundlage von Faktoren, die zur Entscheidung berücksichtigt werden können (zum Beispiel Schreibhäufigkeit, QOS oder dergleichen), ob Rückkopieroperationen auszuführen sind.
  • Bei gewissen Ausführungsbeispielen können Lesevorgänge in TLC länger dauern als in SLC oder MLC. NAND-Hersteller können zum Teil auf Grund des Verlasses des NAND-Teiles auf Wortleitungsstörungen hin vorschlagen, dass WLn nicht zu lesen ist, bis WLn+1 programmiert ist. Das Managementmodul 150 liest bei einem Ausführungsbeispiel WLn, bevor WLn + 1 programmiert ist, falls irgendwelche Fehler untergebracht, korrigiert oder dergleichen werden können. Ist man imstande, WLn vor WLn + 1 zu lesen, so kann bei gewissen Ausführungsbeispielen die Leistung gesteigert werden, indem die Daten früher zugreifbar gemacht werden.
  • Das Managementmodul 150 kann bei einem Ausführungsbeispiel dann, wenn eine Rückkopieroperation ausgeführt wird, einen Datenauffrisch-Overhead durch Verwendung eines Lesespannungs-Schwellwertmanagement-(VTM)-Modells für SLC-Löschblöcke (EBs) vermeiden. Bei gewissen Ausführungsbeispielen kann das Managementmodul 150 ein VTM-Modell auf die Quell-SLC-EBs für die Rückkopieroperation anwenden, und die SLC-EB-Daten können zu dem TLC-EB ohne Decodierung, Korrektur und Neucodierung gelangen. Die Daten können mit den VTM-Einstellungen aus den Zellen in den NAND-Puffer gelesen und dann zu dem TLC-EB verschoben werden. Das VTM-Modell kann einige wenige SLC-EBs zur Auffrischung weiterleiten oder anzeigen. Das VTM-Modul wird bei einem Ausführungsbeispiel gerade während der Rückkopieroperation (zum Beispiel dem SLC-EB-Lesen) angewandt. Normale Lesevorgänge nutzen bei einem Ausführungsbeispiel nicht das SLC-VTM-Modell. Zusätzlich kann das VTM-Modell bei gewissen Ausführungsbeispielen gerade auf SLC-EBs angewandt werden, die eine gewisse Abnutzungscharakteristik aufweisen.
  • Das Managementmodul 150 benutzt bei einem Ausführungsbeispiel eine VTM-Tabelle mit dem SLC-EB zur Erleichterung des Rückkopierens. Bei gewissen Ausführungsbeispielen kann das SLC-NAND als robust genug angenommen werden, um ohne VTM zu arbeiten. Bei gewissen Ausführungsbeispielen kann das Managementmodul 150 anstatt des Auffrischens von SLC-EBs eine VTM-Einstellung zu der Zeit anwenden, zu der die SLC-EBs gelesen werden, so dass ein Auffrischen vermieden ist. Die Daten können in der Packung bleiben und verschieben sich von den Zellen zu den internen Seitenpuffern und dann zu dem TLC-Ziel-EB. Bei einem Ausführungsbeispiel können die SLC-EBs noch durch einen Scanner zum Auffrischen markiert werden, falls der Scanner bestimmt, dass ein Auffrischen ausgeführt werden sollte. Das Managementmodul 150 kann markierte SLC-EBs während der Rückkopieroperation detektieren. Bei einem Ausführungsbeispiel kann eine VTM-Einstellung bei SLC-EBs gerade für Rückkopieroperationen herangezogen werden.
  • Bei einem Ausführungsbeispiel kann das Managementmodul 150 die Anwendung der ODB-Programmierungsschritte im TLC-NAND optimieren. Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen SLC-Blöcke in Bezug auf TLC-Blöcke optimal zuordnen, um die Betriebs- bzw. Lebensdauer des NAND zu maximieren. Das Managementmodul 150 kann bei einem Ausführungsbeispiel EBs als SLC und andere als TLC zuvor zuordnen und die Zuordnung für die Betriebsdauer des EB beibehalten. Bei einem weiteren Ausführungsbeispiel kann das Managementmodul 150 die Modus-Zuordnung über eine Betriebsdauer des EB ändern.
  • ODB ist ein Programmierungsmodell für TLC. Dieses Modell kann bei gewissen Ausführungsbeispielen einige der Daten in den NAND-Chips in einem SLC-Block solange puffern, bis die Daten später in dem TLC-Block verdichtet werden können. Die Steuereinrichtung (zum Beispiel das Managementmodul 150) kann verantwortlich sein für die Verwaltung der Daten, die sich zwischen dem SLC-Block und dem TLC-Block verschieben, und sie kann gewisse Optimierungen einführen.
  • Die Steuereinrichtung kann bei einem Ausführungsbeispiel festlegen, welche Blöcke SLC sind und welche TLC sind. Das NAND kann bei gewissen Ausführungsbeispielen gewisse Einschränkungen dafür auferlegen, wann ein Block (EB) im SLC-Modus oder im TLC-Modus sein kann. Ein Ausführungsbeispiel kann nach einer Löschoperation einen Block nach einer Löschoperation in den SLC-, MLC- und/oder TLC-Modus unterbringen. Bei gewissen Ausführungsbeispielen bleibt für einige NAND-Hersteller oder dergleichen der Modus, nachdem er geändert ist, solange unverändert, bis er wieder unter Verwendung eines Merkmaleinstell-Befehls oder dergleichen geändert wird. Bei anderen Ausführungsbeispielen ändert sich für andere NAND-Hersteller oder dergleichen der Modus gerade für die gegenwärtige Operation und kehrt dann zu einem Voreinstellungsmodus zurück.
  • Bei einem Ausführungsbeispiel kann das Managementmodul 150 die SLC-/TLC-Blockzuordnungen derart arrangieren, dass die sich die SLC-Blöcke und die TLC-Blöcke alle zu oder um im Wesentlichen denselben Meilenstein abnutzen. Nach einem vorgehenden Zuteilungs-Szenario kann bei einem Ausführungsbeispiel das Managementmodul ein optimales Verhältnis bestimmen. Bei einem Ausführungsbeispiel kann ein Hersteller beispielsweise ein Verhältnis für SLC/TLC festlegen, bei dem SLC 1,2% der Gesamtkapazität ist und der Rest TLC ist. Durch Vorbelegung kann ein Hersteller bei einem Ausführungsbeispiel die Seiten in ihren SLC/TLC-Moden für die Betriebsdauer der Vorrichtung halten.
  • Bei einem Ausführungsbeispiel schaltet das Managementmodul 150 dynamisch einen Blockmodus für einen oder mehrere Löschblöcke. Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen die TLC- und SLC-Abnutzung ordentlich und/oder gleichmäßig verteilen. Das Managementmodul 150 kann bestimmen, wann von SLC zu TLC zu SLC oder dergleichen umgeschaltet wird.
  • Bei gewissen Ausführungsbeispielen kann das Managementmodul 150 RBER-Statistiken für jeden EB behalten, die gemessen wurde, wenn zuletzt in einem TLC-Modus oder dergleichen abgetastet wurde, und es kann die verlustreichsten EBs dem SLC-Pufferdienst zuweisen. TLC-Blöcke können bei einem Ausführungsbeispiel solange genutzt werden, bis ihre Zuverlässigkeit unter einem Schwellwert oder dergleichen fällt; dann können sie zu SLC-Blöcken degradiert werden. Die TLC-Blöcke können zuerst zu MLC-Blöcken und dann zu SLC-Blöcken degradiert werden, sie können direkt zu SLC oder dergleichen übergehen. Das Managementmodul 150 kann bei einem Ausführungsbeispiel eine Zuverlässigkeit überwachen, wenn ein Abtaster bzw. Scanner den EB-Block zu einer anderen Zeit überprüft, zu der eine Leseoperation an dem betreffenden EB-Block oder dergleichen ausgeführt wird.
  • Bei einem anderen Ausführungsbeispiel kann das Managementmodul 150 das Befinden des EB durch Überprüfen des t-Löschens für den EB überwachen. t-Löschen geht bei gewissen Ausführungsbeispielen hoch, wenn sich der EB abnutzt. t-Löschen kann bei einem Ausführungsbeispiel zur Zeit eines Glättens bzw. einer Pflege oder Abfallsammlung leicht zu überwachen und zu detektieren sein.
  • NAND-Teile können bei gewissen Ausführungsbeispielen gewisse EBs als SLC eingerichtet und andere EBs als TLC eingerichtet haben, wobei der Prozentsatz von SLC zu TLC durch den Hersteller oder dergleichen festgelegt ist. Diese Einstellungen können für die Lebens- bzw. Betriebsdauer des NAND festliegen. Derartige festliegende und starre Zuordnungen und Anwendungen können bei einem Ausführungsbeispiel durch den Hersteller für sämtliche Kunden generalisiert sein und sie brauchen nicht die beste Lösung für gewisse Arbeitsbelastungen zu sein.
  • Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen Zugriff auf eine dynamische Änderung der Konfigurationen der EBs von TLC zu SLC oder von SLC zu TLC oder dergleichen unter Änderung der SLC-/TLC-Zuordnungen haben, um die Lebensdauer und Nutzung des NAND zu maximieren. Durch Zugriff auf die Knöpfe kann das Managementmodul 150 die TLC-EBs zu MLC- oder SLC-EBs auf der Grundlage von Zuverlässigkeits- und/oder Leistungsmetriken ändern. Auf der Grundlage von Arbeitsbelastungscharakteristiken, wie QOS, kann das Managementmodul 150 bei einem Ausführungsbeispiel mehr EBs zu SLC zuordnen, wenn es in der Arbeitsbelastung mehr Blöcke hohen Wertes gibt, und es kann veranlassen, dass ein Rückkopieren nicht vorgenommen wird, abgebrochen wird, falls es in Bearbeitung ist oder dergleichen. Auf der Grundlage von Benutzerkonfigurationseinstellungen kann das Managementmodul 150 bei einem weiteren Ausführungsbeispiel mehr EBs zu TLC (zum Beispiel erwünschte höhere Dichte) zuordnen, wenn angemessene Nutzereinstellungen festgelegt sind oder dergleichen.
  • Das Managementmodul 150 bildet bei einem Ausführungsbeispiel LBAs für Datenblöcke auf einen oder zwei potentielle physikalische Plätze für die Daten im NAND optimal ab. Ein TLC-NAND, welches eine auf dem Chipplättchen eine Pufferungs-Programmierung für einen Übergang von Daten von SLC zu TLC-EB programmiert, kann bei gewissen Ausführungsbeispielen dieselben Daten an zwei verschiedenen Plätzen für eine begrenzte Zeitspanne aufweisen. das Managementmodul 150 kann bei einem Ausführungsbeispiel bestimmen, wo die LBA der Vorwärts-Abbildung (zum Beispiel eine logische-zu-physikalische Abbildungsstruktur) mit seinen LBAs hinzeigen sollte und wie die betreffende Zieladresse verwaltet wird. Das Managementmodul 150 kann einen bearbeiteten Prozess zur Aufrechterhaltung der physikalischen Zieladresse, der Reihenfolge von Operationen zur Aktualisierung der Vorwärts-Abbildung und/oder Wiedergewinnungsschritte nutzen, sollte ein Stromabschaltungsereignis auftreten.
  • ODB ist ein Programmierungsmodell für TLC. Dieses Modell kann einige der Daten in den NAND-Chips in einem SLC-Block solange puffern, bis die Daten später in den TLC-Block verdichtet werden können. Die Steuereinrichtung (zum Beispiel das Managementmodul 150) kann verantwortlich sein für die Verwaltung von Daten, die sich zwischen dem SLC-Block und dem TLC-Block verschieben, und es kann gewisse Optimierungen einführen.
  • Die Steuereinrichtung/der Treiber (zum Beispiel das Managementmodul 150) kann eine Vorwärts-Abbildung (zum Beispiel eine logische-zu-physikalische Abbildungsstruktur) zwischen LBAs und Ziel-PAs in dem NAND beibehalten. In einer TLC-Vorrichtung, in der ODB verwendet wird, kann die physikalische Adresse sich ändern, wenn sich Daten zwischen SLC- und TLC-Blöcken unter Anwendung einer Rückkopieroperation verschieben. Das Managementmodul 150 kann die physikalische Adressenänderung managen. Bei gewissen Ausführungsbeispielen kann das Managementmodul 150 Stromabschaltungs-Szenarien abwickeln.
  • Eine Rückkopieroperation schließt bei einem Ausführungsbeispiel den Host mit ein. Der Host kann die physikalische Zieladresse bestimmen, die eine TLC-Seite des NAND sein kann. Während des Rückkopierens können bei gewissen Ausführungsbeispielen mehrere Kopien einer Seite existieren. Bei einem Ausführungsbeispiel kann die physikalische Adresse für die Vorwärtsabbildung anfänglich als die physikalische Adresse der SLC-Seite festgelegt sein. Während das Rückkopieren in Bearbeitung ist, kann die physikalische Adresse in der Vorwärtsabbildung die SLC-Seite bleiben, bis das Managementmodul 150 bestätigt, dass die Daten aus der TLC-Seite lesbar sind. Dies kann bei verschiedenen Ausführungsbeispielen durch einen Abschluss-Anzeiger von dem NAND, einem Testlesen der TLC-Seite oder dergleichen angezeigt werden.
  • Bei einem Ausführungsbeispiel kann das Managementmodul 150 den LRB-Baum (zum Beispiel eine logische-zu-physikalische Abbildungsstruktur) aktualisieren, gerade nachdem TLC-Seiten gelesen sein können und bevor ein SLC-Löschen vorgesehen ist. Bei einem weiteren Ausführungsbeispiel kann das Managementmodul 150 den LRB-Baum aktualisieren, gerade nachdem der gesamte TLC-Löschblock erfolgreich programmiert ist und bevor der Quell-Löschblock gelöscht wird. Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen teilweise gefüllte Löschblöcke verhindern oder eliminieren, indem ein Quell-Löschblock solange nicht gelöscht wird, bis der Ziel-Löschblock vollständig gefüllt ist (die Leer- und Füllraten können auf Grund einer Entwertung versetzt sein).
  • Da bei gewissen Ausführungsbeispielen das Rückkopieren ein erweiterter Prozess sein kann, kann das Managementmodul 150 den Zugriff auf Daten in Seiten optimieren, die in eine Rückkopieroperation einbezogen sind. Falls beispielsweise bei einem Ausführungsbeispiel auf Daten in einer Seite mit hoher Häufigkeit zugegriffen wird, können die Rückkopieroperation abgebrochen und die Daten in dem SLC belassen werden, was schnellere Lesevorgänge, einen wirksamen Einsatz einer Cache-Räumungsstrategie oder dergleichen bereitstellen kann. Falls bei einem anderen Ausführungsbeispiel auf Daten in einer Seite mit hoher Häufigkeit zugegriffen wird, kann die Rückkopieroperation fortgesetzt werden, jedoch so modifiziert sein, dass eine Kopie der Daten in dem SLC bleibt, was schnellere Lesevorgänge oder dergleichen bereitstellen kann, und die Daten können aus dem SLC gelesen werden, bis die hohe Häufigkeit von Zugriffen sinkt. Zusätzlich können bei einem Ausführungsbeispiel Daten in einem SLC PEB mit einer besonderen Dienstqualitäts-(QoS)-Markierung gekennzeichnet sein. Falls die SLC-PEB-Daten von hohem QoS-Wert sind, brauchen bei gewissen Ausführungsbeispielen die Daten entweder a) nicht zu TLC verschoben zu werden oder b) sie werden zu TLC verschoben, jedoch auch in SLC-PEB, um eine höhere Leseleistung oder dergleichen bereitzustellen, oder c) andere Techniken.
  • Bei einem Ausführungsbeispiel braucht das Managementmodul 150 nicht Rückkopieroperationen auf dem Wortleitungspegel zu durchschreiten, wenn berücksichtigt wird, wann SLC-Pakete als ungültig zu markieren sind. Vielmehr braucht das Managementmodul 150 bei gewissen Ausführungsbeispielen SLC-Pakete solange nicht als ungültig markieren, bis der gesamte Löschblock zu TLC kopiert worden ist. Das Managementmodul 150 braucht bei einem weiteren Ausführungsbeispiel SLC-Pakete solange nicht als ungültig zu markieren, bis unmittelbar vor dem Löschen des SLC-EB durch das Managementmodul 150. Das Managementmodul 150 kann bei einem Ausführungsbeispiel zwei unterschiedliche Paketplätze bereithalten, um diese Überlappung zu managen, die die Lese-Latenzleistung nutzen kann.
  • Wie oben beschrieben, braucht ein "Rückkopieren" bei gewissen Ausführungsbeispielen nicht abgeschlossen zu werden, falls der Ziel-TLC-Löschblock nicht brauchbar ist (z.B. als schlecht/abgenutzt markiert). Bei einem Ausführungsbeispiel kann das Managementmodul 150 ein Flash-Array verwenden, welches in Zeilen von n (n = 29 = 28 + 1 Parität) Chipplättchenbreite oder dergleichen organisiert ist. Die Zeile kann unter Verwendung eines adaptiven Flashbacks oder dergleichen verwaltet werden. Bei gewissen Ausführungsbeispielen, wie dem Ausfall von Löschblöcken in einer Zeile, können anstelle einer Neuabbildung von Löschblöcken zur Beibehaltung derselben Zeilenbreite die Zeilenbreite verkürzt und eine kürzere Zeile verwendet werden. Um ein Zurückkopieren zwischen zwei Zeilen bzw. Reihen des Arrays zu verwenden, kann folglich bei einem Ausführungsbeispiel die Anzahl von brauchbaren EBs in jeder Zeile bzw. Reihe zumindest dieselbe sein. (Mit anderen Worten kann die Zielreihe (TLC-Reihe) bei gewissen Ausführungsbeispielen so breit wie oder breiter als die Quell-Reihe (SLC-Reihe) sein.
  • Der Prozess des Decodierens des Codeworts, des Korrigierens jeglicher Fehler und dann des Neucodierens des Codeworts kann als "Codierungsauffrischung" bezeichnet werden. Bei gewissen Ausführungsbeispielen können die Codierungsauffrischung und/oder Abfallsammlung angemessen sein, falls der Ziel-TLC-EB für eine gegebene Spalte des Arrays nicht brauchbar (abgenutzt) ist. Ein "Rückkopieren" ist eine Operation, die in der Packungsebene für den NAND-Chip sein kann. Falls der Ziel-TLC-EB für eine gegebene Spalte des Arrays nicht brauchbar ist, braucht bei einem Ausführungsbeispiel die Rückkopieroperation nicht ausgeführt zu werden, da für eine gegebene Packung/ein gegebenes Chipplättchen kein Ziel-TLC-EB verfügbar sein kann.
  • Bei gewissen Ausführungsbeispielen kann die Steuereinrichtung (z.B. das Managementmodul 150) bezüglich der Tatsache gewarnt werden, dass der Ziel-TLC-EB für eine gegebene Spalte des Arrays nicht verfügbar ist, und den Ziel-TLC-EB für die Rückkopieroperation zu einem anderen TLC-EB, der verfügbar ist, neu abbilden. (Der verwendete alternative TLC-EB kann bei einem Ausführungsbeispiel aus einem Pool von für diesen Zweck beiseite gelegten reservierten TLC-EBs ausgewählt werden). Falls der Ziel-TLC-EB für eine gegebene Spalte des Arrays nicht brauchbar ist, dann kann bei einem weiteren Ausführungsbeispiel der gesamte LEB aus dem NAND in die Steuereinrichtung gelesen und neu paketiert und potentiell an einen neuen Platz in dem Log untergebracht werden, bevor er in dem Ziel-TLC-EB gespeichert wird.
  • Bei einem Ausführungsbeispiel kann der TLC mit der Rückkopierprogrammierung eine Situation mit sich bringen, in der Daten auf einer NAND-Seite an mehreren Stellen während einer Zeitspanne existieren. Die Quell-SLC-Seiten können bei gewissen Ausführungsbeispielen von demselben EB her, von unterschiedlichen EBs oder dergleichen kommen. Für eine Rückkopierprozedur kann das Managementmodul 150 bei einem Ausführungsbeispiel drei Seiten von einem oder mehreren verschiedenen EBs, von derselben EB oder dergleichen verwenden. Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen bestimmen, wann ein Rückkopieren initiiert werden sollte und wann ein Rückkopieren verschoben werden sollte.
  • Wenn Datenblöcke bei einem Ausführungsbeispiel mit hohem QOS markiert sind, kann das Managementmodul 150 das Rückkopieren verschieben und die Daten in SLC belassen. Falls Datenblöcke eine hohe Zugriffsrate (Lesen und/oder Schreiben) haben, kann das Managementmodul 150 bei einem weiteren Ausführungsbeispiel das Rückkopieren verschieben und die Daten in die SLC belassen (z.B. unter Verwendung von SLC als Cache oder dergleichen). Falls ein hoher Kapazitätsdruck vorliegt und Datenblöcke für eine Spezialbehandlung oder dergleichen nicht markiert sind, kann ein Rückkopieren bei gewissen Ausführungsbeispielen initiiert werden.
  • Das Managementmodul 150 kann bei einem Ausführungsbeispiel bestimmen, wann die Abbildung zwischen LBA und einer physikalischen Adressen (PA) aktualisiert wird. Bei gewissen Ausführungsbeispielen kann das Managementmodul 150 die Vorwärtsabbildung aktualisieren, nachdem die Daten in dem SLC-EB als gespeichert überprüft sind. Dass sie bei einem Ausführungsbeispiel überprüft sind, kann bedeuten, dass die Daten zurückgelesen (z.B. ein durch das System initiiertes Lesen, ein durch eine Scanner erfolgtes verschobenes Lesen oder dergleichen) und genau bestätigt sind. Das Managementmodul 150 kann bei einem weiteren Ausführungsbeispiel die Vorwärtsabbildung aktualisieren, nachdem die Daten in dem SLC-EB in TLC ohne Überprüfung oder dergleichen gespeichert sind. Bei einem anderen Ausführungsbeispiel kann das Managementmodul 150 die Vorwärtsabbildung mit einer früheren PA (primär) und einer späteren PA (sekundär) vor der Rückkopieroperation aktualisieren und die frühere PA entfernen, nachdem die Daten in dem TLC-EB sind, oder dergleichen. Die primäre PA kann bei einem Ausführungsbeispiel die SLC sein, da sie schnellere Lese- und Schreibvorgänge aufweisen kann, oder dergleichen.
  • Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen bestimmen, wann die alte SLC-Seite zurückgewonnen werden kann. Bei einem Ausführungsbeispiel kann das Managementmodul 150 die SLC-Seite zurückgewinnen, nachdem die Daten in dem SLC-EB als gespeichert überprüft (z.B. zurückgelesen und genau bestätigt) sind. Bei gewissen Ausführungsbeispielen kann das Managementmodul 150 Daten auf einen von einem Benutzer initiierten Lesevorgang hin überprüfen. Das Managementmodul 150 kann bei einem Ausführungsbeispiel die SLC-Seite wiedergewinnen, nachdem eine Zugriffsrate bezüglich der Daten in dem SLC-EB unter einem Schwellwert liegt, Daten unter Verwendung eines SLC-EB oder dergleichen zwischenspeichern. Das Managementmodul 150 kann bei einem anderen Ausführungsbeispiel die SLC-Seite auf einen Speicherkapazitätsdruck hin zurückgewinnen.
  • Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen eine bevorzugte Reihenfolge von Operationen anwenden, um Aspekte zu lindern, wenn eine Stromabschaltung ein TLC-Rückkopieren unterbricht. Nachdem Daten in der TLC-Seite als sicher gespeichert bestätigt sind, können die Daten bei einem Ausführungsbeispiel stromabschaltungssicher sein. Das Managementmodul 150 kann bei einem weiteren Ausführungsbeispiel a) ein Rückkopieren initiieren, b) einen Rückkopiererfolg bestätigen, c) eine Vorwärtsabbildung mit neuer Adresse aktualisieren und/oder d) eine andere Technik nutzen. Bei einem gewissen Ausführungsbeispiel kann das Managementmodul 150 das Aktualisieren der Vorwärtsabbildung und die Rückgewinnung der SLC-Seite solange verschieben, bis Speicherkapazitätsdruck oder dergleichen vorhanden ist. Aus Leistungsgründen kann die SLC-Seite bei einem Ausführungsbeispiel dazu verwendet werden, Lesevorgänge zu bedienen.
  • Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen die Verwendung des TLC-NAND während eines Stromabschaltungsereignisses optimieren. Bei einem weiteren Ausführungsbeispiel kann das Managementmodul 150 LBAs für Datenblöcke auf einen oder zwei potentielle physikalische Plätze für die Daten im NAND im Falle einer Stromabschaltung optimal abbilden. Das TLC-NAND, welches eine auf dem Chipplättchen erfolgende Pufferungsprogrammierung für die Übertragung von Daten vom SLC- zum TLC-EB vornimmt, kann bei gewissen Ausführungsbeispielen dieselben Daten in zwei Typen von Blöcken während einer begrenzten Zeitspanne aufweisen. Im Falle einer Stromabschaltung kann es eine Chance dafür geben, dass ein physikalischer TLC-Löschblock (PEB) noch nicht vollständig gefüllt worden ist (dass z.B. jede Seite des PEB noch nicht programmiert worden ist), was als unvollständiger TLC-PEB bezeichnet werden kann. Das Managementmodul 150 kann konfiguriert sein, um diesen unvollständigen TLC-PEB zu behandeln.
  • ODB ist ein Programmierungsmodell für TLC. Dieses Modell kann einige der Daten in den NAND-Chips in einen SLC-Block puffern, bis die Daten später in einen TLC-Block oder dergleichen gepresst werden. Die Steuereinrichtung (und der Host) können verantwortlich sein für die Verwaltung der Daten, die zwischen dem SLC-Block und dem TLC-Block verschoben werden. Die Steuereinrichtung/der Treiber können bei gewissen Ausführungsbeispielen eine Vorwärtsabbildung zwischen LBAs und Ziel-PAs des NAND beibehalten. In einer TLC-Vorrichtung, in der ODB verwendet wird, kann die PA sich ändern, wenn sich Daten unter Verwendung der Rückkopieroperation zwischen SLC- und TLC-Blöcken verschieben.
  • Das Managementmodul 150 kann bei einem Ausführungsbeispiel diese physikalische Adressenänderung managen, sie kann teilweise programmierte TLC-EBs oder dergleichen managen. Die Rückkopieroperation bindet bei gewissen Ausführungsbeispielen den Host ein. Der Host bestimmt bei einem Ausführungsbeispiel die Ziel-PA, die eine TLC-Seite in dem NAND sein kann.
  • Während eines Rückkopierens können mehrere Kopien einer Seite existieren. Die PA für die Vorwärtsabbildung kann bei einem Ausführungsbeispiel zunächst als die PA der SLC-Seite festgelegt sein. Während das Rückkopieren in Bearbeitung ist, kann die PA in der Vorwärtsabbildung bei gewissen Ausführungsbeispielen die PA für die SLC-Seite solange bleiben, bis das Managementmodul 150 bestätigen kann, dass die Daten von der TLC-Seite lesbar sind. Dies kann durch einen Abschluss-Anzeiger von dem NAND, ein Testlesen der TLC-Seite oder dergleichen angezeigt werden.
  • Um potentielle Probleme zu vermeiden, die eine Stromabschaltung hervorrufen kann, während der ein TLC-PEB durch Rückkopieren programmiert wird, kann das Managementmodul 150 bei einem Ausführungsbeispiel der PA für die Vorwärtsabbildung ermöglichen, die PA der SLC-Seite solange zu bleiben, bis das Managementmodul 150 bestätigten kann, dass die Daten von der TLC-Seite lesbar sind oder dergleichen. Falls eine Stromabschaltung während des Programmierens einer Seite des TLC-PEB auftritt, kann das Managementmodul 150 bei einem Ausführungsbeispiel stattdessen die Daten in den SLC-PEBs (z.B. drei von ihnen) verwenden. Auf eine Erholung von der Stromabschaltung hin kann das Managementmodul 150 bei gewissen Ausführungsbeispielen diesen TLC-EB pflegen.
  • Das Managementmodul 150 braucht bei einem Ausführungsbeispiel gültige Daten von dem TLC-EB während des Pflegens nicht zu sichern, da der/die Quell-SLC-EB(s) noch nicht gepflegt ist/sind. Das Managementmodul 150 kann Lesevorgängen von der/den SLC-EB(s) entsprechen. Bei gewissen Ausführungsbeispielen kann das Managementmodul 150 eine Löschoperation in dem TLC-EB ausführen, nachdem der Strom wieder zurück ist. Bei einem weiteren Ausführungsbeispiel kann das Management 150 den teilweise programmierten TLC-EB geradezu als einen aktiven TLC-EB verwenden oder dergleichen. Der LRB-Baum (z.B. die logische-zu-physikalische Abbildungsstruktur) wird bei gewissen Ausführungsbeispielen auf das Pflegen des TLC-EB hin nicht aktualisiert.
  • Ein TLC mit einer Rückkopierprogrammierung kann bei einem Ausführungsbeispiel ein Potential für teilweise programmierte TLC-EBs zur Zeit einer Stromabschaltung oder dergleichen haben. Das Managementmodul 150 kann bei gewissen Ausführungsbeispielen Rückkopieroperationen unterbrechen/abbrechen und den TLC-EB als teilweise gefüllt und lediglich ungültige/Abfalldaten enthaltend betrachten. Anstelle von Daten in dem TLC-EB kann das Managementmodul 150 bei einem Ausführungsbeispiel die SLC-EB-Daten verwenden. Das Managementmodul 150 kann bei einem weiteren Ausführungsbeispiel fertig gestellte TLC-EBs mit einer Kennziffer markieren; falls die Kennziffer nicht vorhanden ist, ist der EB ein Teil-EB, und das Managementmodul 150 kann sämtliche Daten in dem teilweise programmierten EB als unzuverlässig betrachten und den EB für ein GC/Löschen oder dergleichen markieren. Bei einem Ausführungsbeispiel braucht das Managementmodul 150 die Vorwärtsabbildung solange nicht zu aktualisieren, bis die neuen Daten in dem TLC-EB richtig gespeichert sind oder dergleichen. Bei gewissen Ausführungsbeispielen kann das Managementmodul 150 mehrere Faktoren verwenden, um diese Bestimmung zu treffen, einschließlich eines oder mehrerer von einem gegenwärtigen Alter (P/E) des NAND, einer Abtasteinrichtungs-Rückkopplung oder dergleichen. Bei einem Ausführungsbeispiel kann der Faktor leicht verfügbar, sehr schnell und einfach zu messen/detektieren oder dergleichen sein.
  • Die vorliegende Offenbarung kann ohne Abweichung von ihrer Wesensart oder ihren wesentlichen Charakteristiken in anderen spezifischen Formen verkörpert sein. Die beschriebenen Ausführungsbeispiele sind in jederlei Hinsicht lediglich als veranschaulichend und nicht als beschränkend zu betrachten. Der Umfang der Offenbarung ist daher durch die angehängten Ansprüche gegeben anstatt durch die vorstehende Beschreibung. Sämtliche Änderungen die innerhalb der Bedeutung des Bereichs der Äquivalenz der Ansprüche kommen sind als in deren Umfang einzuschliessen.

Claims (30)

  1. Ein Verfahren, umfassend: Speichern von Daten in einem ersten Satz von nichtflüchtigen Speicherzellen, Bestimmen eines oder mehrerer Attribute, die den Daten zugehörig sind, und Bestimmen auf der Grundlage des einen oder der mehreren Attribute, die den Daten zugehörig sind, ob die Daten in einem zweiten Satz von nichtflüchtigen Speicherzellen zu speichern sind, wobei der zweite Satz von nichtflüchtigen Speicherzellen konfiguriert ist, um mehr Bits pro Zelle zu speichern als der erste Satz von nichtflüchtigen Speicherzellen.
  2. Das Verfahren von Anspruch 1, worin bzw. wobei das Bestimmen des einen oder der mehreren Attribute, die den Daten zugehörig sind, ein Lesen zumindest eines Teilsatzes der Daten aus dem ersten Satz von nichtflüchtigen Speicherzellen und ein Berücksichtigen in Ergebnissen des Lesens des zumindest einen Teilsatzes zur Bestimmung des einen oder der mehreren Attribute umfasst.
  3. Das Verfahren von Anspruch 1, worin bzw. wobei das eine oder die mehreren Attribute, die den Daten zugehörig sind, eines oder mehrere von einer Schreibhäufigkeit für die Daten, einer Lesehäufigkeit für die Daten, einem Dienstqualitätsniveau für die Daten, einem Alter für die Daten, einer Fehlerrate für die Daten, einem Kapazitätsschwellwert, dem für den ersten Satz von nichtflüchtigen Speicherzellen genügt wird, und einer Programm- bzw. Programmierungs-/Löschzykluszählung für den ersten Satz von nichtflüchtigen Speicherzellen umfasst.
  4. Das Verfahren von Anspruch 1, worin bzw. wobei der erste Satz von nichtflüchtigen Speicherzellen Einzelpegel-Zellen umfasst und der zweite Satz von nichtflüchtigen Speicherzellen Dreifachpegel-Zellen umfasst.
  5. Das Verfahren von Anspruch 1, worin bzw. wobei zumindest einige der Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen aus dem ersten Satz intern innerhalb eines integrierten Schaltungs-Chipplättchens gespeichert werden, ohne dass die zumindest einigen der Daten eine Packung des integrierten Schaltungs-Chipplättchens verlassen.
  6. Das Verfahren von Anspruch 1, ferner umfassend ein Speichern der Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen unter Verwendung eines internen Datenübertragungsbefehls eines nichtflüchtigen Speicherelements, umfassend die ersten und zweiten Sätze von nichtflüchtigen Speicherzellen.
  7. Das Verfahren von Anspruch 1, ferner umfassend ein Einstellen von einem oder mehreren Lesespannungsschwellwerten für den ersten Satz von nichtflüchtigen Speicherzellen auf der Grundlage von einer oder mehreren Speichermediencharakteristiken für den ersten Satz von nichtflüchtigen Speicherzellen und Verwenden des eingestellten einen oder der eingestellten mehreren Lesespannungsschwellwerte zum Lesen von Daten aus dem ersten Satz von nichtflüchtigen Speicherzellen zur Speicherung in dem zweiten Satz von nichtflüchtigen Speicherzellen.
  8. Das Verfahren von Anspruch 1 ferner umfassend auf der Grundlage des einen oder der mehreren Attribute ein Bestimmen, ob eine Fehlerkorrekturcode-(ECC)-Decodierung für die Daten aus dem ersten Satz von nichtflüchtigen Speicherzellen und eine ECC-Neucodierung für die Daten zur Speicherung der Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen auszuführen sind.
  9. Das Verfahren von Anspruch 1, ferner umfassend ein Abbrechen einer in Bearbeitung befindlichen Rückkopierprozedur für die Daten auf eine auf dem einen oder mehreren Attributen basierenden Bestimmung, die Daten nicht in dem zweiten Satz von nichtflüchtigen Speicherzellen zu speichern.
  10. Das Verfahren von Anspruch 1, ferner umfassend das Beibehalten einer ersten logischen-zu-physikalischen Abbildung bezüglich eines Platzes der Daten in dem ersten Satz von nichtflüchtigen Speicherzellen und das Aufrechterhalten einer zweiten logischen-zu-physikalischen Abbildung bezüglich eines Platzes der Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen.
  11. Das Verfahren von Anspruch 1, ferner umfassend ein Überprüfen der Datenintegrität der Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen auf einen Trigger hin.
  12. Das Verfahren von Anspruch 11, worin bzw. wobei der Trigger zumindest eines umfasst von Überprüfen des Speicherns der Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen, Überprüfen der Datenintegrität der Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen, eine Leseanforderung bezüglich der Daten, eine Hintergrundabtastung des zweiten Satzes von nichtflüchtigen Speicherzellen, einem Speicherkapazitätsschwellwert wird genügt, und ein Speicherkapazitäts-Wiedergewinnungsereignis für den ersten Satz von nichtflüchtigen Speicherzellen.
  13. Das Verfahren von Anspruch 1, ferner umfassend ein Wiedergewinnen von Speicherkapazität des ersten Satzes von nichtflüchtigen Speicherzellen, wenn eine Zugriffsrate auf die Daten verfehlt, einem Zugriffsschwellwert zu genügen.
  14. Das Verfahren von Anspruch 1, ferner umfassend ein Zurückhalten der in dem ersten Satz von nichtflüchtigen Speicherzellen gespeicherten Daten nach Speichern der Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen, um eine oder mehrere Leseanforderungen bezüglich der Daten unter Verwendung des ersten Satzes von nichtflüchtigen Speicherzellen auf der Grundlage eines Bedienungsqualitätsniveaus für die Daten zu bedienen.
  15. Das Verfahren von Anspruch 1, ferner umfassend ein Löschen der Daten aus dem ersten Satz von nichtflüchtigen Speicherzellen und ein Wiedergewinnen von Speicherkapazität des ersten Satzes von nichtflüchtigen Speicherzellen auf ein Bedienungsqualitätsniveau für die Daten hin, das verfehlt, einem Schwellwert zu genügen.
  16. Das Verfahren von Anspruch 1, ferner umfassend eine Wiedergewinnung von Speicherkapazität des ersten Satzes von nichtflüchtigen Speicherzellen als Antwort darauf, dass einem Speicherkapazitätsschwellwert genügt ist.
  17. Das Verfahren von Anspruch 1, ferner umfassend ein Abbrechen des Speicherns der Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen als Antwort darauf, dass ein Strompegel ausfällt, einem Schwellwert zu genügen, und Löschen des zweiten Satzes von nichtflüchtigen Speicherzellen und Zugreifen auf die Daten aus dem ersten Satz von nichtflüchtigen Speicherzellen nach Erholung von dem Strompegelausfall.
  18. Das Verfahren von Anspruch 1, ferner umfassend ein Markieren des zweiten Satzes von nichtflüchtigen Speicherzellen als gefüllt auf ein Speichern der Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen hin und ein Löschen von einem oder mehreren Sätzen von nichtflüchtigen Speicherzellen, die nicht als gefüllt sind, nachdem die Erholung von einem Strompegelausfall verfehlt, einem Schwellwert zu genügen.
  19. Eine Vorrichtung umfassend: ein Puffermodul, welches konfiguriert ist, um Daten in einem ersten Satz von nichtflüchtigen Speicherzellen zu speichern, und ein Rückkopiermodul, welches konfiguriert ist, um auf der Grundlage von einem oder mehreren Datenfaktoren zu bestimmen, ob die Daten in einem zweiten Satz von nichtflüchtigen Speicherzellen zu speichern sind, wobei der zweite Satz von nichtflüchtigen Speicherzellen Daten unter Verwendung von mehr Speicherzuständen pro Zelle darstellt als der erste Satz von nichtflüchtigen Speicherzellen.
  20. Die Vorrichtung von Anspruch 19, ferner umfassend ein Auffrischmodul, welches konfiguriert ist, um auf der Grundlage des einen oder der mehreren Datenfaktoren zu bestimmen, ob eine Fehlerkorrekturcode-(ECC)-Auffrischung bezüglich der Daten zur Speicherung der Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen auszuführen ist, wobei das ECC-Auffrischen umfasst, dass das Auffrischmodul ein oder mehrere ECC-Codewörter der Daten unter Verwendung eines Fehlerkorrekturcode-Decoders decodiert und die Daten unter Verwendung eines Fehlerkorrekturcode-Codierers neu codiert zur Speicherung der neu codierten Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen.
  21. Die Vorrichtung von Anspruch 19, ferner umfassend ein Abbruchmodul, welches konfiguriert ist, um eine in Bearbeitung befindliche Rückkopierprozedur bezüglich der Daten als Antwort darauf abzubrechen, dass das Rückkopiermodul auf der Grundlage des einen oder der mehreren Datenfaktoren bestimmt, die Daten nicht in dem zweiten Satz von nichtflüchtigen Speicherzellen zu speichern.
  22. Die Vorrichtung von Anspruch 19, ferner umfassend ein Lesemodul, welches konfiguriert ist, um Leseanforderungen nach den Daten aus dem ersten Satz von nichtflüchtigen Speicherzellen zu bedienen, bevor die Daten aus dem ersten Satz von nichtflüchtigen Speicherzellen gelöscht werden, und um Leseanforderungen von dem zweiten Satz von nichtflüchtigen Speicherzellen zu bedienen, nachdem die Daten aus dem ersten Satz von nichtflüchtigen Speicherzellen gelöscht sind.
  23. Die Vorrichtung von Anspruch 19, ferner umfassend ein Lesespannungsmodul, welches konfiguriert ist, um auf der Grundlage von einem oder mehreren Speichermediencharakteristiken für den ersten Satz von nichtflüchtigen Speicherzellen einen oder mehrere Lesespannungsschwellwerte für den ersten Satz von nichtflüchtigen Speicherzellen proaktiv zu bestimmen, wobei das Rückkopiermodul konfiguriert ist, um den einen oder die mehreren Lesespannungsschwellwerte zum Lesen der Daten aus dem ersten Satz von nichtflüchtigen Speicherzellen zur Speicherung in dem zweiten Satz von nichtflüchtigen Speicherzellen zu verwenden.
  24. Die Vorrichtung von Anspruch 19, ferner umfassend ein Stromabschaltungsmodul, welches konfiguriert ist, um als Antwort darauf, dass ein Strompegel verfehlt, einem Schwellwert zu genügen, abbricht, dass das Rückkopiermodul die Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen speichert, und um den zweiten Satz von nichtflüchtigen Speicherzellen als Antwort darauf, dass eine Erholung von dem Strompegel fehlschlägt, zu löschen, derart, dass auf die Daten von dem ersten Satz von nichtflüchtigen Speicherzellen nach der Erholung von dem Strompegelausfall zugegriffen wird.
  25. Die Vorrichtung von Anspruch 19, ferner umfassend ein Stromabschaltungsmodul, welches konfiguriert ist, um den zweiten Satz von nichtflüchtigen Speicherzellen als Antwort darauf als gefüllt zu markieren, dass das Rückkopiermodul die Daten in dem zweiten Satz von nichtflüchtigen Speicherzellen speichert, und um einen oder mehrere Sätze von nichtflüchtigen Speicherzellen, die nicht als gefüllt markiert sind, zu löschen, nachdem die Erholung von dem Strompegelausfall fehlschlägt, einem Schwellwert zu genügen.
  26. Die Vorrichtung von Anspruch 19, ferner umfassend ein Datenfaktormodul, welches konfiguriert ist, um auf der Grundlage von zumindest einem von einer Speicheranforderung nach den Daten und einer Hintergrundabtastung der Daten Metadaten zu behalten, die den einen oder die mehreren Datenfaktoren über die Zeit angeben.
  27. Die Vorrichtung von Anspruch 19, worin bzw. wobei der erste Satz von nichtflüchtigen Speicherzellen und der zweite Satz von nichtflüchtigen Speicherzellen sich in einer selben Ebene eines integrierten Schaltungs-Chipplättchens befinden.
  28. Ein System, umfassend: ein nichtflüchtiges Speicherelement, umfassend einen Satz von nichtflüchtigen Einzelpegelzellen-(SLC)-Speicherzellen und einem Satz von nichtflüchtigen Dreifachpegel-Zellen-(TLC)-Speicherzellen und eine Steuereinrichtung, die selektiv bestimmt, Daten von dem Satz nichtflüchtigen SLC-Speicherzellen zu dem Satz nichtflüchtigen TLC-Speicherzellen zu kopieren und die einen oder mehrere Lesespannungsschwellwerte für den Satz von nichtflüchtigen SLC-Speicherzellen auf der Grundlage von einer oder mehreren Speichermediencharakteristiken für den Satz von nichtflüchtigen SLC-Speicherzellen zum Kopieren der Daten von dem Satz nichtflüchtiger SLC-Speicherzellen zu dem Satz nichtflüchtiger TLC-Speicherzellen einstellt.
  29. Das System von Anspruch 28, worin bzw. wobei die Steuereinrichtung den einen oder die mehreren Lesespannungsschwellwerte für den Satz nichtflüchtiger SLC-Speicherzellen proaktiv in einer offenen Schleifenweise auf der Grundlage der einen oder mehreren Speichermediencharakteristiken für den Satz nichtflüchtiger SLC-Speicherzellen bestimmt.
  30. Das System von Anspruch 28, worin bzw. wobei die Steuereinrichtung Leseanforderungen nach den Daten von dem Satz nichtflüchtiger SLC-Speicherzellen ohne Verwendung des/der eingestellten einen oder mehreren Lesespannungswerte bedient.
DE112015000378.9T 2014-01-09 2015-01-09 Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher Withdrawn DE112015000378T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461925549P 2014-01-09 2014-01-09
US61/925,549 2014-01-09
PCT/US2015/010905 WO2015106162A1 (en) 2014-01-09 2015-01-09 Selective copyback for on die buffered non-volatile memory

Publications (1)

Publication Number Publication Date
DE112015000378T5 true DE112015000378T5 (de) 2016-09-22

Family

ID=53495257

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015000378.9T Withdrawn DE112015000378T5 (de) 2014-01-09 2015-01-09 Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher

Country Status (4)

Country Link
US (2) US10055294B2 (de)
CN (1) CN106170773A (de)
DE (1) DE112015000378T5 (de)
WO (1) WO2015106162A1 (de)

Families Citing this family (149)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US9798623B2 (en) * 2012-05-11 2017-10-24 Seagate Technology Llc Using cache to manage errors in primary storage
US10083069B2 (en) * 2013-06-27 2018-09-25 Sandisk Technologies Llc Word line defect detection and handling for a data storage device
US9262268B2 (en) * 2013-12-20 2016-02-16 Seagate Technology Llc Method to distribute user data and error correction data over different page types by leveraging error rate variations
WO2015106162A1 (en) 2014-01-09 2015-07-16 SanDisk Technologies, Inc. Selective copyback for on die buffered non-volatile memory
WO2015116100A1 (en) * 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Managing data using a number of non-volatile memory arrays
KR102190670B1 (ko) * 2014-03-03 2020-12-14 삼성전자주식회사 마이그레이션 관리자를 포함하는 메모리 시스템
TWI492234B (zh) 2014-04-21 2015-07-11 Silicon Motion Inc 讀取快閃記憶體中所儲存之資料的方法、記憶體控制器與記憶體系統
US20150324281A1 (en) * 2014-05-07 2015-11-12 Diablo Technologies Inc. System and method of implementing an object storage device on a computer main memory system
EP3349418B1 (de) * 2014-05-29 2019-07-24 Huawei Technologies Co., Ltd. Dienstverarbeitungsverfahren, zugehörige vorrichtung und system
US9015439B1 (en) * 2014-05-30 2015-04-21 SanDisk Technologies, Inc. Event lock storage device
US10417087B2 (en) * 2014-07-22 2019-09-17 Ngd Systems, Inc. System and method for adaptive multiple read of NAND flash
US10795765B2 (en) 2014-07-22 2020-10-06 Ngd Systems, Inc. SSD for long term data retention
US10402319B2 (en) * 2014-07-25 2019-09-03 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
US10430328B2 (en) 2014-09-16 2019-10-01 Sandisk Technologies Llc Non-volatile cache and non-volatile storage medium using single bit and multi bit flash memory cells or different programming parameters
US9952981B2 (en) * 2014-09-29 2018-04-24 Apple Inc. Read cache management in multi-level cell (MLC) non-volatile memory
US10042565B2 (en) * 2014-10-16 2018-08-07 Futurewei Technologies, Inc. All-flash-array primary storage and caching appliances implementing triple-level cell (TLC)-NAND semiconductor microchips
US9612651B2 (en) * 2014-10-27 2017-04-04 Futurewei Technologies, Inc. Access based resources driven low power control and management for multi-core system on a chip
CN105808455B (zh) * 2014-12-31 2020-04-28 华为技术有限公司 访问内存的方法、存储级内存及计算机系统
JP6259414B2 (ja) * 2015-03-24 2018-01-10 ファナック株式会社 不揮発性メモリに格納されたデータ等のメインテナンス機能を備えた数値制御装置
US9378782B1 (en) * 2015-05-24 2016-06-28 Silicon Laboratories Inc. Apparatus with write-back buffer and associated methods
US10437470B1 (en) * 2015-06-22 2019-10-08 Amazon Technologies, Inc. Disk space manager
ITUB20152310A1 (it) 2015-07-20 2017-01-20 Sk Hynix Inc Regolatore per polarizzare un elemento interruttore di un buffer di pagina di una memoria non volatile
CN106569730B (zh) * 2015-10-08 2019-03-22 光宝电子(广州)有限公司 固态储存装置及其相关资料写入方法
TWI564716B (zh) * 2015-10-08 2017-01-01 光寶電子(廣州)有限公司 固態儲存裝置及其相關資料寫入方法
US9619321B1 (en) * 2015-10-08 2017-04-11 Seagate Technology Llc Internal copy-back with read-verify
US10210041B2 (en) 2015-11-05 2019-02-19 SK Hynix Inc. Systems and methods for low latency copy operations in non-volatile memory
TWI582776B (zh) * 2016-01-04 2017-05-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US9847105B2 (en) * 2016-02-01 2017-12-19 Samsung Electric Co., Ltd. Memory package, memory module including the same, and operation method of memory package
US9952779B2 (en) 2016-03-01 2018-04-24 Apple Inc. Parallel scheduling of write commands to multiple memory devices
EP3404661B1 (de) * 2016-03-09 2023-12-27 Huawei Technologies Co., Ltd. Verfahren zur aktualisierung von flash-speichervorrichtungen und vorrichtung
US20170277629A1 (en) * 2016-03-25 2017-09-28 Alibaba Group Holding Limited Extending the useful lifespan of nonvolatile memory
TWI606336B (zh) * 2016-04-21 2017-11-21 慧榮科技股份有限公司 儲存裝置及其控制單元、可用於儲存裝置的資料儲存方法
CN107506176B (zh) * 2016-06-14 2019-07-12 华为技术有限公司 一种确定解码任务的方法和装置
US10289544B2 (en) * 2016-07-19 2019-05-14 Western Digital Technologies, Inc. Mapping tables for storage devices
KR102550343B1 (ko) * 2016-07-27 2023-07-03 삼성전자주식회사 솔리드 스테이트 드라이브 장치 및 그것의 동작 방법
US9847141B1 (en) * 2016-08-02 2017-12-19 Apple Inc. Classifying memory cells to multiple impairment profiles based on readout bit-flip counts
KR20180027656A (ko) * 2016-09-05 2018-03-15 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
US10169152B2 (en) 2016-09-12 2019-01-01 International Business Machines Corporation Resilient data storage and retrieval
US10528264B2 (en) * 2016-11-04 2020-01-07 Samsung Electronics Co., Ltd. Storage device and data processing system including the same
TWI635391B (zh) * 2017-02-14 2018-09-11 點序科技股份有限公司 快閃記憶體以及其管理方法
US10248484B2 (en) * 2017-02-21 2019-04-02 Intel Corporation Prioritized error-detection and scheduling
US9933963B1 (en) * 2017-03-01 2018-04-03 Seagate Technology Open block handling to reduce write errors
CN107291381B (zh) * 2017-05-18 2020-04-28 记忆科技(深圳)有限公司 一种固态硬盘动态加速区的实现方法及固态硬盘
US10379979B2 (en) * 2017-05-31 2019-08-13 Western Digital Technologies, Inc. Power fail handling using stop commands
CN107291626B (zh) * 2017-06-19 2020-12-18 北京小米移动软件有限公司 数据存储方法和装置
US10649661B2 (en) * 2017-06-26 2020-05-12 Western Digital Technologies, Inc. Dynamically resizing logical storage blocks
CN109213693B (zh) * 2017-06-30 2023-05-05 伊姆西Ip控股有限责任公司 存储管理方法、存储系统和计算机程序产品
CN107357534A (zh) * 2017-07-18 2017-11-17 深圳市德名利电子有限公司 一种闪存块模式的动态切换方法及系统
CN107506137A (zh) * 2017-08-11 2017-12-22 记忆科技(深圳)有限公司 一种提升固态硬盘写性能的方法
CN107463447B (zh) * 2017-08-21 2019-10-11 中国人民解放军国防科技大学 一种基于远程直接非易失内存访问的b+树管理方法
KR20190043411A (ko) * 2017-10-18 2019-04-26 삼성전자주식회사 스토리지 장치, 스토리지 장치를 포함하는 컴퓨팅 시스템, 그리고 스토리지 장치의 동작 방법
CN111488122A (zh) * 2017-10-25 2020-08-04 华为技术有限公司 数据写入方法和存储设备
US10733110B1 (en) * 2017-12-04 2020-08-04 Amazon Technologies, Inc. Collecting statistics for persistent memory
US11099760B2 (en) * 2017-12-14 2021-08-24 Intel Corporation Background data refresh using a system timestamp in storage devices
US10658056B2 (en) * 2017-12-22 2020-05-19 Intel Corporation Internal copy to handle NAND program fail
TWI658359B (zh) * 2017-12-27 2019-05-01 群聯電子股份有限公司 資料寫入方法、有效資料識別方法及記憶體儲存裝置
IT201800000581A1 (it) * 2018-01-05 2019-07-05 St Microelectronics Srl Metodo di gestione dell'accesso in tempo reale a una memoria differenziale, memoria differenziale e sistema elettronico includente la memoria differenziale
KR20190086177A (ko) * 2018-01-12 2019-07-22 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
KR20190095825A (ko) * 2018-02-07 2019-08-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP6517385B1 (ja) * 2018-02-07 2019-05-22 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
TWI714830B (zh) * 2018-02-13 2021-01-01 緯穎科技服務股份有限公司 目錄資料的管理方法與記憶體裝置
US10789130B1 (en) * 2018-03-09 2020-09-29 Toshiba Memory Corporation Capacitor energy management for unexpected power loss in datacenter SSD devices
US10649657B2 (en) 2018-03-22 2020-05-12 Western Digital Technologies, Inc. Log-based storage for different data types in non-volatile memory
US10853168B2 (en) * 2018-03-28 2020-12-01 Samsung Electronics Co., Ltd. Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM)
CN108509355A (zh) * 2018-03-31 2018-09-07 北京联想核芯科技有限公司 一种用于SSD的SLC Cache的方法和装置
FR3079945A1 (fr) * 2018-04-06 2019-10-11 Psa Automobiles Sa Procede de detection d’un risque de perte de donnees d’une memoire non volatile-temporaire dans un calculateur et de perennisation de ces donnees.
US10762967B2 (en) 2018-06-28 2020-09-01 Apple Inc. Recovering from failure in programming a nonvolatile memory
US10755787B2 (en) 2018-06-28 2020-08-25 Apple Inc. Efficient post programming verification in a nonvolatile memory
EP3591565A1 (de) * 2018-07-04 2020-01-08 Koninklijke Philips N.V. Rechnervorrichtung mit erhöhter widerstandsfähigkeit gegen rowhammer-angriffe
TWI677875B (zh) * 2018-07-20 2019-11-21 衡宇科技股份有限公司 偵測固態儲存裝置儲存狀態的方法
KR20200015247A (ko) 2018-08-03 2020-02-12 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10586592B1 (en) * 2018-08-23 2020-03-10 Micron Technology, Inc. Disturb management based on write times
JP2020035128A (ja) * 2018-08-29 2020-03-05 キオクシア株式会社 メモリシステム
US11133076B2 (en) * 2018-09-06 2021-09-28 Pure Storage, Inc. Efficient relocation of data between storage devices of a storage system
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US10770128B2 (en) * 2018-09-28 2020-09-08 Intel Corporation Non volatile mass storage device with improved refresh algorithm
US10656995B2 (en) 2018-10-03 2020-05-19 Micron Technology, Inc. Copy-back operations in a memory device
US11144375B2 (en) 2018-10-09 2021-10-12 Argo AI, LLC Execution sequence integrity parameter monitoring system
US11138085B2 (en) 2018-10-09 2021-10-05 Argo AI, LLC Execution sequence integrity monitoring system
US11169747B2 (en) 2018-10-30 2021-11-09 Micron Technology, Inc. Relocating data to low latency memory
TW202018513A (zh) * 2018-11-07 2020-05-16 威剛科技股份有限公司 固態硬碟及其資料存取的方法
CN109508258A (zh) * 2018-11-15 2019-03-22 南京长峰航天电子科技有限公司 一种脱靶量数据的采集和存储方法及系统
US10854619B2 (en) 2018-12-07 2020-12-01 Sandisk Technologies Llc Three-dimensional memory device containing bit line switches
US10734080B2 (en) 2018-12-07 2020-08-04 Sandisk Technologies Llc Three-dimensional memory device containing bit line switches
US10734071B2 (en) 2018-12-13 2020-08-04 Western Digital Technologies, Inc. Multi-level cell programming using optimized multiphase mapping with balanced Gray code
US11061762B2 (en) * 2019-02-04 2021-07-13 Intel Corporation Memory programming techniques
US10936455B2 (en) 2019-02-11 2021-03-02 Apple Inc. Recovery of data failing due to impairment whose severity depends on bit-significance value
US10741535B1 (en) 2019-02-14 2020-08-11 Sandisk Technologies Llc Bonded assembly containing multiple memory dies sharing peripheral circuitry on a support die and methods for making the same
US10770431B1 (en) * 2019-02-27 2020-09-08 Western Digital Technologies, Inc. Memory die layouts for failure protection in SSDs
US10879260B2 (en) 2019-02-28 2020-12-29 Sandisk Technologies Llc Bonded assembly of a support die and plural memory dies containing laterally shifted vertical interconnections and methods for making the same
US11133067B2 (en) 2019-03-08 2021-09-28 Western Digital Technologies, Inc. Multi-phased programming with balanced gray coding
US11237902B2 (en) * 2019-03-15 2022-02-01 Innogrit Technologies Co., Ltd. Systems and methods for an ECC architecture with memory mapping
US10950325B2 (en) * 2019-04-04 2021-03-16 Marvell Asia Pte., Ltd. Memory built-in self test error correcting code (MBIST ECC) for low voltage memories
KR102617083B1 (ko) * 2019-05-17 2023-12-22 양쯔 메모리 테크놀로지스 씨오., 엘티디. 정적 랜덤 액세스 메모리를 갖는 3차원 메모리 디바이스의 데이터 버퍼링 연산
US11342044B2 (en) * 2019-05-28 2022-05-24 Nuvoton Technology Corporation System and method for prioritization of bit error correction attempts
US11475170B2 (en) 2019-05-28 2022-10-18 Nuvoton Technology Corporation System and method for correction of memory errors
US11023138B2 (en) * 2019-06-28 2021-06-01 Western Digital Technologies, Inc. Management operations in predictable latency mode
KR102645786B1 (ko) * 2019-07-08 2024-03-12 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US10911284B1 (en) 2019-07-16 2021-02-02 Microsoft Technology Licensing, Llc Intelligent optimization of communication systems utilizing error correction
US11031961B2 (en) 2019-07-16 2021-06-08 Microsoft Technology Licensing, Llc Smart symbol changes for optimization of communications using error correction
US11086719B2 (en) * 2019-07-16 2021-08-10 Microsoft Technology Licensing, Llc Use of error correction codes to prevent errors in neighboring storage
US11075656B2 (en) 2019-07-16 2021-07-27 Microsoft Technology Licensing, Llc Bit error reduction of communication systems using error correction
US11044044B2 (en) 2019-07-16 2021-06-22 Microsoft Technology Licensing, Llc Peak to average power ratio reduction of optical systems utilizing error correction
US11172455B2 (en) 2019-07-16 2021-11-09 Microsoft Technology Licensing, Llc Peak to average power output reduction of RF systems utilizing error correction
US11063696B2 (en) 2019-07-16 2021-07-13 Microsoft Technology Licensing, Llc Increasing average power levels to reduce peak-to-average power levels using error correction codes
US10922025B2 (en) * 2019-07-17 2021-02-16 Samsung Electronics Co., Ltd. Nonvolatile memory bad row management
US10911141B1 (en) 2019-07-30 2021-02-02 Microsoft Technology Licensing, Llc Dynamically selecting a channel model for optical communications
US10811075B1 (en) * 2019-08-19 2020-10-20 Silicon Motion, Inc. Method for performing access control regarding quality of service optimization of memory device with aid of machine learning, associated memory device and controller thereof
US11726869B2 (en) * 2019-08-20 2023-08-15 Micron Technology, Inc. Performing error control operation on memory component for garbage collection
US11194515B2 (en) * 2019-09-16 2021-12-07 Macronix International Co., Ltd. Memory system, method of operating memory, and non-transitory computer readable storage medium
US10915394B1 (en) 2019-09-22 2021-02-09 Apple Inc. Schemes for protecting data in NVM device using small storage footprint
US11194646B2 (en) 2019-12-03 2021-12-07 Micron Technology, Inc. Regression-based calibration and scanning of data units
KR20210077230A (ko) * 2019-12-17 2021-06-25 에스케이하이닉스 주식회사 메모리 시스템의 동작 방법 및 장치
CN111210858B (zh) * 2019-12-24 2021-11-09 山东大学 一种缓解相变存储器写干扰的方法及系统
KR20210083428A (ko) * 2019-12-26 2021-07-07 삼성전자주식회사 메모리 장치, 및 이를 포함하는 전자 기기
CN111221747B (zh) * 2020-01-10 2022-02-18 深圳市德明利光电有限公司 一种随机种子保存的方法、装置、存储介质及计算机设备
DE102020108101A1 (de) * 2020-03-24 2021-09-30 Pilz Gmbh & Co. Kg Vorrichtung zur Speicherung von Daten in einem nichtflüchtigen Speicher
CN111444154B (zh) * 2020-03-26 2020-11-27 涵涡智航科技(玉溪)有限公司 一种在单片机系统中高效存储日志文件的方法
KR20210131058A (ko) * 2020-04-23 2021-11-02 에스케이하이닉스 주식회사 메모리 시스템 내 데이터를 보호하는 장치 및 방법
TWI791981B (zh) * 2020-04-30 2023-02-11 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
US11237906B1 (en) 2020-07-28 2022-02-01 Micron Technology, Inc. Generating a balanced codeword protected by an error correction code
US11494264B2 (en) 2020-07-28 2022-11-08 Micron Technology, Inc. Generating a protected and balanced codeword
US11567831B2 (en) 2020-07-28 2023-01-31 Micron Technology, Inc. Generating a protected and balanced codeword
US11314583B2 (en) 2020-08-18 2022-04-26 Micron Technology, Inc. Memory data correction using multiple error control operations
KR20220022355A (ko) 2020-08-18 2022-02-25 삼성전자주식회사 멀티 페이지 데이터를 프로그램하기 위한 불휘발성 메모리 장치의 동작 방법
US11309052B2 (en) * 2020-08-25 2022-04-19 Micron Technology, Inc. Read voltage calibration for copyback operation
US11360677B2 (en) * 2020-09-11 2022-06-14 Micron Technology, Inc. Selective partitioning of sets of pages programmed to memory device
US11507454B2 (en) * 2020-10-26 2022-11-22 Oracle International Corporation Identifying non-correctable errors using error pattern analysis
US20220171564A1 (en) * 2020-12-01 2022-06-02 SK Hynix Inc. Apparatus and method for maintaining data stored in a memory system
US11631690B2 (en) 2020-12-15 2023-04-18 Sandisk Technologies Llc Three-dimensional memory device including trench-isolated memory planes and method of making the same
US11550487B2 (en) * 2020-12-17 2023-01-10 Western Digital Technologies, Inc. Data storage device and method for enabling endurance re-evaluation
CN112667446B (zh) * 2021-01-13 2022-11-08 珠海妙存科技有限公司 Mlc nand的数据备份方法、装置及闪存系统
WO2022164490A1 (en) * 2021-01-27 2022-08-04 Pure Storage, Inc. Optimizing storage device access based on latency
US11663079B2 (en) * 2021-02-07 2023-05-30 Micron Technology, Inc. Data recovery using a combination of error correction schemes
US11494124B2 (en) 2021-02-17 2022-11-08 Micron Technology, Inc. Inversion refresh of physical memory location
CN113553008A (zh) * 2021-07-20 2021-10-26 深圳忆联信息系统有限公司 映射表更新方法、装置、计算机设备及存储介质
US11467897B1 (en) * 2021-08-09 2022-10-11 Micron Technology, Inc. Adaptive data integrity scan frequency
US11670394B2 (en) * 2021-08-18 2023-06-06 Nxp B.V. Temperature exposure detection based on memory cell retention error rate
US11550657B1 (en) 2021-09-01 2023-01-10 Apple Inc. Efficient programming schemes in a nonvolatile memory
KR20230056901A (ko) 2021-10-21 2023-04-28 에스케이하이닉스 주식회사 메모리 장치에 데이터를 프로그램하는 장치 및 방법
TWI788161B (zh) * 2021-12-27 2022-12-21 技嘉科技股份有限公司 動態調整單級區塊及三級區塊比例的控制方法
US20230376205A1 (en) * 2022-05-17 2023-11-23 Micron Technology, Inc. Commanded device states for a memory system
WO2023220976A1 (zh) * 2022-05-18 2023-11-23 上海江波龙数字技术有限公司 数据存储方法、存储装置及可读存储装置
CN115079803B (zh) * 2022-05-20 2024-03-29 上海瑞浦青创新能源有限公司 一种适用于微控制器的异常掉电数据保存装置
US20240111434A1 (en) * 2022-10-04 2024-04-04 Western Digital Technologies, Inc. Hold-Up Capacitor Failure Handling in Data Storage Devices
KR20240055692A (ko) * 2022-10-18 2024-04-29 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 시스템 및 그 동작

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805789A (en) 1995-12-14 1998-09-08 International Business Machines Corporation Programmable computer system element with built-in self test method and apparatus for repair during power-on
JP4308637B2 (ja) 2003-12-17 2009-08-05 株式会社日立製作所 半導体試験装置
US8200887B2 (en) * 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
KR101046304B1 (ko) 2006-10-20 2011-07-05 후지쯔 가부시끼가이샤 메모리 장치 및 리프레시 조정 방법
US7573762B2 (en) 2007-06-06 2009-08-11 Freescale Semiconductor, Inc. One time programmable element system in an integrated circuit
US8271515B2 (en) * 2008-01-29 2012-09-18 Cadence Design Systems, Inc. System and method for providing copyback data integrity in a non-volatile memory system
US9123422B2 (en) 2012-07-02 2015-09-01 Super Talent Technology, Corp. Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells
US7818525B1 (en) 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
US20110252187A1 (en) 2010-04-07 2011-10-13 Avigdor Segal System and method for operating a non-volatile memory including a portion operating as a single-level cell memory and a portion operating as a multi-level cell memory
US8543757B2 (en) 2010-06-23 2013-09-24 Sandisk Technologies Inc. Techniques of maintaining logical to physical mapping information in non-volatile memory systems
US8187936B2 (en) 2010-06-30 2012-05-29 SanDisk Technologies, Inc. Ultrahigh density vertical NAND memory device and method of making thereof
US9063878B2 (en) * 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8537613B2 (en) 2011-03-31 2013-09-17 Sandisk Technologies Inc. Multi-layer memory system
US8909982B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc System and method for detecting copyback programming problems
US9158621B2 (en) 2011-08-29 2015-10-13 Sandisk Technologies Inc. System and method of copying data
KR20130084492A (ko) * 2012-01-17 2013-07-25 삼성전자주식회사 비휘발성 메모리 시스템
US8990477B2 (en) 2012-04-19 2015-03-24 Sandisk Technologies Inc. System and method for limiting fragmentation
CN103455440A (zh) 2012-06-04 2013-12-18 慧荣科技股份有限公司 快闪内存装置及快闪内存的数据存取方法
US8804415B2 (en) * 2012-06-19 2014-08-12 Fusion-Io, Inc. Adaptive voltage range management in non-volatile memory
KR101979734B1 (ko) 2012-08-07 2019-05-17 삼성전자 주식회사 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법
US9378097B1 (en) * 2013-08-27 2016-06-28 Sk Hynix Memory Solutions Inc. Selective copy-back
WO2015106162A1 (en) 2014-01-09 2015-07-16 SanDisk Technologies, Inc. Selective copyback for on die buffered non-volatile memory
US9778863B2 (en) 2014-09-30 2017-10-03 Sandisk Technologies Llc System and method for folding partial blocks into multi-level cell memory blocks

Also Published As

Publication number Publication date
US10055294B2 (en) 2018-08-21
WO2015106162A1 (en) 2015-07-16
US20150193299A1 (en) 2015-07-09
CN106170773A (zh) 2016-11-30
US20150193302A1 (en) 2015-07-09
US9489263B2 (en) 2016-11-08

Similar Documents

Publication Publication Date Title
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE112020000178T5 (de) Verwaltung von in zonen unterteilten namensräumen nichtflüchtiger speicherungsvorrichtungen
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE102018105750A1 (de) System und Verfahren für Hybrid-Push-Pull-Datenmanagement in einem nichtflüchtigen Datenspeicher
DE102011086227A1 (de) Adress mapping method, data storage device and user device
DE102018123805A1 (de) Vorgang für verteiltes Programmieren
DE102013106242A1 (de) Halbleiterlaufwerk mit Konvertierungsschicht (ETL) und Umleitung von temporären Dateien zur Verschleissminderung von Flashspeichern
DE112010003887T5 (de) Datenverwaltung in Halbleiter-Speichereinheiten
DE102018105854A1 (de) Dynamische Größenanpassung logischer Speicherblöcke
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE112020004591T5 (de) L2P-Übersetzungstechniken in begrenzten RAM-Systemen
US11138071B1 (en) On-chip parity buffer management for storage block combining in non-volatile memory
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
DE112020005092T5 (de) Konstruktion einer blockvorrichtung
DE112022002830T5 (de) Spiegeln von daten in schreibcaches eines controllers eines nicht flüchtigen speichers
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung
CN113851172B (zh) 存储器子系统映射中的错误处置优化

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R120 Application withdrawn or ip right abandoned
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE