DE102022101341A1 - Spitzen- und durchschnitts-icc-reduzierung durch stufenbasierte abtastung während der programmverifizierungsvergänge von nichtflüchtigen speicherstrukturen - Google Patents

Spitzen- und durchschnitts-icc-reduzierung durch stufenbasierte abtastung während der programmverifizierungsvergänge von nichtflüchtigen speicherstrukturen Download PDF

Info

Publication number
DE102022101341A1
DE102022101341A1 DE102022101341.3A DE102022101341A DE102022101341A1 DE 102022101341 A1 DE102022101341 A1 DE 102022101341A1 DE 102022101341 A DE102022101341 A DE 102022101341A DE 102022101341 A1 DE102022101341 A1 DE 102022101341A1
Authority
DE
Germany
Prior art keywords
memory
memory cells
programming
read
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022101341.3A
Other languages
English (en)
Inventor
Xue Bai Pitner
Yu-Chung Lien
Deepanshu Dutta
Huai-Yuan Tseng
Ravi Kumar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE102022101341A1 publication Critical patent/DE102022101341A1/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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • G11C11/5635Erasing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing 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/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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/24Bit-line control 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/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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5621Multilevel programming verification
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/16Flash programming of all the cells in an array, sector or block simultaneously

Abstract

Verfahren zum Programmieren eines Speicherblocks einer nichtflüchtigen Speicherstruktur, wobei das Verfahren während eines Programmverifizierungsvorgangs das Auswählen nur eines Teilsegments von Speicherzellen eines Speicherblocks für den Bitscan-Modus, das Anlegen einer Abtastvorspannung an eine oder mehrere Bitleitungen des Speicherblocks, die den ausgewählten Speicherzellen zugeordnet sind, und das Einleiten eines Bitscan-Modus der ausgewählten Speicherzellen aufweist.

