-
HINTERGRUND
-
Diese Anmeldung betrifft den Betrieb von wiederprogrammierbarem nichtflüchtigen Speicher, wie etwa Halbleiterflashspeicher.
-
Festkörperspeicher, der zur nichtflüchtigen Speicherung von Ladung in der Lage ist, insbesondere in der Form eines EEPROM und Flash-EEPROM eingepackt in einer Karte mit kleinem Formfaktor, ist zur Speicherung der Wahl in einer Vielzahl von mobilen und handgehaltenen Vorrichtungen geworden, ganz besonders von Informationsgerätschaften und Unterhaltungselektronikprodukten. Anders als RAM (Direktzugriffspeicher – Random Access Memory), der ebenfalls Festkörperspeicher ist, ist Flash-Speicher nichtflüchtig und behält seine gespeicherten Daten selbst nachdem der Strom abgeschaltet wird. Auch ist Flash-Speicher, anders als ROM (Nurlesespeicher – Read Only Memory) wiederbeschreibbar, ähnlich wie eine Plattenspeicherungsvorrichtung.
-
Flash-EEPROM ähnelt einem EEPROM (elektrisch löschbarer und programmierbarer ROM – Electrically Erasable and Programmable Read-Only Memory) darin, dass er nichtflüchtiger Speicher ist, der gelöscht werden kann und in dessen Speicherzellen neue Daten geschrieben oder „programmiert“ werden können. Beide verwenden ein floating bzw. schwebendes (nichtverbundenes) leitfähiges Gate (im Folgenden auch als Schwebe-Gate oder potentialfreies Gate bezeichnet) in einer Feldeffekttransistor-Struktur, das über einer Kanalregion in einem Halbleitersubstrat zwischen Source- und Drain-Regionen positioniert ist. Ein Steuer-Gate ist dann über dem Schwebe-Gate vorgesehen. Die Schwellenspannungscharakteristik des Transistors wird durch die Ladungsmenge gesteuert, die auf dem Schwebe-Gate zurückgehalten wird. Das heißt, dass es für ein gegebenes Ladungsniveau auf dem Schwebe-Gate eine entsprechende Spannung (Schwelle) gibt, die an das Steuer-Gate angelegt werden muss, bevor der Transistor „ein“-geschaltet wird, um Leitung zwischen seiner Source- und seiner Drain-Region zu erlauben. Flash-Speicher, wie etwa Flash-EEPROM erlaubt es, dass ganze Blöcke von Speicherzellen gleichzeitig gelöscht werden.
-
Das Schwebe-Gate kann einen Bereich von Ladungen halten und kann somit auf einen beliebigen Schwellenspannungspegel innerhalb eines Schwellenspannungsfensters programmiert werden. Die Größe des Schwellenspannungsfensters wird durch den minimalen und den maximalen Schwellenpegel der Vorrichtung begrenzt, die wiederum dem Bereich der Ladungen entsprechen, die auf das Schwebe-Gate programmiert werden können. Das Schwellenfenster hängt im Allgemeinen von der Charakteristik, den Betriebsbedingungen und der Vorgeschichte der Vorrichtung ab. Jeder individuelle, auflösbare Schwellenspannungspegelbereich innerhalb des Fensters kann grundsätzlich verwendet werden, um einen definierten Speicherzustand der Zelle zu kennzeichnen.
-
Nichtflüchtige Speichervorrichtungen werden auch aus Speicherzellen mit einer dielektrischen Schicht zur Ladungsspeicherung hergestellt. Anstelle der zuvor beschriebenen Schwebe-Gate-Elemente wird eine dielektrische Schicht verwendet. Über den Kanal zwischen Source- und Drain-Diffusionen erstreckt sich eine ONO-Dielektrikumsschicht. Die Ladung für ein Datenbit ist in der an die Drain angrenzenden dielektrischen Schicht lokalisiert und die Ladung für das andere Datenbit ist in der an die Source angrenzenden dielektrischen Schicht lokalisiert. Mehrzustands-Datenspeicherung wird durch separates Lesen der binären Zustände der räumlich separierten Ladungsspeicherbereiche innerhalb des Dielektrikums implementiert.
-
Viele nichtflüchtige Speicher sind entlang einer Oberfläche eines Substrats (z. B. ein Siliciumsubstrat) als zweidimensionale(2D)- oder planare Speicher ausgebildet. Andere nichtflüchtige Speicher sind dreidimensionale(3-D)-Speicher, die in einer oder mehreren physischen Ebenen von Speicherzellen mit aktiven Gebieten, die über einem Substrat angeordnet sind, monolithisch gebildet sind.
-
In manchen Fällen sind zwei oder mehr Speicher-Dies mit einem gemeinsamen Bus, beispielsweise einem Speicherbus verbunden, der Daten zu und von einer Speichersteuerung sendet. Eine Speichersteuerung kann einen derartigen Speicherbus verwalten oder kann zwei oder mehr Speicherbusse verwalten und jeder Speicherbus kann zwei oder mehr Speicher-Dies aufweisen. Somit können große Speichersysteme aus mehreren Dies, die zusammen betrieben werden, gebaut werden.
-
KURZDARSTELLUNG
-
In manchen nichtflüchtigen Speichersystemen können zu speichernde Daten parallel in zwei verschiedene Dies geschrieben werden, die mit einem gemeinsamen Bus verbunden sind. Identische Daten können in jeden Die geschrieben werden und, falls ein Programmversagen in einem Die auftritt, kann das Versagen ignoriert werden und nur die erfolgreich geschriebene Kopie wird verwendet. Falls kein Programmversagen auftritt, muss irgendeine Entscheidung dahingehend gefällt werden, welche Kopie bevorzugt wird. Die bevorzugte Kopie wird dann beibehalten und die andere Kopie kann verworfen werden. Daten können parallel übertragen und dann parallel programmiert werden, indem beide Chips gleichzeitig aktiviert werden. Adresseninformationen können ebenfalls parallel übertragen werden, indem beide Dies aktiviert und Adresseninformationen übertragen werden. Falls in verschiedenen Dies verschiedene physische Adressen verwendet werden, dann können Adresseninformationen sequentiell übertragen werden, indem ein Die zu einer gegebenen Zeit aktiviert wird und die Die-spezifischen Adresseninformationen zu jedem Die übertragen werden.
-
Ein Beispiel für ein Verfahren zum Schreiben identischer Daten in mehrere nichtflüchtige Speicherchips, die mit einem Speicherbus verbunden sind, umfasst Folgendes: Senden von Adresseninformationen an einen ersten nichtflüchtigen Speicherchip und einen zweiten nichtflüchtigen Speicherchip; Auswählen des ersten nichtflüchtigen Speicherchips; Auswählen des zweiten nichtflüchtigen Speicherchips; während sowohl der erste nichtflüchtige Speicherchip als auch der zweite nichtflüchtige Speicherchip ausgewählt sind, Senden von Benutzerdaten über den Speicherbus an den ersten nichtflüchtigen Speicherchip und paralleles Senden der Benutzerdaten über den Speicherbus an den zweiten nichtflüchtigen Speicherchip; und paralleles Programmieren der Benutzerdaten in den ersten nichtflüchtigen Speicherchip und den zweiten nichtflüchtigen Speicherchip.
-
Senden der Adresseninformationen an den ersten nichtflüchtigen Speicherchip und den zweiten nichtflüchtigen Speicherchip kann Folgendes umfassen: Auswählen des ersten nichtflüchtigen Speicherchips; Senden erster Adresseninformationen an den ersten nichtflüchtigen Speicherchip über den Speicherbus; nachfolgendes Auswählen des zweiten nichtflüchtigen Speicherchips; und Senden zweiter Adresseninformationen an den zweiten nichtflüchtigen Speicherchip über den Speicherbus, wobei sich die zweiten Adresseninformationen von den ersten Adresseninformationen unterscheiden. Die ersten Adresseninformationen können auf gute Blöcke in dem ersten nichtflüchtigen Speicherchip beschränkt sein, die zweiten Adresseninformationen können auf gute Blöcke in dem zweiten nichtflüchtigen Speicherchip beschränkt sein, wobei sich die guten Blöcke in dem ersten nichtflüchtigen Speicherchip und die guten Blöcke in dem zweiten nichtflüchtigen Speicherchip an verschiedenen physischen Orten in jeweiligen Blöcken befinden. Senden der Adresseninformationen an den ersten nichtflüchtigen Speicherchip und den zweiten nichtflüchtigen Speicherchip kann Folgendes beinhalten: Auswählen des ersten nichtflüchtigen Speicherchips und des zweiten nichtflüchtigen Speicherchips zur selben Zeit; und Senden der Adresseninformationen an den ersten nichtflüchtigen Speicherchip und den zweiten nichtflüchtigen Speicherchip über den Speicherbus, wobei die Adresseninformationen eine oder mehre Adressen beinhalten, wobei jede der einen oder der mehreren Adressen einem physischen Ort in dem ersten nichtflüchtigen Speicherchip und einem entsprechenden physischen Ort in dem zweiten nichtflüchtigen Speicherchip entsprechen. Die Benutzerdaten können an entsprechende physische Orte in dem ersten Chip und dem zweiten Chip programmiert werden. Der Status des Programmierens in den ersten nichtflüchtigen Speicherchip und den zweiten nichtflüchtigen Speicherchip kann nachfolgend bestimmt werden. Falls der Status des Programmierens in den ersten nichtflüchtigen Speicherchip ein Versagen-Status ist, dann kann eine Kopie der Benutzerdaten in dem ersten nichtflüchtigen Speicherchip als schlecht markiert werden und nachfolgend können Leseanforderungen für die Benutzerdaten zu der Kopie der Benutzerdaten in dem zweiten nichtflüchtigen Speicherchip umgeleitet werden. Alle in dem ersten nichtflüchtigen Speicherchip gespeicherten Benutzerdaten können auch in dem zweiten nichtflüchtigen Speicherchip gespeichert werden. Auf das parallele Programmieren der Benutzerdaten in den ersten nichtflüchtigen Speicherchip und den zweiten nichtflüchtigen Speicherchip nachfolgend kann eine Kopie der Benutzerdaten in entweder dem ersten oder dem zweiten nichtflüchtigen Speicherchip als eine hinfällige Kopie identifiziert werden und die hinfällige Kopie kann nachfolgend gelöscht werden, während eine gültige Kopie in dem anderen des ersten und des zweiten nichtflüchtigen Speicherchips beibehalten wird. Die hinfällige Kopie kann gemäß mindestens einem der Folgenden identifiziert werden: Schreibzeit, Schreibschleifenanzahl und/oder Schreibfehlern beim parallelen Programmieren der Benutzerdaten in den ersten nichtflüchtigen Speicherchip und den zweiten nichtflüchtigen Speicherchip.
-
Ein Beispiel für ein nichtflüchtiges Mehrchip-Speichersystem beinhaltet: einen ersten nichtflüchtigen Speicherchip; einen zweiten nichtflüchtigen Speicherchip; einen Datenbus, der Daten zu und von dem ersten nichtflüchtigen Speicherchip und dem zweiten nichtflüchtigen Speicherchip überträgt; einen Adressbus, der Adresseninformationen zu dem ersten nichtflüchtigen Speicherchip und dem zweiten nichtflüchtigen Speicherchip überträgt; und eine Speichersteuerung, die ausgelegt ist zum, in einem Doppelschreibmodus, Auswählen des ersten nichtflüchtigen Speicherchips und des zweiten nichtflüchtigen Speicherchips zur selben Zeit und zum Senden von Benutzerdaten über den Datenbus, die parallel in dem ersten nichtflüchtigen Speicherchip und dem zweiten nichtflüchtigen Speicherchip gespeichert werden sollen.
-
Eine erste Chipauswahlleitung bzw. Chip-Select(CS)-Leitung kann sich von der Speichersteuerung zu dem ersten nichtflüchtigen Speicherchip erstrecken und eine zweite Chipauswahlleitung kann sich von der Speichersteuerung zu dem zweiten nichtflüchtigen Speicherchip erstrecken, wobei die Speichersteuerung ausgelegt ist zum, im Doppelschreibmodus, Senden erster Adresseninformationen auf dem Adressbus, während ein Auswahlsignal an der ersten Chipauswahlleitung angelegt ist, und nachfolgenden Senden zweiter Adresseninformationen auf dem Adressbus, während ein Auswahlsignal an der zweiten Chipauswahlleitung angelegt ist, wobei sich die ersten Adresseninformationen von den zweiten Adresseninformationen unterscheiden. Der erste nichtflüchtige Speicherchip kann erste schlechte Blöcke enthalten, der zweite nichtflüchtige Speicherchip kann zweite schlechte Blöcke enthalten, die Speichersteuerung kann Kartierungen von ersten schlechten Blöcken und zweiten schlechten Blöcken unterhalten und die ersten Adresseninformationen können nur zu Blöcken des ersten nichtflüchtigen Speicherchips geleitet werden, die sich nicht in der Kartierung erster schlechter Blöcke befinden, und die zweiten Adresseninformationen können nur zu Blöcken des zweiten nichtflüchtigen Speicherchips geleitet werden, die sich nicht in der Kartierung zweiter schlechter Blöcke befinden. Eine erste Chipauswahlleitung kann sich von der Speichersteuerung zu dem ersten nichtflüchtigen Speicherchip erstrecken und eine zweite Chipauswahlleitung kann sich von der Speichersteuerung zu dem zweiten nichtflüchtigen Speicherchip erstrecken, wobei die Speichersteuerung ausgelegt ist zum, im Doppelschreibmodus, parallelen Anlegen eines Auswahlsignals an die erste Chipauswahlleitung und an die zweite Chipauswahlleitung und, während das Auswahlsignal an der ersten Chipauswahlleitung und der zweiten Chipauswahlleitung angelegt ist, Senden von Adresseninformationen auf dem Datenbus. Die Speichersteuerung kann ausgelegt sein zum, im Doppelschreibmodus, während das Auswahlsignal an der ersten Chipauswahlleitung und an der zweiten Chipauswahlleitung angelegt ist, parallelen Senden von Adresseninformationen zu dem ersten nichtflüchtigen Speicherchip und zu dem zweiten nichtflüchtigen Speicherchip. Die Speichersteuerung kann ausgelegt sein zum, im Doppelschreibmodus, Durchführen einer Statusüberprüfung an dem ersten nichtflüchtigen Speicherchip und an dem zweiten nichtflüchtigen Speicherchip, nachdem die Benutzerdaten über den Datenbus gesendet wurden. Die Speichersteuerung kann ferner ausgelegt sein zum Unterhalten einer Aufzeichnung von Programmierversagen und zum Leiten nachfolgender Leseanforderungen an eine Kopie von geschriebenen Daten, die kein Programmierversagen erzeugten. Die Speichersteuerung kann ausgelegt sein zum, in einem Einzel-Die-Schreibmodus, Auswählen eines und nur eines Dies zu einer gegebenen Zeit.
-
Ein Beispiel für ein Verfahren zum Schreiben identischer Daten in mehrere Speicherchips, die mit einem Speicherbus verbunden sind, beinhaltet Folgendes: Senden von Adresseninformationen an einen ersten nichtflüchtigen Speicherchip und einen zweiten nichtflüchtigen Speicherchip über einen Adressbus; Auswählen des ersten nichtflüchtigen Speicherchips und des zweiten nichtflüchtigen Speicherchips; während sowohl der erste nichtflüchtige Speicherchip als auch der zweite nichtflüchtige Speicherchip ausgewählt sind, Senden von Benutzerdaten über einen Datenbus an den ersten nichtflüchtigen Speicherchip und paralleles Senden der Benutzerdaten über den Datenbus an den zweiten nichtflüchtigen Speicherchip; paralleles Programmieren der Benutzerdaten in den ersten nichtflüchtigen Speicherchip und den zweiten nichtflüchtigen Speicherchip; nachfolgendes Bestimmen, ob die Benutzerdaten von dem ersten nichtflüchtigen Speicherchip oder dem zweiten nichtflüchtigen Speicherchip gelesen werden sollen, basierend auf einem detektierten Programmierfehler und/oder einem detektierten Lesefehler und/oder einer hohen Fehlerrate.
-
Die Speicherchips können ausgelegt sein zur Speicherung identischer Daten als Reaktion auf eine Bestimmung, dass die Speicherchips hohe Raten von Programmierversagen oder Leseversagen aufweisen.
-
Verschiedene Aspekte, Vorteile, Merkmale und Ausführungsformen sind in der folgenden Beschreibung von Ausführungsbeispielen davon eingeschlossen, wobei die Beschreibung zusammen mit den begleitenden Zeichnungen betrachtet werden sollte.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 veranschaulicht schematisch die Haupthardwarekomponenten eines Speichersystems.
-
2 veranschaulicht schematisch eine nichtflüchtige Speicherzelle.
-
3 veranschaulicht die Beziehung zwischen dem Source-Drain-Strom ID und der Steuer-Gate-Spannung VCG für vier verschiedene Ladungen Q1–Q4, die das Schwebe-Gate bei fester Drain-Spannung zu beliebiger Zeit selektiv speichern kann.
-
4A veranschaulicht schematisch eine Kette von Speicherzellen, die in einer NAND-Kette organisiert sind.
-
4B veranschaulicht ein Beispiel für ein NAND-Array 210 von Speicherzellen, das aus NAND-Ketten 50 aufgebaut ist, wie etwa das in 4A gezeigte.
-
5 veranschaulicht eine Seite von Speicherzellen, die in der NAND-Konfiguration organisiert ist, die parallel erfasst oder programmiert wird.
-
6A–6C veranschaulichen ein Beispiel des Programmierens einer Population von Speicherzellen.
-
7 zeigt ein Beispiel für eine physische Struktur einer 3-D NAND-Kette.
-
8 zeigt ein Beispiel für eine physische Struktur einer U-förmigen 3-D NAND-Kette.
-
9 zeigt ein Beispiel eines Querschnitts eines 3-D NAND-Speicher-Arrays mit U-förmigen NAND-Ketten in der y-z-Ebene.
-
10 zeigt ein Beispiel eines Querschnitts eines 3-D NAND-Speichers mit geraden NAND-Ketten in der y-z-Ebene.
-
11 veranschaulicht eine Anordnung mit zwei Speicher-Dies, die über einen gemeinsamen Bus mit einer Speichersteuerung verbunden sind.
-
12A–B veranschaulichen das Speichern von Daten an entsprechenden physischen Adressen in zwei Dies.
-
13A–C veranschaulichen das Speichern von Daten an verschiedenen physischen Adressen in zwei Dies.
-
14 veranschaulicht ein Beispiel von Mehrebenen-Dies mit schlechten Blöcken.
-
15 veranschaulicht ein Beispiel von gepaarten Dies.
-
16 veranschaulicht Schritte beim Speichern von Daten an entsprechenden physischen Adressen in zwei Dies.
-
17 veranschaulicht Schritte beim Speichern von Daten an verschiedenen physischen Adressen in zwei Dies.
-
18 veranschaulicht ein Beispiel für Doppelschreiben und nachfolgenden Betrieb.
-
AUSFÜHRLICHE BESCHREIBUNG
-
SPEICHERSYSTEM
-
Halbleiter-Speichervorrichtungen beinhalten flüchtige Speichervorrichtungen, wie etwa dynamische Direktzugriffspeicher(„DRAM“)- oder statische Direktzugriffspeicher(„SRAM“)-Vorrichtungen, nichtflüchtige Speichervorrichtungen, wie etwa resistiven Direktzugriffspeicher („ReRAM“), elektrisch löschbaren programmierbaren Nurlesespeicher („EEPROM“), Flash-Speicher (der auch als eine Untermenge eines EEPROM angesehen werden kann), ferroelektrischen Direktzugriffspeicher („FRAM“) und magnetoresistiven Direktzugriffspeicher („MRAM“) und andere Halbleiterelemente, die zum Speichern von Informationen fähig sind. Jede Art von Speichervorrichtung kann andere Konfigurationen aufweisen. Flash-Speichervorrichtungen können beispielsweise in einer NAND- oder einer NOR-Konfiguration ausgelegt sein.
-
Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen gebildet werden, in jeglichen Kombinationen. Als ein nichtbeschränkendes Beispiel beinhalten passive Halbleiter-Speicherelemente ReRAM-Vorrichtungselemente, die bei manchen Ausführungsformen ein Resistivitätsschaltspeicherelement beinhalten, wie etwa ein nichtverschmelzendes oder Phasenänderungsmaterial usw., und optional ein Leitelement, wie etwa eine Diode usw. Weiter beinhalten, als ein nichtbeschränkendes Beispiel, aktive Halbleiter-Speicherelemente EEPROM- und Flash-Speichervorrichtungselemente, die bei manchen Ausführungsformen Elemente beinhalten, die einen Ladungsspeicherbereich, wie etwa ein Schwebe-Gate, leitende Nanopartikel oder ein Ladungspeicherdielektrikummaterial enthalten.
-
Mehrere Speicherelemente können so ausgelegt sein, dass sie in Reihe geschaltet sind, oder so, dass auf jedes Element einzeln zugegriffen werden kann. Als ein nichtbeschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) typischerweise in Reihe geschaltete Speicherelemente. Ein NAND-Speicherarray kann so ausgelegt sein, dass das Array aus mehreren Speicherketten zusammengesetzt ist, in denen eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die eine einzige Bit-Leitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente derart ausgelegt sein, dass auf jedes Element einzeln zugegriffen werden kann, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft und Speicherelemente können anderweitig konfiguriert sein.
-
Die innerhalb und/oder oberhalb eines Substrats befindlichen Halbleiter-Speicherelemente können in zwei oder drei Dimensionen angeordnet sein, wie etwa als eine zweidimensionale Speicherstruktur oder eine dreidimensionale Speicherstruktur.
-
Bei einer zweidimensionalen Speicherstruktur sind die Halbleiter-Speicherelemente in einer einzigen Ebene oder auf einem einzelnen Speichervorrichtungsniveau angeordnet. Typischerweise sind Speicherelemente in einer zweidimensionalen Speicherstruktur in einer Ebene (z. B. in einer x-z-Richtungsebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptoberfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über dem oder in dem die Schicht der Speicherelemente gebildet ist oder es kann ein Trägersubstrat sein, das an den Speicherelementen befestigt wird, nachdem sie gebildet wurden. Als ein nichtbeschränkendes Beispiel kann das Substrat einen Halbleiter beinhalten, wie etwa Silicium.
-
Die Speicherelemente können auf dem einzelnen Speichervorrichtungsniveau in einem geordneten Array angeordnet sein, wie etwa in einer Vielzahl von Zeilen und/oder Spalten. Allerdings können die Speicherelemente in irregulären oder nicht-orthogonalen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen aufweisen, wie etwa Bit-Leitungen und Word-Leitungen.
-
Ein dreidimensionales Speicherarray ist derart angeordnet, dass die Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsniveaus besetzen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in der x-, y- und der z-Richtung, wobei die y-Richtung im Wesentlichen senkrecht und die x- und z-Richtungen im Wesentlichen parallel zur Hauptoberfläche des Substrats sind).
-
Als ein nichtbeschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als ein Stapel von mehreren zweidimensionalen Speichervorrichtungsniveaus angeordnet sein. Als ein weiteres nichtbeschränkendes Beispiel kann ein dreidimensionales Speicherarray als mehrere vertikale Säulen (z. B. Säulen, die sich im Wesentlichen senkrecht zur Hauptoberfläche des Substrats, d. h. in der y-Richtung, erstrecken) angeordnet sein, wobei jede Säule mehrere Speicherelemente in jeder Säule aufweist. Diese Säulen können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-z-Ebene, was zu einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen führt. Andere Konfigurationen von Speicherelementen in drei Dimensionen können ebenfalls ein dreidimensionales Speicherarray errichten.
-
Als ein nichtbeschränkendes Beispiel können die Speicherelemente in einem dreidimensionalen NAND-Speicherarray zusammengekoppelt sein, um eine NAND-Kette innerhalb eines einzigen horizontalen (z. B. x-z) Speichervorrichtungniveaus zu bilden. Alternativ können die Speicherelemente zusammengekoppelt werden, um eine vertikale NAND-Kette zu bilden, die mehrere horizontale Speichervorrichtungsniveaus überquert. Man kann sich andere dreidimensionale Konfigurationen vorstellen, bei denen manche NAND-Ketten Speicherelemente auf einem einzelnen Speicherniveau enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherniveaus spannen. Dreidimensionale Speicherarrays können ebenfalls in einer NOR-Konfiguration und in einer ReRAM-Konfiguration designt sein.
-
Bei einem monolithischen dreidimensionalen Speicherarray sind typischerweise ein oder mehrere Speichervorrichtungsniveaus über einem einzelnen Substrat ausgebildet. Optional kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten, die sich mindestens teilweise innerhalb des einzelnen Substrats befinden, aufweisen. Als ein nichtbeschränkendes Beispiel kann das Substrat einen Halbleiter beinhalten, wie etwa Silicium. Bei einem monolithischen dreidimensionalen Array sind die Schichten, die jedes Speichervorrichtungsniveau des Arrays errichten, typischerweise auf den Schichten der unterliegenden Speichervorrichtungsniveaus des Arrays ausgebildet. Allerdings können Schichten von angrenzenden Speichervorrichtungsniveaus eines monolithischen dreidimensionalen Speicherarrays geteilt sein oder Zwischenschichten zwischen Speichervorrichtungsniveaus aufweisen.
-
Zweidimensionale Arrays können jedoch auch separat gebildet und dann zusammengepackt werden, um eine nichtmonolithische Speichervorrichtung zu bilden, die mehrere Speicherschichten aufweist. Beispielsweise können nichtmonolithische gestapelte Speicher durch Bilden von Speicherniveaus auf separaten Substraten und dann durch Stapeln der Speicherniveaus übereinander gebaut werden. Die Substrate können vor dem Stapeln ausgedünnt oder von den Speichervorrichtungsniveaus entfernt werden, wobei die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays sind, da die Speichervorrichtungsniveaus anfänglich über separaten Substraten gebildet wurden. Ferner können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nichtmonolithisch) auf separaten Chips gebildet und dann zusammengepackt werden, um eine Stapel-Chip-Speichervorrichtung zu bilden.
-
Zugehörige Schaltungen sind typischerweise zum Betrieb der Speicherelemente und zur Kommunikation mit den Speicherelementen erforderlich. Als nichtbeschränkende Beispiele können Speichervorrichtungen Schaltungen zum Steuern und Treiben der Speicherelemente aufweisen, um Funktionen wie Programmieren und Lesen zu erreichen. Diese zugehörigen Schaltungen können sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Beispielsweise kann sich eine Steuerung für Speicher-Schreib-Lese-Operationen auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente befinden.
-
Bei anderen Ausführungsformen können andere Arten von Speicher als die hier beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen verwendet werden.
-
1 veranschaulicht schematisch die Haupthardwarekomponenten eines Speichersystems, das zum Implementieren einiger der hier beschriebenen Techniken geeignet ist. Das Speichersystem 90 arbeitet typischerweise über eine Hostschnittstelle mit einem Host 80. Das Speichersystem kann in der Form eines entfernbaren Speichers, wie etwa einer Speicherkarte, vorliegen oder kann in der Form eines eingebetteten Speichersystems vorliegen. Das Speichersystem 90 beinhaltet einen Speicher 102, dessen Operationen von einer Steuerung 100 gesteuert werden. Der Speicher 102 umfasst ein oder mehrere Arrays von nichtflüchtigen Speicherzellen, die über einen oder mehrere integrierte Schaltungs-Chips verteilt sind. Die Steuerung 100 kann Schnittstellenschaltungen 110, einen Prozessor 120, ROM (Nurlesespeicher) 122, RAM (Direktzugriffsspeicher) 130, programmierbaren nichtflüchtigen Speicher 124 und zusätzliche Komponenten beinhalten. Die Steuerung ist typischerweise als ein ASIC (anwendungsspezifische integrierte Schaltung – Application Specific Integrated Circuit) ausgebildet und die in einem derartigen ASIC enthaltenen Komponenten hängen im Allgemeinen von der speziellen Anwendung ab. Speichersysteme können mit einer Vielzahl von Hosts in einer Vielzahl von verschiedenen Umgebungen verwendet werden. Beispielsweise kann ein Host ein Mobilgerät, wie etwa ein Mobiltelefon, Laptop, Musikspieler (z. B. MP3-Spieler), ein Gobal Positioning System(GPS)-Gerät, Tabletcomputer oder dergleichen sein. Derartige Speichersysteme können über längere Zeiträume inaktiv, stromlos, sein, während denen sie verschiedensten Bedingungen ausgesetzt sein können, einschließlich hohen Temperaturen, Vibrationen, elektromagnetischen Feldern usw. Speichersysteme für derartige Hosts, ob entfernbar oder eingebettet, können für geringe Leistungsaufnahme, hohen Datenerhalt und Zuverlässigkeit in einem weiten Bereich von Umgebungsbedingungen (z. B. einem weiten Temperaturbereich) ausgewählt sein. Andere Hosts können stationär sein. Beispielsweise können Server, die für Internet-Anwendungen verwendet werden, nichtflüchtige Speichersysteme zur Speicherung von Daten, die über das Internet gesendet und empfangen werden, verwenden. Derartige Systeme bleiben für ausgedehnte Zeiträume (z. B. ein Jahr oder mehr) ohne Unterbrechung eingeschaltet und können während solcher Zeiträume häufig im Zugriff stehen. Individuelle Blöcke können häufig geschrieben und gelöscht werden, so dass Langzeitbeständigkeit eine Hauptsorge darstellen kann.
-
Physische Speicherstruktur
-
2 veranschaulicht schematisch eine nichtflüchtige Speicherzelle. Die Speicherzelle 10 kann durch einen Feldeffekttransistor implementiert sein, der eine Ladungsspeicherungseinheit 20 aufweist, wie etwa ein Schwebe-Gate oder eine (dielektrische) Ladungsfallenschicht. Die Speicherzelle 10 beinhaltet auch eine Source 14, eine Drain 16 und ein Steuer-Gate 30.
-
Es gibt viele kommerziell erfolgreiche nichtflüchtige Festkörper-Speichervorrichtungen, die heutzutage verwendet werden. Diese Speichervorrichtungen können verschiedene Arten von Speicherzellen einsetzen, wobei jede Art ein oder mehrere Ladungsspeicherelemente aufweist.
-
In der Praxis wird der Speicherzustand einer Zelle gewöhnlich durch Erfassen des Leitungsstroms über die Source- und Drain-Elektroden der Zelle ausgelesen, wenn eine Referenzspannung am Steuer-Gate angelegt wird. Somit kann für jede gegebene Ladung auf dem Schwebe-Gate einer Zelle ein entsprechender Leitungsstrom bezüglich einer festen Referenz-Steuer-Gate-Spannung detektiert werden. Gleichermaßen definiert der auf das Schwebe-Gate programmierbare Ladungsbereich ein entsprechendes Schwellenspannungsfenster oder ein entsprechendes Leitungsstromfenster.
-
Alternativ ist es, anstelle des Detektierens des Leitungsstroms unter einem partitionierten Stromfenster, möglich, die Schwellenspannung für einen gegebenen Probe-Speicherzustand am Steuer-Gate einzustellen und zu detektieren, ob der Leitungsstrom tiefer oder höher als ein Schwellenstrom (Zellenlesereferenzstrom) ist. Bei einer Implementierung wird die Detektion des Leitungsstroms relativ zu einem Schwellenstrom durch Untersuchen der Rate, mit der sich der Leitungsstrom über die Kapazität der Bit-Leitung entlädt, erreicht.
-
3 veranschaulicht die Beziehung zwischen dem Source-Drain-Strom ID und der Steuer-Gate-Spannung VCG für vier verschiedene Ladungen Q1–Q4, die das Schwebe-Gate zu beliebiger Zeit selektiv speichern kann. Mit fester Drain-Vorspannung repräsentieren die vier durchgezogenen ID gegenüber VCG-Kurven vier von sieben möglichen Ladeniveaus, die auf einem Schwebe-Gate einer Speicherzelle programmiert werden können, was entsprechend vier möglichen Speicherzuständen entspricht. Beispielsweise kann das Schwellenspannungsfenster einer Population von Zellen von 0,5 V bis 3,5 V reichen. Sieben mögliche programmierte Speicherzustände „0“, „1“, „2“, „3“, „4“, „5“, „6“ und ein (nicht gezeigter) gelöschter Zustand können durch Partitionierung des Schwellenfensters in Regionen in Intervallen von jeweils 0,5 V abgegrenzt werden. Falls, wie gezeigt, beispielsweise ein Referenzstrom IREF von 2 µA verwendet wird, dann kann die mit Q1 programmierte Zelle als in einem Speicherzustand „1“ befindlich angesehen werden, da seine Kurve IREF in der Region des durch VCG = 0,5 V und 1,0 V abgegrenzten Schwellenfensters schneidet. Gleichermaßen befindet sich Q4 in einem Speicherzustand „5“.
-
Anhand der obigen Beschreibung ist ersichtlich, dass, je mehr Zustände eine Speicherzelle speichern soll, deren Schwellenspannungsfenster umso feiner unterteilt ist. Beispielsweise kann eine Speichervorrichtung Speicherzellen mit einem Schwellenspannungsfenster von –1.5V bis 5V aufweisen. Dies ergibt eine maximale Breite von 6,5 V. Wenn die Speicherzelle 16 Zustände speichern soll, kann jeder Zustand zwischen 200 mV bis 300 mV im Schwellenfenster einnehmen. Dies wird eine höhere Genauigkeit beim Programmieren und bei Ausleseoperationen erfordern, um in der Lage zu sein, die erforderliche Auflösung zu erreichen.
-
NAND-Struktur
-
4A veranschaulicht schematisch eine Kette von Speicherzellen, die in einer NAND-Kette organisiert sind. Eine NAND-Kette 50 umfasst eine Reihe von Speichertransistoren M1, M2, ... Mn (z. B. n = 4, 8, 16 oder höher), die im Eimerkettenverfahren über ihre Sources und Drains verbunden sind. Ein Paar von Auswahl-Transistoren S1, S2 steuert die Verbindung der Speichertransistorkette mit der Außenwelt über jeweils den Source-Anschluss 54 und den Drain-Anschluss 56 der NAND-Kette. In einem Speicherarray ist der Source-Anschluss mit einer Source-Leitung verbunden, wenn der Source-Auswahltransistor S1 eingeschaltet ist (siehe 4B). Gleichermaßen ist der Drain-Anschluss der NAND-Kette mit einer Bit-Leitung des Speicherarrays verbunden, wenn der Drain-Auswahltransistor S2 eingeschaltet ist. Jeder Speichertransistor 10 in der Kette wirkt als eine Speicherzelle. Jeder weist ein Ladungsspeicherelement 20 auf zum Speichern einer gegebenen Ladungsmenge, um somit einen beabsichtigten Speicherzustand zu repräsentieren. Ein Steuer-Gate 30 jedes Speichertransistors erlaubt Kontrolle über Lese- und Schreib-Operationen. Wie in 4B ersichtlich ist, sind die Steuer-Gates 30 entsprechender Speichertransistoren einer Zeile einer NAND-Kette alle mit derselben Wort-Leitung verbunden. Gleichermaßen sieht ein Steuer-Gate 32 jedes der Auswahltransistoren S1, S2 jeweils über dessen Source-Anschluss 54 und dessen Drain-Anschluss 56 Steuerzugang zu der NAND-Kette vor. Gleichermaßen sind die Steuer-Gates 32 entsprechender Auswahltransistoren einer Zeile einer NAND-Kette alle mit derselben Auswahl-Leitung verbunden.
-
Wenn ein adressierter Speichertransistor 10 innerhalb einer NAND-Kette ausgelesen oder während der Programmierung verifiziert wird, wird dessen Steuer-Gate 30 mit einer passenden Spannung versorgt. Gleichzeitig wird der Rest der nichtadressierten Speichertransitoren in der NAND-Kette 50 gänzlich durch Anlegen einer hinreichenden Spannung an deren Steuer-Gates eingeschaltet. Auf diese Weise wird effektiv ein Leitungspfad von der Source des einzelnen Speichertransitors zum Source-Anschluss 54 der NAND-Kette und gleichermaßen für die Drain des einzelnen Speichertransitors zum Drain-Anschluss 56 der Zelle geschaffen.
-
4B veranschaulicht ein Beispiel für ein NAND-Array 210 von Speicherzellen, das aus NAND-Ketten 50 aufgebaut ist, wie etwa das in 4A gezeigte. Entlang jeder Spalte von NAND-Ketten ist eine Bit-Leitung, wie etwa die Bit-Leitung 36, mit dem Drain-Anschluss 56 jeder NAND-Kette gekoppelt. Entlang jeder Bank von NAND-Ketten ist eine Source-Leitung, wie etwa die Source-Leitung 34, mit den Source-Anschlüssen 54 jeder NAND-Kette gekoppelt. Auch sind die Steuer-Gates entlang einer Zeile von Speicherzellen in einer Bank von NAND-Ketten mit einer Wort-Leitung, wie etwa der Wort-Leitung 42, verbunden. Auch sind die Steuer-Gates entlang einer Zeile von Auswahl-Transistoren in einer Bank von NAND-Ketten mit einer Auswahl-Leitung, wie etwa der Auswahl-Leitung 44, verbunden. Eine gesamte Zeile von Speicherzellen in einer Bank von NAND-Ketten kann durch passende Spannungen auf den Wort-Leitungen und Auswahl-Leitungen der Bank von NAND-Ketten adressiert werden.
-
5 veranschaulicht eine Seite von Speicherzellen, die in der NAND-Konfiguration organisiert ist, die parallel erfasst oder programmiert wird. 5 zeigt im Wesentlichen eine Bank von NAND-Ketten 50 in dem Speicherarray 210 von 4B, wobei das Detail jeder NAND-Kette explizit wie in 4A gezeigt ist. Eine physische Seite, wie etwa die Seite 60, ist eine Gruppe von Speicherzellen, die aktiviert sind, um parallel erfasst oder programmiert zu werden. Dies wird durch eine entsprechende Seite von Erfassungsverstärkern 212 erreicht. Die erfassten Ergebnisse werden in einem entsprechenden Satz von Zwischenspeichern bzw. Latches 214 zwischengespeichert. Jeder Erfassungsverstärker kann über eine Bit-Leitung mit einer NAND-Kette gekoppelt werden. Die Seite wird durch die Steuer-Gates der Zellen der Seite, die gemeinsam mit einer Wort-Leitung 42 und jeweils durch einen Erfassungsverstärker, der über eine Bit-Leitung 36 zugreifbar ist, zugreifbar verbunden sind, aktiviert. Wenn beispielsweise die Seite von Zellen 60 jeweils erfasst oder programmiert wird, wird jeweils eine Erfassungsspannung oder eine Programmierspannung zusammen mit passenden Spannungen an die gemeinsame Wort-Leitung WL3 auf den Bit-Leitungen angelegt.
-
Physische Organisation des Speichers
-
Ein Unterschied zwischen Flash-Speicher und anderen Speicherarten besteht darin, dass eine Flash-Speicherzelle im Allgemeinen vom gelöschten Zustand aus programmiert wird. Das heißt, dass das Schwebe-Gate im Allgemeinen erst von Ladungen entleert wird. Programmieren fügt dann wieder eine gewünschte Ladungsmenge zum Schwebe-Gate hinzu. Flash-Speicher unterstützt im Allgemeinen nicht das Entfernen eines Teils der Ladung vom Schwebe-Gate, um von einem stärker zu einem weniger programmierten Zustand überzugehen. Dies bedeutet, dass aktualisierte Daten vorhandene Daten nicht überschreiben können, und stattdessen an einen zuvor unbeschriebenen Ort geschrieben werden.
-
Weiterhin dient das Löschen dem Ausleeren aller Ladungen vom Schwebe-Gate und nimmt im Allgemeinen eine gewisse Zeit in Anspruch. Aus diesem Grunde wird es mühsam und sehr langsam sein, Zelle für Zelle, oder sogar Seite für Seite zu löschen. In der Praxis ist das Array von Speicherzellen in eine große Anzahl von Blöcken von Speicherzellen aufgeteilt. Wie es für Flash-EEPROM-Systeme üblich ist, ist der Block die Einheit des Löschens. Das heißt, dass jeder Block die minimale Anzahl an Speicherzellen enthält, die zusammen gelöscht werden. Obgleich das Zusammenfassen einer großen Anzahl von parallel zu löschenden Zellen in einem Block die Leistungsfähigkeit des Löschens verbessern wird, bringt ein großer Block das Handhaben einer großen Anzahl an Aktualisierungs- und hinfälligen Daten mit sich.
-
Jeder Block ist typischerweise in eine Anzahl physischer Seiten unterteilt. Eine logische Seite ist eine Einheit des Programmierens oder Auslesens, die eine Anzahl von Bits enthält, die gleich der Anzahl von Zellen in einer physischen Seite ist. In einem Speicher, der ein Bit pro Zelle speichert (ein Einzelniveauzelle- oder SLC-Speicher), speichert eine physische Seite eine logische Seite von Daten. In Speichern, die zwei Bit pro Zelle speichern, speichert eine physische Seite zwei logische Seiten. Die Anzahl in einer physischen Seite gespeicherter logischer Seiten gibt somit die Anzahl von pro Zelle gespeicherten Bits wieder. Der Begriff Mehrniveauzelle (Multi Level Cell – MLC) wird im Allgemeinen so verwendet, dass er sich auf Speicher bezieht, die mehr als ein Bit pro Zelle speichern, einschließlich Speichern, die drei Bit pro Zelle (TLC), vier Bit pro Zelle oder mehr Bit pro Zelle speichern. Bei einer Ausführungsform können die Einzelseiten in Segmente aufgeteilt sein und die Segmente können die kleinste Anzahl von Zellen, die zu einem Zeitpunkt als eine Basisprogrammieroperation geschrieben werden, enthalten. Eine oder mehrere logische Datenseiten werden typischerweise in einer Zeile von Speicherzellen gespeichert. Eine Seite kann einen oder mehrere Sektoren speichern. Ein Sektor kann Nutzerdaten und Overheaddaten beinhalten.
-
MLC Programmierung
-
6A–6C veranschaulichen ein Beispiel für Programmieren einer Population von 4-Zustand-Speicherzellen. 6A veranschaulicht die Population von Speicherzellen, die in vier verschiedene Verteilungen von Schwellenspannungen, die jeweils Speicherzustände “E”, “A”, “B” und “C” repräsentieren, programmierbar sind. 6B veranschaulicht die Anfangsverteilung von „gelöschten“ Schwellenspannungen für einen gelöschten Speicher. 6C veranschaulicht ein Beispiel des Speichers nachdem viele der Speicherzellen programmiert wurden. Im Wesentlichen weist eine Zelle anfangs eine „gelöschte“ Schwellenspannung auf und Programmieren wird sie auf einen höheren Wert, in eine der drei von den Verifikationspegeln vV1, vV2 und vV3 abgegrenzten Zonen bewegen. Auf diese Weise kann jede Speicherzelle auf einen der drei programmierten Zustände „A“, „B“ und „C“ programmiert werden oder unprogrammiert im „gelöscht“-Zustand verbleiben. Mit zunehmender Programmierung wird die ursprüngliche, wie in 6B gezeigte, Verteilung des „gelöschten“ Zustands schmaler werden und der gelöschte Zustand wird durch den „0“-Zustand repräsentiert.
-
Ein 2-Bit-Code mit einem tieferen Bit und einem höheren Bit kann zum Repräsentieren von jedem der vier Speicherzustände verwendet werden. Beispielsweise werden die Zustände „E“, „A“, „B“ und „C“ jeweils durch „11“, „01“, „00“ und „10“ repräsentiert. Die 2-Bit-Daten können durch Erfassen im „Vollsequenz“-Modus aus dem Speicher gelesen werden, wo die zwei Bits zusammen durch Erfassen relativ zu den Ausleseabgrenzung-Schwellenwerten rV1, rV2 und rV3 jeweils in drei Unterdurchgängen erfasst werden.
-
3-D-NAND-Struktur
-
Eine alternative Anordnung gegenüber einem konventionellen (2-D)-NAND-Array ist ein dreidimensionales (3-D)-Array. Im Gegensatz zu 2-D-NAND-Arrays, die entlang einer ebenen Oberfläche eines Halbleiterwafers gebildet werden, erstrecken sich 3-D-Arrays von der Waferoberfläche nach oben und beinhalten im Allgemeinen Stapel, oder Säulen, von Speicherzellen, die sich aufwärts erstrecken. Verschiedene 3-D-Anordnungen sind möglich. Bei einer Anordnung ist eine NAND-Kette vertikal mit einem Ende (z. B. der Source) an der Waferoberfläche und dem anderen Ende (z. B. der Drain) darauf ausgebildet. Bei einer anderen Anordnung ist eine NAND-Kette U-förmig ausgebildet, so dass beide Enden der NAND-Kette oben zugänglich sind, was somit Verbindungen zwischen solchen Ketten erleichtert.
-
7 zeigt ein erstes Beispiel für eine NAND-Kette 701, die sich in einer vertikalen Richtung erstreckt, d. h. sich in der z-Richtung senkrecht zur x-y-Ebene des Substrats erstreckt. Speicherzellen sind dort ausgebildet, wo eine vertikale Bit-Leitung (lokale Bit-Leitung) 703 durch eine Wort-Leitung (z. B. WL0, WL1 usw.) hindurchgeht. Eine Ladungsfallenschicht zwischen der lokalen Bit-Leitung und der Wort-Leitung speichert Ladung, was die Schwellenspannung des Transistors, der durch die Wort-Leitung (Gate) mit der von ihr umgebenen vertikalen gekoppelten Bit-Leitung (Kanal) gebildet ist, beeinflusst. Derartige Speicherzellen können durch Bilden von Stapeln von Wort-Leitungen und dann durch Ätzen von Speicherlöchern, wo Speicherzellen gebildet werden sollen, ausgebildet werden. Speicherlöcher werden dann mit einer Ladungsfallenschicht ausgekleidet und mit einem geeigneten lokalen Bit-Leitung/Kanal-Material (mit geeigneten dielektrischen Schichten zur Isolation) aufgefüllt.
-
Wie bei ebenen NAND-Ketten befinden sich die Auswahl-Gates 705, 707 an beiden Enden der Kette, um der NAND-Kette zu ermöglichen, selektiv mit externen Elementen 709, 711 verbunden oder von diesen isoliert zu werden. Solche externen Elemente sind im Allgemeinen leitfähige Leitungen, wie etwa gemeinsame Source-Leitungen oder Bit-Leitungen, die große Anzahlen von NAND-Ketten bedienen. Vertikale NAND-Ketten können auf ähnliche Weise wie ebene NAND-Ketten betrieben werden und sowohl Einzelniveauzellen(SLC)- als auch Mehrniveauzellen(MLC)-Betrieb ist möglich. Obgleich 7 ein Beispiel für eine NAND-Kette zeigt, die 32 in Reihe geschaltete Zellen (0–31) aufweist, kann die Anzahl der Zellen in einer NAND-Kette irgendeine geeignete Anzahl sein. Aus Gründen der Klarheit sind nicht alle Zellen gezeigt. Es versteht sich, dass zusätzliche Zellen ausgebildet sind, wo die Wort-Leitungen 3–29 (nicht gezeigt) die lokale vertikale Bit-Leitung schneiden.
-
8 zeigt ein zweites Beispiel einer NAND-Kette 815, die sich in einer vertikalen Richtung (z-Richtung) erstreckt. In diesem Fall bildet die NAND-Kette 815 eine U-Form, die sich mit externen Elementen (Source-Leitung „SL“ und Bit-Leitung „BL“) verbindet, die sich oben auf der Struktur befinden. Am Boden der NAND-Kette 815 befindet sich ein steuerbares Gate (Rück-Gate „BG“), das die zwei Flügel 816A, 816B der NAND-Kette 815 verbindet. Insgesamt sind 64 Zellen ausgebildet, wo die Wort-Leitungen WL0–WL63 die lokale vertikale Bit-Leitung 817 schneiden (obwohl bei anderen Beispielen andere Zellenanzahlen vorgesehen sein können). Die Auswahl-Gates SGS, SGD befinden sich an beiden Enden der NAND-Kette 815, um eine Verbindung/Isolation der NAND-Kette 815 zu steuern.
-
Vertikale NAND-Ketten können zum Ausbilden eines 3-D-NAND-Arrays auf verschiedene Weisen angeordnet sein. 9 zeigt ein Beispiel, wo mehrere U-förmige NAND-Ketten in einem Block mit einer Bit-Leitung verbunden sind. In diesem Fall gibt es n Ketten (Kette 1–Kette n) in einem Block, die mit einer Bit-Leitung („BL“) verbunden sind. Der Wert von „n“ kann eine beliebige geeignete Zahl sein, beispielsweise 8, 12, 16, 32 oder mehr. Ketten wechseln sich in ihrer Ausrichtung mit ungerade nummerierten Ketten, die ihre Source-Verbindung links haben, und gerade nummerierten Ketten, die ihre Source rechts haben, ab. Diese Anordnung ist zweckdienlich, wenn auch nicht zwingend, und andere Muster sind ebenfalls möglich.
-
Gemeinsame Source-Leitungen „SL“ sind mit einem Ende jeder NAND-Kette verbunden (gegenüber dem Ende, das mit der Bit-Leitung verbunden ist). Dies kann als das Source-Ende der NAND-Kette angesehen werden, wobei das Bit-Leitungsende als das Drain-Ende der NAND-Kette angesehen wird. Gemeinsame Source-Leitungen können verbunden sein, so dass alle Source-Leitungen für einen Block zusammen durch eine Peripherieschaltung angesteuert werden können. Somit erstrecken sich NAND-Ketten eines Blocks parallel zwischen Bit-Leitungen an einem Ende und gemeinsamen Source-Leitungen am anderen Ende.
-
10 zeigt eine Speicherstruktur, in der sich gerade vertikale NAND-Ketten von gemeinsamen Source-Verbindungen in oder nahe einem Substrat zu globalen Bit-Leitungen (BL0–BL3) erstrecken, die sich über die physischen Ebenen von Speicherzellen hinweg erstrecken. Wort-Leitungen in einer gegebenen physischen Ebene in einem Block sind aus einem Blatt aus leitendem Material ausgebildet. Speicherlochstrukturen erstrecken sich durch diese Blätter aus leitendem Material hinunter, um Speicherzellen zu bilden. Innerhalb eines gegebenen Blocks gibt es mehrere NAND-Ketten, die mit einer gegebenen Bit-Leitung verbunden sind. NAND-Ketten sind in Sätze von Ketten gruppiert, die sich gemeinsame Auswahl-Gates teilen. Somit können beispielsweise NAND-Ketten, die durch SGS0 und SGD0 ausgewählt wurden, als ein Satz angesehen werden und als Kette 0 bezeichnet werden, wohingegen NAND-Ketten, die von SGS1 und SGD1 ausgewählt wurden, als ein Satz angesehen werden und, wie gezeigt, als Kette 1 bezeichnet werden können. Ein Block kann aus einer beliebigen geeigneten Anzahl solcher Kettensätze bestehen. Es versteht sich, dass der Querschnitt von 10 Teile von BL0–BL3 zeigt, wobei sich diese Bit-Leitungen weiter in der y-Richtung erstrecken. Darüber hinaus erstrecken sich zusätzliche Bit-Leitungen parallel zu BL0–BL3 (z. B. an unterschiedlichen Orten entlang der x-Achse, hinter oder vor dem Ort des Querschnitts von 10). Andere dreidimensionale Speicher basieren statt auf Ladungsspeicherungselementen auf resistiven Elementen.
-
Speicherzellen, ob nun in 3D-Speichern oder in planaren Speichern, werden im Allgemeinen auf getrennten Dies ausgebildet, wobei jeder Die irgendwelche Peripherieschaltungen und irgendeine Schnittstelle für externe Kommunikation aufweist (z. B. Kontaktfelder zum Bonden von Drähten, die mit externen Schaltungen verbunden werden). Mehrere Dies können zusammen mittels einer oder mehreren Speichersteuerungen betrieben werden, so dass sie zusammen ein Speichersystem bilden, das fähig ist zum Speichern großer Datenmengen auf eine effiziente Weise. Kommunikation zwischen einer Speichersteuerung und einem Speicher-Die kann einen dedizierten Kommunikationspfad verwenden. Alternativ können sich mehrere Speicher-Dies einen gemeinsamen Bus teilen, der die Speicher-Dies mit einer Speichersteuerung verbindet. Im Allgemeinen verwaltet die Speichersteuerung einen derartigen Bus, so dass Dies sequentiell adressiert werden, wobei ein Die zu einer gegebenen Zeit für Kommunikation freigeschaltet wird.
-
11 zeigt ein Beispiel einer Speichersteuerung, oder auch Flash-Schnittstellenmodul (Flash Interface Module – FIM), die sich über einen gemeinsam genutzten Datenbus 141 in Kommunikation mit zwei Dies befindet, Die 0 und Die 1. Ein gemeinsamer Adressbus 143 erstreckt sich ebenfalls von dem FIM zu Die 0 und Die 1, um der Steuerung zu ermöglichen, Adresseninformationen hinsichtlich physischer Adressen, wo Daten gespeichert werden sollen, zu senden. Eine dedizierte Chipfreischaltleitung (Chip Enable – CE) bzw. CE-Leitung 145 erstreckt sich vom FIM zu Die 0 und eine separate dedizierte CE-Leitung 147 erstreckt sich vom FIM zu Die 1. Dies ermöglicht es, einen Die zu einer gegebenen Zeit freizuschalten oder auszuwählen, so dass der Daten- und/oder Adressbus für Kommunikation mit dem freigeschalteten Die verwendet werden kann. Bei anderen Anordnungen können mehr als zwei Dies mit demselben Bus verbunden sein und ein FIM kann mehrere Busse verwalten.
-
Verschiedene Probleme können auftreten, wenn Daten in einem Speicher gespeichert und später ausgelesen werden. Kleine Anzahlen von Fehlern können durch Fehlerkorrekturcode (Error Correction Ccode – ECC) oder irgendein anderes Redundanzsystem korrigiert werden. Große Anzahlen von Fehlern können möglicherweise nicht einfach korrigierbar sein und können dazu führen, dass Daten nicht wiederherstellbar sind. Manche Speichersysteme können große Anzahlen von Fehlern in Daten aufweisen, wenn das Speichersystem neu ist, z. B. wegen eines oder mehrerer physischer Defekte während der Herstellung. Bei anderen Speichersystemen nimmt die Anzahl von Fehlern mit der Zeit zu und wird nach einer gewissen Nutzungsdauer groß. In beiden Fällen ist es wünschenswert, große Anzahlen von Fehlern zu vermeiden.
-
Manche Fehler können von der Programmierung stammen. In manchen Fällen tritt ein Programmierversagen auf, wenn beim Programmieren von Daten nach einer gewissen Zeit oder nach einer Anzahl von Programmier-Verifizier-Zyklen (nachdem eine maximale Schleifenzahl erreicht ist) Versagen auftritt. Dies kann erfordern, die Daten andernorts im Speicher zu programmieren, was signifikant Zeit benötigt. Selbst da, wo ein Programmierversagen nicht auftritt, kann eine große Anzahl schlechter Bits vom Programmieren von Daten vorhanden sein (z. B. können harte Fehler in gespeicherten Daten vorhanden sein, so dass die Bits umgekippt sind und schlechte Bits produzieren). Bei anderen Fällen sind Bits so programmiert, dass sie anfangs korrekt ausgelesen werden, sich aber dicht am Fehlablesen befinden (z. B. liegt eine Schwellenspannung dicht an einer Diskriminierungsspannung, die zum Auslesen eines Speicherzellenzustands verwendet wird). Dies kann weiche Fehler produzieren, die mit der Zeit zu harten Fehlern werden können.
-
Bei einem hier präsentierten Beispiel wird ein Teil der Daten parallel an zwei verschiedenen Orten programmiert, so dass erwartet werden kann, dass mindestens eine Kopie nach dem Programmieren gut ist (z. B. erleidet eine Kopie möglicherweise kein Programmierversagen oder weist signifikante Anzahlen von harten oder weichen Fehlern auf). Obgleich ein derartiges Schema die Menge an anfänglich belegtem Raum verdoppelt, wenn ein Teil der Daten gespeichert wird, so kann eine der Kopien verworfen werden, nachdem bestimmt wurde, dass es mindestens eine gute Kopie gibt. Durch paralleles Programmieren der zwei Kopien auf effiziente Weise können die zwei Kopien ohne signifikante Zunahme der Schreibdauer geschrieben werden.
-
12A zeigt ein Beispiel eines ersten Schritts beim Schreiben zweier identischer Kopien eines Teils der Daten zu zwei Speicher-Dies, Die 0 und Die 1. 12A zeigt, dass sowohl Die 0 als auch Die 1 durch Freigabesignale (Auswahlsignale) auf beiden CE-Leitungen 145, 147 freigeschaltet werden. Adresseninformationen „X, Y, Z“ werden über den Adressbus 143 gesendet, während sowohl Die 0 als auch Die 1 freigeschaltet werden. Somit empfangen sowohl Die 0 als auch Die 1 gleichzeitig dieselben Adresseninformationen. Diese Adresseninformationen können sowohl in Die 0 als auch in Die 1 zwischengespeichert werden, um Schreiben nachfolgender Daten an die Adressen X, Y, Z in Die 0 und Die 1 zu ermöglichen.
-
In der Folge werden, wie in 12B gezeigt ist, sowohl Die 0 als auch Die 1 freigeschaltet, während Daten „A, B, C“ über den Datenbus 147 an beide Dies gesendet werden. Somit empfangen sowohl Die 0 als auch Die 1 gleichzeitig A, B, C. Die Daten A, B, C werden dann parallel in Die 0 und Die 1 an den Orten X, Y, Z in jedem Die programmiert. Das Ergebnis ist, dass beide Dies dieselben Daten an entsprechenden Orten enthalten. Es versteht sich, dass die Orte Blöcke, Seiten oder andere Einheiten sein können und dass Dies identisch sein können, so dass es für jeden Block, jede Seite usw. in Die 0 einen korrespondierenden Block, eine korrespondierende Seite usw. in Die 1 gibt. Es ist ersichtlich, dass die zum Schreiben zweier Kopien der Daten A, B, C in diesem Beispiel erforderliche Zeit gleich der Zeit zum Schreiben einer Kopie sein kann. Somit wird die zweite Kopie ohne eine Zeitstrafe geschrieben.
-
In manchen Fällen kann es nicht wünschenswert oder nicht möglich sein, Kopien in zwei Dies an identische Orte zu schreiben. Beispielsweise können in einem Die schlechte Blöcke vorhanden sein, so dass keine Daten in derartige schlechte Blöcke geschrieben werden können, wenn Daten in einem anderen Die in einen entsprechenden guten Block (guten Block mit entsprechender physischen Adresse) geschrieben werden. Ein Die kann irgendwelche Daten enthalten, die nicht in dem anderen Die enthalten sind (d. h., dass nicht alle Daten parallel zu beiden geschrieben werden können), so dass verbliebene freie Gebiete von zwei derartigen Dies verschieden sein können. 13A–C zeigen ein effizientes Schema zum Schreiben von Kopien zu zwei Dies mit verschiedenen Adressen.
-
13A zeigt Die 0 beim Empfangen eines Freigabesignals auf der CE-Leitung 145, während Die 1 kein Freigabesignal auf der CE-Leitung 147 empfängt. Adresseninformationen X, Y, Z werden über den Adressbus 143 gesendet und werden durch Die 0 (nicht durch Die 1) empfangen.
-
Nachfolgend empfängt Die 1, wie in 13B gezeigt ist, ein Freigabesignal bzw. Enable-Signal auf der CE-Leitung 147, während Die 0 kein Freigabesignal auf der CE-Leitung 145 empfängt. Adresseninformationen X‘, Y‘, Z‘ werden über den Adressbus 143 gesendet und werden durch Die 1 (nicht Die 0) empfangen. Die Adresseninformationen X‘, Y‘, Z‘ unterscheiden sich von den Adresseninformationen X, Y, Z, so dass jeder Die an diesem Punkt mit anderen Adresseninformationen konfiguriert ist.
-
13C zeigt Daten A, B, C, die über den Datenbus 141 gesendet werden, während Freigabesignale über die CE-Leitungen 145, 147 an sowohl Die 0 als auch Die 1 gesendet werden. Somit empfangen beide Dies parallel identische Daten. Diese Daten werden dann in jeden Die an die zuvor durch den jeweiligen Die erhaltenen physischen Adressen programmiert. Somit speichert Die 0 die Daten A, B, C an Orten X, Y, Z, wohingegen Die 1 die Daten A, B, C an Orten X‘, Y‘, Z‘ speichert. Dies führt zu einer anderen Anordnung der Daten in jedem Die. Schreiben zweier Kopien gemäß diesem Schema kann etwas länger dauern als Schreiben einer einzigen Kopie, da Adresseninformationen zweimal hintereinander an Die 0 und Die 1 gesendet werden. Allerdings ist die zum Übertragen derartiger Adresseninformationen erforderliche Zeit im Allgemeinen ein kleiner Teil der Gesamtprogrammierdauer (d. h. weniger Zeit als Datenübertragung oder Datenprogrammierung), so dass dies möglicherweise keine signifikante Zunahme der Gesamtschreibdauer repräsentiert.
-
Verschiedene Speichersysteme können von den hier beschriebenen Techniken profitieren, einschließlich Systemen, die Mehrebenen-Dies verwenden. 14 zeigt ein Beispiel zweier Dies, Die A und Die B, von denen jeder zwei Ebenen, Ebene 0 und Ebene 1 aufweist. Ebene 0 von Die B zeigt Gebiete mit schlechten Blöcken (Bad Blocks – BB), die einen oder mehrere schlechte Blöcke enthalten können. Als Ergebnis überspringt das Schreiben die schlechten Blöcke und macht mit dem nächsten guten Block in dieser Ebene weiter. Das Ergebnis ist, dass die Daten in Die A anders als in Die B geschrieben werden (unterschiedliche Adressen können von der Speichersteuerung gesendet werden, um dies zu erlauben). Obgleich Daten in Ebene 1 (Daten E) identisch in Die A und Die B geschrieben werden, sind die Daten in Ebene 0 (Daten D) aufgrund des Gebiets mit schlechten Blöcken in Die B verschoben.
-
Mehr als zwei Dies können mit demselben Bus verbunden sein. Obgleich identische Kopien von Daten zu einer beliebigen Anzahl von Dies geschrieben werden können, kann es ausreichen, zwei Kopien zu schreiben. Somit kann es in einem System mit vier oder mehr Speicher-Dies wünschenswert sein, Dies zu paaren und Kopien parallel zu einem Paar von Dies zu schreiben.
-
15 zeigt ein Beispiel für vier Dies, die mit einer Speichersteuerung verbunden sind. Die Dies A und B sind gepaart und speichern beide dieselben Daten (Daten F) an entsprechenden Orten. Die Dies C und D sind gepaart und speichern dieselben Daten (Daten G) an verschiedenen Orten (z. B. wegen schlechter Blöcke oder zuvor in einen Die geschriebener Daten, die sich nicht in dem anderen Die befinden).
-
Obgleich in dem gezeigten Beispiel alle Dies gepaart sind, können in anderen Beispielen manche Dies ungepaart verbleiben und können einzigartige Kopien von Daten speichern. Beispielsweise können in einem Speichersystem mit mehreren Dies manche Dies als wahrscheinlich mit progammierbezogenen Fehlern behaftet identifiziert werden, während andere Dies als unwahrscheinlich mit derartigen Fehlern behaftet identifiziert werden. Dies, die wahrscheinlich derartige Fehler aufweisen können, können einem Doppelschreibschema unterzogen werden, wodurch in solche Dies geschriebene Daten gleichzeitig in zwei Dies geschrieben werden. Dies, die eher unwahrscheinlich derartige Fehler aufweisen, können auf konventionelle Weise betrieben werden, so dass sie einzeln für Datenübertragung und -programmierung freigeschaltet werden. Somit können derartige Dies einzigartige Kopien von Daten enthalten. Ein Speichersystem kann einige Dies unter Verwendung eines Doppelschreibschemas betreiben und andere Dies gleichzeitig unter Verwendung eines konventionellen Schemas betreiben. Ein Block kann von konventionellem Betrieb zu Doppelschreibbetrieb wechseln, so dass der Betriebsmodus als Reaktion auf zunehmende Fehler oder andere Faktoren änderbar sein kann.
-
Ein Speichersystem kann für Doppelschreiben von der Initialisierung an ausgelegt sein, z. B. durch Design oder als Ergebnis von Testen, das ein hohes Risiko für Programmierfehler anzeigt. In anderen Fällen wird Doppelschreiben während der Lebensdauer des Speichers bei Bedarf angewendet. Anfangs gibt es möglicherweise wenig oder keinen Bedarf an Doppelschreiben. Bei Verwendung des Speichers und Erleiden von abnutzungsbezogener Beschädigung können Dies für Doppelschreiben identifiziert und gepaart und entsprechend betrieben werden. Somit kann die Anzahl von im Doppelschreibmodus betriebener Dies über die Lebensdauer des Produkts hinweg zunehmen. Eine Feststellung für Betrieb eines Dies in einem Doppelschreibmodus kann auf einer abnutzungsbezogenen (z. B. Schreib-Lösch-Zykluszähler) Fehlerrate (z. B. der durch EEC oder anderweitig gefundenen Bitfehlerrate „BER“) oder irgendeiner anderen Metrik basieren.
-
16 veranschaulicht ein Doppelschreibschema, das identische Adressierung in zwei Dies verwendet. Beide Dies, Die 0 und Die 1, werden freigeschaltet 664. Dann werden parallel dieselben Adresseninformationen an sowohl Die 0 als Die 1 gesendet 666, während beide Dies freigeschaltet sind. Nachfolgend werden bei weiterhin beiden freigeschalteten Dies Daten an Die 0 und Die 1 gesendet 668. Die 0 und Die 1 werden dann parallel programmiert 670.
-
17 veranschaulicht ein anderes Doppelschreibschema, das andere Adressierung in zwei Dies verwendet. Die 0 wird freigeschaltet 762 und Adresseninformationen werden an Die 0 gesendet 774. Das Freigabesignal für Die 0 wird dann abgeschaltet 776 und ein Freigabesignal wird an Die 1 gesendet 778. Adresseninformationen werden dann an Die 1 gesendet 780. Diese Adresseninformationen unterscheiden sich von den an Die 0 gesendeten Adresseninformationen. Sowohl Die 0 als auch Die 1 empfangen dann parallel ein Freigabesignal 782. Daten werden dann parallel an Die 0 und Die 1 gesendet 784. Die 0 und Die 1 werden dann parallel programmiert 786. Identische Adressierung und unterschiedliche Adressierung können in einigen Fällen gleichzeitig in demselben Speichersystem verwendet werden. Im Allgemeinen ist identische Adressierung schneller und einfacher und kann somit wünschenswerter sein. Ein Paar von Dies, das im Doppelschreibmodus betrieben wird, kann identische Adressierung wie ein Standardschema verwenden und kann unterschiedliche Adressierung bei Bedarf verwenden, wenn identische Adressierung nicht aufrechterhalten werden kann (z. B., wenn schlechte Blöcke auftreten). Somit kann ein Paar von Blöcken teilweise unter Verwendung identischer Adressierung geschrieben werden und kann nachfolgend weiter unter Verwendung von unterschiedlicher Adressierung geschrieben werden.
-
In manchen Fällen kann es wünschenswert sein, zwei identische Kopien für einen ausgedehnten Zeitraum zu behalten, um für den Fall einer beschädigten Kopie Redundanz vorzusehen, z. B. wegen Datenerhaltungsproblemen oder Datenstörung. In anderen Fällen kann es wünschenswert sein, nur eine Kopie zu behalten, nachdem bestimmt wurde, dass mindestens eine gute Kopie geschrieben wurde.
-
Wo eine Kopie erfolgreich in einen Die geschrieben wird und ein Programmierungsversagen während des Schreibens der anderen Kopie in einem anderen Die auftritt, wird dann das Programmierungsversagen ignoriert und die erfolgreich geschriebene Kopie kann beibehalten werden. Falls ein Programmierungsversagen in beiden Dies auftritt, dann können die Daten entweder in dieselben Dies oder an anderer Stelle neu geschrieben werden. Wenn beide Kopien ohne ein Programmierungsversagen geschrieben werden, dann kann eine Bestimmung vorgenommen werden, welche Kopie beibehalten und welche verworfen werden sollte. Beispielsweise kann die zum Programmieren der Daten in jeden Die benötigte Anzahl von Programmier-Verifizier-Zyklen (Schleifenzähler) verglichen werden. Höhere Schleifenzählung kann ein Indikator für Programmierprobleme sein, so dass die Kopie der Daten, die eine höhere Schleifenzählung aufweist, verworfen werden und die Kopie mit der niedrigeren Schleifenzählung beibehalten werden kann. Bei einem anderen Beispiel können Daten von jedem Die gelesen werden und eine Kopie, die einen oder mehr Lesefehler produziert, kann verworfen werden. Die Anzahl von Leseschritten (Leseschleifenzähler) kann auch verglichen werden und die Kopie mit einer höheren Leseschleifenzählung kann verworfen werden. Eine Anzahl von Fehlern kann verglichen werden. Beispielsweise können einige Daten ausgelesen und einer ECC-Decodierung unterzogen werden, um eine BER für jede Kopie zu bestimmen (mindestens anhand irgendeiner Probe von jeder Kopie). Eine Kopie mit einer höheren Fehlerrate kann verworfen werden.
-
In manchen Fällen kann eine zu verwerfende Kopie als hinfällig markiert und zu irgendeinem Zeitpunkt danach gelöscht werden. In anderen Fällen kann eine zu verwerfende Kopie für einen gewissen Zeitraum als eine redundante Kopie beibehalten und dann verworfen werden. Beispielsweise werden in manchen Speichersystemen Daten anfangs in einem Format niedriger Dichte (z. B. Format mit ein Bit pro Zelle bzw. SLC-Format) geschrieben und später in ein Format höherer Dichte (z. B. Format mit zwei, drei oder mehr Bits pro Zelle bzw. MLC-Format) gefaltet. Eine redundante Kopie kann beibehalten werden, bis die Daten gefaltet und die MLC-Kopie als erfolgreich geschrieben bestätigt wird.
-
18 zeigt ein Beispiel, bei dem Die 0 und Die 1 mit identischen Daten programmiert werden 888. Dann wird eine Analyse durchgeführt, um entweder die Die 0-Kopie oder die Die 1-Kopie als eine hinfällige Kopie zu identifizieren 890. Die kann auf irgendeiner Qualitätsmetrik basieren, wie etwa Programmierungsversagen, Programmierungsschleifenzählung, Leseversagen, Leseschleifenzählung, Bitfehlerrate oder einer anderen Metrik oder Kombination von Metriken. Nachfolgend wird die hinfällige Kopie zum Löschen markiert, während die gute Kopie beibehalten wird 892. Nachfolgend werden irgendwelche Anforderungen der Daten (z. B. ein Hostlesebefehl) zur guten (nicht hinfälligen) Kopie geleitet.
-
Schlussbemerkung
-
Die vorangehende ausführliche Beschreibung wurde zum Zwecke der Veranschaulichung und Beschreibung präsentiert. Sie soll weder erschöpfend sein noch die angehängten Ansprüche beschränken. Viele Modifikationen und Variationen sind angesichts der obigen Lehren möglich.