DE102020120212A1 - Netzwerk zur automatischen Programmierspannungsauswahl - Google Patents

Netzwerk zur automatischen Programmierspannungsauswahl Download PDF

Info

Publication number
DE102020120212A1
DE102020120212A1 DE102020120212.1A DE102020120212A DE102020120212A1 DE 102020120212 A1 DE102020120212 A1 DE 102020120212A1 DE 102020120212 A DE102020120212 A DE 102020120212A DE 102020120212 A1 DE102020120212 A1 DE 102020120212A1
Authority
DE
Germany
Prior art keywords
parameters
embedding
memory cells
information bits
memory
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
DE102020120212.1A
Other languages
English (en)
Inventor
Amit Berman
Evgeny BLAICHMAN
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 DE102020120212A1 publication Critical patent/DE102020120212A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • 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/26Sensing or reading circuits; Data output 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Probability & Statistics with Applications (AREA)
  • Read Only Memory (AREA)

Abstract

Es werden ein Verfahren, eine Vorrichtung, ein nicht-transitorisches computerlesbares Medium und ein System zum Auswählen von Programmierspannungen für eine Speichervorrichtung beschrieben. Ausführungsformen des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems können Folgendes ausführen: Abbilden eines Satzes Informationsbits auf Spannungspegel einer oder mehrerer Speicherzellen auf der Grundlage mehrerer Einbettungsparameter, Programmieren des Satzes Informationsbits in die eine oder die mehreren Speicherzellen auf der Grundlage des Abbildens, Detektieren der Spannungspegel der einen oder der mehreren Speicherzellen, um einen oder mehrere detektierte Spannungspegel zu generieren, und Identifizieren eines Satzes vorhergesagter Informationsbits auf der Grundlage des einen oder der mehreren detektierten Spannungspegel unter Verwendung eines neuronalen Netzes, das mehrere Netzparameter umfasst, wobei die Netzparameter zusammen mit den Einbettungsparametern trainiert werden.

Description

  • HINTERGRUND
  • Die folgenden Ausführungen betreffen allgemein Speichervorrichtungen und betreffen speziell die Auswahl von Programmierspannungen für eine Speichervorrichtung.
  • Speichervorrichtungen sind häufig verwendete elektronische Komponenten zum Speichern von Daten. NAND-Flash-Speichervorrichtungen erlauben das Speichern mehrerer Datenbits in jeder Speicherzelle, was zu Verbesserungen bei den Herstellungskosten und der Leistung führt. Eine Speicherzelle, in der mehrere Datenbits gespeichert sind, kann als Mehrebenen-Speicherzelle bezeichnet werden. Eine Mehrebenen-Speicherzelle unterteilt einen Schwellenspannungsbereich einer Speicherzelle in mehrere Spannungszustände, und die in die Speicherzelle geschriebenen Datenwerte werden unter Verwendung der Spannungspegel der Speicherzelle extrahiert.
  • Die Spannungspegel, die zum Programmieren der Speicherzellen verwendet werden, können auf der Grundlage theoretischer Überlegungen manuell bestimmt werden. Die manuelle Auswahl von Spannungspegeln erbringt jedoch keine optimalen Spannungspegel, um Lesefehler zu minimieren. Daher besteht auf diesem technischen Gebiet Bedarf an verbesserten Systemen zum Bestimmen von Spannungspegeln für die Programmierung von Daten in Speicherzellen.
  • KURZDARSTELLUNG
  • Es werden ein Verfahren, eine Vorrichtung, ein nicht-transitorisches computerlesbares Medium und ein System zum Auswählen von Programmierspannungen für eine Speichervorrichtung beschrieben. Ausführungsformen des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems können umfassen: Programmieren eines Satzes Informationsbits in eine oder mehrere Speicherzellen unter Verwendung einer Neuronalen-Netz-Einbettung auf der Basis mehrerer Einbettungsparameter; Bestimmen eines Satzes vorhergesagter Informationsbits auf der Basis von Spannungspegeln der Speicherzellen unter Verwendung eines neuronalen Netzes, das mehrere Netzparameter umfasst, die zusammen mit Einbettungsparametern trainiert werden; und Lesen der Informationsbits aus der Speichervorrichtung auf der Basis des Satzes vorhergesagter Informationsbits.
  • Es werden ein Verfahren, eine Vorrichtung, ein nicht-transitorisches computerlesbares Medium und ein System zum Auswählen von Programmierspannungen für eine Speichervorrichtung beschrieben. Ausführungsformen des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems können Folgendes ausführen: Initialisieren mehrerer Einbettungsparameter und eines Satzes Netzparameter, Abbilden eines Satzes Informationsbits auf Spannungspegel einer oder mehrerer Speicherzellen auf der Grundlage der Einbettungsparameter, Identifizieren eines Satzes vorhergesagter Informationsbits unter Verwendung eines künstlichen neuronalen Netzes (Artificial Neural Network, ANN) auf der Grundlage der Netzparameter und Aktualisieren der Einbettungsparameter und der Netzparameter mindestens teilweise auf der Grundlage des Satzes vorhergesagter Informationsbits.
  • Es werden eine Vorrichtung, ein System und ein Verfahren zum Auswählen von Programmierspannungen für eine Speichervorrichtung beschrieben. Ausführungsformen der Vorrichtung, des Systems und des Verfahrens können umfassen: mehrere Speicherzellen, eine Programmierkomponente, die eine Einbettungsschicht auf der Grundlage mehrerer Einbettungsparameter umfasst, und eine Lesekomponente, die ein neuronales Netz auf der Grundlage mehrerer Netzparameter umfasst, wobei die Netzparameter zusammen mit dem Einbettungsparameter trainiert werden.
  • Figurenliste
    • 1 zeigt ein Beispiel einer Implementierung eines Datenverarbeitungssystems mit einem Speichersystem gemäß Aspekten der vorliegenden Offenbarung.
    • 2 zeigt ein Beispiel des Speichersystems von 1 gemäß Aspekten der vorliegenden Offenbarung.
    • 3 zeigt ein Beispiel der nicht-flüchtigen Speichervorrichtung von 1 gemäß Aspekten der vorliegenden Offenbarung.
    • 4 zeigt ein Beispiel des Speicherzellenarrays von 2 gemäß Aspekten der vorliegenden Offenbarung.
    • 5 zeigt ein Beispiel eines Speicherblocks des Speicherzellenarrays von 4 gemäß Aspekten der vorliegenden Offenbarung.
    • 6 zeigt ein Beispiel einer Spannungspegelkonstellation gemäß Aspekten der vorliegenden Offenbarung.
    • 7 zeigt ein Beispiel eines lernbasierten Speichersystems gemäß Aspekten der vorliegenden Offenbarung.
    • 8 zeigt ein Beispiel eines Programmiernetzes gemäß Aspekten der vorliegenden Offenbarung.
    • 9 zeigt ein Beispiel eines Lesenetzes gemäß Aspekten der vorliegenden Offenbarung.
    • 10 zeigt ein Beispiel eines Prozesses zum Betreiben einer Speichervorrichtung gemäß Aspekten der vorliegenden Offenbarung.
    • 11 zeigt ein Beispiel eines Prozesses zum Programmieren von Informationen in eine Speichervorrichtung gemäß Aspekten der vorliegenden Offenbarung.
    • 12 zeigt ein Beispiel eines Prozesses zum Trainieren eines ANN zum Auswählen von Programmierspannungen für eine Speichervorrichtung gemäß Aspekten der vorliegenden Offenbarung.
  • DETAILLIERTE BESCHREIBUNG
  • Die vorliegende Offenbarung betrifft Systeme und Verfahren zum Programmieren und Lesen von Daten aus einer Speichervorrichtung und betrifft insbesondere das Auswählen von Programmierspannungen für eine Speichervorrichtung. Bestimmte Ausführungsformen der Offenbarung betreffen speziell NAND-Flash-Speichervorrichtungen, die in der Lage sind, 5 oder 6 Bit Daten in jeder Speicherzelle zu speichern.
  • Speichervorrichtungen sind häufig verwendete elektronische Komponenten zum Speichern von Daten. NAND-Flash-Speichervorrichtungen erlauben das Speichern mehrerer Datenbits in jeder Speicherzelle, was zu Verbesserungen bei den Herstellungskosten und der Leistung führt. Eine Speicherzelle, in der mehrere Datenbits gespeichert sind, kann als Mehrebenen-Speicherzelle bezeichnet werden. Eine Mehrebenen-Speicherzelle unterteilt einen Schwellenspannungsbereich einer Speicherzelle in mehrere Spannungszustände, und die in die Speicherzelle geschriebenen Datenwerte werden unter Verwendung der Spannungspegel der Speicherzelle extrahiert.
  • Um die Informationen aus einer Speichervorrichtung zu lesen, wird die Spannung jeder Zelle gemessen, und es wird auf den Spannungspegel, der in der Zelle gespeichert wurde, geschlossen. Die Bits können dann wiederhergestellt werden. Es kann ein Kompromiss zwischen der Anzahl der Spannungspegel und der Zuverlässigkeit des Speichers getroffen werden. Je größer die Anzahl der Bits pro Zelle ist, desto mehr Informationen können in der Vorrichtung gespeichert werden, wobei sich in jeder Zelle mehr Bits befinden. Alternativ können die Spannungen, die verschiedene Ebenen repräsentieren, dichter aneinander gepackt werden, da innerhalb desselben Dynamikbereichs eine größere Anzahl unterscheidbarer Spannungen verwendet wird. Infolge dessen hat das Rauschen bei der Zellenprogrammierung oder beim Lesen der Zelle eine größere Chance, die Spannung einer Ebene in eine andere Spannung zu ändern, die eine andere Ebene repräsentiert, was zu einem Fehler beim Lesen der Zelle führt.
  • Es gibt mehrere Quellen von Rauschen in einer Speichervorrichtung, die zu einem fehlerhaften Lesen der Informationen führen können, wie zum Beispiel Schreibrauschen, Interferenzrauschen, Alterung und Lesebetrieb. Schreibrauschen ist die Spannung einer Zelle unmittelbar nach der Programmierung; sie unterscheidet sich aufgrund eines Programmiervorgangs von der vorgesehenen Spannung. Interferenzrauschen ist eine Funktion der Spannung einer Zelle, die sich infolge der Programmierung einer anderen Nachbarzelle ändert. Die Programmierung von Zellen verursacht eine Störung, die sich auf andere Zellen auswirkt. Altern ist, wenn das Rauschen zunimmt, je öfter eine Vorrichtung beschrieben und gelesen wird. Außerdem erzeugt die Zelle umso mehr Rauschen, je mehr Zeit zwischen dem Programmieren einer Zelle vergeht. Auch der Vorgang des Lesens einer Zelle kann Rauschen und Störungen verursachen.
  • Die Speichervorrichtung kann als ein Kanal bezeichnet werden. Der Begriff Kanal wird verwendet, da ein Schreib- und/oder Sendevorgang zu dem, und/oder durch den, Kanal gehen kann. Wenn die Informationen gelesen werden, so werden die Informationen je nach den Eigenschaften des Mediums durch Rauschen verfälscht.
  • Die Speicherprogrammierung ist ein komplexer Prozess, der auf dem Anlegen einer Spannung an eine Speicherzelle basiert. Die Zellenspannung kann jedoch durch Variablen wie zum Beispiel dem momentanen Spannungspegel, der Impulsleistung und Interferenzen zwischen den Zellen beeinflusst werden. Die Zellenspannung kann auch durch gehemmte Zellenunterbrechung, Kopplung zwischen Wortleitungen (WL) und Zellenretention beeinflusst werden. Zusätzlich kann das Ergebnis des Schreibens in eine NAND-Vorrichtung stochastisch sein. Zum Beispiel können Daten auch verrauscht sein, was zu Problemen bei der Beobachtung führt.
  • Herkömmliche Ansätze zum Auswählen von Programmierspannungen verwenden manuelle Optimierungstechniken wie zum Beispiel Versuch-und-Irrtum. Diese manuellen Prozesse erbringen keine optimale Leistung und beziehen möglicherweise keine statistischen Daten ein. Außerdem werden Erfolgsmessgrößen, wie zum Beispiel Zielspannungen, für spezifische Anwendungen erstellt und sind möglicherweise nicht auf mehrere Anwendungen anwendbar. Darüber hinaus kann die manuelle Optimierung ressourcenintensiv sein und kann bei verschiedenen Messgrößen Kompromisse erfordern, damit andere Messgrößen schneller oder effizienter sein können.
  • Daher können Systeme und Verfahren der vorliegenden Offenbarung verwendet werden, um verbesserte Programmierspannungen einer Zelle zu finden. Bestimmte Verfahren zum Finden von Programmierspannungen einer Zelle verwenden ein lernbasiertes Speichersystem. Das lernbasierte Speichersystem umfasst ein Programmiernetz, einen NAND-Speicher (oder NAND-Kanal) und ein Lesenetz. Der NAND-Speicher kann mehrere Speicherzellen aufweisen, von denen jede unter Verwendung mehrerer unterschiedlicher Spannungspegel programmiert werden kann.
  • Ausführungsformen der vorliegenden Offenbarung können in einem Flash-Speicher-Controller verwendet werden. Darüber hinaus kann die vorliegende Offenbarung den derzeit verwendeten manuellen Optimierungsprozess in Bezug auf die Bit-FehlerRate übertreffen und hat im Vergleich zu manuellen Optimierungsprozessen den Vorteil einer schnellen Entwicklung.
  • Die vorliegende Offenbarung beschreibt ein Verfahren zum Finden einer optimierten Konstellation für die Modulation bei einer gegebenen Anzahl von Bits pro Zelle N und einer gegebenen Anzahl Anzahl von Zellen K. Das Verfahren kann automatisch und datenbasiert sein, wobei Daten aus dem realen NAND-Kanals verwendet werden und so eine Konstellation gefunden wird, die speziell für den Kanal gut geeignet ist. Ausführungsformen der vorliegenden Offenbarung können eine Konstellation finden, die für eine gegebene Anzahl von Bits pro Zelle eine geringe Anzahl von Fehlern beim Lesen erbringt.
  • Die vorliegende Offenbarung nutzt maschinelles Lernen, um die Konstellation zu finden. Der Trainingsprozess kann offline, während der Produktentwicklung, nicht für jede spezifische NAND-Chip-Instanz durchgeführt werden. Die Ergebnisse des Trainingsprozesses können dann auf alle Instanzen von NAND-Chips mit ähnlichen Spezifikationen angewendet werden.
  • Die Maschinenlerneinstellung besteht aus einem Programmiernetzmodul, einem Lesenetz und einem NAND-Kanal. Das Programmiernetz nimmt eine Ebene als Eingang und gibt die Spannungssequenz für die Ebene aus. Das Programmiernetz ist die Abbildung, die durch die Konstellation durchgeführt wird. Das Programmiernetz ermöglicht eine kontinuierliche Optimierung von Spannungen. Das Lesenetz sagt die ursprünglichen Informationen auf der Grundlage der detektierten Spannungspegel der Speicherzellen voraus.
  • Beispielhafte Ausführungsformen des vorliegenden erfinderischen Konzepts werden im Folgenden unter Bezug auf die begleitenden Zeichnungen ausführlicher beschrieben. Gleiche Bezugszeichen können sich in den beiliegenden Zeichnungen durchweg auf gleiche Elemente beziehen.
  • Es versteht sich, dass die Begriffe „erster“, „zweiter“, „dritter“ usw. im vorliegenden Text verwendet werden, um ein Element von einem anderen zu unterscheiden, und die Elemente werden durch diese Begriffe nicht eingeschränkt. So kann ein „erstes“ Element in einer beispielhaften Ausführungsform in einer anderen beispielhaften Ausführungsform als ein „zweites“ Element beschrieben werden.
  • Es versteht sich, dass Beschreibungen von Merkmalen oder Aspekten innerhalb jeder beispielhaften Ausführungsform in der Regel auch als für andere ähnliche Merkmale oder Aspekte in anderen beispielhaften Ausführungsformen verfügbar anzusehen sind, sofern der Kontext nicht eindeutig ein anderes Verständnis verlangt.
  • Im Sinne des vorliegenden Textes sollen die Einzahlformen „ein/einer/eine“ und „der/die/das“ auch die Mehrzahlformen umfassen, sofern der Kontext nicht eindeutig etwas anderes verlangt.
  • Wenn im vorliegenden Text ein einzelner Wert als „ungefähr gleich“ einem anderen Wert oder „im Wesentlichen gleich“ einem anderen Wert beschrieben wird, so bedeutet das, dass die Werte innerhalb eines Messfehlers einander gleich sind, oder, wenn sie messbar ungleich sind, in ihrem Wert nahe genug beieinander liegen, um einander funktional gleich zu sein, so wie es dem Verständnis des Durchschnittsfachmanns entspricht. Zum Beispiel umfasst der Begriff „ungefähr“ im Sinne des vorliegenden Textes den angegebenen Wert und meint „innerhalb eines akzeptablen Abweichungsbereichs für den bestimmten Wert“, so wie es der Durchschnittsfachmann unter Berücksichtigung der betreffenden Messung und des mit der Messung der bestimmten Größe verbundenen Fehlers (das heißt der Grenzen des Messsystems) bestimmt. Zum Beispiel kann „ungefähr“ „innerhalb einer oder mehrerer Standardabweichungen“ bedeuten, so wie es dem Verständnis des Durchschnittsfachmanns entspricht. Des Weiteren versteht es sich, dass zwar im vorliegenden Text Parameter als „ungefähr“ von einem bestimmten Wert beschrieben sein können, dass aber gemäß beispielhaften Ausführungsformen der Parameter auch genau der bestimmte Wert oder ungefähr der bestimmte Wert - innerhalb eines Messfehlers - sein kann, so wie es dem Verständnis des Durchschnittsfachmanns entspricht.
  • Beispielhaftes Speichersystem
  • 1 ist ein Blockdiagramm, das eine Implementierung eines Datenverarbeitungssystems, das ein Speichersystem umfasst, gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts veranschaulicht.
  • Wie in 1 zu sehen, kann das Datenverarbeitungssystem 10 einen Host 100 und ein Speichersystem 200 umfassen. Das in 1 gezeigte Speichersystem 200 kann in verschiedenen Systemen verwendet werden, die eine Datenverarbeitungsfunktion umfassen. Die verschiedenen Systeme können verschiedene Vorrichtungen sein, einschließlich beispielsweise mobile Vorrichtungen, wie zum Beispiel ein Smartphone oder ein Tablet-Computer. Die verschiedenen Vorrichtungen sind jedoch nicht darauf beschränkt.
  • Das Speichersystem 200 kann verschiedene Arten von Speichervorrichtungen umfassen. Im vorliegenden Text werden beispielhafte Ausführungsformen des erfinderischen Konzepts so beschrieben, dass sie eine Speichervorrichtung umfassen, die ein nicht-flüchtiger Speicher ist. Die beispielhaften Ausführungsformen sind jedoch nicht darauf beschränkt. Zum Beispiel kann das Speichersystem 200 eine Speichervorrichtung umfassen, die ein flüchtiger Speicher ist.
  • Gemäß beispielhaften Ausführungsformen kann das Speichersystem 200 eine nicht-flüchtige Speichervorrichtung umfassen, wie zum Beispiel einen Nurlesespeicher (ROM), eine Magnet-Disk, eine optische Disk, einen Flash-Speicher usw. Der Flash-Speicher kann ein Speicher sein, der Daten entsprechend einer Änderung der Schwellenspannung 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 werden, die eine nicht-flüchtige Speichervorrichtung umfasst, wie zum Beispiel eine eingebettete Multimediakarte (eMMC), eine Secure-Digital (SD)-Karte, eine Micro-SD-Karte oder einen Universal-Flash-Speicher (UFS), oder das Speichersystem 200 kann zum Beispiel unter Verwendung einer SSD implementiert werden, die eine nicht-flüchtige Speichervorrichtung umfassend. Im Folgenden werden die Ausgestaltung und der Betrieb des Speichersystems 200 unter der Annahme beschrieben, dass das Speichersystem 200 ein nicht-flüchtiges Speichersystem ist. Das Speichersystem 200 ist jedoch nicht darauf beschränkt. Der Host 100 kann zum Beispiel ein System-on-Chip (SoC)-Anwendungsprozessor (AP) sein, der zum Beispiel in einer mobilen Vorrichtung montiert ist, oder kann eine zentrale Verarbeitungseinheit (CPU) sein, die in einem Computersystem enthalten ist.
  • Wie oben beschrieben, kann der Host 100 einen AP 110 umfassen. Der AP 110 kann verschiedene Blöcke mit geistigem Eigentum (Intellectual Property, IP) umfassen. Zum Beispiel kann der AP 110 einen Speichervorrichtungstreiber 111 umfassen, der das Speichersystem 200 steuert. Der Host 100 kann mit dem Speichersystem 200 kommunizieren, um einen auf eine Speicheroperation bezogenen Befehl zu senden und einen Bestätigungsbefehl als Antwort auf den gesendeten Befehl zu empfangen. Der Host 100 kann auch mit dem Speichersystem 200 in Bezug auf eine Informationstabelle kommunizieren, die sich auf die Speicheroperation bezieht.
  • Das Speichersystem 200 kann zum Beispiel einen Speicher-Controller 210 und eine Speichervorrichtung 220 umfassen. Der Speicher-Controller 210 kann einen Befehl in Bezug auf eine Speicheroperation von dem Host 100 empfangen, einen internen Befehl und ein internes Taktsignal unter Verwendung des empfangenen Befehls generieren und den internen Befehl und das interne Taktsignal in die Speichervorrichtung 220 einspeisen. Die Speichervorrichtung 220 kann in Reaktion auf den internen Befehl Schreibdaten in einem Speicherzellenarray speichern oder kann in Reaktion auf den internen Befehl Lesedaten in den Speicher-Controller 210 einspeisen.
  • Die Speichervorrichtung 220 umfasst ein Speicherzellenarray, in dem Daten gespeichert bleiben, selbst wenn die Speichervorrichtung 220 nicht eingeschaltet ist. Das Speicherzellenarray 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 Phasenwechselspeicher (PCM) umfassen. Wenn zum Beispiel das Speicherzellenarray einen NAND-Flash-Speicher umfasst, so kann das Speicherzellenarray mehrere Blöcke und mehrere 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 Speicherzellenarray enthalten sind, ist in 4 gezeigt.
  • 1 ist ein Blockdiagramm, das das Speichersystem 200 von 1 gemäß einer beispielhaften Ausführungsform des erfindungsgemäßen Konzepts veranschaulicht.
  • Wie in 2 zu sehen, umfasst das Speichersystem 200 die Speichervorrichtung 220 und den Speicher-Controller 210. Der Speicher-Controller 210 kann hier auch als Controller-Schaltung bezeichnet werden. Die Speichervorrichtung 220 kann unter der Steuerung des Speicher-Controllers 210 eine Schreiboperation, eine Leseoperation oder eine Löschoperation durchführen.
  • Der Speicher-Controller 210 kann die Speichervorrichtung 220 in Abhängigkeit von einer von dem Host 100 empfangenen Anforderung oder einem intern festgelegten Zeitplan steuern. Der Speicher-Controller 210 kann einen Controller-Kern 211, einen internen Speicher 214, einen Hostschnittstellenblock 215 und einen Speicherschnittstellenblock 216 umfassen. Der Speicher-Controller 210 kann auch einen Vorrichtungsinformationsspeicher 217 umfassen, der dafür eingerichtet ist, erste Vorrichtungsinformationen DIl an den Hostschnittstellenblock 215 zu übermitteln und zweite Vorrichtungsinformationen DI2 an den Controller-Kern 211 zu übermitteln.
  • Der Controller-Kern 211 kann einen Speichersteuerungskern 212 und einen Maschinenlernkern 213 umfassen, und jeder dieser Kerne kann durch einen oder mehrere Prozessoren implementiert werden. Der Speichersteuerungskern 212 kann die Speichervorrichtung 220 in Abhängigkeit von einer von dem Host 100 empfangenen Anforderung oder einem intern festgelegten Zeitplan steuern und darauf zugreifen. Der Speichersteuerungskern 212 kann verschiedene Metadaten und Codes verwalten und ausführen, die zur Verwalten oder Betreiben des Speichersystems 200 verwendet werden.
  • Der Maschinenlernkern 213 kann verwendet werden, um Trainieren und Inferenzieren eines neuronalen Netzwerks durchzuführen, das für die Durchführung von Rauschunterdrückung in der Speichervorrichtung 220 ausgelegt ist, wie weiter unten noch näher beschrieben wird.
  • Der interne Speicher 214 kann zum Beispiel genutzt werden als: ein Systemspeicher, der durch den Controller-Kern 211 genutzt wird, ein Cache-Speicher, der Daten der Speichervorrichtung 220 speichert, oder ein Pufferspeicher, der Daten zwischen dem Host 100 und der Speichervorrichtung 220 zwischenspeichert. Der interne Speicher 214 kann eine Abbildungstabelle (Mapping Table) MT speichern, die eine Beziehung zwischen logischen Adressen, die dem Speichersystem 200 zugewiesen sind, und physischen Adressen der Speichervorrichtung 220 angibt. Der interne Speicher 214 kann zum Beispiel ein DRAM oder ein SRAM sein.
  • In einer beispielhaften Ausführungsform kann ein neuronales Netz, wie zum Beispiel das mit Bezug auf 9 beschriebene neuronale Netz, in einem Computerprogramm enthalten sein, das in dem internen Speicher 214 des Speicher-Controllers 210 oder in der Speichervorrichtung 220 gespeichert ist. Das Computerprogramm, welches das neuronale Netz umfasst, kann durch den Maschinenlernkern 213 ausgeführt werden, um die in der Speichervorrichtung 220 gespeicherten Daten zu entrauschen. Somit kann das Speichersystem 200 gemäß beispielhaften Ausführungsformen die in der Speichervorrichtung 220 gespeicherten Daten während einer normalen Leseoperation der Speichervorrichtung 220 entrauschen. Das heißt, nachdem die Herstellung des Speichersystems 200 abgeschlossen ist, während des normalen Betriebes des Speichersystems 200, und insbesondere während einer normalen Leseoperation des Speichersystems 200, bei der Daten aus der Speichervorrichtung 220 gelesen werden, können die in der Speichervorrichtung 220 gespeicherten Daten, die gelesen werden, unter Verwendung des neuronalen Netzes, das lokal in dem Speichersystem 200 gespeichert und ausgeführt wird, entrauscht werden und die entrauschten Daten können aus der Speichervorrichtung 220 ausgelesen werden.
  • Der Hostschnittstellenblock 215 kann eine Komponente für die Kommunikation mit dem Host 100 umfassen, wie zum Beispiel einen physischen Block. Der Speicherschnittstellenblock 216 kann eine Komponente für die Kommunikation mit der Speichervorrichtung 220 umfassen, wie zum Beispiel einen physischen Block.
  • Im Folgenden wird der Betrieb des Speichersystems 200 im zeitlichen Verlauf beschrieben. Wenn das Speichersystem 200 mit Strom versorgt wird, so kann das Speichersystem 200 eine Initialisierung mit dem Host 100 durchführen.
  • Der Hostschnittstellenblock 215 kann an den Speichersteuerungskern 212 eine erste von dem Host 100 empfangene Anforderung REQ1 übermitteln. Die erste Anforderung REQ1 kann einen Befehl (zum Beispiel einen Lesebefehl oder einen Schreibbefehl) und eine logische Adresse umfassen. Der Speichersteuerungskern 212 kann die erste Anforderung REQ1 in eine zweite Anforderung REQ2 übersetzen, die für die Speichervorrichtung 220 geeignet ist.
  • Zum Beispiel kann der Speichersteuerungskern 212 ein Format des Befehls übersetzen. Der Speichersteuerungskern 212 kann Adressinformationen AI unter Bezug auf die in dem internen Speicher 214 gespeicherte Abbildungstabelle MT erhalten. Der Speichersteuerungskern 212 kann eine logische Adresse unter Verwendung der Adressinformationen AI in eine physische Adresse der Speichervorrichtung 220 übersetzen. Der Speichersteuerungskern 212 kann die zweite Anforderung REQ2, die für die Speichervorrichtung 220 geeignet ist, an den Speicherschnittstellenblock 216 übermitteln.
  • Der Speicherschnittstellenblock 216 kann die zweite Anforderung REQ2 von dem Speichersteuerungskern 212 in einer Warteschlange registrieren. Der Speicherschnittstellenblock 216 kann eine Anforderung, die zuerst in der Warteschlange registriert wird, als eine dritte Anforderung REQ3 an die Speichervorrichtung 220 senden.
  • Wenn die erste Anforderung REQ1 eine Schreibanforderung ist, so kann der Hostschnittstellenblock 215 von dem Host 100 empfangene Daten in den internen Speicher 214 schreiben. Wenn die dritte Anforderung REQ3 eine Schreibanforderung ist, so kann der Speicherschnittstellenblock 216 Daten, die in dem internen Speicher 214 gespeichert sind, an die Speichervorrichtung 220 senden.
  • Wenn die Daten vollständig geschrieben wurden, kann die Speichervorrichtung 220 eine dritte Antwort RESP3 an den Speicherschnittstellenblock 216 senden. In Reaktion auf die dritte Antwort RESP3 kann der Speicherschnittstellenblock 216 an den Speichersteuerungskern 212 eine zweite Antwort RESP2 übermitteln, die anzeigt, dass die Daten vollständig geschrieben wurden.
  • Nachdem die Daten in dem internen Speicher 214 gespeichert wurden oder nachdem die zweite Antwort RESP2 empfangen wurde, kann der Speichersteuerungskern 212 eine erste Antwort RESP1, die anzeigt, dass die Anforderung abgeschlossen ist, über den Hostschnittstellenblock 215 an den Host 100 senden.
  • Wenn die erste Anforderung REQ1 eine Leseanforderung ist, so kann die Leseanforderung durch die zweite Anforderung REQ2 und die dritte Anforderung REQ3 an die Speichervorrichtung 220 gesendet werden. Der Speicherschnittstellenblock 216 kann die von der Speichervorrichtung 220 empfangenen Daten in dem internen Speicher 214 speichern. Wenn die Daten vollständig gesendet wurden, so kann die Speichervorrichtung 220 die dritte Antwort RESP3 an den Speicherschnittstellenblock 216 senden.
  • Wenn die dritte Antwort RESP3 empfangen wird, so kann der Speicherschnittstellenblock 216 an den Speichersteuerungskern 212 die zweite Antwort RESP2 übermitteln, die anzeigt, dass die Daten vollständig gespeichert wurden. Wenn die zweite Antwort RESP2 empfangen wird, so kann der Speichersteuerungskern 212 die erste Antwort RESP1 über den Hostschnittstellenblock 215 an den Host 100 senden.
  • Der Hostschnittstellenblock 215 kann die in dem internen Speicher 214 gespeicherten Daten an den Host 100 senden. In einer beispielhaften Ausführungsform kann für den Fall, dass Daten, die der ersten Anforderung REQ1 entsprechen, in dem internen Speicher 214 gespeichert sind, das Senden der zweiten Anforderung REQ2 und der dritten Anforderung REQ3 entfallen.
  • Die Speichervorrichtung 220 kann auch erste Serial Peripheral Interface-Informationen SPI1 an den Speicherschnittstellenblock 216 senden. Der Speicherschnittstellenblock 216 kann zweite Serial Peripheral Interface-Informationen SPI2 an den Controller-Kern 211 senden.
  • 2 ist ein detailliertes Blockdiagramm der nicht-flüchtigen Speichervorrichtung 220 von 1 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts. Wie in 3 gezeigt, kann die Speichervorrichtung 220 zum Beispiel ein Speicherzellenarray 221, eine Steuerungslogik 222, eine Spannungsgenerierungseinheit 223, einen Zeilendecodierer 224 und einen Seitenpuffer 225 umfassen.
  • Das Speicherzellenarray 221 kann mit einer oder mehreren String-Auswahlleitungen (String Select Lines) SSL, mehreren Wortleitungen WL, einer oder mehreren Erdungsauswahlleitungen (Ground Select Lines) GSL und mehreren Bitleitungen BL verbunden sein. Das Speicherzellenarray 221 kann mehrere Speicherzellen umfassen, die an Schnittpunkten zwischen den mehreren Wortleitungen WL und den mehreren Bitleitungen BL angeordnet sind.
  • Die Steuerungslogik 222 kann einen Befehl CMD (zum Beispiel einen internen Befehl) und eine Adresse ADD von dem Speicher-Controller 210 empfangen und ein Steuersignal CTRL zum Steuern verschiedener Funktionsblöcke innerhalb der Speichervorrichtung 220 von dem Speicher-Controller 210 empfangen. Die Steuerungslogik 222 kann auf der Grundlage des Befehls CMD, der Adresse ADD und des Steuersignals CTRL verschiedene Steuersignale zum Schreiben von Daten in das Speicherzellenarray 221 oder zum Lesen von Daten aus dem Speicherzellenarray 221 ausgeben. Auf diese Weise kann die Steuerungslogik 222 den Gesamtbetrieb der Speichervorrichtung 220 steuern.
  • Die verschiedenen durch die Steuerungslogik 222 ausgegebenen Steuersignale können in die Spannungsgenerierungseinheit 223, den Zeilendecodierer 224 und den Seitenpuffer 225 eingespeist werden. Zum Beispiel kann die Steuerungslogik 222 an die Spannungsgenerierungseinheit 223 ein Spannungssteuersignal CTRL_vol übermitteln, an den Zeilendecodierer 224 eine Zeilenadresse X-ADD übermitteln und an den Seitenpuffer 225 eine Spaltenadresse Y-ADD übermitteln.
  • Die Spannungsgenerierungseinheit 223 kann auf der Basis des Spannungssteuerungssignals CTRL_vol verschiedene Spannungen für die Durchführung von Programmierungs-, Lese- und Löschoperationen in der Speicherzellenanordnung 221 generieren. Zum Beispiel kann die Spannungsgenerierungseinheit 223 eine erste Ansteuerspannung VWL zum Ansteuern der mehreren Wortleitungen WL, eine zweite Ansteuerspannung VSSL zum Ansteuern der mehreren String-Auswahlleitungen SSL und eine dritte Ansteuerspannung VGSL zum Ansteuern der mehreren Erdungsauswahlleitungen GSL generieren. In diesem Fall kann die erste Ansteuerspannung VWL eine Programmierspannung (zum Beispiel eine Schreibspannung), eine Lesespannung, eine Löschspannung, eine Durchlassspannung oder eine Programmierverifizierungsspannung sein. Darüber hinaus kann die zweite Ansteuerspannung VSSL eine String-Auswahlspannung sein (zum Beispiel eine Ein-Spannung oder eine Aus-Spannung). Außerdem kann die dritte Ansteuerspannung VGSL eine Erdungsauswahlspannung sein (zum Beispiel eine Ein-Spannung oder eine Aus-Spannung).
  • Der Zeilendecodierer 224 kann über die mehreren Wortleitungen WL mit dem Speicherzellenarray 221 verbunden sein und kann einen Teil der mehreren Wortleitungen WL in Reaktion auf die von der Steuerungslogik 222 empfangene Zeilenadresse X-ADD aktivieren. Zum Beispiel kann der Zeilendecodierer 224 bei einer Leseoperation eine Lesespannung an eine ausgewählte Wortleitung und eine Durchlassspannung an nicht-ausgewählte Wortleitungen anlegen.
  • In einer Programmieroperation kann der Zeilendecodierer 224 eine Programmierspannung an eine ausgewählte Wortleitung und eine Durchlassspannung an nicht-ausgewählte Wortleitungen anlegen. In einer beispielhaften Ausführungsform kann der Zeilendecodierer 224 in mindestens einer von mehreren Programmierschleifen die Programmierspannung an die ausgewählte Wortleitung und eine zusätzlich ausgewählte Wortleitung anlegen.
  • Der Seitenpuffer 225 kann über die mehreren Bitleitungen BL mit dem Speicherzellenarray 221 verbunden sein. Zum Beispiel kann in einer Leseoperation der Seitenpuffer 225 als ein Leseverstärker arbeiten, der Daten ausgibt, die in dem Speicherzellenarray 221 gespeichert sind. Alternativ kann in einer Programmieroperation der Seitenpuffer 225 als ein Schreibtreiber arbeiten, der gewünschte Daten in das Speicherzellenarray 221 schreibt.
  • 4 und 5 veranschaulichen ein Beispiel, bei dem das Speichersystem 200 unter Verwendung eines dreidimensionalen Flash-Speichers implementiert wird. Der dreidimensionale Flash-Speicher kann dreidimensionale (zum Beispiel vertikale) NAND (zum Beispiel VNAND)-Speicherzellen umfassen. Eine Implementierung des Speicherzellenarrays 221, das dreidimensionale Speicherzellen umfasst, wird im Folgenden beschrieben. Jede der unten beschriebenen Speicherzellen kann eine NAND-Speicherzelle sein.
  • 3 ist ein Blockdiagramm des Speicherzellenarrays 221 von 2 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts.
  • Wie in 4 gezeigt, umfasst das Speicherzellenarray 221 gemäß einer beispielhaften Ausführungsform mehrere Speicherblöcke BLK1 bis BLKz. Jeder der Speicherblöcke BLK1 bis BLKz weist eine dreidimensionale Struktur (zum Beispiel eine vertikale Struktur) auf. Zum Beispiel kann jeder der Speicherblöcke BLK1 bis BLKz Strukturen umfassen, die sich in ersten bis dritten Richtungen erstrecken. Zum Beispiel kann jeder der Speicherblöcke BLK1 bis BLKz mehrere NAND-Strings umfassen, die sich in der zweiten Richtung erstrecken. Die mehreren NAND-Strings kann zum Beispiel in der ersten bis dritten Richtung angeordnet sein.
  • Jeder der NAND-Strings ist mit einer Bitleitung BL, einer String-Auswahlleitung SSL, einer Erdungsauswahlleitung GSL, Wortleitungen WL und einer gemeinsamen Source-Leitung (Common Source Line) CSL verbunden. Das heißt, jeder der Speicherblöcke BLK1 bis BLKz kann mit mehreren Bitleitungen BL, mehreren String-Auswahlleitungen SSL, mehreren Erdungsauswahlleitungen GSL, mehreren Wortleitungen WL und einer gemeinsamen Source-Leitung CSL verbunden sein. Die Speicherblöcke BLK1 bis BLKz werden im Folgenden unter Bezug auf 5 näher beschrieben.
  • 4 ist ein Schaltplan eines Speicherblocks BLKi gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts. 5 veranschaulicht ein Beispiel eines der Speicherblöcke BLK1 bis BLKz in dem Speicherzellenarray 221 von 4. Die in 5 gezeigte Anzahl von Zellen und Wortleitungen ist nur ein Beispiel, und es kann jede geeignete Anzahl von Speicherzellen und Wortleitungen verwendet werden.
  • Der Speicherblock BLKi kann mehrere Zellen-Strings CS11 bis CS41 und CS12 bis CS42 umfassen. Die mehreren Zellen-Strings CS11 bis CS41 und CS12 bis CS42 können in Spalten- und Zeilenrichtung angeordnet sein, um Spalten und Zeilen zu bilden. Jeder der Zellen-Strings CS11 bis CS41 und CS12 bis CS42 kann einen Erdungsauswahltransistor (Ground Select Transistor) GST, Speicherzellen MC1 bis MC6 und einen String-Auswahltransistor (String Select Transistor) SST umfassen. Der Erdungsauswahltransistor GST, die Speicherzellen MC1 bis MC6 und der String-Auswahltransistor SST, die in jedem der Zellen-Strings CS11 bis CS41 und CS12 bis CS42 enthalten sind, können in einer Höhenrichtung im Wesentlichen senkrecht zu einem Substrat gestapelt sein.
  • Die Spalten der mehreren Zellen-Strings CS11 bis CS41 und CS12 bis CS42 können jeweils mit verschiedenen String-Auswahlleitungen SSL1 bis SSL4 verbunden sein. Zum Beispiel können die String-Auswahltransistoren SST der Zellen-Strings CS11 und CS12 gemeinsam mit der String-Auswahlleitung SSL1 verbunden sein. Die String-Auswahltransistoren SST der Zellen-Strings CS21 und CS22 können gemeinsam mit der String-Auswahlleitung SSL2 verbunden sein. Die String-Auswahltransistoren SST der Zellen-Strings CS31 und CS32 können gemeinsam mit der String-Auswahlleitung SSL3 verbunden sein. Die String-Auswahltransistoren SST der Zellen-Strings CS41 und CS42 können gemeinsam mit der String-Auswahlleitung SSL4 verbunden sein.
  • Die Zeilen der mehreren Zellen-Strings CS11 bis CS41 und CS12 bis CS42 können mit verschiedenen Bitleitungen BL1 bzw. BL2 verbunden sein. Zum Beispiel können die String-Auswahltransistoren SST der Zellen-Strings CS11 bis CS41 gemeinsam mit der Bitleitung BL1 verbunden sein. Die String-Auswahltransistoren SST der Zellen-Strings CS12 bis CS42 können gemeinsam mit der Bitleitung BL2 verbunden sein.
  • Die Spalten der mehreren Zellen-Strings CS11 bis CS41 und CS12 bis CS42 können jeweils mit verschiedenen Erdungsauswahlleitungen GSL1 bis GSL4 verbunden sein. Zum Beispiel können die Erdungsauswahltransistoren GST der Zellen-Strings CS11 und CS12 gemeinsam mit der Erdungsauswahlleitung GSL1 verbunden sein. Die Erdungsauswahltransistoren GST der Zellen-Strings CS21 und CS22 können gemeinsam mit der Erdungsauswahlleitung GSL2 verbunden sein. Die Erdungsauswahltransistoren GST der Zellen-Strings CS31 und CS32 können gemeinsam mit der Erdungsauswahlleitung GSL3 verbunden sein. Die Erdungsauswahltransistoren GST der Zellen-Strings CS41 und CS42 können gemeinsam mit der Erdungsauswahlleitung GSL4 verbunden sein.
  • Die Speicherzellen, die auf derselben Höhe von dem Substrat (oder den Erdungsauswahltransistoren GST) angeordnet sind, können gemeinsam mit einer einzelnen Wortleitung verbunden sein, und die Speicherzellen, die auf verschiedenen Höhen von dem Substrat angeordnet sind, können jeweils mit verschiedenen Wortleitungen WL1 bis WL6 verbunden sein. Zum Beispiel können die Speicherzellen MC1 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 Erdungsauswahltransistoren GST der Zellen-Strings CS11 bis CS41 und CS12 bis CS42 können gemeinsam mit der gemeinsame Source-Leitung CSL verbunden sein.
  • Modulation
  • 5 zeigt ein Beispiel einer Spannungspegelkonstellation 600 gemäß Aspekten der vorliegenden Offenbarung. Die Spannungspegelkonstellation 600 stellt ein Beispiel eines Modulationsregimes dar, das für die Programmierung von Daten in eine Speichervorrichtung gemäß Ausführungsformen der vorliegenden Offenbarung verwendet werden kann. Das Modulationsregime kann das Gruppieren von Speicherzellen in Gruppen einer gegebenen Anzahl (mit K bezeichnet) und das Unterteilen der Spannungspegel jeder Zelle in diskrete Ebene (mit N bezeichnet) umfassen.
  • Die Spannungspegelkonstellation 600 umfasst zwei Zellen mit zwei Bits pro Zelle (bpc), das heißt N = 2 bpc und K = 2 Zellen. In anderen Beispielen kann jedoch auch eine andere Anzahl von Zellen und bpc verwendet werden. Jede Zelle wird als eine einzelne Achse dargestellt, und jedes Informationssymbol 605 wird durch ein Paar Spannungspegel (einer für jede Zelle) dargestellt. Die Anzahl der Zellen bestimmt die Anzahl der Achsen, und die bpc bestimmen die Anzahl der möglichen Spannungspegel.
  • Wenn zum Beispiel die bpc = N, so kann die Anzahl der Spannungspegel pro Zelle 2N sein. Es gibt also hier zwei Achsen mit jeweils 4 Ebenen, so dass die Spannungspegelkonstellation 600 16 Informationssymbole 605 umfasst. Es ist zu beachten, dass die Positionen der Informationssymbole 605 nicht perfekt aufeinander ausgerichtet sind. Das heißt, die Spannungspegel sind möglicherweise nicht gleichmäßig verteilt, und sie sind möglicherweise nicht für jede der Zellen gleich.
  • Somit kann die Modulation zum Schreiben von Informationen in eine NAND-Vorrichtung verwendet werden. Kurz gesagt, schreibt die Modulation N * K Bits pro K Zellen, anstatt N Bits pro Zelle zu schreiben. Um einen Stream von Bits in dem NAND zu speichern, wird der Stream aus Informationen in Gruppen der Größe (N * K) Bits gruppiert. Jede Gruppe kann 2N*K verschiedene Kombinationen von Werten aufweisen. Daher wird eine Abbildung von jeder Gruppe auf eine Zahl L im Bereich [0, (2N*K - 1)] durchgeführt.
  • In jeden nicht-überlappenden Satz von K Zellen wird eine einzelne Ebene geschrieben. Jede Ebene wird durch eine feste, zuvor festgelegte Abbildung mit einer eindeutigen Sequenz von K Spannungen verknüpft, wie zum Beispiel V1(L), V2(L),..., VK(L). Um also die Ebene L in den K Zellen zu speichern, werden die erste Zelle auf die Spannung V1(L), die zweite Zelle auf die Spannung V2(L) und so weiter gemeinsam programmiert.
  • Wenn die Konstellation richtig berechnet ist, so erhöht die Modulation die Zuverlässigkeit (Fehlerrate). Dies ist der Fall, wenn es Interferenzrauschen zwischen Zellen gibt, die gemeinsam programmiert werden. Im Bereich der Telekommunikation wird Modulation aus ähnlichen Gründen häufig eingesetzt. Ein geeignetes Modulationsregime kann auf der Grundlage des physischen Kanals und der Kommunikationserfordernisse ausgewählt werden.
  • Modulation kann die Speicherung einer nicht-ganzzahligen Anzahl von Bits pro Zelle gestatten. Zum Beispiel können wir 3 ½ Bits pro Zelle speichern, indem wir 7 Bits in 2 Zellen speichern. Mit anderen Worten: wenn wir 128 Ebenen (128 = 27) haben und wir diese über 2 Zellen schreiben, dann entspricht dies in Bezug auf die Bits pro Zelle 3 ½ Bits pro Zelle.
  • In einem anderen Beispiel kann eine nicht-ganzzahlige Anzahl von Bits pro Zelle mit der Einschränkung verwendet werden, dass 2(N*K) ganzzahlig ist, auch wenn N * K keine ganze Zahl ist. Zum Beispiel kann eine Vorrichtung auf K = 3 Zellen und 2(N*K) = 30000 basieren. In diesem Fall kann es eine Herausforderung sein, den Satz Informationsbits zu detektieren, da die Anzahl der Bits N * K ist, was keine ganze Zahl sein muss. Das heißt, N * K = log2(30000) ≅ 14.9. Daher kann dieser Fall (in dem N * K keine ganze Zahl ist) auf Umstände beschränkt sein, in denen zwei Bedingungen zutreffen. Und zwar 1) wird die Anzahl der Informationsbits durch Runden von N*K auf die nächste ganze Zahl erhalten (das heißt in diesem Beispiel 15), und 2) einige Kombinationen von Informationsbits sind in der Eingabe und Ausgabe nicht erlaubt. Dies bedeutet, dass es weniger als 215 Optionen für die Eingabe geben kann. Zum Beispiel könnte die Anzahl der erlaubten Kombinationen maximal 30000 betragen.
  • Gemäß verschiedenen Ausführungsformen kann das Auswählen der Programmierspannung einer Zelle durch einen Impulsamplitudenmodulations (Pulse Amplitude Modulation, PAM)-Algorithmus erfolgen, wobei codierte Bits in Gruppen mit einer Anzahl von Bits pro Zelle aufgeteilt werden. Zum Beispiel beträgt bei Triple-Level-Zellen (Triple Level Cells, TLC) die Anzahl der Bits pro Zelle 3. Jede Gruppe von Zellen wird als ein Symbol bezeichnet. Zum Beispiel ist ein Symbol mit Bits 010 gleich 2. Der Vth-Dynamikbereich ist in 2N Bits pro Zelle geteilt. Für N-Bits pro Zelle gleich 3Vth wird der Dynamikbereich in 8 Zielspannungen aufgeteilt. Jede Zielspannung wird mit Hilfe von Gray-Code auf ein Symbol abgebildet, wobei sich nur ein einziges Bit zwischen benachbarten Zielspannungen ändert. Wenn der Dynamikbereich zwischen -3 V und 4 V liegt, so kann zum Beispiel eine Modulation von -3 V gleich 111, -2 V gleich 110, -1 V gleich 100, 0 V gleich 101, 1 V gleich 001, 2 V gleich 000, 3 V gleich 010, nd 4 V gleich 011 verwendet werden.
  • Die beispielhafte Modulation entspricht einem Additive White Gaussian Noise (AWGN)-Kanal. In vielen Fällen sind jedoch der NAND-Kanal und der AWGN-Kanal nicht identisch, und die PAM-Modulation ist für den NAND-Kanal nicht unbedingt optimal. Alternativ kann eine heuristische Optimierung durchgeführt werden, um Zielspannungen mit erhöhter Leistung zu finden.
  • Lernbasierter Speicher
  • 6 zeigt ein Beispiel eines lernbasierten Speichersystems gemäß Aspekten der vorliegenden Offenbarung. Das gezeigte Beispiel umfasst das Programmiernetz 600, die Speichervorrichtung 605 und das Lesenetz 610.
  • In einigen Beispielen können das Programmiernetz 600 und das Lesenetz 610 ein künstliches neuronales Netz (ANN) umfassen. Ein ANN kann eine Hardware- oder Softwarekomponente sein, die eine Anzahl verbundener Knoten (auch als künstliche Neuronen bekannt) umfasst, die in etwa den Neuronen im menschlichen Gehirn entsprechen können. Jede Verbindung, oder Rand, kann ein Signal von einem Knoten zu einem anderen übertragen (wie die physischen Synapsen in einem Gehirn). Wenn ein Knoten ein Signal empfängt, so kann er das Signal verarbeiten und dann das verarbeitete Signal an andere verbundene Knoten übertragen. In einigen Fällen bestehen die Signale zwischen Knoten aus reellen Zahlen, und die Ausgabe jedes Knotens kann durch eine Funktion der Summe seiner Eingaben berechnet werden. Jedem Knoten und jedem Rand können eine oder mehrere Knotengewichte zugeordnet sein, die bestimmen, wie das Signal verarbeitet und übertragen wird.
  • Es ist zu beachten, dass diese Beschreibung eines ANN eher bildlich als wörtlich zu verstehen ist. Mit anderen Worten: sie beschreibt eine Möglichkeit, ein ANN zu interpretieren, aber nicht unbedingt, wie es implementiert wird. In einer Hardware- oder Software-Implementierung eines ANN wird das Senden und Empfangen von Signalen möglicherweise nicht wörtlich ausgeführt.
  • Während des Trainingsprozesses können diese Gewichte eingestellt werden, um die Genauigkeit des Ergebnisses zu verbessern (das heißt durch Minimierung einer Verlustfunktion, die in gewisser Weise der Differenz zwischen dem momentanen Ergebnis und dem Zielergebnis entspricht). Die Gewichtung eines Randes kann die Stärke des zwischen Knoten übertragenen Signals erhöhen oder verringern. In einigen Fällen können Knoten eine Schwelle aufweisen, unterhalb der ein Signal überhaupt nicht übertragen wird. Die Knoten können auch zu Schichten aggregiert werden. Verschiedene Schichten können unterschiedliche Transformationen an ihren Eingaben durchführen. Die anfängliche Schicht kann als die Eingabeschicht bezeichnet werden, und die letzte Schicht kann als die Ausgabeschicht bezeichnet werden. In einigen Fällen können Signale bestimmte Schichten mehrfach durchlaufen.
  • Das Programmiernetz 600 bildet einen Satz Informationsbits auf der Grundlage eines Satzes Einbettungsparameter auf Spannungspegel einer oder mehrerer Speicherzellen ab. Das Programmiernetz 600 kann den Satz Informationsbits auf der Grundlage einer Abbildung in die eine oder die mehreren Speicherzellen programmieren. Das Programmiernetz 600 kann auch einen Gray-Code auf den Satz Informationsbits anwenden, wobei das Abbilden auf dem Gray-Code basiert. In einigen Beispielen kann es mehrere Speicherzellen geben, und der Satz Einbettungsparameter umfasst ein Array mit einer Anzahl von Dimensionen, die gleich der Anzahl der Speicherzellen ist. Die Anzahl der Dimensionen kann sich von der Anzahl der Elemente in dem Array unterscheiden. Zum Beispiel kann die Anzahl der Elemente in dem Array gleich der Anzahl möglicher Ebenen (d.h. 2(N*K)) sein, und jedes Element des Arrays kann ein K-dimensionaler Vektor sein.
  • Vor dem Training können das Programmiernetz 600 und das Lesenetz 710 einen Satz Einbettungsparameter und einen Satz Netzparameter initialisieren. Das Programmiernetz 600 kann eine Programmierkomponente umfassen, die eine Einbettungsschicht auf der Grundlage eines Satzes Einbettungsparameter umfasst. In einigen Beispielen umfasst die Programmierkomponente außerdem eine Sigmoidschicht und eine Skalierungsschicht. Das Programmiernetz 600 kann ein Beispiel des entsprechenden Elements oder der entsprechenden Elemente sein, die unter Bezug auf 7 beschrieben wurden, oder kann Aspekte davon umfassen.
  • Das Programmiernetz 600 bildet eingegebene Symbole, die aus einer endlichen diskreten Menge k. stammen, als „in“ ab. Zum Beispiel kann die Eingabe in das Programmiernetz ein einzelnes Symbol sein, das beliebige Werte aus der Menge 0, ..., 2(N*K) - 1 annehmen kann, wobei die Eingabe N * K Bits umfasst.
  • Zusätzlich kann das Programmiernetz 600 das eingegebene Symbol in Programmierspannungen x1,.., xK umwandeln. Der Kanal fügt unbekanntes Rauschen n hinzu, dergestalt, dass y = x + n. Das Lesenetz 710 ruft die eingegebene Symbole „in_predicted“ ab. Die Ausgabe des Lesenetzes kann mehr als nur eine Vorhersage für das eingegebene Symbol umfassen. Zum Beispiel kann die Ausgabe eine Wertung (oder Wahrscheinlichkeit) für jedes mögliche eingegebene Symbol umfassen. Das Symbol mit der höchsten Wertung kann als die Vorhersage genommen werden, jedoch können alle Wertungen verwendet werden, wenn die Verlustfunktion (zum Beispiel die Kreuzentropie) berechnet wird.
  • In einigen Beispielen können das Programmiernetz 700 und das Lesenetz 710 gemeinsam trainiert werden. Sie können zum Beispiel durch Minimieren der Kreuzentropie zwischen „in“ und „in_predicted“ oder unter Verwendung einer anderen geeigneten Verlustfunktion trainiert werden.
  • Ein beispielhaftes Programmiernetz 700 kann eine Einbettungsschicht umfassen. Die Eingabe kann ein einzelnes Symbol aus einer Menge von 2(N*K) Möglichkeiten sein. Das heißt, die Eingabe kann N * K Bits sein und die Ausgabe kann eine Sequenz von K Spannungen sein.
  • Zusätzlich kann das Programmiernetz 700 eine Sigmoidschicht und eine Skalierungsschicht zum Skalieren auf den Dynamikbereich der Speicherzellen umfassen. So findet das Programmiernetz 700 die Programmierspannungen einer Zelle.
  • Die Speichervorrichtung 605 kann einen Satz Speicherzellen umfassen, wie mit Bezug auf die 1-5 beschrieben. In einigen Beispielen umfasst der Satz Speicherzellen NAND-Speicherzellen. Eine Speicherzelle kann auf eine bestimmte Spannung innerhalb eines Bereichs, der als der Dynamikbereich bezeichnet wird, eingestellt werden. Die Begriffe Schreiben und Programmieren können verwendet werden, um den Prozess des Einstellens einer Zelle auf eine gewünschte Spannung zu beschreiben.
  • Es folgt nun eine beispielhafte Vorgehensweise zum Speichern von Informationen in einer NAND-Vorrichtung. Wenn wir einen Stream von Bits (b1, b2, b3, b4, b5, b6, b7, b8, b9, b10 ...) nehmen, so werden die Bits in Gruppen von N gruppiert. Wenn zum Beispiel N = 4, so werden die Gruppen als (b1, b2, b3, b4), (b5, b6, b7, b8), (b9, b10, b11, b12), usw. dargestellt, wobei N die Anzahl der Bits pro Zelle ist. Es gibt 2N verschiedene Kombinationen von Werten für jede Gruppe von N Bits. Daher wird eine Abbildung aus jeder Gruppe auf eine ganze Zahl L im Bereich [0, (2N - 1)] durchgeführt. Die Zahl L ist die Ebene. In jede Speicherzelle wird eine einzelne Ebene geschrieben. Jede Ebene ist durch eine feste, zuvor festgelegte Abbildung mit einer eindeutigen Spannung V(L) verknüpft. Diese Art der Abbildung wird als eine Konstellation bezeichnet, wobei eine Konstellation eine Darstellung der Abbildung von Ebenen auf Spannungen ist. Um also die Ebene L in der Zelle zu speichern, wird die Spannung V(L) auf diese Zelle programmiert.
  • Um die Informationen aus einer Speichervorrichtung 605 zu lesen, wird die Spannung jeder Zelle gemessen, und es wird auf den Spannungspegel, der in der Zelle gespeichert wurde, geschlossen. Die Bits können dann wiederhergestellt werden. In einigen Fällen gibt es einen Kompromiss zwischen dem N-Wert und der Zuverlässigkeit des Speichers. Je größer der N- Wert ist, desto mehr Informationen können in der Vorrichtung gespeichert werden, wobei sich in jeder Zelle mehr Bits befinden. Alternativ können die Spannungen, die verschiedene Ebenen repräsentieren, dichter aneinander gepackt werden, da innerhalb desselben Dynamikbereichs eine größere Anzahl unterscheidbarer Spannungen verwendet wird. Infolge dessen hat das Rauschen bei der Zellenprogrammierung oder beim Lesen der Zelle eine größere Chance, die Spannung einer Ebene in eine andere Spannung zu ändern, die eine andere Ebene repräsentiert, was zu einem Fehler beim Lesen der Zelle führt.
  • Es gibt mehrere Quellen von Rauschen in der Speichervorrichtung 605, die zu einem fehlerhaften Lesen der Informationen führen können, wie zum Beispiel Schreibrauschen, Interferenzrauschen, Alterung und Lesebetrieb. Schreibrauschen ist die Spannung einer Zelle unmittelbar nach der Programmierung; sie unterscheidet sich aufgrund eines Programmiervorgangs von der vorgesehenen Spannung. Interferenzrauschen ist eine Funktion der Spannung einer Zelle, die sich infolge der Programmierung einer anderen Nachbarzelle ändert. Die Programmierung von Zellen verursacht eine Störung, die sich auf andere Zellen auswirkt. Altern ist, wenn das Rauschen zunimmt, je öfter eine Speichervorrichtung 605 beschrieben und gelesen wird. Außerdem erzeugt die Zelle umso mehr Rauschen, je mehr Zeit zwischen dem Programmieren einer Zelle vergeht. Auch der Vorgang des Lesens einer Zelle kann Rauschen und Störungen verursachen.
  • Die Speichervorrichtung 605 kann als ein Kanal bezeichnet werden. Der Begriff Kanal wird verwendet, da ein Schreib- und/oder Sendevorgang zu dem, und/oder durch den, Kanal gehen kann. Wenn die Informationen gelesen werden, so werden die Informationen je nach den Eigenschaften des Mediums durch Rauschen verfälscht.
  • Das Lesenetz 610 detektiert die Spannungspegel der einen oder der mehreren Speicherzellen, um einen oder mehrere detektierte Spannungspegel zu generieren. Das Lesenetz 610 kann dann einen Satz vorhergesagter Informationsbits auf der Grundlage des einen oder den mehreren detektierten Spannungspegel unter Verwendung eines neuronalen Netzes, das einen Satz Netzparameter umfasst, identifizieren. In einigen Fällen werden die Netzparameter zusammen mit den Einbettungsparametern trainiert.
  • Gemäß einer Ausführungsform kann das Lesenetz 610 einen Satz Informationsbitwahrscheinlichkeiten auf der Grundlage der detektierten Spannungspegel unter Verwendung des neuronalen Netzes generieren. Das Lesenetz 610 kann dann eine höchste Informationsbitwahrscheinlichkeit aus dem Satz Informationsbitwahrscheinlichkeiten auswählen. In einigen Fällen wird der Satz vorhergesagter Informationsbits auf der Grundlage der höchsten Informationsbitwahrscheinlichkeit identifiziert.
  • Das Lesenetz 610 kann einen Satz vorhergesagter Informationsbits unter Verwendung eines ANN auf der Grundlage von Netzparametern identifizieren. Das Lesenetz 610 kann eine Lesekomponente umfassen, die ein neuronales Netz auf der Grundlage eines Satzes Netzparameter umfasst. In einigen Fällen werden die Netzparameter zusammen mit den Einbettungsparametern trainiert. In einigen Beispielen umfasst das neuronale Netz einen wahrscheinlichkeitsbasierten Klassifikator. Das Lesenetz 610 kann ein Beispiel des entsprechenden Elements oder der entsprechenden Elemente sein, die unter Bezug auf 8 beschrieben wurden, oder kann Aspekte davon umfassen.
  • 7 zeigt ein Beispiel eines Programmiernetzes 700 gemäß Aspekten der vorliegenden Offenbarung. Das Programmiernetz 700 kann ein Beispiel des entsprechenden Elements oder der entsprechenden Elemente sein, die unter Bezug auf 6 beschrieben wurden, oder kann Aspekte davon umfassen. Das Programmiernetz 700 kann eine Einbettungsschicht 705, eine Sigmoidschicht 710 und eine Skalierungsschicht 715 umfassen.
  • Die Einbettungsschicht 705 bettet einen Satz Informationsbits auf der Grundlage der Einbettungsparameter in einen Einbettungsraum ein, um ein eingebettetes Symbol zu erzeugen. Die Sigmoidschicht 710 wendet eine Sigmoidfunktion an, um das eingebettete Informationssymbol einzuschränken, um ein eingeschränktes Symbol zu erzeugen. Die Skalierungsschicht 715 skaliert das eingeschränkte Symbol, um ein skaliertes Symbol zu erzeugen, das einer Spannung innerhalb eines gültigen Dynamikbereichs entspricht. In einigen Fällen wird der Satz Informationsbits auf der Grundlage des skalierten Symbols abgebildet.
  • 8 zeigt ein Beispiel eines Lesenetzes 800 gemäß Aspekten der vorliegenden Offenbarung. Das Lesenetz 800 kann ein Beispiel des entsprechenden Elements oder der entsprechenden Elemente sein, die unter Bezug auf 6 beschrieben wurden, oder kann Aspekte davon umfassen. Wie gezeigt, kann das Lesenetz 800 ein neuronales Netz sein, das eine oder mehrere vollständig verbundene Schichten 805 und eine oder mehrere Rectified Linear Unit (ReLU)-Schichten 810 umfasst. In einigen Beispielen wechseln sich vollständig verknüpfte Schichten 805 und ReLU-Schichten 810 ab, wie in 9 dargestellt. Diese Anordnung dient jedoch nur als Beispiel, und es kann jedes geeignete neuronale Netz verwendet werden, das in der Lage ist zu lernen, detektierte Spannungspegel mit Informationsbits zu verknüpfen.
  • In einigen Fällen können während des Trainings des neuronalen Netzes eine oder mehrere Stapelnormalisierungen verwendet werden. In einigen Fällen können Netze, die Stapelnormalisierung umfassen, eine höhere Lernrate verwenden, ohne dass die Gradienten verschwinden oder explodieren. Darüber hinaus kann die Stapelnormalisierung ein Netz so regulieren, dass es leichter zu verallgemeinern ist. Daher kann es in einigen Fällen unnötig sein, Dropout zu verwenden, um eine Überanpassung abzumildern. Das Netz kann auch robuster für verschiedenen Initialisierungsregimes und Lernraten werden. Die Stapelnormalisierung kann durch Festlegen des Mittelwerts und der Varianz der Eingaben jeder Schicht erreicht werden. In einigen Fällen kann die Normalisierung über einen gesamten Trainingssatz hinweg durchgeführt werden. In anderen Fällen wird die Normalisierung auf jeden Ministapel im Trainingsprozess beschränkt.
  • In einem neuronalen Netz kann eine Aktivierungsfunktion verwendet werden, um summierte gewichtete Eingaben von einem Knoten in die Aktivierung des Knotens oder eine Ausgabe zu transformieren. Eine ReLU-Schicht kann eine rektifizierte lineare Aktivierungsfunktion implementieren, die eine stückweise lineare Funktion umfasst, welche die Eingabe direkt ausgibt, wenn sie positiv ist, und andernfalls Null ausgibt. Eine rektifizierte lineare Aktivierungsfunktion kann als Standardaktivierungsfunktion für viele Arten neuronaler Netze verwendet werden.
  • Die Verwendung einer rektifizierten linearen Aktivierungsfunktion kann die Verwendung des stochastischen Gradientenabstiegs mit Rückverbreitung von Fehlern zum Trainieren tiefer neuronaler Netze ermöglichen. Die rektifizierte lineare Aktivierungsfunktion kann ähnlich wie eine lineare Funktion arbeiten, aber sie kann es ermöglichen, komplexe Beziehungen in den Daten zu lernen. Die rektifizierte lineare Aktivierungsfunktion kann auch eine höhere Empfindlichkeit für die Eingabe der Aktivierungssumme bereitstellen, um eine Sättigung zu vermeiden. Ein Knoten oder eine Einheit, der bzw. die eine rektifizierte lineare Aktivierungsfunktion implementiert, kann als eine rektifizierte lineare Aktivierungseinheit (Rectified Linear Activation Unit, ReLU) bezeichnet werden. Netze, die eine Rektifiziererfunktion für versteckte Schichten verwenden, können als rektifizierte Netze bezeichnet werden.
  • Funktionsweise
  • 9 zeigt ein Beispiel eines Prozesses zum Betreiben einer Speichervorrichtung gemäß Aspekten der vorliegenden Offenbarung. Gemäß verschiedenen Ausführungsformen kann die Speichervorrichtung ein ANN umfassen, und der Betrieb der Speichervorrichtung kann das Finden einer Ausgabe des ANN auf der Grundlage von aus der Speichervorrichtung gelesenen Spannungspegeln umfassen.
  • In einigen Beispielen können diese Operationen durch ein System ausgeführt werden, das einen Prozessor umfasst, der einen Satz Codes zum Steuern von Funktionselementen einer Vorrichtung ausführt. Zusätzlich oder alternativ können die Prozesse unter Verwendung von Spezial-Hardware ausgeführt werden. Allgemein können diese Operationen gemäß den beschriebenen Verfahren und Prozessen gemäß Aspekten der vorliegenden Offenbarung durchgeführt werden. Zum Beispiel können die Operationen aus verschiedenen Teilschritten bestehen oder können in Verbindung mit anderen im vorliegenden Text beschriebenen Operationen ausgeführt werden.
  • In Operation 900 bildet das System einen Satz Informationsbits auf der Grundlage eines Satzes Einbettungsparameter auf Spannungspegel einer oder mehrerer Speicherzellen ab. In einigen Fällen können sich die Operationen dieses Schrittes auf ein Programmiernetz beziehen oder durch dieses ausgeführt werden, wie mit Bezug auf die 6 und 7 beschrieben. In einigen Fällen können die Informationsbits auf der Grundlage eines Modulationsregimes abgebildet werden, das eine mit Bezug auf 6 beschriebene Spannungspegelkonstellation verwendet. Zum Beispiel können die Programmiernetzparameter Spannungspegel für jede von mehreren Zellen umfassen, die jedem Symbol in einer Konstellation entsprechen. Weitere Einzelheiten bezüglich des Prozesses für das Abbilden von Informationsbits werden unter Bezug auf 11 beschrieben.
  • In Operation 905 programmiert das System den Satz Informationsbits in die eine oder die mehreren Speicherzellen auf der Grundlage der Abbildung. In einigen Fällen können sich die Operationen dieses Schrittes auf ein Programmiernetz beziehen oder durch dieses ausgeführt werden, wie mit Bezug auf die 6 und 7 beschrieben.
  • Insbesondere kann das Programmiernetz eine Einbettungsschicht 2N*K → K umfassen, die eine Tabelle umfassen kann, die eine ganze Zahl im Bereich [0, (2N*K - 1)] auf eine Sequenz von reellen Zahlen der Länge K abbildet. Alle Einträge in die Tabelle werden als unabhängige Variablen behandelt, die optimiert werden können.
  • Die Ausgabe einer Einbettungsschicht kann durch eine Sigmoidfunktion geleitet werden, die eine kontinuierliche differenzierbare, monotone Funktion ist, die eine Eingabe nimmt und die Eingabe in eine Zahl im Bereich [0,1] umwandelt. Jedes Element der Sequenz der Länge K wird durch das Sigmoid geleitet. Das Ergebnis dieser Funktion wird dann zu einem Bereich [VMIN, VMAX] umskaliert, wobei VMIN und VMAX die minimal und maximal zulässigen Spannungen (das heißt der Dynamikbereich) sind. Die Umskalierung erfolgt unter Verwendung der Funktion xx → x * (VMAX - VMIN) + VMIN. Durch das Sigmoid und die Umskalierung wird sichergestellt, dass die Ausgabe des Programmiernetzes innerhalb eines gültigen Bereichs liegt.
  • In Operation 910 detektiert das System die Spannungspegel der einen oder der mehreren Speicherzellen, um einen oder mehrere detektierte Spannungspegel zu generieren. In einigen Fällen können sich die Operationen dieses Schrittes auf ein Lesenetz beziehen oder durch dieses ausgeführt werden, wie mit Bezug auf die 6 und 8 beschrieben.
  • In Operation 915 identifiziert das System einen Satz vorhergesagter Informationsbits auf der Grundlage des einen oder der mehreren detektierten Spannungspegel unter Verwendung eines neuronalen Netzes, das einen Satz Netzparameter umfasst, wobei die Netzparameter zusammen mit den Einbettungsparametern trainiert werden. In einigen Fällen können sich die Operationen dieses Schrittes auf ein Lesenetz beziehen oder durch dieses ausgeführt werden, wie mit Bezug auf die 6 und 8 beschrieben. Zum Beispiel kann ein Lesenetz ein vorhergesagtes Konstellationssymbol identifizieren und einen Satz Informationsbits identifizieren, die mit dem Konstellationssymbol verknüpft sind.
  • Das Lesenetz kann ein Neuronaler-Netz-Klassifikator sein, der als Eingabe eine Sequenz von K Spannungen nimmt, die aus K Zellen aus der Speichervorrichtung gelesen wurden, und eine Vorhersage ausgibt, welche Ebene in diese K Zellen geschrieben wurde. Das Lesenetz kann ein beliebiges neuronales Netz oder ein beliebiges differenzierbares Modell sein. Die Anzahl der Ausgaben des Lesenetzes ist 2N*K, wobei jede der 2N*K Zahlen eine Wertung darstellt, die das Lesenetz der entsprechenden Ebene zuordnet. Zum Beispiel kann die Wertung die Wahrscheinlichkeit darstellen, sich in der entsprechenden Ebene zu befinden. Der Kanal kann entweder ein realer Speicherkanal oder ein Modell des Speicherkanals sein.
  • 10 zeigt ein Beispiel eines Prozesses zum Programmieren von Informationen in eine Speichervorrichtung gemäß Aspekten der vorliegenden Offenbarung. In einigen Beispielen können diese Operationen durch ein System ausgeführt werden, das einen Prozessor umfasst, der einen Satz Codes zum Steuern von Funktionselementen einer Vorrichtung ausführt. Zusätzlich oder alternativ können die Prozesse unter Verwendung von Spezial-Hardware ausgeführt werden. Allgemein können diese Operationen gemäß den beschriebenen Verfahren und Prozessen gemäß Aspekten der vorliegenden Offenbarung durchgeführt werden. Zum Beispiel können die Operationen aus verschiedenen Teilschritten bestehen oder können in Verbindung mit anderen im vorliegenden Text beschriebenen Operationen ausgeführt werden.
  • In Operation 1000 bettet das System den Satz Informationsbits auf der Grundlage der Einbettungsparameter in einen Einbettungsraum ein, um ein eingebettetes Symbol zu erzeugen. In einigen Fällen können sich die Operationen dieses Schrittes auf eine Einbettungsschicht beziehen oder durch diese durchgeführt werden, wie mit Bezug auf 7 beschrieben.
  • In Operation 1005 wendet das System eine Sigmoidfunktion an, um das eingebettete Informationssymbol einzuschränken, um ein eingeschränktes Symbol zu erzeugen. In einigen Fällen können sich die Operationen dieses Schrittes auf eine Sigmoidschicht beziehen oder durch diese durchgeführt werden, wie mit Bezug auf 7 beschrieben.
  • In Operation 1010 skaliert das System das eingeschränkte Symbol, um ein skaliertes Symbol zu erzeugen, das einer Spannung innerhalb eines gültigen Dynamikbereichs entspricht, wobei der Satz Informationsbits auf der Grundlage des skalierten Symbols abgebildet wird. In einigen Fällen können sich die Operationen dieses Schrittes auf eine Skalierungsschicht beziehen oder durch diese durchgeführt werden, wie mit Bezug auf 7 beschrieben.
  • Training
  • 11 zeigt ein Beispiel eines Prozesses zum Trainieren eines ANN zum Auswählen von Programmierspannungen für eine Speichervorrichtung gemäß Aspekten der vorliegenden Offenbarung. In einigen Beispielen können diese Operationen durch ein System ausgeführt werden, das einen Prozessor umfasst, der einen Satz Codes zum Steuern von Funktionselementen einer Vorrichtung ausführt. Zusätzlich oder alternativ können die Prozesse unter Verwendung von Spezial-Hardware ausgeführt werden. Allgemein können diese Operationen gemäß den beschriebenen Verfahren und Prozessen gemäß Aspekten der vorliegenden Offenbarung durchgeführt werden. Zum Beispiel können die Operationen aus verschiedenen Teilschritten bestehen oder können in Verbindung mit anderen im vorliegenden Text beschriebenen Operationen ausgeführt werden.
  • In Operation 1100 initialisiert das System einen Satz Einbettungsparameter und einen Satz Netzparameter. In einigen Fällen können sich die Operationen dieses Schrittes auf ein Programmiernetz beziehen oder durch dieses ausgeführt werden, wie mit Bezug auf die 6 und 7 beschrieben. In einigen Beispielen initialisiert das Trainingsverfahren die Parameter des Programmiernetzes (das heißt die Werte in der Einbettungsschicht) nach dem Zufallsprinzip. Dann initialisiert das Trainingsverfahren nach dem Zufallsprinzip die Parameter (Gewichte und Biases) des Lesenetzes.
  • In Operation 1105 bildet das System einen Satz Informationsbits auf der Grundlage der Einbettungsparameter auf Spannungspegel einer oder mehrerer Speicherzellen ab. Zum Beispiel kann das Abbilden auf einer Programmierkonstellation basieren, wie sie oben mit Bezug auf 6 beschrieben wurde. In einigen Fällen können sich die Operationen dieses Schrittes auf ein Programmiernetz beziehen oder durch dieses ausgeführt werden, wie mit Bezug auf die 6 und 7 beschrieben.
  • In Operation 1110 identifiziert das System einen Satz vorhergesagter Informationsbits unter Verwendung des ANN auf der Grundlage der Netzparameter. In einigen Fällen können sich die Operationen dieses Schrittes auf ein Lesenetz beziehen oder durch dieses ausgeführt werden, wie mit Bezug auf die 6 und 8 beschrieben.
  • In Operation 1115 aktualisiert das System die Einbettungsparameter und die Netzparameter mindestens teilweise auf der Grundlage des Satzes vorhergesagter Informationsbits. Zum Beispiel können die Parameter auf der Grundlage der Ausgabe des ANN aktualisiert werden, die neben den vorhergesagten Informationen zusätzliche Informationen umfassen kann. Insbesondere kann die Ausgabe des ANN eine Wertung für verschiedene Kombinationen von Informationsbits umfassen. In einigen Fällen können sich die Operationen dieses Schritts auf eine Trainingskomponente beziehen oder durch diese ausgeführt werden.
  • Der Prozess des Generierens einer Ausgabe unter Verwendung des ANN und des anschließenden Aktualisierens der Parameter des ANN kann mehrfach wiederholt werden, bevor der Trainingsprozess abgeschlossen ist. Der Trainingsprozess kann zum Beispiel fortgesetzt werden, bis eine Schwellengenauigkeit erreicht ist, eine zuvor festgelegte Anzahl von Trainingsiterationen durchgeführt wurde, oder bis die Netzparameter konvergieren.
  • Gemäß einer Ausführungsform kann das Aktualisieren der Netzparameter gemäß dem folgenden Algorithmus erfolgen. Für jede Iteration des Algorithmus der vorliegenden Offenbarung werden das Programmier- und das Lesenetz optimiert, wodurch die Kreuzentropie minimiert wird. Die Kreuzentropie wird für jede Iteration zweimal optimiert. Nehmen wir an, P(θ) ist das Programmiernetz. Nehmen wir an, R(ϕ) ist das Lesenetz. „Info“ bezieht sich auf den Informationsbits-Ministapel pro Netznutzung. ' i n f o ^ '
    Figure DE102020120212A1_0001
    ist der Ministapel der geschätzten Informationsbits am Ausgang des Lesenetzes. Variablen λϕ, λθ stellen die Lernraten dar.
    Figure DE102020120212A1_0002
  • Beispielhafter Trainingsalgorithmus
  • Somit kann gemäß bestimmten Ausführungsformen eine Verlustfunktion unter Verwendung der vorhergesagten Wertungen und der wahren Spannungspegel berechnet werden. Eine Option für die Verlustfunktion ist die Kreuzentropie, jedoch gibt es auch andere Optionen. Der Gradient der Verlustfunktion wird in Bezug auf alle optimierbaren Parameter sowohl im Programmiernetz als auch im Lesenetz berechnet. Die Parameter werden unter Verwendung des Gradienten aktualisiert, um den Verlust zu minimieren. Die Aktualisierung kann unter Verwendung eines beliebigen geeigneten Optimierungsalgorithmus erfolgen, wie zum Beispiel dem stochastischen Gradientenabstieg, Adam usw. Diese Schritte werden wiederholt, bis eine Konvergenz erreicht ist. Eine zusätzliche Variante des Trainings besteht darin, jeden Schritt zwischen dem Aktualisieren des Programmiernetzes und dem Aktualisieren des Lesenetzes umzuschalten.
  • Es ist zu beachten, dass im Training ein Gradient berechnet werden kann. Ein Gradient kann durch Funktionen berechnet werden, die differenzierbar sind und für die wir eine explizite mathematische Form haben. Das Programmiernetz und das Lesenetz sind solche Funktionen und können unter Verwendung von Standardbibliotheken wie zum Beispiel TensorFlow und PyTorch differenziert werden. Wenn ein reales Speichermodell in der Trainingsschleife verwendet wird, so kann die vorliegende Offenbarung die Trainingsschleife mangels eines mathematischen Ausdrucks nicht durchdifferenzieren. Daher kann eine als REINFORCE-Schätzung bekannte Schätzung verwendet werden.
  • Alternativ kann auch ein Speichermodell verwendet werden. Das Speichermodell ist ein generatives Modell, das als Eingabe K Spannungen nimmt und K Spannungen ausgibt, die durch Rauschen verfälschte Spannungen darstellen. Ein generatives Modell ist ein beliebiger mathematischer Ausdruck, der durchdifferenziert werden kann und der eine Zufallskomponente aufweist, wie zum Beispiel ein parametrisches Gauß-Modell oder ein generatives gegnerisches Netz (Generative Adversarial Network). Das Speichermodell kann mit Messungen verwendet werden, die von einer physischen Speichervorrichtung gesammelt wurden, dergestalt, dass das Modell das reale Speicherverhalten so genau wie möglich nachahmt. Das Einpassen generativer Modelle ist ein bekanntes Trainingsverfahren. Mit anderen Worten: fas Speichermodell kann die Rauschverteilung einer realen Speichervorrichtung simulieren. Sobald das Modell eingepasst ist, kann es in dem oben beschriebenen Trainingsverfahren verwendet werden, und das Modell kann durchdifferenziert werden.
  • Wenn die Speichermodelloption verwendet wird, so kann das Modell während des Optimierungsprozesses neu eingepasst werden. Die Neueinpassung erfolgt, da sich der Speicher und das Verhalten je nach der verwendeten Konstellation ändern können. Daher können nach mehreren Schritten des Aktualisierens des Programmiernetzes neue Messungen von der realen Speichervorrichtung unter Verwendung der momentanen Konstellation erfasst werden, das Speichermodell kann anhand dieser Messungen neu eingepasst werden, und das Training kann fortgesetzt werden.
  • Dementsprechend umfasst die vorliegende Offenbarung die folgenden Ausführungsformen.
  • Es wird ein Verfahren zum Auswählen von Programmierspannungen für eine Speichervorrichtung beschrieben. Ausführungsformen des Verfahrens können umfassen: Abbilden eines Satzes Informationsbits auf Spannungspegel einer oder mehrerer Speicherzellen auf der Grundlage von Einbettungsparametern, Programmieren des Satzes Informationsbits in die eine oder die mehreren Speicherzellen auf der Grundlage des Abbildens, Detektieren der Spannungspegel der einen oder der mehreren Speicherzellen, um einen oder mehrere detektierte Spannungspegel zu generieren, und Identifizieren eines Satzes vorhergesagter Informationsbits auf der Grundlage des einen oder der mehreren detektierten Spannungspegel unter Verwendung eines neuronalen Netzes, das mehrere Netzparameter umfasst, wobei die Netzparameter zusammen mit den Einbettungsparametern trainiert werden.
  • Es wird eine Vorrichtung zum Auswählen von Programmierspannungen für eine Speichervorrichtung beschrieben. Die Vorrichtung kann einen Prozessor, einen Speicher in elektronischer Kommunikation mit dem Prozessor und in dem Speicher gespeicherte Instruktionen umfassen. Die Instruktionen können dafür geeignet sein, den Prozessor zu Folgendem zu veranlassen: Abbilden eines Satzes Informationsbits auf Spannungspegel einer oder mehrerer Speicherzellen auf der Grundlage mehrerer Einbettungsparameter, Programmieren des Satzes Informationsbits in die eine oder die mehreren Speicherzellen auf der Grundlage des Abbildens, Detektieren der Spannungspegel der einen oder der mehreren Speicherzellen, um einen oder mehrere detektierte Spannungspegel zu generieren, und Identifizieren eines Satzes vorhergesagter Informationsbits auf der Grundlage des einen oder der mehreren detektierten Spannungspegel unter Verwendung eines neuronalen Netzes, das mehrere Netzparameter umfasst, wobei die Netzparameter zusammen mit den Einbettungsparametern trainiert werden.
  • Es wird ein nicht-transitorisches computerlesbares Medium beschrieben, das Code zum Auswählen von Programmierspannungen für eine Speichervorrichtung speichert. In einigen Beispielen umfasst der Code Instruktionen, die durch einen Prozessor ausgeführt werden können zum: Abbilden eines Satzes Informationsbits auf Spannungspegel einer oder mehrerer Speicherzellen auf der Grundlage mehrerer Einbettungsparameter, Programmieren des Satzes Informationsbits in die eine oder die mehreren Speicherzellen auf der Grundlage des Abbildens, Detektieren der Spannungspegel der einen oder der mehreren Speicherzellen, um einen oder mehrere detektierte Spannungspegel zu generieren, und Identifizieren eines Satzes vorhergesagter Informationsbits auf der Grundlage des einen oder der mehreren detektierten Spannungspegel unter Verwendung eines neuronalen Netzes, das mehrere Netzparameter umfasst, wobei die Netzparameter zusammen mit den Einbettungsparametern trainiert werden.
  • Einige Beispiele des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems, die oben beschrieben wurden, können des Weiteren das Anwenden eines Gray-Codes auf den Satz Informationsbits umfassen, wobei das Abbilden auf dem Gray-Code basiert. In einigen Beispielen umfassen die eine oder mehreren Speicherzellen mehrere Speicherzellen, und die mehreren Einbettungsparameter umfassen ein Array mit einer Anzahl von Dimensionen, die gleich einer Anzahl der Speicherzellen ist.
  • Einige Beispiele des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems, die oben beschrieben wurden, können des Weiteren das Einbetten des Satzes Informationsbits in einen Einbettungsraum auf der Grundlage der Einbettungsparameter umfassen, um ein eingebettetes Symbol zu generieren. Einige Beispiele können des Weiteren das Anwenden einer Sigmoidfunktion umfassen, um das eingebettete Informationssymbol einzuschränken, um ein eingeschränktes Symbol zu erzeugen. Einige Beispiele können des Weiteren das Skalieren des eingeschränkten Symbols umfassen, um ein skaliertes Symbol zu erzeugen, das einer Spannung innerhalb eines gültigen Dynamikbereichs entspricht, wobei der Satz Informationsbits auf der Grundlage des skalierten Symbols abgebildet wird.
  • Einige Beispiele des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems, die oben beschrieben wurden, können des Weiteren das Generieren eines Satzes Informationsbitwahrscheinlichkeiten auf der Grundlage der detektierten Spannungspegel unter Verwendung des neuronalen Netzes umfassen. Einige Beispiele können des Weiteren das Auswählen einer höchsten Informationsbitwahrscheinlichkeit aus dem Satz Informationsbitwahrscheinlichkeiten umfassen, wobei der Satz vorhergesagter Informationsbits anhand der höchsten Informationsbitwahrscheinlichkeit identifiziert wird.
  • Es wird ein Verfahren zum Auswählen von Programmierspannungen für eine Speichervorrichtung beschrieben. Ausführungsformen des Verfahrens können umfassen: Initialisieren mehrerer Einbettungsparameter und eines Satzes Netzparameter, Abbilden eines Satzes Informationsbits auf Spannungspegel einer oder mehrerer Speicherzellen auf der Grundlage der Einbettungsparameter, Identifizieren eines Satzes vorhergesagter Informationsbits unter Verwendung eines ANN auf der Grundlage der Netzparameter und Aktualisieren der Einbettungsparameter und der Netzparameter mindestens teilweise auf der Grundlage des Satzes vorhergesagter Informationsbits.
  • Es wird eine Vorrichtung zum Auswählen von Programmierspannungen für eine Speichervorrichtung beschrieben. Die Vorrichtung kann einen Prozessor, einen Speicher in elektronischer Kommunikation mit dem Prozessor, und in dem Speicher gespeicherte Instruktionen umfassen. Die Instruktionen können dafür geeignet sein, den Prozessor zu Folgendem zu veranlassen: Initialisieren mehrerer Einbettungsparameter und eines Satzes Netzparameter, Abbilden eines Satzes Informationsbits auf Spannungspegel einer oder mehrerer Speicherzellen auf der Grundlage der Einbettungsparameter, Identifizieren eines Satzes vorhergesagter Informationsbits unter Verwendung eines ANN auf der Grundlage der Netzparameter und Aktualisieren der Einbettungsparameter und der Netzparameter mindestens teilweise auf der Grundlage des Satzes vorhergesagter Informationsbits.
  • Es wird ein nicht-transitorisches computerlesbares Medium beschrieben, das Code zum Auswählen von Programmierspannungen für eine Speichervorrichtung speichert. In einigen Beispielen umfasst der Code Instruktionen, die durch einen Prozessor ausgeführt werden können zum: Initialisieren mehrerer Einbettungsparameter und eines Satzes Netzparameter, Abbilden eines Satzes Informationsbits auf Spannungspegel einer oder mehrerer Speicherzellen auf der Grundlage der Einbettungsparameter, Identifizieren eines Satzes vorhergesagter Informationsbits unter Verwendung eines ANN auf der Grundlage der Netzparameter und Aktualisieren der Einbettungsparameter und der Netzparameter mindestens teilweise auf der Grundlage des Satzes vorhergesagter Informationsbits.
  • Einige Beispiele des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems, die oben beschrieben wurden, können des Weiteren das Aktualisieren der Netzparameter auf der Grundlage der Einbettungsparameter umfassen, um aktualisierte Netzparameter zu erzeugen. Einige Beispiele können des Weiteren das Aktualisieren der Einbettungsparameter auf der Grundlage der aktualisierten Einbettungsparameter umfassen, um aktualisierte Einbettungsparameter zu erzeugen.
  • Einige Beispiele des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems, die oben beschrieben wurden, können des Weiteren das Durchführen mehrerer Trainingsiterationen umfassen, wobei die Einbettungsparameter und die Netzparameter während jeder der Trainingsiterationen aktualisiert werden.
  • Einige Beispiele des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems, die oben beschrieben wurden, können des Weiteren das Berechnen eines Gradienten einer Klassifikationsverlustfunktion des Satzes Informationsbits und des Satzes vorhergesagter Informationsbits umfassen, wobei die Einbettungsparameter oder die Netzparameter auf der Grundlage des Gradienten der Klassifikationsverlustfunktion aktualisiert werden.
  • In einigen Beispielen umfasst der Gradient eine Approximierung eines physischen NAND-Kanals. Einige Beispiele des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems, die oben beschrieben wurden, können des Weiteren das Identifizieren eines mathematischen Modells einer oder mehrerer Speicherzellen umfassen, wobei der Gradient der Klassifikationsverlustfunktion auf der Grundlage des mathematischen Modells berechnet wird. Einige Beispiele des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems, die oben beschrieben wurden, können des Weiteren das Aktualisieren des mathematischen Modells auf der Grundlage von Daten aus zusätzlichen Speicherzellen umfassen.
  • Einige Beispiele des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems, die oben beschrieben wurden, können des Weiteren das Programmieren des Satzes Informationsbits in die eine oder die mehreren Speicherzellen auf der Grundlage des Abbildens umfassen. Einige Beispiele können des Weiteren das Detektieren der Spannungspegel der einen oder der mehreren Speicherzellen umfassen, um einen oder mehrere detektierte Spannungspegel zu generieren, wobei der Satz vorhergesagter Informationsbits auf der Grundlage des einen oder den mehreren detektierten Spannungspegel identifiziert wird.
  • Einige Beispiele des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems, die oben beschrieben wurden, können des Weiteren das Generieren eines Satzes Informationsbitwahrscheinlichkeiten auf der Grundlage der detektierten Spannungspegel unter Verwendung des neuronalen Netzes umfassen, wobei der Satz vorhergesagter Informationsbits auf der Grundlage der höchsten Informationsbitwahrscheinlichkeit identifiziert wird. In einigen Beispielen umfassen die eine oder mehreren Speicherzellen mehrere Speicherzellen, und die mehreren Einbettungsparameter umfassen ein Array mit einer Anzahl von Dimensionen, die gleich einer Anzahl der Speicherzellen ist.
  • Einige Beispiele des Verfahrens, der Vorrichtung, des nicht-transitorischen computerlesbaren Mediums und des Systems, die oben beschrieben wurden, können des Weiteren das Einbetten des Satzes Informationsbits in einen Einbettungsraum auf der Grundlage der Einbettungsparameter umfassen, um ein eingebettetes Symbol zu generieren. Einige Beispiele können des Weiteren das Anwenden einer Sigmoidfunktion umfassen, um das eingebettete Informationssymbol einzuschränken, um ein eingeschränktes Symbol zu erzeugen. Einige Beispiele können des Weiteren das Skalieren des eingeschränkten Symbols umfassen, um ein skaliertes Symbol zu erzeugen, wobei der Satz Informationsbits auf der Grundlage des skalierten Symbols abgebildet wird.
  • Es wird eine Vorrichtung zum Auswählen von Programmierspannungen für eine Speichervorrichtung beschrieben. Ausführungsformen der Vorrichtung können umfassen: mehrere Speicherzellen, eine Programmierkomponente, die eine Einbettungsschicht auf der Grundlage mehrerer Einbettungsparameter umfasst, und eine Lesekomponente, die ein neuronales Netz auf der Grundlage mehrerer Netzparameter umfasst, wobei die Netzparameter zusammen mit dem Einbettungsparameter trainiert werden.
  • Es wird ein Verfahren zur Herstellung einer Vorrichtung zum Auswählen von Programmierspannungen für eine Speichervorrichtung beschrieben. Das Verfahren kann umfassen: Bereitstellen mehrerer Speicherzellen, Bereitstellen einer Programmierkomponente, die eine Einbettungsschicht auf der Grundlage mehrerer Einbettungsparameter umfasst, und Bereitstellen einer Lesekomponente, die ein neuronales Netz auf der Grundlage mehrerer Netzparameter umfasst, wobei die Netzparameter zusammen mit dem Einbettungsparameter trainiert werden.
  • Es wird ein Verfahren zur Verwendung einer Vorrichtung zum Auswählen von Programmierspannungen für eine Speichervorrichtung beschrieben. Das Verfahren kann umfassen: Verwenden mehrerer Speicherzellen, Verwenden einer Programmierkomponente, die eine Einbettungsschicht auf der Grundlage mehrerer Einbettungsparameter umfasst, und Verwenden einer Lesekomponente, die ein neuronales Netz auf der Grundlage mehrerer Netzparameter umfasst, wobei die Netzparameter zusammen mit dem Einbettungsparameter trainiert werden.
  • In einigen Beispielen umfasst die Programmierkomponente des Weiteren eine Sigmoidschicht und eine Skalierungsschicht. In einigen Beispielen umfasst das neuronale Netz einen wahrscheinlichkeitsbasierten Klassifikator. In einigen Beispielen umfassen die mehreren Speicherzellen NAND-Speicherzellen.
  • Somit kann die vorliegende Offenbarung eine automatische Auswahl von Programmierspannungen bereitstellen und kann wiederholt für jede neue Speichervorrichtungsversion oder -generation aufgerufen werden, wodurch rasch (im Vergleich zu manueller Arbeit) eine Konstellation erhalten wird. Ausführungsformen der vorliegenden Offenbarung basieren auf einem Optimierungsprozess (dem Trainingsverfahren) und bieten die Möglichkeit, Konstellationen schneller zu finden als vorgefertigte Lösungen, und auch besser als manuelle Versuch-und-Irrtum-Techniken oder Heuristiken. Darüber hinaus verwenden Ausführungsformen der vorliegenden Offenbarung reale Daten, die aus einer Speichervorrichtung erfasst werden, was im Vergleich zu herkömmlichen Programmierkonstellationen eine für ein spezifisches Problem geeignete Konstellation ergibt.
  • Die Beschreibung und die Zeichnungen, die im vorliegenden Text enthalten sind, stellen beispielhafte Ausgestaltungen dar und repräsentieren nicht alle Implementierungen innerhalb des Schutzumfangs der Ansprüche. Zum Beispiel können die Operationen und Schritte neu angeordnet, kombiniert oder anderweitig modifiziert werden. Außerdem können Strukturen und Vorrichtungen in Form von Blockdiagrammen dargestellt werden, um die Beziehung zwischen Komponenten darzustellen und zu vermeiden, dass wesentliche Punkte der beschriebenen Konzepte in den Hintergrund treten. Ähnliche Komponenten oder Merkmale können die gleichen Namen tragen, können aber verschiedene Bezugszeichen haben, die verschiedenen Figuren entsprechen.
  • Einige Modifizierungen der Offenbarung sind dem Fachmann sofort ersichtlich, und die im vorliegenden Text definierten Prinzipien können auch auf andere Variationen angewendet werden, ohne den Schutzumfang der Offenbarung zu verlassen. Somit ist die Offenbarung nicht auf die hier beschriebenen Beispiele und Designs beschränkt; vielmehr ist ihr der umfassendste Interpretationsumfang zuzugestehen, der unter die hier offenbarten Prinzipien und neuartigen Merkmale fällt.
  • Die beschriebenen Verfahren können durch Vorrichtungen implementiert oder ausgeführt werden, die einen Allzweckprozessor, einen digitalen Signalprozessor (DSP), einen anwendungsspezifischen integrierten Schaltkreis (ASIC), ein feldprogrammierbares Gate-Array (FPGA) oder eine sonstige programmierbare Logikvorrichtung, diskrete Gatter- oder Transistorlogik, diskrete Hardwarekomponenten oder eine beliebige Kombination davon umfassen. Ein Allzweckprozessor kann ein Mikroprozessor, ein konventioneller Prozessor, ein Controller, ein Mikrocontroller oder eine Zustandsmaschine sein. Ein Prozessor kann auch als eine Kombination von Computervorrichtungen implementiert werden (zum Beispiel eine Kombination aus einem DSP und einem Mikroprozessor, mehreren Mikroprozessoren, einem oder mehreren Mikroprozessoren in Verbindung mit einem DSP-Kern oder eine andere derartige Konfiguration). Somit können die hier beschriebenen Funktionen in Hardware oder Software implementiert werden und können durch einen Prozessor, Firmware oder eine beliebige Kombination davon ausgeführt werden. Wenn sie in Software implementiert werden, die durch einen Prozessor ausgeführt wird, so können die Funktionen in Form von Instruktionen oder Code auf einem computerlesbaren Medium gespeichert sein.
  • Zu den computerlesbaren Medien gehören sowohl nicht-transitorische Computerspeichermedien als auch Kommunikationsmedien, einschließlich aller Medien, die das Übertragen von Code oder Daten ermöglichen. Ein nicht-transitorisches Speichermedium kann jedes beliebige verfügbare Medium sein, auf das ein Computer zugreifen kann. Nicht-transitorische computerlesbare Medien können zum Beispiel Direktzugriffsspeicher (RAM), Nurlesespeicher (ROM), elektrisch löschbaren programmierbaren Nurlesespeicher (EEPROM), Compact Disk (CD) oder anderen optischen Diskspeicher, magnetischen Diskspeicher oder sonstige andere nicht-transitorische Medium zum Transportieren oder Speichern von Daten oder Code umfassen.
  • Es können auch Verbindungskomponenten zu Recht als computerlesbare Medien bezeichnet werden. Wenn zum Beispiel Code oder Daten von einer Website, einem Server oder einer anderen räumlich abgesetzten Quelle über ein Koaxialkabel, ein Lichtleitkabel, eine verdrillte Zwillingsleitung, eine digitale Teilnehmerleitung (DSL) oder eine drahtlose Technologie wie zum Beispiel Infrarot-, Funk- oder Mikrowellensignale gesendet werden, dann fallen das Koaxialkabel, das Lichtleitkabel, die verdrillte Zwillingsleitung, die DSL oder die drahtlose Technologie ebenfalls unter die Definition von „Medium“. Auch Kombinationen von Medien fallen unter die Deutung von „computerlesbaren Medien“.
  • In dieser Offenbarung und den folgenden Ansprüchen bezeichnet das Wort „oder“ eine inklusive Liste, dergestalt, dass zum Beispiel die Liste von X, Y oder Z X oder Y oder Z oder XY oder XZ oder YZ oder XYZ bedeutet. Auch die Formulierung „auf der Grundlage von“ wird nicht so verwendet, dass ein geschlossener Satz von Bedingungen gemeint wäre. Zum Beispiel kann ein Schritt, der als „auf der Grundlage von Bedingung A“ beschrieben wird, sowohl auf Bedingung A als auch auf Bedingung B basieren. Mit anderen Worten: der Ausdruck „auf der Grundlage von“ ist so zu verstehen, dass er „mindestens teilweise auf der Grundlage von“ bedeutet. Des Weiteren meinen die Wörter „ein/einer/eine“ „mindestens eines“.

Claims (20)

  1. Verfahren zum Speichern von Daten in einer Speichervorrichtung, umfassend: Programmieren eines Satzes Informationsbits in eine oder mehrere Speicherzellen unter Verwendung einer Neuronalen-Netz-Einbettung auf der Basis mehrerer Einbettungsparameter; Bestimmen eines Satzes vorhergesagter Informationsbits auf der Basis von Spannungspegeln der Speicherzellen unter Verwendung eines neuronalen Netzes, das mehrere Netzparameter umfasst, die zusammen mit Einbettungsparametern trainiert werden; und Lesen der Informationsbits aus der Speichervorrichtung auf der Basis des Satzes vorhergesagter Informationsbits.
  2. Verfahren nach Anspruch 1, des Weiteren umfassend: Abbilden des Satzes Informationsbits auf die Spannungspegel einer oder mehrerer Speicherzellen auf der Grundlage der Einbettungsparameter; und Detektieren der Spannungspegel der Speicherzellen.
  3. Verfahren nach Anspruch 1, wobei: die eine oder mehreren Speicherzellen mehrere Speicherzellen umfassen und die mehreren Einbettungsparameter ein Array mit einer Anzahl von Dimensionen umfassen, die gleich einer Anzahl der Speicherzellen ist.
  4. Verfahren nach Anspruch 1, des Weiteren umfassend: Einbetten des Satzes Informationsbits in einen Einbettungsraum auf der Grundlage der Einbettungsparameter, um ein eingebettetes Symbol zu erzeugen; Anwenden einer Sigmoidfunktion, um das eingebettete Informationssymbol einzuschränken, um ein eingeschränktes Symbol zu erzeugen; und Skalieren des eingeschränkten Symbols, um ein skaliertes Symbol zu erzeugen, das einer Spannung innerhalb eines gültigen Dynamikbereichs entspricht, wobei der Satz Informationsbits auf der Grundlage des skalierten Symbols abgebildet wird.
  5. Verfahren nach Anspruch 1, des Weiteren umfassend: Generieren eines Satzes Informationsbitwahrscheinlichkeiten auf der Grundlage der Spannungspegel unter Verwendung des neuronalen Netzes; und Auswählen einer höchsten Informationsbitwahrscheinlichkeit aus dem Satz Informationsbitwahrscheinlichkeiten, wobei der Satz vorhergesagter Informationsbits anhand der höchsten Informationsbitwahrscheinlichkeit identifiziert wird.
  6. Verfahren zum Trainieren eines künstlichen neuronalen Netzes (Artificial Neural Network, ANN) für eine Speichervorrichtung, umfassend: Initialisieren mehrerer Einbettungsparameter und eines Satzes Netzparameter; Abbilden eines Satzes Informationsbits auf Spannungspegel einer oder mehrerer Speicherzellen auf der Grundlage der Einbettungsparameter; Identifizieren eines Satzes vorhergesagter Informationsbits unter Verwendung eines ANN auf der Grundlage der Netzparameter; und Aktualisieren der Einbettungsparameter und der Netzparameter mindestens teilweise auf der Grundlage des Satzes vorhergesagter Informationsbits.
  7. Verfahren nach Anspruch 6, des Weiteren umfassend: Aktualisieren der Netzparameter auf der Grundlage der Einbettungsparameter, um aktualisierte Netzparameter zu erzeugen; und Aktualisieren der Einbettungsparameter auf der Grundlage der aktualisierten Einbettungsparameter, um aktualisierte Einbettungsparameter zu erzeugen.
  8. Verfahren nach Anspruch 6, des Weiteren umfassend: Durchführen mehrerer Trainingsiterationen, wobei die Einbettungsparameter und die Netzparameter während jeder der Trainingsiterationen aktualisiert werden.
  9. Verfahren nach Anspruch 6, des Weiteren umfassend: Berechnen eines Gradienten einer Klassifikationsverlustfunktion des Satzes Informationsbits und des Satzes vorhergesagter Informationsbits, wobei die Einbettungsparameter oder die Netzparameter auf der Grundlage des Gradienten der Klassifikationsverlustfunktion aktualisiert werden.
  10. Verfahren nach Anspruch 9, wobei: der Gradient eine Approximierung eines physischen NAND-Kanals umfasst.
  11. Verfahren nach Anspruch 9, des Weiteren umfassend: Identifizieren eines mathematischen Modells einer oder mehrerer Speicherzellen, wobei der Gradient der Klassifikationsverlustfunktion auf der Grundlage des mathematischen Modells berechnet wird.
  12. Verfahren nach Anspruch 11, des Weiteren umfassend: Aktualisieren des mathematischen Modells auf der Grundlage von Daten aus zusätzlichen Speicherzellen.
  13. Verfahren nach Anspruch 6, des Weiteren umfassend: Programmieren des Satzes Informationsbits in die eine oder die mehreren Speicherzellen auf der Grundlage des Abbildens; und Detektieren der Spannungspegel der einen oder der mehreren Speicherzellen, um einen oder mehrere detektierte Spannungspegel zu generieren, wobei der Satz vorhergesagter Informationsbits auf der Grundlage des einen oder den mehreren detektierten Spannungspegel identifiziert wird.
  14. Verfahren nach Anspruch 13, des Weiteren umfassend: Generieren eines Satzes Informationsbitwahrscheinlichkeiten auf der Grundlage der detektierten Spannungspegel unter Verwendung des neuronalen Netzes, wobei der Satz vorhergesagter Informationsbits anhand der höchsten Informationsbitwahrscheinlichkeit identifiziert wird.
  15. Verfahren nach Anspruch 6, wobei: die eine oder mehreren Speicherzellen mehrere Speicherzellen umfassen und die mehreren Einbettungsparameter ein Array mit einer Anzahl von Dimensionen umfassen, die gleich einer Anzahl der Speicherzellen ist.
  16. Verfahren nach Anspruch 6, des Weiteren umfassend: Einbetten des Satzes Informationsbits in einen Einbettungsraum auf der Grundlage der Einbettungsparameter, um ein eingebettetes Symbol zu erzeugen; Anwenden einer Sigmoidfunktion, um das eingebettete Informationssymbol einzuschränken, um ein eingeschränktes Symbol zu erzeugen; und Skalieren des eingeschränkten Symbols, um ein skaliertes Symbol zu erzeugen, wobei der Satz Informationsbits auf der Grundlage des skalierten Symbols abgebildet wird.
  17. Speichervorrichtung, umfassend: mehrere Speicherzellen; eine Programmierkomponente, die eine Einbettungsschicht auf der Grundlage mehrerer Einbettungsparameter umfasst, und eine Lesekomponente, die ein neuronales Netz auf der Grundlage mehrerer Netzparameter umfasst, wobei die Netzparameter zusammen mit dem Einbettungsparameter trainiert werden.
  18. Vorrichtung nach Anspruch 17, wobei: die Programmierkomponente des Weiteren eine Sigmoidschicht und eine Skalierungsschicht umfasst.
  19. Vorrichtung nach Anspruch 17, wobei: das neuronale Netz einen wahrscheinlichkeitsbasierten Klassifikator umfasst.
  20. Vorrichtung nach Anspruch 17, wobei: die mehreren Speicherzellen NAND-Speicherzellen umfassen.
DE102020120212.1A 2020-06-05 2020-07-31 Netzwerk zur automatischen Programmierspannungsauswahl Pending DE102020120212A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/893,866 US11587620B2 (en) 2020-06-05 2020-06-05 Automatic program voltage selection network
US16/893,866 2020-06-05

Publications (1)

Publication Number Publication Date
DE102020120212A1 true DE102020120212A1 (de) 2021-12-09

Family

ID=78604912

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020120212.1A Pending DE102020120212A1 (de) 2020-06-05 2020-07-31 Netzwerk zur automatischen Programmierspannungsauswahl

Country Status (4)

Country Link
US (2) US11587620B2 (de)
KR (1) KR20210152385A (de)
CN (1) CN113764019A (de)
DE (1) DE102020120212A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11587620B2 (en) 2020-06-05 2023-02-21 Samsung Electronics Co., Ltd. Automatic program voltage selection network
US11615782B2 (en) * 2020-11-12 2023-03-28 Sony Interactive Entertainment Inc. Semi-sorted batching with variable length input for efficient training
US11861208B2 (en) * 2020-12-22 2024-01-02 Micron Technology, Inc. Performing data operations on grouped memory cells

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7355892B2 (en) * 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices
KR100891005B1 (ko) * 2007-06-28 2009-03-31 삼성전자주식회사 고온 스트레스로 인한 읽기 마진의 감소를 보상하기 위한플래시 메모리 장치 및 그것의 읽기 전압 조정 방법
KR101888074B1 (ko) * 2012-01-09 2018-08-13 삼성전자주식회사 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법
US20170140273A1 (en) * 2015-11-18 2017-05-18 Video Inform Ltd System and method for automatic selection of deep learning architecture
EP3493120A1 (de) * 2017-12-01 2019-06-05 Koninklijke Philips N.V. Trainieren eines neuronalen netzwerkmodells
US10861561B2 (en) * 2019-01-22 2020-12-08 Samsung Electronics Co., Ltd. Threshold estimation in NAND flash devices
US11587620B2 (en) 2020-06-05 2023-02-21 Samsung Electronics Co., Ltd. Automatic program voltage selection network
US12119070B2 (en) * 2021-05-06 2024-10-15 Micron Technology, Inc. Memory failure prediction

Also Published As

Publication number Publication date
US11915766B2 (en) 2024-02-27
US20230147137A1 (en) 2023-05-11
KR20210152385A (ko) 2021-12-15
CN113764019A (zh) 2021-12-07
US11587620B2 (en) 2023-02-21
US20210383871A1 (en) 2021-12-09

Similar Documents

Publication Publication Date Title
DE102020120212A1 (de) Netzwerk zur automatischen Programmierspannungsauswahl
DE102019116305A1 (de) Pipelining zur verbesserung der inferenzgenauigkeit neuronaler netze
DE69217047T2 (de) Verbesserungen in neuronalnetzen
DE112018000272T5 (de) Resistive Verarbeitungseinheit mit hysteretischen Aktualisierungen zum Trainieren neuronaler Netze
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE102020121775A1 (de) Künstliches neuronales netz mit trainierbaren aktivierungsfunktionen und fraktionalen ableitungswerten
DE102018105623B4 (de) Zustandsabhängige Abtastschaltungen und Abtastoperationen für Speichervorrichtungen
DE102020120211A1 (de) Polarer neuronaler Netzwerk-Decodierer für Speichervorrichtungen
DE102011085988A1 (de) Speicheranweisungen umfassend Parameter zum Beeinflussen eines Betriebszustands eines Speichers
DE112020003365T5 (de) Überwachte kreuzmodale wiedergewinnung für zeitreihen und text unter verwendung von multimodalen triplettverlusten
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE102020124761A1 (de) Speicher-Controller und Speicher-Vorrichtung mit demselben und Betriebsverfahren für denselben
DE112017004156T5 (de) Speicherzellenstruktur
DE102020101275A1 (de) Rechenvorrichtung zum Trainieren eines künstlichen neuronalen Netzwerkmodells, Verfahren zum Trainieren des künstlichen neuronalen Netzwerkmodells und Speichersystem zum Speichern desselben
DE102023127111A1 (de) Feinabstimmung und Kontrolle von Diffusionsmodellen
DE102018206108A1 (de) Generieren von Validierungsdaten mit generativen kontradiktorischen Netzwerken
DE112021005910T5 (de) Schnellere abdeckungskonvergenz mit automatischer testparameterabstimmung bei eingeschränkter zufallsverifikation
DE112021002939T5 (de) Effiziente kachel-zuordnung für zeilenweise zuordnung in neuronalen faltungsnetzen zur analogen inferenz in künstliche-intelligenz-netzen
DE102019126788A1 (de) Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse
DE102020209853A1 (de) Vorrichtung und system für das lernen unüberwachter geordneter darstellung mit einem residual-variational-autoencoder
DE102022110833A1 (de) Speicherausfallvorhersage
DE112020003446T5 (de) Validierung einer Leistung eines neuronalen Netzes, das mit markierten Trainingsdaten trainiert wurde
DE102024101470A1 (de) Text-zu-bild-diffusionsmodell mit komponentensperre und rang-eins-bearbeitung
DE112021003881T5 (de) Online-training von neuronalen netzen
DE112017005197T5 (de) Hybrid-Komprimierungsschema zur effizienten Speicherung synaptischer Gewichte in neuromorphen Hardware-Kernen