Description

  • TECHNISCHES GEBIET
  • Diese Offenbarung bezieht sich auf nichtflüchtige Speichersysteme in Festkörperlaufwerken oder anderen Vorrichtungen, einschließlich, aber nicht beschränkt auf Flash-Laufwerke oder eingebettete/entfernbare Flash-Pakete. Insbesondere bezieht sich diese Offenbarung auf Systeme und Verfahren zum Verwenden eines stufenbasiertes Abtastschema, um Schwankungen in Strompegeln während der Programmierung nichtflüchtiger Speicherstrukturen effektiv zu verwalten, wodurch die Metriken in Bezug auf Leistung und Leistungsverbrauch verbessert werden.
  • HINTERGRUND
  • Aufgrund der aufkommenden Technologie und der Marktkräfte ersetzen Festkörperlaufwerke (SSDs) nach und nach die bislang üblichen Systeme zur Datenspeicherung, die auf der Rotation von magnetischen Medien zum Lesen und Schreiben von Daten beruhen (z. B. Festplattenlaufwerke). Anstatt mechanische oder bewegliche Teile aufzuweisen, weist der Festkörperspeicher integrierte Schaltungsanordnungen oder miteinander verbundene Flash-Komponenten auf, die eine nichtflüchtige Speicherung bereitstellen, in der die gespeicherten Daten auch bei einer geplanten oder ungeplanten Unterbrechung der Stromversorgung dauerhaft erhalten bleiben. Folglich ist ein Festkörperlaufwerk von Natur aus schneller und robuster (d. h. weniger anfällig für Datenverluste und -beschädigungen), verbraucht weniger Strom und ist im Vergleich zur plattenbasierten Speicherung kompakter. Dementsprechend ist der nichtflüchtige Speicher eine leistungsstarke Speicherungslösung im Hinblick auf viele Arten von Rechen-, Unterhaltungselektronik- und externe Einzelspeicherungsvorrichtungen (z. B. USB-Laufwerke). Fortschritte bei den nichtflüchtigen Speicherstrukturen haben zu einer erheblichen Erhöhung ihrer Speicherungsdichtekapazität und einer Verringerung ihres Stromverbrauchs geführt, wodurch die Kosten pro Bit und Bit pro Chip gesenkt wurden.
  • Im Allgemeinen kann eine nichtflüchtige Speichervorrichtung aus einem oder mehreren Arrays von einzelnen Speicherzellen bestehen. In Bezug auf einige Flash-Speichertypen besteht jede Speicherzelle aus einem Floating-Gate, das oberhalb eines Kanalbereichs eines Halbleitersubstrats positioniert und von diesem isoliert ist, wobei das Floating-Gate zwischen dem Source- und dem Drain-Bereich angeordnet ist. Außerdem ist ein Steuer-Gate über dem Floating-Gate bereitgestellt und von diesem isoliert, wobei eine Schwellenspannung (Vth) des Speicherzellentransistors durch die Ladungsmenge, die auf dem Floating-Gate des Transistors zurückgehalten wird, gesteuert wird und von dieser abhängt. Insbesondere wird in schalterähnlicher Weise ein Mindestbetrag an Spannung, der auf das Steuer-Gate des Transistors aufgebracht werden muss, bevor der Transistor aktiviert wird, um eine Leitung zwischen seinen Source- und Drain-Bereichen zu ermöglichen, durch den Ladungspegel bestimmt, der auf dem Floating-Gate zurückgehalten wird. Folglich können Bitwertdaten auf die Zelle programmiert und aus ihr gelöscht werden, indem der Ladungspegel am Floating-Gate präzise verändert wird, um die Charakteristik der Schwellenspannung (Vth) des Transistors zu verändern. In einer Arraystruktur sind die Speicherzellen durch Wortleitungen (Zeilen) und Bitleitungen (Spalten) adressierbar. Ein Typ eines nichtflüchtigen Speicherspeichers, der durch diese allgemeine Struktur definiert ist, wird als NAND-Flash-Speicher basierend auf seinen elektrischen Eigenschaften bezeichnet, die einem NAND-Logikgatter ähneln.
  • Wie nachstehend ausführlich erläutert, hängt die Anzahl der Bits, die in einer einzelnen Speicherzelle gespeichert werden können, von der Anzahl der verschiedenen Spannungsbereiche ab, die innerhalb des Schwellenspannungsfensters (Vth) dieser Speicherzelle unterteilt werden können. Zum Beispiel kann die mögliche Schwellenspannung (Vth) einer Speicherzelle in zwei Spannungsbereiche unterteilt werden, wobei die Bereiche den logischen Daten „1“ bzw. „0“ zugeordnet sind, um ein Bit an Daten zu speichern (als binäre Daten bezeichnet). Dementsprechend kann eine Speicherzelle dieser Speicherdichteordnung als „Single-Level-Cell“ oder SLC bezeichnet werden.
  • Durch eine weitere Unterteilung des Schwellenspannungsfensters (Vth) einer Speicherzelle in zusätzliche unterschiedliche Spannungsbereiche können mehrere Informationsebenen gespeichert werden. Eine Speicherzelle dieser Speicherdichteordnung kann als „Multi-State-Cell“ oder MLC bezeichnet werden. Um beispielsweise zwei Datenbits zu speichern, kann das Schwellenspannungsfenster (Vth) einer Zelle ferner in vier verschiedene Spannungsbereiche unterteilt werden, wobei jedem Bereich ein Bitwert zugewiesen wird, der zum Beispiel gleich „11“, „10“, „01“ und „00“ ist. Dementsprechend ist nach einem Löschvorgang die Schwellenspannung (Vth) der Zelle negativ, was als logische „11“ definiert werden könnte. Als solche können die positiven Schwellenspannungen (Vth) für die programmierten Zustände „10“, „01“ und „00“ verwendet werden. In einem weiteren Beispiel kann zur Speicherung von drei Datenbits das Schwellenspannungsfenster (Vth) einer Zelle in acht verschiedene Spannungsbereiche unterteilt werden, wobei jedem Bereich ein Bitwert zugewiesen wird, der zum Beispiel gleich „111“, „110“, „100“, „010“, „011“, „000“, „001“ und „101“ ist. Eine Speicherzelle dieser Speicherdichteordnung kann als „Tri-Level“, „Triple-Level-Cell“ oder TLC bezeichnet werden.
  • Die spezifische Beziehung zwischen den in eine Speicherzelle programmierten Daten und den Schwellenspannungspegeln (Vth) der Speicherzelle hängt von dem Datencodierschema oder dem Datenschema ab, das für die Speicherzellen verwendet wird.
  • Somit hat eine Vorrichtung, die Multi-State-Daten aufweist (durch eingebaute MLC- und/oder TLC-Zellen), unter Verwendung der gleichen MOSFET-Struktur und Wafergröße eine höhere Speicherkapazität als eine Speichervorrichtung mit geringerer Speicherdichte (z. B. durch Einbauen von SLC-Zellen) und stellt somit eine vergleichbare Kosteneinsparung pro Bit bereit. Als Folge der höheren Dichte werden jedoch die Toleranzen zwischen den unterteilten Spannungsbereichen von Multi-State-Speicherzellen enger, und die Programmierung erfolgt im Vergleich zu einer Single-State-Speicherzelle langsamer, da die Daten auf mehrere Zielschwellenspannungsbereiche (Vth) programmiert werden und bei der Programmierung ein höheres Maß an Präzision erfordern. Die erhöhte Speicherdichte einer Multi-State-Speicherzelle verringert die verfügbare Fehlerquote zwischen den Zustandswechseln und reduziert die verfügbare Kapazität des Spannungsbereichs, die erforderlich ist, um die Belastung der Siliciumoxidschicht bei aufeinanderfolgenden Programmier-/Löschzyklen auszuhalten. Folglich ist die Dauerhaftigkeit eines Multi-State-Speicherelements im Vergleich zu einer Single-State-Zelle deutlich geringer. In Bezug auf einige Anwendungen (z. B. ein Speichersegment, das für eine relativ hohe Anzahl von Programmier-/Löschzyklen vorgesehen ist) eignet sich daher am besten ein Programmiervorgang, der Single-State-Speicherzellen (d. h. ein Programmierprotokoll vom Typ SLC) aufweist. Obwohl SLC-Speicherprogrammiervorgänge im Allgemeinen schneller sind als die Programmierzeit („Tprog“), die für Multi-State-Programmiervorgänge erforderlich ist, können unbeschränkte Maßnahmen zur Fortsetzung der Verbesserung der Effizienz bei SLC-Speicherprogrammiervorgängen implementiert werden. In einigen Fällen können diese Maßnahmen jedoch unerwünschte Strompegel oder -schwankungen in der Speichervorrichtung bewirken, die zu einer physischen Schädigung der Speicherstruktur selbst führen oder sich negativ auf andere Leistungsparameter der Vorrichtung auswirken können, wie ein Anstieg des Stromverbrauchs, der z. B. einen festgelegten Sicherheits- oder Wirksamkeitstoleranzschwellenwert überschreiten kann. Somit besteht ein besonderer Bedarf an Maßnahmen, die die Programmiergeschwindigkeit für SLC-Programmiervorgänge verbessern, aber auch keine Gegeneffekte in Bezug auf andere Leistungsgesichtspunkte der Speichervorrichtung bewirken.
  • KURZDARSTELLUNG
  • Verschiedene Ausführungsformen schließen ein Verfahren zum Programmieren eines Speicherblocks einer nichtflüchtigen Speicherstruktur ein, wobei das Verfahren während eines Programmverifizierungsvorgangs das Auswählen nur eines Teilsegments von Speicherzellen eines Speicherblocks für den Bitscan-Modus, das Anlegen einer Abtastvorspannung an eine oder mehrere Bitleitungen des Speicherblocks, die den ausgewählten Speicherzellen zugeordnet sind, und das Einleiten eines Bitscan-Modus der ausgewählten Speicherzellen aufweist.
  • Andere Ausführungsformen schließen eine Speichersteuerung ein, die einen ersten Anschluss aufweist, der eingerichtet ist, um mit einer nichtflüchtigen Speicherstruktur zu koppeln, wobei die Speicherstruktur einen Speicherblock aufweist. Die Speichersteuerung ist eingerichtet, um während eines Programmverifizierungsvorgangs nur ein Teilsegment von Speicherzellen des Speicherblocks für den Bitscan-Modus auszuwählen, eine Abtastvorspannung an eine oder mehrere Bitleitungen des Speicherblocks anzulegen, die den ausgewählten Speicherzellen zugeordnet sind, und einen Bitscan-Modus der ausgewählten Speicherzellen einzuleiten.
  • Zusätzliche Ausführungsformen schließen ein nichtflüchtiges Speichersystem, das aus einer Speicherstruktur und einer Speichersteuerung besteht, die mit der Speicherstruktur gekoppelt ist und, während eines Programmverifizierungsvorgangs, das Auswählen nur eines Teilsegments von Speicherzellen eines Speicherblocks für den Bitscan-Modus, das Anlegen einer Abtastvorspannung an eine oder mehrere Bitleitungen des Speicherblocks, die den ausgewählten Speicherzellen zugeordnet sind, und das Einleiten eines Bitscan-Modus der ausgewählten Speicherzellen ein.
  • Figurenliste
  • Eine detailliertere Beschreibung wird nachstehend unter Bezugnahme auf beispielhafte Ausführungsformen dargelegt, die in den beigefügten Figuren dargestellt sind. Angesichts dessen, dass diese Figuren nur Ausführungsbeispiele der Offenbarung darstellen und deshalb nicht als ihren Schutzumfang einschränkend betrachtet werden sollen, wird die Offenbarung mit zusätzlicher Spezifität und Detailgenauigkeit durch die Verwendung der beigefügten Zeichnungen beschrieben und erläutert, wobei:
    • 1 ein Blockdiagramm eines Speichersystems gemäß beispielhaften Ausführungsformen ist;
    • 2 schematisch eine nichtflüchtige Speicherzelle gemäß beispielhaften Ausführungsformen darstellt;
    • 3 die Beziehung zwischen einem Source-Drain-Strom ID und einer Steuer-Gate-Spannung VCG für vier verschiedene Ladungen Q1-Q4 darstellt, die ein Floating-Gate einer nichtflüchtigen Speicherzelle gemäß beispielhaften Ausführungsformen zu einem beliebigen Zeitpunkt bei einer festen Drain-Spannung selektiv speichern kann;
    • 4A schematisch eine Reihe von Speicherzellen des NAND-Typs darstellt, die gemäß beispielhaften Ausführungsformen in einer Kette organisiert sind;
    • 4B schematisch ein zweidimensionales Speicherzellenarray darstellt, das gemäß beispielhaften Ausführungsformen eine Vielzahl von Ketten des NAND-Typs, wie des in 4A dargestellten Typs, aufweist;
    • 5 eine Seite von Speicherzellen zeigt, die, gemäß beispielhaften Ausführungsformen, parallel und in Bezug auf ein in einer Konfiguration des NAND-Typs organisiertes Speicherarray abgetastet oder programmiert werden;
    • 6A-C die Stufen der Programmierung von vier Zuständen einer Population von Speicherzellen des MLC-Typs gemäß beispielhaften Ausführungsformen darstellen;
    • 7 eine vertikale Kette des NAND-Typs eines dreidimensionalen Speicherarrays gemäß beispielhaften Ausführungsformen zeigt;
    • 8 eine perspektivische Ansicht eines repräsentativen Unterabschnitts eines monolithischen dreidimensionalen Speicherarrays des NAND-Typs gemäß beispielhaften Ausführungsformen ist;
    • 9A eine schematische Veranschaulichung eines Speicherlöschvorgangs in Bezug auf einen programmierbaren Transistor einer zweidimensionalen Speicherstruktur gemäß beispielhaften Ausführungsformen ist;
    • 9B eine schematische Veranschaulichung eines Speicherlöschvorgangs in Bezug auf einen programmierbaren Transistor einer dreidimensionalen Speicherstruktur gemäß beispielhaften Ausführungsformen ist;
    • 10 schematisch eine Konfiguration eines nichtflüchtigen Speicherarrays darstellt, auf die gemäß beispielhaften Ausführungsformen durch Lese-/Schreibschaltungen über Zeilen- und Spaltendecoder zugegriffen werden kann;
    • 11 ein Blockdiagramm eines einzelnen Lese-/Schreibmoduls gemäß einer beispielhaften Ausführungsform ist;
    • 12A schematisch eine Speichervorrichtung mit einer Bank von unterteilten Lese-/Schreibstapeln gemäß beispielhaften Ausführungsformen darstellt;
    • 12B schematisch die Speichervorrichtung von 12A in einer etwas anderen Konfiguration gemäß beispielhaften Ausführungsformen darstellt;
    • 13 schematisch verschiedene Komponenten eines Lese-/Schreibstapels, wie die in 12A dargestellten Lese-/Schreibstapel, gemäß beispielhaften Ausführungsformen darstellt;
    • 14A schematisch eine Vielzahl von Lese-/Schreibstapeln darstellt, die zwischen Lese-/Schreibschaltungen einer Speichervorrichtung, wie der in 12A dargestellten Speichervorrichtung, gemäß beispielhaften Ausführungsformen angeordnet sind;
    • 14B ein Blockdiagramm ist, das einen Abtastblock eines Lese-/Schreibstapels, wie die in 12A dargestellten Lese-/Schreibstapel, gemäß beispielhaften Ausführungsformen darstellt;
    • 15 gemäß beispielhaften Ausführungsformen einen inkrementell gestuften Ansatz für einen Bitscan-Prozess während eines Programmierverifizierungsvorgangs darstellt;
    • 16 ein Diagramm ist, das die vergleichende Programmierzeit (Tprog) (über die Zeit) einer Speicherstruktur bei Anwendung des in 15 dargestellten inkrementell gestuften Ansatzes gemäß beispielhaften Ausführungsformen darstellt;
    • 17 ein Diagramm ist, das den vergleichenden ICC-Strompegel (über die Zeit) durch eine Speicherstruktur zwischen einem SLC-Programmierverifizierungsvorgang mit einer einzigen Kette und einem SLC-Programmierverifizierungsvorgang mit allen Ketten gemäß beispielhaften Ausführungsformen darstellt; und
    • 18 ein Flussdiagramm ist, das im Allgemeinen die Schritte einer Programmierschleife einer Zielspeicherstruktur veranschaulicht, die ein entsprechendes gestuftes Abtast- und Bitscanverfahren gemäß beispielhaften Ausführungsformen verwendet.
  • DETAILLIERTE BESCHREIBUNG
  • Die folgende Beschreibung richtet sich an verschiedene beispielhafte Ausführungsformen der Offenbarung. Wenngleich eine oder mehrere dieser Ausführungsformen bevorzugt sein können, dürfen die offenbarten Ausführungsformen nicht als den Schutzumfang der Offenbarung, einschließlich der Ansprüche, einschränkend ausgelegt oder anderweitig verwendet werden. Außerdem wird der Fachmann erkennen, dass die folgende Beschreibung breite Anwendung hat und die ausführliche Erörterung einer beliebigen Ausführungsform nur beispielhaft für diese Ausführungsform sein soll und nicht implizieren soll, dass der Schutzumfang der Offenbarung, einschließlich der Ansprüche, auf diese bestimmte Ausführungsform beschränkt ist.
  • Mehrere Gesichtspunkte der vorliegenden Offenbarung können in Form einer Einrichtung, eines Systems, eines Verfahrens oder eines Computerprogramms ausgeführt sein. Daher können Gesichtspunkte der vorliegenden Offenbarung vollständig in Form einer Hardware- oder einer Software-Ausführungsform (einschließlich, aber nicht beschränkt auf Firmware, residente Software, Mikrocode oder dergleichen) vorliegen oder eine Kombination aus Hardware- und Softwarekomponenten sein, die im Allgemeinen als „Schaltung“, „Modul“, „Einrichtung“ oder „System“ bezeichnet werden können. Weiterhin können verschiedene Gesichtspunkte der vorliegenden Offenbarung die Form eines Computerprogrammprozesses annehmen, der zum Beispiel in einem oder mehreren nicht-transitorischen computerlesbaren Speichermedien verkörpert ist, die computerlesbaren und/oder ausführbaren Programmcode speichern.
  • Außerdem werden verschiedene Begriffe verwendet, um auf bestimmte Systemkomponenten Bezug zu nehmen. Verschiedene Firmen können auf die gleiche oder ähnliche Komponente mit unterschiedlichen Namen Bezug nehmen und diese Beschreibung beabsichtigt nicht, zwischen Komponenten zu unterscheiden, die sich im Namen, jedoch nicht in der Funktion unterscheiden. Soweit verschiedene in der folgenden Offenbarung beschriebene Funktionseinheiten als „Module“ bezeichnet werden, soll eine solche Charakterisierung die Bandbreite möglicher Implementierungsmechanismen nicht unangemessen einschränken. Zum Beispiel könnte ein „Modul“ als Hardwareschaltung implementiert werden, die kundenspezifische VLSI-Schaltungen (Very Large Scale Integration) oder Gate-Arrays oder handelsübliche Halbleiter, die Logikchips, Transistoren oder andere diskrete Komponenten einschließen, aufweist. In einem weiteren Beispiel kann ein Modul auch in einer programmierbaren Hardwarevorrichtung wie einem feldprogrammierbaren Gate Array (FPGA), einer programmierbaren Array-Logik, einer programmierbaren Logikvorrichtung oder dergleichen implementiert sein. Außerdem kann ein Modul auch, zumindest teilweise, durch Software implementiert werden, die von verschiedenen Prozessorentypen ausgeführt wird. Zum Beispiel kann ein Modul ein Segment von ausführbarem Code aufweisen, das einen oder mehrere physische oder logische Blöcke von Computeranweisungen enthält, die in ein Objekt, einen Prozess oder eine Funktion übersetzt werden. Es ist auch nicht erforderlich, dass die ausführbaren Abschnitte eines solchen Moduls physisch zusammen angeordnet sind, sondern sie können auch unterschiedliche Anweisungen aufweisen, die an verschiedenen Orten gespeichert sind und die, wenn sie zusammen ausgeführt werden, das identifizierte Modul aufweisen und den erklärten Zweck dieses Moduls erfüllen. Der ausführbare Code kann nur eine einzige Anweisung oder einen Satz mehrerer Anweisungen aufweisen, aber auch über verschiedene Codesegmente oder verschiedene Programme oder über mehrere Speichervorrichtungen usw. verteilt sein. Bei einer Software- oder Teilsoftwaremodul-Implementierung können die Softwareabschnitte auf einem oder mehreren computerlesbaren und/oder ausführbaren Speichermedien gespeichert werden, die ein elektronisches, magnetisches, optisches, elektromagnetisches, infrarotes oder halbleiterbasiertes System, eine Einrichtung oder Vorrichtung oder jede geeignete Kombination davon einschließen, aber nicht darauf beschränkt sind. Im Allgemeinen kann für die Zwecke der vorliegenden Offenbarung ein computerlesbares und/oder ausführbares Speichermedium jedes greifbare und/oder nicht-transitorische Speichermedium sein, das in der Lage ist, ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Einrichtung, einem Prozessor oder einer Vorrichtung zur Befehlsausführung zu enthalten und/oder zu speichern.
  • In ähnlicher Weise kann für die Zwecke der vorliegenden Offenbarung der Begriff „Komponente“ jede greifbare, physische und nicht-transitorische Vorrichtung aufweisen. Zum Beispiel kann eine Komponente in Form einer Hardwarelogikschaltung vorliegen, die kundenspezifische VLSI-Schaltungen, Gate-Arrays oder andere integrierte Schaltungen aufweist, oder sie kann aus handelsüblichen Halbleitern bestehen, die Logikchips, Transistoren oder andere diskrete Komponenten einschließen, oder aus anderen geeigneten mechanischen und/oder elektronischen Vorrichtungen. Darüber hinaus kann eine Komponente auch in programmierbaren Hardware-Vorrichtungen wie feldprogrammierbaren Gate-Arrays (FPGA), programmierbarer Array-Logik, programmierbaren Logikvorrichtungen usw. implementiert sein. Außerdem kann eine Komponente eine oder mehrere integrierte Schaltungsvorrichtungen auf Siliciumbasis, wie Chips, Die, Die-Ebenen und Gehäuse, oder andere diskrete elektrische Vorrichtungen aufweisen, die in einer elektrischen Kommunikationskonfiguration mit einer oder mehreren anderen Komponenten über elektrische Leiterbahnen, z. B. auf einer Leiterplatte (PCB) oder dergleichen, konfiguriert sind. Dementsprechend kann ein Modul, wie vorstehend definiert, in bestimmten Ausführungsformen durch eine Komponente verkörpert oder als Komponente implementiert werden, und in einigen Fällen können die Begriffe Modul und Komponente austauschbar verwendet werden.
  • Wenn hier der Begriff „Schaltung“ verwendet wird, weist er eine oder mehrere elektrische und/oder elektronische Komponenten auf, die einen oder mehrere leitfähige Pfade bilden, die es ermöglichen, dass elektrischer Strom fließt. Eine Schaltung kann in Form einer Konfiguration mit geschlossenem oder offenem Regelkreis konfiguriert sein. In einer Konfiguration mit geschlossenem Regelkreis können die Schaltungskomponenten einen Rückführweg für den elektrischen Strom bereitstellen. Im Gegensatz dazu können die Schaltungskomponenten in einer Konfiguration mit offenem Regelkreis immer noch als eine Schaltung angesehen werden, auch wenn sie keinen Rückführweg für den elektrischen Strom einschließen. Zum Beispiel kann eine integrierte Schaltung unabhängig davon als eine Schaltung bezeichnet werden, ob die integrierte Schaltung an Masse gekoppelt ist (als Rückführweg für elektrischen Strom) oder nicht. In bestimmten beispielhaften Ausführungsformen kann eine Schaltung einen Satz integrierter Schaltungen, eine einzige integrierte Schaltung oder einen Abschnitt einer integrierten Schaltung aufweisen. Zum Beispiel kann eine Schaltung kundenspezifische VLSI-Schaltungen, Gate-Arrays, Logikschaltungen und/oder andere Formen integrierter Schaltungen einschließen und kann handelsübliche Halbleiter, wie Logikchips, Transistoren oder andere diskrete Vorrichtungen einschließen. In einem weiteren Beispiel kann eine Schaltung eine oder mehrere integrierte Schaltungsvorrichtungen auf Siliciumbasis, wie Chips, Die, Die-Ebenen und Gehäuse, oder andere diskrete elektrische Vorrichtungen aufweisen, die in einer elektrischen Kommunikationskonfiguration mit einer oder mehreren anderen Komponenten über elektrische Leiterbahnen, zum Beispiel einer Schaltungsplatine (PCB), konfiguriert sind. Eine Schaltung könnte auch als synthetisierte Schaltung in Bezug auf eine programmierbare HardwareVorrichtung wie ein feldprogrammierbares Gate-Array (FPGA), programmierbare Array-Logik und/oder programmierbare Logikvorrichtungen usw. implementiert werden. In anderen beispielhaften Ausführungsformen kann eine Schaltung ein Netzwerk aus nicht integrierten elektrischen und/oder elektronischen Komponenten aufweisen (mit oder ohne integrierte Schaltungsvorrichtungen). Dementsprechend kann ein Modul, wie vorstehend definiert, in bestimmten Ausführungsformen durch eine Schaltung verkörpert oder als solche implementiert sein.
  • Es versteht sich, dass die hierin offenbarten Ausführungsformen in einigen Beispielen einen oder mehrere Mikroprozessoren und bestimmte gespeicherte Computerprogrammanweisungen aufweisen können, die den einen oder die mehreren Mikroprozessoren steuern, um in Verbindung mit bestimmten Nicht-Prozessor-Schaltungen und anderen Elementen einige, die meisten oder alle der hier offenbarten Funktionen zu implementieren. Alternativ könnten einige oder alle Funktionen durch eine Zustandsmaschine implementiert werden, die keine gespeicherten Programmanweisungen aufweist, oder in einer oder mehreren anwendungsspezifischen integrierten Schaltungen (ASICs) oder feldprogrammierbaren Gate-Arrays (FPGAs), in denen jede Funktion oder einige Kombinationen bestimmter Funktionen als kundenspezifische Logik implementiert sind. Eine Kombination dieser Ansätze kann ebenfalls verwendet werden. Ferner sind nachfolgende Bezugnahmen auf eine „Steuerung“ so definiert, dass sie einzelne Schaltungskomponenten, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Mikrocontroller mit Steuersoftware, einen digitalen Signalprozessor (DSP), ein feldprogrammierbares Gate-Array (FPGA) und/oder einen Prozessor mit Steuersoftware oder Kombinationen davon aufweisen.
  • Ferner beziehen sich die Begriffe „Programm“, „Software“, „Softwareanwendung“ und dergleichen, wie sie hierin verwendet werden können, auf eine Folge von Anweisungen, die zur Ausführung auf einem computerimplementierten System ausgelegt sind. Dementsprechend kann ein „Programm“, eine „Software“, eine „Anwendung“, ein „Computerprogramm“ oder eine „Softwareanwendung“ ein Unterprogramm, eine Funktion, eine Prozedur, ein Objektverfahren, eine Objektimplementierung, eine ausführbare Anwendung, ein Applet, ein Servlet, einen Quellcode, einen Objektcode, eine gemeinsam genutzte Bibliothek/dynamische Ladebibliothek und/oder eine andere Folge spezifischer Anweisungen einschließen, die zur Ausführung auf einem Computersystem ausgelegt ist.
  • Außerdem sind die Begriffe „koppeln“, „gekoppelt“ oder „koppelt“, wo sie hierin verwendet werden, entweder als direkte oder indirekte Verbindung zu verstehen. Wenn also eine erste Vorrichtung an eine zweite Vorrichtung koppelt oder an diese gekoppelt ist, kann diese Verbindung durch eine direkte Verbindung oder durch eine indirekte Verbindung über andere Vorrichtungen (oder Komponenten) und Verbindungen erfolgen.
  • Was die Verwendung von Ausdrücken wie „eine Ausführungsform“, „eine (1) Ausführungsform“, eine „beispielhafte Ausführungsform“, „eine „bestimmte Ausführungsform“ oder ähnlicher Begriffe betrifft, so sollen diese Begriffe anzeigen, dass ein spezifisches Merkmal, eine spezifische Struktur, eine spezifische Funktion, ein spezifischer Vorgang oder eine spezifische Eigenschaft, die im Zusammenhang mit der Ausführungsform beschrieben werden, in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Daher können sich Formulierungen wie „in einer (1) Ausführungsform“, „in einer Ausführungsform“, „in einer beispielhaften Ausführungsform“ usw. auf dieselbe Ausführungsform beziehen, müssen es aber nicht, sondern bedeuten „eine oder mehrere, aber nicht alle Ausführungsformen“, sofern nicht ausdrücklich etwas anderes angegeben ist. Ferner werden die Begriffe „aufweisend“, „mit“, „einschließend“ und Variationen davon in einer offenen Weise verwendet und sollten daher so ausgelegt werden, dass sie „einschließlich, aber nicht beschränkt auf ...“ bedeuten, sofern nicht ausdrücklich etwas anderes angegeben ist. Auch schließt ein Element, dem „weist ein/eine ... auf“ vorangestellt ist, ohne weitere Einschränkungen nicht aus, dass es zusätzliche identische Elemente in dem betreffenden Prozess, Verfahren, System, Artikel oder der Einrichtung gibt, die das Element aufweisen.
  • Die Begriffe „ein/eine“, und „der/die/das“ beziehen sich auch auf „ein/eine oder mehrere“, sofern nicht ausdrücklich etwas anderes angegeben ist. Darüber hinaus zeigt die Formulierung „mindestens eines von A und B“, wie sie hierin und/oder in den folgenden Ansprüchen verwendet werden kann, wobei A und B Variablen sind, die ein bestimmtes Objekt oder Attribut anzeigen, eine Auswahl von A oder B oder sowohl A als auch B an, ähnlich wie die Formulierung „und/oder“. Sind in einer solchen Formulierung mehr als zwei Variablen vorhanden, so ist diese Formulierung so definiert, dass sie nur eine der Variablen, eine beliebige der Variablen, eine beliebige Kombination (oder Unterkombination) einer der Variablen und alle Variablen einschließt.
  • Ferner wird hier der Begriff „ungefähr“ oder „etwa“ auf alle numerischen Werte angewandt, unabhängig davon, ob sie ausdrücklich angegeben werden oder nicht. Diese Begriffe beziehen sich im Allgemeinen auf einen Bereich von Zahlenwerten, die ein Fachmann als äquivalent zu den angegebenen Werten ansehen würde (z. B. weil sie dieselbe Funktion oder dasselbe Ergebnis aufweisen). In bestimmten Fällen können diese Begriffe numerische Werte einschließen, die auf die nächste signifikante Figur gerundet sind.
  • Darüber hinaus bedeutet eine Aufzählung von Elementen, die hierin dargelegt sind, nicht, dass einige oder alle der aufgeführten Elemente sich gegenseitig ausschließen und/oder einander einschließen, sofern nicht ausdrücklich etwas anderes angegeben ist. Ferner ist der Begriff „Satz“, wie er hierin verwendet wird, so auszulegen, dass er „einen oder mehrere“ bedeutet, und im Fall von „Sätzen“ ist er so auszulegen, dass er ein Vielfaches von (oder eine Vielzahl von) „einem oder mehreren“ und/oder „einem oder mehr“ gemäß der Mengenlehre bedeutet, sofern nicht ausdrücklich etwas anderes angegeben ist.
  • In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil davon bilden. Es versteht sich, dass die vorstehende Kurzdarstellung nur veranschaulichend ist und in keinster Weise einschränkend sein soll. Zusätzlich zu den vorstehend beschriebenen veranschaulichenden Gesichtspunkten, Ausführungsbeispielen und Merkmalen werden weitere Gesichtspunkte, Ausführungsformen und Merkmale unter Bezugnahme auf die nachfolgenden Zeichnungen und die detaillierte Beschreibung deutlich. Die Beschreibung von Elementen in jeder Figur kann sich auf Elemente von fortlaufenden Figuren beziehen. Gleiche Bezugsnummern können sich auf gleiche Elemente in den Figuren beziehen, einschließlich alternativer beispielhafter Ausführungsformen gleicher Elemente.
  • Unter Bezugnahme nun auf die Zeichnungen im Detail und beginnend mit 1 ist eine beispielhafte Ausführungsform eines Speichersystems 90 dargestellt und ist eine Veranschaulichung seiner Haupthardwarekomponenten. In dieser bestimmten Ausführungsform arbeitet das Speichersystem 90 und steht über eine Hostschnittstelle mit einer Hostvorrichtung 80 in Verbindung. Ferner weist das Speichersystem 90 eine Speichervorrichtung 102 auf, deren Vorgänge von einer Steuerung 100 gesteuert werden. Die Hostvorrichtung 80 kann eine beliebige Vorrichtung oder ein beliebiges System aufweisen, welche bzw. welches das Speichersystem 90 (z. B. eine Rechenvorrichtung) verwendet. Dementsprechend kann das Speichersystem 90 in Form einer entfernbaren Speicherkarte oder eines eingebetteten Speichersystems vorliegen. Zum Beispiel kann das Speichersystem 90 in einem Festkörperlaufwerk eingebettet sein, das in einem Laptop-Computer installiert ist. In einem weiteren Beispiel kann das Speichersystem 90 innerhalb der Hostvorrichtung 80 eingebettet sein, sodass der Host 80 und das Speichersystem 90 (einschließlich der Steuerung 100) auf einem einzigen integrierten Schaltungschip gebildet sind. In Ausführungsformen, in denen das Speichersystem 90 innerhalb einer Speicherkarte implementiert ist, kann die Hostvorrichtung 80 eine eingebaute Aufnahme für einen oder mehrere Typen von Speicherkarten oder Flash-Laufwerken (z. B. einen Anschluss für einen universellen seriellen Bus (USB-Anschluss) oder einen Speicherkartensteckplatz) einschließen. Ferner kann der Host 80 Adapter verwenden, in denen eine Speicherkarte angeschlossen ist.
  • Weiterhin Bezug nehmend auf 1, wie nachstehend ausführlich beschrieben, kann die Speichervorrichtung 102 ein oder mehrere Speicherarrays 200 einer Vielzahl von nichtflüchtigen Speicherzellen aufweisen, die über einen oder mehrere integrierte Schaltungschips verteilt sind. Und gemäß dieser bestimmten Ausführungsform kann die Steuerung 100 mehrere Komponenten einschließen, die Schnittstellenschaltungen 110, einen Prozessor 120, ROM (Nur-Lese-Speicher) 122, RAM (Direktzugriffsspeicher) 130 und zusätzliche Komponenten einschließen, ohne darauf beschränkt zu sein. Die Steuerung 100 kann zum Beispiel in Form einer oder mehrerer anwendungsspezifischen integrierten Schaltungen (ASIC) vorliegen, in der die in einer solchen ASIC enthaltenen Komponenten von der jeweiligen Anwendung abhängen.
  • In Bezug auf das Speicherarray 200 selbst stellt 2 eine schematische Darstellung einer einzelnen nichtflüchtigen Speicherzelle 10 gemäß einer beispielhaften Ausführungsform dar. Wie vorstehend erwähnt, kann die Speicherzelle 10 durch einen Feldeffekttransistor mit einer Ladungsspeichereinheit 20, wie einem Floating-Gate oder einer dielektrischen Schicht, implementiert sein. Außerdem weist die Speicherzelle 10 einen Source-Bereich 14 und einen Drain-Bereich 16 auf. Ferner ist ein Steuergate 30 über dem Floating-Gate 20 positioniert. Beispielhafte Typen nichtflüchtiger Speicherzellen mit dieser allgemeinen Struktur schließen, ohne darauf beschränkt zu sein, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM) und Flash- EEPROM, NAND (NICHT-UND)-Typzellen und Speichervorrichtungen, die dielektrische Speicherelemente verwenden (z. B. NROM™), ein. Während des Betriebs kann der Speicherzustand einer Zelle (z. B. programmiert oder gelöscht) gemäß bestimmten Ausführungsformen gelesen werden, indem der Leitungsstrom über die Source- und Drain-Elektroden der Speicherzelle abgetastet wird, wenn eine Referenzspannung an das Steuer-Gate 30 angelegt wird. Genauer kann für jede gegebene Ladung auf dem Floating-Gate 20 einer Speicherzelle ein entsprechender Leitungsstrom in Bezug auf eine feste Referenz-Steuergatespannung erfasst werden. Dementsprechend definiert, wie vorstehend beschrieben, der Bereich von Ladungen, die auf das Floating-Gate programmierbar sind, ein entsprechendes Schwellenspannungsfenster oder ein entsprechendes Leitungsstromfenster der Speicherzelle 10. Anstatt den Leitungsstrom innerhalb eines unterteilten Stromfensters zu erfassen, ist es auch möglich, die Schwellenspannung für einen bestimmten zu prüfenden Speicherzustand am Steuer-Gate 30 einzustellen und zu erfassen, ob der resultierende Leitungsstrom höher oder niedriger als ein Schwellenstrom (d. h. ein Zelllesereferenzstrom) ist. In einer solchen beispielhaften Implementierung wird die Erfassung des Leitungsstroms relativ zu einem Schwellenstrom durch Untersuchen einer Entladerate des Leitungsstroms durch die Kapazität einer jeweiligen Bitleitung (BL) erreicht.
  • 3 stellt eine graphische Darstellung der Korrelationen zwischen dem Source-Drain-Strom ID und der Steuer-Gate-Spannung VCG zum Beispiel für eine nichtflüchtige Speicherzelle 10 bereit, die vier verschiedene Ladungszustände Q1-Q4 aufweist, die das Floating-Gate zu einem beliebigen Zeitpunkt selektiv speichern kann. Wie dargestellt, gibt es bei einer festen Drain-Spannungsvorspannung vier feste ID gegen VCG-Kurven, die vier Ladungspegel (oder Zustände) darstellen, die auf ein Floating-Gate der Speicherzelle programmiert werden können, wobei die vier Ladungspegel jeweils vier von acht möglichen Speicherzuständen entsprechen. Daher kann in einem Beispiel das Schwellenspannungsfenster (Vth) einer Population von Speicherzellen zwischen 0,5 V und 3,5 V liegen. In einem solchen Beispiel können sieben programmierte Speicherzustände, die als „0“, „1“, „2“, „3“, „4“, „5“ bzw. „6“ zugeordnet sind, und ein gelöschter Zustand (in 3 nicht dargestellt) durch Unterteilung des Schwellenspannungsfensters (Vth) in Bereiche mit Intervallen von jeweils 0,5 V abgegrenzt werden. Dementsprechend kann bei Verwendung eines Referenzstroms IREF von 2 µA, wie dargestellt, davon ausgegangen werden, dass sich eine mit der Spannung Q1 programmierte Speicherzelle in einem Speicherzustand „1“ befindet, da sich ihre Kurve mit IREF im Bereich des Schwellenspannungsfensters (Vth) schneidet, das durch den Spannungsbereich VCG = 0,5 V und 1,0 V begrenzt wird. In ähnlicher Weise befindet sich Q4 in einem Speicherzustand „5“.
  • Somit ist, wie bereits vorstehend erwähnt, das Fenster der Schwellenspannung (Vth) umso feiner unterteilt, je mehr Zustände eine Speicherzelle 10 speichern kann. Zum Beispiel kann in einer Speicherzelle 10, die ein Schwellenspannungsfenster (Vth) von -1,5 V bis 5 V aufweist und damit eine mögliche maximale Breite (oder Verteilung) von 6,5 V und eine Speicherung über 16 Speicherzuständen bereitstellt, jeder Speicherzustand nur einen Spannungsbereich von z. B. 200 mV bis 300 mV einnehmen. Ein solch enger Spannungsbereich erfordert jedoch eine höhere Präzision sowohl bei der Programmierung als auch beim Lesen der Speichervorgänge, um die erforderliche Auflösung zu erreichen.
  • Gemäß bestimmten beispielhaften Ausführungsformen sind die einzelnen Speicherzellen 10 in einer oder mehreren Ketten organisiert, wobei jede Kette aus in Reihe geschalteten Speicherzellen aufweist. Zum Beispiel ist in 4A eine beispielhafte Ausführungsform einer Kette 50 dargestellt, die aus Speicherzellen des NAND-Typs besteht, die in einer Reihenkonfiguration angeordnet sind, wobei die Transistorelemente, d. h. M1, M2, ..., Mn (wobei „n“ gleich 4, 8,16 oder höher sein kann), an ihren Source- und Drain-Bereichen verkettet sind. Ferner weist, wie vorstehend in Bezug auf 2 erläutert, jeder der Speichertransistoren 10 in einer Kette 50 ein Ladungsspeicherelement 20 (z. B. ein Floating-Gate) zum Speichern einer bestimmten Ladungsmenge darin auf, um einen beabsichtigten Speicherzustand dieser Speicherzelle darzustellen, wobei jeder Speichertransistor 10 ein Steuer-Gate 30 aufweist, das eine Steuerung der Lese- und Schreibspeichervorgänge ermöglicht. Am Source-Anschluss 54 und am Drain-Anschluss 56 der Kette 50 sind Auswahltransistoren S1, S2 vorhanden, die die Verbindung des Speichertransistors mit dem überlagerten Speicherarray steuern. Insbesondere, wenn der Source-Auswahltransistor S1 eingeschaltet ist, ist der Source-Anschluss 54 der Kette 50 mit einer Source-Leitung (SL) gekoppelt. Gleichermaßen ist, wenn der Drain-Auswahltransistor S2 eingeschaltet ist, der Drain-Anschluss 56 der Kette 50 mit einer Bitleitung (BL) des Speicherarrays gekoppelt.
  • Um eine hierarchische Ebene nach außen zu erweitern, stellt 4B ein schematisches Diagramm dar, das eine beispielhafte Ausführungsform einer Speichermatrix 200 (wie die Speichermatrix 210) zeigt, die aus einer Vielzahl von NAND-Ketten 50 des in 4A veranschaulichten Typs besteht. Entlang jeder Spalte von NAND-Ketten 50 ist eine Bitleitung (BL) 36 mit dem Drain-Anschluss 56 jeder NAND-Kette 50 gekoppelt. Außerdem ist entlang jeder Bank von NAND-Ketten 50 eine Source-Leitung (SL) 34 mit den Source-Anschlüssen 54 jeder NAND-Kette 50 gekoppelt. Ferner sind die Steuer-Gates 30 der Speichertransistoren 10 in einer Reihe von Speicherzellen in der Bank von NAND-Ketten 50 mit derselben Wortleitung (WL) 42 verbunden. Wenn also ein adressierter Speichertransistor 10 in einer NAND-Kette 50 während eines Programmiervorgangs gelesen oder verifiziert wird, wird eine geeignete Spannung an sein Steuergate 30 angelegt. Gleichzeitig werden die verbleibenden nicht adressierten Speichertransistoren 10 innerhalb der NAND-Kette 50 vollständig eingeschaltet, indem eine ausreichende Spannung an ihre jeweiligen Steuer-Gates 30 angelegt wird. Dadurch entsteht ein elektrisch leitfähiger Pfad von der Source des adressierten Speichertransistors 10 zum Source-Anschluss 54 der NAND-Kette 50 und vom Drain des adressierten Speichertransistors 10 zum Drain-Anschluss 56 der Zelle.
  • Ferner stellen die Steuergates 32 der Auswahltransistoren S1, S2 jeder NAND-Kette 50 in der Speichermatrix 210 einen Steuerzugriff auf die NAND-Kette an ihrem Source-Anschluss 54 und Drain-Anschluss 56 bereit. Die Steuer-Gates 32 der Auswahltransistoren S1, S2 entlang einer Reihe in einer Bank von NAND-Ketten 50 sind mit derselben Auswahlleitung 44 verbunden. Somit kann eine ganze Reihe von Speicherzellen 10 in einer Bank von NAND-Ketten 50 adressiert werden, indem die entsprechenden Spannungen an den Wortleitungen (WL) 42 und Auswahlleitungen 44 der Bank von NAND-Ketten 50 angelegt werden.
  • Unter Bezugnahme nun auf 5 ist eine detaillierte Veranschaulichung einer Bank von NAND-Ketten 50 eines Speicherarrays 210 gemäß einer beispielhaften Ausführungsform davon dargestellt. Diese Ansicht ist besonders nützlich bei der Visualisierung einer zeilenweisen Konfiguration des Speicherarrays 210, wobei jede Zeile als physische „Seite“ bezeichnet werden kann. Dementsprechend ist eine physikalische Seite (z. B. die in 5 dargestellte Seite 60) eine Gruppe von Speicherzellen 10, die aktiviert werden kann, um parallel abgetastet oder programmiert zu werden. In einer solchen Konfiguration ist eine Seite die kleinste Einheit der Speichervorrichtung, die programmiert oder auf die geschrieben werden kann. Die Programmierung einer Seite erfolgt durch eine entsprechende Seite von Abtastverstärkern (SA) 212, wobei jeder Abtastverstärker mit einer jeweiligen NAND-Kette 50 über eine Bitleitung (BL) gekoppelt sein kann (siehe z. B. die Bitleitungen BL0, BL1, BL2,..., BLm-1 und BLm, wie in 5 dargestellt). Somit wird eine Seite 60 durch die Steuer-Gates der Vielzahl von Speicherzellen 10 auf der Seite 60 aktiviert, die mit einer gemeinsamen Wortleitung (WL) 42 verbunden sind, und jede Speicherzelle 10 der Seite 60 ist durch einen Abtastverstärker über eine Bitleitung 36 zugreifbar. Dementsprechend wird beim Programmieren oder Abtasten einer Seite 60 von Speicherzellen 10 eine Programmier- bzw. Abtastspannung an die gemeinsame Wortleitung (z. B. Wortleitung WL3 in Bezug auf die Seite 60) zusammen mit den geeigneten Spannungen an den Bitleitungen angelegt.
  • In Bezug auf die Art und Weise, wie Daten programmiert und gelöscht werden, ist es wichtig zu beachten, dass bei Flash-Speichern eine Speicherzelle aus einem gelöschten Zustand heraus programmiert werden muss. Mit anderen Worten muss ein Floating-Gate 20 zunächst entladen werden, wodurch die Speicherzelle in einen gelöschten Zustand versetzt wird, bevor ein Programmiervorgang dem Floating-Gate 20 wieder eine gewünschte Ladungsmenge zugeben kann. Somit kann der Ladungspegel eines Floating-Gates 20 nicht inkrementell von seinem früheren programmierten Pegel erhöht oder verringert werden. Daher ist es nicht möglich, dass Aktualisierungsdaten die vorhandenen Daten einer Speicherzelle 10 überschreiben. Vielmehr müssen die Aktualisierungsdaten auf einen früheren ungeschriebenen Ort programmiert werden.
  • Um die Leistung bei Löschvorgängen zu fördern, wird ein Array210 von Speicherzellen 10 zum Beispiel in eine große Anzahl von Blöcken von Speicherzellen unterteilt, wobei ein Block die kleinste Einheit der Speichervorrichtung ist, in der die enthaltenen Speicherzellen gemeinsam gelöscht werden können. Außerdem kann jeder Block von Speicherzellen 10 in eine Anzahl von physischen Seiten 60 unterteilt werden, wobei, wie vorstehend erwähnt, ein Programmiervorgang seitenweise durchgeführt wird. Dementsprechend ist eine logische Seite eine Programmier- oder Leseeinheit, die eine Anzahl von Bits enthält, die der Anzahl von Speicherzellen 10 in einer gegebenen physischen Seite entspricht.
  • Zur Veranschaulichung einer beispielhaften Ausführungsform der Programmierstufen zum Beispiel einer MLC-Speichervorrichtung, die aus einer Population von Speicherzellen mit vier Zuständen besteht, wird auf die 6A-C verwiesen.
  • Zur Veranschaulichung einer beispielhaften Ausführungsform der Programmierstufen zum Beispiel einer MLC-Speichervorrichtung, die aus einer Population von Speicherzellen mit vier Zuständen besteht, wird auf die 6A-C verwiesen. In 6A ist eine Population von Speicherzellen dargestellt, bei der das Fenster der charakteristischen Schwellenspannung (Vth) in vier verschiedene Spannungsverteilungen unterteilt ist, wobei jede Verteilung einem programmierbaren Speicherzustand entspricht (d. h. den Speicherzuständen „0“, „1“, „2“ und „3“). 6B veranschaulicht eine anfängliche Verteilung von „gelöschten“ Schwellenspannungen (Vth) für einen gelöschten Speicher. In 6C wurde ein Großteil der Speicherzellenpopulation so programmiert, dass die anfängliche „gelöschte“ Schwellenspannung einer gegebenen Speicherzelle 10 auf einen höheren Wert in eine der drei unterteilten Spannungszonen verschoben wird, die durch die Verifizierungspegel vV1, vV2 und vV3 abgegrenzt sind. Dementsprechend kann jede Speicherzelle auf einen der drei programmierbaren Zustände „1“, „2“ und „3“ programmiert oder im „gelöschten“ Zustand verbleiben. Auf Bitebene kann ein Zwei-Bit-Code, der zum Beispiel ein unteres und ein oberes Bit aufweist, zur Darstellung jedes der vier Speicherzustände verwendet werden. Zum Beispiel können, wie in 6C dargestellt, den Speicherzuständen „0“, „1“, „2“ und „3“ jeweils die Bitwerte „11“, „01“, „00“ und „10“ zugeordnet werden. In einem solchen Beispiel können die Zwei-Bit-Daten durch Abtastung in einem „Vollsequenz“-Modus aus dem Speicher gelesen werden, in dem die beiden Bits zum Beispiel zusammen durch Abtastung relativ zu den entsprechenden Leseabgrenzungsschwellenspannungen - rV1, rV2 und rV3 - in jeweils drei Unterdurchläufen abgetastet werden.
  • In den 4A-B und 5 und der vorangehenden entsprechenden Beschreibung wird im Allgemeinen ein zweidimensionales (oder planares) Speicherarray 210 beschrieben (das zum Beispiel in einer x-y-Ebene liegt), das Speicherzellen des NAND-Typs aufweisen kann. In einer alternativen Konfiguration kann ein Speicherarray jedoch die Form eines dreidimensionalen Arrays haben, das sich, anders als auf einer ebenen Oberfläche eines Halbleiterwafers, von der Waferoberfläche nach oben erstreckt und Stapel oder Spalten von Speicherzellen aufweist, die sich vertikal in einer Aufwärtsrichtung erstrecken (zum Beispiel in einer z-Richtung, die senkrecht zur x-y-Ebene verläuft). Dadurch erhöhen dreidimensionale Speicherstrukturen die Speicherdichte, verbrauchen aber weniger Chipfläche. In 7 ist zum Beispiel eine beispielhafte Ausführungsform einer 3D-NAND-Kette 701 dargestellt, die in ähnlicher Weise betrieben wird wie eine zweidimensionale NAND-Kette, wie die vorstehend beschriebene NAND-Kette 50. In dieser Konfiguration wird eine Speicherzelle an dem Verbindungspunkt einer vertikalen Bitleitung (BL) (siehe z. B. die lokale Bitleitung 703) und einer Wortleitung (siehe z. B. die Wortleitungen WL0, WL1 usw.) gebildet, wobei eine Ladungseinfangschicht, die sich zwischen der lokalen Bitleitung 703 und einer sich kreuzenden Wortleitung (WL) befindet, Ladung speichert. Um eine solche vertikale Kette 701 zu bilden, werden Stapel von Wortleitungen gebildet und Speicherbohrungen an den entsprechenden Stellen geätzt, an denen die Zellen gebildet werden sollen, wobei jede Speicherbohrung mit einer Ladungseinfangschicht ausgekleidet und mit einem geeigneten lokalen Bitleitungs-/Kanalmaterial gefüllt wird. Zusätzlich sind dielektrische Schichten für die notwendige Isolierung eingeschlossen. Ferner befinden sich an beiden Enden der NAND-Kette 701 Auswahl-Gates 705, 707, die den selektiven Anschluss an oder die Isolierung von externen Elementen 709, 711 ermöglichen, welche zum Beispiel leitfähige Leitungen (wie gemeinsame Sourceleitungen oder Bitleitungen) einschließen, die eine große Anzahl von Ketten 701 eines Speicherarrays bedienen. In der in 7 dargestellten Ausführungsform weist die vertikale NAND-Kette 701 32 Speicherzellen auf (d. h. an dem Verbindungspunkt zwischen der lokalen Bitleitung 703 und den Wortleitungen 0 bis 31), die in Reihe verbunden sind. Eine NAND-Kette 701 kann jedoch eine beliebige geeignete Anzahl von Speicherzellen aufweisen.
  • Unter erneuter Bezugnahme auf die Gesamtarchitektur eines Speichersystems, das zum Beispiel in 1 dargestellt ist, wird eine schematische Darstellung einer typischen Anordnung einer beispielhaften Speichervorrichtung 102 gezeigt. In dieser bestimmten Ausführungsform weist die Speichervorrichtung 102 einen oder mehrere Speicherchips 104 auf, wobei jeder Speicherchip 104 eine zwei- oder dreidimensionale Speicherstruktur 200 einschließen kann, wie die vorstehend in Bezug auf 4A-B, 5 und 6 beschriebenen zwei- und dreidimensionalen Speicherarrays sowie die zugehörige Steuerschaltlogik 115 und Lese-/Schreib-/Löschschaltungen 170. Die Speicherstruktur 200 kann zum Beispiel eine monolithische dreidimensionale Speicherstruktur aufweisen, in der mehrere Speicherebenen über (und nicht in) einem einzelnen Substrat wie einem Wafer ohne dazwischen liegende Substrate ausgebildet sind. Die Speicherstruktur 200 kann ferner aus jeder Art von nichtflüchtigem Speicher bestehen, der monolithisch in einer oder mehreren physischen Ebenen von Arrays von Speicherzellen ausgebildet ist, die über einen aktiven Bereich verfügen, der über einem Siliciumsubstrat angeordnet ist. Eine solche Speicherstruktur kann sich in einer nichtflüchtigen Speichervorrichtung befinden, in der die Schaltlogik, die dem Betrieb der Speicherzellen zugeordnet ist, über oder innerhalb des Substrats liegen kann.
  • Weiterhin Bezug nehmend auf 1 ist die Speicherstruktur 200 durch die Lese-/Schreib-/Löschschaltungen 170 über einen Zeilendecoder 130 und einen Spaltendecoder 132 zugänglich. Wie zuvor beschrieben, sind einzelne Speicherzellen der Speicherstruktur 200 über einen Satz ausgewählter Wortleitungen (WL) und Bitleitungen (BL) adressierbar. Insbesondere wählt der Zeilendecoder 130 wählt die eine oder die mehreren Wortleitungen aus und der Spaltendecoder 132 wählt eine oder mehrere Bitleitungen aus, um entsprechende Spannungen an die jeweiligen Gates/Drains des adressierten Speicherzellen anzulegen. Wie in 1 gezeigt, weisen die Lese-/Schreib-/Löschschaltungen 170 mehrere Abtastblöcke 180 (Abtastblock 1, Abtastblock 2, ..., Abtastblock p) auf, die über Bitleitungen mit den Speicherelementen der Speicherstruktur 200 verbindbar sind. Die Abtastblöcke 180 ermöglichen es Speicherzellen, die mit einer gemeinsamen Wortleitung (als „Seite“ von Speicherzellen bezeichnet) verbunden sind, die parallel gelesen oder programmiert werden sollen. In einigen Ausführungsformen ist eine Steuerung 100 in derselben Speichervorrichtung 102 wie der eine oder die mehreren Speicherchips 104 enthalten oder in anderen Ausführungsformen kann die Steuerung 100 getrennt von dem Speicherchip 104 angeordnet sein. In einigen Ausführungsformen kann sich die Steuerung 100 auf einem vollkommen anderen Chip als dem Speicherchip 104 befinden. Ferner kann in bestimmten Ausführungsformen jeder Speicherchip 104 seine eigene Steuerung 100 aufweisen oder in anderen Ausführungsformen kann eine Steuerung 100 unter mehreren Speicherchips 104 kommunizieren. Gemäß der beispielhaften Ausführungsform von 1 werden Befehle und Daten zwischen dem Host 80 und der Steuerung 100 über einen Datenbus 140 und zwischen der Steuerung 100 und dem einen oder mehreren Speicherchips 104 über Leitungen 150 übertragen. Gemäß bestimmten Ausführungsformen schließt der Speicherchip 104 Eingangs- und/oder Ausgangsstifte (E/A-Stifte) ein, die mit den Leitungen 150 verbunden sind.
  • Gemäß bestimmten beispielhaften Ausführungsformen verwaltet die Steuerung 100 Daten, die in der Speichervorrichtung 102 gespeichert und mit dem Host 80 kommuniziert werden. Die Steuerung 100 kann verschiedene Funktionalitäten aufweisen, die zum Beispiel das Formatieren des Speichers einschließen, um sicherzustellen, dass sie ordnungsgemäß arbeitet, schlechte Speicherkomponenten abbilden und Ersatzspeicherzellen zuweisen, die für zukünftige ausgefallene Zellen ersetzt werden sollen. Wenn ein Host 80 während des Betriebs Daten aus dem Speicher lesen oder in diesen schreiben muss, kommuniziert er mit der Steuerung 100. Wenn der Host eine logische Adresse bereitstellt, zu der Daten gelesen/geschrieben werden sollen, kann die Steuerung 100 die vom Host empfangene logische Adresse in eine physische Adresse im Speicher umwandeln. Alternativ kann der Host die physische Adresse bereitstellen. In weiteren Ausführungsformen kann die Steuerung 100 verschiedene Speicherverwaltungsfunktionen durchführen, wie, aber nicht beschränkt auf Abnutzungsausgleich (Verteilung von Schreibvorgängen, um zu vermeiden, dass bestimmte Speicherblöcke wiederholt beschrieben werden und dadurch abgenutzt werden) und Freispeichersammlung, bei der z. B. gültige Datenseiten aus einem vollen Speicherblock herausgenommen (oder verschoben) werden, damit der gesamte Block gelöscht und wiederverwendet werden kann.
  • Die Komponenten der Steuerung 100 können die Form einer gepackten funktionellen Hardwareeinheit (z. B. einer elektrischen Schaltung), konzipiert zur Verwendung mit anderen Komponenten, eines Abschnitts eines Programmcodes (z. B. Software oder Firmware) ausführbar durch einen (Micro-)Prozessor oder eine Verarbeitungsschaltlogik, die üblicherweise eine bestimmte Funktion von in Beziehung stehenden Funktionen ausführt, oder einer abgeschlossenen Hardware- oder Softwarekomponente, die eine Schnittstelle zum Beispiel mit einem größeren System hat, annehmen. In manchen beispielhaften Ausführungsformen kann jedes Modul eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), eine Schaltung, eine digitale Logikschaltung, eine analoge Schaltung, eine Kombination diskreter Schaltungen, Gatter oder irgendeine andere Art von Hardware oder Kombination davon einschließen. Alternativ oder zusätzlich kann jedes Modul Software einschließen, die in einer prozessorlesbaren Vorrichtung (z. B. einem Speicher) gespeichert ist, um einen Prozessor für die Steuerung 100 zu programmieren, um die gewünschteen Funktionen durchzuführen.
  • Zusätzlich arbeitet die Steuerschaltlogik 115 mit den Lese-/Schreib-/Löschschaltungen 170 zusammen, um Speichervorgänge (z. B. Lesen, Programmieren, Löschen usw.) auf der Speicherstruktur 200 durchzuführen, und schließt eine Zustandsmaschine 112, einen On-Chip-Adressdecodierer 114 und ein Leistungssteuermodul 116. Die Zustandsmaschine 112 stellt die Steuerung von Speichervorgängen auf Chip-Ebene bereit, die zum Beispiel das Programmieren bestimmter Speicherzellen auf unterschiedliche endgültige Zielzustände einschließen. Der On-Chip-Adressdecodierer 114 stellt eine Adressschnittstelle zwischen Adressen, die von einem Host 80 oder einer Steuerung 100 verwendet werden, an die Hardwareadresse, die von den Zeilen- und Spaltendecodierern 130, 132 verwendet wird, bereit. Das Leistungssteuermodul 116 steuert die Leistung und Spannungen, die den Wortleitungen und Bitleitungen während Speichervorgängen zugeführt werden. Somit kann das Leistungssteuermodul 116 Treiber für Wortleitungsschichten (in Bezug auf eine 3D-Speicherkonfiguration), Auswahltransistoren und Sourceleitungen aufweisen. Das Leistungssteuermodul 116 kann außerdem Ladungspumpen zum Generieren von Spannungen einschließen. Die Abtastblöcke 180 schließen Bitleitungstreiber ein. Jede einzelne oder jede Kombination von Steuerschaltlogik 115, Zustandsmaschine 112, Decodierern 114/130/132, Leistungssteuermodul 116, Abtastblöcken 180, Lese-/Schreib-/Löschschaltungen 170 und/oder Steuereinheit 100 kann als eine Steuerschaltung, welche die hierin beschriebenen Funktionen durchführt, betrachtet werden.
  • Wie vorstehend beschrieben, können Speicherzellen der Speicherstruktur 200 auf einer einzelnen Speichervorrichtungsebene in einem geordneten zweidimensionalen Array einer Vielzahl von Zeilen und/oder Spalten angeordnet sein. Alternativ kann ein dreidimensionales Speicherarray so angeordnet sein, dass Speicherzellen mehrere Ebenen oder mehrere Speichervorrichtungsebenen belegen, wodurch eine Struktur in drei Dimensionen gebildet wird (z. B. in x-, y- und z-Richtung, wobei die z-Richtung im Wesentlichen senkrecht ist und die x- und y-Richtungen im Wesentlichen parallel zur Hauptoberfläche des Halbleitersubstrats verlaufen). In einigen beispielhaften Ausführungsformen kann eine dreidimensionale Speicherstruktur 200 vertikal als Stapel mehrerer zweidimensionaler Speicherarrayvorrichtungsebenen angeordnet sein. In anderen beispielhaften Ausführungsformen kann eine dreidimensionale Speicherstruktur 200 als mehrere vertikale Spalten (wobei jede Spalte sich im Wesentlichen senkrecht zu der Hauptoberfläche des Substrats, d. h. in z-Richtung erstreckt) angeordnet sein, wobei jede Spalte mehrere Speicherzellen aufweist. In diesem Beispiel können die vertikalen Spalten in einer zweidimensionalen Konfiguration angeordnet sein (d. h. in der x-y-Ebene), wodurch eine dreidimensionale Anordnung gebildet wird, in der sich die Speicherzellen auf mehreren vertikal gestapelten Speicherebenen befinden. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicherarray bilden. Im Allgemeinen kann jedoch ein dreidimensionales NAND-Array konstruiert werden, indem eine zweidimensionale Speicherstruktur, wie die Strukturen 50 und 210 der 4A-B bzw. 5, in der vertikalen Richtung geneigt wird, die senkrecht zur x-y-Ebene ist (d. h., die z-Richtung), sodass jede y-z-Ebene der dreidimensionalen Struktur der Seitenstruktur von 5 entspricht, wobei jede Ebene an unterschiedlichen Stellen entlang der x-Achse liegt. Folglich verlaufen die globalen Bitleitungen (z. B. BL0,..., BLm, in 5) jeweils über die Oberseite der Speicherstruktur zu einem zugehörigen Abtastverstärker (z. B. SA0,..., SAm). Dementsprechend erstrecken sich die Wortleitungen (z. B. WL0,..., WLn, in 5) und die Source- und Auswahlleitungen (z. B. SSL0,..., SSLn bzw. DSL0,..., DSLn) in der x-Richtung, wobei der untere Teil jeder NAND-Kette (z. B. Kette 50) mit einer gemeinsamen Source-Leitung verbunden ist.
  • Unter Bezugnahme nun auf 8 ist eine schräge perspektivische Ansicht eines beispielhaften Teilbereichs einer Ausführungsform eines dreidimensionalen NAND-Speicherarrays 600 vom Typ Bit Cost Scalable („BiCS“) dargestellt, bei dem eine oder mehrere Ebenen von Speichervorrichtungen über einem einzigen Substrat ausgebildet sind. Der beispielhafte Teilbereich entspricht zwei der in 4B dargestellten Seitenstrukturen, wobei je nach der bestimmten Ausführungsform jede einem separaten Speicherblock entsprechen oder verschiedene Erweiterungen desselben Blocks sein kann. Gemäß der Ausführungsform liegen die NAND-Ketten nicht in der gleichen y-z-Ebene, sondern werden in y-Richtung gepresst, sodass die NAND-Ketten eine gestaffelte Konfiguration in x-Richtung aufweisen. Ferner sind die NAND-Ketten an der Oberseite des Arrays 600 entlang globaler Bitleitungen (BL) verbunden, die sich über mehrere dieser Teilbereiche des Arrays 600 erstrecken, die in der x-Richtung verlaufen. Darüber hinaus verlaufen auch globale gemeinsame Source-Leitung (SL) über mehrere Unterabschnitte des Speicherarrays 600 in x-Richtung und sind mit den Sources an der Unterseite der NAND-Ketten durch eine lokale Verbindungsleitung (LI) verbunden, die als lokale gemeinsame Source-Leitung der einzelnen Erweiterung fungiert. Je nach Ausführungsform können sich die globalen SourceLeitungen (SL) jedoch über das gesamte Speicherarray 600 oder nur über einen Teilbereich erstrecken. Auf der rechten Seite von 8 ist eine schematische Darstellung der grundlegenden Elemente einer der vertikalen NAND-Ketten 610 des Speicherarrays 600 dargestellt. Ähnlich wie die NAND-Kette 50 von 4A besteht die Kette 610 aus einer Reihe von miteinander verbundenen Speicherzellen. Die Kette 610 ist über ein Drain-Auswahl-Gate (SGD) mit einer zugehörigen Bitleitung (BL) verbunden. Ein Source-Auswahl-Gate (SDS) verbindet die Kette 610 über eine zugehörige lokale Source-Leitung (LI) mit einer globalen Source-Leitung (SL). Ferner sind in dieser bestimmten Ausführungsform mehrere Dummy-Zellen enthalten, die sich an den Enden der Kette 610 befinden. Aufgrund ihrer Nähe zu den Auswahl-Gates (SGD, SDS), und dadurch, ihrer Störanfälligkeit werden die Dummy-Zellen nicht zur Speicherung von Nutzerdaten verwendet.
  • Zurückkehrend auf die Programmier- und Löschspeichervorgänge in Bezug auf den nichtflüchtigen Speicher, können diese beiden Vorgänge im Allgemeinen wie folgt beschrieben werden. Wie vorstehend beschrieben, weist jede Zelle einen Floating-Gate-MOS-Transistor auf, wobei das Floating-Gate (FG) ein elektrisch isolierter Leiter ist. Dementsprechend wird bei der Programmierung einer Speicherzelle eine relativ hohe Spannung an das Steuer-Gate der Speicherzelle (bei einem zweidimensionalen Array) oder die entsprechende Wortleitung (WL) (bei einem dreidimensionalen Array) angelegt, und folglich werden Elektronen in das Floating-Gate injiziert, zum Beispiel mit Hilfe von Fowler-Nordheim-Tunneling (F-N). Die Datenbits werden dann durch Einfangen von Ladung auf dem Floating-Gate gespeichert, wobei der logische Wert durch seine Schwellenspannung und die Menge der gespeicherten elektrischen Ladung definiert ist. Umgekehrt werden zum Löschen einer Speicherzelle die Elektronen im Floating-Gate z. B. durch einen als Quantentunnelung bezeichneten Prozess zur Source und/oder zum Halbleitersubstrat entfernt. Genauer werden in einigen Ausführungsformen Elektronen aus der Ladungseinfangschicht (d. h. dem Floating-Gate) entfernt, indem eine niedrige Spannung an das Steuer-Gate angelegt und die Kanalspannung auf eine hohe Spannung erhöht wird, wodurch ein elektrisches Feld erzeugt wird, das bewirkt, dass Elektronen in das Halbleitersubstrat zurückgeschoben werden. Dieser Prozess ist in 9A schematisch veranschaulicht, die im Allgemeinen eine zweidimensionale NAND-Speicherzellenkonfiguration 1000 veranschaulicht, die ein Steuer-Gate 1010, ein Floating-Gate 1020 und das darunter liegende Halbleitersubstrat 1030 (z. B. Polysilicium) aufweist, das die Source- und Drain-Anschlüsse der Speicherzelle aufweist (siehe 1040 bzw. 1050). Gemäß dieser bestimmten Ausführungsform wird an das Steuer-Gate 1010 eine relativ niedrige Spannung (z. B. 0,5 V) und an den Substratkörper 1030 eine relativ hohe Spannung VERA (z. B. 20 V) angelegt, was dazu führt, dass die am Floating-Gate 1020 eingefangenen Elektronenladungen (-) in das Substrat 1030 zurückgeschoben werden. In ähnlicher Weise ist in 9B eine schematische Ansicht eines allgemeinen Löschprozesses in Bezug auf eine dreidimensionale NAND-Speicherzellenkonfiguration 1100 gemäß einer beispielhaften Ausführungsform dargestellt. Hier wird eine relativ niedrige Spannung (z. B. -0,5 V) an die geeignete Wortleitung 1110 und eine relativ hohe Spannung VERA (z. B. -20 V) an einen Kanal 1140 der Speicherstruktur 1130 angelegt, wobei der Kanal aus Bohrungen besteht. Infolgedessen werden die Elektronenladungen (-) aus der Ladungseinfangschicht 1120 verdrängt.
  • Unter erneuter Bezugnahme auf die Gesamtarchitektur eines Speichersystems, das zum Beispiel in 1 dargestellt ist, wird in 10 eine schematische Darstellung einer typischen Anordnung eines Speicherarrays eines solchen Systems veranschaulicht. In dieser beispielhaften Ausführungsform ist ein nichtflüchtiges Speicherarray 200 dargestellt, auf das Lese-/Schreibschaltungen 170 über Zeilendecodierer 140 und Spaltendecodierer 160 zugreifen. Wie vorstehend beschrieben, sind einzelne Speicherzellen des Speicherarrays 200 über einen Satz ausgewählter Wortleitung(en) und Bitleitung(en) adressierbar. Der Zeilendecodierer 140 wählt eine oder mehrere Wortleitungen und der Spaltendecodierer 160 wählt eine oder mehrere Bitleitungen aus, um geeignete Spannungen an die jeweiligen Gates der adressierten Speicherzellen anzulegen. Ferner werden Lese-/Schreibschaltungen 170 bereitgestellt, um die Speicherzustände der adressierten Speicherzellen zu lesen oder zu schreiben, wobei die Lese-/Schreibschaltungen 170 eine Anzahl von Lese-/Schreibmodulen aufweisen, die über Bitleitungen mit den Speicherelementen des Arrays 200 verbindbar sind. Ein schematisches Blockdiagramm eines solchen Lese-/Schreibmoduls 190 ist in 11 gemäß einer beispielhaften Ausführungsform davon bereitgestellt. Während des Betriebs bestimmt ein Abtastverstärker 150 während eines Lese- oder Verifizierungsschritts den Strom, der durch den Drain einer adressierten Speicherzelle fließt, die über eine ausgewählte Bitleitung verbunden ist. Der vom Abtastverstärker 150 erfasste Pegel wird von einer Pegel-zu-Bit-Umwandlungslogik in einen Satz von Datenbits umgewandelt, die in einem Datenlatch 155 gespeichert werden. Nun Bezug nehmend auf 10 sind Lese/Schreibschaltungen 170 in Bänken von Lese/Schreibstapeln 180 organisiert, wobei jeder Lese/Schreibstapel 180 ein Stapel von Lese/Schreibmodulen 190 ist.
  • Unter Bezugnahme auf 12A ist eine beispielhafte Ausführungsform einer Speichervorrichtung (wie die Speichervorrichtung 102 in 1) dargestellt, die aus einem nichtflüchtigen Speicherarray 300 (das SLC-, MLC-, TLC- und/oder QLC-Speicherzellen des NAND-Typs einschließen kann, die in einer zwei- oder dreidimensionalen Konfiguration vorliegen), einer Steuerschaltlogik 310 und Lese-/Schreibschaltungen 370 besteht. Ferner bestehen die Schreib-/Leseschaltungen 370, wie dargestellt, aus einer oder mehreren Bänke von partitionierten Schreib-/Lesestapeln 400, wodurch das parallele Lesen oder Programmieren eines Blocks (oder einer „Seite“) von Speicherzellen ermöglicht wird, wobei gemäß einer beispielhaften Ausführungsform eine „Seite“ von Speicherzellen eine zusammenhängende Zeile von Speicherzellen darstellt. Das Speicherarray 300 ist durch Wortleitungen über einen Zeilendecodierer 330 und durch Bitleitungen über einen Spaltendecodierer 360 adressierbar. Alternativ kann das Speicherarray 300 Zeilen von Speicherzellen aufweisen, die in mehrere Blöcke oder Seiten partitioniert sind. Somit wird in einer solchen beispielhaften Ausführungsform ein Block-Multiplexer 350 bereitgestellt, um die Lese-/Schreibschaltungen 370 an die einzelnen Blöcke zu multiplexen.
  • In Bezug auf die Steuerschaltlogik 310 arbeitet diese mit den Lese/Schreibschaltungen 370 zusammen, um Speichervorgänge auf dem Speicherarray 300 durchzuführen. In dieser bestimmten Ausführungsform schließt die Steuerschaltlogik 310 eine Zustandsmaschine 312, einen On-Chip-Adressdecodierer 314 und eine Leistungssteuerung 316 ein. Die Zustandsmaschine 312 stellt eine Steuerung von Speichervorgängen auf Chipebene bereit. Der On-Chip-Decodierer 314 stellt eine Adressschnittstelle zwischen derjenigen, die von dem Host oder einer Speichersteuerung verwendet wird, an die Hardwareadresse, die von den Decodierern 330 und 360 verwendet wird, bereit. Schließlich steuert die Leistungssteuerung 316 die Leistung und Spannungen, die den Wortleitungen und Bitleitungen während Speichervorgängen zugeführt werden.
  • 12B stellt eine leicht abweichende beispielhafte Ausführungsform der Speichervorrichtung von 12A dar. In dieser bestimmten Ausführungsform ist der Zugriff auf das Speicherarray 300 durch die verschiedenen peripheren Schaltungen auf eine symmetrische Weise auf gegenüberliegenden Seiten des Speicherarrays 300 implementiert. Folglich werden die Zugriffsleitungen und die Schaltlogik auf jeder Seite des Speicherarrays 300 im Vergleich zur Konfiguration in 12A auf die Hälfte reduziert. Insbesondere wird der Zeilendecodierer 330 in mehrere Zeilendecodierer 330A, 330B aufgeteilt, und der Spaltendecodierer 360 wird in mehrere Spaltendecodierer 360A, 360B aufgeteilt. Außerdem wird in einer solchen Ausführungsform, in der eine Zeile von Speicherzellen in mehrere Blöcke partitioniert ist, der Block-multiplexer 350 in mehrere Block-Multiplexer 350A, 350B aufgeteilt. Die Lese-/Schreibschaltungen 370 werden gleichermaßen in Lese-/Schreibschaltungen 370A (die mit Bitleitungen von der Unterseite des Speicherarrays 300 verbunden sind) und Lese-/Schreibschaltungen 370B (die mit Bitleitungen von der Oberseite des Speicherarrays 300 verbunden sind) geteilt. Dementsprechend ist die Dichte der Lese-/Schreibmodule (sowie die partitionierten Lese-/Schreibstapel 400) im Wesentlichen um die Hälfte reduziert.
  • Unter Bezugnahme auf 13 wird eine beispielhafte Ausführungsform bestimmter Komponenten in einem Lese-/Schreibstapel, wie den Lese-/Schreibstapeln 400 von 12A, veranschaulicht. Gemäß dieser bestimmten Architektur weist ein Lese-/Schreibstapel 400 einen Stapel von Abtastverstärkern 212 zum Abtasten einer „k“ Anzahl von Bitleitungen, ein E/A-Modul 440 zur Eingabe oder Ausgabe von Daten über einen E/A-Bus 231, einen Stapel von Datenlatches 430 zum Speichern von Eingabe- und/oder Ausgabedaten, einen gemeinsamen Prozessor 500 zum Verarbeiten und Speichern von Daten zwischen dem Lese-/Schreibstapel 400 und einen Stapelbus 421 zur Kommunikation zwischen den Komponenten des Lese-/Schreibstapels 400 auf. Zusätzlich stellt eine Stapelbussteuerung Steuer- und Zeitsteuersignale über Leitungen 411 zum Steuern der verschiedenen Komponenten des Lese-/Schreibstapels 400 bereit. 14A stellt eine beispielhafte Ausführungsform zum Integrieren des Lese-/Schreibstapels 400 der Ausführungsform von 13 zwischen den Lese-/Schreibschaltungen 370 der in 12A-12B dargestellten Speichervorrichtungen dar. Wie vorstehend angegeben, arbeitet jedes der Lese-/Schreibstapel 400 auf einer Gruppe von „k“ Anzahl von Bitleitungen parallel. Wenn also eine Seite im Speicherarray 300 p=r*k Bitleitungen aufweist, gibt es eine Anzahl von „r“ Lese-/Schreibstapeln - d.h. Lese-/Schreibstapel 400-1,..., 400-r. Dementsprechend ermöglicht die gesamte Bank von partitionierten Lese-/Schreibstapeln 400-1, ..., 400-r, die parallel arbeiten, das parallele Lesen oder Programmieren eines Blocks (oder einer Seite) von p Zellen entlang einer Zeile, wobei es p Lese-/Schreibmodule für die gesamte Zeile von Zellen gibt. Da jeder Lese-/Schreibstapel 400-1, ..., 400-r„k‟ Speicherzellen bedient, kann die Gesamtzahl der Lese-/Schreibstapel in einer Bank als r=p/k ausgedrückt werden. Ferner weist in diesem Beispiel jeder Lese-/Schreibstapel dementsprechend einen Stapel von Abtastverstärkern 212-1,..., 212-k auf, der ein Segment von „k“ Speicherzellen parallel bedient. Darüber hinaus weist jeder Lese-/Schreibstapel entsprechend einen Stapel von Datenlatches 430-1,..., 430-k auf, wobei jeder Datenlatch einer Speicherzelle zugeordnet ist. Als solches gibt es ein E/A-Modul 440, das die Datenlatches 430-1, ..., 430-k zum externen Datenaustausch über einen E/A-Bus 231 aktiviert.
  • Weiterhin Bezug nehmend auf 14A ist auch eine Stapelbussteuerung 410 dargestellt, die Signale von der Speichersteuerung 310 (über die Leitungen 311) empfängt und ihrerseits Steuer- und Zeitsteuersignale an die Schreib-/Leseschaltungen 370 über die Leitungen 411 bereitstellt. Die Kommunikation zwischen den Lese-/Schreibstapeln 400 erfolgt über einen Stapelbus, der von der Stapelbussteuerung 410 gesteuert wird. Daher stellen die Steuerleitungen 411 Steuer- und Taktsignale von der Stapelbussteuerung 410 für die Komponenten der Lese-/Schreibstapel 400-1, ..., 400-r bereit. In diesem bestimmten Beispiel ist der verbindende Stapelbus in einen SABus 422 und einen DBus 423 unterteilt, wobei der SABus 422 die Kommunikation zwischen dem gemeinsamen Prozessor 500 und den Abtastverstärkern 212-1, ..., 212-k bereitstellt, und der DBus 423 einen Kommunikationsweg zwischen dem gemeinsamen Prozessor 500 und dem Stapel von Datenlatches 430-1, ..., 430-k bereitstellt. In Bezug auf den gemeinsamen Prozessor 500 weist dieser ferner einen Ausgang 507 zur Ausgabe eines Statussignals eines Speichervorgangs, wie eines Fehlerzustands, auf. Wie in 14A dargestellt, kann dieses Statussignal zum Beispiel dazu verwendet werden, ein Gatter eines n-Transistors 550 anzutreiben, das mit einem Flag-Bus 509 in einer Wired-Or-Konfiguration verbunden ist, wobei der Flag-Bus 509 von der Steuerung 310 vorgeladen wird und heruntergezogen wird, wenn ein Statussignal von einem der Lese-/Schreibstapel 400-1, ..., 400-r aktiviert wird.
  • Ferner ist eine beispielhafte Ausführungsform eines einzelnen Abtastblocks (wie von einem Lese-/Schreibstapel 400 eingeschlossen) in 14B dargestellt. Der Abtastblock 400 ist in einen oder mehrere Kernabschnitte, die Abtastmodule 480 oder Abtastverstärker aufweisen, und in einen gemeinsamen Abschnitt, der als Verwaltungsschaltung 490 bezeichnet wird, partitioniert. In einer Ausführungsform gibt es ein getrenntes Abtastmodul 480 für jede Bitleitung und eine gemeinsame Verwaltungsschaltung 490 für einen Satz von mehreren, z. B. vier oder acht, Abtastmodulen 480. Jedes der Abtastmodule in einer Gruppe kommuniziert mit der zugehörigen Verwaltungsschaltung über Datenbus 472. Somit gibt es eine oder mehrere Verwaltungsschaltungen, die mit den Abtastmodulen eines Satzes von Speicherelementen 10 kommunizieren.
  • Das Abtastmodul 480 weist die Abtastschaltlogik 470 auf, die ein Abtasten durchführt, indem sie bestimmt, ob sich ein Leitungsstrom in einer verbundenen Bitleitung oberhalb oder unterhalb eines vorbestimmten Schwellenwertpegels befindet. Das Abtastmodul 480 schließt auch einen Bitleitungslatch 482 ein, der dazu verwendet wird, einen Spannungszustand an der verbundenen Bitleitung einzustellen. Zum Beispiel ergibt ein vorbestimmter Zustand, der in einem Bitleitungslatch 482 zwischengespeichert ist, die verbundene Bitleitung, die in einen Zustand gezogen wird, der eine Programmiersperrung bezeichnet (z. B. 1,5 bis 3 V). Als ein Beispiel kann eine Flag=0 ein Programmieren verhindern, während Flag=1 ein Programmieren nicht verhindert.
  • In der beispielhaften Ausführungsform von 14B weist die Verwaltungsschaltung 490 einen Prozessor 492, vier beispielhafte Sätze von Daten-Latches 494, 495, 496 und 497 und eine E/A-Schnittstelle 496 auf, die zwischen den Sätzen von Datenlatches 494-497 und dem Datenbus 231 gekoppelt ist. Ein Satz von Datenlatches kann für jedes Abtastmodul 480 bereitgestellt werden und Datenlatches, die durch XDL, DDL, ADL, BDL und CDL identifiziert werden, können für jeden Satz bereitgestellt werden. In einigen Fällen können zusätzliche Datenlatches verwendet werden. In einem beispielhaften Ansatz speichert in einer Speichervorrichtung, die acht Datenzustände verwendet, XDL die Benutzerdaten, DDL speichert eine Anzeige, ob die Schnelldurchlauf-Schreibprogrammierung verwendet wird, ADL speichert eine untere Datenseite, BDL speichert eine mittlere Datenseite, und CDL speichert eine obere Datenseite.
  • Der Prozessor 492 führt Berechnungen durch, um zum Beispiel die Daten, die in dem abgetasteten Speicherelement gespeichert sind, zu bestimmen und die bestimmten Daten in dem Satz von Datenlatches zu speichern. Jeder Satz von Datenlatches 494-497 wird verwendet, um Datenbits, die von dem Prozessor 492 während eines Lesevorgangs bestimmt werden, zu speichern und Datenbits, die aus dem Datenbus 231 während eines Programmiervorgangs importiert werden, zu speichern, die Schreibdaten darstellen, die in den Speicher programmiert werden sollen. Die E/A-Schnittstelle 496 stellt eine Schnittstelle zwischen Datenlatches 494-497 und dem Datenbus 231 bereit.
  • Während des Lesens steht der Betrieb des Systems unter der Steuerung der Zustandsmaschine 312, welche die Zufuhr verschiedener Steuer-Gate-Spannungen zu dem adressierten Speicherelement 10 steuert. Da es die verschiedenen vordefinierten Steuer-Gate-Spannungen entsprechend den verschiedenen Speicherzuständen, die von dem Speicher unterstützt werden, schaltet, kann das Abtastmodul 480 bei einer dieser Spannungen auslösen und eine entsprechende Ausgabe wird für den Prozessor 492 von dem Abtastmodul 480 über Bus 472 bereitgestellt. An diesem Punkt bestimmt der Prozessor 492 den sich ergebenden Speicherzustand unter Berücksichtigung des Auslöseereignisses/der Auslöseereignisse des Abtastmoduls und der Information über die angelegte Steuer-Gate-Spannung von der Zustandsmaschine über die Eingabeleitungen 493. Er berechnet dann eine binäre Codierung für den Speicherzustand und speichert die resultierenden Datenbits in Datenlatches 494-497. In einer anderen Ausführungsform der Verwaltungsschaltung 490 arbeitet das Bitleitungslatch 482 in doppelter Funktion, sowohl als Latch zum Zwischenspeichern der Ausgabe des Sensormoduls 480 als auch als Bitleitungslatch wie vorstehend beschrieben.
  • Während Programmier- oder Verifizierungsvorgängen werden die zu programmierenden Daten (Schreibdaten) in dem Satz von Datenlatches 494-497 von dem Datenbus 231 gespeichert. Der Programmiervorgang weist unter der Steuerung der Zustandsmaschine 312 eine Reihe von Programmierspannungsimpulsen auf, die an die Steuer-Gates der adressierten Speicherelemente angelegt werden. Jeder Programmierspannungsimpuls wird von einem Rücklesen (Verifizieren) gefolgt, um zu bestimmen, ob das Speicherelement in den gewünschten Speicherzustand programmiert worden ist. In einigen Fällen überwacht der Prozessor 492 den Zustand des zurückgelesenen Speicherzustands in Bezug auf den gewünschten Speicherzustand. Wenn beide in Übereinstimmung sind, stellt der Prozessor 492 das Bitleitungslatch 482 ein, um zu bewirken, dass die Bitleitung in einen Zustand gezogen wird, der eine Programmiersperrung bezeichnet. Dies verhindert, dass das Speicherelement, das an die Bitleitung gekoppelt ist, weiter programmiert wird, selbst wenn Programmierimpulse auf seinem Steuergate erscheinen. Bei anderen Ausführungsformen lädt der Prozessor anfangs das Bitleitungslatch 482 und die Abtastschaltlogik stellt ihn während des Verifizierverfahrens auf einen Sperrwert ein.
  • Wie erwähnt kann jeder Satz von Datenlatches 494-497 kann als ein Stapel von Datenlatches für jedes Abtastmodul implementiert sein. In einer Ausführungsform liegen drei Datenlatches pro Abtastmodul 480 vor. In einigen Implementierungen sind die Datenlatches gemäß einem Schieberegister implementiert, sodass die darin gespeicherten parallelen Daten in serielle Daten für den Datenbus 231 umgewandelt werden und umgekehrt. Alle Datenlatches, die dem Lese-/Schreibblock von M Speicherelementen entsprechen, können zum Beispiel miteinander verbunden werden, um ein Blockschieberegister zu bilden, sodass ein Datenblock durch serielle Übertragung eingegeben oder ausgegeben werden kann. Insbesondere kann die Bank von Lese/Schreibmodulen so angepasst werden, dass jeder ihres Satzes von Datenlatches Daten sequentiell in den Datenbus hinein oder aus diesem heraus verschiebt, als ob sie Teil eines Schieberegisters für den gesamten Lese-/Schreibblock seien.
  • Die Datenlatches identifizieren, wann ein zugehöriges Speicherelement 10 bestimmte Abschnitte in einem Programmiervorgang erreicht hat. Zum Beispiel können Latches identifizieren, ob sich eine Vth eines Speicherelements unterhalb eines bestimmten Verifizierpegels befindet. Die Datenlatches geben an, ob ein Speicherelement gegenwärtig ein oder mehrere Bits aus einer Seite von Daten speichert. Zum Beispiel wird in einer beispielhaften Ausführungsform der ADL-Latch umgedreht (z. B. von 0 auf 1), wenn ein niedrigeres Seitenbit in einem zugehörigen Speicherelement gespeichert ist. Ferner wird ein UDL-Latch umgedreht, wenn ein mittleres Seitenbit in einem zugehörigen Speicherelement gespeichert ist. Und ein UDL-Latch wird umgedreht, wenn ein oberes Seitenbit in einem zugehörigen Speicherelement gespeichert ist. Ein Bit wird in einem Speicherelement gespeichert, wenn die Vth einen zugehörigen Verifizierpegel überschreitet.
  • Die vorstehende Erläuterung beschreibt nur mehrere nicht einschränkende Ausführungsformen nichtflüchtiger Speichersysteme und Vorrichtungen. Jedes dieser Systeme und Vorrichtungen sowie andere beispielhafte Ausführungsformen können, wie vorstehend erwähnt, sowohl in binärer Form (SLC) als auch in Form von Mehrzustand- oder Mehrstufensystemen (z. B. MLC oder TLC) betrieben werden, wobei jedes Schema unterschiedliche vergleichbare Vor- und Nachteile aufweist, einschließlich der Überlegungen hinsichtlich Zuverlässigkeit, Dauerhaftigkeit, Geschwindigkeit und Kosten pro Bit. Zum Beispiel können, wie vorstehend beschrieben, Daten in binärer Form schneller und mit weniger kritischen Toleranzen geschrieben werden als in der Form mit mehreren Zuständen. Dies ist zum Teil darauf zurückzuführen, dass ein SLC-Programmierschema aus einer einzigen Programmierschleife besteht (d. h. einen einzigen Programmierimpuls und einen Verifizierungsvorgang).
  • Tatsächlich kann unter bestimmten Bedingungen die für einen TLC-Programmiervorgang benötigte Zeit das Dreifache der Zeitmenge betragen, die sonst für die Programmierung der gleichen Datenmenge gemäß einem SLC- oder MLC-Programmierschema benötigt wird. Dementsprechend kann es bei einigen Datenspeicherungsanwendungen von Vorteil sein, ein binäres SLC-Programmierschema insgesamt oder alternativ als Anfangsstufe in einem internen Faltungsprozess einzusetzen. In solchen Anwendungen können verschiedene Maßnahmen implementiert werden, um die Effizienz des SLC-Programmiervorgangs weiter zu steigern, indem die Programmiergeschwindigkeit erhöht wird (d. h. durch Verkürzung der Programmierzeit Tprog). Zum Beispiel ist es möglich, statt nach jedem einzelnen Programmierimpuls einen Verifizierungsvorgang pro Kette oder pro Speicherelement durchzuführen, einen Verifizierungsvorgang pro Zeichenkette oder pro Speicherelement zu verzögern, bis die Programmierung aller ausgewählten Ketten oder Speicherelemente abgeschlossen ist. Sobald der Programmiervorgang vollständig abgeschlossen ist, wird nur ein einziger Verifizierungsvorgang auf alle ausgewählten Ketten oder Speicherelemente angewendet. Aufgrund dieses kombinierten Ansatzes aus einem SLC-Programmiervorgang mit einem Impuls und einem Verifizierungsvorgang, bei dem „alle Ketten“ oder „alle Elemente“ ausgewählt werden, wird die Programmierzeit (Tprog) reduziert und gleichzeitig sichergestellt, dass keine größeren Ausfälle in Bezug auf eine Kette (oder ein Speicherelement) übersehen werden.
  • In einem weiteren Beispiel einer effizienzverbessernden Maßnahme für ein Programmierschema gemäß beispielhaften Ausführungsformen kann es möglich sein, nur einen Abschnitt der Speicherzellen für den Bitscan während der Programmverifizierungsphase auszuwählen, sobald alle Speicherzellen abgetastet sind. 15 zeigt eine beispielhafte Ausführungsform von drei nicht einschränkenden Konfigurationen („A“, „B“ und „C“), in denen ein partielles oder „gestuftes“ Bit-Scan-Verfahren durchgeführt werden kann. Zur allgemeinen Veranschaulichung ist dieser Ansatz in 15 anhand eines repräsentativen Bereichs 800 einer dreidimensionalen nichtflüchtigen Speicherstruktur dargestellt, die aus Ketten null bis drei besteht. In einer ersten Konfiguration „A“ wird nur eine von 16 Speicherzellen (oder Bohrungen) pro Seite der programmierbaren Speicherzellen für den Bitscan ausgewählt. Der Ansatz dieser Konfiguration kann somit als „einstufig“ bezeichnet werden. In einer zweiten Konfiguration „B“ werden in einem „zweistufigen“ Ansatz zwei von 16 Speicherzellen pro Seite für den Bitscan ausgewählt. Ferner werden in einer dritten Konfiguration „C“ vier von jeweils 16 Speicherzellen pro Seite für den Bitscan in einem „vierstufigen“ Ansatz ausgewählt. Durch die Auswahl nur eines Abschnitts der Zellen für den Bitscan, um das Bestehen oder Nichtbestehen des Programms gemäß einem gestuften Ansatz zu bestimmen, anstatt den Bitscanvorgang auf alle Zellen anzuwenden, kann eine beträchtliche Verkürzung der Programmierzeit (Tprog) erhalten werden. 16 stellt eine vergleichende Analyse der Programmierzeit (Tprog) bereit, die für den Abschluss eines Bitscanvorgangs gemäß den experimentellen Daten, die bei einem einstufigen, zweistufigen, vierstufigen und einem Ansatz mit allen Stufen bereitgestellt wurden, benötigt wird. Wie erwartet, führte jede Verringerung der Anzahl der für den Bitscan ausgewählten Speicherzellen zu einer inkrementellen Verkürzung der Programmierzeit. Genauer ergab sich gemäß diesen bestimmten experimentellen Daten bei einem einstufigen Ansatz eine Einsparung an Programmierzeit (Tprog) in der Größenordnung von etwa 100 Mikrosekunden im Vergleich zu einem Ansatz mit allen Stufen.
  • Dementsprechend kann es gemäß bestimmten Ausführungsformen vorteilhaft sein, eine gestufte Bitscan-Konfiguration in Kombination mit einem Ansatz zur Auswahl „aller Ketten“ anzuwenden, um zum Beispiel einen Programmlese-/Verifizierungsvorgang während eines SLC-Programmierschemas durchzuführen, als wirksame zweigleisige Maßnahme zur Verbesserung der Effizienz und Geschwindigkeit des Programmiervorgangs. Da es jedoch notwendig ist, alle Ketten oder Speicherelemente der betreffenden Speicherstruktur auszuwählen, um den einzelnen (mit allen Ketten'') Verifizierungsspeichervorgang anzuwenden, wird wahrscheinlich ein hoher Prozentsatz der Bitleitungen (BL) der Speicherstruktur während des Verifizierungsvorgangs einen hohen Strom fließen, da es sehr wahrscheinlich ist, dass eine signifikante Anzahl der Ketten oder Speicherelemente in einem gelöschten Zustand sein wird. Somit kombinieren sich die Ströme im gelöschten Zustand zur Bildung des Gesamtstroms, der durch die Bitleitung fließt. Infolgedessen wird die Speicherstruktur wahrscheinlich eine erhebliche Spitze in der Spitzenstromaufnahme (ICC) aufweisen. Das Diagramm in 17 soll diesen Umstand im Allgemeinen gemäß den Beobachtungen im Hinblick auf beispielhafte experimentelle Daten veranschaulichen. Insbesondere stellt die Kurve 900 die ICC-Spitze (als Funktion der Zeit) dar, der in einer repräsentativen Speicherstruktur während eines Verifizierungsvorgangs zur Auswahl einer einzelnen Kette gemäß einem SLC-Programmierschema erfolgt. Im Gegensatz dazu stellt die Kurve 910 die ICC-Spitze (als Funktion der Zeit) dar, der in derselben Speicherstruktur erfolgt, wenn stattdessen ein Verifizierungsvorgang zur Auswahl „aller Ketten“ auf das Programmierschema angewendet wird. Aus diesem Datenvergleich geht hervor, dass in dem Fall des Verifizierungsvorgangs zur Auswahl „aller Ketten“ in der ICC-Spitze ein dramatischer Anstieg (z. B. um 2-3 Volt) erfolgt. Obwohl der Verifizierungsansatz zur Auswahl „aller Ketten“ erhebliche Vorteile in Bezug auf die Effizienz des Speichervorgangs bereitstellen kann, scheint somit ein erheblicher Kompromiss in Bezug auf den Stromverbrauch (d. h. sowohl den Spitzen-ICC als auch den Durchschnitts-ICC) und die Sicherheit zu erfolgen, was dazu führen könnte, dass kritische Vorrichtungsspezifikationen nicht eingehalten werden.
  • Dementsprechend kann es in Anbetracht dieser Beobachtung, dass der Spitzen-ICC innerhalb einer Speicherstruktur infolge der Anzahl der Bitleitung(en), die während eines Programmverifizierungsvorgangs ausgewählt werden (aufgrund der Akkumulation der Hochlaufspannung/des Abtaststroms der ausgewählten Bitleitung(en)), signifikant erhöht wird, vorteilhaft sein, den Verifizierungsansatz zur Auswahl „aller Ketten“ dahingehend zu modifizieren, dass die geeignete(n) Abtastvorspannung(en) nur auf solche Bitleitung(en) angewendet wird/werden, die den für den Bitscan ausgewählten Speicherzellen entsprechen. Somit werden in einer gestuften Bitscan-Konfiguration nur die Speicherzellen, die für den Bitscan entsprechend der bestimmten gestuften Konfiguration ausgewählt sind, während des Programmverifizierungsvorgangs abgetastet. Auf diese Weise ist es möglich, durch Eingrenzung des Verifizierungsansatzes zur Auswahl „aller Ketten“ lediglich die Bitleitung(en) einzuschließen, die in den Bitscan-Vorgang involviert sind, eine Einsparung an Programmierzeit (Tprog) zu erzielen, ohne dass es zu einem korrelierenden, potentiell dramatischen Anstieg der durchschnittlichen ICC- und ICC-Spitzenpegel kommt.
  • Unter Bezugnahme nun auf 18 wird ein Flussdiagramm bereitgestellt, das ein allgemeines Rahmenwerk eines Programmierschemas veranschaulicht, das eine kombinierte partielle oder gestufte Abtastung und ein (entsprechendes) Bitscan-Verfahren aufweist, um den Teil des Programmverifizierungsvorgangs einer Programmierschleife gemäß einem Ausführungsbeispiel davon aufzuweisen. Beginnend mit Schritt 1200 wird als Reaktion auf einen erzeugten Befehl eine Programmiersequenz oder -schleife gestartet. Als Reaktion darauf wird ein erster Programmierimpuls eingeleitet (siehe Schritt 1202). Die Programmiersequenz wird bis zum Abschluss fortgesetzt. Zum Beispiel ist gemäß einer bestimmten Ausführungsform die Programmierung abgeschlossen, sobald alle Speicherketten, die einen Speicherblock aufweisen, gemäß einem spezifischen Codierschema programmiert oder geschrieben sind (siehe Schritte 1204 und 1206b). Sobald die Programmiersequenz beendet ist, wird ein nachfolgender Programmverifizierungsvorgang durchgeführt (siehe Schritt 1206 a). Insbesondere werden die Speicherzellen (oder-elemente) gemäß einer gestuften Konfiguration (z. B. gemäß einer ein-, zwei- oder vierstufigen Konfiguration) für den Bitscan ausgewählt, und gemäß der Auswahl wird der geeignete Abtaststrom/die geeignete Abtastspannung nur an die eine oder mehrere Bitleitung(en) angelegt, die notwendigerweise für die Abtastung der ausgewählten Speicherzellen (oder -elemente) in einem Programmverifizierungs- oder Lesevorgang aktiviert sind. Danach wird für jede ausgewählte Speicherzelle (oder jedes Element) entsprechend den jeweiligen BSPF-Kriterien ein Status „bestanden“ oder „nicht bestanden“ erzeugt (siehe Schritte 1208 und 1210a-b).
  • Wichtig ist, dass das vorstehend unter Bezugnahme auf 18 beschriebene beispielhafte Verfahren nur einen allgemeinen Überblick bereitstellen soll, und nicht dazu bestimmt ist, das Verfahren auf eine bestimmte detaillierte Konfiguration zu beschränken. Obwohl zum Beispiel vorstehend spezifisch eine ein-, zwei- oder vierstufige Konfiguration erwähnt wird, um die partielle Auswahl von Speicherzellen (oder -elementen) einer Speicherstruktur für den Bitscan zu bestimmen, kann jede geeignete Anordnung gemäß der Struktur und Dichte einer gegebenen Speicherstruktur verwendet werden. Darüber hinaus wird die vorstehenende Beschreibung innerhalb des Kontexts eines SLC-Programmierschemas bereitgestellt. Jedoch kann die Anwendung eines übereinstimmenden, gestuften Abtast- und Bitscan-Ansatzes in den Teil der Programmverifizierung jedes geeigneten Programmierschemas eines nichtflüchtigen Speichers integriert werden, wie den Programmierschemata, die auf Speicherstrukturen mit höherer Dichte abzielen (z. B. TLC- oder QLC-Programmierschemata usw.). Darüber hinaus kann das beispielhafte Verfahren in jeder beliebigen Programmierreihenfolge angewendet werden, was sowohl die Programmierung in normaler Reihenfolge (NOP) als auch die Programmierung in umgekehrter Reihenfolge (ROP) einschließt.
  • Die vorstehende Erörterung soll die Prinzipien und die verschiedenen Ausführungsformen der vorliegenden Erfindung veranschaulichen. Zahlreiche Variationen und Modifikationen werden dem Fachmann einleuchten, sobald er die vorstehende Offenbarung vollständig verstanden hat, und können verwendet werden, ohne vom Schutzumfang der Offenbarung abzuweichen, lediglich begrenzt durch alle praktischen Einschränkungen in Bezug auf die Materialien und physikalischen Prinzipien der beschriebenen Vorrichtungen. Es ist beabsichtigt, dass die folgenden Ansprüche so zu interpretieren sind, dass sie alle derartigen Variationen und Modifikationen umfassen.

Claims (20)

  1. Verfahren zum Programmieren eines Speicherblocks einer nichtflüchtigen Speicherstruktur, aufweisend: während eines Programmverifizierungsvorgangs: Auswählen nur eines Teilsegments von Speicherzellen eines Speicherblocks für den Bitscan-Modus; Anlegen einer Abtastvorspannung an eine oder mehrere Bitleitungen des Speicherblocks, die den ausgewählten Speicherzellen zugeordnet sind; und Einleiten eines Bitscan-Modus der ausgewählten Speicherzellen.
  2. Verfahren gemäß Anspruch 1, wobei der Programmverifizierungsvorgang eine Stufe einer Programmiersequenz des SLC-Typs ist.
  3. Verfahren gemäß Anspruch 1, wobei der Speicherblock aus dreidimensionalen Speicherzellen des NAND-Typs besteht.
  4. Verfahren gemäß Anspruch 1, wobei die Abtastvorspannung gleichzeitig auf alle der einen oder mehreren Bitleitungen angelegt wird.
  5. Verfahren gemäß Anspruch 1, wobei das Teilsegment von Speicherzellen aus einer von sechzehn Speicherzellen besteht.
  6. Verfahren gemäß Anspruch 1, wobei das Teilsegment von Speicherzellen aus zwei von sechzehn Speicherzellen besteht.
  7. Verfahren gemäß Anspruch 1, wobei das Teilsegment von Speicherzellen aus vier von sechzehn Speicherzellen besteht.
  8. Speichersteuerung, aufweisend: einen ersten Anschluss, der eingerichtet ist, um mit einer nichtflüchtigen Speicherstruktur gekoppelt zu werden, wobei die Struktur einen Speicherblock aufweist; und wobei die Speichersteuerung eingerichtet ist zum: während eines Programmverifizierungsvorgangs: Auswählen nur eines Teilsegments von Speicherzellen des Speicherblocks für den Bitscan-Modus; Anlegen einer Abtastvorspannung an eine oder mehrere Bitleitungen des Speicherblocks, die den ausgewählten Speicherzellen zugeordnet sind; und Einleiten eines Bitscan-Modus der ausgewählten Speicherzellen.
  9. Speichersteuerung gemäß Anspruch 8, wobei der Programmverifizierungsvorgang eine Stufe einer Programmiersequenz des SLC-Typs ist.
  10. Speichersteuerung gemäß Anspruch 8, wobei der Speicherblock aus dreidimensionalen Speicherzellen des NAND-Typs besteht.
  11. Speichersteuerung gemäß Anspruch 8, wobei die Abtastvorspannung gleichzeitig auf alle der einen oder mehreren Bitleitungen angelegt wird.
  12. Speichersteuerung gemäß Anspruch 8, wobei das Teilsegment von Speicherzellen aus einer von jeweils sechzehn Speicherzellen besteht.
  13. Speichersteuerung gemäß Anspruch 8, wobei das Teilsegment von Speicherzellen aus zwei von jeweils sechzehn Speicherzellen besteht.
  14. Speichersteuerung gemäß Anspruch 8, wobei das Teilsegment von Speicherzellen aus vier von jeweils sechzehn Speicherzellen besteht.
  15. Nichtflüchtiges Speichersystem, aufweisend: eine Speicherstruktur; eine Speichersteuerung, die mit der Speicherstruktur gekoppelt ist und: während eines Programmverifizierungsvorgangs eines Speicherblocks der Speicherstruktur: Auswählen nur eines Teilsegments von Speicherzellen eines Speicherblocks für den Bitscan-Modus; Anlegen einer Abtastvorspannung an eine oder mehrere Bitleitungen des Speicherblocks, die den ausgewählten Speicherzellen zugeordnet sind; und Einleiten eines Bitscan-Modus der ausgewählten Speicherzellen.
  16. Nichtflüchtiges Speichersystem gemäß Anspruch 15, wobei der Programmverifizierungsvorgang eine Stufe einer Programmiersequenz des SLC-Typs ist.
  17. Nichtflüchtiges Speichersystem gemäß Anspruch 15, wobei die Abtastvorspannung gleichzeitig auf alle der einen oder mehreren Bitleitungen angelegt wird.
  18. Nichtflüchtiges Speichersystem gemäß Anspruch 15, wobei das Teilsegment von Speicherzellen aus einer von jeweils sechzehn Speicherzellen besteht.
  19. Nichtflüchtiges Speichersystem gemäß Anspruch 15, wobei das Teilsegment von Speicherzellen aus zwei von jeweils sechzehn Speicherzellen besteht.
  20. Nichtflüchtiges Speichersystem gemäß Anspruch 15, wobei das Teilsegment von Speicherzellen aus vier von jeweils sechzehn Speicherzellen besteht.
DE102022101341.3A 2021-06-07 2022-01-20 Spitzen- und durchschnitts-icc-reduzierung durch stufenbasierte abtastung während der programmverifizierungsvergänge von nichtflüchtigen speicherstrukturen Pending DE102022101341A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/340,826 2021-06-07
US17/340,826 US11699494B2 (en) 2021-06-07 2021-06-07 Peak and average ICC reduction by tier-based sensing during program verify operations of non-volatile memory structures

Publications (1)

Publication Number Publication Date
DE102022101341A1 true DE102022101341A1 (de) 2022-12-08

Family

ID=84101976

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022101341.3A Pending DE102022101341A1 (de) 2021-06-07 2022-01-20 Spitzen- und durchschnitts-icc-reduzierung durch stufenbasierte abtastung während der programmverifizierungsvergänge von nichtflüchtigen speicherstrukturen

Country Status (3)

Country Link
US (1) US11699494B2 (de)
CN (1) CN115512744A (de)
DE (1) DE102022101341A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11579968B2 (en) * 2020-08-26 2023-02-14 Micron Technology, Inc. Efficient management of failed memory blocks in memory sub-systems

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734861B2 (en) * 2006-09-08 2010-06-08 Sandisk Corporation Pseudo random and command driven bit compensation for the cycling effects in flash memory
US8379454B2 (en) * 2011-05-05 2013-02-19 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
US8730722B2 (en) * 2012-03-02 2014-05-20 Sandisk Technologies Inc. Saving of data in cases of word-line to word-line short in memory arrays
US9164526B2 (en) * 2012-09-27 2015-10-20 Sandisk Technologies Inc. Sigma delta over-sampling charge pump analog-to-digital converter
US9810723B2 (en) * 2012-09-27 2017-11-07 Sandisk Technologies Llc Charge pump based over-sampling ADC for current detection
US9698676B1 (en) * 2016-03-11 2017-07-04 Sandisk Technologies Llc Charge pump based over-sampling with uniform step size for current detection
US10008276B2 (en) * 2016-04-27 2018-06-26 Sandisk Technologies Llc High accuracy leakage detection through low voltage biasing
US10535401B2 (en) * 2018-06-05 2020-01-14 Sandisk Technologies Llc Dynamic bit-scan techniques for memory device programming

Also Published As

Publication number Publication date
CN115512744A (zh) 2022-12-23
US20220392552A1 (en) 2022-12-08
US11699494B2 (en) 2023-07-11

Similar Documents

Publication Publication Date Title
DE112017001761B4 (de) NAND-Struktur mit Stufenauswahl-Gate-Transistoren
DE102005052696B4 (de) Nichtflüchtiges Speicherbauelement
DE4232025C2 (de) Elektrisch löschbarer und programmierbarer nichtflüchtiger Halbleiterspeicher mit automatischem Schreibprüfungs-Controller
DE69936028T2 (de) Nichtflüchtiger Halbleiterspeicher
DE60214023T2 (de) Selektiver betrieb eines nichtflüchtigen mehrzustandsspeichersystems in einem binärmodus
DE112019000164T5 (de) Speichervorrichtung mit verbundenen wortleitungen zur schnellen programmierung
DE102008005338B4 (de) Integrierter Schaltkreis mit einer Speicherzellenanordnung und Verfahren zum Lesen eines Speicherzellenzustands unter Verwendung einer Mehrzahl von Teil-Leseoperationen
DE112019000152T5 (de) Verschachteltes programmieren und prüfen in nichtflüchtigem speicher
DE112019000165T5 (de) Gleichzeitiges programmieren mehrerer zellen für nichtflüchtigespeichervorrichtungen
DE102013108907A1 (de) Nichtflüchtige Speichervorrichtung mit nahen/fernen Speicherzellengruppierungen und Datenverarbeitungsverfahren
DE102018123918A1 (de) Zustandsabhängige Abtastschaltungen und Vorladevorgänge für Speichervorrichtungen
DE112010000955T5 (de) NAND-Flasharchitektur mit mehrstufiger Zeilendecodierung
DE10329627B4 (de) Flash-Speicherbaustein
DE112019000157T5 (de) Speichervorrichtung mit von nand-ketten getrennten bitleitungen zur schnellen programmierung
DE102007041845A1 (de) Verfahren zum Betreiben eines integrierten Schaltkreises mit mindestens einer Speicherzelle
DE102008007685B4 (de) Integrierte Schaltung und Verfahren zum Betreiben einer integrierten Schaltung
DE112016000654T5 (de) Mehrzustands-Programmierung für nichtflüchtigen Speicher
DE102020105946A1 (de) Speicherzellen-fehlform-abschwächung
DE102018105623A1 (de) Zustandsabhängige Abtastschaltungen und Abtastoperationen für Speichervorrichtungen
DE102019124668A1 (de) Transistorschwellenspannungshaltung in 3d-speicher
DE102021115501A1 (de) Leseaktualisierung zur verbesserung der leistung bei datenerhaltung für nichtflüchtigen speicher
DE102020105991A1 (de) SUBBLOCK-GRÖßENREDUKTION FÜR NICHTFLÜCHTIGE 3D-SPEICHER
DE102020107504A1 (de) Nichtflüchtiges speicher-array, das zur leistungsverbesserung von beiden seiten angesteuert wird
DE112020000174T5 (de) Adaptive vpass für 3d-flash-speicher mit paarkettenstruktur
DE102021115150A1 (de) Speichersystem, das eine nichtflüchtige speichervorrichtung enthält, und ein löschverfahren dafür

Legal Events

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

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE