DE102021117417A1 - ECC-Pufferreduktion in einer Speichervorrichtung - Google Patents

ECC-Pufferreduktion in einer Speichervorrichtung Download PDF

Info

Publication number
DE102021117417A1
DE102021117417A1 DE102021117417.1A DE102021117417A DE102021117417A1 DE 102021117417 A1 DE102021117417 A1 DE 102021117417A1 DE 102021117417 A DE102021117417 A DE 102021117417A DE 102021117417 A1 DE102021117417 A1 DE 102021117417A1
Authority
DE
Germany
Prior art keywords
data
row
memory
write
rows
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021117417.1A
Other languages
English (en)
Inventor
Amit Berman
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102021117417A1 publication Critical patent/DE102021117417A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • G11C29/56008Error analysis, representation of errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1039Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/40Response verification devices using compression techniques

Abstract

Ein Speichersystem umfasst eine Speichervorrichtung und einen Speicher-Controller. Die Speichervorrichtung umfasst eine Mehrzahl an Speicherzellen. Der Speicher-Controller umfasst eine Fehlerkorrekturcode(ECC)-Schaltung. Die ECC-Schaltung ist eingerichtet, Datenzeilen erster Schreibdaten zu bestimmen, die nicht alle null sind, und die bestimmten Datenzeilen zusammen mit entsprechenden Zeilenindizes in Pufferzeilen eines Puffers zu speichern. Der Speicher-Controller ist eingerichtet, zweite Daten basierend auf dem Puffer in die Speichervorrichtung zu schreiben.

Description

  • TECHNISCHES GEBIET
  • Beispielhafte Ausführungsformen des vorliegenden erfinderischen Konzepts betreffen eine Verwendung eines Puffers in einem Speicher und insbesondere die Verwendung des Puffers, um eine Fehlerüberprüfung und -korrektur bei Daten durchzuführen, die mit einem nichtflüchtigen Speicher ausgetauscht werden sollen.
  • BESCHREIBUNG DES STANDS DER TECHNIK
  • Ein nichtflüchtiger Speicher ist eine Art Computer-Speicher, der gespeicherte Informationen behalten kann, selbst nachdem eine Leistungszufuhr entfernt wird. Ein Flash-Speicher ist ein Beispiel für einen nichtflüchtigen Speicher. Ein nichtflüchtiges Speichersystem umfasst üblicherweise einen Speicher-Controller und einen nichtflüchtigen Speicher (NVM).
  • Der Speicher-Controller kann eine Fehlerkorrekturcode(ECC)-Schaltung umfassen, um Daten zu korrigieren, die kurz davor stehen, in den NVM geschrieben zu werden, oder um Daten zu korrigieren, die aus dem NVM ausgelesen werden. Die ECC-Schaltung kann einen Puffer verwenden, um die Daten und beliebige andere Informationen, die während einer Fehlerüberprüfung und -korrektur erstellt werden, vorübergehend zu speichem. Wenn allerdings die Größe des Puffers groß ist, verbraucht der Speicher-Controller viel Platz. Ferner kann es lange dauern, um eine Fehlerüberprüfung und -korrektur durchzuführen, wenn die Größe des Puffers zu klein ist. Daher besteht ein Bedarf, die Größe des Puffers zu reduzieren, ohne den Zeitaufwand zu erhöhen, der erforderlich ist, um eine Fehlerüberprüfung und -korrektur durchzuführen.
  • KURZFASSUNG
  • Gemäß einer beispielhaften Ausführungsfonn des erfinderischen Konzepts wird ein Speichersystem geschaffen. Das Speichersystem umfasst eine Speichervorrichtung und einen Speicher-Controller. Der Speicher-Controller umfasst eine Fehlerkorrekturcode(ECC)-Schaltung. Die ECC-Schaltung ist eingerichtet, Datenzeilen erster Schreibdaten zu bestimmen, die nicht alle null sind, und die bestimmten Datenzeilen zusammen mit entsprechenden Zeilenindizes in Pufferzeilen eines Puffers zu speichern. Der Speicher-Controller ist eingerichtet, zweite Daten basierend auf dem Puffer in die Speichervorrichtung zu schreiben.
  • Gemäß einer beispielhaften Ausführungsfonn des erfinderischen Konzepts wird ein computerimplementiertes Verfahren zum Programmieren von Daten in ein Speichersystem geschaffen. Das Verfahren umfasst: dass ein Speicher-Controller eine Schreibanforderung empfängt, welche erste Schreibdaten umfasst; dass eine ECC-Schaltung Datenzeilen der ersten Schreibdaten bestimmt, die nicht alle null sind; dass die ECC-Schaltung komprimierte Daten erstellt, welche die bestimmten Datenzeilen umfassen und Zeilenindizes innerhalb der ersten Schreibdaten entsprechen; und dass der Speicher-Controller zweite Schreibdaten basierend auf den komprimierten Daten in die Speichervorrichtung schreibt.
  • Gemäß einer beispielhaften Ausführungsfonn des erfinderischen Konzepts wird ein computerimplementiertes Verfahren zum Lesen von Daten aus einem Speichersystem geschaffen. Das Verfahren umfasst: dass ein Speicher-Controller eine Leseanforderung, die eine Leseadresse umfasst, von einer Host-Vorrichtung empfängt; dass der Speicher-Controller basierend auf der Leseadresse erste Lesedaten aus einem Speicher des Speichersystems ausliest; dass eine Fehlerkorrekturcode(ECC)-Schaltung komprimierte Daten basierend auf den ersten Lesedaten dekomprimiert, um zweite Lesedaten zu erstellen; und dass der Speicher-Controller die zweiten Lesedaten an die Host-Vorrichtung ausgibt. Die komprimierten Daten umfassen eine Mehrzahl von Zeilen, wobei jede Zeile Daten und einen anderen gespeicherten Zeilenindex umfasst.
  • Figurenliste
  • Die obigen und andere Merkmale des vorliegenden erfinderischen Konzepts werden durch die detaillierte Beschreibung von beispielhaften Ausführungsformen desselben unter Bezugnahme auf die beigefügten Zeichnungen ersichtlicher sein. Hierbei zeigt bzw. zeigen:
    • 1 ein Blockdiagramm, das eine Implementierung eines Datenverarbeitungssystems umfassend ein Speichersystem gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt.
    • 2 ein detailliertes Blockdiagramm einer nichtflüchtigen Speichervorrichtung aus 1 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 3 ein Blockdiagramm, welches das Speichersystem aus 1 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt.
    • 4 ein Blockdiagramm des Speicherzellen-Arrays aus 2 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 5 ein Schaltbild eines Speicherblocks des Speicherzellen-Arrays aus 4 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 6A und 6B eine ECC-Schaltung gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 7A beispielhaften Pseudocode zum Komprimieren und Dekomprimieren von Daten gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 7B ein Verfahren zum Programmieren von Daten unter Verwendung der Komprimierung aus 7A gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 7C beispielhafte Daten, die gemäß der Komprimierung aus 7A komprimiert wurden.
    • 7D ein Verfahren zum Auslesen von Daten unter Verwendung der Dekomprimierung aus 7A gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 8A beispielhaften Pseudocode zum Komprimieren von Daten gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 8B ein Verfahren zum Programmieren von Daten unter Verwendung der Komprimierung aus 8A gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 8C beispielhafte Daten, die gemäß der Komprimierung aus 8A komprimiert wurden.
    • 9A beispielhaften Pseudocode zum Dekomprimieren von Daten gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 9B ein Verfahren zum Auslesen von Daten unter Verwendung der Dekomprimierung aus 9A gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 10 einen Komprimierer gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
    • 11 einen Dekomprimierer gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts; und
    • 12 ein Blockdiagramm eines Rechensystems umfassend ein nichtflüchtiges Speichersystem gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
  • DETAILLIERTE BESCHREIBUNG
  • Nachstehend werden beispielhafte Ausführungsformen des vorliegenden erfinderischen Konzepts vollständiger mit Bezug auf die beigefügten Zeichnungen beschrieben. Gleiche Bezugszeichen können sich in der gesamten Zeichnung auf gleiche Elemente beziehen.
  • Es versteht sich, dass Beschreibungen von Merkmalen oder Aspekten innerhalb einer beispielhaften Ausführungsform üblicherweise als für andere ähnliche Merkmale oder Aspekte in anderen beispielhaften Ausführungsformen geltend betrachtet werden sollen, außer der Kontext gibt klar anderes an.
  • Wie hierin verwendet, sind die Singularformen „einer“, „eines“, „eine“ und „der“, „die“, „das“ dazu gedacht, die Pluralformen ebenfalls zu enthalten, außer der Kontext gibt eindeutig anderes an.
  • Wenn hierin ein Wert als etwa gleich einem anderen Wert oder im Wesentlichen gleich oder gleichwertig zu einem anderen Wert beschrieben wird, versteht es sich für einen durchschnittlichen Fachmann, dass die Werte einander bis zu einem Messfehler gleich sind, oder, wenn sie messbar ungleich sind, dass sie einander hinsichtlich des Werts ähnlich genug sind, dass sie funktional gleich sind. So ist zum Beispiel der Begriff „etwa“, wie hierin verwendet, inklusive dem angegebenen Wert und bedeutet innerhalb eines zulässigen Abweichungsbereichs für den bestimmten Wert, wie er von einem durchschnittlichen Fachmann bestimmt wird, unter Berücksichtigung der jeweiligen Messung und des Fehlers, der mit einer Messung dieser bestimmten Quantität assoziiert ist (d. h. die Grenzen des Messsystems). „Etwa“ kann zum Beispiel innerhalb einer oder mehreren Standardabweichungen bedeuten, wie sie durch einen durchschnittlichen Fachmann ausgelegt werden. Ferner versteht es sich für einen durchschnittlichen Fachmann, dass, während hierin Parameter als „etwa“ einen bestimmten Wert beschrieben sind, der Parameter gemäß beispielhaften Ausführungsform genau den bestimmten Wert oder ungefähr den bestimmten Wert bis auf einen Messfehler haben kann.
  • 1 ist ein Blockdiagramm, das eine Implementierung eines Datenverarbeitungssystems umfassend ein Speichersystem gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt.
  • Bezug nehmend auf 1 kann das Datenverarbeitungssystem 10 einen Host 100 und ein Speichersystem 200 umfassen. Das Speichersystem 200, das in 1 gezeigt ist, kann in verschiedenen Systemen eingesetzt werden, die eine Datenverarbeitungsfunktion umfassen. Die verschiedenen Systeme können verschiedene Vorrichtungen sein, einschließlich, zum Beispiel, mobile Vorrichtungen, wie beispielsweise ein Smartphone oder ein Tablet-Computer. Allerdings sind die verschiedenen Ausführungsformen nicht darauf beschränkt.
  • Das Speichersystem 200 kann verschiedene Arten an Speichervorrichtungen umfassen. Hierin werden beispielhafte Ausführungsformen des erfinderischen Konzepts als eine Speichervorrichtung umfassend beschrieben, die ein nichtflüchtiger Speicher ist. Allerdings sind beispielhafte Ausführungsformen nicht darauf beschränkt. Das Speichersystem 200 kann zum Beispiel eine Speichervorrichtung umfassen, die ein flüchtiger Speicher ist.
  • Gemäß beispielhaften Ausführungsformen kann das Speichersystem 200 eine nichtflüchtige Speichervorrichtung umfassen, wie beispielsweise einen schreibgeschützten Speicher (ROM), eine magnetische Platte, eine optische Platte, einen Flash-Speicher usw. Der Flash-Speicher kann ein Speicher sein, der Daten entsprechend einer Änderung einer Schwellwertspannung eines Metall-Oxid-Halbleiter-Feldeffekttransistors (MOSFET) speichert, und kann zum Beispiel NAND und NOR-Flash-Speicher umfassen. Das Speichersystem 200 kann unter Verwendung einer Speicherkarte implementiert sein, die eine nichtflüchtige Speichervorrichtung umfasst, wie beispielsweise eine eingebettete Multimedia-Karte (eMMC), eine Secure-Digital(SD)-Karte oder eine Micro-SD-Karte oder ein Universal Flash Storage (UFS) oder das Speichersystem 200 kann zum Beispiel unter Verwendung einer SSD, welche eine nichtflüchtige Speichervorrichtung umfasst, implementiert sein. Hierin werden die Konfiguration und der Betrieb des Speichersystems 200 unter der Annahme beschrieben, dass das Speichersystem 200 ein nichtflüchtiges Speichersystem ist. Allerdings ist das Speichersystem 200 nicht darauf beschränkt. Der Host 100 kann zum Beispiel einen Ein-Chip-System(SoC)-Anwendungsprozessor (AP) umfassen, der, zum Beispiel, auf einer mobilen Vorrichtung montiert ist, oder eine zentrale Verarbeitungseinheit (CPU), die in einem Rechensystem umfasst ist.
  • Wie oben beschrieben, kann der Host 100 einen AP 110 umfassen. Der AP 110 kann verschiedene Intellectual-Property(IP)-Blöcke umfassen. Der AP 110 kann zum Beispiel einen Speichervorrichtungstreiber 111 umfassen, der das nichtflüchtige Speichersystem 200 steuert. Der Host 100 kann mit dem nichtflüchtigen Speichersystem 200 kommunizieren, um einen Befehl (z. B. einen Lesebefehl, einen Schreibbefehl, einen Löschbefehl usw.) bezüglich eines Speichervorgangs zu übertragen, und um ansprechend auf den übertragenen Befehl einen Bestätigungsbefehl zu empfangen.
  • Das nichtflüchtige Speichersystem 200 kann zum Beispiel einen Speicher-Controller 210 und eine Speichervorrichtung 220 umfassen. Der Speicher-Controller 210 kann einen Befehl bezüglich eines Speichervorgangs von dem Host 100 empfangen, einen internen Befehl und ein internes Taktsignal unter Verwendung des empfangenen Befehls erstellen und den internen Befehl und das interne Taktsignal der Speichervorrichtung 220 bereitstellen. Die Speichervorrichtung 220 kann ansprechend auf den internen Befehl Schreibdaten in einem Speicherzellen-Array speichern oder kann dem Speicher-Controller 210 ansprechend auf den internen Befehl Lesedaten bereitstellen.
  • Die Speichervorrichtung 220 kann ein Speicherzellen-Array umfassen, das Daten behält, die darin gespeichert sind, selbst wenn die Speichervorrichtung 220 nicht eingeschaltet ist. Das Speicherzellen-Array kann als Speicherzellen zum Beispiel einen NAND- oder NOR-Flash-Speicher, einen magnetoresistiven Direktzugriffsspeicher (MRAM), einen resistiven Direktzugriffsspeicher (RRAM), einen ferroelektrischen Direktzugriffsspeicher (FRAM) oder einen Phasenänderungsspeicher (PCM) umfassen. Zum Beispiel wenn das Speicherzellen-Array einen NAND-Flash-Speicher umfasst, kann das Speicherzellen-Array eine Mehrzahl an Blöcken und eine Mehrzahl an Seiten umfassen. Daten können in Einheiten von Seiten programmiert und gelesen werden und Daten können in Einheiten von Blöcken gelöscht werden. Ein Beispiel für Speicherblöcke, die in einem Speicherzellen-Array umfasst sind, ist in 4 gezeigt.
  • 2 ist ein detailliertes Blockdiagramm der nichtflüchtigen Speichervorrichtung 220 aus 1 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
  • Bezug nehmend auf 2 kann die nichtflüchtige Speichervorrichtung 220 zum Beispiel ein Speicherzellen-Array 221, eine Steuerlogik 222, eine Spannungserzeugungseinheit 223, einen Zeilen-Decoder 224 und einen Seitenpuffer 225 umfassen.
  • Das Speicherzellen-Array 221 kann mit einer oder mehreren String-Auswahlleitungen SSL, einer Mehrzahl von Wortleitungen WL, einer oder mehreren Masseauswahlleitungen GSL und einer Mehrzahl von Bit-Leitungen BL verbunden sein. Das Speicherzellen-Array 221 kann eine Mehrzahl von Speicherzellen umfassen, die sich an Überschneidungen zwischen der Mehrzahl von Wortleitungen WL und der Mehrzahl von Bit-Leitungen BL befinden.
  • Die Steuerlogik 222 kann einen Befehl CMD (z. B. einen internen Befehl) und eine Adresse ADD von dem Speicher-Controller 210 empfangen und kann ein Steuersignal CTRL zum Steuern verschiedener funktionaler Blöcke innerhalb der nichtflüchtigen Speichervorrichtung 220 von dem Speicher-Controller 210 empfangen. Die Steuerlogik 222 kann verschiedene Steuersignale ausgeben, um Daten in das Speicherzellen-Array 221 zu schreiben oder Daten aus dem Speicherzellen-Array 221 basierend auf dem Befehl CMD, einer Adresse ADDR und dem Steuersignal CTRL auszulesen. Auf diese Weise kann die Steuerlogik 222 den Gesamtbetrieb der Speichervorrichtung 220 steuern.
  • Die verschiedenen Steuersignale, die durch die Steuerlogik 222 ausgegeben werden, können der Spannungserzeugungseinheit 223, dem Zeilen-Decoder 224 und dem Seitenpuffer 225 bereitgestellt werden. Die Steuerlogik 222 kann zum Beispiel der Spannungserzeugungseinheit 223 ein Spannungssteuersignal CTRL_vol bereitstellen, dem Zeilen-Decoder 224 eine Zeilenadresse X-ADD bereitstellen, und dem Seitenpuffer 225 eine Spaltenadresse Y-ADD bereitstellen.
  • Der Spannungserzeugungseinheit 223 kann verschiedene Spannungen zum Durchführen von Programmier-, Lese- und Löschvorgängen bei dem Speicherzellen-Array 221 basierend auf dem Spannungssteuersignal CTRL_vol erzeugen. Die Spannungserzeugungseinheit 223 kann zum Beispiel eine erste Steuerspannung VWL zum Ansteuern der Mehrzahl von Wortleitungen WL erzeugen, eine zweite Steuerspannung VSSL zum Ansteuern der Mehrzahl von String-Auswahlleitungen SSL und eine dritte Steuerspannung VGSL zum Ansteuern der Mehrzahl von Masseauswahlleitungen GSL. In diesem Fall kann die erste Steuerspannung VWL eine Programmierspannung (z. B. eine Schreibspannung), eine Lesespannung, eine Löschspannung, eine Auslassspannung oder eine Programmierverifizierungsspannung sein. Zudem kann die zweite Steuerspannung VSSL eine Stringauswahlspannung sein (z. B. eine Einschaltspannung oder eine Ausschaltspannung). Ferner kann die dritte Steuerspannung VGSL eine Masseauswahlspannung sein (z. B. eine Einschaltspannung oder eine Ausschaltspannung).
  • Der Zeilen-Decoder 224 kann durch die Mehrzahl von Wortleitungen WL mit dem Speicherzellen-Array 221 verbunden sein und kann ansprechend auf die Zeilenadresse X-ADD, die von der Steuerlogik 222 empfangen wird, einen Teil der Mehrzahl von Wortleitungen WL aktivieren. Zum Beispiel kann der Zeilen-Decoder 224 während eines Lesevorgangs eine Lesespannung an einer ausgewählten Wortleitung und eine Auslassspannung an nicht ausgewählten Wortleitungen anlegen.
  • Während eines Programmiervorgangs kann der Zeilen-Decoder 224 eine Programmierspannung an einer ausgewählten Wortleitung und eine Auslassspannung an nicht ausgewählten Wortleitungen anlegen. In einer beispielhaften Ausführungsform kann der Zeilen-Decoder 224 in mindestens einer aus einer Mehrzahl an Programmierschleifen die Programmierspannung an der ausgewählten Wortleitung und einer zusätzlich ausgewählten Wortleitung anlegen.
  • Der Seitenpuffer 225 kann durch die Mehrzahl von Bit-Leitungen BL mit dem Speicherzellen-Array 221 verbunden sein. Während eines Lesevorgangs kann der Seitenpuffer 225 zum Beispiel als Leseverstärker arbeiten, der Daten DATA ausgibt, die in dem Speicherzellen-Array 221 gespeichert sind. Alternativ kann der Seitenpuffer 225 in einem Programmiervorgang als Schreibtreiber arbeiten, der gewünschte Daten in das Speicherzellen-Array 221 schreibt.
  • 3 ist ein Blockdiagramm, welches das Speichersystem 200 aus 1 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts darstellt.
  • Bezug nehmend auf 3 umfasst das Speichersystem 200 die Speichervorrichtung 220 und den Speicher-Controller 210. Der Speicher-Controller 210 kann hierin auch als Controller-Schaltung bezeichnet werden. Die Speichervorrichtung 220 kann gesteuert durch den Speicher-Controller 210 einen Schreibvorgang, einen Lesevorgang oder einen Löschvorgang durchführen.
  • Der Speicher-Controller 210 kann die Speichervorrichtung 220 abhängig von einer Anforderung steuern, die von dem Host 100 empfangen wird, oder von einem intern bezeichneten Zeitplan. Der Speicher-Controller 210 kann einen Controller-Kern 121, einen internen Speicher 124, einen Host-Schnittstellenblock 125 und einen Speicherschnittstellenblock 126 umfassen.
  • Der Controller-Kern 121 kann einen Seitenpuffer 130 und eine ECC-Schaltung 131 umfassen. Abhängig von einer Anforderung, die von dem Host 100 empfangen wird, oder von einem intern bezeichneten Zeitplan, kann der Controller-Kern 121 die Speichervorrichtung 220 steuern bzw. auf sie zugreifen. Der Controller-Kern 121 kann verschiedene Metadaten und Codes verwalten und ausführen, die verwendet werden, um das Speichersystem 200 zu verwalten und zu betreiben. In einer beispielhaften Ausführungsform des erfinderischen Konzepts führt die ECC-Schaltung 131 eine Fehlererkennung und -korrektur bei gelesenen Daten durch, die aus Speicherzellen der Speichervorrichtung 220 ausgelesen werden, oder bei Schreibdaten, die kurz davor stehen, in die Speichervorrichtung geschrieben zu werden. In einer Ausführungsform werden die Lesedaten oder Schreibdaten vorübergehend in einem Puffer der ECC-Schaltung gespeichert. Der Puffer kann auch verwendet werden, um Informationen zu speichern, die während der Fehlererkennung und -korrektur erstellt und verwendet werden.
  • Der Controller-Kern 121 kann ansprechend auf einen Lesebefehl und Adressinformationen, die von einem Host empfangen werden, Lesespannungen aus einem Teilsatz der Speicherzellen erfassen, die Lesespannung in ein Codewort (umfassend Daten und Redundanzinformationen) konvertieren und bei dem Codewort einen ECC-Vorgang unter Verwendung der ECC-Schaltung 131 durchführen.
  • Die ECC-Schaltung 131 kann den ECC-Vorgang unter Verwendung eines Puffers ausführen, dessen Größe im Vergleich zu vorherigen Techniken reduziert ist. In einer beispielhaften Ausführungsform komprimiert die ECC-Schaltung 131 ansprechend auf eine Schreibanforderung von dem Host Schreibdaten, die ECC-Schaltung 131 speichert die komprimierten Daten in einem internen Puffer, die ECC-Schaltung 131 codiert und korrigiert Fehler der gespeicherten Daten, um korrigierte Daten zu erstellen, und der Controller-Kern 121 schreibt die korrigierten Daten in die Speichervorrichtung 220. In einer beispielhaften Ausführungsform liest der Controller-Kern 121 ansprechend auf eine Leseanforderung von dem Host Daten aus der Speichervorrichtung 220 aus, die ECC-Schaltung 131 decodiert und korrigiert Fehler der gelesenen Daten, um fehlerkorrigierte Daten zu erstellen, die ECC-Schaltung 131 dekomprimiert die fehlerkorrigierten Daten und der Controller-Kern 121 gibt die dekomprimierten Daten an den Host aus. Die Komprimierung und die Dekomprimierung werden unten detaillierter erläutert.
  • Der interne Speicher 124 kann zum Beispiel als Systemspeicher verwendet werden, der durch den Controller-Kern 121 verwendet wird, als Cache-Speicher, der Daten der Speichervorrichtung 220 speichert, oder als Pufferspeicher, der vorübergehend Daten zwischen dem Host 100 und der Speichervorrichtung 220 speichert. Der interne Speicher 124 kann zusätzlich eine Zuordnungstabelle MT speichern, die eine Beziehung zwischen dem Speichersystem 200 zugeordneten logischen Adressen von der Host-Vorrichtung 100 und physischen Adressen der Speichervorrichtung 220 angibt. Der interne Speicher 124 kann zum Beispiel einen dynamischen Direktzugriffsspeicher (DRAM) oder einen statischen Direktzugriffsspeicher (SRAM) umfassen. Der interne Speicher 124 kann einen oder mehrere Puffer umfassen.
  • Der Host-Schnittstellenblock 125 kann eine Komponente zum Kommunizieren mit dem Host 100 umfassen, wie zum Beispiel einen physischen Block. Der Speicherschnittstellenblock 126 kann eine Komponente zum Kommunizieren mit der Speichervorrichtung 220 umfassen, wie zum Beispiel einen physischen Block.
  • Der Host-Schnittstellenblock 125 kann dem Speichersteuerkern 122 eine erste Anforderung REQ1 bereitstellen, die von dem Host 100 empfangen wird. Die erste Anforderung REQ1 kann einen Befehl (z. B. einen Lesebefehl oder einen Schreibbefehl) und eine logische Adresse umfassen. Der Speichersteuerkern 122 kann die erste Anforderung REQ1 in eine zweite Anforderung REQ2 übersetzen, die für die Speichervorrichtung 220 geeignet ist.
  • Der Controller-Kern 121 kann zum Beispiel ein Format des Befehls übersetzen. Der Controller-Kern 121 kann unter Bezugnahme auf die Zuordnungstabelle MT, die in dem internen Speicher 124 gespeichert ist, eine Adressinformation AI erhalten. Der Controller-Kern 121 kann eine logische Adresse in eine physische Adresse der Speichervorrichtung 220 übersetzen, indem er die Adressinformation AI verwendet. Der Controller-Kern 121 kann dem Speicherschnittstellenblock 126 die zweite Anforderung REQ2 bereitstellen, die für die Speichervorrichtung 220 geeignet ist.
  • Der Speicherschnittstellenblock 126 kann die zweite Anforderung REQ2 von dem Controller-Kern 121 in einer Schleife registrieren. Der Speicherschnittstellenblock 126 kann eine Anforderung, die in der Schleife als erstes registriert wird, an die Speichervorrichtung 220 als dritte Anforderung REQ3 übertragen.
  • Wenn die erste Anforderung REQ1 eine Schreibanforderung ist, kann der Host-Schnittstellenblock 125 Daten, die von dem Host 100 empfangen werden, in den internen Speicher 124 schreiben. Wenn die dritte Anforderung REQ3 eine Schreibanforderung ist, kann der Speicherschnittstellenblock 126 Daten, die in dem internen Speicher 124 gespeichert sind, an die Speichervorrichtung 220 übertragen.
  • Wenn Daten vollständig geschrieben sind, kann die Speichervorrichtung 220 eine dritte Antwort RESP3 an den Speicherschnittstellenblock 126 übertragen. Ansprechend auf die dritte Antwort RESP3 kann der Speicherschnittstellenblock 126 dem Controller-Kern 121 eine zweite Antwort RESP2 bereitstellen, welche angibt, dass die Daten vollständig geschrieben wurden.
  • Nachdem die Daten in dem internen Speicher 124 gespeichert wurden oder nachdem die zweite Antwort RESP2 empfangen wurde, kann der Controller-Kern 121 eine erste Antwort RESP1, die angibt, dass die Anforderung abgeschlossen ist, durch den Host-Schnittstellenblock 125 an den Host 100 übertragen.
  • Wenn die erste Anforderung REQ1 eine Leseanforderung ist, kann die Leseanforderung durch die zweite Anforderung REQ2 und die dritte Anforderung REQ3 an die Speichervorrichtung 220 übertragen werden. Der Speicherschnittstellenblock 126 kann Daten, die von der Speichervorrichtungen 220 empfangen werden, in dem internen Speicher 124 speichern. Wenn Daten vollständig übertragen wurden, kann die Speichervorrichtung 220 die dritte Antwort RESP3 an den Speicherschnittstellenblock 126 übertragen.
  • Sowie die dritte Antwort RESP3 empfangen wird, kann der Speicherschnittstellenblock 126 dem Controller-Kern 121 die zweite Antwort RESP2 bereitstellen, welche angibt, dass die Daten vollständig gespeichert wurden. Sowie die zweite Antwort RESP2 empfangen wird, kann der Controller-Kern 121 die erste Antwort RESP1 durch den Host-Schnittstellenblock 125 an den Host 100 übertragen.
  • Der Host-Schnittstellenblock 125 kann Daten, die in dem internen Speicher 124 gespeichert sind, an den Host 100 übertragen. In einer beispielhaften Ausführungsform kann in dem Fall, in dem Daten, die der ersten Anforderung REQ1 entsprechen, in dem internen Speicher 124 gespeichert werden, die Übertragung der zweiten Anforderung REQ2 und der dritten Anforderung REQ3 ausgelassen werden.
  • 4 und 5 stellen ein Beispiel dar, in dem das Speichersystem 200 unter Verwendung eines dreidimensionalen Flash-Speichers implementiert wird. Der dreidimensionale Flash-Speicher kann dreidimensionale (z. B. vertikale) NAND-Speicherzellen (z. B. VNAND-Speicherzellen) umfassen. Eine Implementierung des Speicherzellen-Arrays 221 umfassend dreidimensionale Speicherzellen wird unten beschrieben. Jede der unten beschriebenen Speicherzellen kann eine NAND-Speicherzelle sein.
  • 4 ist ein Blockdiagramm des Speicherzellen-Arrays 221 aus 2 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
  • Bezug nehmend auf 4 umfasst das Speicherzellen-Array 221 gemäß einer beispielhaften Ausführungsform eine Mehrzahl von Speicherblöcken BLK1 bis BLKz. Jeder der Speicherblöcke BLK1 bis BLKz hat eine dreidimensionale Struktur (z. B. eine vertikale Struktur). Jeder der Speicherblöcke BLK1 bis BLKz kann zum Beispiel Strukturen umfassen, die sich in einer ersten bis dritten Richtung erstrecken. Jeder der Speicherblöcke BLK1 bis BLKz kann zum Beispiel eine Mehrzahl von NAND-Strings umfassen, die sich in der zweiten Richtung erstrecken. Die Mehrzahl von NAND-Strings kann zum Beispiel in der ersten bis dritten Richtung ausgebildet sein.
  • Jeder der NAND-Strings ist mit einer Bit-Leitung BL, einer String-Auswahlleitung SSL, einer Masseauswahlleitung GSL, Wortleitungen WL und einer gemeinsamen Source-Leitung CSL verbunden. Das heißt, jeder der Speicherblöcke BLK1 bis BLKz kann mit einer Mehrzahl von Bit-Leitungen BL, einer Mehrzahl von String-Auswahlleitungen SSL, einer Mehrzahl von Masseauswahlleitungen GSL, einer Mehrzahl von Wortleitungen WL und einer gemeinsamen Source-Leitung CSL verbunden sein. Die Speicherblöcke BLK1 bis BLKz werden unten unter Bezugnahme auf 5 genauer beschrieben.
  • 5 ist ein Schaltbild eines Speicherblocks BLKi gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts. 5 stellt ein Beispiel eines der Speicherblöcke BLK1 bis BLKz in dem Speicherzellen-Array 221 aus 4 dar.
  • Der Speicherblock BLKi kann eine Mehrzahl von Zell-Strings CS11 bis CS41 und CS12 bis CS42 umfassen. Die Mehrzahl von Zell-Strings CS11 bis CS41 und CS12 bis CS42 kann in Spalten- und Zeilenrichtung angeordnet sein, sodass sie Spalten und Zeilen bilden. Jeder der Zell-Strings CS11 bis CS41 und CS12 bis CS42 kann einen Masseauswahltransistor GST, Speicherzellen MC1 bis MC6 und einen Stringauswahltransistor SST umfassen. Der Masseauswahltransistor GST, die Speicherzellen MC1 bis MC6 und der Stringauswahltransistor SST, die in jedem der Zell-Strings CS11 bis CS41 und CS12 bis CS42 umfasst sind, können in einer Höhenrichtung im Wesentlichen rechtwinklig zu einem Substrat gestapelt sein.
  • Die Spalten der Mehrzahl von Zell-Strings CS11 bis CS41 und CS12 bis CS42 können jeweils mit unterschiedlichen String-Auswahlleitungen SSL1 bis SSL4 verbunden sein. Zum Beispiel können die Stringauswahltransistoren SST der Zell-Strings CS11 und CS12 gemeinsam mit der String-Auswahlleitung SSL1 verbunden sein. Die Stringauswahltransistoren SST der Zell-Strings CS21 und CS22 können gemeinsam mit der String-Auswahlleitung SSL2 verbunden sein. Die Stringauswahltransistoren SST der Zell-Strings CS31 und CS32 können gemeinsam mit der String-Auswahlleitung SSL3 verbunden sein. Die Stringauswahltransistoren SST der Zell-Strings CS41 und CS42 können gemeinsam mit der String-Auswahlleitung SSL4 verbunden sein.
  • Die Zeilen der Mehrzahl von Zell-Strings CS11 bis CS41 und CS12 bis CS42 können jeweils mit unterschiedlichen Bit-Leitungen BL1 und BL2 verbunden sein. Zum Beispiel können die Stringauswahltransistoren SST der Zell-Strings CS11 bis CS41 gemeinsam mit der Bit-Leitung BL1 verbunden sein. Die Stringauswahltransistoren SST der Zell-Strings CS12 bis CS42 können gemeinsam mit der Bit-Leitung BL2 verbunden sein.
  • Die Spalten der Mehrzahl von Zell-Strings CS11 bis CS41 und CS12 bis CS42 können jeweils mit unterschiedlichen Masseauswahlleitungen GSL1 bis GSL4 verbunden sein. Zum Beispiel können die Masseauswahltransistoren GST der Zell-Strings CS 11 und CS12 gemeinsam mit der Masseauswahlleitung GSL1 verbunden sein. Die Masseauswahltransistoren GST der Zell-Strings CS21 und CS22 können gemeinsam mit der Masseauswahlleitung GSL2 verbunden sein. Die Masseauswahltransistoren GST der Zell-Strings CS31 und CS32 können gemeinsam mit der Masseauswahlleitung GSL3 verbunden sein. Die Masseauswahltransistoren GST der Zell-Strings CS41 und CS42 können gemeinsam mit der Masseauswahlleitung GSL4 verbunden sein.
  • Die Speicherzellen, die sich auf der gleichen Höhe von dem Substrat (oder den Masseauswahltransistoren GST) befinden, können gemeinsam mit einer einzelnen Wortleitung verbunden sein, und die Speicherzellen, die sich auf unterschiedlichen Höhen von dem Substrat befinden, können jeweils mit unterschiedlichen Wortleitungen WL1 bis WL6 verbunden sein. Die Speicherzellen MC1 können zum Beispiel gemeinsam mit der Wortleitung WL1 verbunden sein. Die Speicherzellen MC2 können gemeinsam mit der Wortleitung WL2 verbunden sein. Die Speicherzellen MC3 können gemeinsam mit der Wortleitung WL3 verbunden sein. Die Speicherzellen MC4 können gemeinsam mit der Wortleitung WL4 verbunden sein. Die Speicherzellen MC5 können gemeinsam mit der Wortleitung WL5 verbunden sein. Die Speicherzellen MC6 können gemeinsam mit der Wortleitung WL6 verbunden sein. Die Masseauswahltransistoren GST der Zell-Strings CS11 bis CS41 und CS12 bis CS42 können gemeinsam mit der gemeinsamen Source-Leitung CSL verbunden sein.
  • 6A und 6B stellen die ECC-Schaltung 131 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts dar. Bezug nehmend auf 6A umfasst die ECC-Schaltung 131 einen Komprimierer 132, einen ECC-Encoder 133, einen Dekomprimierer 134, einen ECC-Decoder 135 und Puffer 620. Daten, die in die Speichervorrichtung 220 geschrieben werden sollen, werden unter Verwendung des Komprimierers 132 komprimiert, die komprimierten Daten werden in einem Puffer von den Puffern 620 gespeichert, die gepufferten Daten werden dann unter Verwendung des ECC-Encoders 133 codiert und Fehler korrigiert, um korrigierte Daten zu erstellen, um sie an die Speichervorrichtung 220 auszugeben. Daten, die aus der Speichervorrichtung ausgelesen werden, werden unter Verwendung des ECC-Decoders 135 decodiert und Fehler korrigiert, um korrigierte Daten zu erstellen, und die korrigierten Daten werden unter Verwendung des Dekomprimierers 134 dekomprimiert und die dekomprimierten Daten werden an den Host ausgegeben.
  • Teil a von 6B zeigt eine Peripherieschaltung 600, die eine Schnittstelle mit einem Puffer mit N Spalten (z. B. kann N eine positive ganze Zahl größer als 1 sein) und M Zeilen (z. B. kann M eine positive ganze Zahl größer als 1 sein) bildet. Die Peripherieschaltung 600 könnte zum Beispiel der Host-Schnittstellenblock sein. Teil b von 6B zeigt, dass sobald eine Ausführungsform des erfinderischen Konzepts eingesetzt wird, die Peripherieschaltung 600 aufgrund des Komprimierers 132 und des Dekomprimierers 134 mit einem Puffer 620-1 von den Puffern 620 einer reduzierten Größe interagieren kann. Der Puffer 620-1 umfasst N' Spalten und M' Zeilen. In einer Ausführungsform ist N' gleich N, aber M' ist kleiner als M.
  • 7A stellt Pseudocode zum Komprimieren von Daten, die in einen Speicher geschrieben werden sollen, und Dekomprimieren von Daten, die aus dem Speicher gelesen werden, gemäß einer beispielhaften Ausführungsform der Offenbarung dar. 7B stellt ein Verfahren zum Schreiben von Daten, welche die Komprimierung aus 7A verwenden können, gemäß einer beispielhaften Ausführungsform der Offenbarung dar.
  • 7C stellt ein Beispiel der komprimierten Daten dar, die durch das Komprimieren aus 7A erstellt werden können. 7D stellt ein Verfahren zum Lesen komprimierter Daten aus einem Speicher dar, der die Dekomprimierung aus 7A verwenden kann.
  • Das Verfahren aus 7B umfasst, eine Schreibanforderung zu empfangen, welche Schreibdaten und eine Schreibadresse umfasst (Schritt 701). Zum Beispiel kann der Host-Schnittstellenblock 125 aus 3 die Schreibanforderung von dem Host empfangen. Die Schreibdaten können vorübergehend in dem Seitenpuffer 130 gespeichert werden.
  • Das Verfahren aus 7B umfasst ferner, eine aktuelle Datenzeile der Schreibdaten zu überprüfen (Schritt 702). Das Überprüfen der aktuellen Datenzeile kann Zeile 2 des Komprimierer-Pseudocodes aus 7A entsprechen, der auf Parameter i Bezug nimmt. Zum Beispiel ist i=1, wenn auf die erste Datenzeile der Schreibdaten während eines ersten Durchgangs durch den Komprimierer-Pseudocode Bezug genommen wird, i=2, wenn auf die zweite Datenzeile der Schreibdaten während eines zweiten Durchgangs durch den Komprimierer-Pseudocode Bezug genommen wird, usw.
  • Das Verfahren aus 7B umfasst ferner, zu bestimmen, ob die aktuellen Zeilendaten alle nullen sind (Schritt 703). Zum Beispiel könnte der Komprimierer 132 die Zeilendaten einer ersten Zeile des Seitenpuffers 130 mit einem Nur-Null-Vektor vergleichen, um zu bestimmen, ob die aktuellen Zeilendaten alle null sind. Zeile 3 des Komprimierer-Codes aus 7A stellt den Vergleich dar.
  • Das Verfahren aus 7B schreitet zu einer nächsten Datenzeile fort, falls die Zeilendaten alle null sind (Schritt 704); falls dagegen bestimmt wird, dass die Zeilendaten nicht alle null sind, speichert es die aktuelle Datenzeile mit ihrem Index in einer aktuellen Zeile einer Datenmatrix, schreitet zu einer nächsten Zeile der Datenmatrix fort und führt Schritt 704 aus (Schritt 705). Zeile 4 und 5 des Komprimierer-Codes aus 7A stellen das Speichern der Daten und das Fortschreiten dar, und Parameter j in Zeile 1 des Komprimierer-Codes stellt eine Zeile der Matrix dar. Falls zum Beispiel die Schreibdaten erste Zeilendaten umfassen, die nicht alle null sind, zweite Zeilendaten, die alle null sind, und dritte Zeilendaten, die nicht alle null sind, würde die erste (d. h. j = 1) Zeile der Datenmatrix die ersten Zeilendaten und einen Index von 1 (d. h. i = 1) umfassen und die zweite (d. h. j = 1) Zeile der Datenmatrix würde die dritten Zeilendaten und einen Index von 3 (d. h. i = 3) umfassen. In einer Ausführungsform ist die Datenmatrix Puffer 620-1. Der Parameter i kann inkrementiert werden, um zur nächsten Datenzeile fortzuschreiten und der Parameter j kann inkrementiert werden, um zur nächsten Zeile der Datenmatrix fortzuschreiten.
  • Nach dem Fortschreiten zur nächsten Datenzeile umfasst das Verfahren aus 7B ein Bestimmen, ob alle Daten der Schreibdaten abgearbeitet wurden (Schritt 706). Falls nicht alle Daten abgearbeitet wurden (z. B. eine andere Zeile an Schreibdaten vorhanden ist), setzt das Verfahren bei Schritt 702 fort. Falls alle Daten abgearbeitet wurden, schreibt das Verfahren aus 7B die Datenmatrix in die Schreibadresse (Schritt 707). Der Controller-Kern 121 kann zum Beispiel die Datenmatrix in die Speichervorrichtung 220 schreiben. In einer beispielhaften Ausführungsform codiert der ECC-Encoder 133 und korrigiert Fehler der Datenmatrix, um korrigierte Daten zu erstellen, und der Controller 121 schreibt die korrigierten Daten in die Speichervorrichtung 220. Da die Datenmatrix nicht die Null-Zeilen an Daten umfasst, ist die Größe der Datenmatrix kleiner als die Größe von ursprünglichen Daten, die in dem Seitenpuffer 130 gespeichert sind. So können die Schreibdaten, die in der Speichervorrichtung 220 gespeichert sind, als komprimierte Daten bezeichnet werden.
  • 7C umfasst ein Beispiel, bei dem ursprüngliche Schreibdaten, die 8 Zeilen an Daten umfassen, zu komprimierten Daten aus 4 Zeilen komprimiert werden, da die ursprünglichen Daten 4 Zeilen an Daten umfassen, die alle null sind. Die erste Zeile der komprimierten Daten umfasst zum Beispiel die erste Zeile der ursprünglichen Daten und deren Zeilenindex von 1, die zweite Zeile der komprimierten Daten umfasst die vierte Zeile der ursprünglichen Daten und deren Zeilenindex von 4, die dritte Zeile der komprimierten Daten umfasst die sechste Zeile der ursprünglichen Daten und deren Zeilenindex von 6 und die vierte Zeile der komprimierten Daten umfasst die achte Zeile der ursprünglichen Daten und deren Zeilenindex von 8.
  • 7D stellt ein Verfahren zum erneuten Lesen der komprimierten Daten gemäß einer beispielhaften Ausführungsform der Offenbarung dar. Das Verfahren aus 7D wird unter Bezugnahme auf die komprimierten Daten aus 7C erläutert.
  • Das Verfahren aus 7D umfasst, eine Leseanforderung zu empfangen, welche eine Leseadresse umfasst (Schritt 711). Der Controller-Kern 121 könnte zum Beispiel die Leseanforderung von dem Host durch den Host-Schnittstellenblock 125 empfangen.
  • Das Verfahren aus 7D umfasst ferner, Daten zu lesen, die an der Leseadresse gespeichert sind (Schritt 712). Zum Beispiel könnte der Controller-Kern 121 die komprimierten Daten aus 7C aus einer Position der Speichervorrichtung 220 auslesen, die mit der Leseadresse assoziiert ist.
  • Das Verfahren aus 7D umfasst ferner, zu bestimmen, ob eine aktuelle Zeile der Lesedaten einen gespeicherten Zeilenindex umfasst, der mit einem aktuellen Zeilenindex der ursprünglichen Daten übereinstimmt (Schritt 713). In einer Ausführungsform führt der ECC-Decoder 135, bevor er Schritt 713 durchführt, einen Decodierungs- und Fehlerkorrekturvorgang bei den Lesedaten durch, um korrigierte Lesedaten zu erstellen, und Schritt 713 wird bei den korrigierten Lesedaten durchgeführt.
  • Das Verfahren aus 7D umfasst ferner, einen Nur-Null-Vektor (Schritt 714) auszugeben und den aktuellen Zeilenindex zu inkrementieren (Schritt 715), falls keine Übereinstimmung vorliegt; und Daten der aktuellen Zeile auszugeben (Schritt 716) und den aktuellen Zeilenindex zu inkrementieren (Schritt 715), falls die Übereinstimmung vorliegt. Zum Beispiel falls die aktuelle Zeile der Lesedaten die erste Zeile ist und der aktuelle Zeilenindex 1 ist, so stimmt der entsprechende gespeicherte Zeilenindex 1 der komprimierten Daten mit dem aktuellen Zeilenindex überein und die Daten 0101010101 werden ausgegeben und der aktuelle Zeilenindex wird zu 2 inkrementiert. Da der aktuelle Zeilenindex 2 beträgt, würde Schritt 713 als nächstes bestimmen, dass der gespeicherte Zeilenindex 4 der zweiten Zeile der komprimierten Daten nicht mit dem aktuellen Zeilenindex von 2 übereinstimmt, wodurch eine Ausgabe von Nur-Null-Vektoren von 0000000000 und ein Inkrementieren des aktuellen Zeilenindexes zu 3 veranlasst wird.
  • Das Verfahren aus 7D schreitet fort, bis alle Zeilen der komprimierten Daten verarbeitet wurden. Jede Datenzeile, die durch Schritt S716 ausgegeben wird, kann vorübergehend im Puffer 620-1 gespeichert werden, bis die Dekomprimierung abgeschlossen ist, und die resultierenden komprimierten Daten können dann an den Host ausgegeben werden.
  • 8A stellt Pseudocode zum Komprimieren von Daten gemäß einer Ausführungsform der Offenbarung dar und 8B stellt ein Verfahren zum Schreiben von Daten gemäß einer Ausführungsform der Offenbarung dar, welches das Komprimieren aus 8A verwenden kann.
  • Das Verfahren aus 8B umfasst, eine Schreibanforderung zu empfangen, welche Schreibdaten und eine Schreibadresse umfasst (Schritt 801). Der Controller-Kern 121 kann zum Beispiel die Schreibanforderung von dem Host durch den Host-Schnittstellenblock 125 empfangen.
  • Die Verfahren aus 8B umfassen ferner, eine aktuelle Datenzeile der Schreibdaten zu überprüfen (Schritt 802). Zeile 2 des Pseudocodes aus 8A kann einer Überprüfung der aktuellen Datenzeile entsprechen.
  • Das Verfahren aus 8B umfasst ferner, die aktuelle Zeile in Datenvektoren der gleichen Größe zu teilen und eine Anzahl an Matrices basierend auf der Anzahl der Vektoren zu erstellen (Schritt 803). Zum Beispiel falls die aktuelle Datenzeile 8 Bits an Daten hat, könnte sie in 2 Vektoren einer Größe 4 unterteilt werden und dann wäre die Anzahl der Matrices 2. Allerdings sind Ausführungsformen des erfinderischen Konzepts nicht darauf beschränkt, da die aktuelle Datenzeile in mehr als 2 Vektoren geteilt werden kann und die Größe der Vektoren größer sein kann als 4 Bits.
  • Das Verfahren aus 8B umfasst ferner, den aktuellen Datenvektor zu überprüfen, der mit der aktuellen Matrix assoziiert ist (Schritt 804). Zum Beispiel falls die aktuelle Datenzeile in zwei Datenvektoren geteilt wurde, überprüft dieser Schritt einen der zwei Datenvektoren.
  • Das Verfahren aus 8B umfasst ferner, zu bestimmen, ob der aktuelle Datenvektor alle null ist (Schritt 805). Das Verfahren aus 8B umfasst, den aktuellen Datenvektor in der aktuellen Matrix mit seinen Zeilen- und Vektorindizes zu speichern (Schritt 806) und zu einem nächsten Datenvektor und einer nächsten Matrix fortzuschreiten (Schritt 807), falls der Datenvektor nicht alle null ist, und Schritt 807 nur auszuführen, falls der Datenvektor alle null ist. Das Speichern des aktuellen Datenvektors in einer aktuellen Matrix mit seinen Zeilen- und Vektorindizes kann durchgeführt werden, indem dieser in einer eigenen Zeile des Puffers 620-1 gespeichert werden.
  • Das Verfahren aus 8B umfasst ferner, zu bestimmen, ob alle Datenvektoren abgearbeitet wurden (Schritt 808). Falls nicht alle Datenvektoren der aktuellen Zeile abgearbeitet wurden, schreitet das Verfahren zu Schritt 804 mit dem nächsten Datenvektor und der nächsten Matrix fort.
  • Falls alle Datenvektoren der aktuellen Datenzeile abgearbeitet wurden, umfasst das Verfahren aus 8B, zur nächsten Datenzeile und zu der ersten Matrix fortzuschreiten (Schritt 809) und dann zu Schritt 802 fortzuschreiten. Sobald alle Datenzeilen abgearbeitet wurden, kann das Verfahren aus 8B ferner umfassen, die Matrices aus Puffer 620-1 in die Speichervorrichtung 220 als komprimierte Daten zu schreiben. In einer beispielhaften Ausführungsform werden die Daten der Matrices zuerst in den ECC-Encoder 133 zur Codierung und Fehlerkorrektur der Daten eingegeben, um korrigierte Daten zu erstellen, und dann werden die korrigierten Daten an eine Position der Speichervorrichtung 220 geschrieben, die mit der Schreibadresse assoziiert ist.
  • 8C zeigt ein Beispiel der ursprünglichen Schreibdaten, die in zwei Matrices komprimiert werden. Zum Beispiel wenn das Verfahren aus 8B bei den ursprünglichen Daten aus 8C angewendet wird, teilt Schritt 803 die erste 8-Bit-Zeile R1 der ursprünglichen Daten in zwei Datenvektoren V1 und V2 einer Größe 4 und erstellt eine erste Matrix M1 und eine zweite Matrix M2, Schritt 806 gibt den ersten Datenvektor V1, seinen Zeilenindex R1 und seinen Vektorindex V1 an eine erste Zeile der ersten Matrix M1 aus und gibt den zweiten Datenvektor V2, seinen Zeilenindex R1 und seinen Vektorindex V2 an eine erste Zeile der zweiten Matrix aus. Da die zweite, dritte, sechste und siebte Zeile der ursprünglichen Daten alle null sind, umfassen die Matrices M1 und M2 keine ihrer Daten. Die erste Matrix M1 umfasst ferner die ersten vier Bits der vierten Zeile der ursprünglichen Daten mit Zeilenindex R4 und die 4 höchstwertigen Bits der ursprünglichen Daten mit Zeilenindex R8. Die zweite Matrix M2 umfasst ferner die letzten vier Bits der fünften Zeile der ursprünglichen Daten mit Zeilenindex R5 und die niedrigwertigsten Bits der fünften Zeile. In einer Ausführungsform werden die Matrices M1 und M2 sequenziell in Puffer 620-1 gespeichert. Zum Beispiel würde die erste Matrix M1 ersten Zeilen des Puffers 620-1 entsprechen und die zweite Matrix M2 würde zweiten Zeilen des Puffers 620-1 entsprechen, die sequenziell zu den ersten Zeilen benachbart sind.
  • 9A stellt Pseudocode zum Dekomprimieren von Daten gemäß einer Ausführungsform der Offenbarung dar und 9B stellt ein Verfahren zum Lesen von Daten gemäß einer Ausführungsform der Offenbarung dar, welches die Dekomprimierung aus 9A verwenden kann.
  • Das Verfahren aus 9B umfasst, eine Leseanforderung zu empfangen, welche eine Leseadresse umfasst (Schritt 901). Der Controller 121 könnte zum Beispiel die Leseanforderung von dem Host durch den Host-Schnittstellenblock 125 empfangen.
  • Das Verfahren aus 9B umfasst ferner, Daten zu lesen, die an der Leseadresse gespeichert sind (Schritt 902). Der Controller-Kern 121 könnte zum Beispiel Daten lesen, wie beispielsweise jene, die in den Matrices M1 und M2 aus 8C an einer Position der Speichervorrichtung 220 gespeichert sind, die der Leseadresse entspricht. In einer Ausführungsform führt der ECC-Decoder 135 eine Decodierung und Fehlerkorrektur bei den Lesedaten durch, um korrigierte Lesedaten zu erstellen, und die Schritte 903-907 unten werden bei den korrigierten Lesedaten durchgeführt.
  • Das Verfahren aus 9B umfasst ferner, zu bestimmen, ob eine aktuelle Zeile einer aktuellen Matrix einen gespeicherten Zeilenindex umfasst, der mit dem aktuellen Zeilenindex übereinstimmt, und einen gespeicherten Vektorindex, der mit dem aktuellen Vektorindex übereinstimmt (Schritt 903). Falls der gespeicherte Zeilenindex und der gespeicherte Vektorindex übereinstimmen, so umfasst das Verfahren aus 9B, den Datenvektor der aktuellen Zeile auszugeben (Schritt 904). Falls der gespeicherte Zeilenindex und der gespeicherte Vektorindex nicht übereinstimmen, so umfasst das Verfahren aus 9B, einen Nur-Null-Vektor auszugeben (Schritt 905). Zum Beispiel falls, mit Bezug auf 8C, der aktuelle Zeilenindex R1 ist, die aktuelle Matrix die erste Matrix M1 ist und der aktuelle Datenvektorindex V1 ist, stimmen der gespeicherte Zeilenindex und der gespeicherte Vektorindex überein und die 0101-Daten werden ausgegeben. Falls zum Beispiel mit Bezug auf 8C der aktuelle Zeilenindex R2 ist, die aktuelle Matrix die erste Matrix M1 ist und der aktuelle Datenvektorindex V1 ist, so würde der gespeicherte Zeilenindex nicht übereinstimmen und es würden rein-Null-Daten wie beispielsweise 0000 ausgegeben werden.
  • Das Verfahren aus 9B umfasst ferner, zu bestimmen, ob alle Vektoren und/oder Matrices abgearbeitet wurden (Schritt 906). Falls nicht alle Vektoren abgearbeitet wurden, umfasst das Verfahren aus 9B, den Vektorindex zu inkrementieren (Schritt 907) und dann bei Schritt 903 fortzusetzen. Falls alle Vektoren abgearbeitet wurden, aber nicht alle Matrices abgearbeitet wurden, umfasst das Verfahren aus 9B, den Matrixindex zu inkrementieren und den Vektorindex zurückzusetzen (Schritt 907) und bei Schritt 903 fortzusetzen. Falls alle Vektoren abgearbeitet und alle Matrices abgearbeitet wurden, umfasst das Verfahren aus 9B, den Zeilenindex zu inkrementieren und den Matrixindex zurückzusetzen (Schritt 908) und bei Schritt 903 fortzusetzen. Einen Vektorindex zurücksetzen bedeutet, dass der erste Vektorindex als nächstes überprüft wird, und einen Matrixindex zurückzusetzen bedeutet, dass der erste Matrixindex als nächstes überprüft wird.
  • Das Verfahren aus 9B schreitet fort, bis alle gelesenen oder korrigierten Daten dekomprimiert und ausgegeben wurden. Jedes Mal, wenn Schritt 904 oder Schritt 905 ausgeführt werden, können die entsprechenden Ausgabedaten in einer entsprechenden Zeile des Puffers 620-1 gespeichert werden, bis die Dekomprimierung abgeschlossen wurde, und dann können die resultierenden dekomprimierten Daten ansprechend auf die Leseanforderung durch den Controller-Kern 121 an den Host ausgegeben werden.
  • 10 stellt den Komprimierer 132 gemäß einer beispielhaften Ausführungsform der Offenbarung dar. Bezug nehmend auf 10 umfasst der Komprimierer 132 einen Zeilenzähler 630, der jedes Mal inkrementiert wird, wenn eine Zeile der ursprünglichen Schreibdaten analysiert wird, um einen Zeilenindex zu erstellen, der zusammen mit Daten der Zeile in einer Zeile des Puffers 620 gespeichert wird, wenn die Daten nicht null sind. In einer Ausführungsform ist der Zeilenzähler 630 ein zyklischer Zeilenzähler, der von 1 bis zur Zahl M von Zeilen in den ursprünglichen Schreibdaten zählt. Bei einem Start können alle Komponenten des Komprimierers 132 auf null zurückgesetzt werden. Eingehende Zeilen können bei einem einzelnen Taktzyklus eingegeben werden, wobei der Zeilenzähler 630 ihren Index an dem nicht komprimierten Puffer (z. B. der Seitenpuffer 130) angibt.
  • Es kann bestimmt werden, dass die Daten nicht null sind, indem sie mit einem Nullvektor 640 verglichen werden. Der Vergleich kann unter Verwendung eines Nullvektorkomparators durchgeführt werden. Der Nullvektorkomparator kann UND-Gatter zwischen allen Vektorbits umfassen. Zum Beispiel wenn N-Vektorbits vorliegen, können N-1-UND-Gatter in dem Vektorkomparator vorhanden sein. In einer Ausführungsform weist der Zeilenzähler 630 0 bis M-1 Werte auf und umfasst Log2M-Flip-Flops.
  • Falls die Daten der Zeile nicht null sind, werden die Daten zusammen mit dem Zeilenindex basierend auf einer Schreibadresse in eine aktuelle Zeile des Puffers 620-1 geschrieben und eine Schreibadresslogik 650 inkrementiert die Schreibadresse. In einer Ausführungsform umfasst die Schreibadresslogik 650 log2M Halbaddierer, jeweils mit UND- und XODER-Gatter. Falls die Daten der Zeile null sind, werden die Daten nicht in die aktuelle Zeile des Puffers 620-1 geschrieben, der mit der Schreibadresse assoziiert ist, und die Schreibadresse wird nicht inkrementiert.
  • 11 stellt den Dekomprimierer 134 gemäß einer beispielhaften Ausführungsform der Offenbarung dar. Bezug nehmend auf 11 umfasst der Dekomprimierer 134 einen Zeilenzähler 660, einen Multiplexer 670, Vergleichslogik 680 und eine Leseadresslogik 690. Der Zeilenzähler 680 inkrementiert periodisch ein Zählergebnis, um alle Zeilen der ursprünglichen Daten abzuarbeiten. Die Vergleichslogik 680 vergleicht ein Zählergebnis des Zeilenzählers 660, die eine aktuelle Zeile der ursprünglichen Daten repräsentiert, mit einem Index, der in einer Zeile des Puffers 620-1 gespeichert ist, die mit einer aktuellen Leseadresse assoziiert ist. Falls das Zählergebnis mit dem gespeicherten Index übereinstimmt, gibt die Vergleichslogik 680 ein erstes Steuersignal eines ersten Logikpegels an den Multiplexer 670 aus, der angibt, dass die Daten der Zeile des Puffers eingegeben werden sollten, und gibt ein zweites Steuersignal an die Leseadresslogik 690 aus, um die Leseadresse zu inkrementieren. Falls das Zählergebnis nicht mit dem gespeicherten Index übereinstimmt, gibt die Vergleichslogik 680 das erste Steuersignal eines zweiten anderen Logikpegels an den Multiplexer 670 aus, um einen Nullvektor auszugeben.
  • 12 ist ein Blockdiagramm eines Rechensystems 1200 umfassend ein nichtflüchtiges Speichersystem gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
  • Das nichtflüchtige Speichersystem in 12 kann das in 1 dargestellte Speichersystem 200 sein. In dem Rechensystem 1200, das zum Beispiel eine Mobilvorrichtung oder ein Desktop-Computer sein kann, kann das nichtflüchtige Speichersystem als nichtflüchtiges Speichersystem 1201 montiert sein, allerdings sind beispielhafte Ausführungsformen nicht darauf beschränkt.
  • Das Rechensystem 1200 kann zum Beispiel einen Host 1202 umfassen, der einen CPU, einen RAM 1203, eine Nutzerschnittstelle 1204 und einen Vorrichtungstreiber 1205 umfasst. Der Host 1202 kann der in 1 dargestellte Host 100 sein und der Vorrichtungstreiber 1205 kann der in 1 dargestellte Speichervorrichtungstreiber 111 sein. Diese Elemente sind elektrisch mit einem Bus 1206 verbunden. Das nichtflüchtige Speichersystem 1201 kann mit dem Vorrichtungstreiber 1205 verbunden sein. Der Host 1202 kann das gesamte Rechensystem 1200 steuern und kann einen Betrieb entsprechend einem Nutzerbefehl durchführen, der durch die Nutzerschnittstelle 1204 eingegeben wird. Der RAM 1203 kann als Datenspeicher für den Host 1202 fungieren. Der Host 1202 kann durch den Vorrichtungstreiber 1205 Nutzerdaten schreiben oder Nutzerdaten aus dem nichtflüchtigen Speichersystem 1201 lesen. In 12 ist der Vorrichtungstreiber 1205, der den Betrieb und die Verwaltung des nichtflüchtigen Speichersystems 1201 steuert, als außerhalb des Hosts 1202 befindlich dargestellt; allerdings sind beispielhafte Ausführungsform nicht darauf beschränkt. In einer beispielhaften Ausführungsform kann der Vorrichtungstreiber 1205 zum Beispiel in dem Host 1202 angeordnet sein.
  • In beispielhaften Ausführungsformen des vorliegenden erfinderischen Konzepts wird ein dreidimensionales (3D-) Speicher-Array bereitgestellt. Das 3D-Speicher-Array ist monolithisch in einer oder mehreren physischen Ebenen oder Arrays von Speicherzellen gebildet, mit einer aktiven Fläche, die oberhalb eines Siliziumsubstrats angeordnet ist, und Schalttechnik, die mit dem Betrieb dieser Speicherzellen assoziiert ist, unabhängig davon, ob eine solche assoziierte Schalttechnik oberhalb oder innerhalb eines solchen Substrats ist. Der Begriff „monolithisch“ bedeutet, dass Schichten jeder Ebene des Arrays direkt auf den Schichten jeder darunterliegenden Ebene des Arrays angeordnet sind.
  • In beispielhaften Ausführungsformen des vorliegenden erfinderischen Konzepts umfasst das 3D-Speicher-Array vertikale NAND-Strings, die derart vertikal orientiert sind, dass sich mindestens eine Speicherzelle über einer anderen Speicherzelle befindet. Die mindestens eine Speicherzelle kann eine Charge-Trap-Schicht umfassen. Die nachfolgenden Patentdokumente, die hiermit durch Verweis in den vorliegenden Text aufgenommen sind, beschreiben geeignete Konfigurationen für dreidimensionale Speicher-Arrays, in denen das dreidimensionale Speicherarray als eine Mehrzahl von Ebenen eingerichtet ist, wobei Wortleitungen und/oder Bit-Leitungen zwischen Ebenen geteilt werden: US-Patente Nr. 7,679,133 , US 8,553,466 , US 8,654,587 , US 8,559,235 sowie US-Offenlegungsschrift Nr. 2011/0233648 A .
  • Wie es auf dem Gebiet des erfinderischen Konzepts üblich ist, werden beispielhafte Ausführungsformen bezüglich funktionalen Blöcken, Einheiten und/oder Modulen beschrieben und in den Zeichnungen dargestellt. Für den Fachmann wird es verständlich sein, dass diese Blöcke, Einheiten und/oder Module physisch durch elektronische (oder optische) Schaltungen implementiert werden, wie beispielsweise Logikschaltungen, diskrete Komponenten, Mikroprozessoren, fest verdrahtete Schaltungen, Speicherelemente, Verdrahtungsverbindungen usw. die unter Verwendung von halbleiterbasierten Herstellungstechniken oder anderen Herstellungstechniken ausgebildet werden können. In dem Fall, in dem die Blöcke, Einheiten und/oder Module durch Mikroprozessoren oder ähnliches implementiert werden, können sie unter Verwendung von Software (z. B. Microcode) programmiert werden, verschiedene, hierin erläuterte Funktionen durchzuführen, und können optional durch Firmware und/oder Software angesteuert werden. Alternativ kann jeder Block, jede Einheit und/oder jedes Modul durch dedizierte Hardware implementiert sein, oder als Kombination aus dedizierter Hardware, um einige Funktionen durchzuführen, und aus einem Prozessor (z. B. einem oder mehreren programmierten Mikroprozessoren und assoziierter Schalttechnik), um andere Funktionen durchzuführen. Auch kann jeder Block, jede Einheit und/oder jedes Modul der beispielhaften Ausführungsformen physisch in zwei oder mehr interagierende und separate Blöcke, Einheiten und/oder Module getrennt sein, ohne von dem Umfang des erfinderischen Konzepts abzuweichen. Ferner können die Blöcke, Einheiten und/oder Module der beispielhaften Ausführungsformen physisch zu komplexeren Blöcken, Einheiten und/oder Modulen kombiniert werden, ohne von dem Umfang des erfinderischen Konzepts abzuweichen.
  • Beispielhafte Ausführungsformen der vorliegenden Erfindung können direkt in Hardware, in einem Softwaremodul, das durch einen Prozessor ausgeführt wird, oder in einer Kombination aus den beiden verkörpert sein. Ein Softwaremodul kann physisch auf einer nicht-transitorischen Programmspeichervorrichtung verkörpert sein, wie beispielsweise in einem RAM-Speicher, einem Flash-Speicher, einem ROM-Speicher, einem EPROM-Speicher, einem EEPROM-Speicher, Registern oder einer beliebigen anderen Form eines Datenträgers, die im Stand der Technik bekannt ist. Ein beispielhafter Datenträger kann mit dem Prozessor gekoppelt sein, sodass der Prozessor Informationen aus dem Datenträger lesen und darauf Informationen schreiben kann. Wahlweise kann der Datenträger integral mit dem Prozessor sein. Ferner können in einigen Aspekten der Prozessor und der Datenträger in einer anwendungsspezifischen integrierten Schaltung (ASIC) vorliegen.
  • Während das vorliegende erfinderische Konzept konkret gezeigt und unter Bezugnahme auf die beispielhaften Ausführungsformen desselben beschrieben wurde, ist es für einen Durchschnittsfachmann klar, dass verschiedene Änderungen hinsichtlich Form und Detail hierin vorgenommen werden können, ohne von dem Geiste und Umfang der vorliegenden Erfindung wie in den nachfolgenden Ansprüchen definiert abzuweichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 7679133 [0094]
    • US 8553466 [0094]
    • US 8654587 [0094]
    • US 8559235 [0094]
    • US 2011/0233648 A [0094]

Claims (20)

  1. Speichersystem aufweisend: eine Speichervorrichtung aufweisend eine Mehrzahl von Speicherzellen; und einen Speicher-Controller aufweisend eine Fehlerkorrekturcode(ECC)-Schaltung, wobei die ECC-Schaltung eingerichtet ist, Datenzeilen erster Schreibdaten zu bestimmen, die nicht alle null sind und die bestimmten Datenzeilen zusammen mit entsprechenden Zeilenindizes in Pufferzeilen eines Puffers zu speichern, und wobei der Speicher-Controller eingerichtet ist, zweite Daten basierend auf dem Puffer in die Speichervorrichtung zu schreiben.
  2. Speichervorrichtung nach Anspruch 1, wobei die ECC-Schaltung Daten des Puffers codiert und Fehler korrigiert, um die zweiten Schreibdaten zu erstellen.
  3. Speichervorrichtung nach Anspruch 2, wobei der Speicher-Controller eingerichtet ist, eine Schreibanforderung zu empfangen, welche die ersten Schreibdaten und eine Schreibadresse umfasst, und der Speicher-Controller die korrigierten Schreibdaten an eine Position der Speichervorrichtung schreibt, die mit der Schreibadresse assoziiert ist.
  4. Speichersystem nach Anspruch 1, wobei die ECC-Schaltung eingerichtet ist, die zweiten Schreibdaten zu decodieren und Fehler zu korrigieren, um korrigierte Daten zu erstellen, wobei die ECC-Schaltung eingerichtet ist, die korrigierten Daten zu dekomprimieren, um Lesedaten zu erstellen, und der Speicher-Controller eingerichtet ist, die Lesedaten an eine Host-Vorrichtung auszugeben.
  5. Speichersystem nach Anspruch 4, wobei die ECC-Schaltung die korrigierten Daten dekomprimiert, indem eine erste Anzahl aller Null-Zeilen aus Zeilenindizes, die in den korrigierten Daten gespeichert sind, und eine zweite Anzahl an Zeilen der ersten Schreibdaten bestimmt werden.
  6. Speichersystem nach Anspruch 4, wobei die ECC-Schaltung die korrigierten Daten dekomprimiert, indem Daten in einer aktuellen Zeile der korrigierten Daten ausgegeben werden, wenn ein Zeilenindex in der aktuellen Zeile mit einem aktuellen Zeilenindex übereinstimmt, und ein Nur-Null-Vektor ausgegeben wird, wenn ein Zeilenindex nicht mit dem aktuellen Zeilenindex übereinstimmt.
  7. Speichersystem nach Anspruch 1, wobei die ECC-Schaltung aufweist: einen Komprimierer; einen Dekomprimierer; einen ECC-Encoder; und einen ECC-Decoder.
  8. Speichersystem nach Anspruch 1, wobei die ersten Schreibdaten anfangs in einer ersten Anzahl an Zeilen eines Seitenpuffers des Speicher-Controllers gespeichert sind und der Puffer eine zweite Anzahl an Zeilen aufweist, die kleiner ist als die erste Anzahl.
  9. Computerimplementiertes Verfahren zum Programmieren von Daten in ein Speichersystem, wobei das Verfahren aufweist: Empfangen, durch einen Speicher-Controller, einer Schreibanforderung, welche erste Schreibdaten umfasst; Bestimmen, durch eine Fehlerkorrekturcode(ECC)-Schaltung, von Datenzeilen der ersten Schreibdaten, die nicht alle null sind; Erstellen, durch die ECC-Schaltung, von komprimierten Daten, welche die bestimmten Datenzeilen umfassen und Zeilenindizes innerhalb der ersten Schreibdaten entsprechen; und Schreiben, durch den Speicher-Controller, von zweiten Schreibdaten basierend auf den komprimierten Daten in die Speichervorrichtung.
  10. Verfahren nach Anspruch 9, ferner aufweisend die ECC-Schaltung, welche die komprimierten Daten codiert und Fehler korrigiert, um die zweiten Schreibdaten zu erstellen.
  11. Verfahren nach Anspruch 10, wobei die ersten Schreibdaten in einer ersten Anzahl an Zeilen eines Seitenpuffers des Speicher-Controllers gespeichert sind und die ECC-Schaltung vorübergehend die komprimierten Daten in einem internen Puffer speichert, der eine zweite Anzahl an Zeilen aufweist, die kleiner ist als die erste Anzahl, bevor die Codierung und die Fehlerkorrektur durchgeführt werden.
  12. Verfahren nach Anspruch 9, wobei die komprimierten Daten alle der Datenzeilen ausschließen, die alle null sind.
  13. Verfahren nach Anspruch 9, wobei komprimierte Daten eine Mehrzahl von Einträgen umfassen, wobei jeder Eintrag eine der bestimmten Datenzeilen und einen der Zeilenindizes umfasst.
  14. Verfahren nach Anspruch 9, wobei das Erstellen der komprimierten Daten aufweist: Teilen einer der Datenzeilen der ursprünglichen Datenzeile in eine Mehrzahl an Datenvektoren gleicher Größe; und Erstellen einer Zeile der komprimierten Schreibdaten, sodass sie einen der Datenvektoren, der nicht nur null ist, einen entsprechenden der Zeilenindizes und einen Vektorindex, der mit dem einen Datenvektor assoziiert ist, umfassen.
  15. Computerimplementiertes Verfahren zum Lesen von Daten aus einem Speichersystem, wobei das Verfahren aufweist: Empfangen, durch den Speicher-Controller, einer Leseanforderung, die eine Leseadresse umfasst, von einer Host-Vorrichtung; Lesen, durch den Speicher-Controller, erster Lesedaten basierend auf der gelesenen Adresse; Dekomprimieren, durch eine Fehlerkorrekturcode(ECC)-Schaltung, von komprimierten Daten basierend auf den ersten Lesedaten, um zweite Lesedaten zu erstellen, wobei die komprimierten Daten eine Mehrzahl von Zeilen umfassen, wobei jede Zeile Daten umfasst und einen anderen gespeicherten Zeilenindex; und Ausgeben, durch den Speicher-Controller, der zweiten Lesedaten an die Host-Vorrichtung.
  16. Verfahren nach Anspruch 15, wobei das Dekomprimieren zum Beispiel für jeden einer Mehrzahl an ursprünglichen Zeilenindizes aufweist, Daten einer der Zeilen der komprimierten Daten auszugeben, wenn der gespeicherte Zeilenindex der einen Zeile mit dem entsprechenden ursprünglichen Zeilenindex übereinstimmt, und andernfalls einen Nur-Null-Vektor auszugeben.
  17. Verfahren nach Anspruch 15, wobei das Dekomprimieren von einem Multiplexer durchgeführt wird, der ansprechend auf ein Steuersignal einen Nur-Null-Vektor oder Daten einer Zeile der komprimierten Daten ausgibt.
  18. Verfahren nach Anspruch 17, wobei das Steuersignal erstellt wird, indem ein aktuelles Zählergebnis eines Zeilenzählers, das eine aktuelle Zeile von einer Mehrzahl von Zeilen ursprünglicher Daten darstellt, mit dem gespeicherten Zeilenindex in einer der Zeilen der komprimierten Daten verglichen wird.
  19. Verfahren nach Anspruch 15, wobei die ECC-Schaltung die ersten Lesedaten decodiert und Fehler korrigiert, um die komprimierten Daten zu erstellen.
  20. Verfahren nach Anspruch 15, wobei jede Zeile ferner einen einer Mehrzahl von gespeicherten Datenvektorindizes umfasst.
DE102021117417.1A 2021-04-06 2021-07-06 ECC-Pufferreduktion in einer Speichervorrichtung Pending DE102021117417A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/223,375 2021-04-06
US17/223,375 US11636912B2 (en) 2021-04-06 2021-04-06 ECC buffer reduction in a memory device

Publications (1)

Publication Number Publication Date
DE102021117417A1 true DE102021117417A1 (de) 2022-10-06

Family

ID=83282460

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021117417.1A Pending DE102021117417A1 (de) 2021-04-06 2021-07-06 ECC-Pufferreduktion in einer Speichervorrichtung

Country Status (4)

Country Link
US (2) US11636912B2 (de)
KR (1) KR20220138800A (de)
CN (1) CN115206412A (de)
DE (1) DE102021117417A1 (de)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7679133B2 (en) 2007-11-08 2010-03-16 Samsung Electronics Co., Ltd. Vertical-type non-volatile memory devices
US20110233648A1 (en) 2010-03-26 2011-09-29 Samsung Electronics Co., Ltd. Three-Dimensional Semiconductor Memory Devices And Methods Of Fabricating The Same
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US8559235B2 (en) 2010-08-26 2013-10-15 Samsung Electronics Co., Ltd. Nonvolatile memory device, operating method thereof and memory system including the same
US8654587B2 (en) 2010-08-11 2014-02-18 Samsung Electronics Co., Ltd. Nonvolatile memory devices, channel boosting methods thereof, programming methods thereof, and memory systems including the same

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102025340B1 (ko) * 2012-11-27 2019-09-25 삼성전자 주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치, 이를 포함하는 캐쉬 메모리 및 컴퓨터 시스템
US9189326B2 (en) * 2013-10-08 2015-11-17 Advanced Micro Devices, Inc. Detecting and correcting hard errors in a memory array
KR20210089016A (ko) * 2020-01-07 2021-07-15 삼성전자주식회사 메모리 컨트롤러 및 메모리 시스템

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7679133B2 (en) 2007-11-08 2010-03-16 Samsung Electronics Co., Ltd. Vertical-type non-volatile memory devices
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US20110233648A1 (en) 2010-03-26 2011-09-29 Samsung Electronics Co., Ltd. Three-Dimensional Semiconductor Memory Devices And Methods Of Fabricating The Same
US8654587B2 (en) 2010-08-11 2014-02-18 Samsung Electronics Co., Ltd. Nonvolatile memory devices, channel boosting methods thereof, programming methods thereof, and memory systems including the same
US8559235B2 (en) 2010-08-26 2013-10-15 Samsung Electronics Co., Ltd. Nonvolatile memory device, operating method thereof and memory system including the same

Also Published As

Publication number Publication date
US20220319623A1 (en) 2022-10-06
US20230238074A1 (en) 2023-07-27
KR20220138800A (ko) 2022-10-13
US11636912B2 (en) 2023-04-25
CN115206412A (zh) 2022-10-18

Similar Documents

Publication Publication Date Title
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE102013103391B4 (de) Betriebsverfahren eines Controllers, der eine nichtflüchtige Speichervorrichtung steuert, und Mappingmuster-Auswahlverfahren zum Auswählen eines Mappingmusters, das ein polar codiertes Codewort Multibitdaten einer nichtflüchtigen Speichervorrichtung zuordnet
DE60129710T2 (de) Anordnung und struktur für zuverlässige dateikopieoperation für nicht-flüchtige speicher
DE102018123194A1 (de) Nichtflüchtige Speichervorrichtungen, Speichersysteme und Verfahren zum Betreiben nichtflüchtiger Speichervorrichtungen
DE112016004148T5 (de) Systeme und Verfahren zur Befehlsautorisierung
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102017104257A1 (de) Auf Zellenstrom basierende Bitleitungsspannung
DE102013108491A1 (de) Nichtflüchtige Speichervorrichtung und Betriebsverfahren mit variablen Speicherzellenzustandsdefinitionen
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE102013108456A1 (de) Nichtflüchtige Speichervorrichtung und Programmierverfahren
DE102020119694A1 (de) Verfahren zur Steuerung einer Operation einer nichtflüchtigen Speichervorrichtung unter Verwendung von Maschinenlernen und Speichersystem
DE112016002631T5 (de) Speicherfunktionszustandsüberwachung
DE112020004922T5 (de) Speicherungsvorrichtung mit erhöhter beständigkeit
DE102019124668A1 (de) Transistorschwellenspannungshaltung in 3d-speicher
DE102018105277A1 (de) Auf Hamming-Abstand basierende Binärdarstellungen von Zahlen
DE102018123961A1 (de) Gruppen-leseaktualisierung
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE102019135863A1 (de) Speichercontroller, Speichervorrichtung und Speichersystem mit verbesserten Schwellenspannungs-Verteilungseigenschaften und ähnliche Betriebsverfahren
DE112015004531T5 (de) Latch-Initialisierung für eine Datenspeichervorrichtung
DE102020107504A1 (de) Nichtflüchtiges speicher-array, das zur leistungsverbesserung von beiden seiten angesteuert wird
DE102021006246A1 (de) Doppelt verschachtelte Programmierung einer Speichervorrichtung in einem Speicher-Untersystem
DE102017120971A1 (de) Pipelineverzögerungsdetektion während des Decodierens durch eine Datenspeichereinrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication