DE112015005325T5 - Speicherbusverwaltung - Google Patents

Speicherbusverwaltung Download PDF

Info

Publication number
DE112015005325T5
DE112015005325T5 DE112015005325.5T DE112015005325T DE112015005325T5 DE 112015005325 T5 DE112015005325 T5 DE 112015005325T5 DE 112015005325 T DE112015005325 T DE 112015005325T DE 112015005325 T5 DE112015005325 T5 DE 112015005325T5
Authority
DE
Germany
Prior art keywords
sub
list
memory
operations
dies
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
DE112015005325.5T
Other languages
English (en)
Inventor
Lee M. Gavens
Daniel Lee
Meiqing He
Christopher Dinh
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 DE112015005325T5 publication Critical patent/DE112015005325T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

Ein Verfahren zum Verwalten eines Speicherbusses umfasst Identifizieren von Suboperationen, die zur Ausführung von Befehlen erforderlich sind, Unterhalten einer Liste von freigegebenen Suboperationen, die nur freigegebene unausgeführte Suboperationen enthält, die an einzelne Dies gerichtet sind, die als verfügbar identifiziert sind, Zugreifen auf die Dies, bis die Liste leer ist, danach Abfragen, um Dies zu identifizieren, die verfügbar sind, und danach Wiederaufnehmen des Zugreifens auf die Dies durch Ausführen nur von Suboperationen von der Liste, bis die Liste leer ist.

Description

  • STAND DER TECHNIK
  • Die vorliegende Anmeldung betrifft die Funktionsweise von umprogrammierbarem nichtflüchtigem Speicher, wie etwa Halbleiter-Flash-Speicher.
  • Halbleiterspeicher mit der Fähigkeit zur nichtflüchtigen Speicherung von Ladung, insbesondere in Form von EEPROM und Flash-EEPROM, gekapselt als eine Karte mit kleinem Formfaktor, ist in vielfältigen mobilen und Handheld-Vorrichtungen, insbesondere Informationsgeräten und Unterhaltungselektronikprodukten, zur bevorzugten Wahl geworden. Im Gegensatz zu RAM (Direktzugriffsspeicher), der auch Halbleiterspeicher ist, ist Flash-Speicher nichtflüchtig und behält seine gespeicherten Daten selbst nachdem der Strom abgeschaltet wird. Außerdem ist im Gegensatz zu ROM (Festwertspeicher) Flash-Speicher ähnlich wie eine Plattenspeicherungsvorrichtung umschreibbar.
  • Flash-EEPROM ist EEPROM (elektrisch löschbarem und programmierbarem Festwertspeicher) insofern ähnlich, als er ein nichtflüchtiger Speicher ist, der gelöscht werden kann und bei dem neue Daten in die Speicherzellen geschrieben oder „programmiert“ werden können. Beide benutzen ein leitfähiges Floating- (unverbundenes) Gate in einer Feldeffekttransistorstruktur, das über einer Kanalregion in einem Halbleitersubstrat zwischen Source- und Drainregion positioniert ist. Dann wird über dem Floating-Gate ein Steuergate vorgesehen. Die Schwellenspannungskurve des Transistors wird durch die Ladungsmenge gesteuert, die auf dem Floating-Gate behalten wird. Das heißt, für einen gegebenen Wert der Ladung auf dem Floating-Gate ist eine entsprechende Spannung (Schwelle) an das Steuergate anzulegen, bevor der Transistor „eingeschaltet“ wird, um Leitung zwischen seiner Source- und Drainregion zu gestatten. Flash-Speicher wie Flash-EEPROM erlaubt das gleichzeitige Löschen von gesamten Blöcken von Speicherzellen.
  • Das Floating-Gate kann einen Umfang von Ladungen halten und kann deshalb innerhalb des Schwellenspannungsfensters auf einen beliebigen Schwellenspannungswert programmiert werden. Die Größe des Schwellenspannungsfensters wird durch den Mindest- und Maximalschwellenwert der Vorrichtung abgegrenzt, die ihrerseits dem Bereich der Ladungen entsprechen, die auf das Floating-Gate programmiert werden können. Das Schwellenfenster hängt im Allgemeinen von den Kenngrößen, Betriebsbedingungen und der Vorgeschichte der Speichervorrichtung ab. Jeder distinkte auflösbare Schwellenspannungswertbereich in dem Fenster kann im Prinzip zum Designieren eines definitiven Speicherzustands der Zelle verwendet werden.
  • Nichtflüchtige Speichervorrichtungen werden auch aus Speicherzellen mit einer dielektrischen Schicht zum Speichern von Ladung hergestellt. Anstelle der zuvor beschriebenen leitfähigen Floating-Gate-Elemente wird eine dielektrische Schicht verwendet. Eine dielektrische ONO-Schicht erstreckt sich über den Kanal zwischen Source- und Draindiffusionen. Die Ladung für ein Datenbit ist in der dielektrischen Schicht neben dem Drain lokalisiert und die Ladung für das andere Datenbit ist in der dielektrischen Schicht neben der Source lokalisiert. Mehrzustands-Datenspeicherung wird implementiert, indem die binären Zustände der räumlich getrennten Ladungsspeicherungsregionen im Dielektrikum getrennt gelesen werden.
  • Viele nichtflüchtige Speicher werden entlang einer Oberfläche eines Substrats (z.B. Siliziumsubstrats) als zweidimensionale (2D-) oder planare Speicher gebildet. Andere nichtflüchtige Speicher sind dreidimensionale (3-D-)Speicher, die monolithisch in einer oder mehreren physischen Ebenen von Speicherzellen mit über einem Substrat angeordneten aktiven Bereichen gebildet werden.
  • KURZFASSUNG
  • In einigen nichtflüchtigen Speichersystemen können zwei oder mehr Speicher-Dies über einen geteilten Bus mit einem Speichercontroller kommunizieren. Ein solcher Bus kann zu einem Engpass werden, wenn er nicht effizient verwaltet wird. Wenn insbesondere ein Speicherbus durch Abfragen eines Die belegt wird, um zu identifizieren, wann der Die bereit ist, wird der Speicherbus hierdurch für andere Zwecke nicht verfügbar, selbst wenn andere Dies bereit sein können und benutzt werden könnten. Ein Beispiel für ein Speicherbus-Verwaltungsschema parst empfangene Befehle zu Subbefehlen, die dann jeweils den Speicherbus für einen kontinuierlichen Zeitraum einnehmen (d.h. sie haben ununterbrochene Nutzung des Speicherbusses). Die Suboperationen werden nur dann für Ausführung freigegeben, wenn ihre entsprechenden Dies bereit sind. Wenn eine Suboperation freigegeben wird, kann sie somit sofort ohne Abfragen des entsprechenden Die ausgeführt werden. Abfragen findet nur statt, wenn es keine auszuführenden freigegebenen Suboperationen mehr gibt. Solange es Suboperationen mit entsprechenden als bereit identifizierten Dies gibt, wird die Ausführung der Suboperationen ohne Verzögerungen für Abfragen fortgesetzt. Nur wenn es keine Suboperationen mit entsprechenden als bereit identifizierten Dies mehr gibt, findet Abfragen statt, so dass Gelegenheiten für Ausführung nicht aufgrund von Abfragen verlorengehen.
  • Ein Beispiel für ein Verfahren zum Verwalten eines Speicherbusses umfasst Empfangen mehrerer Speicherzugriffsbefehle, die an mehrere nichtflüchtige Speicher-Dies gerichtet sind, die mit dem Speicherbus verbunden sind; Identifizieren von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei Ausführung eines einzelnen Speicherzugriffsbefehls Ausführung von zwei oder mehr Suboperationen erfordert; Unterhalten einer ersten Liste von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die erste Liste nichtfreigegebene unausgeführte Suboperationen, die an einzelne Dies gerichtet sind, die nicht als verfügbar identifiziert sind, und unausgeführte Suboperationen, die an einzelne Dies gerichtet sind, die als verfügbar identifiziert sind und für die eine Torschaltungsbedingung gilt; Unterhalten einer zweiten Liste von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die zweite Liste nur freigegebene unausgeführte Suboperationen enthält, die an einzelne Dies gerichtet sind, die als verfügbar identifiziert sind; Zugreifen auf die mehreren Speicher-Dies mittels des Speicherbusses durch Ausführen nur von Suboperationen von der zweiten Liste, bis die zweite Liste leer ist; danach, wenn die zweite Liste leer ist, Abfragen der mehreren nichtflüchtigen Speicher-Dies, um einzelne nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies zu identifizieren, die verfügbar sind; Verschieben einer oder mehrerer Suboperationen von der ersten Liste in die zweite Liste, wenn ein oder mehrere verfügbare nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies identifiziert werden; und danach Wiederaufnehmen des Zugreifens auf die mehreren nichtflüchtigen Speicher-Dies mittels des Speicherbusses durch Ausführen nur von Suboperationen von der zweiten Liste, bis die zweite Liste leer ist.
  • Abfragen der mehreren nichtflüchtigen Speicher-Dies kann auftreten, wenn die zweite Liste leer wird, und kein Abfragen kann auftreten, wenn sich mindestens eine Suboperation in der zweiten Liste befindet. Der Betrieb kann zwischen Abfragen der mehreren nichtflüchtigen Speicher-Dies und Zugreifen auf die mehreren nichtflüchtigen Speicher-Dies mittels des Speicherbusses abwechseln, bis alle zur Ausführung der mehreren Speicherzugriffsbefehle erforderlichen Suboperationen ausgeführt sind. Wiederaufnahme des Zugriffs auf die mehreren nichtflüchtigen Speicher-Dies kann auftreten, sobald ein neuer Eintrag zu der zweiten Liste hinzugefügt wird. Ausführung einer einzelnen Suboperation kann eine atomische Ausführung sein, die den Speicherbus ohne Unterbrechung für einen kontinuierlichen Zeitraum einnimmt. Die mehreren Speicherzugriffsbefehle können einen Verlagerungsbefehl umfassen, um Daten von einem ersten physischen Ort in einen zweiten physischen Ort zu kopieren, und die eine oder mehreren Suboperationen können einen oder mehrere Lesevorgänge aus dem ersten Ort und einen oder mehrere Schreibvorgänge in den zweiten Ort umfassen, und Verschieben des einen oder der mehreren Schreibvorgänge von der ersten Liste in die zweite Liste kann erst auftreten, nachdem der eine oder die mehreren Lesevorgänge abgeschlossen sind. Unausgeführte Suboperationen können gemäß einer Reihenfolge zur Ausführung von Suboperationen entsprechend einer durch einen Host für die Ausführung der mehreren Speicherzugriffsbefehle spezifizierten Reihenfolge von der ersten Liste in die zweite Liste verschoben werden. Unausgeführte Schreibsuboperationen in Bezug auf Speicherverwaltungsdaten können gemäß einer durch einen Speichercontroller spezifizierten Reihenfolge von der ersten Liste in die zweite Liste verschoben werden. Beim Verschieben der einen oder mehreren Suboperationen von der ersten Liste in die zweite Liste als Reaktion auf Identifizierung eines oder mehrerer verfügbarer nichtflüchtiger Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies, kann das Verschieben einer Suboperation der einen oder mehreren Suboperationen von der ersten Liste in die zweite Liste verzögert werden, um dadurch einen Stromverbrauchswert unter einer Stromverbrauchsgrenze zu halten. Beim Verschieben der einen oder mehreren Suboperationen von der ersten Liste in die zweite Liste als Reaktion auf Identifizierung eines oder mehrerer verfügbarer nichtflüchtiger Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies können Suboperationen gemäß einem Priorisierungsschema priorisiert werden. Das Priorisierungsschema kann Leseerfassungs-Suboperationen gegenüber Lesetransfer-Suboperationen priorisieren.
  • Ein Beispiel für ein nichtflüchtiges Speichersystem umfasst mehrere nichtflüchtige Speicher-Dies; einen mit den mehreren nichtflüchtigen Speicher-Dies verbundenen Speicherbus; eine Schnittstelle, ausgelegt zum Empfangen mehrerer Speicherzugriffsbefehle, die an die mehreren nichtflüchtigen Speicher-Dies gerichtet sind; eine Befehlsanalyseeinheit, ausgelegt zum Identifizieren von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei Ausführung eines einzelnen Speicherzugriffsbefehls Ausführung von zwei oder mehr Suboperationen erfordert; eine erste Liste von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die erste Liste nichtfreigegebene unausgeführte Suboperationen enthält; eine zweite Liste von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die zweite Liste nur freigegebene unausgeführte Suboperationen enthält, die an einzelne nichtflüchtige Speicher-Dies gerichtet sind, die als verfügbar identifiziert sind, wobei auf die mehreren nichtflüchtigen Speicher-Dies mittels des Speicherbusses zugegriffen wird, indem nur Suboperationen von der zweiten Liste ausgeführt werden, bis die zweite Liste leer ist; eine Die-Abfrageeinheit, ausgelegt zum Abfragen der mehreren nichtflüchtigen Speicher-Dies, um einzelne nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies zu identifizieren, die verfügbar sind; und eine Listenaktualisierungseinheit, ausgelegt zum Aktualisieren der zweiten Liste durch Freigeben einer Suboperation für einen einzelnen nichtflüchtigen Speicher-Die als Reaktion auf Identifikation des einzelnen nichtflüchtigen Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies als verfügbar.
  • Die Die-Abfrageeinheit kann dafür ausgelegt sein, immer dann inaktiv zu bleiben, wenn es mindestens eine unausgeführte Suboperation in der zweiten Liste gibt. Die Befehlsanalyseeinheit kann dafür ausgelegt sein, Suboperationen zu identifizieren, die atomisch sind, dergestalt, dass eine einzelne Suboperation den Speicherbus ohne Unterbrechung für einen kontinuierlichen Zeitraum einnimmt. Die Listenaktualisierungseinheit kann einzelne unausgeführte Suboperationen, die an einzelne nichtflüchtige Speicher-Dies gerichtet sind, die durch die Abfrageeinheit als verfügbar identifiziert werden, gemäß einer Reihenfolge, die durch einen Host oder durch einen Speichercontroller spezifiziert wird, von der ersten Liste in die zweite Liste verschieben. Die Listenaktualisierungseinheit kann ausgelegt sein zum Verschieben einzelner unausgeführter Suboperationen, die an einzelne nichtflüchtige Speicher-Dies gerichtet sind, die durch die Abfrageeinheit als verfügbar identifiziert werden, dergestalt von der ersten Liste in die zweite Liste, dass die Anzahl belegter Speicher-Dies eine Maximalzahl, die kleiner als alle Speicher-Dies der mehreren Speicher-Dies ist, nicht überschreitet. Ein einzelner nichtflüchtiger Speicher-Die der mehreren nichtflüchtigen Speicher-Dies kann ein dreidimensionaler nichtflüchtiger Speicher-Die sein, der monolithisch in einer oder mehreren physischen Ebenen von Arrays von Speicherzellen mit einem über einem Siliziumsubstrat angeordneten aktiven Bereich gebildet ist. Das nichtflüchtige Speichersystem kann Folgendes umfassen: einen zusätzlichen Speicherbus, der mit zusätzlichen nichtflüchtigen Speicher-Dies verbunden ist; wobei die erste Liste unausgeführte Suboperationen, die an einzelne nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies und der zusätzlichen nichtflüchtigen Speicher-Dies gerichtet sind, und die zweite Liste nur unausgeführte Suboperationen enthalten kann, die an einzelne nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies gerichtet sind.
  • Ein Beispiel für ein Verfahren zum Verwalten eines Speicherbusses umfasst: Empfangen mehrerer Speicherzugriffsbefehle, die an mehrere nichtflüchtige Speicher-Dies gerichtet sind, die mit dem Speicherbus verbunden sind; Identifizieren von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei Ausführung eines einzelnen Speicherzugriffsbefehls Ausführung von zwei oder mehr Suboperationen erfordert, wobei jede Suboperation eine atomische Operation ist, die den Speicherbus ohne Unterbrechung für einen kontinuierlichen Zeitraum einnimmt; Unterhalten einer ersten Liste von nichtfreigegebenen Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die erste Liste unausgeführte Suboperationen, die an einzelne Dies gerichtet sind, die nicht als verfügbar identifiziert sind, und unausgeführte Suboperationen, die an Dies gerichtet sind, die bereits eine freigegebene Suboperation aufweisen, enthält; Unterhalten einer zweiten Liste von freigegebenen Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die zweite Liste nur unausgeführte Suboperationen enthält, die an einzelne Dies gerichtet sind die als verfügbar identifiziert sind, mit einem Maximum von einer unausgeführten Suboperation pro nichtflüchtigem Speicher-Die, der als verfügbar identifiziert ist; Zugreifen auf die mehreren Speicher-Dies mittels des Speicherbusses durch Ausführungen nur von freigegebenen Suboperationen von der zweiten Liste, bis die zweite Liste leer ist; danach, wenn bestimmt wird, dass die zweite Liste leer ist, Abfragen der mehreren nichtflüchtigen Speicher-Dies, um einzelne nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies zu identifizieren, die verfügbar sind; wenn ein oder mehrere verfügbare nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies identifiziert werden, Freigeben einer oder mehrerer Suboperationen von der ersten Liste in die zweite Liste; danach Wiederaufnehmen des Zugreifens auf die mehreren nichtflüchtigen Speicher-Dies mittels des Speicherbusses durch Ausführen nur von freigegebenen Suboperationen von der zweiten Liste, bis die zweite Liste leer ist, wobei von dem Wiederaufnehmen an, bis die zweite Liste leer ist, kein Abfragen der mehreren nichtflüchtigen Speicher-Dies auftritt; und danach Wechseln zwischen Abfragen der mehreren nichtflüchtigen Speicher-Dies und Zugreifen auf die mehreren Speicher-Dies, bis alle zur Ausführung der mehreren Speicherzugriffsbefehle erforderlichen Suboperationen ausgeführt sind.
  • Das Freigeben der einen oder mehreren Suboperationen von der ersten Liste in die zweite Liste kann gemäß einer durch einen Host spezifizierten Reihenfolge und/oder einer durch einen Speichercontroller spezifizierten Reihenfolge und/oder einer Energieanforderung durchgeführt wird. Ein einzelner nichtflüchtiger Speicher-Die der mehreren nichtflüchtigen Speicher-Dies kann ein dreidimensionaler nichtflüchtiger Speicher-Die sein, der monolithisch in einer oder mehreren physischen Ebenen von Arrays von Speicherzellen mit einem über einem Siliziumsubstrat angeordneten aktiven Bereich gebildet ist. Identifizieren von Suboperationen kann Folgendes umfassen: Identifizieren einer Leseerfassungs-Suboperation und einer Lesetransfer-Suboperation für jeden empfangenen Lesebefehl; Identifizieren einer Schreibtransfer-Suboperation und einer Schreibstatus-Prüfsuboperation für jeden empfangenen Schreibbefehl; und Identifizieren einer Löscheinleitungs-Suboperation und einer Löschstatus-Prüfsuboperation für jeden empfangenen Löschbefehl. Das Verfahren kann außerdem Folgendes umfassen: Empfangen mehrerer Nicht-Zugriffsbefehle, wobei Ausführung eines einzelnen Nicht-Zugriffsbefehls Ausführung einer oder mehrerer Suboperationen umfasst.
  • Verschiedene Aspekte, Vorteile, Merkmale und Ausführungsformen sind in der folgenden Beschreibung von beispielhaften Ausführungsformen enthalten, wobei die Beschreibung in Verbindung mit den beigefügten Zeichnungen aufzufassen ist.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt schematisch die Haupt-Hardwarekomponenten eines Speichersystems.
  • 2 zeigt schematisch eine nichtflüchtige Speicherzelle.
  • 3 zeigt die Beziehung zwischen einem Source-Drain-Strom ID und der Steuergatespannung VCG für vier verschiedene Ladungen Q1–Q4, die ein Floating-Gate speichern kann.
  • 4A zeigt schematisch eine Kette von zu einer NAND-Kette organisierten Speicherzellen.
  • 4B zeigt ein Beispiel für ein NAND-Array 210 von Speicherzellen, das aus NAND-Ketten 50 wie der in 4A gezeigten dargestellt wird.
  • 5 zeigt eine Seite von Speicherzellen, die in einer NAND-Konfiguration organisiert sind, die parallel erfasst oder programmiert werden.
  • 6A6C zeigt ein Beispiel für Programmierung 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 für einen Querschnitt eines 3-D-NAND-Speicherarrays mit U-förmigen NAND-Ketten in der y-z-Ebene.
  • 10 zeigt ein Beispiel für einen Querschnitt eines 3-D-NAND-Speichers mit geraden NAND-Ketten in der y-z-Ebene.
  • 11 zeigt ein Beispiel für Speicherbusverwaltung.
  • 12 zeigt ein Beispiel, wie Befehle abgewickelt werden können.
  • 13 zeigt ein Beispiel für Schritte bei der Speicherbusverwaltung.
  • 14 zeigt ein Speichersystem mit zwei Speicherbussen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • SPEICHERSYSTEM
  • Halbleiterspeichervorrichtungen umfassen flüchtige Speichervorrichtungen, wie etwa DRAM-Vorrichtungen (dynamischer Direktzugriffsspeicher) oder SRAM-Vorrichtungen (statischer Direktzugriffsspeicher), nichtflüchtige Speichervorrichtungen, wie etwa ReRAM (resistiver Direktzugriffsspeicher), EEPROM (elektrisch löschbarer programmierbarer Nurlesespeicher), Flash-Speicher (der auch als Teilmenge von EEPROM angesehen werden kann), FRAM (ferroelektrischer Direktzugriffsspeicher) und MRAM (magnetoresistiver Direktzugriffsspeicher) und andere Halbleiterelemente, die Informationen speichern können. Jede Art von Speichervorrichtung kann verschiedene Konfigurationen aufweisen. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder einer NOR-Konfiguration konfiguriert sein.
  • Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet werden. Als nichteinschränkendes Beispiel umfassen passive Halbleiterspeicherelemente ReRAM- Vorrichtungselemente, die bei einigen Ausführungsformen ein Spezifischer-Widerstand-Umschaltspeicherelement, wie etwa eine Antischmelzverbindung, Phasenänderungsmaterial usw. und gegebenenfalls ein Steuer-Element, wie etwa eine Diode usw. umfassen können. Als weiteres nichteinschränkendes Beispiel umfassen aktive Halbleiterspeicherelemente EEPROM- und Flash-Speichervorrichtungselemente, die bei einigen Ausführungsformen Elemente umfassen, die eine Ladungsspeicherungsregion enthalten, wie etwa ein Floating-Gate, leitfähige Nanopartikel oder ein dielektrisches Ladungsspeicherungsmaterial.
  • Es können mehrere Speicherelemente konfiguriert werden, so dass sie in Reihe geschaltet sind oder so dass jedes Element einzeln zugänglich ist. Als nichteinschränkendes Beispiel enthalten Flash-Speichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) typischerweise in Reihe geschaltete Speicherelemente. Ein NAND-Speicherarray kann so konfiguriert sein, dass das Array aus mehreren Ketten von Speicher zusammengesetzt ist, wobei eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die sich eine einzige Bitleitung teilen und auf die als Gruppe zugegriffen wird. Als Alternative können Speicherelemente so konfiguriert werden, dass jedes Element einzeln zugänglich ist, z.B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft und Speicherelemente können anderweitig konfiguriert werden.
  • Die sich in und/oder über einem Substrat befindenden Halbleiterspeicherelemente können in zwei oder drei Dimensionen angeordnet werden, wie etwa einer zweidimensionalen Speicherstruktur oder einer dreidimensionalen Speicherstruktur.
  • Bei einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzigen Ebene oder einer einzigen Speichervorrichtungsebene angeordnet. Typischerweise sind in einer zweidimensionalen Speicherstruktur Speicherelemente in einer Ebene (z.B. in einer x-z-Richtungsebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptoberfläche eines die Speicherelemente tragenden Substrats erstreckt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das an die Speicherelemente angebracht wird, nachdem sie gebildet sind. Als nichteinschränkendes Beispiel kann das Substrat einen Halbleiter, wie etwa Silizium, umfassen.
  • Die Speicherelemente können in der einzigen Speichervorrichtungsebene in einem geordneten Array, wie etwa in mehreren Zeilen und/oder Spalten, angeordnet werden. Die Speicherelemente können jedoch in nichtregelmäßigen oder nichtorthogonalen Konfigurationen angeordnet werden. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie etwa Bitleitungen und Wortleitungen, aufweisen.
  • Ein dreidimensionales Speicherarray ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen einnehmen, um dadurch eine Struktur in drei Dimensionen zu bilden (d.h. in der x-, y- und z-Richtung, wobei zu der Hauptoberfläche des Substrats die y-Richtung im Wesentlichen senkrecht ist und die x- und z-Richtung im Wesentlichen parallel sind).
  • Als nichteinschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als Stapel von mehreren zweidimensionalen Speichervorrichtungsebenen angeordnet sein. Als ein anderes nichteinschränkendes Beispiel kann ein dreidimensionales Speicherarray als mehrere vertikale Spalten angeordnet werden (z.B. Spalten, die sich im Wesentlichen senkrecht zur Hauptoberfläche des Substrats, d.h. in der y-Richtung, erstrecken), wobei jede Spalte mehrere Speicherelemente in jeder Spalte aufweist. Die Spalten können in einer zweidimensionalen Konfiguration, z.B. in einer x-z-Ebene, angeordnet sein, was zu einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicher-Ebenen führt. Es können auch andere Konfigurationen von Speicherelementen in drei Dimensionen ein dreidimensionales Speicherarray darstellen.
  • Als nichteinschränkendes Beispiel können in einem dreidimensionalen NAND-Speicherarray die Speicherelemente miteinander gekoppelt sein, um eine NAND-Kette in einzelnen horizontalen (z.B. x-z-)Speichervorrichtungsebenen zu bilden. Als Alternative können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die mehrere horizontale Speichervorrichtungsebenen überquert. Es können andere dreidimensionale Konfigurationen in Betracht gezogen werden, wobei einige NAND- Ketten Speicherelemente in einer einzigen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die mehrere Speicherebenen durchspannen. Dreidimensionale Speicherarrays können auch in einer NOR-Konfiguration und in einer ReRAM-Konfiguration entworfen werden.
  • Typischerweise werden in einem monolithischen dreidimensionalen Speicherarray eine oder mehrere Speichervorrichtungsebenen über einem einzigen Substrat gebildet. Gegebenenfalls kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten mindestens teilweise in dem einzigen Substrat aufweisen. Als nichteinschränkendes Beispiel kann das Substrat einen Halbleiter, wie etwa Silizium, umfassen. In einem monolithischen dreidimensionalen Array werden die Schichten, die jede Speichervorrichtungsebene des Arrays darstellen, typischerweise auf den Schichten der darunterliegenden Speichervorrichtungsebenen des Arrays gebildet. Schichten von angrenzenden Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays können jedoch zwischen Speichervorrichtungsebenen geteilt werden oder dazwischentretende Schichten aufweisen.
  • Dessen ungeachtet können zweidimensionale Arrays getrennt gebildet und dann miteinander verkapselt werden, um eine nichtmonolithische Speichervorrichtung zu bilden, die mehrere Schichten von Speicher aufweist. Zum Beispiel können nichtmonolithische gestapelte Speicher konstruiert werden, indem man Speicherebenen auf getrennten Substraten bildet und dann die Speicherebenen übereinander stapelt. Die Substrate können vor dem Stapeln gedünnt oder von den Speichervorrichtungsebenen entfernt werden, da aber die Speichervorrichtungsebenen anfänglich über getrennten Substraten gebildet werden, sind die resultierenden Speicherarrays nichtmonolithische dreidimensionale Speicherarrays. Ferner können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nichtmonolithisch) auf getrennten Chips gebildet und dann miteinander verkapselt werden, um eine Stapelchip-Speichervorrichtung zu bilden.
  • Für den Betrieb der Speicherelemente und zur Kommunikation mit den Speicherelementen sind typischerweise zugeordnete Schaltkreise erforderlich. Als nichteinschränkende Beispiele können Speichervorrichtungen Schaltkreise aufweisen, die zum Steuern und Ansteuern von Speicherelementen verwendet werden, um Funktionen wie Programmierung und Lesen zu erreichen. Diese zugeordneten Schaltkreise können sich auf demselben Substrat wie die Speicherelemente und/oder auf einem getrennten Substrat befinden. Zum Beispiel kann sich ein Controller für Speicherlese-Schreiboperationen auf einem getrennten Controllerchip und/oder auf demselben Substrat wie die Speicherelemente befinden.
  • Bei anderen Ausführungsformen können andere Arten von Speicher als die hier beschriebenen beispielhaften zweidimensionalen und dreidimensionalen Strukturen verwendet werden.
  • 1 zeigt schematisch die Haupt-Hardwarekomponenten eines Speichersystems, das sich zur Implementierung einiger der hier beschriebenen Techniken eignet. Das Speichersystem 90 operiert typischerweise mittels einer Host-Schnittstelle mit einem Host 80. Das Speichersystem kann in Form eines wechselbaren Speichers, wie etwa einer Speicherkarte, vorliegen oder kann in Form eines eingebetteten Speichersystems vorliegen. Das Speichersystem 90 umfasst einen Speicher 102, dessen Operationen durch einen Controller 100 gesteuert werden. Der Speicher 102 umfasst ein oder mehrere Arrays von nichtflüchtigen Speicherzellen, die über einen oder mehrere integrierte Schaltungschips verteilt sind. Der Controller 100 kann Schnittstellenschaltungen 110, einen Prozessor 120, ROM (Festwertspeicher) 122, RAM (Direktzugriffsspeicher) 130, programmierbaren nichtflüchtigen Speicher 124 und zusätzliche Komponenten umfassen. Der Controller wird typischerweise als ein ASIC (anwendungsspezifische integrierte Schaltung) gebildet, und die in einem solchen ASIC enthaltenen Komponenten hängen im Allgemeinen von der konkreten Anwendung ab. Speichersysteme können mit vielfältigen Hosts in vielfältigen verschiedenen Umgebungen verwendet werden. Zum Beispiel kann ein Host eine mobile Vorrichtung sein, wie etwa ein Mobiletelefon, ein Laptop, ein Musik-Player (z.B. MP3-Player), eine GPS-Vorrichtung (Global Positioning System), ein Tablet-Computer oder dergleichen. Solche Speichersysteme können für große Zeiträume inaktiv und ohne Stromversorgung sein, und können dabei verschiedenen Bedingungen unterliegen, wie hohen Temperaturen, Vibration, elektromagnetischen Feldern usw. Speichersysteme für solche Hosts können, gleichgültig, ob sie wechselbar oder eingebettet sind, für niedrigen Stromverbrauch, hohe Datenretention und Zuverlässigkeit in vielfältigen Umgebungsbedingungen (z.B. einen großen Temperaturbereich) ausgewählt werden. Andere Hosts können stationär sein. Für Internet-Anwendungen verwendete Server können z.B. nichtflüchtige Speichersysteme zur Speicherung von Daten verwenden, die über das Internet gesendet und empfangen werden. Solche Systeme können ohne Unterbrechung für große Zeiträume (z.B. ein Jahr oder mehr) heraufgefahren bleiben, und es kann während solcher Perioden häufig auf sie zugegriffen werden. Einzelne Blöcke können häufig beschrieben und gelöscht werden, so dass Standzeit ein großes Problem sein kann.
  • Physische Speicherstruktur
  • 2 zeigt schematisch eine nichtflüchtige Speicherzelle. Die Speicherzelle 10 kann durch einen Feldeffekttransistor implementiert werden, der eine Ladungsspeicherungseinheit 20 aufweist, wie etwa ein Floating-Gate oder eine (dielektrische) Ladungsfallenschicht. Die Speicherzelle 10 umfasst außerdem einen Sourceanschluss 14, einen Drainanschluss 16 und ein Steuergate 30.
  • Es werden heutzutage viele kommerziell erfolgreiche nichtflüchtige Halbleiterspeichervorrichtungen verwendet. Diese Speichervorrichtungen können verschiedene Arten von Speicherzellen verwenden, wobei jede Art ein oder mehrere Ladungsspeicherungselemente aufweist.
  • In der Praxis wird der Speicherzustand einer Zelle gewöhnlich gelesen, indem der Leitungsstrom über die Source- und Drainelektroden der Zelle erfasst wird, wenn eine Referenzspannung an das Steuergate angelegt wird. Für jede gegebene Ladung an dem Floating-Gate einer Zelle kann somit ein entsprechender Leitungsstrom mit Bezug auf eine feste Referenzsteuergatespannung detektiert werden. Ähnlich definiert der auf das Floating-Gate programmierbare Ladungsbereich ein entsprechendes Schwellenspannungsfenster oder ein entsprechendes Leitungsstromfenster.
  • Statt des Detektierens des Leistungsstroms unter einem partitionierten Stromfenster ist es als Alternative möglich, die Schwellenspannung für einen gegebenen getesteten Speicherzustand an dem Steuergate zu setzen und zu detektieren, ob der Leitungsstrom kleiner oder größer als ein Schwellenstrom (Zellenlese-Referenzstrom) ist. Bei einer Implementierung wird die Detektion des Leitungsstroms relativ zu einem Schwellenstrom erzielt, indem man die Rate untersucht, mit der sich der Leitungsstrom durch die Kapazität der Bitleitung entlädt.
  • 3 zeigt die Beziehung zwischen dem Source-Drain-Strom ID und der Steuergatespannung VCG für vier verschiedene Ladungen Q1–Q4, die das Floating-Gate an einem beliebigen Zeitpunkt selektiv speichern kann. Mit fester Drainvorspannung repräsentieren die vier durchgezogenen Kurven von ID als Funktion von VCG vier von sieben möglichen Ladungsniveaus, die auf ein Floating-Gate einer Speicherzelle programmiert werden können, die jeweils vier möglichen Speicherzuständen entsprechen. Beispielsweise kann das Schwellenspannungsfenster einer Population von Zellen im Bereich von 0,5 V bis 3,5 V liegen. Es können sieben mögliche programmierte Speicherzustände „0“, „1“, „2“, „3“, „4“, „5“, „6“ und ein (nichtgezeigter) gelöschter Zustand durch Partitionieren des Schwellenfensters in Regionen in Intervallen von jeweils 0,5 V abgegrenzt werden. Wenn zum Beispiel ein Referenzstrom IREF von 2 µA wie gezeigt verwendet wird, kann betrachtet werden, dass sich die mit Q1 programmierte Zelle in einem Speicherzustand „1“ befindet, da sich ihre Kurve in einer Region des Schwellenfensters, die durch VCG = 0,5 V und 1,0 V abgegrenzt wird, mit IREF schneidet. Ähnlich befindet sich Q4 in einem Speicherzustand „5“.
  • Wie aus der obigen Beschreibung zu sehen ist, wird, je mehr Zustände eine Speicherzelle zu speichern gezwungen wird, ihr Schwellenspannungsfenster umso feiner aufgeteilt. Zum Beispiel kann eine Speichervorrichtung Speicherzellen aufweisen, die ein Schwellenspannungsfenster aufweisen, das von –1,5 V bis 5 V reicht. Dadurch wird eine maximale Breite von 6,5 V bereitgestellt. Wenn die Speicherzelle 16 Zustände speichern soll, kann jeder Zustand in dem Schwellenfenster von 200 mV bis 300 mV einnehmen. Dies erfordert höhere Genauigkeit bei Programmier- und Leseoperationen, um in der Lage zu sein, die erforderliche Auflösung zu erreichen.
  • NAND-Struktur
  • 4A zeigt schematisch eine Kette von Speicherzellen, die zu 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 mit ihren Source- und Drainanschlüssen verkettet werden. Zwei Auswahltransistoren S1, S2 steuern die Verbindung der Speichertransistorkette mit der Außenwelt über den Sourceanschluss 54 bzw. Drainanschluss 56 der NAND-Kette. In einem Speicherarray wird, wenn der Sourceauswahltransistor S1 eingeschaltet wird, der Sourceanschluss mit einer Sourceleitung gekoppelt (siehe 4B). Ähnlich wird, wenn der Drainauswahltransistor S2 eingeschaltet wird, der Drainanschluss der NAND-Kette mit einer Bitleitung des Speicherarrays gekoppelt. Jeder Speichertransistor 10 in der Kette wirkt als Speicherzelle. Sie weist ein Ladungsspeicherungselement 20 auf, um eine gegebene Menge von Ladung zu speichern, um so einen beabsichtigten Speicherzustand zu repräsentieren. Ein Steuergate 30 jedes Speichertransistors erlaubt Kontrolle über Lese- und Schreiboperationen. Wie in 4B zu sehen ist, sind die Steuergates 30 entsprechender Speichertransistoren einer Zeile von NAND-Kette alle mit derselben Wortleitung verbunden. Ähnlich gewährleistet ein Steuergate 32 jedes Auswahltransistors S1, S2 Steuerzugriff auf die NAND-Kette über ihren Sourceanschluss 54 bzw. Drainanschluss 56. Ähnlich sind die Steuergates 32 entsprechender Auswahltransistoren einer Zeile von NAND-Kette alle mit derselben Auswahlleitung verbunden.
  • Wenn ein adressierter Speichertransistor 10 in einer NAND-Kette gelesen oder während des Programmierens verifiziert wird, wird seinem Steuergate 30 eine entsprechende Spannung zugeführt. Gleichzeitig wird der Rest der nichtadressierten Speichertransistoren in der NAND-Kette 50 durch Anlegen ausreichender Spannung an ihre Steuergates vollständig eingeschaltet. Auf diese Weise wird effektiv ein leitfähiger Pfad von dem Sourceanschluss des einzelnen Speichertransistors zu dem Source-Anschluss 54 der NAND-Kette erzeugt, und gleichermaßen für den Drainanschluss des einzelnen Speichertransistors zum Drain-Anschluss 56 der Zelle.
  • 4B zeigt ein Beispiel für ein NAND-Array 210 von Speicherzellen, gebildet aus NAND-Ketten 50, wie etwa der in 4A gezeigten. Entlang jeder Spalte von NAND-Ketten ist eine Bitleitung, wie etwa die Bitleitung 36, mit dem Drainanschluss 56 jeder NAND-Kette gekoppelt. Entlang jeder Bank von NAND-Ketten ist eine Sourceleitung, wie etwa die Sourceleitung 34, mit den Sourceanschlüssen 54 jeder NAND-Kette gekoppelt. Außerdem sind die Steuergates entlang einer Zeile von Speicherzellen in einer Bank von NAND-Ketten mit einer Wortleitung, wie etwa der Wortleitung 42, verbunden. Die Steuergates entlang einer Zeile von Auswahltransistoren in einer Bank von NAND-Ketten sind mit einer Auswahlleitung, wie etwa der Auswahlleitung 44, verbunden. Durch geeignete Spannungen auf den Wortleitungen und Auswahlleitungen der Bank von NAND-Ketten kann eine gesamte Zeile von Speicherzellen in einer Bank von NAND-Ketten adressiert werden.
  • 5 zeigt eine Seite von Speicherzellen, in NAND-Konfiguration organisiert, die parallel erfasst oder programmiert wird. 5 zeigt im Wesentlichen eine Bank von NAND-Ketten 50 in dem Speicherarray 210 von 4B, während die Einzelheiten jeder NAND-Kette ausdrücklich wie in 4A gezeigt sind. Eine physische Seite, wie etwa die Seite 60, ist eine Gruppe von Speicherzellen, deren paralleles Erfassen oder Programmieren ermöglicht wird. Man erreicht dies durch eine entsprechende Seite von Leseverstärkern 212. Die erfassten Ergebnisse werden in einer entsprechenden Menge von Latches 214 zwischengespeichert. Jeder Leseverstärker kann über eine Bitleitung mit einer NAND-Kette gekoppelt sein. Die Seite wird durch die Steuergates der Zellen der Seite, die gemeinsam mit einer Wortleitung 42 verbunden sind, freigegeben, und jede Zelle ist durch einen Leseverstärker über eine Bitleitung 36 zugänglich. Beispielsweise wird beim jeweiligen Erfassen oder Programmieren der Seite von Zellen 60 eine Erfassungsspannung oder eine Programmierspannung jeweils an die gemeinsame Wortleitung WL3 zusammen mit geeigneten Spannungen auf den Bitleitungen angelegt.
  • Physische Organisation des Speichers
  • Ein Unterschied zwischen Flash-Speicher und anderen Arten von Speicher besteht darin, dass eine Flash-Speicherzelle im Allgemeinen vom gelöschten Zustand aus programmiert wird. Das heißt, das Floating-Gate wird im Allgemeinen zuerst von Ladung geleert. Programmierung fügt dann eine gewünschte Menge an Ladung wieder zu dem Floating-Gate hinzu. Flash-Speicher unterstützt im Allgemeinen nicht Entfernung eines Teils der Ladung von dem Floating-Gate, um von einem mehr programmierten Zustand zu einem weniger programmierten Zustand überzugehen. Das heißt, dass aktualisierte Daten existierende Daten nicht überschreiben können und stattdessen an einen zuvor unbeschriebenen Ort geschrieben werden.
  • Ferner soll Löschung alle Ladungen von dem Floating-Gate entleeren und nimmt im Allgemeinen merklich Zeit in Anspruch. Aus diesem Grund ist es umständlich und sehr langsam, zellenweise oder sogar seitenweise zu löschen. In der Praxis wird das Array von Speicherzellen in eine große Anzahl von Blöcken von Speicherzellen aufgeteilt. Wie bei Flash-EEPROM-Systemen üblich, ist der Block die Einheit der Löschung. Das heißt, jeder Block enthält die Mindestanzahl von Speicherzellen, die zusammen gelöscht werden. Obwohl Aggregieren einer großen Anzahl von Zellen in einem parallel zu löschenden Block die Löschleistungsfähigkeit verbessern wird, bringt ein großer Block auch mit sich, mit einer größeren Anzahl von Aktualisierungs- und veralteten Daten umzugehen.
  • Jeder Block wird typischerweise in eine Anzahl physischer Seiten aufgeteilt. Eine logische Seite ist eine Einheit des Programmierens oder Lesens, die eine Anzahl von Bit gleich der Anzahl von Zellen in einer physischen Seite enthält. In einem Speicher, der ein Bit pro Zelle speichert (einem Einzelpegelzellen- bzw. 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 von in einer physischen Seite gespeicherten logischen Seiten spiegelt somit die Anzahl von pro Zelle gespeicherten Bit wider. Der Ausdruck Mehrpegelzelle oder „MLC“ bezeichnet im Allgemeinen Speicher, die mehr als ein Bit pro Zelle speichern, darunter Speicher, die drei Bit pro Zelle (TLC), vier Bit pro Zelle oder mehr Bit pro Zelle speichern. Bei einer Ausführungsform können die einzelnen Seiten in Segmente aufgeteilt werden, und die Segmente können die kleinste Anzahl von Zellen enthalten, die auf einmal als Grundprogrammieroperation geschrieben werden. Typischerweise werden eine oder mehrere logische Seiten von Daten in einer Zeile von Speicherzellen gespeichert. Eine Seite kann einen oder mehrere Sektoren speichern. Ein Sektor umfasst Benutzerdaten und Overheaddaten.
  • MLC-Programmierung
  • 6A6C zeigen ein Beispiel für Programmierung einer Population von 4-Zustands-Speicherzellen. 6A zeigt die Population von Speicherzellen, die in vier distinkte Verteilungen von Schwellenspannungen programmierbar sind, die jeweils Speicherzustände „E“, „A“, „B“ und „C“ repräsentieren. 6B zeigt die anfängliche Verteilung von „Gelöscht“-Schwellenspannungen für einen gelöschten Speicher. 6C zeigt ein Beispiel für den Speicher, nachdem viele der Speicherzellen programmiert wurden. Eine Zelle weist im Wesentlichen anfänglich eine „Gelöscht“-Schwellenspannung auf und Programmierung verschiebt sie auf einen höheren Wert in eine von drei Zonen, die durch die Verifizierpegel vV1, vV2 und vV3 abgegrenzt werden. Auf diese Weise kann jede Speicherzelle auf einen der drei programmierten Zustände „A“, „B“ und „C“ programmiert werden oder im „Gelöscht“-Zustand unprogrammiert bleiben. Wenn der Speicher mehr Programmierung erhält, wird die anfängliche Verteilung der „Gelöscht“-Zustände wie in 6B gezeigt schmäler, und der Gelöscht-Zustand wird durch den „0“-Zustand repräsentiert.
  • Mit einem 2-Bit-Code, der ein unteres Bit und ein oberes Bit aufweist, kann man jeden der vier Speicherzustände repräsentieren. Zum Beispiel 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 Erfassung im „Vollsequenz“-Modus aus dem Speicher gelesen werden, wobei die zwei Bit zusammen erfasst werden, indem relativ zu den Leseabgrenzungs-Schwellenwerten rV1, rV2 und rV3 jeweils in drei Teildurchgängen erfasst wird.
  • 3-D NAND-Struktur
  • Eine alternative Anordnung zu einem herkömmlichen zweidimensionalen (2-D-)NAND-Array ist ein dreidimensionales (3-D-)Array. im Gegensatz zu 2-D-NAND-Arrays, die entlang einer planaren Oberfläche eines Halbleiterwafers gebildet werden, erstrecken sich 3-D-Arrays von der Waferoberfläche herauf und umfassen im Allgemeinen Stapel oder Spalten von Speicherzellen, die sich nach oben erstrecken. Es sind verschiedene 3-D-Anordnungen möglich. Bei einer Anordnung wird eine NAND-Ketten vertikal mit einem Ende (z.B. Source) an der Waferoberfläche und dem anderen Ende (z.B. Drain) oben gebildet. Bei einer anderen Anordnung wird eine NAND-Kette in einer U-Form gebildet, so dass beide Enden der NAND-Kette oben zugänglich sind, um somit Verbindungen zwischen solchen Ketten zu ermöglichen.
  • 7 zeigt ein erstes Beispiel für eine NAND-Kette 701, die sich senkrecht zur x-y-Ebene des Substrats in einer vertikalen Richtung erstreckt, d.h. in der z-Richtung erstreckt. Speicherzellen werden gebildet, wo eine vertikale Bitleitung (lokale Bitleitung) 703 durch eine Wortleitung (z.B. WL0, WL1, usw.) verläuft. Eine Ladungsfallenschicht zwischen der lokalen Bitleitung und der Wortleitung speichert Ladung, die sich auf die Schwellenspannung des Transistors auswirkt, der durch die Wortleitung (Gate) gebildet wird, die mit der vertikalen Bitleitung (Kanal) gekoppelt ist, die er einkreist. Solche Speicherzellen können gebildet werden, indem Stapel von Wortleitungen gebildet und dann Speicherlöcher geätzt werden, wo Speicherzellen zu bilden sind. Speicherlöcher werden dann mit einer Ladungsfallenschicht ausgekleidet und mit einem geeigneten lokalen Bitleitungs-/Kanalmaterial (mit geeigneten dielektrischen Schichten zur Isolation) gefüllt.
  • Wie bei planaren NAND-Ketten befinden sich Auswahlgate 705, 707 an jedem Ende der Kette, um selektive Verbindung mit externen Elementen 709, 711 oder Isolation von ihnen der NAND-Kette zu erlauben. Solchen externen Elemente sind im Allgemeinen leitfähige Leitungen, wie etwa gemeinsame Sourceleitungen oder Bitleitungen, die große Zahlen von NAND-Ketten versorgen. Vertikale NAND-Ketten können ähnlich wie planare NAND-Ketten betrieben werden, und es ist sowohl SLC-(Einzelpegelzellen-) als auch MLC-(Mehrpegelzellen-)Betrieb möglich. Obwohl 7 ein Beispiel für eine NAND-Kette zeigt, die 32 (0–31) in Reihe geschaltete Zellen aufweist, kann die Anzahl der Zellen in einer NAND-Kette eine beliebige geeignete Anzahl sein. Der Klarheit halber sind nicht alle Zellen gezeigt. Es versteht sich, dass zusätzliche Zellen gebildet werden, wo sich Wortleitungen 3–29 (nicht gezeigt) mit der lokalen vertikalen Bitleitung schneiden.
  • 8 zeigt ein zweites Beispiel für eine NAND-Kette 815, die sich in der vertikalen Richtung (z-Richtung) erstreckt. In diesem Fall bildet die NAND-Kette 815 eine U-Form zur Verbindung mit externen Elementen (Sourceleitung „SL" und Bitleitung „BL“), die sich auf dem oberen Teil der Struktur befinden. Am unteren Teil der NAND-Kette 815 befindet sich ein steuerbares Gate (Back-Gate „BG“), das die zwei Flügel 816A, 816B der NAND-Kette 815 verbindet. Es werden insgesamt 64 Zellen gebildet, wo sich Wortleitungen WL0–WL63 mit der vertikalen lokalen Bitleitung 817 schneiden (obwohl in anderen Beispielen andere Anzahlen von Zellen bereitgestellt werden können). Die Auswahlgate SGS, SGD befinden sich an jedem Ende der NAND-Kette 815, um Verbindung/Isolation der NAND-Kette 815 zu steuern.
  • Vertikale NAND-Ketten können auf verschiedene Weisen so angeordnet werden, dass sie ein 3D-NAND-Array bilden. 9 zeigt ein Beispiel, bei dem mehrere U-förmige NAND-Ketten in einem Block mit einer Bitleitung verbunden sind. In diesem Fall gibt es n Ketten (Kette 1–Kette n) in einem mit einer Bitleitung („BL“) verbundenen Block. Der Wert von „n“ kann eine beliebige geeignete Zahl sein, zum Beispiel 8, 12, 16, 32 oder mehr. Die Orientierung der Ketten wechselt sich ab, wobei die Sourceverbindung von ungeradzahligen Ketten links ist und bei geradzahligen Ketten die Source rechts ist. Diese Anordnung ist zweckmäßig, aber nicht wesentlich, und es sind auch andere Muster möglich.
  • Gemeinsame Sourceleitungen „SL“ sind an ein Ende jeder NAND-Kette (gegenüber dem Ende, das an die Bitleitung angeschlossen ist) angeschlossen. Dies kann als das Sourceende der NAND-Kette betrachtet werden, wobei das Bitleitungsende als das Drainende der NAND-Kette betrachtet wird. Es können gemeinsame Sourceleitungen verbunden werden, so dass alle Sourceleitungen für einen Block zusammen durch eine Peripherieschaltung gesteuert werden können. NAND-Ketten eines Blocks erstrecken sich somit parallel zwischen Bitleitungen an einem Ende und gemeinsame Sourceleitungen an dem anderen Ende.
  • 10 zeigt eine Speicherstruktur, in der sich gerade vertikale NAND-Ketten von gemeinsamen Sourceverbindungen in oder nahe einem Substrat zu globalen Bitleitungen (BL0–BL3) erstrecken, die sich über die physischen Ebenen von Speicherzellen erstrecken. Wortleitungen in einer gegebenen physischen Ebene in einem Block werden aus einer Schicht aus leitfähigem Material gebildet. Herunter durch diese Schichten aus leitfähigem Material erstrecken sich Speicherlochstrukturen zur Bildung von Speicherzellen. In einem gegebenen Block befinden sich mehrere NAND-Ketten, die mit einer gegebenen Bitleitung verbunden sind. NAND-Ketten werden zu Mengen von Ketten gruppiert, die sich gemeinsame Auswahlgate teilen. Zum Beispiel können NAND-Ketten, die durch SGS0 und SGD0 ausgewählt werden, somit als eine Menge betrachtet und als Kette 0 bezeichnet werden, während NAND- Ketten, die durch SGS1 und SGD1 ausgewählt werden, als eine Menge betrachtet und als Kette 1 bezeichnet werden können, wie gezeigt. Ein Block kann aus einer beliebigen Anzahl solcher Mengen von Ketten bestehen. Es versteht sich, dass der Querschnitt von 10 Teile von BL0–BL3 zeigt, diese Bitleitungen erstrecken sich in der y-Richtung weiter. Ferner erstrecken sich zusätzliche Bitleitungen parallel zu BL0–BL3 (z.B. an verschiedenen Orten auf der x-Achse vor oder hinter dem Ort des Querschnitts von 10). Andere dreidimensionale Speicher basieren nicht auf Ladungsspeicherungselementen, sondern auf resistiven Elementen.
  • Speicherbus
  • In einigen nichtflüchtigen Speichersystemen können zwei oder mehr nichtflüchtige Speicher-Dies mit einem Speicherbus verbunden sein. Zum Beispiel können vier, acht oder mehr NAND-Flash-Speicher-Dies über einen Speicherbus mit einem NAND-Controller verbunden sein. Ein solcher Mehr-Die-Bus kann mit einer beliebigen Form von nichtflüchtigem Speicher verwendet werden, darunter planarer, 3-D-, Ladungsspeicherungs-Speicher (wie etwa Flash), resistiver Speicher (wie etwa ReRAM) und andere Formen von Speicher. In einigen Fällen kann ein Speichercontroller mehr als einen Speicherbus verwalten, und jeder solche Speicherbus kann mehrere nichtflüchte Speicher-Dies versorgen.
  • Obwohl die Verwendung eines Speicherbusses zur Kommunikation mit mehreren Speicher-Dies über einen geteilten Kommunikationskanal verglichen mit der Verwendung von dedizierten Kommunikationskanälen für jeden Speicher-Die signifikante Ersparnisse gewährleisten kann, kann ein Speicherbus zu einem Engpass werden, der die Speichersystemleistungsfähigkeit in einigen Situationen verringert. Zum Beispiel kann in einigen Beispielen die Ausführung eines Speicherzugriffsbefehls (Lese-, Schreib- oder Löschbefehls) verzögert werden, weil der Speicherbus belegt ist.
  • Ein Beispiel für eine Aufgabe, die einen Speicherbus einnehmen und verhindern kann, dass andere Aufgaben ausgeführt werden, ist das Abfragen von Speicher-Dies, um zu identifizieren, wann ein Speicher-Die verfügbar (bereit) wird. In einigen Fällen kann ein Speichersystem einen bestimmten Die abfragen, während er darauf wartet, dass dieser Die verfügbar wird, weil es eine andere Aufgabe gibt, die unter Verwendung des Die auszuführen ist. Zum Beispiel kann, wenn ein Die belegt (nicht verfügbar) ist, weil er Daten schreibt, das Speichersystem darauf warten, dass der Die bereit wird, um mehr Daten zu dem Die zu senden. Während des Abfragens kann es einen oder mehrere andere Dies auf dem Speicherbus geben, die zum Schreiben von weiteren Daten verfügbar sind. Daten werden jedoch nicht zu diesen Dies transferiert, weil der Speicherbus mit der Abfrageoperation belegt ist.
  • Eine Alternative zum Abfragen einzelner Dies ist das Verknüpfen von Blöcken mehrerer Dies zu Metablöcken, die dann parallel zusammen betrieben werden. Somit können alle Dies auf einem bestimmten Speicherbus im Wesentlichen zur selben Zeit (oder zumindest in einer vorhersehbaren Sequenz) verfügbar werden, so dass wenig oder keine Zeit mit dem Abfragen eines Dies verbracht wird, während andere Dies bereit sind.
  • Eine andere Alternative ist die Verwendung eines oder mehrerer Timer, um zu schätzen, wann ein Die bereit sein wird. Wenn ein Die eine bestimmte Aufgabe beginnt, z.B. Schreiben eines ersten Teils von Daten (z.B. einer Seite), kann somit ein Timer für den Die eingeleitet werden. Keine Abfragen können ausgeführt werden, bis der Timer angibt, dass das Schreiben wahrscheinlich beendet wurde (z.B. auf der Basis eines Vergleichs der vergangenen Zeit und einer gewissen vorherigen Schreibzeit). Auf diese Weise wird wenig Zeit mit Abfragen verschwendet. Ein solches System kann jedoch relativ komplex sein, weil es mehrere Timer und Verfolgung von mittleren Zeiten für verschiedene Aufgaben über mehrere Dies (oder kleinere Einheiten, wie etwa Blöcke) erfordert und kann Aktualisieren solcher Zeiten mit alterndem Speicher umfassen. Eine solche Schätzung kann ungenau sein. Es kann Fälle geben, bei denen die geschätzte Zeit zu kurz ist, so dass Abfragen beginnt, signifikant bevor ein Die bereit ist, und Zeit durch Abfragen verschwendet wird. In anderen Fällen ist geschätzte Zeit zu lang, so dass Abfragen unnötig verzögert wird und der Die im Leerlauf bleibt.
  • Ein effizientes Schema zum Verwalten eines Speicherbusses ist in 11 dargestellt. Befehle werden zum Beispiel von einem Host über eine Hostschnittstelle empfangen 101. Befehle können auch aus einem Speichercontroller stammen (z.B. Befehle in Bezug auf interne Operationen wie Müllabfuhr, Aktualisierung von Speicherverwaltungsdaten oder Blockwiederbeanspruchung). Dann werden Suboperationen identifiziert 103.
  • Die Identifikation von Suboperationen kann Parsen einzelner Befehle zu Suboperationen umfassen, die ausgeführt werden, wenn der Befehl ausgeführt wird. Suboperationen können Aufgaben sein, die den Speicherbus einnehmen, und können als atomische Operationen ohne Unterbrechung ausgeführt werden. Suboperationen sollten im Allgemeinen relativ kurz sein und sollten Aufgaben, die effizienter als getrennte Suboperationen ausgeführt werden können, nicht unnötigerweise zusammenlegen. Es wäre zum Beispiel ineffizient, eine Leseerfassung und einen Lesetransfer als eine einzige Suboperation zu betrachten, weil der Speicherbus während des Speichererfassungsteils der Suboperation leerlaufen müsste. Das Schreiben in Mehrpegelzellen- bzw. „MLC“-Speicherzellen (z.B. Dreipegelzellen oder „TLC“) kann als mehrere Suboperationen betrachtet werden, so dass zwischen solchen Suboperationen in einem Die der Speicherbus für andere Zwecke verwendet werden kann (d.h. auf andere Dies zugegriffen werden kann). Speicherzugriffsbefehle wie Lesen, Schreiben und Löschen erfordern im Allgemeinen mindestens zwei solche Suboperationen. Zum Beispiel kann ein Lesebefehl mindestens eine Leseerfassungs-Suboperation zum Transfer physischer Adresseninformationen in einen Speicher-Die und Einleiten von Erfassung der adressierten Zellen und mindestens einen Lesetransfer zum Transfer der erfassten Daten aus dem Die über den Speicherbus erfordern. Lesen mehrerer logischer Seiten aus einer physischen Seite und Lesen mehrerer Dies kann viele solche Suboperationen erfordern. Ein Schreibbefehl kann mindestens eine Schreibtransfer-Suboperation zum Transfer von Daten und Adresseninformationen zu einem Ziel-Die über den Speicherbus und mindestens eine Statusprüfung zur Bestimmung, ob das Schreiben erfolgreich war, erfordern. Ein Löschbefehl kann mindestens eine erste Suboperation zum Identifizieren eines zu löschenden Blocks und Einleiten des Löschens und mindestens eine zweite Suboperation zum Prüfen, ob das Löschen erfolgreich war, erfordern. In einigen Fällen kann ein Befehl einer einzigen Suboperation entsprechen. Zum Beispiel kann ein Befehl zum Ändern von NAND-Parametern (z.B. zum Ändern von Parametern, die Lesen, Schreiben und/oder Löschen eines Blocks, einer Ebene oder eines Dies zugeordnet sind) nur eine einzige Suboperation zum Transfer der neuen NAND-Parameter erfordern.
  • Suboperationen werden auf eine Weise freigegeben 105 (für Ausführung verfügbar gemacht), die effiziente Benutzung des Speicherbusses sicherstellt. Suboperationen werden im Allgemeinen für Ausführung in der Reihenfolge des Empfangs entsprechender Befehle eingeteilt. In einigen Fällen kann eine gewisse Umordnung durchgeführt werden. Suboperationen werden nur freigegeben, wenn ein entsprechender Die verfügbar ist. In einigen Fällen wird nur eine Suboperation für einen gegebenen Die freigegeben, so dass die Liste freigegebener Suboperationen eine Suboperation tief sein kann. In einigen Fällen kann mehr als eine Suboperation für einen Die auf einmal freigegeben werden, wobei zwei Suboperationen effizient hintereinander ausgeführt werden können. Zum Beispiel kann eine Lesetransfer-Suboperation für zuvor erfasste Daten mit einer Leseerfassungs-Suboperation für die nächsten aus demselben Die zu lesenden Daten freigegeben werden. Freigabe von Suboperationen kann Torschaltungsbedingungen unterliegen, so dass in einigen Fällen eine Suboperation nicht unmittelbar freigegeben werden kann, wenn ein entsprechender Die verfügbar ist.
  • In einigen Fällen kann Abfragen angeben, dass ein Die bereit ist, und eine entsprechende Suboperation wird unmittelbar freigegeben und ausgeführt. In anderen Fällen erfolgt die Freigabe einer entsprechenden Suboperation nicht unmittelbar, sondern wird stattdessen aufgrund einer Torschaltungsbedingung verzögert. Um zum Beispiel den Stromverbrauch auf einem Wert unter einer Stromverbrauchsgrenze zu halten, kann Freigabe einer Suboperation verzögert werden, bis eine gewisse andere Suboperation beendet ist. Zum Beispiel kann ein Speicherbus acht Speicher-Dies aufweisen, aber der Stromverbrauch kann die Anzahl der eine Schreiboperation ausführenden Dies zum Beispiel auf sechs Dies beschränken. Wenn somit sechs Dies bereits Schreibsuboperationen ausführen, wenn ein anderer Die bereit wird, könnte Freigabe des neu bereiten Dies bewirken, dass sieben Dies Schreiboperationen gleichzeitig ausführen. In dieser Situation könnte Freigabe der Suboperation verzögert werden, bis ein anderer Die das Schreiben beendet hat. Während Lese-, Lösch- und anderen Operationen verbrauchter Strom kann auch berücksichtigt werden, wenn bestimmt wird, Freigabe zu verzögern. Zum Beispiel kann ein Löschen in einem oder mehreren Dies ausgeführt werden, während Lesevorgänge in anderen Dies ausgeführt werden und Schreibvorgänge in noch weiteren Dies ausgeführt werden. Der insgesamte aktuell verbrauchte Strom kann verfolgt und zur Bestimmung der Differenz zwischen dem aktuellen Stromverbrauch und der Stromverbrauchsgrenze verwendet werden. Wenn der zusätzliche durch Freigeben einer anderen Suboperation verursachte Verbrauch in der Stromverbrauchsgrenze liegt, kann die Suboperation freigegeben werden. Wenn der zusätzliche Verbrauch nicht innerhalb der Grenze liegt, kann Freigabe verzögert werden. Die Art von Suboperation kann berücksichtigt werden, da verschiedene Suboperationen zum Verbrauch verschiedener Strommengen führen. Somit könnte eine Leseerfassungs-Suboperation unmittelbar freigegeben werden, wobei eine Löscheinleitungssuboperation, die ein Löschen einleitet, die mehr Strom als Schreiben erfordert, nicht unmittelbar freigegeben werden könnte. Somit können verschiedene Torschaltungsbedingungen angewandt werden, um zu bestimmen, ob eine bestimmte Suboperation freizugeben ist.
  • Freigabe einer Suboperation transferiert die Suboperation in eine andere Liste zur Ausführung. 11 zeigt obere Schritte 101105 in Bezug auf Suboperationsfreigabe und untere Schritte 107113 in Bezug auf Suboperationsausführung. Diese zwei Operationen können größtenteils unabhängig laufen und können asynchron sein. Nur freigegebene Suboperationen werden ausgeführt 107. Während freigegebene Suboperationen ausgeführt werden, kann kein Abfragen durchgeführt werden. In einigen Fällen kann es Ausnahmen geben, zum Beispiel kann ein Mehrebenen-MLC-Schreiben als eine einzige Suboperation betrachtet werden, statt als mehrere atomische Suboperationen. In diesem Fall kann einiges Abfragen innerhalb des Mehrebenenschreibens durchgeführt werden, um zu bestimmen, wann die nächste Seite transferiert werden kann, z.B. nach dem Transfer von unteren Seitendaten in zwei Ebenen kann Abfragen verwendet werden, um zu bestimmen, wann untere Seitendaten geschrieben werden und der Die bereit ist, mittlere Seitendaten zu empfangen. Wenn eine Suboperation abgeschlossen ist und der Speicherbus verfügbar wird, wird bestimmt, ob die Liste freigegebener Suboperationen leer ist 109. Wenn es immer noch mindestens eine Suboperation in der Liste freigegebener Suboperationen gibt, wird die Ausführung fortgesetzt. Wenn die Liste freigegebener Suboperationen leer ist, werden die Speicher-Dies abgefragt 111, um einen etwaigen bereiten Die oder bereite Dies 113 zu identifizieren. Abfragen erfolgt somit nur, wenn es keine Suboperationen mehr gibt, die unmittelbar ausgeführt werden können (d.h. Suboperationen für Dies, die bekanntermaßen bereit sind). Es findet kein Abfragen statt, solange es mindestens eine Suboperation in der Liste gibt, so dass die Ausführung von Suboperationen fortgesetzt wird, bis die Liste leer ist. Abfragen kann auf Dies begrenzt werden, die aktiv sind (d.h. Abfragen inaktiver Dies kann unnötig sein). Wenn alle Dies inaktiv sind, kann kein Abfragen durchgeführt werden. Wenn keine Suboperationen auszuführen sind, kann das System somit in einen Zustand mit geringer Stromaufnahme ohne Ausführung von Suboperationen oder Abfragen von Dies übergehen. Danach können Ausführung und Abfragen wiederaufgenommen werden, wenn ein neuer Befehl empfangen wird. Wenn Abfragen angibt, dass ein oder mehrere Dies bereit sind 113, wird dies zur Verwendung bei der Identifikation von Suboperationen für Freigabe übermittelt (gestrichelte Linie), und entsprechende Suboperationen werden freigegeben 105 und ausgeführt 107. Im Allgemeinen endet das Abfragen und Freigeben und Ausführung werden eingeleitet, sobald ein bereiter Die identifiziert ist, so dass das Abfragen nicht für einen verlängerten Zeitraum fortgesetzt wird. Zum Beispiel kann die nächste Suboperation für alle als bereit identifizierte Dies freigegeben werden. Wenn das Abfragen 113 endet, wird die Liste freigegebener Suboperationen geprüft 109, um zu bestimmen, ob es irgendwelche neu freigegebenen Suboperationen gibt, und um solche Suboperationen 103, wenn es welche gibt, auszuführen. Es ist ersichtlich, dass dieses Schema zwischen Ausführung von Suboperationen (während der kein Abfragen auftritt), wenn die Liste nicht leer ist, und Abfragen von Dies, das nur auftritt, wenn die Liste leer wird, abwechselt.
  • Die Freigabe von Suboperationen kann auch durch andere Ereignisse als Abfragen getriggert werden, wie etwa Freigabe einer Suboperation, die warten gelassen wurde, weil eine Torschaltungsbedingung galt. Wenn zum Beispiel eine Suboperation aufgrund einer Stromverbrauchsgrenze warten gelassen wird, kann die Suboperation immer dann freigegeben werden, wenn der Stromverbrauch auf einen Wert abnimmt, der das Ausführen der Suboperation, ohne die Stromverbrauchsgrenze zu überschreiten, erlaubt (d.h. wenn die Torschaltungsbedingung nicht mehr gilt, kann die Suboperation ohne zusätzliches Abfragen freigegeben werden). In einigen Fällen kann man mit einer Bedingung „virtuell belegt“ angeben, dass ein Die, der ein Bereit-Signal setzt, nicht als bereit zu behandeln ist (d.h. keine Suboperation für einen solchen Die freizugeben ist). Somit können Torschaltungsbedingungen implementiert werden, indem eine Virtuell-Belegt-Bedingung gesetzt wird, die dann freigegeben wird, wenn Torschaltungsbedingungen erfüllt sind. Zum Beispiel kann eine Virtuell-Belegt-Bedingung während des Lesedatentransfers verwendet werden, wenn ein Die ein Bereit-Signal setzt, um die Freigabe nachfolgender Suboperationen zu verwalten.
  • In einigen Fällen kann es zwei oder mehr Suboperationen geben, die aus der Liste nicht freigegebener Suboperationen freigegeben werden können, weil ihre Dies bereit sind. Die Reihenfolge, in der solche Suboperationen freigegeben und ausgeführt werden, kann gemäß einem Priorisierungsschema bestimmt werden, das auf Regeln zur Optimierung der Leistungsfähigkeit basieren kann. Wenn zum Beispiel eine Leseerfassungs-Suboperation für Freigabe für einen Die bereit ist, während eine Lesetransfer-Suboperation für Freigabe für einen anderen Die bereit ist, würde im Allgemeinen das Leseerfassen zuerst freigegeben. Dadurch kann die Erfassung im Die parallel mit der Lesetransferoperation voranschreiten. Ein Priorisierungsschema kann Verzögern und/oder Ordnen von Suboperationen auf der Basis von Energieanforderungen wie oben besprochen umfassen. In einigen Fällen kann ein Host oder Controller eine bestimmte Reihenfolge für Freigabe und/oder Ausführung spezifizieren. Aus einem Speicher gelesene Daten können in einer bestimmten Reihenfolge an einen Host zurückgegeben werden (z.B. in der Reihenfolge logischer Adressen). Um dies zu ermöglichen, können Leseerfassungs- und Lesetransfer-Suboperationen auch gemäß logischer Adressen geordnet werden. In einigen Fällen kann ein Speichercontroller eine Operation ausführen, die eine bestimmte Reihenfolge erfordert. Zum Beispiel kann Verlagern von Daten von einem Block zu einem anderen (z.B. während der Müllabfuhr) das Ausführen von Leseerfassungs-Suboperationen für alle Dies erfordern, bevor irgendwelche Schreibsuboperationen ausgeführt werden.
  • 12 zeigt ein Beispiel für Befehlsabwicklung, die effiziente Speicherbusbenutzung gewährleistet. Auszuführende Befehle werden empfangen und können in eine Warteschlange eingereiht werden 221 (z.B. in der Reihenfolge, in der sie empfangen wurden). Eine Befehlsanalyseeinheit 223 identifiziert Suboperationen, die den Befehlen entsprechen. Die identifizierten Suboperationen werden in einen Pool anstehender (nicht freigegebener) Suboperationen 225 abgelegt. Ein Freigabecontroller 227 gibt dann Suboperationen nur für Dies frei, von denen bestimmt wird, dass sie bereit sind, vorbehaltlich etwaiger Torschaltungsbedingungen, die gelten können. Freigegebene Suboperationen werden in einer Warteschlange gehalten 229. Suboperationen werden durch den Speicherbuscontroller ausgeführt, wobei jede solche Suboperation den Speicherbus für einen ununterbrochenen Zeitraum einnimmt. Wenn es keine freigegebenen Suboperationen in der Warteschlange 229 mehr gibt, fragt der Speicherbuscontroller 231 die Dies ab, um etwaige verfügbare Dies zu identifizieren, und identifiziert verfügbare Dies dem Freigabecontroller 227, der dann weitere Suboperationen in die Warteschlange 229 freigeben kann, so dass der Speicherbuscontroller 231 zum Ausführen von Suboperationen zurückkehren kann.
  • Die Funktionsweise eines Speicherbuscontrollers (z.B. des Speicherbuscontrollers 231) ist in 13 dargestellt. Es wird bestimmt 341, ob es eine freigegebene Suboperation in der Warteschlange freigegebener Suboperationen gibt. Wenn es keine Suboperationen in der Warteschlange gibt, wird dann die nächste Suboperation in der Warteschlange ausgeführt 343. Wenn keine freigegebenen Suboperationen in der Warteschlange verbleiben, werden Dies abgefragt, um bereite Dies zu identifizieren 345. Wenn es bereite Dies gibt, informiert der Speicherbuscontroller den Freigabecontroller, so dass entsprechende Suboperationen freigegeben werden können.
  • In einigen Speichersystemen kann ein Speichercontroller mehr als einen Speicherbus verwalten. 14 zeigt ein Beispiel für ein Speichersystem 451, das zwei Speicherbusse, Bus 1 und Bus 2, verwaltet. Bus 1 versorgt Die A und Die B, während Bus 2 Die C und Die D versorgt. Alle Dies umfassen in diesem Beispiel zwei Ebenen (Ebene 0 und Ebene 1). Es versteht sich, dass verschiedene andere Konfigurationen implementiert werden können. Zum Beispiel kann jeder Bus mehr als zwei Dies (z.B. vier, acht, sechszehn oder mehr Dies) aufweisen, und ein Controller kann mehr als zwei Busse aufweisen.
  • Der Speichercontroller 453 umfasst eine Hostschnittstelle 455, die über einen Kommunikationskanal Hostbefehle empfängt 457. Es können zusätzliche Befehle in dem Speichercontroller erzeugt werden 453. Befehle (von einem Host oder anderweitig) werden zu einem Befehlsanalysierer 459 gesendet, der Befehle zu bestandteiligen Suboperationen analysiert. Die Suboperationen werden in eine Warteschlange nicht freigegebener Subbefehle eingereiht 461. Ein Freigabecontroller 463 gibt Subbefehle aus der Warteschlange nicht freigegebener Subbefehle frei 461 und gibt diese an eine geeignete Warteschlange freigegebener Subbefehle frei, entweder an eine Warteschlange 465 freigegebener Subbefehle für Bus 1 oder eine Warteschlange 467 freigegebener Subbefehle für Bus 2. Somit teilen sich Bus 1 und Bus 2 eine Warteschlange 461 nicht freigegebener Subbefehle, während jeder Bus eine eigene Warteschlange freigegebener Subbefehle, die Warteschlange 465 für Bus 1 und die Warteschlange 467 für Bus 2, aufweist. Jeder Bus kann somit auf der Basis seiner Warteschlange freigegebener Suboperationen getrennt operieren. Es ist eine Abfrageschaltung 469 vorgesehen, um Dies eines gegebenen Bus immer dann abzufragen, wenn die Warteschlange freigegebener Suboperationen für den Bus leer ist. Obwohl eine einzige Abfrageschaltung gezeigt ist, können getrennte Abfrageschaltungen für jeden Bus bereitgestellt werden, so dass jeder Bus über seine eigene dedizierte Abfrageschaltung verfügt. Obwohl 14 den Speichercontroller 453 als spezifische Schaltungen umfassend darstellt, versteht sich, dass in dem Speichercontroller zusätzliche Schaltungen vorgesehen sein können. Außerdem versteht sich, dass Schaltungen in einem solchen Speichercontroller als dedizierte Schaltungen, programmierbare Logikschaltungen oder physische Vielzweckschaltungen bereitgestellt werden können, die mittels Software konfiguriert werden. Die in 14 dargestellten Komponenten sind somit nicht unbedingt physisch getrennte Schaltungen, sondern können Funktionsteile eines Speichercontrollers sein, die durch Controllerfirmware für spezifische Zwecke konfiguriert sind. In einigen Fällen kann eine Kombination aus dedizierten Schaltungen und softwarekonfigurierbaren Schaltungen in einem ASIC (anwendungsspezifische integrierte Schaltung) einen solchen Speichercontroller bilden.
  • Schlussbemerkungen
  • Die obige ausführliche Beschreibung erfolgte zum Zwecke der Veranschaulichung und Beschreibung. Sie soll nicht erschöpfend sein oder die angefügten Ansprüche begrenzen. Im Hinblick auf die obigen Lehren sind viele Modifikationen und Abwandlungen möglich.

Claims (23)

  1. Verfahren zum Verwalten eines Speicherbusses, umfassend: Empfangen mehrerer Speicherzugriffsbefehle, die an mehrere nichtflüchtige Speicher-Dies gerichtet sind, die mit dem Speicherbus verbunden sind; Identifizieren von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei Ausführung eines einzelnen Speicherzugriffsbefehls Ausführung von zwei oder mehr Suboperationen erfordert; Unterhalten einer ersten Liste von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die erste Liste nichtfreigegebene unausgeführte Suboperationen, die an einzelne Dies gerichtet sind, die nicht als verfügbar identifiziert sind, und unausgeführte Suboperationen, die an einzelne Dies gerichtet sind, die als verfügbar identifiziert sind und für die eine Torschaltungsbedingung gilt, enthält; Unterhalten einer zweiten Liste von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die zweite Liste nur freigegebene unausgeführte Suboperationen enthält, die an einzelne Dies gerichtet sind, die als verfügbar identifiziert sind; Zugreifen auf die mehreren Speicher-Dies mittels des Speicherbusses durch Ausführen nur von Suboperationen von der zweiten Liste, bis die zweite Liste leer ist; danach, wenn die zweite Liste leer ist, Abfragen der mehreren nichtflüchtigen Speicher-Dies, um einzelne nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies zu identifizieren, die verfügbar sind; Verschieben einer oder mehrerer Suboperationen von der ersten Liste in die zweite Liste, wenn ein oder mehrere verfügbare nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies identifiziert werden; und danach Wiederaufnehmen des Zugreifens auf die mehreren nichtflüchtigen Speicher-Dies mittels des Speicherbusses durch Ausführen nur von Suboperationen von der zweiten Liste, bis die zweite Liste leer ist.
  2. Verfahren nach Anspruch 1, wobei Abfragen der mehreren nichtflüchtigen Speicher-Dies als Reaktion auf Leerwerden der zweiten Liste auftritt und kein Abfragen auftritt, wenn es mindestens eine Suboperation in der zweiten Liste gibt.
  3. Verfahren nach Anspruch 2, das ferner Wechseln zwischen dem Abfragen der mehreren nichtflüchtigen Speicher-Dies und Zugreifen auf die mehreren nichtflüchtigen Speicher-Dies mittels des Speicherbusses umfasst, bis alle Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, ausgeführt sind.
  4. Verfahren nach Anspruch 1, wobei Wiederaufnehmen des Zugreifens auf die mehreren nichtflüchtigen Speicher-Dies auftritt, sobald ein neuer Eintrag zu der zweiten Liste hinzugefügt wird.
  5. Verfahren nach Anspruch 1, wobei Ausführung einer einzelnen Suboperation eine atomische Ausführung ist, die den Speicherbus ohne Unterbrechung für einen kontinuierlichen Zeitraum einnimmt.
  6. Verfahren nach Anspruch 1, wobei die mehreren Speicherzugriffsbefehle einen Verlagerungsbefehl zum Kopieren von Daten aus einem ersten physischen Ort an einen zweiten physischen Ort umfassen und wobei die eine oder mehreren Suboperationen einen oder mehrere Lesevorgänge aus dem ersten Ort und einen oder mehrere Schreibvorgänge in den zweiten Ort umfassen und wobei Verschieben des einen oder der mehreren Schreibvorgänge von der ersten Liste in die zweite Liste erst auftritt, wenn der eine oder die mehreren Lesevorgänge abgeschlossen sind.
  7. Verfahren nach Anspruch 1, wobei unausgeführte Suboperationen gemäß einer Reihenfolge zur Ausführung von Suboperationen entsprechend einer Reihenfolge, die durch einen Host für Ausführung der mehreren Speicherzugriffsbefehle spezifiziert wird, von der ersten Liste in die zweite Liste verschoben werden.
  8. Verfahren nach Anspruch 1, wobei unausgeführte Schreibsuboperationen in Bezug auf Speicherverwaltungsdaten gemäß einer durch einen Speichercontroller spezifizierten Reihenfolge von der ersten Liste in die zweite Liste verschoben werden.
  9. Verfahren nach Anspruch 1, das ferner beim Verschieben der einen oder mehreren Suboperationen von der ersten Liste zu der zweiten Liste als Reaktion auf Identifizieren eines oder mehrerer verfügbarer nichtflüchtiger Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies Verzögern des Verschiebens einer Suboperation der einen oder mehreren Suboperationen von der ersten Liste in die zweite Liste umfasst, um dadurch einen Stromverbrauchswert unter einer Stromverbrauchsgrenze zu halten.
  10. Verfahren nach Anspruch 1, das ferner beim Verschieben der einen oder mehreren Suboperationen von der ersten Liste in die zweite Liste als Reaktion auf Identifizierung eines oder mehrerer verfügbarer nichtflüchtiger Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies Priorisieren von Suboperationen gemäß einem Priorisierungsschema umfasst.
  11. Verfahren nach Anspruch 10, wobei das Priorisierungsschema Leseerfassungs-Suboperationen über Lesetransfer-Suboperationen priorisiert.
  12. Nichtflüchtiges Speichersystem, umfassend: mehrere nichtflüchtige Speicher-Dies; einen mit den mehreren nichtflüchtigen Speicher-Dies verbundenen Speicherbus; eine Schnittstelle, ausgelegt zum Empfangen mehrerer Speicherzugriffsbefehle, die an die mehreren nichtflüchtigen Speicher-Dies gerichtet sind; eine Befehlsanalyseeinheit, ausgelegt zum Identifizieren von Suboperationen, die für Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei Ausführung eines einzelnen Speicherzugriffsbefehls Ausführung von zwei oder mehr Suboperationen erfordert; eine erste Liste von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die erste Liste nichtfreigegebene unausgeführte Suboperationen enthält; eine zweite Liste von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die zweite Liste nur freigegebene unausgeführte Suboperationen enthält, die an einzelne nichtflüchtige Speicher-Dies gerichtet sind, die als verfügbar identifiziert sind, wobei auf die mehreren nichtflüchtigen Speicher-Dies mittels des Speicherbusses zugegriffen wird, indem nur Suboperationen von der zweiten Liste ausgeführt werden, bis die zweite Liste leer ist; eine Die-Abfrageeinheit, ausgelegt zum Abfragen der mehreren nichtflüchtigen Speicher-Dies, um einzelne nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies zu identifizieren, die verfügbar sind; und eine Listenaktualisierungseinheit, ausgelegt zum Aktualisieren der zweiten Liste durch Freigeben einer Suboperation für einen einzelnen nichtflüchtigen Speicher-Die als Reaktion auf Identifikation des einzelnen nichtflüchtigen Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies als verfügbar.
  13. Nichtflüchtiges Speichersystem nach Anspruch 12, wobei die Die-Abfrageeinheit dafür ausgelegt ist, immer dann inaktiv zu bleiben, wenn es mindestens eine unausgeführte Suboperation in der zweiten Liste gibt.
  14. Nichtflüchtiges Speichersystem nach Anspruch 12, wobei die Befehlsanalyseeinheit dafür ausgelegt ist, Suboperationen zu identifizieren, die atomisch sind, dergestalt, dass eine einzelne Suboperation den Speicherbus ohne Unterbrechung für einen kontinuierlichen Zeitraum einnimmt.
  15. Nichtflüchtiges Speichersystem nach Anspruch 12, wobei die Listenaktualisierungseinheit einzelne unausgeführte Suboperationen, die an einzelne nichtflüchtige Speicher-Dies gerichtet sind, die durch die Abfrageeinheit als verfügbar identifiziert werden, gemäß einer durch einen Host oder durch einen Speichercontroller spezifizierten Reihenfolge von der ersten Liste in die zweite Liste verschiebt.
  16. Nichtflüchtiges Speichersystem nach Anspruch 12, wobei die Listenaktualisierungseinheit dafür ausgelegt ist, einzelne unausgeführte Suboperationen, die an einzelne nichtflüchtige Speicher-Dies gerichtet sind, die durch die Abfrageeinheit als verfügbar identifiziert werden, dergestalt von der ersten Liste in die zweite Liste zu verschieben, dass die Anzahl belegter Speicher-Dies eine Maximalzahl, die kleiner als alle Speicher-Dies der mehreren Speicher-Dies ist, nicht überschreitet.
  17. Nichtflüchtiges Speichersystem nach Anspruch 12, wobei ein einzelner nichtflüchtiger Speicher-Die der mehreren nichtflüchtigen Speicher-Dies ein dreidimensionaler nichtflüchtiger Speicher-Die ist, der monolithisch in einer oder mehreren physischen Ebenen von Arrays von Speicherzellen mit einem über einem Siliziumsubstrat angeordneten aktiven Bereich gebildet ist.
  18. Nichtflüchtiges Speichersystem nach Anspruch 12, das ferner Folgendes umfasst: einen zusätzlichen Speicherbus, der mit zusätzlichen nichtflüchtigen Speicher-Dies verbunden ist; wobei die erste Liste unausgeführte Suboperationen, die an einzelne nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies und der zusätzlichen nichtflüchtigen Speicher-Dies gerichtet sind, und die zweite Liste nur unausgeführte Suboperationen enthält, die an einzelne nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies gerichtet sind.
  19. Verfahren zum Verwalten eines Speicherbusses, umfassend: Empfangen mehrerer Speicherzugriffsbefehle, die an mehrere nichtflüchtige Speicher-Dies gerichtet sind, die mit dem Speicherbus verbunden sind; Identifizieren von Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei Ausführung eines einzelnen Speicherzugriffsbefehls Ausführung von zwei oder mehr Suboperationen erfordert, wobei jede Suboperation eine atomische Operation ist, die den Speicherbus ohne Unterbrechung für einen kontinuierlichen Zeitraum einnimmt; Unterhalten einer ersten Liste von nichtfreigegebenen Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die erste Liste unausgeführte Suboperationen, die an einzelne Dies gerichtet sind, die nicht als verfügbar identifiziert sind, und unausgeführte Suboperationen, die an Dies gerichtet sind, die bereits eine freigegebene Suboperation aufweisen, enthält; Unterhalten einer zweiten Liste von freigegebenen Suboperationen, die zur Ausführung der mehreren Speicherzugriffsbefehle erforderlich sind, wobei die zweite Liste nur unausgeführte Suboperationen enthält, die an einzelne Dies gerichtet sind, die als verfügbar identifiziert sind, mit einem Maximum von einer unausgeführten Suboperation pro nichtflüchtigem Speicher-Die, der als verfügbar identifiziert ist; Zugreifen auf die mehreren Speicher-Dies mittels des Speicherbusses durch Ausführungen nur von freigegebenen Suboperationen von der zweiten Liste, bis die zweite Liste leer ist; danach, wenn bestimmt wird, dass die zweite Liste leer ist, Abfragen der mehreren nichtflüchtigen Speicher-Dies, um einzelne nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies zu identifizieren, die verfügbar sind; wenn ein oder mehrere verfügbare nichtflüchtige Speicher-Dies der mehreren nichtflüchtigen Speicher-Dies identifiziert werden, Freigeben einer oder mehrerer Suboperationen von der ersten Liste in die zweite Liste; danach Wiederaufnehmen des Zugreifens auf die mehreren nichtflüchtigen Speicher-Dies mittels des Speicherbusses durch Ausführen nur von freigegebenen Suboperationen von der zweiten Liste, bis die zweite Liste leer ist, wobei von dem Wiederaufnehmen an, bis die zweite Liste leer ist, kein Abfragen der mehreren nichtflüchtigen Speicher-Dies auftritt; und danach Wechseln zwischen Abfragen der mehreren nichtflüchtigen Speicher-Dies und Zugreifen auf die mehreren Speicher-Dies, bis alle zur Ausführung der mehreren Speicherzugriffsbefehle erforderlichen Suboperationen ausgeführt sind.
  20. Verfahren nach Anspruch 19, wobei das Freigeben der einen oder mehreren Suboperationen von der ersten Liste in die zweite Liste gemäß einer durch einen Host spezifizierten Reihenfolge und/oder einer durch einen Speichercontroller spezifizierten Reihenfolge und/oder einer Energieanforderung durchgeführt wird.
  21. Verfahren nach Anspruch 19, wobei ein einzelner nichtflüchtiger Speicher-Die der mehreren nichtflüchtigen Speicher-Dies ein dreidimensionaler nichtflüchtiger Speicher-Die ist, der monolithisch in einer oder mehreren physischen Ebenen von Arrays von Speicherzellen mit einem über einem Siliziumsubstrat angeordneten aktiven Bereich gebildet ist.
  22. Verfahren nach Anspruch 19, wobei Identifizieren von Suboperationen Folgendes umfasst: Identifizieren einer Leseerfassungs-Suboperation und einer Lesetransfer-Suboperation für jeden empfangenen Lesebefehl; Identifizieren einer Schreibtransfer-Suboperation und einer Schreibstatus-Prüfsuboperation für jeden empfangenen Schreibbefehl; und Identifizieren einer Löscheinleitungs-Suboperation und einer Löschstatus-Prüfsuboperation für jeden empfangenen Löschbefehl.
  23. Verfahren nach Anspruch 22, ferner umfassend: Empfangen mehrerer Nicht-Zugriffsbefehle, wobei Ausführung eines einzelnen Nicht-Zugriffsbefehls Ausführung einer oder mehrerer Suboperationen umfasst.
DE112015005325.5T 2015-03-31 2015-11-30 Speicherbusverwaltung Pending DE112015005325T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/675,353 2015-03-31
US14/675,353 US9734098B2 (en) 2015-03-31 2015-03-31 Memory bus management
PCT/US2015/062947 WO2016160075A1 (en) 2015-03-31 2015-11-30 Memory bus management

Publications (1)

Publication Number Publication Date
DE112015005325T5 true DE112015005325T5 (de) 2017-09-14

Family

ID=54849979

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015005325.5T Pending DE112015005325T5 (de) 2015-03-31 2015-11-30 Speicherbusverwaltung

Country Status (4)

Country Link
US (1) US9734098B2 (de)
CN (1) CN107111574B (de)
DE (1) DE112015005325T5 (de)
WO (1) WO2016160075A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921763B1 (en) 2015-06-25 2018-03-20 Crossbar, Inc. Multi-bank non-volatile memory apparatus with high-speed bus
US10222989B1 (en) 2015-06-25 2019-03-05 Crossbar, Inc. Multiple-bank memory device with status feedback for subsets of memory banks
US10141034B1 (en) * 2015-06-25 2018-11-27 Crossbar, Inc. Memory apparatus with non-volatile two-terminal memory and expanded, high-speed bus
CN109976661B (zh) 2017-12-27 2020-08-14 华为技术有限公司 基于nof的读取控制方法、装置及系统
KR20190090614A (ko) * 2018-01-25 2019-08-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10656872B2 (en) 2018-03-15 2020-05-19 Western Digital Technologies, Inc. Storage device with multi-die management
US10922014B1 (en) 2018-06-05 2021-02-16 Seagate Technology Llc Die access order variation
KR20200076244A (ko) 2018-12-19 2020-06-29 삼성전자주식회사 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법
US11194511B2 (en) * 2018-12-31 2021-12-07 Micron Technology, Inc. Arbitration techniques for managed memory
KR20200083048A (ko) * 2018-12-31 2020-07-08 삼성전자주식회사 폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법
US11062756B2 (en) 2019-10-14 2021-07-13 Western Digital Technologies, Inc. Extending operating temperature of storage device
JP7458740B2 (ja) * 2019-10-21 2024-04-01 キオクシア株式会社 メモリシステム及び制御方法
KR20210065429A (ko) * 2019-11-27 2021-06-04 삼성전자주식회사 외장형 스토리지 장치 및 외장형 스토리지 장치의 동작 방법
US11189347B2 (en) * 2020-03-13 2021-11-30 Micron Technology, Inc. Resource management for memory die-specific operations
US11354041B2 (en) * 2020-06-12 2022-06-07 Western Digital Technologies, Inc. Read latency reduction through command and polling overhead avoidance
US11972135B2 (en) * 2021-07-21 2024-04-30 Micron Technology, Inc. Status polling based on die-generated pulsed signal
US20230221888A1 (en) * 2022-01-10 2023-07-13 Western Digital Technologies, Inc. Data Storage Device and Method for Memory-Die-State-Aware Host Command Submission

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69521549T2 (de) * 1994-04-04 2001-10-25 Hyundai Electronics America Verfahren zur Verwaltung gemeinsamer Mittel mehrerer Verarbeitungseinheiten
US20100131701A1 (en) * 2008-11-25 2010-05-27 Samsung Electronics Co., Ltd. Nonvolatile memory device with preparation/stress sequence control
US8954986B2 (en) * 2010-12-17 2015-02-10 Intel Corporation Systems and methods for data-parallel processing
CN102543159B (zh) * 2010-12-29 2014-06-25 炬才微电子(深圳)有限公司 一种ddr控制器及其实现方法和芯片

Also Published As

Publication number Publication date
US9734098B2 (en) 2017-08-15
WO2016160075A1 (en) 2016-10-06
CN107111574B (zh) 2019-02-12
CN107111574A (zh) 2017-08-29
US20160292092A1 (en) 2016-10-06

Similar Documents

Publication Publication Date Title
DE112015005325T5 (de) Speicherbusverwaltung
DE112019000164T5 (de) Speichervorrichtung mit verbundenen wortleitungen zur schnellen programmierung
DE102018114250B4 (de) Reduzieren eines heißen Elektroneninjektionstypen von Lesestörungen in einer 3D-Speichervorrichtung während Signal-schaltenden Störsignalen
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE112017001761T5 (de) NAND-Struktur mit Stufenauswahl-Gate-Transistoren
DE112017003298T5 (de) Schema für das Herunterfahren von Wortleitungen zum Entfernen von Restelektronen
DE102018105685A1 (de) Multi-Zustands-Programm, das gesteuertes schwaches Boosten für einen nichtflüchtigen Speicher verwendet
DE112015006285T5 (de) Mehrchip-doppelschreiben
DE112019000157T5 (de) Speichervorrichtung mit von nand-ketten getrennten bitleitungen zur schnellen programmierung
DE102013107715A1 (de) Nichtflüchtige Speichervorrichtung und Verfahren zum Steuern des Aussetzens einer Befehlsausführung derselben
DE102013108907A1 (de) Nichtflüchtige Speichervorrichtung mit nahen/fernen Speicherzellengruppierungen und Datenverarbeitungsverfahren
DE112019000165T5 (de) Gleichzeitiges programmieren mehrerer zellen für nichtflüchtigespeichervorrichtungen
DE112015003651T5 (de) Adaptives selektives bitleitungsvorladen für stromeinsparungen und schnelles programmieren
DE102020117890A1 (de) Speichervorrichtung, Verfahren zum Betreiben der Speichervorrichtung, und Computersystem mit Speichervorrichtung
DE102020116188B4 (de) Verbesserung der sourceseitigen vorladung und verstärkung für das programmieren in umgekehrter reihenfolge
DE112008001151T5 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE102019124668A1 (de) Transistorschwellenspannungshaltung in 3d-speicher
DE102013108456A1 (de) Nichtflüchtige Speichervorrichtung und Programmierverfahren
DE102021115501A1 (de) Leseaktualisierung zur verbesserung der leistung bei datenerhaltung für nichtflüchtigen speicher
DE112015003638T5 (de) Speichermodul und -verfahren für optimierte Energienutzung
DE102020107504A1 (de) Nichtflüchtiges speicher-array, das zur leistungsverbesserung von beiden seiten angesteuert wird
DE112019007657T5 (de) Temperaturbasierte speicherverwaltung
DE112019000159T5 (de) Ramp-down-abtastung zwischen programmspannung und prüfspannung in einer speichervorrichtung
DE112019005518T5 (de) Mehrzustandsprogrammierung in einer speichervorrichtung mit schleifenabhängiger bitleitungsspannung während der verifizierung
DE102015117496A1 (de) Steuerung der zeitbereich-anstiegsquote für die löschsperre im flash-speicher

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: DEHNS GERMANY, DE

R012 Request for examination validly filed
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE