DE102018106154A1 - Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen - Google Patents

Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen Download PDF

Info

Publication number
DE102018106154A1
DE102018106154A1 DE102018106154.4A DE102018106154A DE102018106154A1 DE 102018106154 A1 DE102018106154 A1 DE 102018106154A1 DE 102018106154 A DE102018106154 A DE 102018106154A DE 102018106154 A1 DE102018106154 A1 DE 102018106154A1
Authority
DE
Germany
Prior art keywords
data
data storage
storage area
amount
location
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
DE102018106154.4A
Other languages
English (en)
Inventor
Narendhiran Chinnaanangur Ravimohan
Muralitharan Jayaraman
Balakumar Rajendran
Satya Kesav Gundabathula
Ramkumar Ramamurthy
Rohit Sathyanarayan
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 DE102018106154A1 publication Critical patent/DE102018106154A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • 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/10Programming or data input circuits
    • 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/30Power supply circuits
    • 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/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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/32Timing circuits
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Ein Datenspeichersystem kann konfiguriert sein, unmittelbares Falten von Daten aus einem Bereich niedriger Speicherdichte in einen Bereich hoher Speicherdichte auszuführen. Ein Sollbereich niedriger Speicherdichte kann überwacht werden, und wenn eine Kapazität des Sollbereichs niedriger Speicherdichte ein Schwellenwertniveau erreicht, können Daten, die in dem Sollbereich niedriger Speicherdichte gespeichert sind, in einen zugeordneten Sollbereich hoher Speicherdichte gefaltet werden. Das Datenspeichersystem kann ein Zeigersystem benutzen, um das Falten von Daten zu managen. Das Zeigersystem kann außerdem für Leseoperationen benutzt werden, um das Aktualisieren von Adressenabbildungstabellen für sowohl den Bereich niedriger Speicherdichte als auch den Bereich hoher Speicherdichte zu vermeiden.

Description

  • HINTERGRUND
  • Datenspeichersysteme können konfiguriert sein, Daten in unterschiedlichen Bereichen eines Datenspeichers [engl. memory] gemäß unterschiedlichen Speicherdichten [engl. storage densities] oder Anzahl von Bits pro Zelle zu speichern. Einpegelzellen (SLC) können konfiguriert sein, ein Bit pro Zelle zu speichern, und Mehrpegelzellen (MLC) können konfiguriert sein, mehrere Bits pro Zelle zu speichern. Wenn ein Datenspeichersystem Daten von einem Host-System empfängt, können die Daten anfangs in einem Datenspeicherbereich gespeichert werden, der für SLC-Speichern von Daten designiert ist. Nachdem eine spezielle Zeitspanne abgelaufen ist, kann das Datenspeichersystem bestimmen, die Daten zu einem anderen Datenspeicherbereich zu verlagern, der für MLC-Speichern von Daten designiert ist. Dieser Prozess zum Verlagern von Daten von einem SLC-Datenspeicherbereich zu einem MLC-Datenspeicherbereich kann als eine Faltungsoperation bezeichnet sein.
  • Zusätzlich nutzen Datenspeichersysteme Adressdatenstrukturen, um zu identifizieren, wo Daten in dem Datenspeicher gespeichert werden. Für eine gegebene Datenmenge, die in den MLC-Datenspeicherbereich gefaltet wird, kann ein Datenspeichersystem wenigstens zwei Aktualisierungen an einer Adressdatenstruktur vornehmen, die der gefalteten Datenmenge zugeordnet ist - eine erste Aktualisierung, um zu identifizieren, wo in dem SLC-Datenspeicherbereich die Datenmenge gespeichert ist, und eine zweite Aktualisierung, um zu identifizieren, wo in dem MLC-Datenspeicherbereich die Datenmenge gespeichert ist. Ferner kann, da eine spezielle Zeitspanne abläuft, bevor Daten in den MLC-Datenspeicherbereich gefaltet werden, ein relativ großer Anteil der Speicherkapazität für den SLC-Datenspeicherbereich designiert sein, um sicherzustellen, dass ein ausreichender Anteil von SLC-Speicher für Daten, die anfangs gespeichert werden sollen, vorhanden ist. Es sind Wege wünschenswert, um Daten aus einem SLC-Datenspeicherbereich zu einem MLC-Bereich zu falten, die eine einzige Aktualisierung an der Adressdatenstruktur erlauben und die die Größe des SLC-Speicherbereichs reduzieren.
  • Figurenliste
  • Die begleitenden Zeichnungen, die in diese Spezifikation aufgenommen sind und einen Teil davon bilden, stellen verschiedene Aspekte der Erfindung dar und dienen zusammen mit der Beschreibung dazu, ihre Prinzipien zu erläutern. Wann immer möglich werden die gleichen Bezugszeichen durchgehend durch die Zeichnungen verwendet, um die gleichen oder ähnliche Elemente zu bezeichnen.
    • 1A ist ein Blockdiagramm eines beispielhaften nichtflüchtigen Datenspeichersystems.
    • 1B ist ein Blockdiagramm eines Speichermoduls, das mehrere nichtflüchtige Datenspeichersysteme enthält.
    • 1C ist ein Blockdiagramm eines hierarchischen Speichersystems.
    • 2A ist ein Blockdiagramm beispielhafter Komponenten einer Steuereinheit des nichtflüchtigen Datenspeichersystems von 1A.
    • 2B ist ein Blockdiagramm beispielhafter Komponenten eines nichtflüchtigen Datenspeicher-Chips des nichtflüchtigen Datenspeichersystems von 1A.
    • 3 ist ein Schaltbild eines beispielhaften Flash-Datenspeicher-Array vom NAND-Typ.
    • 4 ist ein Blockdiagramm einer beispielhaften organisatorischen Anordnung oder Hierarchie eines Datenspeicher-Arrays für Flash-Datenspeicher.
    • 5 ist ein schematisches Diagramm einer beispielhaften Abbildung zwischen logischen Gruppen und Metablöcken.
    • 6 ist ein Blockdiagramm einer beispielhaften organisatorischen Anordnung von Datenspeicher-Chips des nichtflüchtigen Datenspeichersystems der 1A-2B, wobei die Datenspeicher-Chips in einen Bereich niedriger Speicherdichte und einen Bereich hoher Speicherdichte getrennt oder organisiert sind.
    • 7 ist ein Blockdiagramm von Komponenten des nichtflüchtigen Datenspeichersystems der 1A-2B, die an der Ausführung der Faltungsoperationen beteiligt sein können.
    • 8A ist eine schematische Darstellung eines Paars von Tabellen, die Status der Faltungsoperationen zeigt, um mehrere Datenmengen in einen Bereich hoher Speicherdichte des Datenspeichers zu falten, wobei die Datenmengen noch nicht in einem Speicherbereich niedriger Speicherdichte gespeichert worden sind.
    • 8B ist eine schematische Darstellung eines Paars von Tabellen von 8A, die eine erste Datenmenge, die in dem Bereich niedriger Speicherdichte gespeichert ist, und eine erste Phase einer ersten Programmieroperation, die ausgeführt wird, um die erste Datenmenge in dem Bereich hoher Speicherdichte zu speichern, zeigt.
    • 8C ist eine schematische Darstellung des Paars von Tabellen der 8A und 8B, die eine zweite Datenmenge, die in dem Bereich niedriger Speicherdichte gespeichert ist, eine erste Phase einer zweiten Programmieroperation, die ausgeführt wird, um die zweite Datenmenge in dem Bereich hoher Speicherdichte zu speichern, und eine zweite Phase der ersten ausgeführten Programmieroperation zeigt.
    • 8D ist eine schematische Darstellung der Paare von Tabellen der 8A, 8B und 8C, die eine dritte Datenmenge, die in dem Bereich niedriger Speicherdichte gespeichert ist, eine erste Phase einer dritten Programmieroperation, die ausgeführt wird, um die dritte Datenmenge in dem Bereich hoher Speicherdichte zu speichern, eine zweite Phase der zweiten ausgeführten Programmieroperation und eine dritte Phase der ersten ausgeführten Programmieroperation zeigt.
    • 8E ist eine schematische Darstellung der Paare von Tabellen der 8A, 8B, 8C und 8D, die eine vierte Datenmenge, die in dem Bereich niedriger Speicherdichte gespeichert ist, eine erste Phase einer vierten Programmieroperation, die ausgeführt wird, um die vierte Datenmenge in dem Bereich hoher Speicherdichte zu speichern, eine zweite Phase der dritten ausgeführten Programmieroperation und eine dritte Phase der zweiten ausgeführten Programmieroperation zeigt.
    • 9B ist ein Blockdiagramm von Komponenten des Datenspeichersystems, die an Leseoperationen beteiligt sind.
    • 10 ist eine schematische Darstellung von Paaren von Tabellen, die verschiedene Datenseiten zeigt, die in sowohl dem Bereich niedriger Speicherdichte als auch dem Bereich hoher Speicherdichte gespeichert sind.
    • 11 ist ein Blockdiagramm einer weiteren Konfiguration von Komponenten des nichtflüchtigen Datenspeichersystems der 1A-2B, die an der Ausführung der Faltungsoperationen beteiligt sind.
    • 12 ist ein Ablaufplan eines Beispielverfahrens zum Ausführen einer Faltungsoperation in einem Datenspeichersystem.
    • 13 ist ein Ablaufplan eines Beispielverfahrens zum Lesen angeforderter Daten in einem Datenspeichersystem.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Übersicht
  • Als Einführung beziehen sich die nachstehenden Ausführungsformen auf Datenspeichersysteme und Verfahren zum Identifizieren einer Abweichung einer Reaktion eines speziellen Datenspeicherorts im Vergleich zu einer erwarteten oder geschätzten Reaktion, wie sie durch ein BER-Modell angegeben ist. In einer Ausführungsform ein Datenspeicher und eine Steuereinheit. Der Datenspeicher enthält einen ersten Datenspeicherbereich und einen zweiten Datenspeicherbereich, wobei der erste Datenspeicherbereich eine niedrigere Speicherdichte enthält als der zweite Datenspeicherbereich. Die Steuereinheit ist konfiguriert zum: Programmieren einer Datenmenge in einen Speicherort des ersten Datenspeicherbereichs, die in einem Speicherort des zweiten Datenspeicherbereichs gespeichert werden soll, wobei der Speicherort des ersten Datenspeicherbereichs und der Speicherort des zweiten Datenspeicherbereichs die gleiche Speicherkapazität aufweisen. In Reaktion darauf, dass die gesamte Datenmenge in dem Speicherort des ersten Datenspeicherbereichs gespeichert ist, Ausführen einer Anfangsphase einer Schreiboperation auf dem Speicherort des zweiten Datenspeicherbereichs, um die Datenmenge in dem Speicherort des zweiten Datenspeicherbereichs zu speichern.
  • In einigen Ausführungsformen ist die Steuereinheit konfiguriert zu warten, bis die gesamte nächste Datenmenge in den nächsten Speicherort des ersten Datenspeicherbereichs programmiert ist, um eine nächste Phase des Schreiboperation auszuführen.
  • In einigen Ausführungsformen enthält der Speicherort des ersten Datenspeicherbereichs einen ersten Speicherort des ersten Datenspeicherbereichs, der Speicherort des zweiten Datenspeicherbereichs enthält einen ersten Speicherort des zweiten Datenspeicherbereichs, die Datenmenge enthält eine erste Datenmenge, die Schreiboperation enthält eine erste Schreiboperation, und die Steuereinheit ist konfiguriert zum: Programmieren einer zweiten Datenmenge in einen zweiten Speicherort des ersten Datenspeicherbereichs, die in einem zweiten Speicherort des zweiten Datenspeicherbereichs gespeichert werden soll, wobei der zweite Speicherort des ersten Datenspeicherbereichs und der zweite Speicherort des zweiten Datenspeicherbereichs die gleiche Speicherkapazität aufweisen. In Reaktion darauf, dass die gesamte zweite Datenmenge in dem zweiten Speicherort des ersten Datenspeicherbereichs gespeichert ist: Ausführen einer erste Phase einer zweiten Schreiboperation, um die zweite Datenmenge in dem zweiten Speicherort des zweiten Datenspeicherbereichs zu speichern; und Ausführen einer zweiten Phase der ersten Schreiboperation, um die erste Datenmenge in dem ersten Speicherort des zweiten Datenspeicherbereichs zu speichern.
  • In einigen Ausführungsformen ist die Steuereinheit ist konfiguriert zum: Bestimmen eines dritten Speicherorts des ersten Datenspeicherbereichs und eines dritten Speicherorts des zweiten Datenspeicherbereichs, in dem eine dritte Datenmenge gespeichert werden soll, wobei der dritte Speicherort des ersten Datenspeicherbereichs und der dritte Speicherort des zweiten Datenspeicherbereichs die gleiche Speicherkapazität aufweisen. In Reaktion auf eine Bestimmung, dass der dritte Speicherort des ersten Datenspeicherbereichs die gesamte dritte Datenmenge speichert: Ausführen einer ersten Phase einer dritten Schreiboperation, um die dritte Datenmenge in dem dritten Speicherort des zweiten Datenspeicherbereichs zu speichern; Ausführen einer zweiten Phase der zweiten Schreiboperation, um die zweite Datenmenge in dem zweiten Speicherort des zweiten Datenspeicherbereichs zu speichern; und Ausführen einer dritten Phase der ersten Schreiboperation, um die erste Datenmenge in dem ersten Speicherort des zweiten Datenspeicherbereichs zu speichern.
  • In einigen Ausführungsformen ist die Steuereinheit konfiguriert, vor dem Ausführen einer dritten Phase der dritten Schreiboperation, um die dritte Datenmenge in dem dritten Speicherort des zweiten Datenspeichers zu speichern, eine Einspeicheroperation auszuführen, um die erste Datenmenge einzuspeichern, und eine dritte Phase der dritten Schreiboperation auszuführen, um die zweite Datenmenge in dem zweiten Speicherort des zweiten Datenspeicherbereichs zu speichern.
  • In einigen Ausführungsformen sind der erste Speicherort des zweiten Datenspeicherbereichs, der zweite Speicherort des zweiten Datenspeicherbereichs und der dritte Speicherort des zweiten Datenspeicherbereichs benachbarte Speicherorte des zweiten Datenspeicherbereichs.
  • In einigen Ausführungsformen sind der erste Datenspeicherbereich und der zweite Datenspeicherbereich jeweils in einen ersten Datentypabschnitt, der einem ersten Datentyp zugeordnet ist, und einen zweiten Datentypabschnitt, der einem zweiten Datentyp zugeordnet ist, partitioniert. Zusätzlich ist die Steuereinheit konfiguriert zum: Identifizieren der Datenmenge als vom ersten Datentyp oder vom zweiten Datentyp; Bestimmen, dass der Speicherort des ersten Datenspeicherbereichs und der Speicherort des zweiten Datenspeicherbereichs in den entsprechenden ersten Datentypabschnitten sind, in Reaktion auf eine Identifizierung, dass die Daten vom ersten Datentyp sind; und Bestimmen, dass der Speicherort des ersten Datenspeicherbereichs und der Speicherort des zweiten Datenspeicherbereichs in den entsprechenden zweiten Datentypabschnitten sind, in Reaktion auf eine Identifizierung, dass die Daten vom zweiten Datentyp sind.
  • In einigen Ausführungsformen ist der Speicherort des zweiten Datenspeicherbereichs eine einzelne Speicherseite.
  • In einer weiteren Ausführungsform wird ein Faltungsverfahren ausgeführt. Das Verfahren enthält: Überwachen mit einer Steuereinheit eines Systems eines Betrags von Daten, die in einem Speicherort eines Datenspeicherbereichs niedriger Speicherdichte des Datenspeichersystems gespeichert sind; Bestimmen mit der Steuereinheit, dass der Betrag von Daten ein Schwellenwertniveau erreicht hat; und in Reaktion auf das Bestimmen Ausgeben mit einer Leistungssteuerungsschaltungsanordnung einer Anfangsreihe von Impulsen einer ersten Programmieroperation, um den Betrag von Daten in einem Speicherort eines Datenspeicherbereichs hoher Speicherdichte des Datenspeichersystems zu programmieren.
  • In einigen Ausführungsformen enthält der Speicherort des Datenspeicherbereichs niedriger Speicherdichte einen ersten Speicherort des Datenspeicherbereichs niedriger Speicherdichte, der Speicherort des Datenspeicherbereichs hoher Speicherdichte enthält einen ersten Speicherort des Datenspeicherbereichs hoher Speicherdichte, der Betrag der Datenmenge enthält einen ersten Betrag von Daten, die Anfangsreihe von Impulsen enthält eine erste Anfangsreihe von Impulsen, und das Verfahren enthält: Überwachen mit der Steuereinheit eines zweiten Betrags von Daten, die in einem zweiten Speicherort des Datenspeicherbereichs niedriger Speicherdichte des Datenspeichersystems gespeichert sind; in Reaktion darauf, dass die Steuereinheit bestimmt, dass der zweite Betrag von Daten das Schwellenwertniveau erreicht hat: Ausgeben mit der Leistungssteuerungsschaltungsanordnung einer Anfangsreihe von Impulsen einer zweiten Programmieroperation, um den zweiten Betrag von Daten in einem zweiten Speicherort des Datenspeicherbereichs hoher Speicherdichte zu programmieren; und Ausgeben mit der Leistungssteuerungsschaltungsanordnung einer zweiten Reihe von Impulsen der ersten Programmieroperation, um den ersten Betrag von Daten in dem ersten Speicherort des Datenspeicherbereichs hoher Speicherdichte zu programmieren.
  • In einigen Ausführungsformen enthält das Verfahren: Überwachen mit der Steuereinheit eines dritten Betrags von Daten, die in einem dritten Speicherort des Datenspeicherbereichs niedriger Speicherdichte des Datenspeichersystems gespeichert sind; in Reaktion darauf, dass die Steuereinheit bestimmt, dass der dritte Betrag von Daten das Schwellenwertniveau erreicht hat: Ausgeben mit der Leistungssteuerungsschaltungsanordnung einer Anfangsreihe von Impulsen einer dritten Programmieroperation, um den dritten Betrag von Daten in einem dritten Speicherort des Datenspeicherbereichs hoher Speicherdichte zu programmieren; Ausgeben mit der Leistungssteuerungsschaltungsanordnung einer zweiten Reihe von Impulsen der zweiten Programmieroperation, um den zweiten Betrag von Daten in dem zweiten Speicherort des Datenspeicherbereichs hoher Speicherdichte zu programmieren; und Ausgeben mit der Leistungssteuerungsschaltungsanordnung einer dritten Reihe von Impulsen der ersten Programmieroperation, um den ersten Betrag von Daten in dem zweiten Speicherort des Datenspeicherbereichs hoher Speicherdichte zu programmieren.
  • In einigen Ausführungsformen sind der erste Speicherort des zweiten Datenspeicherbereichs, der zweite Speicherort des zweiten Datenspeicherbereichs und der dritte Speicherort des zweiten Datenspeicherbereichs benachbarte Speicherorte des zweiten Datenspeicherbereichs.
  • In einigen Ausführungsformen ist der Speicherort eine einzelne Seite des Datenspeicherbereichs hoher Speicherdichte.
  • In einer weiteren Ausführungsform enthält das Datenspeichersystem einen Datenspeicher und eine Steuereinheit. Der Datenspeicher enthält einen ersten Datenspeicherbereich und einen zweiten Datenspeicherbereich, wobei der erste Datenspeicherbereich eine niedrigere Speicherdichte enthält als der zweite Datenspeicherbereich. Die Steuereinheit ist konfiguriert zum: Programmieren einer Datenmenge in den ersten Datenspeicherbereich und den zweiten Datenspeicherbereich; und Aktualisieren einer Adressdatenstruktur, um die Datenmenge als in dem zweiten Datenspeicherbereich jedoch nicht in dem ersten Datenspeicherbereich gespeichert zu identifizieren.
  • In einigen Ausführungsformen ist die Steuereinheit konfiguriert, eine Leseanforderung, die Datenmenge aus dem Datenspeicher zu lesen, zu empfangen; und in Reaktion auf den Empfang der Anforderung: zu bestimmen, ob die Datenmenge, die in dem zweiten Datenspeicherbereich gespeichert ist, eingespeichert oder nicht eingespeichert ist; in Reaktion auf eine Bestimmung, dass die Datenmenge, die in dem zweiten Datenspeicherbereich gespeichert ist, eingespeichert ist, die Datenmenge aus dem zweiten Datenspeicherbereich zu lesen; in Reaktion auf eine Bestimmung, dass die Datenmenge, die in dem zweiten Datenspeicherbereich gespeichert ist, nicht eingespeichert ist, die Datenmenge aus dem ersten Datenspeicherbereich zu lesen.
  • In einigen Ausführungsformen ist die Steuereinheit konfiguriert zu identifizieren, wo die Datenmenge in dem zweiten Datenspeicherbereich relativ zu einer Adresse des zweiten Datenspeicherbereichs, auf die ein Einspeicherzeiger in einer Adressdatenbank zeigt, gespeichert ist, um zu bestimmen, ob die Datenmenge, die in dem zweiten Datenspeicherbereich gespeichert ist, verifiziert ist.
  • In einigen Ausführungsformen zeigt der Einspeicherzeiger auf eine Adresse des zweiten Datenspeicherbereichs, wo eine letzte eingespeicherte Datenmenge gespeichert ist.
  • In einigen Ausführungsformen enthält die Datenmenge eine erste Datenmenge, und die Steuereinheit ist konfiguriert, in Reaktion auf die Bestimmung, dass die erste Datenmenge nicht eingespeichert ist, zu identifizieren, wo die erste Datenmenge in dem zweiten Datenspeicherbereich gespeichert ist in Relation dazu, wo eine zweite Datenmenge in dem zweiten Datenspeicherbereich gespeichert ist. Die zweite Datenmenge ist als eine letzte Datenmenge identifiziert, die in dem zweiten Datenspeicher mit einer letzten Phase einer Mehrphasen-Programmieroperation programmiert worden ist.
  • In einigen Ausführungsformen ist die Steuereinheit konfiguriert, einen gefalteten Zeiger auf eine Adresse zu zeigen, wo die zweiten Daten in dem zweiten Datenspeicherbereich gespeichert sind, in Reaktion darauf, dass die letzte Phase der Mehrphasen-Programmieroperation ausgeführt wird.
  • In einigen Ausführungsformen ist die Steuereinheit ferner konfiguriert, eine dritte Datenmenge in den zweiten Datenspeicherbereich zu programmieren, und vor dem Ausführen einer letzten Phase einer Mehrphasen-Programmieroperation die dritte Datenmenge in den Datenspeicherbereich zu programmieren, eine Einspeicheroperation auszuführen, um die erste Datenmenge einzuspeichern, und die letzte Phase der Mehrphasen-Programmieroperation auszuführen, um die zweite Datenmenge in die Datenspeicheroperation zu programmieren.
  • In einer weiteren Ausführungsform enthält ein Datenspeichersystem: einen Datenspeicher, der einen ersten Datenspeicherbereich und einen zweiten Datenspeicherbereich enthält, wobei der erste Datenspeicherbereich eine niedrigere Speicherdichte enthält als der zweite Datenspeicherbereich; Mittel zum Programmieren einer Datenmenge in einen Speicherort des ersten Datenspeicherbereichs, die in einem Speicherort des zweiten Datenspeicherbereichs gespeichert werden soll, wobei der Speicherort des ersten Datenspeicherbereichs und der Speicherort des zweiten Datenspeicherbereichs die gleiche Speicherkapazität aufweisen; und Mittel zum Ausführen einer Anfangsphase einer Schreiboperation auf dem Speicherort des zweiten Datenspeicherbereichs, um die Datenmenge in dem Speicherort des zweiten Datenspeicherbereichs zu speichern, in Reaktion darauf, dass die gesamte Datenmenge in dem Speicherort des ersten Datenspeicherbereichs gespeichert ist.
  • Andere Ausführungsformen sind möglich, und jede aus den Ausführungsformen kann allein oder gemeinsam in Kombination verwendet werden. Dementsprechend werden jetzt verschiedene Ausführungsformen mit Bezug auf die beigefügten Zeichnungen beschrieben.
  • Ausführungsformen
  • Die folgenden Ausführungsformen beschreiben nichtflüchtige Datenspeichersysteme und zugehörige Verfahren zum unmittelbaren Falten von Daten in Speicher hoher Dichte, um einzelne Aktualisierungen einer Adressenabbildungsdatenbank zu ermöglichen. Vor dem Hinwenden zu diesen und anderen Ausführungsformen stellen die folgenden Absätze eine Diskussion beispielhafter nichtflüchtiger Datenspeichersysteme und Speichermodule bereit, die mit diesen Ausführungsformen verwendet werden können. Selbstverständlich das diese nur Beispiele, und andere geeignete Typen nichtflüchtiger Datenspeichersystemen und/oder Speichermodule können verwendet werden.
  • 1A ist ein Blockdiagramm, das ein nichtflüchtiges Datenspeichersystem 100 darstellt. Das nichtflüchtige Datenspeichersystem 100 kann eine Steuereinheit 102 und nichtflüchtigen Datenspeicher, der aus einer oder mehreren nichtflüchtigen Datenspeicher-Chips 104 hergestellt sein kann, enthalten. Wie hier verwendet bezieht sich der Begriff Chip auf die Gruppe nichtflüchtiger Datenspeicherzellen und zugeordneter Schaltungsanordnung zum Managen des physikalischen Betriebs dieser nichtflüchtigen Datenspeicherzellen, die auf einem einzigen Halbleitersubstrat gebildet sind. Die Steuereinheit 102 kann eine Schnittstelle mit einem Host-System aufweisen und Befehlssequenzen für Lese-, Programmier- und Löschoperationen zu dem/den nichtflüchtigen Datenspeicher-Chip(s) 104 übertragen.
  • Die Steuereinheit 102 (die eine Flash-Datenspeicher-Steuereinheit sein kann) kann die Form einer Verarbeitungsschaltungsanordnung, eines Mikroprozessors oder Prozessors und eines computerlesbaren Mediums annehmen, das computerlesbaren Programmcode (z. B. Software oder Firmware) speichert, der beispielsweise durch den (Mikro-) Prozessor, Logikgatter, Schalter, eine anwendungsspezifische integrierte Schaltung (ASIC), eine programmierbare Logiksteuereinheit und eine eingebettete Mikrosteuereinheit ausgeführt werden kann. Die Steuereinheit 102 kann mit Hardware und/oder Firmware konfiguriert sein, um die verschiedenen nachstehend beschriebenen und in den Ablaufdiagrammen gezeigten Funktionen auszuführen. Außerdem können einige der Komponenten, die als innerhalb der Steuereinheit gezeigt sind, auch außerhalb der Steuereinheit gespeichert sein, und andere Komponenten können verwendet sein. Zusätzlich könnte der Ausdruck „betriebstechnisch in Kommunikation mit“ direkt in Kommunikation mit oder indirekt (drahtgebunden oder drahtlos) in Kommunikation mit über eine oder mehrere Komponenten, die hier gezeigt oder beschrieben sein können oder nicht.
  • Wie hier verwendet ist eine Flash-Datenspeicher-Steuereinheit eine Vorrichtung, die Daten managt, die auf dem Flash-Datenspeicher gespeichert sind, und mit einem Host wie z. B. einem Computer oder einer elektronischen Vorrichtung kommuniziert. Eine Flash-Datenspeicher-Steuereinheit kann verschiedene Funktionalität zusätzlich zu der hier beschriebenen spezifischen Funktionalität aufweisen. Beispielsweise kann die Flash-Datenspeicher-Steuereinheit den Flash-Datenspeicher formatieren, um sicherzustellen, dass der Datenspeicher korrekt arbeitet, fehlerhafte Flash-Datenspeicherzellen festlegen und Ersatzzellen zuweisen, die zukünftige ausgefallene Zellen ersetzen sollen. Ein Teil der Ersatzzellen kann verwendet werden, um Firmware zu halten, um die Flash-Datenspeicher-Steuereinheit zu betreiben und andere Merkmale zu implementieren. Im Betrieb, wenn ein Host Daten aus dem Flash-Datenspeicher lesen oder Daten hinein schreiben muss, wird er mit der Flash-Datenspeicher-Steuereinheit kommunizieren. Falls der Host eine logische Adresse bereitstellt, in die Daten gelesen/geschrieben werden sollen, kann die Flash-Datenspeicher-Steuereinheit die von dem Host empfangene logische Adresse in eine physikalische Adresse in dem Flash-Datenspeicher umsetzen. (Alternativ kann der Host die physikalische Adresse bereitstellen). Die Flash-Datenspeicher-Steuereinheit kann außerdem verschiedene Datenspeichermanagementfunktionen ausführen, wie z. B. Verschleißausgleich (Verteilen von Schreibvorgängen, um Verschleiß spezifischer Blöcke des Datenspeichers, in die andernfalls wiederholt geschrieben würde, zu vermeiden) und Speicherbereinigung (nachdem ein Block voll ist, Verlagern nur der validen Seiten von Daten in einen neuen Block, so dass der volle Block gelöscht und neu verwendet werden kann), ist jedoch nicht darauf beschränkt.
  • Die Schnittstelle zwischen der Steuereinheit 102 und dem nichtflüchtigen Datenspeicher-Chip 104 kann irgendeine geeignete Flash-Schnittstelle sein, wie z. B. Toggle Mode 200, 400 oder 800. In einer Ausführungsform kann das Datenspeichersystem 100 ein kartenbasiertes System sein, wie z. B. eine sichere digitale Karte (SD-Karte) oder eine sichere digitale Micro-Karte (Micro-SD-Karte) sein. In einer alternativen Ausführungsform kann das System 100 Teil eines eingebetteten Datenspeichersystems sein.
  • Obwohl in dem in 1A dargestellten Beispiel das nichtflüchtige Datenspeichersystem 100 einen einzigen Kanal zwischen der Steuereinheit 102 und dem/den nichtflüchtigen Datenspeicher-Chip(s) 104 enthalten kann, ist der hier beschriebene Gegenstand nicht darauf beschränkt, dass er einen einzigen Datenspeicherkanal aufweist. Beispielsweise können in einigen NAND-Datenspeichersystemarchitekturen 2, 4, 8 oder mehr NAND-Kanäle zwischen der Steuereinheit und dem/den NAND-Datenspeicher-Chip(s) 104 existieren, abhängig von den Fähigkeiten der Steuereinheit. In jeder aus den hier beschriebenen Ausführungsformen kann mehr als ein einziger Kanal zwischen der Steuereinheit und dem/den Datenspeicher-Chip(s) 104 existieren, selbst wenn ein einziger Kanal in den Zeichnungen gezeigt ist.
  • 1B stellt ein Speichermodul 200 dar, das mehrere nichtflüchtige Datenspeichersysteme 100 enthält. Als solches kann das Speichermodul 200 eine Speichersteuereinheit 202 enthalten, die eine Schnittstelle mit einem Host und mit einem Speichersystem 204 aufweist, das mehrere nichtflüchtige Datenspeichersysteme 100 enthält. Die Schnittstelle zwischen der Speichersteuereinheit 202 und nichtflüchtigen Datenspeichersystemen 100 kann eine Busschnittstelle sein, wie ein serieller Anschluss mit weiterentwickelter Technologie (SATA), eine Express-Schnittstelle für periphere Komponenten (PCIe-Schnittstelle), eine Schnittstelle einer eingebetteten Multimediakarte (eMMC-Schnittstelle), eine SD-Schnittstelle oder eine Schnittstelle über einen universellen seriellen Bus (USB-Schnittstelle) als Beispiele. Das Speichersystem 200 kann in einer Ausführungsform ein Festkörperlaufwerk (SSD) sein, wie es z. B. in tragbaren Berechnungsvorrichtungen wie z. B. Laptop-Computern und Tablet-Computern und Mobiltelefonen zu finden ist.
  • 1C ist ein Blockdiagramm, das ein hierarchisches Speichersystem 210 darstellt. Das hierarchische Speichersystem 210 kann mehrere Speichersteuereinheiten 202 enthalten, von denen jede ein entsprechendes Speichersystem 204 steuert. Die Host-Systeme 212 können über eine Busschnittstelle auf Datenspeicher innerhalb des hierarchischen Speichersystems 210 zugreifen. Beispielhafte Busschnittstellen können eine Express-Schnittstelle für nichtflüchtigen Datenspeicher (NVMe), eine Fiber-Channel-über-Ethernet- (FCoE-) Schnittstelle, eine SD-Schnittstelle, eine USB-Schnittstelle, eine SATA-Schnittstelle, eine PCIe-Schnittstelle oder eine eMMC-Schnittstelle als Beispiele enthalten. In einer Ausführungsform kann das in 1C dargestellte Speichersystem 210 ein als Rack montierbares Massenspeichersystem sein, auf das durch mehrere Host-Computer zugegriffen werden kann, so wie es in einem Datenzentrum oder einem anderen Ort, wo Massenspeicher benötigt wird, zu finden wäre.
  • 2A ist ein Blockdiagramm, das beispielhafte Komponenten der Steuereinheit 102 genauer darstellt. Die Steuereinheit 102 kann ein Frontend-Modul 108 enthalten, das eine Schnittstelle mit einem Host aufweist, ein Backend-Modul 110, das Schnittstellen mit dem/den nichtflüchtigen Datenspeicher-Chip(s) 104 aufweist, und verschiedene andere Module, die verschiedene Funktionen des nichtflüchtigen Datenspeichersystems 100 ausführen. Im Allgemeinen kann ein Modul Hardware oder eine Kombination aus Hardware und Software sein. Beispielsweise kann jedes Modul eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gatter-Array (FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeinen anderen Typ von Hardware oder eine Kombination daraus enthalten. Zusätzlich oder alternativ kann jedes Modul Datenspeicher-Hardware enthalten, die Anweisungen enthält, die mit einem Prozessor oder einer Prozessorschaltungsanordnung ausführbar sind, um eines oder mehrere aus den Merkmalen des Moduls zu implementieren. Wenn irgendeines aus den Modulen den Abschnitt des Datenspeichers enthält, der Anweisungen enthält, die mit dem Prozessor ausführbar sind, dann kann das Modul den Prozessor enthalten oder nicht. In einigen Beispielen kann jedes Modul genau der Abschnitt des Datenspeichers sein, der Anweisungen enthält, die mit dem Prozessor ausführbar sind, um die Merkmale des entsprechenden Moduls auszuführen, ohne dass das Modul irgendeine andere Hardware enthält. Weil jedes Modul wenigstens einige Hardware enthält, selbst wenn die enthaltene Hardware Software enthält, kann jedes Modul synonym als ein Hardware-Modul bezeichnet sein.
  • Die Steuereinheit 102 kann ein Puffermanager/Bussteuereinheit-Modul 114 enthalten, das Puffer in dem Direktzugriffsspeicher (RAM) 116 managt und die interne Busarbitration zur Kommunikation auf einem internen Kommunikationsbus 117 der Steuereinheit 102 steuert. Ein Festwertspeicher (ROM) 118 kann Systemanlaufcode speichern und/oder auf ihn zugreifen. Obwohl sie in 2A so dargestellt sind, dass sie sich getrennt von der Steuereinheit 102 befinden, können sich in anderen Ausführungsformen der RAM 116 und/oder der ROM 118 innerhalb der Steuereinheit befinden. In noch anderen Ausführungsformen können sich Abschnitte des RAM 116 oder ROM 118 sowohl innerhalb der Steuereinheit 102 als auch außerhalb der Steuereinheit 102 befinden. Ferner können sich in einigen Implementierungen die Steuereinheit 102, der RAM 116 und der ROM 118 auf separaten HalbleiterChips befinden.
  • Zusätzlich kann das Frontend-Modul 108 eine Host-Schnittstelle 120 und eine Bitübertragungsschichtschnittstelle (PHY) 122 enthalten, die die elektrische Schnittstelle zu dem Host oder einer Speichersteuereinheit der nächsten Ebene bereitstellen. Die Wahl des Typs der Host-Schnittstelle 120 kann von dem Typ des verwendeten Datenspeichers abhängen. Beispieltypen für Host-Schnittstellen 120 können SATA, SATA-Express, SAS, Fibre Channel, USB, PCIe und NVMe enthalten, sind jedoch nicht darauf beschränkt. Die Host-Schnittstelle 120 kann typischerweise die Übertragung von Daten, Steuersignalen und Zeitsignalen unterstützen.
  • Das Backend-Modul 110 kann ein/e Fehlerkorrekturcode-Engine oder -Modul (ECC-Engine/Modul), die/das die Daten-Bytes, die von dem Host empfangen werden, codiert und die Daten-Bytes, die aus dem nichtflüchtigen Datenspeicher 104 gelesen werden, decodiert und fehlerkorrigiert. Das Backend-Modul 110 kann außerdem einen Befehlssequenzer 126 enthalten, der Befehlssequenzen erzeugt, wie z. B. Programmier-, Lese- und Lösch-Befehlssequenzen, die zu dem/den nichtflüchtigen Datenspeicher-Chip(s) übertragen werden sollen. Zusätzlich kann das Backend-Modul 110 ein RAID-Modul (Modul eines redundanten Array aus unabhängigen Chips) 128 enthalten, das die Erzeugung von RAID-Parität und Wiederherstellung fehlerhafter Daten managt. Die RAID-Parität kann als eine zusätzliche Ebene des Integritätsschutzes für die Daten, die in das nichtflüchtige Datenspeichersystem 100 geschrieben werden, verwendet werden. In einigen Fällen kann das RAID-Modul 128 ein Teil der ECC-Engine 124 sein. Eine Datenspeicherschnittstelle 130 stellt die Befehlssequenzen für den/die nichtflüchtigen Datenspeicher-Chip(s) 104 bereit und empfängt Statusinformationen von dem/den nichtflüchtigen Datenspeicher-Chip(s) 104. Zusammen mit den Befehlssequenzen und Statusinformationen können Daten, die in den/die nichtflüchtigen Datenspeicher-Chip(s) 104 geschrieben oder aus ihm/ihnen gelesen werden sollen, über die Datenspeicherschnittstelle 130 kommuniziert werden. In einer Ausführungsform kann die Datenspeicherschnittstelle 130 eine Schnittstelle mit doppelter Datenrate (DDR-Schnittstelle) sein, wie z. B. eine Toggle Mode-Schnittstelle 200, 400 oder 800. Eine Flash-Steuerschicht 132 kann den Gesamtbetrieb des Backend-Moduls 110 steuern.
  • Zusätzliche Module des in 2A dargestellten nichtflüchtigen Datenspeichersystems 100 können eine Medienmanagementschicht 138, die Verschleißausgleich von Datenspeicherzellen des nichtflüchtigen Datenspeicher-Chips 104 und Adressenmanagement ausführt und Faltungsoperationen unterstützt, wie nachstehend genauer beschrieben ist. Das nichtflüchtige Datenspeichersystem 100 kann außerdem andere diskrete Komponenten 140 enthalten, wie z. B. externe elektrische Schnittstellen, externen RAM, Widerstände, Kondensatoren oder andere Komponenten, die eine Schnittstelle zu der Steuereinheit 102 aufweisen können. In alternativen Ausführungsformen sind eines oder mehrere aus dem RAID-Modul 128, der Medienmanagementschicht 138 und der Puffermanagement/Bussteuereinheit 114 optionale Komponenten, die in der Steuereinheit 102 nicht notwendig sein können.
  • 2B ist ein Blockdiagramm, das beispielhafte Komponenten eines nichtflüchtigen Datenspeicher-Chips 104 genauer darstellt. Der nichtflüchtige Datenspeicher-Chip 104 kann ein nichtflüchtiges Datenspeicher-Array 142 enthalten. Das nichtflüchtige Datenspeicher-Array 142 kann mehrere nichtflüchtige Datenspeicherelemente oder Zellen enthalten, von denen jede/s konfiguriert ist, ein oder mehrere Datenbits zu speichern. Die nichtflüchtigen Datenspeicherelemente oder Zellen können irgendwelche geeigneten nichtflüchtigen Datenspeicherzellen sein, die NAND-Flash-Datenspeicherzellen und/oder NOR-Flash-Datenspeicherzellen in einer zweidimensionalen und/oder dreidimensionalen Konfiguration enthalten. Die Datenspeicherzellen können die Form von Festkörper- (z. Flash-) Datenspeicherzellen annehmen und können einmal programmierbar, einige Male programmierbar oder viele Male programmierbar sein. Zusätzlich können die Datenspeicherelemente oder Zellen als Einpegelzellen (SLCs), die ein einziges Datenbit pro Zelle speichern, Mehrpegelzellen (MLCs), die mehrere Datenbits pro Zelle speichern, oder Kombinationen daraus konfiguriert oder programmiert sein. Beispielhafte Mehrpegelzellen können konfiguriert oder programmiert sein, 2 Bit pro Zelle, 3 Bits pro Zelle, 4 Bits pro Zelle oder mehr zu speichern. Wie hier verwendet kann eine MLC, die konfiguriert oder programmiert ist, 2 Bits pro Zelle zu speichern, als eine 2X-MLC bezeichnet sein, eine MLC, die konfiguriert oder programmiert ist, 3 Bits pro Zelle zu speichern, kann als eine 3X-MLC bezeichnet sein, eine MLC, die konfiguriert oder programmiert ist, 4 Bits pro Zelle zu speichern, kann also eine 4X-MLC bezeichnet sein, und allgemeiner kann eine MLC, die konfiguriert oder programmiert ist, Q Bits pro Zelle zu speichern, als eine QX-MLC bezeichnet sein, wobei Q eine Ganzzahl von 2 oder größer ist.
  • Zusätzlich kann eine Flash-Datenspeicherzelle in dem Array 143 einen Transistor mit schwebendem Gate (FGT) enthalten, der ein schwebendes Gate und ein Steuer-Gate aufweist. Das schwebende Gate ist durch einen Isolator oder isolierendes Material umgeben, das dazu beiträgt, Ladung in dem schwebenden Gate zu halten. Das Vorhandensein oder Fehlen von Ladungen innerhalb des schwebenden Gates kann eine Verschiebung der Schwellenspannung des FGT verursachen, die verwendet wird, um Logikpegel zu unterscheiden. Das heißt, die Schwellenspannung jedes FGT kann die Daten, die in der Datenspeicherzelle gespeichert sind, angeben. Nachstehend können FGT, Datenspeicherelement und Datenspeicherzelle synonym verwendet sein, um die gleiche physikalische Entität zu bezeichnen.
  • Die Datenspeicherzellen können in dem Datenspeicher-Array 142 in Übereinstimmung mit einer matrixähnlichen Struktur aus Zeilen und Spalten von Datenspeicherzellen angeordnet sein. An dem Schnittpunkt einer Zeile und einer Spalte ist eine Speicherzelle (z. B. ein FGT). Eine Spalte aus FGTs kann als eine Kette bezeichnet sein. FGTs in einer Kette oder Spalte können elektrisch in Reihe verbunden sein. Eine Zeile aus FGTs kann als eine Seite bezeichnet sein. Steuer-Gates von FGTs in einer Seite oder einer Zeile können elektrisch miteinander verbunden sein.
  • Das Datenspeicher-Array 142 kann außerdem Wortleitungen und Bitleitungen enthalten, die mit den FGTs verbunden sind. Jede Seite von FGTs ist mit einer Wortleitung gekoppelt. Insbesondere kann jede Wortleitung mit den Steuer-Gates von FGTs in einer Seite gekoppelt sein. Zusätzlich kann jede Kette aus FGTs mit einer Bitleitung gekoppelt sein. Ferner kann eine einzelne Kette mehrere Wortleitungen überspannen, und die Anzahl von FGTs in einer Kette kann gleich der Anzahl von Seiten in einem Block sein.
  • 3 ist ein schematisches Schaltbild wenigstens eines Abschnitts eines beispielhaften Flash-Datenspeicher-Array 300 vom NAND-Typ, das für wenigstens einen Abschnitt des Datenspeicher-Arrays 142 repräsentativ sein kann. Der Abschnitt 300 des Datenspeicher-Arrays kann eine Anzahl P von in Reihe verbundenen Ketten von (N mal M) FGTs enthalten, von denen jede mit einer Anzahl P von Bitleitungen BL1 bis BLP-1 gekoppelt ist, wobei N die Anzahl von Blöcken 3080 bis 308N-1 in dem Datenspeicher-Array 300 ist und M die Anzahl von Seiten von FGTs ist, die mit den Wortleitungen WL in jedem aus der Anzahl N von Blöcken 3080 bis 308N-1 gekoppelt sind.
  • Um Daten aus den FGTs zu erfassen, können eine Seite von FGTs und eine entsprechende Wortleitung ausgewählt werden, und Stromerfassen von Bitleitungen kann eingesetzt werden, um zu bestimmen, ob ein schwebendes Gate eines FGT in der ausgewählten Seite Ladung beinhaltet oder nicht. Strom, der durch eine Kette fließt, kann von einer Source-Leitung SL durch die Kette zu einer Bitleitung BL, mit der die Kette gekoppelt ist, fließen. Die Kette kann mit der Source-Leitung SL über einen Source-Auswahltransistor gekoppelt sein und kann mit ihrer zugeordneten Bitleitung BL über einen Drain-Auswahltransistor gekoppelt sein. Beispielsweise kann eine erste Kette aus FGTs 302(0,0) bis 302(NM-1,0) mit der Source-Leitung SL über einen Source-Auswahltransistor 3040 gekoppelt sein, der mit der Source-Leitung SL verbunden ist, und kann mit ihrer zugeordneten Bitleitung BL0 über einen Drain-Auswahltransistor 3060 gekoppelt sein. Die anderen Ketten können ähnlich gekoppelt sein. Das Schalten der Source-Auswahltransistoren 3040, 3041, ..., 304P-1 kann unter Verwendung einer Source-Auswahl-Gate-Vorspannungsleitung SSG gesteuert werden, eine Source-Auswahl-Gate-Vorspannungsspannung VSSG zuführt, um die Source-Auswahltransistoren 3040, 3041, ..., 304P-1 an- und abzuschalten. Zusätzlich kann das Schalten der Drain-Auswahltransistoren 3060, 3061, ..., 306P-1 unter Verwendung einer Drain-Auswahl-Gate-Vorspannungsleitung DSG gesteuert werden, die eine Drain-Auswahl-Gate-Vorspannungsspannung VDSG zuführt, um die Drain-Auswahltransistoren 3060, 3061, ..., 306P-1 an- und abzuschalten.
  • Um eine Datenspeicherzelle zu programmieren, wird eine Programmierspannung an das Steuer-Gate des Speicherelements angelegt, und die Bitleitung BL, die der Datenspeicherzelle zugeordnet ist, wird an Masse gelegt. Elektronen aus dem Kanal werden in das schwebende Gate der Datenspeicherzelle injiziert. Das kann verursachen, dass die Elektronen in dem schwebenden Gate akkumulieren, was wiederum verursachen kann, dass das schwebende Gate negativ geladen wird und die Schwellenspannung der Datenspeicherzelle angehoben wird. Um die Programmierspannung an das Steuer-Gate der Datenspeicherzelle, die programmiert wird, anzulegen, wird die Programmierspannung an die Wortleitung WL, mit der die Datenspeicherzelle gekoppelt ist, angelegt. Das Anlegen der Programmierspannung kann Anlegen einer Reihe oder Sequenz von Programmierspannungsimpulsen an das Steuer-Gate der Datenspeicherzelle, die programmiert wird, über die Wortleitung WL enthalten. In einigen Beispielkonfigurationen kann die Reihe von Programmierspannungsimpulsen ansteigende Höhen aufweisen, beginnend mit einem Anfangsimpuls der Reihe, der eine Anfangsprogrammierspannungsgröße aufweist. Wie vorstehend diskutiert verwendet eine Speicherzelle in jeder aus den Ketten dieselbe Wortleitung WL gemeinsam.
  • Wenn Daten in Mehrpegelzellen (MLCs) programmiert werden, kann eine Anzahl Q von Datenseiten in eine einzelne Seite des QX-MLC-Speichers (z. B. eine Seite von FGTs, die als QX-MLCs programmiert werden soll) programmiert werden. So können beispielsweise drei Datenseiten von Daten in eine einzelne Speicherseite von 3X-MLCs programmiert werden. Eine Programmieroperation, um eine Anzahl Q von Seiten von Daten in einen QX-MLC-Speicher zu programmieren, kann mehrere Programmierstufen oder Phasen enthalten, die eine erste oder Anfangsphase (wie als die LM-Phase bezeichnet sein kann), eine zweite oder Zwischenphase (die als die „Foggy“-Phase bezeichnet sein kann) und eine dritte oder Endphase (die als die „Fine“-Phase bezeichnet sein kann) enthalten. Eine Reihe oder Sequenz von Programmierspannungsimpulsen kann in jeder aus den Phasen angelegt werden. Die unterschiedlichen Phasen können sich voneinander darin unterscheiden, dass ihre entsprechenden Impulse unterschiedliche Höhen oder Spannungspegel aufweisen können, ihre entsprechenden Größenschrittstufen zwischen den Impulsen unterschiedlich sein können, die Anzahl von Impulsen in ihrer entsprechenden Reihe oder Sequenz unterschiedlich sein kann, Verifizierungsspannungspegel unterschiedlich sein können, oder eine Kombination daraus.
  • Die Programmieroperation kann in mehrere Stufen unterteilt sein, um die Programmstöreffekte zu reduzieren oder zu minimieren, die benachbarten Speicherseiten und/oder Wortleitungen zugeordnet sind. Dazu können aufeinanderfolgende Phasen auf einer n-ten Wortleitung WLn, um eine Anzahl Q von Datenseiten in einer n-ten Speicherseite von QX-MLCs, die mit der n-ten Wortleitung WLn gekoppelt ist, zu speichern, von der Ausführung früherer Phasen auf benachbarten Wortleitungen WLn+1 und WLn+2 abhängen, wobei die (n+1)-te Wortleitungen WLn+1 in der Mitte von und benachbart jeder aus der n-ten Wortleitung WLn und der (n+2)-ten Wortleitung WLn+2 ist.
  • Genauer ist als eine Beispieldarstellung einer Mehrphasen-Programmieroperation angenommen, dass drei Datenmengen, die eine n-te Datenmenge Dn, eine (n+1)-te Datenmenge Dn+1 und eine (n+2)-te Datenmenge Dn+2 enthalten, in drei benachbarte oder aufeinander folgende MLC-Speicherseiten, die eine n-te Speicherseite Pn, die mit einer n-ten Wortleitung WLn gekoppelt ist, eine (n+1)-te Speicherseite Pn+1, die mit einer (n+1)-nten Wortleitung WLn+1 gekoppelt ist, und eine (n+2)-te Speicherseite Pn+2, die mit einer (n+2)-ten Wortleitung WLn+2 gekoppelt ist, enthalten, programmiert werden sollen. Um die Datenmengen Dn, Dn+1, Dn+2 in die drei Speicherseiten Pn, Pn+1, Pn+2 zu programmieren, wird eine erste Phase einer ersten Programmieroperation, die der n-ten Datenmenge Dn zugeordnet ist, durch Anlegen einer ersten Reihe von Impulsen, die der erste Phase zugeordnet ist, an die n-te Wortleitung WLn ausgeführt. Dann wird vor dem Ausführen einer zweiten Phase der ersten Programmieroperation eine erste Phase einer zweiten Programmieroperation, die der (n+1)-ten Datenmenge Dn+1 zugeordnet ist, durch Anlegen einer ersten Reihe von Impulsen, die der ersten Phase zugeordnet ist, an die (n+1)-te Wortleitung WLn+1 ausgeführt. Danach wird die zweite Phase der ersten Programmieroperation durch Anlegen einer zweiten Reihe von Impulsen, die der zweiten Phase zugeordnet ist, an die n-te Wortleitung WLn ausgeführt. Dann wird vor dem Ausführen einer dritten Phase der ersten Programmieroperation oder einer zweiten Phase der zweiten Programmieroperation eine erste Phase einer dritten Programmieroperation, die der (n+2)-ten Datenmenge Dn+2 zugeordnet ist, durch Anlegen einer ersten Reihe von Impulsen, die der ersten Phase zugeordnet ist, an die (n+2)-te Wortleitung WLn+2 ausgeführt. Danach wird die zweite Phase der zweiten Programmieroperation durch Anlegen einer zweiten Reihe von Impulsen, die der zweiten Phase zugeordnet ist, an die (n+1)-te Wortleitung WLn+1 ausgeführt, und die dritte Phase der ersten Programmieroperation wird durch Anlegen einer dritten Reihe von Impulsen, die der dritten Phase zugeordnet ist, an die n-te Wortleitung WLn ausgeführt. Dann, da alle drei Phasen auf der n-ten Wortleitung WLn ausgeführt worden sind, kann die n-te Datenmenge Dn der ersten Programmieroperation fertiggestellt sein, und die n-ten Datenmenge Dn kann als in die n-te Speicherseite Pn programmiert betrachtet werden. Die zweite und die dritte Programmieroperation können ähnlich fertiggestellt werden nach dem Beginnen des Programmierens zusätzlicher Datenmengen Dn+3 und Dn+4 in die (n+3)-te und (n+4)-te Speicherseite Pn+3 und Pn+4.
  • Bezug nehmend zurück auf 2B kann der nichtflüchtige Datenspeicher-Chip 104 ferner einen Seitenpuffer oder einen Daten-Cache 144 enthalten, der Daten, die aus dem Datenspeicher-Array 142 erfasst und/oder in es programmiert werden sollen, zwischenspeichert. Der nichtflüchtige Datenspeicher-Chip 104 kann außerdem einen Zeilenadressendecodierer 146 und einen Spaltenadressendecodierer 148 enthalten. Der Zeilenadressendecodierer 146 kann eine Zeilenadresse decodieren und eine spezielle Wortleitung in dem Datenspeicher-Array 142 auswählen, wenn Daten in die Datenspeicherzellen in dem Datenspeicher-Array 142 geschrieben oder aus ihnen gelesen werden. Der Spaltenadressendecodierer 148 kann eine Spaltenadresse decodieren, um eine spezielle Gruppe von Bitleitungen in dem Datenspeicher-Array 142 auszuwählen, die mit dem Daten-Cache 144 elektrisch gekoppelt werden sollen.
  • Zusätzlich kann der nichtflüchtige Datenspeicher-Chip 104 eine periphere Schaltungsanordnung 150 enthalten. Die periphere Schaltungsanordnung 150 kann sowohl einen Zustandsautomaten 152 enthalten, der Statusinformationen für die Steuereinheit 102 bereitstellt, als auch die Steuerung auf Baustein-Ebene von Datenspeicheroperationen bereitstellen. Die periphere Schaltungsanordnung 150 kann außerdem flüchtigen Datenspeicher 154 enthalten. Eine Beispielkonfiguration des flüchtigen Datenspeichers 154 kann Auffangregister enthalten, obwohl andere Konfigurationen möglich sind.
  • Zusätzlich kann die periphere Schaltungsanordnung 150 eine Leistungssteuerungsschaltungsanordnung 156 enthalten, die konfiguriert ist, Spannungen zu erzeugen und dem Datenspeicher-Array 142 zuzuführen, die Spannungen (die Programmierspannungsimpulse enthalten) für die Wortleitungen, Löschspannungen (die Löschspannungsimpulse enthalten), die Source-Auswahl-Gate-Vorspannungsspannung VSSG an die Source-Auswahl-Gate-Vorspannungsleitung SSG, die Drain-Auswahl-Gate-Vorspannungsspannung VDSG an die Drain-Auswahl-Gate-Vorspannungsleitung DGS und außerdem andere Spannungen, die dem Datenspeicher-Array 143 zugeführt werden können, enthalten. In einer Beispielkonfiguration kann die Leistungssteuerungsschaltungsanordnung Ladungspumpen enthalten, um die Spannungen zu erzeugen, obwohl andere Konfigurationen möglich sein können.
  • Bezug nehmend auf 4 können das Datenspeicher-Array 142 und/oder mehrere Datenspeicher-Arrays 142, die mehrere Datenspeicher-Chips 104 überspannen, eine organisatorische Anordnung oder Hierarchie aufweisen, unter der Datenspeicherelemente oder Zellen des Datenspeicher-Array 142 und/oder der mehreren Datenspeicher-Arrays 142 mehrerer Datenspeicher-Chips 104 organisiert sein können. Die Steuereinheit 102 kann konfiguriert sein, Daten in Übereinstimmung mit der organisatorischen Anordnung oder Hierarchie zu speichern und auf sie zuzugreifen.
  • 4 ist ein Blockdiagramm einer beispielhaften organisatorischen Anordnung oder Hierarchie eines Datenspeicher-Array 142 für Flash-Datenspeicher. Wie erwähnt können für Flash-Datenspeicher die Datenspeicherzellen in Blöcke 402 unterteilt oder organisiert sein, und jeder Block 402 kann ferner in eine Anzahl von Seiten 404 unterteilt sein. Jeder Block 402 kann eine minimale Anzahl von Datenspeicherelementen beinhalten, die gemeinsam gelöscht werden können. Zusätzlich kann jede Seite 404 eine Einheit zum Erfassen in dem Datenspeicher-Array 142 sein. Jede individuelle Seite 404 kann ferner in Segmente oder Einheiten 406 unterteilt sein, wobei jede/s Segment oder Einheit 406 die kleinste Anzahl von Datenspeicherzellen beinhaltet, in die gleichzeitig als eine grundlegende Programmieroperation geschrieben werden kann. Daten, die in einem/r Segment oder Einheit von Datenspeicherzellen - als eine Flash-Datenspeichereinheit (FMU), eine ECC-Seite oder ein Codewort bezeichnet - gespeichert sind, können den Betrag von Daten, die zu einer Zeit während einer grundlegenden Programmieroperation geschrieben werden, und/oder den Betrag von Daten, die durch die ECC-Engine 124 während einer einzigen Codierungs- oder Decodierungsoperation codiert oder decodiert werden können, beinhalten. Die Seiten 404 können in die gleiche Anzahl von Segmenten oder Einheiten unterteilt sein. Eine beispielhafte Anzahl von Segmenten oder Einheiten kann vier oder acht sein, obwohl eine andere Anzahl möglich ist. Im Allgemeinen können Daten in Blöcken und Seiten von Datenspeicherelementen nicht zusammenhängend (zufällig) oder zusammenhängend gespeichert sein.
  • Zusätzlich kann die organisatorische Anordnung oder Hierarchie eine oder mehrere Ebenen enthalten, in der jeder aus den Blöcken 402 konfiguriert sein kann. Allgemein enthält eine Ebene eine „Spalte“ aus Blöcken 402, obwohl andere Konfigurationen möglich sein können. Ein einzelnes Datenspeicher-Array 142 kann eine einzige Ebene oder mehrere Ebenen enthalten. Die in 4 gezeigte Beispielanordnung enthält zwei Ebenen, Ebene 0 und Ebene 1. Daten, die in unterschiedlichen Ebenen gespeichert sind, können gleichzeitig oder unabhängig erfasst werden.
  • Zusätzlich kann die organisatorische Anordnung oder Hierarchie Metablöcke 408 und Metaseiten 410 enthalten. Eine Metablockadresse oder -nummer, die einen Metablock identifiziert, kann auf eine logische Adresse (z. B. eine logische Gruppennummer), die durch einen Host bereitgestellt ist, abgebildet werden und/oder ihr entsprechen. Ein Metablock 408 und eine Metaseite 410 können eine/n entsprechende/n einzelne/n Block und Seite in einer einzigen Ebene überspannen oder über ihn/sie verteilt sein, oder können alternativ mehrere Blöcke und mehrere Seiten über mehrere Ebenen überspannen oder über sie verteilt sein. 4 zeigt den Metablock 408 und die Metaseite 410, die zwei Ebenen, Ebene 0 und Ebene 1, überspannen. Abhängig von der organisatorischen Anordnung können Metablöcke 408 und Metaseiten 410, die mehrere Ebenen überspannen, nur die Ebenen eines einzelnen Datenspeicher-Chips 104 überspannen, oder können alternativ mehrere Ebenen überspannen, die sich auf mehreren Datenspeicher-Chips 104 befinden.
  • Bezug nehmend zurück zu 2A können ein Host und das nichtflüchtige Datenspeichersystem 100 unterschiedliche Adressierungsschemas zum Managen des Speicherns von Daten verwenden. Beispielsweise wenn ein Host Daten in das nichtflüchtige Datenspeichersystem 100 schreiben möchte, kann der Host den Daten eine Host- oder logische Adresse (auch als logische Blockadresse (LBA) bezeichnet) zuweisen. Ähnlich kann der Host, wenn der Host Daten aus dem nichtflüchtigen Datenspeichersystem 100 lesen möchte, die Daten, die er lesen möchte, durch die logische Adresse identifizieren. Der Host kann ein Host- oder logisches Adressierungsschema benutzten, in dem das Host-Dateisystem einen logischen Adressenbereich für alle LBAs pflegt, die durch den Host zugewiesen sind oder erkannt werden. Die logischen Adressen (LBAs) können in logische Gruppen (LGs) gruppiert ein, die in Einheiten aus logischen Sektoren weiter unterteilt oder organisiert sein können. Als einige Beispiele können Host-Lese- und Schreibanforderungen Anforderungen sein, ein Segment, das eine Kette logischer Sektoren von Daten mit zusammenhängenden Adressen enthält, zu lesen und zu schreiben.
  • Im Gegensatz zu dem logischen Adressierungsschema des Hosts kann das nichtflüchtige Datenspeichersystem 100, wie vorstehend beschrieben, Daten gemäß einem oder mehreren physikalischen Adressierungsschemas speichern und auf sie zugreifen, die physikalische Adressen verwenden, die von den logischen Adressen verschieden sind, die durch den Host zugewiesen sind, um Daten zu speichern und auf zu zuzugreifen. Um die logische Adressierung des Hosts mit der physikalischen Adressierung des nichtflüchtigen Datenspeichersystems zu koordinieren, kann die Medienmanagementschicht 138 die logischen Adressen auf physikalische Adressen zum Speichern und Abrufen von Daten abbilden.
  • In einigen Beispielkonfigurationen kann das nichtflüchtige Datenspeichersystem 100 zwei physikalische Adressierungsschemas pflegen, ein tatsächliches physikalisches Adressierungsschema und ein abstraktes physikalisches Adressierungsschema. Für einige dieser Beispielkonfigurationen können direkte Abbildungen zwischen den logischen Adressen des Hosts und den abstrakten physikalischen Adressen (anstelle der tatsächlichen physikalischen Adressen) gepflegt werden, und das Modul 160 zum Übersetzen zwischen abstrakt und tatsächlich physikalisch kann verwendet werden, um die abstrakten physikalischen Adressen in die tatsächlichen physikalischen Adressen umzusetzen. Auf diese Weise können logische Gruppen und logische Sektoren einer logischen Gruppe auf Metablöcke und physikalische Sektoren eines Metablocks abgebildet werden oder ihnen entsprechen.
  • 5 zeigt ein schematisches Diagramm einer beispielhaften Abbildung zwischen einer i-ten logischen Gruppe (LGi) und einem j-ten Metablock (MBj). Eine logische Gruppe kann eine Anzahl M logischer Gruppensektoren aufweisen, und ein Metablock kann eine Anzahl N physikalischer Sektoren aufweisen. In einigen Beispielkonfigurationen können M und N gleich sein, so dass eine Eins-zu-eins-Zuordnung zwischen den logischen Sektoren und den physikalischen Sektoren vorhanden ist und ein Metablock des Speichers eine logische Gruppe von Daten speichern kann. In anderen Beispielkonfigurationen kann N größer als M sein, so dass mehrere logische Gruppen einem einzigen Metablock entsprechen können und ein Metablock des Speichers zwei oder mehr logische Gruppen von Daten speichern kann.
  • Zusätzlich können in einigen Fällen die logischen Sektoren von Daten in den physikalischen Sektoren des Speichers in zusammenhängender und sequenzieller logischer Reihenfolge gespeichert sein, während in anderen Fällen N logische Sektoren von Daten zufällig oder nicht zusammenhängend in den physikalischen Sektoren eines Metablocks gespeichert sein können. Zusätzlich kann in einigen Fällen, in denen Daten zusammenhängend gespeichert sind, ein Versatz zwischen der niedrigsten Adresse einer logischen Gruppe und der niedrigsten Adresse des Metablocks, auf sie abgebildet ist, vorhanden sein. In diesem Fall können die logischen Sektoradressen als eine Schleife von dem unteren Ende zurück zu dem oberen Ende der logischen Gruppe innerhalb des Metablocks schleifen. Beispielsweise, wie in dem unteren Diagramm von 5 gezeigt ist, und unter der Annahme, dass M und N gleich sind, kann ein Metablock MBj Daten speichern, die einem logischen Sektor m in seinem ersten physikalischen Sektor 0 zugeordnet ist. Wenn der letzten logische Sektor M-1 erreicht ist, können die logischen Sektoren zurück schleifen, so dass der erste logische Sektor 0 zusammenhängend und sequenziell nach dem logischen Sektor 0 gespeichert ist, und der logische Sektor m-1 in dem letzten physikalischen Sektor N-1 gespeichert ist. Ein Seiten-Tag kann verwendet werden, um einen Versatz zu identifizieren, wie z. B. durch Identifizieren der Startadresse des logischen Sektors der Daten, die in dem ersten physikalischen Sektor des Metablocks gespeichert sind.
  • In anderen Beispielkonfigurationen kann das nichtflüchtige Datenspeichersystem 100 nur ein einziges physikalisches Adressierungsschema pflegen und/oder die logischen Adressen des Hosts direkt auf die tatsächlichen physikalischen Adressen anstatt auf die abstrakten physikalischen Adressen abbilden. Nachstehend wird für die Zwecke der vorliegenden Beschreibung und sofern nicht ausdrücklich anders beschrieben kein Unterschied zwischen abstrakten physikalischen Adressen und tatsächlichen physikalischen Adressen gemacht, und sie sind hier gemeinsam als physikalischen Adressen bezeichnet.
  • Um den Überblick zu behalten, wo in dem nichtflüchtigen Datenspeichersystem 100 Daten gespeichert sind, kann das nichtflüchtige Datenspeichersystem 100 ein Verzeichnissystem oder eine Adressenabbildungsdatenbank pflegen und managen, das/die Beziehungen oder Zuordnungen zwischen logischen Adressen und physikalischen Adressen abbildet. Die Adressenabbildungsdatenbank kann eine oder mehrere Adressdatenstrukturen (wie z. B. Tabellen, Auflistungen, Logs oder Datenbanken als Beispiele) enthalten, die die logischphysikalischen Beziehungen oder Abbildungen verfolgen und identifizieren.
  • Die Adressenabbildungsdatenbank kann auf verschiedene Weisen konfiguriert sein, um zu verfolgen oder zu identifizieren, wo Daten gespeichert sind. Beispielsweise kann die Adressenabbildungsdatenbank eine primäre Adressdatenstruktur (auch als Gruppenadresstabelle (GAT) bezeichnet) enthalten, die eine primäre logisch-physikalische Adressenabbildung für logische Adressen, die in dem durch das Host-System 101 erkannten logischen Adressenbereich enthalten sind, bereitstellt. Verschiedene Konfigurationen der Abbildung für die GAT sind möglich. In einer Beispielkonfiguration für Flash-Technologie verfolgt die GAT die logisch-physikalische Adressenabbildung zwischen logischen Gruppen logischer Sektoren und entsprechenden Metablöcken. Die GAT enthält einen Eintrag für jede logische Gruppe, sequenziell geordnet nach logischen Adressen. Zusätzlich kann die GAT in mehrere GAT-Seiten organisiert sein, wobei jede GAT-Seite drei Einträge enthält, die eine Metablockadresse für jede logische Gruppe identifizieren. Für einige Beispielkonfigurationen können die Adressdatenstrukturen wenigstens eine sekundäre Adressdatenstruktur zusätzlich zu der GAT enthalten. Die wenigstens eine sekundäre Datenstruktur kann logisch-physikalische Adressenabbildung für Datenfragmente bereitstellen, kann Änderungen oder Aktualisierungen dafür, wo Daten gespeichert sind, verfolgen, oder irgendeine Kombination daraus. Eine beispielhafte sekundäre Adressdatenstruktur, die als GAT-Delta bezeichnet ist, kann Änderungen an Einträgen verfolgen und/oder eine Auflistung geänderter Einträge in den Abbildungen der GAT enthalten. Wenn Daten neu geschrieben werden, kann die neue Version der Daten in einen anderen Teil des nichtflüchtigen Datenspeichersystems 100 wie z. B. einen Aktualisierungsblock geschrieben werden. Das GAT-Delta kann Daten, die in den Aktualisierungsblöcken gespeichert sind, auf zugeordnete logische Gruppen abbilden. Andere sekundäre Adressdatenstrukturen können möglich sein.
  • Zusätzlich zu der organisatorischen Anordnung oder Hierarchie, wie sie mit Bezug auf 4 beschrieben ist, können unterschiedliche Abschnitte oder Bereiche der Datenspeicher-Chips 104 in Bereiche unterschiedlicher Speicherdichte getrennt oder partitioniert sein. 6 ist ein Blockdiagramm einer beispielhaften organisatorischen Anordnung, wobei die Datenspeicher-Chips 104 in einen Bereich 602 niedriger Speicherdichte und einen Bereich 604 hoher Speicherdichte getrennt oder organisiert sind. Datenspeicherzellen des Bereichs 602 niedriger Speicherdichte sind konfiguriert oder programmiert, eine geringere Anzahl von Datenbits pro Zelle zu speichern als die Datenspeicherzellen des Bereichs 604 hoher Speicherdichte. In einigen Beispielausführungsformen können die Datenspeicherzellen des Bereichs 602 niedriger Speicherdichte Einpegelzellen (SLCs) sein, die programmiert sind, ein Datenbit pro Zelle zu speichern, und die Datenspeicherzellen des Bereichs 604 hoher Speicherdichte können Mehrpegelzellen (MLCs) sein, die programmiert sind, mehrere Datenbits pro Zelle zu speichern. In anderen Beispielausführungsformen können jedoch sowohl der Bereich 602 niedriger Speicherdichte als auch der Bereich 604 hoher Speicherdichte MLCs enthalten, wobei die MLCs des Bereichs 604 hoher Speicherdichte programmiert sind, eine größere Anzahl von Datenbits pro Zelle zu speichern als die MLCs des Bereichs 602 niedriger Speicherdichte. Außerdem können, obwohl die in 5 gezeigte Beispielausführungsform zwei Speicherbereiche 602, 604 unterschiedlicher Dichte zeigt, in anderen Beispielausführungsformen unterschiedliche Abschnitte oder Bereiche von Datenspeicher-Chips 104 in mehr als zwei Bereiche unterschiedlicher Speicherdichte getrennt sein, wie z. B. einen ersten Datenspeicherbereich, der zum Speichern eines Datenbits pro Zelle designiert ist, einen zweiten Datenspeicherbereich, der zum Speichern von zwei Datenbits pro Zelle designiert ist, und einen dritten Datenspeicherbereich, der zum Speichern von drei Bits pro Zelle designiert ist, als ein Beispiel. Verschiedene Arten, unterschiedliche Bereiche von Datenspeicher-Chips 104 in Speicherbereiche unterschiedlicher Dichte zu trennen, können möglich sein.
  • Für einige Beispielkonfigurationen kann, wenn Daten von einem Host-System empfangen werden, die Steuereinheit konfiguriert sein, anfangs die Daten in den Bereich 602 niedriger Speicherdichte des Datenspeicher-Chips 104 anstelle des Bereichs 604 hoher Speicherdichte zu speichern. Zu einer späteren Zeit kann die Steuereinheit 102 dann bestimmen, die Daten in dem Bereich 604 hoher Speicherdichte zu speichern. Das Verlagern der Daten von dem Bereich 602 niedriger Speicherdichte zu dem Bereich 604 hoher Speicherdichte kann als eine Faltungsoperation bezeichnet sein.
  • Ein Grund, warum die Steuereinheit 102 Daten in dem Bereich 602 niedriger Speicherdichte speichern kann, bevor sie die Daten in dem Bereich 604 hoher Speicherdichte speichert, ist, dass der Betrag des Speicherplatzes des RAM 116 begrenzt ist. Das heißt, der RAM 116 kann nicht ausreichend Platz aufweisen, um die Daten zu halten, bevor sie in den Bereich 604 hoher Speicherdichte programmiert werden, und somit verwendet die Steuereinheit 102 den Bereich 602 niedriger Speicherdichte im Wesentlichen als temporären Cache. Ein weiterer Grund ist, dass das Speichern von Daten in dem Speicher höherer Dichte anfälliger für Fehler ist als Speichern mit niedrigerer Dichte (z. B. ist das Programmieren von Daten in MLCs fehleranfälliger als das Programmieren von Daten in SLCs). Wie nachstehend genauer beschrieben ist, kann die Steuereinheit 102, nachdem die Daten in den Speicherbereich 604 hoher Dichte programmiert sind, eine Verifikationsoperation ausführen, die als verbesserte Operation nach Schreiben und Lesen (EPWR-Operation) bezeichnet ist, um zu verifizieren, dass die Daten korrekt in den Speicherbereich 604 hoher Dichte programmiert worden sind. Bevor die EPWR-Operation fertiggestellt ist, kann es wünschenswert sein, eine Sicherungskopie der Daten in dem Speicherbereich 602 niedriger Dichte zu erzeugen, falls die EPWR-Operation angibt, dass die Daten in dem Speicherbereich 604 hoher Dichte nicht korrekt gespeichert worden sind und eine nachfolgende Programmieroperation, um Daten in den Speicherbereich 604 hoher Dichte zu programmieren, ausgeführt werden soll.
  • In einigen Beispielkonfigurationen kann die Steuereinheit 102, wenn Daten, die von einem Host-System empfangen werden, anfangs in den Bereich 602 niedriger Speicherdichte programmiert werden, die Adressenabbildungsdatenbank aktualisieren, um zu identifizieren, wo Daten in dem Bereich 602 niedriger Speicherdichte gespeichert sind. Nachfolgend, wenn die Steuereinheit 102 eine Faltungsoperation ausführt, um die Daten in den Bereich 604 hoher Speicherdichte zu verlagern, kann die Steuereinheit 102 die Adressenabbildungsdatenbank aktualisieren, um zu identifizieren, wo Daten in dem Bereich 604 hoher Speicherdichte gespeichert sind. Infolgedessen führt für diese Beispielkonfigurationen die Steuereinheit 102 zwei Aktualisierungsoperationen der Adressenabbildungsdatenbank aus, eine erste Aktualisierung für das Speichern der Daten in dem Bereich 602 niedriger Speicherdichte und eine zweite Aktualisierung für das Speichern der Daten in dem Bereich 604 hoher Speicherdichte. Da die Adressenabbildungsdatenbank in den Datenspeicher-Chips 104 gespeichert sein kann, enthält das Aktualisieren der Adressenabbildungsdatenbank allgemein Schreiben von Informationen in die Datenspeicher-Chips 104.
  • In Konfigurationen, in denen zwei Aktualisierungen für die Adressenabbildungsdatenbank ausgeführt werden, kann die Steuereinheit 102 konfiguriert sein, die Daten in dem Speicherbereich 602 niedriger Speicherdichte für eine verlängerte Zeitspanne zu halten, bevor sie gefaltet werden. Nicht bevor der Bereich 602 niedriger Speicherdichte, der mehrere Blöcke und/oder mehrere Chips überspannen kann, ein Schwellenwertniveau nahe der maximalen Kapazität erreicht, kann die Steuereinheit 102 bestimmen, die Daten in den Bereich 604 hoher Speicherdichte zu verlagern, um Platz in dem Bereich 602 niedriger Speicherdichte freizugeben. Im Allgemeinen kann der Bereich 602 niedriger Speicherdichte bessere Beständigkeitseigenschaften aufweisen im Vergleich zu dem Bereich 604 hoher Speicherdichte. Somit kann es wünschenswert sein, dass das Datenspeichersystem 100 Daten so lange wie möglich in dem Speicherbereich 602 niedriger Dichte gespeichert hält. Falls Daten jedoch in dem Bereich 602 niedriger Speicherdichte für eine verlängerte Zeitspanne gespeichert werden sollen, bevor sie in den Bereich 604 hoher Speicherdichte gefaltet werden, dann kann es wünschenswert sein, dass die Steuereinheit 102 die Adressenabbildungsdatenbank aktualisiert, um die Version der Daten, die in dem Bereich 602 niedriger Speicherdichte gespeichert sind, zu identifizieren wegen der Wahrscheinlichkeit für das Empfangen von Host-Befehlen, diese Daten während der verlängerten Zeitspanne zu lesen oder über sie zu programmieren.
  • Im Gegensatz zu denjenigen Konfigurationen, in denen die Steuereinheit 102 zwei Aktualisierungen für die Adressenabbildungsdatenbank für Daten, die gefaltet werden, ausführt, kann die Steuereinheit 102 der vorliegenden Beschreibung konfiguriert sein, Faltungsoperationen auszuführen und den Status der Daten, die in den Bereichen 602, 604 niedriger und hoher Speicherdichte gespeichert und/oder programmiert werden, zu verfolgen, so dass die Steuereinheit 102 die Adressenabbildungsdatenbank nicht aktualisiert, um die Version der Daten, die in dem Bereich 602 niedriger Speicherdichte gespeichert sind, zu identifizieren, was wiederum den Aufwand der Aktualisierung für die Adressenabbildungsdatenbank, die die Steuereinheit 102 ausführt, reduziert. Die Steuereinheit 102 kann fähig sein, das Aktualisieren der Adressenabbildungsdatenbank zu vermeiden, um die Version, die in dem Bereich 602 niedriger Speicherdichte gespeichert ist, abzubilden, durch Ausführen relativ unmittelbarem Falten der Daten in den Bereich 604 hoher Speicherdichte, sobald die Daten in den Bereich 602 niedriger Speicherdichte programmiert sind, in Kombination mit dem Verwenden eines Zeigersystems, das den Programmierstatus der Daten, die in den Bereich 604 hoher Speicherdichte gefaltet werden, verfolgt. Ein solcher Faltungsprozess kann sich von anderen Faltungsprozessen, die keine unmittelbare Faltung ausführen, unterscheiden.
  • 7 ist ein Blockdiagramm, das Komponenten des Datenspeichersystems 100 zeigt, die an Faltungsoperationen zum Falten von Datenmengen aus den Bereich 602 niedriger Speicherdichte in den Bereich 604 hoher Speicherdichte zu falten, beteiligt sein können. Die Komponenten können ein Faltungsmanagementsystem enthalten, das ein Programmiermanagementmodul 702, ein Faltungstriggermodul 704, ein Faltungszeigermodul 706 und ein Faltungsverifizierungsmodul 708 enthalten kann. Für einige Beispielkonfigurationen können die Module des Faltungsmanagementsystems Komponenten der Medienmanagementschicht 138 der Steuereinheit 102 (2A) sein, obwohl für andere Beispielkonfigurationen eines oder mehrere der Module als von der Medienmanagementschicht 138 getrennt betrachtet werden können. Beispielsweise können die Module von der Medienmanagementschicht 138 getrennt, jedoch immer noch Komponenten der Steuereinheit 102 sein, die Module können auf den Chips 104 konfiguriert sein, oder eine Kombination daraus. In diesem Kontext kann eine Steuereinheit, die die Module des Faltungssystems enthält oder konfiguriert ist, die Module des Faltungssystems auszuführen, die Steuereinheit 102, eine Steuereinheit oder Steuerschaltung, die auf den Chips 104 konfiguriert ist, oder eine Steuereinheit, die Komponenten enthält, die Teil sowohl der Steuereinheit 102 als auch der Chips 104 sind, sein. Verschiedene Arten zum Implementieren der Module des Faltungssystems in das Datenspeichersystem 100 sind möglich.
  • Außerdem zeigt 7 die Module 702-708, die mit dem RAM 116, dem Sequenzermodul 126 und der Datenspeicherschnittstelle 130 gekoppelt und/oder in Kommunikation mit ihnen sind. (Natürlich muss für Konfigurationen, in denen ein Modul des Faltungssystems auf einem Chip 104 konfiguriert ist, dieses Modul mit dem Chip 104 nicht über die Datenspeicherschnittstelle 130 kommunizieren, um den Chip eine gewünschte Aktion ausführen zu lassen.) Zusätzlich kann das Programmiermanagementmodul 702 konfiguriert sein, auf die Adressenabbildungsdatenbank (in 7 mit 710 gekennzeichnet), um logisch-physikalische Abbildungen zu aktualisieren, eine Liste 712 des Bereichs niedriger Speicherdichte (LSDA-Liste), um Informationen über verfügbare Blöcke in dem Bereich 602 niedriger Speicherdichte, in die Daten programmiert werden sollen, zu erhalten und sie auszuwählen, und eine Liste 714 des Bereichs hoher Speicherdichte (HSDA-Liste), um Informationen über Blöcke in dem Bereich 604 hoher Speicherdichte, in den die Daten, die in dem Bereich 602 niedriger Speicherdichte gespeichert sind, gefaltet werden sollen, zu erhalten, zuzugreifen. Außerdem kann, wie in 7 gezeigt ist, das Faltungszeigermodul 706 in Kommunikation mit einer Faltungszeigerdatenbank sein und konfiguriert sein, sie zu managen, um sein Zeigersystem zu managen.
  • Wenn ein Host-System einen Host-Programmier- (oder Schreib-) Befehl zu dem Datenspeichersystem 100 sendet, um anzufordern oder anzuweisen, dass das Datenspeichersystem 100 eine Datenmenge in die Datenspeicher-Chips 104 programmiert (oder schreibt), kann das Frontend-Modul 108 (2A) den Programmierbefehl empfangen und den Programmierbefehl für das Programmiermanagementmodul 702 bereitstellen. Das Host-System kann außerdem die Daten bereitstellen, von denen der Host möchte, dass sie in das Datenspeichersystem 100 geschrieben werden, die in den RAM 116 geladen werden können. Der Programmierbefehl kann sowohl die logischen Adressinformationen des Hosts, die der Datenmenge zugeordnet sind, als auch andere Informationen, wie z. B. die Größe der Datenmenge, identifizieren. In Reaktion auf das Empfangen des Programmierbefehls kann das Programmiermanagementmodul 702 auf die Liste 712 freier LSDA-Blöcke zugreifen, um einen oder mehrere verfügbare LSDA-Blöcke in dem Bereich 602 niedriger Speicherdichte zu identifizieren, die verfügbar sind, um die Datenmenge zu speichern. Der/die LSDA-Block/Blöcke, die ausgewählt werden, können als LSDA-Sollspeicherort des Bereichs 602 niedriger Speicherdichte betrachtet werden, in den die Datenmenge anfänglich gespeichert werden soll. Der LSDA-Sollspeicherort und/oder Informationen, die dem LSDA-Sollspeicherort zugeordnet sind, können Adressinformationen enthalten, die den/die verfügbaren LSDA-Block/Blöcke, die ausgewählt wurden, und/oder spezielle Speicherseiten innerhalb des/der ausgewählten verfügbaren LSDA-Block/Blöcke identifizieren. Zusätzlich kann das Programmiermanagementmodul 702 auf die Liste 714 freier HSDA-Blöcke zugreifen, um einen oder mehrere verfügbare HSDA-Blöcke in dem Bereich 604 hoher Speicherdichte zu identifizieren, die verfügbar sind, um die Datenmenge zu speichern. Der/die HSDA-Block/Blöcke, die ausgewählt werden, können als ein HSDA-Sollspeicherort des Bereichs 604 hoher Speicherdichte betrachtet werden, in den die Datenmenge als Ergebnis einer Faltungsoperation gespeichert werden soll.
  • Nach dem Auswählen der LSDA- und HSDA-Sollspeicherorte kann das Programmiermanagementmodul 702 die Sollspeicherorte für den Sequenzer 126, das Faltungstriggermodul 704 und das Faltungszeigermodul 706 bereitstellen. Das Sequenzermodul 126 kann nach dem Empfangen des LSDA-Sollspeicherorts konfiguriert sein, einen oder mehrere Programmierkontextbefehle zu erzeugen, um die Datenmenge, in den LSDA-Sollspeicherort des Speicherbereichs 602 niedriger Speicherdichte speichern zu lassen. In einigen Beispielkonfigurationen können die Programmierkontextbefehle Paare von Datenübertragungs- und Programmierbefehlen enthalten, wobei der Datenübertragungsbefehl gesendet wird, um die Datenmenge zu den Datenspeicher-Chips 104 zu übertragen, und der Programmierbefehl gesendet wird, um die Datenmenge in den LSDA-Zielort zu programmieren. Andere Typen oder Formate für die Programmierkontextbefehle können möglich sein. Wie in 7 gezeigt ist, kann das Sequenzermodul 126 die Programmierkontextbefehle über die Datenspeicherschnittstelle 130 zu den Datenspeicher-Chips 104 senden. Außerdem kann nach dem Senden der Programmierkontextbefehle (oder wenigstens des Datenübertragungskontextbefehls) die Datenmenge, die in den RAM 116 geladen ist, von dem RAM 116 über die Datenspeicherschnittstelle 130 zu den Datenspeicher-Chips 104 zum Speichern in dem LSDA-Sollspeicherort übertragen werden. Außerdem kann in einigen Beispielkonfigurationen der Zustandsautomat 152, der sich in den Datenspeicher-Chips (2B) befindet, konfiguriert sein, eine oder mehrere Antworten oder Statusnachrichten zurückzusenden, um anzugeben, dass die Datenmenge in den LSDA-Sollspeicherort programmiert worden ist.
  • Das Faltungstriggermodul 704 kann konfiguriert sein, das Falten der Datenmenge in den HSDA-Sollspeicherort zu triggern. In diesem Kontext kann für eine Faltungsoperation der LSDA-Sollspeicherort als ein Ursprungsspeicherort bezeichnet sein, und der HSDA-Sollspeicherort kann als ein Zielspeicherort der Datenmenge bezeichnet sein. Wenn das Faltungstriggermodul 704 bestimmt, die Daten in den HSDA-Sollspeicherort falten zu lassen, kann das Faltungstriggermodul 704 konfiguriert sein, einen Faltungsbefehl für das Sequenzermodul 126 bereitzustellen. In Reaktion darauf kann das Sequenzermodul 126 konfiguriert sein, einen oder mehrere Faltungskontextbefehle zu erzeugen, um die Datenmenge in den HSDA-Sollspeicherort kopieren zu lassen. In einigen Situationen kann die Faltungsoperation eine Kopieroperation außerhalb des Chips oder eine Kopieroperation durch die Steuereinheit (CTC-Kopieroperation) enthalten, wobei die Datenmenge aus dem LSDA-Sollspeicherort abgerufen, über die Datenspeicherschnittstelle 130 in den RAM 116 geladen wird und dann über die Datenspeicherschnittstelle 130 in den HSDA-Sollspeicherort kopiert wird. In anderen Situationen kann die Faltungsoperation eine Kopieroperation innerhalb des Chips (OCC-Operation) enthalten, wobei das Kopieren der Datenmenge aus dem LSDA-Sollspeicherort in den HSDA-Sollspeicherort nur innerhalb der Datenspeicher-Chips 104 ausgeführt wird. Außerdem zeigt 7 das Faltungstriggermodul 701 als eine Komponente der Steuereinheit 102. In anderen Beispielkonfigurationen kann jedoch das Faltungstriggermodul 704 (oder ein zusätzliches Faltungstriggermodul) eine Komponente der Datenspeicher-Chips 104 sein (d. h. sich auf dem Chip als ein Teil der peripheren Schaltungsanordnung der Datenspeicher-Chips befinden).
  • Das Faltungstriggermodul 704 kann konfiguriert sein, in Reaktion auf das Bestimmen, dass eine Kapazität des LSDA-Sollspeicherorts ein Schwellenwertniveau erreicht hat, die Faltungsoperation zu starten. Bevor der LSDA-Sollspeicherort einen Schwellenwertdatenbetrag der Datenmenge speichert, kann das Faltungstriggermodul 704 bestimmen, die Faltungsoperation noch nicht auszuführen. Dann, nachdem ein Schwellenwertdatenbetrag der Datenmenge in dem LSDA-Sollspeicherort gespeichert ist, kann das Faltungstriggermodul 704 bestimmen, die Faltungsoperation zu starten. In einigen Beispielkonfigurationen kann das Schwellenwertniveau frühestens entsprechen, dass die Faltungsoperation ausgeführt werden kann. Zusätzlich kann für eine spezielle Beispielkonfiguration das Schwellenwertniveau eine maximale Kapazität des LSDA-Sollspeicherorts sein. Das heißt, dass alle Daten der Datenmenge in dem LSDA-Sollspeicherort gespeichert sind kann das Faltungstriggermodul 704 triggern, die Faltungsoperation zu starten.
  • Das Faltungstriggermodul 704 kann auf verschiedene Arten bestimmen, wann der Schwellenwert erreicht worden ist. Beispielsweise kann das Faltungstriggermodul 704 konfiguriert sein, LSDA-Speicherstatusinformationen über die Datenspeicherschnittstelle 130 zu empfangen, wie in 7 gezeigt ist. Die LSDA-Speicherstatusinformationen können Datenmengen (oder Abschnitte von Datenmengen) angeben, die in den LSDA-Sollspeicherorten gespeichert sind. Die LSDA-Speicherstatusinformationen können auf den Programmierkontextbefehlen, die zu den Datenspeicher-Chips gesendet werden, und/oder Antworten, die von den Datenspeicher-Chips 104 empfangen werden, die bestätigen, dass die Daten gespeichert sind, basieren. Alternativ kann das Faltungstriggermodul 704 konfiguriert sein, mit dem Sequenzermodul 126 zu kommunizieren, um zu bestimmen, ob der Schwellenwert erreicht worden ist. Verschiedene Arten, um zu überwachen, ob ein LSDA-Sollspeicherort ein Schwellenwertniveau erreicht hat sind möglich.
  • Der LSDA-Sollspeicherort und der HSDA-Sollspeicherort können die gleiche Speicherkapazität aufweisen. Für einige Beispielkonfigurationen können der LSDA-Sollspeicherort und der HSDA-Sollspeicherort auf einer Speicherseitenebene definiert sein. Als ein spezielles Beispiel kann der HSDA-Sollspeicherort eine einzelne QX-MLC-Speicherseite sein, die mehrere Seiten von Daten speichern kann. Die Seiten des LSDA-Speichers können die gleiche Gesamtspeicherkapazität aufweisen wie die einzelne QX-MLC-Speicherseite, aber die Datenspeicherzellen, die die Speicherseiten bilden, können programmiert sein, um eine niedrigere Speicherdichte pro Zelle aufzuweisen. Ein nicht einschränkendes Beispiel kann sein, dass die einzelne MLC-Speicherseite eine 3X-MLC-Speicherseite ist, was bedeutet, dass jede Datenspeicherzelle der einzelnen 3X-MLC-Speicherseite programmiert ist, um drei Datenbits zu speichern. Falls beispielsweise die Zellen des Bereichs 602 niedriger Speicherdichte als SLCs programmiert sind, dann enthält der LSDA-Sollspeicherort für die Datenmenge drei Speicherseiten von SLCs.
  • Die Datenspeicher-Chips 104 können konfiguriert sein, Datenmengen in den Bereich 604 hoher Speicherdichte gemäß Mehrphasen-Programmierung zu programmieren, wie vorstehend beschrieben ist. Dementsprechend können, wenn die Datenspeicher-Chips 104 einen Faltungsbefehl empfangen, die Datenmenge in den HSDA-Sollspeicherort zu falten, die Datenspeicher-Chips 104 eine Anfangs- oder erste Phase der Programmieroperation ausführen, um die Datenmenge in den HSDA-Sollspeicherort zu programmieren. Das Ausführen der ersten Phase kann beinhalten, dass die Leistungssteuerungsschaltungsanordnung 156 (2B) eine Reihe von Impulsen zu der Wortleitung sendet, die mit der QX-MLC-Speicherseite, die der HSDA-Sollspeicherort ist, gekoppelt ist. Die Datenspeicher-Chips 104 können jedoch die nächste Programmierphase auf dem HSDA-Speicherort nicht ausführen, bis eine erste Phase einer nächsten Programmieroperation, um eine weitere Datenmenge in eine benachbarten HSDA-Speicherort zu falten, ausgeführt ist, in Übereinstimmung mit Mehrphasen-Programmierung.
  • Beispielhafte Faltungsoperationen, die mit den in 7 gezeigten Komponenten ausgeführt werden, sind in Bezug auf die 8A-8E dargestellt, die LSDA- und HSDA-Tabellen 802, 804 zeigen, die den Status von mehreren Faltungsoperationen angeben, um mehrere Datenmengen in mehrere benachbarte QX-MLC-Speicherseiten zu falten. Wenigstens einige aus den Informationen, die in den LSDA- und HSDA-Tabellen 802, 804 enthalten sind, können Informationen repräsentieren, die in der Faltungszeigerdatenbank 716 enthalten sind und/oder die aus darin enthaltenen Informationen identifiziert werden können.
  • Genauer zeigt jede aus den 8A-8E eine LSDA-Tabelle 802, die Programmierstatusinformationen des Bereichs niedriger Speicherdichte identifiziert, und eine HSDA-Tabelle 804, die Programmierstatusinformationen des Bereichs hoher Speicherdichte identifiziert. Die LSDA-Tabelle 802 enthält zwei Spalten, eine erste Spalte, die benachbarte LSDA-Wortleitungen WL, die mit LSDA-Speicherseiten gekoppelt sind, identifiziert, und eine zweite Spalte, die angibt, ob eine Speicherseite, die mit einer zugeordneten LSDA-Wortleitung WL gekoppelt ist, Daten speichert. Zusätzlich ist ein fett eingerahmter Kasten 806 in der LSDA-Tabelle 802 gezeigt, um einen aktuellen LSDA-Sollspeicherort zu identifizieren, den das Faltungstriggermodul 704 überwachen kann. Die HSDA-Tabelle 804 enthält vier Spalten, die eine erste Spalte, die benachbarte HSDA-Wortleitungen, die mit HSDA-Speicherseiten gekoppelt sind, identifiziert, und drei Spalten, die angeben, ob entsprechende Phasen einer Mehrphasen-Programmierung für eine zugeordnete HSDA-Wortleitung fertiggestellt sind, enthalten. Um die beispielhaften Faltungsoperationen in Bezug auf die 8A-8E zu veranschaulichen, enthalten die LSDA-Wortleitungen in der LSDA-Tabelle 802 zwölf Wortleitungen WLm bis WLm+11, und die HSDA-Wortleitungen in der HSDA-Tabelle 804 enthalten vier Wortleitungen WLn bis WLn+3.
  • Die beispielhaften Faltungsoperationen, die mit Bezug auf die 8A-8E beschrieben sind, sind für eine Beispielimplementierung, in der der Bereich 602 niedriger Speicherdichte SLC enthält und der Bereich 604 hoher Speicherdichte 3X-MLCs enthält. Dementsprechend definiert der in den 8A-8E gezeigte durchgezogene Kasten 806 den aktuellen LSDA-Sollspeicherort, dass er drei Speicherseiten von SLCs enthält, die einer einzigen 3X-MLC-Speicherseite entsprechen.
  • Die Daten, die in dem Bereich 602 niedriger Speicherdichte gespeichert sind, können in den Speicherbereich 604 hoher Speicherdichte in einer Reihenfolge, die den sequenziellen Adressen sowohl dem Bereich 602 niedriger Speicherdichte als auch dem Speicherbereich 604 hoher Speicherdichte entspricht, gefaltet werden. In einer Beispielkonfiguration können die Adressen in sequenziell absteigender Reihenfolge sein. Somit wird unter den Daten, die noch nicht gefaltet worden sind, die nicht gefaltete Datenmenge, die an der niedrigsten Adresse gespeichert ist, die nächste Datenmenge sein, die gefaltet werden soll. Zusätzlich wird aus den HSDA-Sollspeicherorten, die noch keine gefalteten Daten speichern, der HSDA-Sollspeicherort mit der niedrigsten Adresse der nächste HSDA-Sollspeicherort sein, der gefaltete Daten empfangen und speichern soll.
  • Um das mit Bezug auf die 8A-8E darzustellen, ist bevor irgendwelche Faltungsoperationen ausgeführt werden die nicht gefaltete Datenmenge, die an der niedrigsten Adresse des Bereichs 602 niedriger Speicherdichte gespeichert ist, eine erste Datenmenge, die in Seiten gespeichert ist, die mit den LSDA-Wortleitungen WLm bis WLm+2 gekoppelt ist, und der verfügbare HSDA-Sollspeicherort mit der niedrigsten Adresse unter den verfügbaren HSDA-Sollspeicherorten ist ein erster HSDA-Sollspeicherort, der eine erste 3X-MLC-Speicherseite enthält, die mit einer ersten HSDA-Wortleitung WLn gekoppelt ist. Dementsprechend kann eine erste Faltungsoperation das Programmieren der ersten Datenmenge in den ersten HSDA-Sollspeicherort enthalten.
  • Danach ist die nächste Datenmenge unter den verbleibenden nicht gefalteten Datenmengen, die an der niedrigsten Adresse des Bereichs 602 niedriger Speicherdichte gespeichert sind, eine zweite Datenmenge, die in Seiten gespeichert ist, die mit den LSDA-Wortleitungen WLm+3 bis WLm+5 gekoppelt sind, und der nächste verfügbare HSDA-Sollspeicherort mit der niedrigsten Adresse unter den verbleibenden verfügbaren HSDA-Sollspeicherorten ist ein zweiter HSDA-Sollspeicherort, der eine zweite 3X-MLC-Speicherseite enthält, die mit einer zweiten HSDA-Wortleitung WLn+1 gekoppelt ist. Dementsprechend kann eine zweite Faltungsoperation, die der ersten Faltungsoperation folgt, das Programmieren der zweiten Datenmenge in den zweiten HSDA-Sollspeicherort enthalten.
  • Danach ist die nächste Datenmenge unter den verbleibenden nicht gefalteten Datenmengen, die an der niedrigsten Adresse des Bereichs 602 niedriger Speicherdichte gespeichert sind, eine dritte Datenmenge, die in Seiten gespeichert ist, die mit den LSDA-Wortleitungen WLm+6 bis WLm+8 gekoppelt sind, und der nächste verfügbare HSDA-Sollspeicherort mit der niedrigsten Adresse unter den verbleibenden verfügbaren HSDA-Sollspeicherorten ist ein dritter HSDA-Sollspeicherort, der eine dritte 3X-MLC-Speicherseite enthält, die mit einer dritten HSDA-Wortleitung WLn+2 gekoppelt ist. Dementsprechend kann eine dritte Faltungsoperation, die der ersten und der zweiten Faltungsoperation folgt, das Programmieren der dritten Datenmenge in den dritten HSDA-Sollspeicherort enthalten.
  • Danach ist die nächste Datenmenge unter den verbleibenden nicht gefalteten Datenmengen, die an der niedrigsten Adresse des Bereichs 602 niedriger Speicherdichte gespeichert sind, eine vierte Datenmenge, die in Seiten gespeichert ist, die mit den LSDA-Wortleitungen WLm+9 bis WLm+11 gekoppelt sind, und der nächste verfügbare HSDA-Sollspeicherort mit der niedrigsten Adresse unter den verbleibenden verfügbaren HSDA-Sollspeicherorten ist ein vierter HSDA-Sollspeicherort, der eine vierte 3X-MLC-Speicherseite enthält, die mit einer vierten HSDA-Wortleitung WLn+3 gekoppelt ist. Dementsprechend kann eine vierte Faltungsoperation, die der ersten, der zweiten und der dritten Faltungsoperation folgt, das Programmieren der vierten Datenmenge in den vierten HSDA-Sollspeicherort enthalten.
  • Zusätzlich zeigen die 8A-8E vier Zeiger, die einen LSDA-Schreibzeiger und einen gefalteten Zeiger, die der LSDA-Tabelle 802 zugeordnet sind, und einen HSDA-Schreibzeiger und eine Einspeicherzeiger, die der HSDA-Tabelle 804 zugeordnet sind, enthalten. Der LSDA-Schreibzeiger kann auf den aktuellen LSDA-Sollspeicherort zeigen, der durch den fett eingerahmten Kasten 806 identifiziert ist. Wenn der Schwellenwert erreicht worden ist und das Faltungstriggermodul 704 bestimmt, eine aktuelle Faltungsoperation zu starten, kann der LSDA-Schreibzeiger auf einen nächsten LSDA-Sollspeicherort zur Ausführung einer nächsten Faltungsoperation zeigen. In einer speziellen Beispielkonfiguration, wie in 8A-8E gezeigt ist, kann ein LSDA-Schreibzeiger auf eine erste Wortleitung zeigen, die mit einer ersten LSDA-Speicherseite gekoppelt ist, wo Anfangsdaten einer Datenmenge, die in dem aktuellen LSDA-Sollspeicherort gespeichert werden sollen, gespeichert sind. Zusätzlich oder alternativ zeigt der LSDA-Schreibzeiger auf eine kleinste oder niedrigste Datenspeicheradresse des aktuellen LSDA-Sollspeicherorts. Andere Konfigurationen zum Implementieren des LSDA-Schreibzeigers, um auf den aktuellen LSDA-Sollspeicherort zu zeigen, können möglich sein.
  • Der gefaltete Zeiger kann auf einen Speicherort zeigen, der eine Grenze definiert, die Speicherorte, für die die Faltungsoperation fertiggestellt ist, und Speicherorte, für die die Faltungsoperation nicht fertiggestellt ist, trennt. Eine Faltungsoperation kann fertiggestellt sein, wenn die Datenspeicher-Chips 104 alle Phasen (z. B. alle drei Phasen) einer Mehrphasen-Programmieroperation ausführen, um eine Datenmenge in einem HSDA-Sollspeicherort zu speichern. Umgekehrt kann, falls weniger als alle Phasen ausgeführt sind, die Faltungsoperation dann als nicht fertiggestellt betrachtet werden. Für einige Beispielkonfigurationen können die Datenspeicher-Chips 104 Daten in der Reihenfolge ansteigender Datenspeicheradresse speichern. Dementsprechend können Faltungsoperationen für Daten, die in Speicherorten gespeichert sind, die Datenspeicheradressen aufweisen, die größer sind als die Datenspeicheradresse, auf die der gefaltete Zeiger zeigt, als nicht fertiggestellt betrachtet werden, während Faltungsoperationen für Daten, die in Speicherorten gespeichert sind, die Datenspeicheradressen kleiner als oder gleich der Datenspeicheradresse, auf die der gefaltete Zeiger zeigt, aufweisen, als fertiggestellt betrachtet werden. Für diese Beispielkonfigurationen kann ein gefalteter Zeiger auf den letzten LSDA-Sollspeicherort zeigen, für den die letzte (z. B. dritte) Phase der Programmieroperation ausgeführt wird. Andere Arten, den gefalteten Zeiger zu benutzten, um eine Grenze zu definieren, die fertiggestellte und nicht fertiggestellte Faltungsoperationen trennt, können möglich sein.
  • Der HSDA-Zeiger kann auf einen nächsten HSDA-Sollspeicherort zeigen, wo eine erste Phase einer Programmieroperation für eine nächste Faltungsoperation ausgeführt werden soll. Nach der Ausführung der ersten Phase kann sich der HSDA-Zeiger zu einem nächsten HSDA-Sollspeicherort bewegen, wo eine erste Phase einer Programmieroperation für eine nächste Faltungsoperation ausgeführt werden soll.
  • Der Einspeicherzeiger kann zu einem Speicherort zeigen, der eine Grenze definiert, die Speicherorte, die eingespeichert sind, und Speicherorte, die nicht eingespeichert sind, trennt. Bezug nehmend zurück zu 7 kann, nachdem eine Faltungsoperation, um eine Datenmenge in einem HSDA-Sollspeicherort zu speichern, ausgeführt worden ist (d. h. alle Programmierphasen für diese Datenmenge ausgeführt worden sind), das Programmierverifikationsmodul 708 konfiguriert sein zu verifizieren, dass die Datenmenge korrekt gespeichert ist. Wie in 7 gezeigt ist kann das Programmierverifikationsmodul 708 HSDA-Speicherungsfertigstellungsinformationen von den Datenspeicher-Chips 104 über die Datenspeicherschnittstelle 130 empfangen, um anzugeben, dass alle drei Phasen ausgeführt worden sind, was das Programmierverifikationsmodul 708 triggern kann, eine Verifikationsoperation auf der Datenmenge, die in dem HSDA-Sollspeicherort gespeichert ist, auszuführen. In einigen Beispielkonfigurationen kann das Programmierverifikationsmodul 708 konfiguriert sein, eine verbesserte Operation nach Schreiben und Lesen (EPWR-Operation) auszuführen, um zu verifizieren, dass die Datenmenge korrekt geschrieben ist. Für die EPWR-Operation kann die Datenmenge, die in den HSDA-Sollspeicherort programmiert ist, aus dem HSDA-Sollspeicherort gelesen und in den RAM 116 geladen werden. 7 zeigt das Programmierverifikationsmodul 708, das konfiguriert ist, Verifikationsbefehle für das Sequenzermodul 126 bereitzustellen, was wiederum bewirken kann, dass das Sequenzermodul 126 einen oder mehrere Lesebefehle ausgibt, um die Datenmenge in den RAM 116 laden zu lassen. Das Programmierverifikationsmodul 708 kann dann konfiguriert sein, Fehlerprüfung auf der in den RAM 116 geladenen Datenmenge auszuführen. In dem Fall, wenn das Programmierverifikationsmodul 708 bestimmt, dass die Fehlerprüfung festgeschlagen ist, kann das Programmierverifikationsmodul 708 einen Neufaltungsbefehl zu dem Faltungstriggermodul 704 senden, um die Datenmenge aus dem LSDA-Sollspeicherort in den HSDA-Sollspeicherort (oder einem anderen HSDA-Sollspeicherort) neu falten zu lassen. Alternativ kann, falls das Programmierverifikationsmodul 708 bestimmt, dass die Datenmenge die Fehlerprüfung besteht, dann das Programmierverifikationsmodul 708 die Datenmenge als eingespeichert identifizieren, wobei in diesem Fall die Faltungsoperation nicht nochmals ausgeführt werden muss. Nachdem eine Datenmenge, die in dem HSDA-Sollspeicherort gespeichert ist, als eingespeichert identifiziert worden ist, kann die entsprechende Version der Datenmenge, die in dem LSDA-Sollspeicherort gespeichert ist, gelöscht werden. Bevor die Verifikationsoperation die Datenmenge verifiziert, kann jedoch die entsprechende Version der Datenmenge in dem LSDA-Sollspeicherort gehalten werden.
  • Bezug nehmend zurück zu den 8A-8E kann wie erwähnt der Einspeicherzeiger zu einem Speicherort zeigen, der eine Grenze definiert, die Speicherorte, die eingespeichert sind, und Speicherorte, die nicht eingespeichert sind, trennt. Für Beispielkonfigurationen speichern die Datenspeicher-Chips 104 Daten in der Reihenfolge ansteigender Datenspeicheradresse, Daten, die in Speicherorten gespeichert sind, die Datenspeicheradressen aufweisen, die größer sind als die Datenspeicheradresse, auf die der Einspeicherzeiger zeigt, können als nicht eingespeichert betrachtet werden, während Daten, die in Speicherorten gespeichert sind, die Datenspeicheradressen kleiner als die oder gleich der Datenspeicheradresse sind, auf die der Einspeicherzeiger zeigt, als eingespeichert betrachtet werden können. Andere Arten, den Einspeicherzeiger zu benutzten, um eine Grenze zu definieren, die eingespeicherte Daten und nicht eingespeicherte Daten trennt, können möglich sein.
  • Die Zeiteinteilung der Ausführung der Einspeicheroperation für eine Datenmenge und einer letzten (z. B. dritten) Phase einer Programmieroperation weiterer Daten kann eine Beziehung zwischen dem Einspeicherzeiger und dem gefalteten Zeiger bereitstellen. Insbesondere wird für gegebene erste, zwei und dritte Datenmengen, die in ersten, zweiten und dritten HSDA-Speicherorten gespeichert sind, die mit aufeinanderfolgenden ersten, zweiten und dritten Wortleitungen gekoppelt sind, nachdem die erste Datenmenge eingespeichert worden ist, die letzte (z. B. dritte) Phase der Programmieroperation, um die zweite Datenmenge in den zweiten HSDA-Speicherort zu speichern, ausgeführt worden sein, jedoch die letzte Phase der Programmieroperation, um die dritte Datenmenge in den dritten HSDA-Speicherort zu programmieren, (oder irgendwelche anderen nachfolgenden letzten Programmierphasen) werden noch nicht ausgeführt worden sein. Als ein Ergebnis kann, wenn die Einspeicheroperation für die erste Datenmenge fertiggestellt ist, der Einspeicherzeiger auf die erste HSDA-Wortleitung benachbart der HSDA-Wortleitung, die mit dem zweiten HSDA-Speicherort gekoppelt ist, der die zweite Datenmenge speichert, zeigen, während wenigstens ein Abschnitt der zweiten Datenmenge auch in einem LSDA-Speicherort, der mit einer LSDA-Wortleitung gekoppelt ist, auf die der gefaltete Zeiger zeigt, gespeichert ist. Diese Beziehung zwischen dem Einspeicherzeiger und dem gefalteten Zeiger kann verwendet werden, um zu identifizieren, wo eine gegebene Datenmenge in dem LSDA-Datenspeicherbereich 602 gespeichert ist, in dem Fall, dass die gegebene Datenmenge aus dem LSDA-Datenspeicherbereich 602 anstatt dem HSDA-Datenspeicherbereich 604 gelesen werden soll, was nachstehend genauer mit Bezug auf die 8E, 9 und 10 beschrieben ist.
  • Bezug nehmend zurück auf 7 können die Zeiger durch das Faltungszeigermodul 706 gemanagt werden, das die Datenspeicheradressen, auf die die Zeiger zeigen, in einer Faltungszeigerdatenbank 716 verfolgt. Wie in 7 gezeigt ist, kann das Faltungszeigermodul 706 LSDA- und HSDA-Sollspeicherortinformationen von dem Programmiermanagementmodul 702, um die Zeiger initial einzustellen, Faltungsbefehlsinformationen von dem Faltungstriggermodul 704, die LSDA- und HSDA-Schreibzeiger einzustellen, HSDA-Speicherungsfertigstellungsformationen, um den gefalteten Zeiger einzustellen, und Einspeicherinformationen von dem Programmierverifikationsmodul 708, um den Einspeicherzeiger einzustellen, empfangen.
  • Jetzt Bezug nehmend auf 8A identifiziert der durchgezogene Kasten LSDA-Speicherseiten, die mit den LSDA-Wortleitungen WLm, WLm+1 und WLm+2 gekoppelt sind, als den aktuellen LSDA-Sollspeicherort. An diesem Punkt sind keine aus den Daten der ersten Datenmenge in dem aktuellen LSDA-Sollspeicherort gespeichert, wie dadurch angegeben ist, dass die Einträge in der zweiten Spalte der LSDA-Tabelle 802 innerhalb des fett eingerahmten Kastens 806 leer sind. Dementsprechend zeigt, wie in 8A gezeigt ist, der LSDA-Schreibzeiger auf die LSDA-Wortleitung WLm, um den aktuellen LSDA-Sollspeicherort anzugeben. Außerdem zeigt 8A, dass die Einträge der HSDA-Tabelle 804 leer sind, was angibt, dass noch keine der Phasen für irgendwelche Programmieroperationen, um Daten in die HSDA-Speicherseiten, die mit den HSDA-Wortleitungen WLn bis WLn+2 gekoppelt sind, zu programmieren, ausgeführt worden sind. Dementsprechend zeigt der HSDA-Schreibzeiger auf die HSDA-Wortleitung WLn, um anzugeben, wo eine erste Phase einer Programmieroperation für die erste Faltungsoperation ausgeführt wird. Zusätzlich zeigt der gefaltete Zeiger auf eine Datenspeicheradresse oberhalb der LSDA-Wortleitung WLm, um anzugeben, dass keine aus den LSDA-Speicherseiten, die mit den LSDA-Wortleitungen WLm bis WLm+11 gekoppelt sind, Daten speichert, für die die Faltungsoperation fertiggestellt worden ist. Ähnlich zeigt der Einspeicherzeiger auf eine Datenspeicheradresse, um anzugeben, dass keine aus den HSDA-Speicherseiten, die mit den HSDA-Wortleitungen WLn bis WLn+3 gekoppelt sind, eingespeicherte Daten speichert.
  • Bezug nehmend auf 8B zeigt die LSDA-Tabelle 802 jetzt, dass alle Daten der ersten Datenmenge in dem aktuellen LSDA-Sollspeicherort gespeichert sind, d. h. in den in den LSDA-Speicherseiten, die mit den LSDA-Wortleitungen WLm bis WLm+2 gekoppelt sind, wie durch das „X“ in den Einträgen angegeben ist. Für die Beispielfaltungsoperationen, die mit Bezug auf die 8A-8E beschrieben sind, kann der Schwellenwert die maximale Kapazität des LSDA-Sollspeicherorts sein. Dementsprechend kann das Faltungstriggermodul 704 detektieren, dass das Schwellenwertniveau erreicht worden ist, und bestimmen, die erste Faltungsoperation zu beginnen. Dementsprechend kann das Faltungstriggermodul 704 einen Faltungsbefehl zu dem Sequenzermodul 126 ausgeben, das wiederum einen Faltungsbefehl zu den Datenspeicher-Chips 104 ausgeben kann. Nach dem Empfang kann die Leistungssteuerungsschaltungsanordnung 156 eine Reihe von Impulsen der HSDA-Wortleitung WLm zuführen, um die erste Phase der Programmieroperation der erste Faltungsoperation auszuführen, um die erste Datenmenge in die Speicherseite, die mit der HSDA-Wortleitung WLm gekoppelt ist, zu programmieren. 8B zeigt ein „X“ in dem Eintrag 808, um anzugeben, dass die erste Phase zum Programmieren der ersten Datenmenge in die HSDA-Wortleitung WLn ausgeführt worden ist. Außerdem kann nach dem Bestimmen, dass derzeit der LSDA-Sollspeicherort sein Schwellenwertniveau erreicht hat, das Faltungstriggermodul Faltungsbefehlsinformationen zu dem Faltungszeigermodul 706 senden, um anzugeben, dass die erste Faltungsoperation gestartet ist. In Reaktion darauf kann das Faltungszeigermodul 706 den LSDA-Zeiger aktualisieren, um sowohl auf eine Adresse (z. B. eine Adresse, die der LSDA-Wortleitung WLm+3 zugeordnet ist) zu zeigen, die den nächsten LSDA-Sollspeicherort identifiziert, der durch den durchgezogenen Kasten 806 definiert ist, als auch den HSDA-Zeiger zu aktualisieren, um auf eine Adresse (z. B. eine Adresse, die der HSDA-Wortleitung WLn+1 zugeordnet ist) zu zeigen, die den nächsten HSDA-Sollspeicherort identifiziert.
  • Bezug nehmend auf 8C zeigt die LSDA-Tabelle 802 jetzt, dass alle Daten der zweiten Datenmenge in dem aktuellen LSDA-Sollspeicherort gespeichert sind, d. h.in den in den LSDA-Speicherseiten, die mit den LSDA-Wortleitungen WLm+3 bis WLm+5 gekoppelt sind, wie durch das „X“ in den Einträgen angegeben ist. Dementsprechend kann das Faltungstriggermodul 704 detektieren, dass das Schwellenwertniveau erreicht worden ist, und bestimmen, die zweite Faltungsoperation zu beginnen. Dementsprechend kann das Faltungstriggermodul 704 einen Faltungsbefehl zu dem Sequenzermodul 126 ausgeben, das wiederum einen Faltungsbefehl zu den Datenspeicher-Chips 104 ausgeben kann. Nach dem Empfang kann die Leistungssteuerungsschaltungsanordnung 156 eine Reihe von Impulsen der HSDA-Wortleitung WLn+1 zuführen, um die erste Phase der Programmieroperation der zweite Faltungsoperation auszuführen, um die zweite Datenmenge in die Speicherseite, die mit der HSDA-Wortleitung WLn+1 gekoppelt ist, zu programmieren. 8C zeigt ein „X“ in dem Eintrag 810, um anzugeben, dass die erste Phase zum Programmieren der zweiten Datenmenge in die HSDA-Wortleitung WLn+1 ausgeführt worden ist. Zusätzlich kann in Übereinstimmung mit der Mehrphasen-Programmierung die Leistungssteuerungsschaltungsanordnung 156 eine Reihe von Impulsen der HSDA-Wortleitung WLn zuführen, um die zweite Phase der Programmieroperation der ersten Faltungsoperation auszuführen, was durch ein „X“ in dem Eintrag 812 angegeben ist. Außerdem kann nach dem Bestimmen, dass der aktuelle LSDA-Sollspeicherort sein Schwellenwertniveau erreicht hat, das Faltungstriggermodul 704 Faltungsbefehlsinformationen zu dem Faltungszeigermodul 706 senden, um anzugeben, dass die zweite Faltungsoperation gestartet ist. In Reaktion darauf kann das Faltungszeigermodul 706 den LSDA-Zeiger aktualisieren, um sowohl auf eine Adresse (z. B. eine Adresse, die der LSDA-Wortleitung WLm+6 zugeordnet ist) zu zeigen, die den nächsten LSDA-Sollspeicherort identifiziert, der durch den fett gerahmten Kasten 806 definiert ist, als auch den HSDA-Zeiger zu aktualisieren, um auf eine Adresse zu zeigen, die den nächsten HSDA-Sollspeicherort identifiziert (z. B. eine Adresse, die der HSDA-Wortleitung WLn+2 zugeordnet ist).
  • Bezug nehmend auf 8D zeigt die LSDA-Tabelle 802 jetzt, dass alle Daten der dritten Datenmenge in dem aktuellen LSDA-Sollspeicherort gespeichert sind, d. h. in den in den LSDA-Speicherseiten, die mit den LSDA-Wortleitungen WLm+6 bis WLm+8 gekoppelt sind, wie durch das „X“ in den Einträgen angegeben ist. Dementsprechend kann das Faltungstriggermodul 704 detektieren, dass das Schwellenwertniveau erreicht worden ist, und bestimmen, die dritte Faltungsoperation zu beginnen. Dementsprechend kann das Faltungstriggermodul 704 einen Faltungsbefehl zu dem Sequenzermodul 126 ausgeben, das wiederum einen Faltungsbefehl zu den Datenspeicher-Chips 104 ausgeben kann. Nach dem Empfang kann die Leistungssteuerungsschaltungsanordnung 156 eine Reihe von Impulsen der HSDA-Wortleitung WLn+2 zuführen, um die erste Phase der Programmieroperation der dritte Faltungsoperation auszuführen, um die dritte Datenmenge in die Speicherseite, die mit der HSDA-Wortleitung WLn+2 gekoppelt ist, zu programmieren. 8D zeigt ein „X“ in dem Eintrag 814, um anzugeben, dass die erste Phase zum Programmieren der dritte Datenmenge in die HSDA-Wortleitung WLn+2 ausgeführt worden ist.
  • Zusätzlich kann in Übereinstimmung mit der Mehrphasen-Programmierung die Leistungssteuerungsschaltungsanordnung 156 eine Reihe von Impulsen der HSDA-Wortleitung WLn+2 zuführen, um die zweite Phase der Programmieroperation der zweiten Faltungsoperation auszuführen, was durch ein „X“ in dem Eintrag 816 angegeben ist. Ferner kann die Leistungssteuerungsschaltungsanordnung 156 eine Reihe von Impulsen der HSDA-Wortleitung WLn zuführen, um die dritte Phase der Programmieroperation der ersten Faltungsoperation auszuführen, was durch ein „X“ in dem Eintrag 818 angegeben ist.
  • Außerdem kann nach dem Bestimmen, dass der aktuelle LSDA-Sollspeicherort sein Schwellenwertniveau erreicht hat, das Faltungstriggermodul 704 Faltungsbefehlsinformationen zu dem Faltungszeigermodul 706 senden, um anzugeben, dass die dritte Faltungsoperation gestartet ist. In Reaktion darauf kann das Faltungszeigermodul 706 den LSDA-Zeiger aktualisieren, um sowohl auf eine Adresse (z. B. eine Adresse, die der LSDA-Wortleitung WLm+9 zugeordnet ist) zu zeigen, die den nächsten LSDA-Sollspeicherort identifiziert, der durch den durchgezogenen Kasten 806 definiert ist, als auch den HSDA-Zeiger zu aktualisieren, um auf eine Adresse (z. B. eine Adresse, die der HSDA-Wortleitung WLn+3 zugeordnet ist) zu zeigen, die den nächsten HSDA-Sollspeicherort identifiziert. Zusätzlich kann, wie in 8D gezeigt ist, da alle drei Phasen des Programmierens für die erste Faltungsoperation ausgeführt worden sind, das Faltungszeigermodul 706 den Faltungszeiger aktualisieren, um auf eine Adresse zu zeigen, um anzugeben, dass die erste Datenmenge gefaltet worden ist. Das Faltungszeigermodul 706 kann konfiguriert sein zu bestimmen, dass alle drei Phasen ausgeführt worden sind, basierend auf den Faltungsbefehlsinformationen, die von dem Faltungstriggermodul 704 empfangen werden, und/oder aus den HSDA-Speicherungsfertigstellungsinformationen, die von der Datenspeicherschnittstelle 130 empfangen werden, obwohl andere Arten möglich sein können. Dementsprechend können das Faltungszeigermodul 706 oder andere Komponenten des Datenspeichersystems 100 den Ort des gefalteten Zeigers interpretieren, um zu bestimmen, dass die erste Datenmenge, die in LSDA-Speicherseiten gespeichert ist, die mit den Wortleitungen WLm bis WLm+2 gekoppelt sind, gefaltet worden ist, und die anderen Datenmengen, die in den LSDA-Speicherseiten gespeichert sind, die mit den Wortleitungen WLm+3 bis WLm+11 gespeichert sind, noch nicht gefaltet worden sind. Anders ausgedrückt kann der Ort des gefalteten Zeigers angeben, dass Daten, die an einer Datenspeicheradresse gespeichert sind, die der LSDA-Wortleitung WLm+2 oder einer niedrigeren Datenspeicheradresse zugeordnet sind, gefaltet worden sind, und Daten, die an einer Datenspeicheradresse höher als die Datenspeicheradresse, die der LSDA-Wortleitung WLm+2 zugeordnet ist, gespeichert sind, noch nicht gefaltet worden sind. Außerdem kann an der in 8D abgebildeten Stufe, obwohl alle drei Phasen der Programmieroperation der ersten Faltungsoperation ausgeführt worden sind, das Programmierverifikationsmodul 708 noch nicht eine Verifikationsoperation für die erste Menge von Daten ausgeführt haben. Dementsprechend zeigt 8D, dass der Einspeicherzeiger noch auf einen Datenspeicherort zeigt, um anzugeben, dass keine Daten, die in den HSDA-Speicherseiten gespeichert sind, mit den Wortleitungen WLn bis WLn+3 gekoppelt sind, eingespeichert worden sind.
  • Bezug nehmend auf 8E zeigt die LSDA-Tabelle 802 jetzt, dass alle Daten der vierten Datenmenge in dem aktuellen LSDA-Sollspeicherort gespeichert sind, d. h. den in den LSDA-Speicherseiten, die mit den LSDA-Wortleitungen WLm+9 bis WLm+11 gekoppelt sind, wie durch das „X“ in den Einträgen angegeben ist. Dementsprechend kann das Faltungstriggermodul 704 detektieren, dass das Schwellenwertniveau erreicht worden ist, und bestimmen, die vierte Faltungsoperation zu beginnen. Dementsprechend kann das Faltungstriggermodul 704 einen Faltungsbefehl zu dem Sequenzermodul 126 ausgeben, das wiederum einen Faltungsbefehl zu den Datenspeicher-Chips 104 ausgeben kann. Nach dem Empfang kann die Leistungssteuerungsschaltungsanordnung 156 eine Reihe von Impulsen der HSDA-Wortleitung WLn+3 zuführen, um die erste Phase der Programmieroperation der vierten Faltungsoperation auszuführen, um die vierte Datenmenge in die Speicherseite, die mit der HSDA-Wortleitung WLn+3 gekoppelt ist, zu programmieren. 8E zeigt ein „X“ in dem Eintrag 820, um anzugeben, dass die erste Phase zum Programmieren der dritte Datenmenge in die HSDA-Wortleitung WLn+2 ausgeführt worden ist.
  • Zusätzlich kann in Übereinstimmung mit der Mehrphasen-Programmierung die Leistungssteuerungsschaltungsanordnung 156 eine Reihe von Impulsen der HSDA-Wortleitung WLn+2 zuführen, um die zweite Phase der Programmieroperation der dritten Faltungsoperation auszuführen, was durch ein „X“ in dem Eintrag 822 angegeben ist. Ferner kann die Leistungssteuerungsschaltungsanordnung 156 eine Reihe von Impulsen der HSDA-Wortleitung WLn+1 zuführen, um die dritte Phase der Programmieroperation der zweiten Faltungsoperation auszuführen, was durch ein „X“ in dem Eintrag 824 angegeben ist.
  • Außerdem kann nach dem Bestimmen, dass der aktuelle LSDA-Sollspeicherort sein Schwellenwertniveau erreicht hat, das Faltungstriggermodul 704 Faltungsbefehlsinformationen zu dem Faltungszeigermodul 706 senden, um anzugeben, dass die vierte Faltungsoperation gestartet ist. In Reaktion darauf kann das Faltungszeigermodul 706 sowohl den LSDA-Zeigen aktualisieren, um auf eine Adresse zu zeigen, die den nächsten LSDA-Sollspeicherort identifiziert (die in diesem Fall eine Adresse jenseits einer ist, die den LSDA-Wortleitungen WLm bis WLm+11 zugeordnet ist), als auch den HSDA-Zeiger aktualisieren, um auf eine Adresse zu zeigen, die den nächsten HSDA-Sollspeicherort identifiziert (die in diesem Fall eine Adresse jenseits einer ist, die den HSDA-Wortleitungen WLn bis WLn+3 zugeordnet ist).
  • Zusätzlich kann, wie in 8E gezeigt ist, da alle drei Phasen des Programmierens für die zweite Faltungsoperation ausgeführt worden sind, das Faltungszeigermodul 706 den Faltungszeiger aktualisieren, um auf eine Adresse zu zeigen, um anzugeben, dass die zweite Datenmenge gefaltet worden ist. Das Faltungszeigermodul 706 kann konfiguriert sein zu bestimmen, dass alle drei Phasen ausgeführt worden sind, basierend auf den Faltungsbefehlsinformationen, die von dem Faltungstriggermodul 704 empfangen werden, und/oder aus den HSDA-Speicherungsfertigstellungsinformationen, die von der Datenspeicherschnittstelle 130 empfangen werden, obwohl andere Arten möglich sein können. Dementsprechend können das Faltungszeigermodul 706 oder andere Komponenten des Datenspeichersystems 100 den Ort des gefalteten Zeigers interpretieren, um zu bestimmen, dass die erste Datenmenge, die in LSDA-Speicherseiten gespeichert ist, die mit den Wortleitungen WLm bis WLm+2 gekoppelt sind, und die zweite Datenmenge, die in LSDA-Speicherseiten gespeichert ist, die mit den Wortleitungen WLm+3 bis WLm+5 gekoppelt sind, gefaltet worden ist, während die anderen Datenmengen, die in den LSDA-Speicherseiten gespeichert sind, die mit den Wortleitungen WLm+6 bis WLm+11 gespeichert sind, noch nicht gefaltet worden sind.
  • Außerdem hat an der Stufe, die in 8E abgebildet ist, das Programmierverifikationsmodul 708 eine Verifikationsoperation für die erste Datenmenge ausgeführt und bestimmt, dass die erste Datenmenge in ihren zugeordneten HSDA-Sollspeicherort korrekt programmiert worden ist. Dementsprechend kann das Programmierverifikationsmodul 708 Einspeicherinformationen zu dem Faltungszeigermodul 706 senden, das wiederum den Einspeicherzeiger aktualisieren kann, um auf eine Adresse eines HSDA-Datenspeicherorts zu zeigen, wo die erste Datenmenge gespeichert ist (d. h. die HSDA-Speicherseite, die mit der HSDA-Wortleitung WLn gekoppelt ist), wie in 8E gezeigt ist. Durch Zeigen auf eine Adresse, wo die erste Datenmenge gespeichert ist, und nicht auf eine Adresse, wo die zweite Datenmenge gespeichert ist, gibt der Einspeicherzeiger jedoch an, dass, obwohl alle drei Phasen der Programmieroperation der zweiten Faltungsoperation ausgeführt worden sind, das Programmierverifikationsmodul 708 noch nicht verifiziert hat, dass die zweite Datenmenge eingespeichert ist.
  • Weitere Faltungsoperationen können auf diese Weise gestartet und fertiggestellt werden, um die dritte, die vierte und weitere Faltungsoperationen fertigzustellen.
  • Zusätzlich kann, wenn Daten in dem Bereich 604 hoher Speicherdichte gespeichert werden unter Verwendung der Beispielfaltungsoperationen, die mit Bezug auf die 7 und 8A-8E beschrieben sind, das Programmiermanagementmodul 702 die Adressenabbildungsdatenbank 710 für Daten, die in den Bereich 602 niedriger Speicherdichte gespeichert werden, nicht aktualisieren. Das heißt, die Aktualisierungen für die Adressenabbildungsdatenbank 710 können dazu dienen zu identifizieren, wo die Daten in dem Bereich 604 hoher Speicherdichte, jedoch nicht in dem Bereich 602 niedriger Speicherdichte, gespeichert sind, was wiederum den Aufwand zum Aktualisieren der Adressenabbildungsdatenbank 710 reduziert. Dementsprechend kann, wenn ein Programmierbefehl empfangen wird und das Programmiermanagementmodul 702 LSDA-Speicherortinformationen aus der Liste 712 freier LSDA-Blöcke und HSDA-Speicherortinformationen aus der Liste 714 freier HSDA-Blöcke auswählt, das Programmiermanagementmodul 702 konfiguriert sein, die Adressenabbildungsdatenbank 710 zu aktualisieren durch Aufnehmen einer Abbildung, die Informationen über die logische Host-Adresse, die in dem Programmierbefehl enthalten sind, auf eine HSDA-Datenspeicheradresse, die in den HSDA-Speicherortinformationen enthalten ist, abbildet, jedoch keiner Abbildung, die die Informationen über die logische Host-Adresse auf eine LSDA-Datenspeicheradresse, die in den LSDA-Speicherortinformationen enthalten ist.
  • Genauer zeigt 9 ein Blockdiagramm von Komponenten des Datenspeichersystems 100, die an der Ausführung einer Leseoperation beteiligt sein können, wie z. B. in Reaktion auf den Empfang einer Host-Leseanforderung, eine Datenmenge aus den Datenspeicher-Chips 104 zu lesen. Die in 9 gezeigten Komponenten enthalten ein Lesemanagementmodul 902, eine Faltungszeigerdatenbank 716, eine Adressenabbildungsdatenbank 710, das Sequenzermodul 126, die Datenspeicherschnittstelle 130, den RAM 116 und die Datenspeicher-Chips 104. In einigen Beispielkonfigurationen kann das Lesemanagementmodul 902 eine Komponente der Datenspeichermanagementschicht 138 (2A) sein, obwohl in anderen Beispielkonfigurationen das Lesemanagementmodul 902 eine Komponente außerhalb der Medienmanagementschicht 138 sein kann.
  • Wenn ein Host-Lesebefehl empfangen wird, kann der Lesebefehl zu dem Lesemanagementmodul 902 gesendet werden, wie z. B. von dem Frontend-Modul 108. Der Host-Lesebefehl kann Informationen über logische Adressen enthalten, die Daten zugeordnet sind, die ein Host-System aus den Datenspeicher-Chips 104 lesen möchte. Das Lesemanagementmodul 902 kann konfiguriert sein, eine physikalische Adresse zu bestimmen, wo die Datenmenge in den Datenspeicher-Chips 104 gespeichert ist, zu dem Sequenzermodul 126. Das Sequenzermodul 126 kann wiederum einen oder mehrere Lesekontextbefehle erzeugen, um die Daten abzurufen, und den einen oder die mehreren Lesekontextbefehle zu den Datenspeicher-Chips 104 senden, um die Daten abzurufen. In Reaktion darauf können die Datenspeicher-Chips 104 die Daten erfassen und die Daten in den RAM 116 laden. Fehlerdetektion und -korrektur können dann auf den Daten ausgeführt werden, wie z. B. mit der ECC-Engine 124 (2A), und unter der Annahme, dass die Daten die Fehlerkorrektur bestehen, können die Daten über die Host-Schnittstelle 120 zurück zu dem Host-System gesendet werden, um die Ausführung der Host-Leseanforderung fertigzustellen.
  • Bevor Informationen über physikalische Adressen für das Sequenzermodul 126 bereitgestellt werden, kann das Lesemanagementmodul 902 bestimmen, ob eine Version der Datenmenge, die in dem Bereich niedriger Speicherdichte 602 oder dem Bereich 604 hoher Speicherdichte gespeichert ist, abgerufen werden soll. Das Lesemanagementmodul 902 kann konfiguriert sein, die Bestimmung basierend darauf vorzunehmen, ob die Datenmenge eingespeichert ist, wie durch den Einspeicherzeiger identifiziert ist. Nach dem Empfang des Lesebefehls kann das Lesemanagementmodul 902 auf die Faltungszeigerdatenbank 716 (oder eine andere Datenbank, wie z. B. die Adressenabbildungsdatenbank 710, die die Zeigerinformationen enthält) zugreifen. Falls der Einspeicherzeiger angibt, dass die angeforderten Daten eingespeichert sind, dann kann das Lesemanagementmodul 902 Daten abrufen, die an der physikalischen HSDA-Adresse gespeichert sind, die der in dem Lesebefehl enthaltenen logischen Adresse zugeordnet ist. Alternativ kann, falls der Einspeicherzeiger angibt, dass die angeforderten Daten nicht eingespeichert sind, das Lesemanagementmodul dann bestimmen, die angeforderten Daten aus dem Bereich 602 niedriger Speicherdichte abzurufen.
  • Falls das Lesemanagementmodul 902 bestimmt, die angeforderten Daten aus dem Bereich 602 niedriger Speicherdichte abzurufen, dann kann das Lesemanagementmodul 902 ein Übersetzungsmodul 904 für physikalische Adressen benutzen, wie z. B. durch Kommunizieren mit ihm, das konfiguriert ist, eine Übersetzungsberechnung für physikalische Adressen auszuführen, um zu identifizieren, wo in dem Bereich 602 niedriger Speicherdichte sich die angeforderten Daten befinden.
  • Wie vorstehend beschrieben kann die Zeiteinteilung der Ausführung der Einspeicheroperation für eine Datenmenge und einer letzten (z. B. dritten) Phase einer Programmieroperation weiterer Daten eine Beziehung zwischen dem Einspeicherzeiger und dem gefalteten Zeiger bereitstellen. Insbesondere kann der Einspeicherzeiger auf eine HSDA-Wortleitung benachbart einer weiteren HSDA-Wortleitung zeigen, die mit einem Speicherort gekoppelt ist, der eine Datenmenge speichert, wobei wenigstens ein Abschnitt dieser Datenmenge auch in einem LSDA-Speicherort gespeichert ist, der mit einer LSDA-Wortleitung gekoppelt ist, auf die der gefaltete Zeiger zeigt.
  • Diese Beziehung ist in den 8E und 10 dargestellt. 10 ist ähnlich 8E in Bezug darauf, wohin die Zeiger zeigen, außer dass anstelle von „X“-Kennzeichen, um zu bezeichnen, ob Daten gespeichert sind oder nicht und ob eine spezielle Programmierphase ausgeführt wird oder nicht, nummerierte Datenseiten verwendet sind, um spezielle Datenseiten DP zu bezeichnen, die in LSDA- und HSDA-Speicherseiten gespeichert sind, die mit LSDA- bzw. HSDA-Wortleitungen gekoppelt sind. Beispielsweise ist eine erste Datenseite DP1 in der LSDA-Speicherseite, die mit der LSDA-Wortleitung WLm gekoppelt ist, gespeichert, eine zweite Datenseite DP2 ist in der LSDA-Speicherseite gespeichert, die mit der LSDA-Wortleitung WLm+1 gekoppelt ist, eine dritte Datenseite DP3 ist in der LSDA-Speicherseite gespeichert, die mit der LSDA-Wortleitung WLm+2 gekoppelt ist, eine vierte Datenseite DP4 ist in der LSDA-Speicherseite gespeichert, die mit der LSDA-Wortleitung WLm+3 gekoppelt ist, eine fünfte Datenseite DP5 ist in der LSDA-Speicherseite gespeichert, die mit der LSDA-Wortleitung WLm+4 gekoppelt ist, eine sechste Datenseite DP6 ist in der LSDA-Speicherseite gespeichert, die mit der LSDA-Wortleitung WLm+5 gekoppelt ist, und so weiter. Ähnlich sind die erste, die zweite und die dritte Datenseite DP1, DP2, DP3 in der HSDA-Speicherseite gespeichert, die mit der HSDA-Wortleitung WLn gekoppelt ist, die vierte, die fünfte und die sechste Datenseite DP4, DP5, DP6 sind in der HSDA-Speicherseite gespeichert, die mit der HSDA-Wortleitung WLn+1 gekoppelt ist, und so weiter
  • Bezug nehmend insbesondere auf 8E, wie vorstehend beschrieben, wenn die Einspeicheroperation die erste Datenmenge einspeichert, die in der HSDA-Speicherseite gespeichert ist, die mit der HSDA-Wortleitung WLn gekoppelt ist, zeigt der Einspeicherzeiger auf die HSDA-Wortleitung WLn. Unmittelbar bevor oder nachdem die Einspeicheroperation ausgeführt wird, wird die letzte (dritte) Phase der Programmieroperation, um die zweite Datenmenge in der nächsten benachbarten HSDA-Wortleitung WLn+1 zu speichern, ausgeführt, was verursacht, dass der gefaltete Zeiger auf eine LSDA-Wortleitung zeigt, die mit einer LSDA-Speicherseite gekoppelt ist, die einen Abschnitt der zweiten Datenmenge speichert, die in dem in 8E gezeigten Beispiel die LSDA-Wortleitung WLm+5 ist, die mit der LSDA-Speicherseite gekoppelt ist, die die letzte Datenseite der zweiten Datenmenge speichert. Basierend auf der Zeitplanung zwischen der Einspeicheroperation und der letzten Programmieroperation werden die Daten, die in der LSDA-Speicherseite gespeichert sind, die mit der LSDA-Wortleitung WLm+5 gekoppelt ist, ebenfalls als die letzte oder obere Seite in der HSDA-Speicherseite gespeichert, die mit der HSDA-Wortleitung WLn+1 gekoppelt ist. Unter Verwendung dieses Wissens kann das Übersetzungsmodul 904 für physikalische Adressen identifizieren, wo gegebene Daten in der niedrigen Speicherdichte gespeichert sind, durch Bestimmen, wie viele LSDA-Wortleitungen entfernt die gegebene Datenmenge in dem Bereich niedriger Speicherdichte gespeichert ist relativ zu den Daten, auf die der gefaltete Zeiger zeigt.
  • Zwei Beispiele sind jetzt bereitgestellt, um das Lesen von Daten aus entweder dem Bereich 602 niedriger Speicherdichte oder dem Bereich 604 hoher Speicherdichte mit Bezug auf die 9 und 10 darzustellen. In dem ersten Beispiel ist angenommen, dass das Lesemanagementmodul 902 eine Leseanforderung empfängt, die eine logische Adresse identifiziert. In Reaktion darauf kann das Lesemanagementmodul 902 mit der logischen Adresse auf die Adressenabbildungsdatenbank 710 zugreifen. Es ist in dem ersten Beispiel angenommen, dass in Reaktion auf den Zugriff das Lesemanagementmodul 902 identifiziert, dass die Daten, die zu lesen angefordert ist, die zweite Datenseite DP2 sind, die in der HSDA-Wortleitung WLn gespeichert ist. Das Lesemanagementmodul 902 kann dann bestimmen, dass der Einspeicherzeiger auf die HSDA-Wortleitung WLn zeigt, und in Reaktion darauf bestimmen, dass die zweite Datenseite DP2 eingespeichert ist, da sie innerhalb der Grenze eingespeicherter Daten gespeichert ist, wie durch den Einspeicherzeiger angegeben ist. In Reaktion darauf kann das Lesemanagementmodul 902 mit der Sequenzermodul 126 kommunizieren, um die zweite Datenseite DP2 aus der HSDA-Speicherseite, die mit der HSDA-Wortleitung WLn in dem Bereich 604 hoher Speicherdichte gekoppelt ist, lesen zu lassen. Da das Lesemanagementmodul 902 identifiziert hat, dass die zweite Datenseite DP2 eingespeichert ist, hat das Lesemanagementmodul 902 nicht das Übersetzungsmodul 904 für physikalische Adressen benutzt, um zu identifizieren, wo in dem Bereich 602 niedriger Speicherdichte die zweite Datenseite DP2 gespeichert ist.
  • In einem zweiten Beispiel ist angenommen, dass das Lesemanagementmodul 902 auf die Adressenabbildungsdatenbank 710 zugreift und in Reaktion darauf bestimmt, dass die Daten, die zu lesen angefordert ist, die achte Datenseite DP8 sind, die als die mittlere Datenseite in der HSDA-Speicherseite gespeichert ist, die mit der Wortleitung WLn+2 gekoppelt ist. Das Lesemanagementmodul 902 kann auch bestimmen, dass der Einspeicherzeiger auf die HSDA-Wortleitung WLn zeigt, und in Reaktion darauf bestimmen, dass die achte Datenseite DP8 nicht eingespeichert ist, da sie außerhalb der Grenze eingespeicherter Daten gespeichert wird, wie durch den Einspeicherzeiger angegeben ist. Somit kann das Lesemanagementmodul 902 bestimmen, die achte Datenseite DP8 aus dem Bereich 602 niedriger Speicherdichte anstelle dem Bereich 604 mit hoher Speicherdichte zu lesen. In Reaktion darauf kann das Lesemanagementmodul 902 die Informationen über die physikalische HSDA-Adresse für das Übersetzungsmodul 904 für physikalische Adressen bereitstellen.
  • In Reaktion auf den Empfang der Informationen über die physikalische HSDA-Adresse kann das Übersetzungsmodul 904 für physikalische Adressen identifizieren, dass der Einspeicherzeiger auf die HSDA-Wortleitung WLn zeigt, und in Reaktion darauf wissen, dass der gefaltete Zeiger auf eine LSDA-Wortleitung zeigt, die mit einer LSDA-Speicherseite gekoppelt ist, die Daten speichert, die auch als die letzte oder obere Datenseite in der HSDA-Speicherseite, die mit WLn+1 gekoppelt ist, gespeichert sind. Das Übersetzungsmodul 904 für physikalische Adressen kann dann identifizieren, dass die achte Datenseite DP8, die als die mittlere Datenseite in der HSDA-Wortleitung WLn+2 gespeichert ist, zwei LSDA-Wortleitungen oder Speicherseiten entfernt von dort gespeichert ist, wo die letzte Datenseite in der HSDA-Wortleitung WLn+1 gespeichert ist. Dementsprechend kann das Übersetzungsmodul 904 für physikalische Adressen bestimmen, dass die achte Datenseite DP8 in einer LSDA-Speicherseite gespeichert ist, die mit einer LSDA-Wortleitung WL gekoppelt ist, die dementsprechend zwei LSDA-Wortleitungen oder Speicherseiten entfernt von der LSDA-Wortleitung WL ist, auf die der gefaltete Zeiger zeigt.
  • Nach dem Zugreifen auf die Faltungszeigerdatenbank 716 kann das Übersetzungsmodul 904 für physikalische Adressen identifizieren, dass der gefaltete Zeiger auf die LSDA-Wortleitung WLm+5 zeigt, und in Reaktion darauf identifizieren, dass die achte Datenseite DP8 in einer LSDA-Speicherseite gespeichert ist, die mit der LSDA-Wortleitung WLm+7 gekoppelt ist - d. h. der LSDA-Wortleitung, die zwei LSDA-Wortleitungen von der LSDA-Wortleitung WLm+5 entfernt ist. Das Übersetzungsmodul 904 für physikalische Adressen kann dann Informationen über die physikalische LSDA-Adresse, die der LSDA-Wortleitung WLm+7 zugeordnet ist, für das Lesemodul 902 (oder direkt für das Sequenzermodul 126) bereitstellen, und das Sequenzermodul 126 kann Kontextbefehle zu dem Bereich 602 niedriger Speicherdichte ausgeben, um die achte Datenseite DP8 aus der LSDA-Speicherseite, die mit der LSDA-Wortleitung WLm+7 gekoppelt ist, lesen und in den RAM 116 laden zu lassen.
  • Zusammengefasst, wie in den zweiten Beispiel dargestellt, kann das Übersetzungsmodul 904 für physikalische Adressen durch die Kenntnis, wohin der gefaltete Zeiger zeigt und wie viele LSDA-Wortleitungen oder Speicherseiten entfernt die angeforderten Daten relativ zu den Daten sind, auf die der gefaltete Zeiger zeigt, eine physikalische HSDA-Adresse, die es empfängt, in eine physikalische LSDA-Adresse übersetzen. Die angeforderten Daten können wiederum aus der niedrigen Speicherdichte 602 an der physikalischen LSDA-Adresse anstatt aus dem Bereich 604 hoher Speicherdichte an der physikalischen HSDA-Adresse gelesen werden, obwohl eine explizite oder direkte Abbildung zwischen der logischen Adresse und der physikalischen LSDA-Adresse in der Adressenabbildungsdatenbank 710 nicht existiert. Wie beschrieben wird diese Übersetzung von der physikalischen HSDA-Adresse in die physikalische LSDA-Adresse ausgeführt, wenn die Daten nicht in dem Bereich 604 hoher Speicherdichte verifiziert und nicht eingespeichert sind.
  • 11 zeigt eine weitere Beispielkonfiguration des nichtflüchtigen Datenspeichersystems 1100, das konfiguriert sein kann, eine Faltungsoperation auszuführen, um Daten aus dem Bereich 602 niedriger Speicherdichte in den Bereich 604 hoher Speicherdichte zu falten. Die in 11 gezeigten Komponenten können ähnlich denjenigen sein, die für die in 7 gezeigte Konfiguration enthalten sind, außer dass die in 11 gezeigten Komponenten ferner ein Datentypbestimmungsmodul 1102 enthalten können, das konfiguriert ist, einen Typ für Datenmengen, die in die Datenspeicher-Chips 104 programmiert werden sollen, zu bestimmen.
  • Genauer kann jeder aus dem Bereich 602 niedriger Speicherdichte und dem Bereich 604 hoher Speicherdichte in einen Bereich vom ersten Typ und einen Bereich vom zweiten Typ partitioniert oder getrennt sein. Beispielsweise kann der Bereich 602 niedriger Speicherdichte in einen LSDA-Bereich 1104 vom ersten Typ und einen LSDA-Bereich 1106 vom zweiten Typ partitioniert sein. Ähnlich kann der Bereich 604 hoher Speicherdichte in einen HSDA-Bereich 1108 vom ersten Typ und einen Bereich 1110 vom zweiten Typ partitioniert sein. In anderen Beispielkonfigurationen kann jeder aus dem Bereich 602 niedriger Speicherdichte und dem Bereich 604 hoher Speicherdichte in mehr als zwei Bereiche unterschiedlichen Typs partitioniert sein. Bereiche vom gleichen Typ können einander zugeordnet sein, so dass Daten, die in einem speziellen Typ in dem Bereich 602 niedriger Speicherdichte gespeichert sind, in den Bereich vom gleichen Typ des Bereichs hoher Speicherdichte gefaltet werden können. Somit können beispielsweise Daten, die in dem LSDA-Bereich 1104 vom ersten Typ gespeichert sind, in den HSDA-Bereich 1108 vom ersten Typ und nicht in den HSDA-Bereich 1110 vom zweiten Typ gefaltet werden. Ähnlich können Daten, die in dem LSDA-Bereich 1106 vom zweiten Typ gespeichert sind, in den HSDA-ersten 1110 vom zweiten Typ und nicht in den HSDA-Bereich 1108 vom ersten Typ gefaltet werden.
  • Für diese Konfigurationen, wo Daten unterschiedlicher Typen in unterschiedlichen Bereich der Bereiche 602, 604 niedriger und hoher Speicherdichte gespeichert sind, können Daten vom gleichen Typ so betrachtet werden, dass sie in den Bereich 604 hoher Speicherdichte über denselben Datenstrom gefaltet werden, und Daten unterschiedlicher Typen können so betrachtet werden, dass sie in den Bereich 604 hoher Speicherdichte über unterschiedliche Datenströme gefaltet werden. Beispielsweise können Daten vom ersten Typ, die in dem LSDA-Bereich 1104 vom ersten Typ gespeichert sind, in den HSDA-Bereich 1108 vom ersten Typ über den Datenstrom 1112 gefaltet werden, und Daten vom zweiten Typ, die in dem LSDA-Bereich 1106 vom zweiten Typ gespeichert sind, können in den HSDA-Bereich 1110 vom zweiten Typ über den Datenstrom 1114 gefaltet werden. Für einige Beispielkonfigurationen kann das Speichern und Falten von Daten gemäß unterschiedlichen Typen die Schreibverstärkung vermindern, was wiederum die Speicherleistung des nichtflüchtigen Datenspeichersystems verbessern kann.
  • Für einige Beispielkonfigurationen können die unterschiedlichen Datentypen einen heißen Datentyp und einen kalten Datentyp enthalten. Heiße Daten können Daten sein, die als aktive Daten betrachtet werden, wie z. B. Daten, auf die zugegriffen wird oder die modifiziert werden innerhalb einer speziellen Zeitspanne, in der sie in den Datenspeicher-Chips 104 gespeichert sind, und/oder Daten, auf die relativ häufig zugegriffen und/oder die relativ häufig modifiziert werden, wie z. B. oberhalb eines vorbestimmten Schwellenwerts für eine Rate. Im Gegensatz dazu können kalte Daten Daten sein, die als inaktive Daten betrachtet werden, wie z. B. Daten, auf die zugegriffen wird oder die modifiziert werden später als eine spezielle Zeitspanne, ab dann, wenn sie in den Datenspeicher-Chips 104 gespeichert werden, und/oder Daten, auf die relativ selten zugegriffen und/oder die relativ selten modifiziert werden, wie z. B. unterhalb eines vorbestimmten Schwellenwerts für eine Rate. Für andere Beispielkonfigurationen können unterschiedliche Datentypen Zufallsdaten und sequenzielle Daten enthalten. Zufallsdaten und sequenzielle Daten können durch ihre zugeordnete Größe unterschieden werden, wobei Zufallsdaten unterhalb eines Schwellenwerts für die Datengröße sind und sequenzielle Daten oberhalb eines Schwellenwerts für die Datengröße sind. Zusätzlich kann für einige Beispielkonfigurationen die Größe der Daten verwendet werden, um die Daten als heiß oder kalt zu identifizieren. Beispielsweise können Zufallsdaten als heiße Daten identifiziert sein, und sequenzielle Daten können als kalte Daten gekennzeichnet sein. Datentypen, die nicht heiß/kalt oder zufällig/sequenziell sind, können möglich sein.
  • Wenn das Programmiermanagementmodul 702 einen Programmierbefehl empfängt, eine Datenmenge zu programmieren, kann das Programmiermanagementmodul 702 mit dem Datentypbestimmungsmodul 1102 kommunizieren, um zu bestimmen, ob die Datenmenge als Datenmenge vom ersten Typ oder eine Datenmenge vom zweiten Typ ist. Das Datentypbestimmungsmodul 1102 kann ein oder mehrere Kriterien nutzen, wie z. B. eine Größe der Datenmenge, um die Datenmenge als vom ersten Typ oder vom zweiten Typ zu identifizieren. Falls die Datenmenge als vom ersten Typ bestimmt wird, dann kann das Programmiermanagementmodul 702 LSDA- und HSDA-Sollorte für die Datenmenge aus den Listen 712, 714 freier LSDA- und HSDA-Blöcke auswählen, so dass die Datenmenge in dem LSDA-Bereich 1104 vom ersten Typ gespeichert und dann in den HSDA-Bereich 1108 vom ersten Typ gefaltet wird. Alternativ kann, falls die Datenmenge als vom zweiten Typ bestimmt wird, das Programmiermanagementmodul 702 LSDA- und HSDA-Sollorte für die Datenmenge aus den Listen 712, 714 freier LSDA- und HSDA-Blöcke auswählen, so dass die Datenmenge in dem LSDA-Bereich 1106 vom zweiten Typ gespeichert und dann in den HSDA-Bereich 1110 vom zweiten Typ gefaltet wird.
  • 12 ist ein Ablaufplan eines Beispielverfahrens 1200 zum Ausführen einer Faltungsoperation in einem Datenspeichersystem wie z. B. dem Datenspeichersystem 100. Die Faltungsoperation, die mit Bezug auf 12 ausgeführt wird, beinhaltet das Falten von vier Datenmengen, die in vier LSDA-Speicherorten eines Datenspeicherbereichs niedriger Speicherdichte (z. B. dem Bereich 602 niedriger Speicherdichte) gespeichert sind, in vier HSDA-Speicherorte eines Datenspeicherbereichs hoher Speicherdichte (z. B. des Bereichs 604 hoher Speicherdichte). In einigen Beispielverfahren können die LSDA-Speicherorte einander benachbart sein, und die HSDA-Speicherorte können einander benachbart sein. Das Falten von vier Datenmengen ist lediglich erläuternd, und andere Beispielverfahren, die ähnliche Operationen enthalten, können das Falten von mehr oder weniger als vier Datenmengen enthalten. Außerdem entspricht die Größe jeder Datenmenge der Speicherkapazität zugeordneter LSDA- und HSDA-Speicherorte und/oder ist ihr gleich. Beispielsweise kann, falls der Bereich niedriger Speicherdichte Datenspeicherzellen enthält, die als SLC-Zellen programmiert sind, und der Bereich hoher Speicherdichte Datenspeicherzellen enthält, die als QX-MLC-Speicherzellen programmiert sind, ein gegebener HSDA-Speicherort eine einzelne QX-MLC-Speicherseite enthalten, ein gegebener LSDA-Speicherort kann eine Anzahl Q von SLC-Speicherseiten enthalten, und eine gegebene Datenmenge, die in jeden aus dem gegebenen LSDA-Speicherort und HSDA-Speicherort programmiert ist, kann eine Anzahl Q von Datenseiten enthalten.
  • Bei Block 1202 kann die Steuereinheit eines Datenspeichersystems eine erste Datenmenge in einen ersten LSDA-Speicherort des Bereichs niedriger Speicherdichte programmieren (z. B. über das Verwenden eines Programmiermanagementmoduls 702). Bei Block 1204 kann in Reaktion darauf, dass ein Betrag der ersten Datenmenge einen Schwellenwert erreicht (z. B. wenn die gesamte erste Datenmenge in den ersten LSDA-Speicherort programmiert ist), die Steuereinheit (z. B. durch Verwenden des Faltungstriggermoduls 704) eine erste Faltungsoperation beginnen und eine Leistungssteuerungsschaltung (z. B. die Leistungssteuerungsschaltung 156 von 2B) steuern, eine erste Phase einer ersten Mehrphasen-Programmieroperation auszuführen, um die erste Datenmenge in einen ersten HSDA-Speicherort zu programmieren. Außerdem kann bei Block 1204 die Steuereinheit (z. B. über das Verwenden des Faltungszeigermoduls 706) eine Faltungszeigerdatenbank (z. B. die Faltungszeigerdatenbank 716) aktualisieren, um einen LSDA-Schreibzeiger auf einen nächsten (zweiten) LSDA-Speicherort und einen HSDA-Schreibzeiger auf einen nächsten (zweiten) HSDA-Speicherort zeigen zu lassen.
  • Bei Block 1206 kann die Steuereinheit eine zweite Datenmenge in den zweiten LSDA-Speicherort des Bereichs niedriger Speicherdichte programmieren. Bei Block 1208 kann die Steuereinheit in Reaktion darauf, dass ein Betrag der zweiten Datenmenge einen Schwellenwert erreicht (z. B. wenn die gesamte zweite Datenmenge in den zweiten LSDA-Speicherort programmiert ist), eine zweiten Faltungsoperation beginnen und die Leistungssteuerungsschaltung steuern, eine erste Phase einer zweiten Mehrphasen-Programmieroperation auszuführen, um die zweite Datenmenge in den zweiten HSDA-Speicherort zu programmieren. Außerdem kann bei Block 1208 die Steuereinheit die Leistungssteuerungsschaltung steuern, eine zweite Phase der ersten Programmieroperation auszuführen. Zusätzlich kann die Steuereinheit die Faltungszeigerdatenbank aktualisieren, um den LSDA-Schreibzeiger auf einen nächsten (dritten) LSDA-Speicherort und einen HSDA-Schreibzeiger auf einen nächsten (dritten) HSDA-Speicherort zeigen zu lassen.
  • Bei Block 1210 kann die Steuereinheit eine dritte Datenmenge in den dritten LSDA-Speicherort des Bereichs niedriger Speicherdichte programmieren. Bei Block 1212 kann die Steuereinheit in Reaktion darauf, dass ein Betrag der dritten Datenmenge einen Schwellenwert erreicht (z. B. wenn die gesamte dritte Datenmenge in den dritten LSDA-Speicherort programmiert ist), eine dritte Faltungsoperation beginnen und die Leistungssteuerungsschaltung steuern, eine erste Phase einer dritten Mehrphasen-Programmieroperation auszuführen, um die dritte Datenmenge in den dritten HSDA-Speicherort zu programmieren. Außerdem kann die Steuereinheit 1212 bei Block die Leistungssteuerungsschaltung steuern, eine zweite Phase der zweiten Programmieroperation und eine dritte Phase der ersten Programmieroperation auszuführen. Zusätzlich kann die Steuereinheit die Faltungszeigerdatenbank aktualisieren, um den LSDA-Schreibzeiger auf einen nächsten (vierten) LSDA-Speicherort und einen HSDA-Schreibzeiger auf einen nächsten (vierten) HSDA-Speicherort zeigen zu lassen. Außerdem kann, unter der Annahme, dass die dritte Phase die letzte Phase der Mehrphasen-Programmieroperation ist, die Steuereinheit (z. B. über das Verwenden des Faltungszeigermoduls 704) die Faltungszeigerdatenbank aktualisieren, um einen gefalteten Zeiger auf den ersten LSDA-Speicherort (z. B. eine spezielle aus den LSDA-Wortleitungen oder Speicherseiten, die dem ersten LSDA-Speicherort zugeordnet sind) zeigen zu lassen, um anzugeben, dass alle Phasen der ersten Mehrphasen-Programmieroperation ausgeführt worden sind.
  • Bei Block 1214 kann, in Reaktion darauf, dass alle Phasen der ersten Programmieroperation ausgeführt worden sind, die Steuereinheit (z. B. durch Verwenden des Programmierverifikationsmoduls 708) eine Einspeicheroperation ausführen, um zu bestimmen, ob die Version der ersten Datenmenge, die in dem ersten HSDA-Speicherort gespeichert ist, eingespeichert oder verifiziert ist. Unter der Annahme, dass es so ist, kann dann die Steuereinheit (z. B. über Verwendung des Faltungszeigermoduls 704) die Faltungszeigerdatenbank aktualisieren, um einen Einspeicherzeiger auf den ersten HSDA-Speicherort zeigen zu lassen, um angeben, dass die erste Datenmenge, die in dem ersten HSDA-Speicherort gespeichert ist, eingespeichert ist.
  • Bei Block 1216 kann die Steuereinheit eine vierte Datenmenge in den vierten LSDA-Speicherort des Bereichs niedriger Speicherdichte programmieren. Bei Block 1218 kann die Steuereinheit in Reaktion darauf, dass ein Betrag der vierten Datenmenge einen Schwellenwert erreicht (z. B. wenn die gesamte vierte Datenmenge in den vierten LSDA-Speicherort programmiert ist), eine vierte Faltungsoperation beginnen und die Leistungssteuerungsschaltung steuern, eine erste Phase einer vierten Mehrphasen-Programmieroperation auszuführen, um die vierte Datenmenge in den vierten HSDA-Speicherort zu programmieren. Außerdem kann die Steuereinheit 1218 bei Block die Leistungssteuerungsschaltung steuern, eine zweite Phase der dritten Programmieroperation und eine dritte Phase der zweiten Programmieroperation auszuführen. Zusätzlich kann die Steuereinheit die Faltungszeigerdatenbank aktualisieren, um den LSDA-Schreibzeiger auf einen nächsten (fünften) LSDA-Speicherort und einen HSDA-Schreibzeiger auf einen nächsten (fünften) HSDA-Speicherort zeigen zu lassen. Außerdem kann die Steuereinheit die Faltungszeigerdatenbank aktualisieren, um den gefalteten Zeiger auf den zweiten LSDA-Speicherort (z. B. eine spezielle aus den LSDA-Wortleitungen oder Speicherseiten, die dem zweiten LSDA-Speicherort zugeordnet sind) zeigen zu lassen, um anzugeben, dass alle Phasen der zweiten Mehrphasen-Programmieroperation ausgeführt worden sind.
  • Bei Block 1220 kann, in Reaktion darauf, dass alle Phasen der ersten Programmieroperation ausgeführt worden sind, die Steuereinheit eine Einspeicheroperation ausführen, um zu bestimmen, ob die Version der zweiten Datenmenge, die in dem zweiten HSDA-Speicherort gespeichert ist, eingespeichert oder verifiziert ist. Unter der Annahme, dass das so ist, kann die Steuereinheit dann die Faltungszeigerdatenbank aktualisieren, um einen Einspeicherzeiger auf den zweiten HSDA-Speicherort zeigen zu lassen, um anzugeben, dass die zweite Datenmenge, die in dem zweiten HSDA-Speicherort gespeichert ist, eingespeichert ist.
  • Obwohl das Beispielverfahren 1200 so gezeigt ist, dass es bei Block 1220 endet, können andere Verfahren mit dem Fertigstellen der verbleibenden Phasen und Einspeicheroperationen für die verbleibenden nicht eingespeicherten Datenmengen zusammen mit Programmieren und Falten zusätzlicher Datenmengen fortfahren. Außerdem, wie in 12 gezeigt ist, ist die Einspeicheroperation, um die erste Datenmenge bei Block 1214 einzuspeichern, so beschrieben, dass sie ausgeführt wird, bevor die vierte Datenmenge in den vierten LSDA-Speicherort bei Block 1216 programmiert wird. Für andere Beispielverfahren kann die Einspeicheroperation, um die erste Datenmenge einzuspeichern, gleichzeitig damit, dass die vierte Datenmenge in den vierten LSDA-Speicherort programmiert wird, oder danach ausgeführt werden. Im Allgemeinen kann, wie vorstehend beschrieben, die Einspeicheroperation für die erste Datenmenge ausgeführt werden, wenn die dritte (letzte) Phase der dritten Datenmenge ausgeführt wird, so dass der Einspeicherzeiger dorthin zeigt, wo die erste Datenmenge in dem Bereich hoher Speicherdichte gespeichert ist, während der gefaltete Zeiger dorthin zeigt, wo wenigstens ein Abschnitt der zweiten Datenmenge in dem Bereich niedriger Speicherdichte gespeichert ist.
  • 13 zeigt einen Ablaufplan eines Beispielverfahrens 1300 zum Lesen angeforderter Daten in einem Datenspeichersystem wie z. B. dem Datenspeichersystem 100. Bei Block 1302 kann eine Steuereinheit des Datenspeichersystems (z. B. unter Verwendung des Frontend-Moduls 108) eine Leseanforderung empfangen, wie z. B. von einem Host, Daten zu lesen. Die Leseanforderung kann eine logische Adresse enthalten, die die Daten angibt, die zu lesen sie anfordert. Die angeforderten Daten können anfangs in einem Bereich niedriger Speicherdichte eines Datenspeichers des Datenspeichersystems, wie z. B. den Bereich 602 niedriger Speicherdichte, programmiert und danach in einen Bereich hoher Speicherdichte des Datenspeichers, wie z. B. den Bereich 604 hoher Speicherdichte, gefaltet worden sein. Die Steuereinheit kann die Adressenabbildungsdatenbank (z. B. die Adressenabbildungsdatenbank 710) mit einer Abbildung aktualisiert haben, die die logische Adresse auf eine physikalische HSDA-Adresse abbildet, die identifiziert wo in dem Bereich hoher Speicherdichte die Daten gespeichert sind. Die Steuereinheit kann die Adressenabbildungsdatenbank nicht mit einer Abbildung aktualisiert haben, die die logische Adresse auf eine physikalische LSDA-Adresse, die identifiziert wo in dem Bereich niedriger Speicherdichte die Daten gespeichert sind, abbildet.
  • Bei Block 1304 kann die Steuereinheit (z. B. unter Verwendung des Lesemanagementmoduls 902) auf die Adressenabbildungsdatenbank mit der logischen Adresse zugreifen, um die physikalische HSDA-Adresse zu identifizieren. Bei Block 1306 kann die Steuereinheit (z. B. unter Verwendung des Lesemanagementmoduls 902) bestimmen, wohin ein Einspeicherzeiger zeigt. Bei Block 1308 kann die Steuereinheit (z. B. unter Verwendung des Lesemanagementmoduls 902) bestimmen, ob die angeforderten Daten eingespeichert sind. Die Steuereinheit kann das tun durch Bestimmen, ob die angeforderten Daten innerhalb eines Gebiets des Bereichs hoher Speicherdichte gespeichert sind, das eingespeicherte Daten speichert. Das Gebiet kann durch den Einspeicherzeiger identifiziert sein. Bei Block 1310 kann, falls die Steuereinheit bestimmt, dass die angeforderten Daten eingespeichert sind, dann die Steuereinheit die Daten aus dem Bereich hoher Speicherdichte lesen.
  • Alternativ kann, falls die Steuereinheit bestimmt, dass die angeforderten Daten nicht eingespeichert sind, dann die Steuereinheit (z. B. unter Verwendung des Übersetzungsmoduls für physikalische Adressen) bei Block 1312 einen Speicherversatz bestimmen, der dem entspricht, wie weit entfernt (z. B. wie viele LSDA-Speicherseiten oder Wortleitungen entfernt) die angeforderten Daten davon gespeichert sind, wohin ein gefalteter Zeiger zeigt, basierend auf der HSDA-Adresse, die auf die logische Adresse abgebildet ist. Bei Block 1314 kann die Steuereinheit bestimmen, wohin in dem Bereich niedriger Speicherdichte der gefaltete Zeiger zeigt, und dann bestimmen, wo die angeforderten Daten gespeichert sind, gemäß dem, wohin der gefaltete Zeiger zeigt, und dem Speicherversatz. Nach dem Bestimmen, wo die angeforderten Daten gespeichert sind, kann die Steuereinheit dann die angeforderten Daten aus dem Bereich niedriger Speicherdichte lesen.
  • Schließlich kann, wie vorstehend erwähnt, jeder geeignete Datenspeichertyp verwendet werden. Halbleiterdatenspeichervorrichtungen enthalten flüchtige Datenspeichervorrichtungen wie z. B. dynamische Direktzugriffsspeicher- („DRAM“-) oder statische Direktzugriffsspeicher- („SRAM“-) Vorrichtungen, nichtflüchtige Datenspeichervorrichtungen wie z. B. resistiven Direktzugriffsspeicher („ReRAM“), elektrisch löschbaren programmierbaren Festwertspeicher („EEPROM“), Flash-Datenspeicher (der auch als eine Teilmenge von EEPROM betrachtet werden kann), ferroelektrischen Direktzugriffsspeicher (FRAM") und magnetoresistiven Direktzugriffsspeicher („RAM“) und andere Halbleiterelemente, die zum Speichern von Informationen fähig sind. Der Typ einer Datenspeichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Beispielsweise können Flash-Datenspeichervorrichtungen in einer NAND- oder einer NOR-Konfiguration konfiguriert sein.
  • Die Datenspeichervorrichtungen können aus passiven und/oder aktiven Elementen in irgendeiner Kombinationen gebildet sein. Als nicht einschränkendes Beispiel enthalten passive Halbleiterdatenspeicherelemente ReRAM-Vorrichtungselemente, die in einigen Ausführungsformen eine widerstandsschaltendes Speicherelement wie z. B. Antifuse, Phasenwechsel-Material usw., und optional ein Lenkungselement wie z. B. eine Diode usw. enthalten. Ferner enthalten als nicht einschränkendes Beispiel aktive Halbleiterdatenspeicherelemente EEPROM und Flash-Datenspeichervorrichtungselemente, die in einigen Ausführungsformen Elemente, die einen Ladungsspeicherbereich beinhalten, wie z. B. ein schwebendes Gate, leitfähige Nanopartikel oder ein dielektrisches Ladungsspeichermaterial enthalten.
  • Mehrere Datenspeicherelemente können konfiguriert sein, so dass sie in Reihe verbunden sind oder so dass jedes Element individuell zugreifbar ist. Als nicht einschränkendes Beispiel enthalten Flash-Datenspeichervorrichtungen in einer NAND-Konfiguration (NAND-Datenspeicher) typischerweise Datenspeicherelemente, die in Reihe verbunden sind. Ein NAND-Datenspeicher-Array kann konfiguriert sein, so dass das Array aus mehreren Ketten aus Datenspeicher zusammengesetzt ist, wobei eine Kette aus mehreren Datenspeicherelementen zusammengesetzt ist, die eine einzige Bitleitung gemeinsam verwenden und auf die als eine Gruppe zugegriffen wird. Alternativ können Datenspeicherelemente so konfiguriert sein, dass jedes Element individuell zugreifbar ist, z. B. ein NOR-Datenspeicher-Array. NAND- oder NOR-Datenspeicherkonfigurationen sind beispielhaft, und Datenspeicherelemente können auf andere Weise konfiguriert sein.
  • Die Halbleiterdatenspeicherelemente, die sich innerhalb und/oder über einem Substrat befinden, können in zwei oder drei Dimensionen angeordnet sein, wie z. B. eine zweidimensionale Datenspeicherstruktur oder eine dreidimensionale Datenspeicherstruktur.
  • In einer zweidimensionalen Datenspeicherstruktur sind die Halbleiterdatenspeicherelemente in einer einzigen Ebenen oder einem einzigen Datenspeichervorrichtungsniveau angeordnet. Typischerweise sind in einer zweidimensionalen Datenspeicherstruktur Datenspeicherelemente in einer Ebene (z. B. in einer Ebene in x-z-Richtung) angeordnet, die sich im Wesentlichen parallel zu einer Hauptoberfläche eines Substrats, das die Datenspeicherelemente trägt, erstreckt. Das Substrat kann ein Wafer sein, über dem oder in dem die Schicht der Datenspeicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das an den Datenspeicherelementen angebracht wird, nachdem sie gebildet worden sind. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie z. B. Silizium enthalten.
  • Die Datenspeicherelemente können in der einzelnen Datenspeichervorrichtungsebene in einem geordneten Array angeordnet sein, wie z. B. in mehreren Zeilen und/oder Spalten. Die Datenspeicherelemente können jedoch in unregelmäßigen oder nicht orthogonalen Konfigurationen geordnet sein. Die Datenspeicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen aufweisen, wie z. B. Bitleitungen oder Wortleitungen.
  • Ein dreidimensionales Datenspeicher-Array ist so angeordnet, dass Datenspeicherelemente mehrere Ebenen oder mehrere Datenspeichervorrichtungsniveaus besetzen und dadurch eine Struktur in drei Dimensionen bilden (d. h. in der x-, der y- und der z-Richtung, wobei die y-Richtung im Wesentlichen senkrecht und die x- und z-Richtung im Wesentlichen parallel zu der Hauptoberfläche des Substrats sind).
  • Als ein nicht einschränkendes Beispiel kann eine dreidimensionale Datenspeicherstruktur vertikal als ein Stapel aus mehreren zweidimensionalen Datenspeichervorrichtungsniveaus angeordnet sein. Als ein weiteres nicht einschränkendes Beispiel kann ein dreidimensionales Datenspeicher-Array als mehrere vertikale Säulen (z. B. Säulen, die sich im Wesentlichen senkrecht zu der Hauptoberfläche des Substrats, d. h. in der y-Richtung, erstrecken) angeordnet sein, wobei jede Säule mehrere Datenspeicherelemente in jeder Säule aufweist. Die Säulen können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-z-Ebene, was zu einer dreidimensionalen Anordnung von Datenspeicherelementen führt, mit Elementen auf mehreren vertikal gestapelten Datenspeicherebenen. Andere Konfigurationen von Datenspeicherelementen in drei Dimensionen können ebenfalls ein dreidimensionales Datenspeicher-Array bilden.
  • Als nicht einschränkendes Beispiel können in einem dreidimensionalen NAND-Datenspeicher-Array die Datenspeicherelemente miteinander gekoppelt sein, um eine NAND-Kette innerhalb einer einzelnen horizontalen (z. B. x-z-) Datenspeichervorrichtungsniveaus zu bilden. Alternativ können die Datenspeicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die über mehrere horizontale Datenspeichervorrichtungsniveaus verläuft. Andere dreidimensionale Konfigurationen sind vorstellbar, wobei einige NAND-Ketten Datenspeicherelemente in einem einzigen Datenspeicherniveau enthalten, während andere Ketten Datenspeicherelemente enthalten, die sich über mehrere Datenspeicherniveaus erstrecken. Dreidimensionale Datenspeicher-Arrays können auch in einer NOR-Konfiguration und in einer ReRAM-Konfiguration konstruiert sein.
  • Typischerweise sind in einem monolithischen dreidimensionalen Datenspeicher-Array ein oder mehrere Datenspeichervorrichtungsniveaus oberhalb eines einzigen Substrats gebildet. Optional kann das monolithische dreidimensionale Datenspeicher-Array auch eine oder mehrere Datenspeicherschichten wenigstens teilweise innerhalb des einzigen Substrats aufweisen. Als ein nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie z. B. Silizium enthalten. In einem monolithischen dreidimensionalen Array sind die Schichten, die jedes Datenspeichervorrichtungsniveau des Arrays bilden, typischerweise auf den Schichten der darunter liegenden Datenspeichervorrichtungsniveaus des Arrays gebildet. Schichten benachbarter Datenspeichervorrichtungsniveaus eines monolithischen dreidimensionalen Datenspeicher-Arrays können jedoch gemeinsam verwendet sein oder dazwischen liegende Schichten zwischen den Datenspeichervorrichtungsniveaus aufweisen.
  • Dann können wieder zweidimensionale Arrays getrennt gebildet werden und dann zusammen paketiert werden, um eine nicht monolithische Datenspeichervorrichtung zu bilden, die mehrere Datenspeicherschichten aufweist. Beispielsweise können nicht monolithische gestapelte Datenspeicher durch Bilden von Datenspeicherniveaus auf separaten Substraten und dann Stapeln der Datenspeicherniveaus aufeinander konstruiert werden. Die Substrate können dann vor dem Stapeln dünner gemacht oder von der Datenspeichervorrichtungsebenen entfernt werden, da jedoch die Datenspeichervorrichtungsniveaus anfangs über separaten Substraten gebildet sind, sind die resultierenden Datenspeicher-Arrays keine monolithischen dreidimensionalen Datenspeicher-Arrays. Ferner können mehrere zweidimensionale Datenspeicher-Arrays oder dreidimensionale Datenspeicher-Arrays (monolithisch oder nicht monolithisch) auf separaten Bausteinen gebildet und dann zusammen paketiert werden, um eine Datenspeichervorrichtung aus gestapelten Bausteinen zu bilden.
  • Typischerweise ist für den Betrieb der Datenspeicherelemente und zur Kommunikation mit den Datenspeicherelementen eine zugeordnete Schaltungsanordnung erforderlich. Als nicht einschränkende Beispiele können Datenspeichervorrichtungen eine Schaltungsanordnung aufweisen, die zum Steuern und Treiben von Datenspeicherelementen verwendet wird, um Funktionen wie z. B. Programmieren und Lesen durchzuführen. Diese zugeordnete Schaltungsanordnung kann auf demselben Substrat wie die Datenspeicherelemente und/oder auf einem separaten Substrat sein. Beispielsweise kann sich eine Steuereinheit für Datenspeicher-Lese-Schreib-Operationen auf einem separaten Steuereinheit-Baustein und/oder auf demselben Substrat wie die Datenspeicherelemente befinden.
  • Es ist vorgesehen, dass die vorstehende ausführliche Beschreibung als eine Veranschaulichung ausgewählter Formen, die die Erfindung annehmen kann, und nicht als eine Definition der Erfindung verstanden wird. Es sind nur die folgenden Ansprüche, einschließlich aller Äquivalente, die den Schutzbereich der beanspruchten Erfindung definieren sollen. Schließlich wird darauf hingewiesen, dass jeder Aspekt jeder aus den bevorzugten Ausführungsformen, die hier beschrieben sind, allein oder in Kombination miteinander verwendet werden kann.

Claims (21)

  1. Datenspeichersystem, das enthält: einen Datenspeicher, der einen ersten Datenspeicherbereich und einen zweiten Datenspeicherbereich enthält, wobei der erste Datenspeicherbereich eine niedrigere Speicherdichte enthält als der zweite Datenspeicherbereich; und eine Steuereinheit, die konfiguriert ist zum: Programmieren einer Datenmenge in einen Speicherort des ersten Datenspeicherbereichs, der in einem Speicherort des zweiten Datenspeicherbereichs gespeichert werden soll, wobei der Speicherort des ersten Datenspeicherbereichs und der Speicherort des zweiten Datenspeicherbereichs die gleiche Speicherkapazität aufweisen; und in Reaktion darauf, dass die gesamte Datenmenge in dem Speicherort des ersten Datenspeicherbereichs gespeichert ist, Ausführen einer Anfangsphase einer Schreiboperation auf dem Speicherort des zweiten Datenspeicherbereichs, um die Datenmenge in dem Speicherort des zweiten Datenspeicherbereichs zu speichern.
  2. Datenspeichersystem nach Anspruch 1, wobei die Steuereinheit ferner konfiguriert ist, zu warten, bis die gesamte nächste Datenmenge in einen nächsten Speicherort des ersten Datenspeicherbereichs programmiert ist, um eine nächste Phase des Schreiboperation auszuführen.
  3. Datenspeichersystem nach Anspruch 1, wobei der Speicherort des ersten Datenspeicherbereichs einen ersten Speicherort des ersten Datenspeicherbereichs enthält, der Speicherort des zweiten Datenspeicherbereichs einen ersten Speicherort des zweiten Datenspeicherbereichs enthält, die Datenmenge eine erste Datenmenge enthält, die Schreiboperation eine erste Schreiboperation enthält, und wobei die Steuereinheit ferner konfiguriert ist zum: Programmieren einer zweiten Datenmenge in einen zweiten Speicherort des ersten Datenspeicherbereichs, die in einem zweiten Speicherort des zweiten Datenspeicherbereichs gespeichert werden soll, wobei der zweite Speicherort des ersten Datenspeicherbereichs und der zweite Speicherort des zweiten Datenspeicherbereichs die gleiche Speicherkapazität aufweisen; in Reaktion darauf, dass die gesamte zweite Datenmenge in dem zweiten Speicherort des ersten Datenspeicherbereichs gespeichert ist: Ausführen einer erste Phase einer zweiten Schreiboperation, um die zweite Datenmenge in dem zweiten Speicherort des zweiten Datenspeicherbereichs zu speichern; und Ausführen einer zweiten Phase der ersten Schreiboperation, um die erste Datenmenge in dem ersten Speicherort des zweiten Datenspeicherbereichs zu speichern.
  4. Datenspeichersystem nach Anspruch 3, wobei die Steuereinheit ferner konfiguriert ist zum: Bestimmen eines dritten Speicherorts des ersten Datenspeicherbereichs und eines dritten Speicherorts des zweiten Datenspeicherbereichs, in den eine dritte Datenmenge gespeichert werden soll, wobei der dritte Speicherort des ersten Datenspeicherbereichs und der dritte Speicherort des zweiten Datenspeicherbereichs die gleiche Speicherkapazität aufweisen; und in Reaktion auf eine Bestimmung, dass der dritte Speicherort des ersten Datenspeicherbereichs die gesamte dritte Datenmenge speichert: Ausführen einer ersten Phase einer dritten Schreiboperation, um die dritte Datenmenge in dem dritten Speicherort des zweiten Datenspeicherbereichs zu speichern; Ausführen einer zweiten Phase der zweiten Schreiboperation, um die zweite Datenmenge in dem zweiten Speicherort des zweiten Datenspeicherbereichs zu speichern; und Ausführen einer dritten Phase der ersten Schreiboperation, um die erste Datenmenge in dem ersten Speicherort des zweiten Datenspeicherbereichs zu speichern.
  5. Datenspeichersystem nach Anspruch 4, wobei die Steuereinheit ferner konfiguriert ist zum: vor dem Ausführen einer dritten Phase der dritten Schreiboperation um die dritte Datenmenge in dem dritten Speicherort des zweiten Datenspeichers zu speichern, Ausführen einer Einspeicheroperation, um die erste Datenmenge einzuspeichern, und Ausführen einer dritten Phase der dritten Schreiboperation, um die zweite Datenmenge in dem zweiten Speicherort des zweiten Datenspeicherbereichs zu speichern.
  6. Datenspeichersystem nach Anspruch 4, wobei erste Speicherort des zweiten Datenspeicherbereichs, der zweite Speicherort des zweiten Datenspeicherbereichs und der dritte Speicherort des zweiten Datenspeicherbereichs benachbarte Speicherorte des zweiten Datenspeicherbereichs sind.
  7. Datenspeichersystem nach Anspruch 1, wobei der erste Datenspeicherbereich und der zweite Datenspeicherbereich jeweils in einen ersten Datentypabschnitt, der einem ersten Datentyp zugeordnet ist, und einen zweiten Datentypabschnitt, der einem zweiten Datentyp ist, partitioniert sind, wobei die Steuereinheit ferner konfiguriert ist zum: Identifizieren der Datenmenge als vom ersten Datentyp oder vom zweiten Datentyp; Bestimmen, dass der Speicherort des ersten Datenspeicherbereichs und der Speicherort des zweiten Datenspeicherbereichs in den entsprechenden ersten Datentypabschnitten sind, in Reaktion auf eine Identifizierung, dass die Daten vom ersten Datentyp sind; und Bestimmen, dass der Speicherort des ersten Datenspeicherbereichs und der Speicherort des zweiten Datenspeicherbereichs in den entsprechenden zweiten Datentypabschnitten sind, in Reaktion auf eine Identifizierung, dass die Daten vom zweiten Datentyp sind.
  8. Datenspeichersystem nach Anspruch 1, wobei der Speicherort des zweiten Datenspeicherbereichs eine einzige Speicherseite enthält.
  9. Faltungsverfahren, das umfasst: Überwachen mit einer Steuereinheit eines Systems eines Betrags bzw. einer Menge von Daten, die in einem Speicherort eines Datenspeicherbereichs niedriger Speicherdichte des Datenspeichersystems gespeichert sind; Bestimmen mit der Steuereinheit, dass der Betrag von Daten ein Schwellenwertniveau erreicht hat; und in Reaktion auf das Bestimmen Ausgeben mit einer Leistungssteuerungsschaltungsanordnung einer Anfangsreihe von Impulsen einer ersten Programmieroperation, um den Betrag von Daten in einem Speicherort eines Datenspeicherbereichs hoher Speicherdichte des Datenspeichersystems zu programmieren.
  10. Verfahren nach Anspruch 9, wobei der Speicherort des Datenspeicherbereichs niedriger Speicherdichte einen ersten Speicherort des Datenspeicherbereichs niedriger Speicherdichte enthält, der Speicherort des Datenspeicherbereichs hoher Speicherdichte einen ersten Speicherort des Datenspeicherbereichs hoher Speicherdichte enthält, der Betrag der Datenmenge einen ersten Betrag von Daten enthält, die Anfangsreihe von Impulsen eine erste Anfangsreihe von Impulsen enthält, und wobei das Verfahren ferner umfasst: Überwachen mit der Steuereinheit eines zweiten Betrags von Daten, die in einem zweiten Speicherort des Datenspeicherbereichs niedriger Speicherdichte des Datenspeichersystems gespeichert sind; in Reaktion darauf, dass die Steuereinheit bestimmt, dass der zweite Betrag von Daten das Schwellenwertniveau erreicht hat: Ausgeben mit der Leistungssteuerungsschaltungsanordnung einer Anfangsreihe von Impulsen einer zweiten Programmieroperation, um den zweiten Betrag von Daten in einem zweiten Speicherort des Datenspeicherbereichs hoher Speicherdichte zu programmieren; und Ausgeben mit der Leistungssteuerungsschaltungsanordnung einer zweiten Reihe von Impulsen der ersten Programmieroperation, um den ersten Betrag von Daten in dem ersten Speicherort des Datenspeicherbereichs hoher Speicherdichte zu programmieren.
  11. Verfahren nach Anspruch 10, das ferner umfasst: Überwachen mit der Steuereinheit eines dritten Betrags von Daten, die in einem dritten Speicherort des Datenspeicherbereichs niedriger Speicherdichte des Datenspeichersystems gespeichert sind; in Reaktion darauf, dass die Steuereinheit bestimmt, dass der dritte Betrag von Daten das Schwellenwertniveau erreicht hat: Ausgeben mit der Leistungssteuerungsschaltungsanordnung einer Anfangsreihe von Impulsen einer dritten Programmieroperation, um den dritten Betrag von Daten in einem dritten Speicherort des Datenspeicherbereichs hoher Speicherdichte zu programmieren; Ausgeben mit der Leistungssteuerungsschaltungsanordnung einer zweiten Reihe von Impulsen der zweiten Programmieroperation, um den zweiten Betrag von Daten in dem zweiten Speicherort des Datenspeicherbereichs hoher Speicherdichte zu programmieren; und Ausgeben mit der Leistungssteuerungsschaltungsanordnung einer dritten Reihe von Impulsen der ersten Programmieroperation, um den ersten Betrag von Daten in dem zweiten Speicherort des Datenspeicherbereichs hoher Speicherdichte zu programmieren.
  12. Datenspeichersystem nach Anspruch 11, wobei erste Speicherort des zweiten Datenspeicherbereichs, der zweite Speicherort des zweiten Datenspeicherbereichs und der dritte Speicherort des zweiten Datenspeicherbereichs benachbarte Speicherorte des zweiten Datenspeicherbereichs sind.
  13. Faltungsverfahren nach Anspruch 9, wobei der Speicherort eine einzige Seite des Datenspeicherbereichs hoher Speicherdichte enthält.
  14. Datenspeichersystem, das enthält: einen Datenspeicher, der einen ersten Datenspeicherbereich und einen zweiten Datenspeicherbereich enthält, wobei der erste Datenspeicherbereich eine niedrigere Speicherdichte enthält als der zweite Datenspeicherbereich; eine Steuereinheit, die konfiguriert ist zum: Programmieren einer Datenmenge in den ersten Datenspeicherbereich und den zweiten Datenspeicherbereich; und Aktualisieren einer Adressdatenstruktur, um die Datenmenge als in dem zweiten Datenspeicherbereich jedoch nicht in dem ersten Datenspeicherbereich gespeichert zu identifizieren.
  15. Datenspeichersystem nach Anspruch 14, wobei die Steuereinheit ferner konfiguriert ist zum: Empfangen eines Leseanforderung, die Datenmenge aus dem Datenspeicher zu lesen; und in Reaktion auf den Empfang der Anforderung: Bestimmen, ob die Datenmenge, die in dem zweiten Datenspeicherbereich gespeichert ist, eingespeichert oder nicht eingespeichert ist; in Reaktion auf eine Bestimmung, dass die Datenmenge, die in dem zweiten Datenspeicherbereich gespeichert ist, eingespeichert ist, Lesen der Datenmenge aus dem zweiten Datenspeicherbereich; und in Reaktion auf eine Bestimmung, dass die Datenmenge, die in dem zweiten Datenspeicherbereich gespeichert ist, nicht eingespeichert ist, Lesen der Datenmenge aus dem ersten Datenspeicherbereich.
  16. Datenspeichersystem nach Anspruch 15, wobei die Steuereinheit ferner konfiguriert ist zum: Identifizieren, wo die Datenmenge in dem zweiten Datenspeicherbereich relativ zu einer Adresse des zweiten Datenspeicherbereichs, auf die ein Einspeicherzeiger in einer Adressdatenbank zeigt, gespeichert ist, um zu bestimmen, ob die Datenmenge, die in dem zweiten Datenspeicherbereich gespeichert ist, verifiziert ist.
  17. Datenspeichersystem nach Anspruch 16, wobei der Einspeicherzeiger auf eine Adresse in dem zweiten Datenspeicherbereich zeigt, wo eine letzte eingespeicherte Datenmenge gespeichert ist.
  18. Datenspeichersystem nach Anspruch 16, wobei die Datenmenge eine erste Datenmenge enthält und wobei die Steuereinheit in Reaktion darauf, dass die erste Datenmenge nicht eingespeichert ist, konfiguriert ist zu identifizieren, wo die erste Datenmenge in dem zweiten Datenspeicher gespeichert ist relativ dazu, wo eine zweite Datenmenge in dem zweiten Datenspeicherbereich gespeichert ist, wobei die zweite Datenmenge als eine letzte Datenmenge identifiziert ist, die in den zweiten Datenspeicher mit einer letzten Phase einer Mehrphasen-Programmieroperation programmiert worden ist.
  19. Datenspeichersystem nach Anspruch 18, wobei die Steuereinheit konfiguriert ist, einen gefalteten Zeiger auf eine Adresse zu zeigen, wo die zweiten Daten in dem zweiten Datenspeicherbereich gespeichert sind, in Reaktion darauf, dass die letzte Phase der Mehrphasen-Programmieroperation ausgeführt wird.
  20. Datenspeichersystem nach Anspruch 18, wobei die Steuereinheit ferner konfiguriert ist, eine dritte Datenmenge in den zweiten Datenspeicherbereich zu programmieren und vor dem Ausführen einer letzten Phase einer Mehrphasen-Programmieroperation die dritte Datenmenge in den Datenspeicherbereich zu programmieren, eine Einspeicheroperation auszuführen, um die erste Datenmenge einzuspeichern, und die letzte Phase der Mehrphasen-Programmieroperation auszuführen, um die zweite Datenmenge in die Datenspeicheroperation zu programmieren.
  21. Datenspeichersystem, das enthält: einen Datenspeicher, der einen ersten Datenspeicherbereich und einen zweiten Datenspeicherbereich enthält, wobei der erste Datenspeicherbereich eine niedrigere Speicherdichte enthält als der zweite Datenspeicherbereich; Mittel zum Programmieren einer Datenmenge in einen Speicherort des ersten Datenspeicherbereichs, die in einem Speicherort des zweiten Datenspeicherbereichs gespeichert werden soll, wobei der Speicherort des ersten Datenspeicherbereichs und der Speicherort des zweiten Datenspeicherbereichs die gleiche Speicherkapazität aufweisen; und Mittel zum Ausführen einer Anfangsphase einer Schreiboperation auf dem Speicherort des zweiten Datenspeicherbereichs, um die Datenmenge in dem Speicherort des zweiten Datenspeicherbereichs zu speichern, in Reaktion darauf, dass die gesamte Datenmenge in dem Speicherort des ersten Datenspeicherbereichs gespeichert ist.
DE102018106154.4A 2017-04-10 2018-03-16 Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen Withdrawn DE102018106154A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/483,185 US10275170B2 (en) 2017-04-10 2017-04-10 Folding operations in memory systems with single address updates
US15/483,185 2017-04-10

Publications (1)

Publication Number Publication Date
DE102018106154A1 true DE102018106154A1 (de) 2018-10-11

Family

ID=63587656

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018106154.4A Withdrawn DE102018106154A1 (de) 2017-04-10 2018-03-16 Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen

Country Status (3)

Country Link
US (1) US10275170B2 (de)
CN (1) CN108694128B (de)
DE (1) DE102018106154A1 (de)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10891239B2 (en) 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
US11106391B2 (en) * 2018-04-25 2021-08-31 Micron Technology, Inc. Managing a memory system including memory devices with different characteristics
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
CN108829344A (zh) * 2018-05-24 2018-11-16 北京百度网讯科技有限公司 数据存储方法、装置及存储介质
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US10871921B2 (en) 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US20200042223A1 (en) * 2018-08-02 2020-02-06 Alibaba Group Holding Limited System and method for facilitating a high-density storage device with improved performance and endurance
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
US20220044746A1 (en) * 2018-11-18 2022-02-10 NEO Semiconductor, Inc. Methods and apparatus for nand flash memory
US12002525B2 (en) 2018-11-18 2024-06-04 NEO Semiconductor, Inc. Methods and apparatus for NAND flash memory
US11972811B2 (en) 2018-11-18 2024-04-30 NEO Semiconductor, Inc. Methods and apparatus for NAND flash memory
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US10769018B2 (en) 2018-12-04 2020-09-08 Alibaba Group Holding Limited System and method for handling uncorrectable data errors in high-capacity storage
US10734071B2 (en) 2018-12-13 2020-08-04 Western Digital Technologies, Inc. Multi-level cell programming using optimized multiphase mapping with balanced Gray code
KR20200074647A (ko) * 2018-12-17 2020-06-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10726936B2 (en) * 2018-12-20 2020-07-28 Micron Technology, Inc. Bad block management for memory sub-systems
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US11133067B2 (en) * 2019-03-08 2021-09-28 Western Digital Technologies, Inc. Multi-phased programming with balanced gray coding
US10732877B1 (en) * 2019-03-25 2020-08-04 Western Digital Technologies, Inc. Smart mapping table update post background operations
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11074124B2 (en) 2019-07-23 2021-07-27 Alibaba Group Holding Limited Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11556249B2 (en) * 2020-09-01 2023-01-17 Western Digital Technologies, Inc. Delaying random data relocation for reducing write amplification in storage devices
US11437104B2 (en) * 2020-09-08 2022-09-06 Western Digital Technologies, Inc. Storage system and method for a hybrid quad-level cell (QLC) write scheme for reduced random access memory (RAM) footprint
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0490239A3 (en) * 1990-12-14 1992-09-02 Ceram Incorporated Storage of compressed data on random access storage devices
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
CN101609404A (zh) * 2008-06-17 2009-12-23 建兴电子科技股份有限公司 数据更新方法及使用该方法的电子装置
US8144512B2 (en) * 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
TW201237630A (en) * 2011-03-01 2012-09-16 Wistron Corp Method and computer system for processing data in a memory
US9892048B2 (en) * 2013-07-15 2018-02-13 International Business Machines Corporation Tuning global digests caching in a data deduplication system
US9099183B2 (en) 2013-12-23 2015-08-04 Intel Corporation Program VT spread folding for NAND flash memory programming
US8886877B1 (en) 2014-05-15 2014-11-11 Sandisk Technologies Inc. In-situ block folding for nonvolatile memory

Also Published As

Publication number Publication date
CN108694128A (zh) 2018-10-23
CN108694128B (zh) 2020-03-17
US10275170B2 (en) 2019-04-30
US20180293014A1 (en) 2018-10-11

Similar Documents

Publication Publication Date Title
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
CN113168291B (zh) 用于在传统ssd和开放沟道ssd之间切换而没有数据丢失的方法
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE102018105529A1 (de) Managementschema für Subblock-Löschstörung im nichtflüchtigen Datenspeicher
DE102018105750A1 (de) System und Verfahren für Hybrid-Push-Pull-Datenmanagement in einem nichtflüchtigen Datenspeicher
US9633738B1 (en) Accelerated physical secure erase
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102014101267A1 (de) Speichersystem mit nichtflüchtiger Speichervorrichtung und Programmierverfahren davon
DE112016004148T5 (de) Systeme und Verfahren zur Befehlsautorisierung
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102013108456B4 (de) Nichtflüchtige Speichervorrichtung und Programmierverfahren
DE102018105871A1 (de) Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
DE102021115374A1 (de) Abschwächung des in zonen unterteilten namensraums unter verwendung des unterblock-modus
DE102017114078A1 (de) Fehlerabschwächung für 3d-nand-flash-speicher
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102021115373A1 (de) Identifizierte zonen für zonen mit optimaler paritätsteilung
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE102018123494A1 (de) Speichervorrichtung, die zum aktualisieren einesfeldprogrammierbaren gate-arrays ausgestaltetist, und betriebsverfahren dafür
DE112015004531T5 (de) Latch-Initialisierung für eine Datenspeichervorrichtung
DE102020115969A1 (de) Speichervorrichtungen, speichersysteme und verfahren zum betreiben von speichervorrichtungen
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung
DE102020107504A1 (de) Nichtflüchtiges speicher-array, das zur leistungsverbesserung von beiden seiten angesteuert wird

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee