DE112020000182T5 - Blockqualitätsklassifizierung beim testen für nichtflüchtigen speicher und flags für mehrere fehlerhafte blöcke bezüglich produktdiversität - Google Patents

Blockqualitätsklassifizierung beim testen für nichtflüchtigen speicher und flags für mehrere fehlerhafte blöcke bezüglich produktdiversität Download PDF

Info

Publication number
DE112020000182T5
DE112020000182T5 DE112020000182.2T DE112020000182T DE112020000182T5 DE 112020000182 T5 DE112020000182 T5 DE 112020000182T5 DE 112020000182 T DE112020000182 T DE 112020000182T DE 112020000182 T5 DE112020000182 T5 DE 112020000182T5
Authority
DE
Germany
Prior art keywords
block
memory
blocks
chip
category
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
DE112020000182.2T
Other languages
English (en)
Inventor
Shih-Chung Lee
Takashi Murai
Ken Oowada
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 DE112020000182T5 publication Critical patent/DE112020000182T5/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/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1489Generic software techniques for error detection or fault masking through recovery blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/785Masking faults in memories by using spares or by reconfiguring using programmable devices with redundancy programming schemes
    • G11C29/787Masking faults in memories by using spares or by reconfiguring using programmable devices with redundancy programming schemes using a fuse hierarchy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/1202Word line control
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/1208Error catch memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Read Only Memory (AREA)
  • Semiconductor Memories (AREA)
  • Non-Volatile Memory (AREA)

Abstract

Für einen nichtflüchtigen Speicherchip, der aus mehreren Blöcken von Speicherzellen gebildet ist, weist der Speicherchip ein Multi-Bit-Flag für fehlerhafte Blöcke für jeden Block auf, der auf dem Speicherchip gespeichert ist, wie in einem Sicherungs-ROM. Für jeden Block gibt das Multi-Bit-Flag an, ob der Block wenige Defekte aufweist und der höchsten Zuverlässigkeitskategorie entspricht, zu defekt ist, um verwendet zu werden, oder sich in einer von mehreren Wiederherstellbarkeitskategorien befindet. Die Multi-Bit-Werte für fehlerhafte Blöcke können im Rahmen eines Testprozesses auf frischen Vorrichtungen bestimmt werden, wobei der Test eines Blocks für kritische Kategoriefehler ein Fail Stop sein kann, aber für wiederherstellbare Kategorien der Test fortgesetzt wird und die Testergebnisse verfolgt werden, um eine Wiederherstellbarkeitskategorie für den Block zu bestimmen und dies als ein Bad-Block-Flag für jeden Block auf den Chip zu schreiben. Diese Wiederherstellbarkeitskategorien können in Abnutzungsnivellieroperationen einbezogen werden.

Description

  • HINTERGRUND
  • Ein Halbleiterspeicher wird in verschiedenen elektronischen Geräten wie Mobiltelefonen, Digitalkameras, persönlichen digitalen Assistenten, medizinischer Elektronik, mobilen Computergeräten, nicht-mobilen Computergeräten und Datenservern verwendet. Halbleiterspeicher kann nichtflüchtigen Speicher, flüchtigen Speicher oder beides aufweisen. Ein nichtflüchtiger Speicher ermöglicht, dass Informationen gespeichert und behalten werden, selbst wenn der nichtflüchtige Speicher nicht mit einer Stromquelle (z. B. einer Batterie) verbunden ist. Beispiele für einen nichtflüchtigen Speicher schließen Flash-Speicher (z. B. Flash-Speicher vom NAND-Typ und NOR-Typ), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM) und andere ein.
  • Speichervorrichtungen weisen häufig Defekte auf, die im Rahmen des Fertigungsprozesses auftreten. Nach der Herstellung und vor dem Versenden an Verbraucher werden die Speicherchips üblicherweise einer Reihe von Tests unterzogen, um defekte Abschnitte der Schaltung, sowohl der Speicherzellen als auch peripherer Elemente, zu bestimmen. Wenn eine Vorrichtung zu viele Defekte aufweist, kann sie verworfen oder nur für weniger anspruchsvolle Anwendungen verwendet werden, während in anderen Fällen die defekten Abschnitte des Speicherchips markiert und vermieden werden können, wenn die Vorrichtung in Gebrauch ist. Zum Beispiel werden die Speicherzellen einer Vorrichtung oft in Blöcke unterteilt, und im Rahmen des Testprozesses kann ein Flagwert, wie in einem Sicherungs-ROM auf dem Speicherchip, für die defekten Speicherblöcke gesetzt werden, und dann werden diese Blöcke nicht verwendet, wenn die Vorrichtung in Betrieb ist.
  • Figurenliste
  • Gleich nummerierte Elemente beziehen sich auf gemeinsame Komponenten in den verschiedenen Figuren.
    • 1 ist ein Blockdiagramm einer Ausführungsform eines Speichersystems, das mit dem Host verbunden ist.
    • 2 ist ein Blockdiagramm einer Ausführungsform einer Front-End-Prozessorschaltung. In einigen Ausführungsformen ist die Front-End-Prozessorschaltung Teil einer Steuerung.
    • 3 ist ein Blockdiagramm einer Ausführungsform einer Back-End-Prozessorschaltung. In einigen Ausführungsformen ist die Back-End-Prozessorschaltung Teil einer Steuerung.
    • 4 ist ein Blockdiagramm einer Ausführungsform eines Speicherpakets.
    • 5 ist ein Blockdiagramm einer Ausführungsform eines Speicherchips.
    • 6A ist eine perspektivische Ansicht eines Abschnitts einer Ausführungsform einer monolithischen dreidimensionalen Speicherstruktur.
    • 6B ist ein Blockdiagramm einer Speicherstruktur mit zwei Ebenen.
    • 6C stellt eine Draufsicht auf einen Abschnitt eines Speicherzellenblocks dar.
    • 6D stellt eine Querschnittsansicht eines Abschnitts eines Speicherzellenblocks dar.
    • 6E stellt eine Ansicht der Auswahlgate-Schichten und Wortleitungsschichten dar.
    • 6F ist eine Querschnittsansicht einer vertikalen Speicherzellenspalte.
    • 6G ist eine schematische Darstellung einer Vielzahl von NAND-Ketten, die mehrere Unterblöcke aufweisen.
    • 7 veranschaulicht eine Ausführungsform für die Ergebnisse einer Chipsortiertestsequenz für die Blöcke eines nichtflüchtigen Speicherchips.
    • 8 ist eine Tabelle, die das Ergebnis einer Fail-Stop-Chipsortierung (Chipsortierung bezüglich Abschalten bei Ausfall) veranschaulicht.
    • 9 ist ein Ablaufdiagramm, das eine Ausführungsform eines Fail-Stop-Chipsortierprozesses beschreibt.
    • 10 ist eine Tabelle, die das Ergebnis einer Chipsortierung veranschaulicht, bei der Blöcke als für die nächste Chipsortierkategorie bestanden betrachtet werden, wenn sie entschärfte Kriterien erfüllen, das jedoch Fail Stop ist, wenn der Block in einer kritischen Ausfallkategorie ausfällt.
    • 11 veranschaulicht die Zunahme der Anzahl von Chips, die bei höherwertigen Gütegraden durch Verwendung des Bad-Block-Wiederherstellungsmechanismus (Mechanismus zur Wiederherstellung fehlerhafter Blöcke) verwendet werden können.
    • 12 ist ein Ablaufdiagramm für eine Beschreibung auf hoher Ebene einer Ausführungsform eines Prozesses für einen Chipsortierprozess, der eine Blockqualitätsklassifizierung einschließt.
    • 13 ist ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses für einen Chipsortierprozess beschreibt, der eine Blockqualitätsklassifizierung in einer detaillierteren Implementierung einschließt.
    • 14 ist ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses für eine Einschaltsequenz eines Speichersystems mit einem Chip mit Multi-Bit-Flagwerten für fehlerhafte Blöcke beschreibt.
    • 15 ist ein Ablaufdiagramm, das eine Ausführungsform eines Abnutzungsnivellierungsprozesses beschreibt, der die Blockqualitäts- oder Wiederherstellbarkeitsinformationen enthalten kann, die durch Verwendung von Mehrbitwerten für die Flags für fehlerhafte Blöcke bereitgestellt werden.
  • DETAILLIERTE BESCHREIBUNG
  • Vor der Verwendung werden nichtflüchtige Speicherchips in der Regel einer Sequenz von Tests unterzogen, um die Qualität der Blöcke von Speicherzellen auf dem Speicherchip zu bestimmen. Die Blöcke werden typischerweise in einwandfreie („good“) Blöcke mit wenigen oder keinen Defekten und fehlerhafte („bad“) Blöcke mit einer höheren Anzahl von Defekten gruppiert. Innerhalb der Gruppe von Blöcken, die in der Regel als fehlerhaft markiert worden wären, gibt es oft eine Anzahl von Blöcken, die zu einem unterschiedlichen Grad wiederherstellbar sind. Zum Beispiel kann ein Block zu viele Defekte aufweisen, um in Anwendungen mit langer Lebensdauer zur Verwendung zu kommen, kann jedoch wiederhergestellt werden zur Verwendung in Anwendungen, in denen der Block weniger Programmier-/Löschzyklen unterzogen würde.
  • In nachstehend dargestellten Ausführungsformen wird während des Testprozesses für einen Speicherchip, bevor der Chip vom Kunden in Gebrauch gebracht wird, der Speicherchip einer Sequenz von Tests unterzogen. Wenn ein Speicherchip einen Test nicht besteht, wird das Ergebnis aufgezeichnet, aber der Test wird fortgesetzt, um die übrigen Testoperationen abzuschließen, es sei denn, der nicht bestandene Test ist ein Test der kritischen Kategorie. Ergebnisse des Tests können dann auf dem Speicherchip aufgezeichnet werden, beispielsweise durch Schreiben in ein Sicherungs-ROM auf dem Speicherchip, als Multi-Bit-Flag für fehlerhafte Blöcke, das eine Wiederherstellbarkeitskategorie für jeden der Blöcke auf dem Speicherchip angibt. In einigen Ausführungsformen können diese Multi-Bit-Flags für fehlerhafte Blöcke verwendet werden, wenn Speicherchips ausgewählt werden, um sie zu Mehrchip-Speicherpaketen zusammenzufügen. Die Multi-Bit-Flags für fehlerhafte Blöcke können auch während des Betriebs eines Speichersystems verwendet werden, wobei die Speichersteuerung auf diese Multi-Bit-Flags für fehlerhafte Blöcke während des Einschaltens zugreifen und die Wiederherstellbarkeitskategorien der Blöcke während Speichersystemoperationen verwenden kann, wie zum Beispiel für die Auswahl von Blöcken, in die Daten im Rahmen von Abnutzungsausgleichsoperationen geschrieben werden.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Speichersystems 100, das mit einem Host 120 verbunden ist. Viele unterschiedliche Arten von Speichersystemen können mit der hierin vorgeschlagenen Technologie verwendet werden. Beispielspeichersysteme schließen Solid-State-Laufwerke („SSDs“), Speicherkarten und eingebettete Speichervorrichtungen ein; es können jedoch auch andere Arten von Speichersystemen verwendet werden.
  • Das Speichersystem 100 von 1 weist eine Steuerung 102, einen nichtflüchtigen Speicher 104 zum Speichern von Daten und einen lokalen Speicher (z. B. DRAM/ReRAM) 106 auf. Die Steuerung 102 weist eine Front-End-Prozessor (FEP) -Schaltung 110 und eine oder mehrere Back-End-Prozessor (BEP) -Schaltungen 112 auf. In einer Ausführungsform ist die FEP-Schaltung 110 auf einer anwendungsspezifischen integrierten Schaltung „ASIC“ implementiert. In einer Ausführungsform ist jede BEP-Schaltung 112 auf einem separaten ASIC implementiert. In anderen Ausführungsformen kann eine einheitliche ASIC-Steuerung sowohl die Front-End- als auch die Back-End-Funktionen kombinieren. Die ASICs für jede der BEP-Schaltungen 112 und die FEP-Schaltung 110 sind auf dem gleichen Halbleiter so implementiert, dass die Steuerung 102 als ein System auf einem Chip („SoC“) hergestellt wird. Die FEP-Schaltung 110 und die BEP-Schaltung 112 schließen beide ihre eigenen Prozessoren ein. In einer Ausführungsform arbeiten die FEP-Schaltung 110 und die BEP-Schaltung 112 als Master-Slave-Konfiguration, wobei die FEP-Schaltung 110 der Master ist und jede BEP-Schaltung 112 ein Slave ist. Beispielsweise implementiert die FEP-Schaltung 110 eine Flash-Übersetzungsschicht (FTL) oder eine Medienverwaltungsschicht (MML), die eine Speicherverwaltung (z. B. Speicherbereinigung, Abnutzungsnivellierung usw.), eine Übersetzung von logischen zu physikalischen Adressen, eine Kommunikation mit dem Host, eine Verwaltung von DRAM (lokaler flüchtiger Speicher) und eine Verwaltung des Gesamtbetriebs der SSD (oder eines anderen nichtflüchtigen Speicherungssystems) durchführt. Die BEP-Schaltung 112 verwaltet Speicheroperationen in den Speicherpaketen/-chip auf Anforderung der FEP-Schaltung 110. Zum Beispiel kann die BEP-Schaltung 112 die Lese -, Lösch- und Programmierprozesse ausführen. Zusätzlich kann die BEP-Schaltung 112 eine Pufferverwaltung durchführen, spezifische Spannungspegel einstellen, die von der FEP-Schaltung 110 benötigt werden, einen Fehlerkorrekturode (ECC) durchführen, die Toggle-Modus-Schnittstellen zu den Speicherpaketen steuern usw. In einer Ausführungsform ist jede BEP-Schaltung 112 für ihren eigenen Satz von Speicherpaketen verantwortlich.
  • In einer Ausführungsform weist der nichtflüchtige Speicher 104 eine Vielzahl von Speicherpaketen auf. Jedes Speicherpaket schließt einen oder mehrere Speicherchips ein. Daher ist die Steuerung 102 mit einem oder mehreren nichtflüchtigen Speicherchips verbunden. In einer Ausführungsform verwendet jeder Speicherchip in den Speicherpaketen 104 einen NAND-Flash-Speicher (einschließlich eines zweidimensionalen NAND-Flash-Speichers und/oder eines dreidimensionalen NAND-Flash-Speichers). In anderen Ausführungsformen kann das Speicherpaket andere Speichertypen einschließen.
  • Die Steuerung 102 kommuniziert mit dem Host 120 über eine Schnittstelle 130, die NVM-Express (NVMe) über PCI-Express (PCle) implementiert. Für die Zusammenarbeit mit dem Speichersystem 100 schließt der Host 120 einen Host-Prozessor 122, einen Host-Speicher 124 und eine PCIe-Schnittstelle 126 ein, die entlang dem Bus 128 angeschlossen ist. Der Hostspeicher 124 ist der physikalische Speicher des Hosts und kann ein DRAM, ein SRAM, ein nichtflüchtiger Speicher oder ein anderer Speicherungstyp sein. Host 120 ist extern und getrennt von dem Speichersystem 100. In einer Ausführungsform ist das Speichersystem 100 in den Host 120 eingebettet.
  • 2 ist ein Blockdiagramm einer Ausführungsform der FEP-Schaltung 110. 2 zeigt eine PCIe-Schnittstelle 150 zum Kommunizieren mit dem Host 120 und einen Hostprozessor 152 in Kommunikation mit dieser PCIe-Schnittstelle. Der Hostprozessor 152 kann jeder in der Technik bekannte Prozessortyp sein, der für die Implementierung geeignet ist. Der Hostprozessor 152 kommuniziert mit einem Network-On-Chip (NOC) 154. Ein NOC ist ein Kommunikationssubsystem auf einer integrierten Schaltung, in der Regel zwischen Kernen in einem SoC. NOCs können synchrone und asynchrone Taktdomänen umspannen oder eine ungetaktete asynchrone Logik verwenden. Die NOC-Technologie wendet Netzwerktheorie und -verfahren auf On-Chip-Kommunikationen an und liefert beträchtliche Verbesserungen gegenüber herkömmlichen Bus- und Crossbar-Verbindungen. NOC verbessert die Skalierbarkeit von SoCs und die Leistungseffizienz komplexer SoCs im Vergleich zu anderen Designs. Die Drähte und die Verbindungen des NOC werden von vielen Signalen gemeinsam genutzt. Eine hohe Parallelität wird erreicht, da alle Verbindungen in dem NOC gleichzeitig an unterschiedlichen Datenpaketen arbeiten können. Daher stellt ein NOC, wenn die Komplexität integrierter Subsysteme wächst, eine verbesserte Leistung (wie Durchsatz) und Skalierbarkeit im Vergleich zu früheren Kommunikationsarchitekturen (z. B. dedizierten Punkt-zu-Punkt-Signaldrähten, gemeinsam genutzten Bussen oder segmentierten Bussen mit Brücken) bereit. Verbunden mit und in Kommunikation mit NOC 154 ist der Speicherprozessor 156, SRAM 160 und eine DRAM-Steuerung 162. Die DRAM-Steuerung 162 wird verwendet, um mit dem DRAM (z. B. DRAM 106) zu arbeiten und damit zu kommunizieren. SRAM 160 ist ein lokaler RAM-Speicher, der von dem Speicherprozessor 156 verwendet wird. Der Speicherprozessor 156 wird verwendet, um die FEP-Schaltung zu betreiben und die verschiedenen Speichervorgänge auszuführen. In Kommunikation mit dem NOC stehen auch zwei PCIe-Schnittstellen 164 und 166. In der Ausführungsform von 2 schließt die SSD-Steuerung zwei BEP-Schaltungen 112 ein; daher gibt es zwei PCIe-Schnittstellen 164/166. Jede PCIe-Schnittstelle kommuniziert mit einer der BEP-Schaltungen 112. In anderen Ausführungsformen können mehr oder weniger als zwei BEP-Schaltungen 112 vorhanden sein; daher kann es mehr als zwei PCIe-Schnittstellen geben.
  • Die FEP-Schaltung 110 kann auch eine Flash Translation-Layer (FTL) oder, allgemeiner, eine Medienverwaltungsschicht (MML) 158 einschließen, die eine Speicherverwaltung (z. B. Speicherbereinigung, Abnutzungsnivellierung, Lastausgleich usw.), eine Umwandlung von logischen zu physikalischen Adressen, eine Kommunikation mit dem Host, eine Verwaltung von DRAM (lokaler flüchtiger Speicher) und eine Verwaltung des Gesamtbetriebs der SSD oder eines anderen nichtflüchtigen Speicherungssystems durchführt. Die Medienverwaltungsschicht MML 158 kann als Teil der Speicherverwaltung integriert sein, die Speicherfehler behandeln und mit dem Host interagieren kann. Insbesondere kann MML ein Modul in der FEP-Schaltung 110 sein und für die Interna der Speicherverwaltung verantwortlich sein. Insbesondere kann die MML 158 einen Algorithmus in der Firmware der Speichervorrichtung einschließen, der Schreibvorgänge vom Host in Schreibvorgänge in die Speicherstruktur (z.B. 326 von 5 weiter unten) eines Chips umwandelt. MML 158 kann erforderlich sein, weil: 1) der Speicher eine begrenzte Dauer haben kann; 2) die Speicherstruktur nur in Vielfachen von Seiten beschrieben werden kann; und/oder 3) die Speicherstruktur nicht beschrieben werden kann, falls sie nicht als Block gelöscht wird. Die MML 158 versteht diese potentiellen Einschränkungen der Speicherstruktur, die für den Host möglicherweise nicht sichtbar sind. Dementsprechend versucht die MML 158, die Schreibvorgänge vom Host in Schreibvorgänge in die Speicherstruktur zu übersetzen.
  • 3 ist ein Blockdiagramm einer Ausführungsform einer BEP-Schaltung 112. 3 zeigt eine PCle Schnittstelle 200 zum Kommunizieren mit der FEP-Schaltung 110 (z.B., in Verbindung mit einer der PCIe-Schnittstellen 164 und 166 von 2). Die PCIe-Schnittstelle 200 ist zum Kommunizieren mit den zwei NOCs, 202 und 204. In einer Ausführungsform können die beiden NOCs in ein großes NOC kombiniert werden. Jeder NOC (202/204) ist über eine XOR-Engine (224/254) und eine ECC-Engine (226/256) mit dem SRAM (230/260), einem Puffer (232/262), einem Prozessor (220/250) und einer Datenpfadsteuerung (222/252) verbunden. Die ECC-Maschinen 226/256 werden verwendet, um eine Fehlerkorrektur durchzuführen, wie in der Technik bekannt ist. Die XOR-Maschinen 224/254 werden zum XOR der Daten verwendet, sodass Daten auf eine Art und Weise kombiniert und gespeichert werden können, die im Falle eines Programmierfehlers wiederhergestellt werden können. Die Datenpfadsteuerung 222 ist mit einem Schnittstellenmodul verbunden, um über vier Kanäle mit Speicherpaketen zu kommunizieren. Somit ist der obere NOC 202 einer Schnittstelle 228 für vier Kanäle zur Kommunikation mit Speicherpaketen zugeordnet, und der untere NOC 204 ist einer Schnittstelle 258 für vier zusätzliche Kanäle zur Kommunikation mit Speicherpaketen zugeordnet. Jede Schnittstelle 228/258 enthält vier Toggle-Mode-Schnittstellen (TM-Schnittstelle), vier Puffer und vier Scheduler. Für jeden Kanal gibt es einen Scheduler, einen Puffer und eine TM-Schnittstelle. Der Prozessor kann irgendein Standardprozessor sein, der in der Technik bekannt ist. Die Datenpfadsteuerungen 222/252 können ein Prozessor, ein FPGA, ein Mikroprozessor oder eine andere Art von Steuerung sein. Das XOR-Engines 224/254 und ECC-Engines 226/256 sind dedizierte Hardware-Schaltungen, bekannt als Hardware-Beschleuniger. In anderen Ausführungsformen können die XOR-Engines 224/254 und ECC-Engines 226/256 in Software implementiert sein. Die Scheduler, Puffer und TM-Schnittstellen sind Hardwareschaltungen.
  • 4 ist ein Blockdiagramm einer Ausführungsform eines Speicherpakets 104, das eine Vielzahl von Speicherchips 292 einschließt, die mit einem Speicherbus 294 (Datenleitungen und Chipfreigabeleitungen) verbunden sind. Der Speicherbus 294 ist mit einer Toggle-Mode-Schnittstelle 296 zur Kommunikation mit der TM-Schnittstelle einer BEP-Schaltung 112 (siehe z. B. 3) verbunden. In einigen Ausführungsformen kann das Speicherpaket eine kleine Steuerung einschließen, die mit dem Speicherbus und der TM-Schnittstelle verbunden ist. Das Speicherpaket kann einen oder mehrere Speicherchips aufweisen. In einer Ausführungsform schließt jedes Speicherpaket acht oder 16 Speicherchips ein; andere Anzahlen von Speicherchips können jedoch ebenfalls implementiert werden. Die hierin beschriebene Technologie ist nicht auf eine spezifische Anzahl von Speicherchips beschränkt.
  • 5 ist ein Funktionsblockdiagramm einer Ausführungsform eines Speicherchips 300. Die in 5 dargestellten Komponenten sind elektrische Schaltungen. In einer Ausführungsform schließt jedes Speicher-Die 300 eine Speicherstruktur 326, eine Steuerschaltungsanordnung 310 und Lese-/Schreibschaltungen 328 ein. Die Speicherstruktur 126 ist durch Wortleitungen über einen Zeilendecoder 324 und durch Bitleitungen über einen Spaltendecoder 332 adressierbar. Die Lese-/Schreibschaltungen 328 schließen mehrere Leseblöcke 350 einschließlich SB1, SB2, ..., SBp (Messschaltung) ein und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Befehle und Daten werden zwischen der Steuerung und dem Speicherchip 300 über Leitungen 318 übertragen. In einer Ausführungsform schließt der Speicherchip 300 einen Satz von Eingangs- und/oder Ausgangs (E/A)-Stiften ein, die mit den Leitungen 318 verbunden sind.
  • Die Steuerschaltungsanordnung 310 arbeitet mit den Lese-/Schreibschaltungen 328 zusammen, um Speicheroperationen (z. B. Schreiben, Lesen und andere) auf der Speicherstruktur 326 auszuführen, und schließt eine Zustandsmaschine 312, einen chipinternen Adressdecoder 314, eine Leistungssteuerungsschaltung 316 ein. Die Zustandsmaschine 312 stellt eine Steuerung auf Chip-Ebene von Speichervorgängen bereit. In einer Ausführungsform ist die Zustandsmaschine 312 durch Software programmierbar. In anderen Ausführungsformen verwendet die Zustandsmaschine 312 keine Software und ist vollständig in Hardware (z. B. elektrischen Schaltungen) implementiert. In einer anderen Ausführungsform wird die Zustandsmaschine 312 durch einen Mikrocontroller ersetzt. In einer Ausführungsform schließt die Steuerschaltungsanordnung 310 Puffer wie Register, ROM 320 (z. B. eine ROM-Sicherung) und andere Speicherung zur Speicherung von Standardwerten wie Basisspannungen und anderen Parametern ein.
  • Der On-Chip-Adressdecodierer 314 stellt eine Adressschnittstelle zwischen Adressen, die von einer Steuerung 102 verwendet werden, zu der von den Decodierern 324 und 332 verwendeten Hardwareadresse bereit. Das Leistungssteuermodul 316 steuert die Leistung und Spannungen, mit denen die Wortleitungen und Bitleitungen bei Speichervorgängen versorgt werden. Das Leistungssteuermodul 316 kann Ladungspumpen zum Erzeugen von Spannungen einschließen. Die Abtastblöcke schließen Bitleitungstreiber ein.
  • Das ROM 320 kann verwendet werden, um verschiedene Vorrichtungsparameter zu speichern, die von der On-Chip-Steuerschaltungsanordnung 310 und der Speichersteuerung 102 für den Betrieb des Speicherchips 300 verwendet werden können. Ein Beispiel für Parameter ist ein Satz von Flags für fehlerhafte Blöcke (BBK), die verwendet werden können, um anzugeben, ob die einzelnen Blöcke eines Arrays der Speicherstruktur 326 defekt sind und nicht verwendet werden sollten, oder ihre Verwendung eingeschränkt werden sollte. Wie nachstehend ausführlicher erörtert, können diese Flagwerte im Rahmen eines anfänglichen Testprozesses, oder einer Chipsortierung, bestimmt und als Sicherungswerte in dem ROM 320 gesetzt werden. Je nach Ausführungsform könnte dies ein einzelnes Flag pro Block sein, um defekte Blöcke anzugeben, die nicht verwendet werden sollten, oder ein Multi-Bit-Flagwert, der einen defekten Typ eines Blocks angibt, wie die Kategorie oder den Defektgrad innerhalb des entsprechenden Blocks und den Grad, in dem er wiederhergestellt werden kann. Im Rahmen einer Einschaltsequenz können diese Flags für fehlerhafte Blöcke von der On-Chip-Steuerschaltungsanordnung 310 ausgelesen und an die Steuerung 102 übertragen werden, wo sie zum Beispiel verwendet werden können, wenn physischen Blöcken des Arrays oder der Speicherstruktur 326 logische Blöcke zugewiesen werden oder Abnutzungsnivellierungsoperationen durchgeführt werden. In einigen Ausführungsformen könnten die Multi-Bit-Flagwerte verwendet werden, um die Programmier-/Lösch-Zählwerte (P/E-Zählwerte) oder andere Faktoren zu gewichten, die bei der Auswahl von Blöcken verwendet werden, sodass, wenn die Flags angeben, dass ein Block eine kürzere erwartete Lebensdauer aufweist, sein P/E-Zählwert auf einen höheren Wert gewichtet werden würde, um dies zu berücksichtigen.
  • Für die Zwecke dieses Dokuments kann sich der Begriff „eine oder mehrere Steuerschaltungen“ auf die Steuerung 102 und/oder die On-Chip-Steuerschaltungsanordnung, wie eine Steuerung, eine Zustandsmaschine, einen Mikrocontroller und/oder die Steuerschaltungsanordnung 310, oder andere analoge Schaltungen, die verwendet werden, um nichtflüchtigen Speicher zu steuern, beziehen.
  • In einer Ausführungsform weist die Speicherstruktur 326 ein dreidimensionales Array von nichtflüchtigen Speicherzellen auf, auf denen mehrere Speicherstufen über einem einzigen Substrat, wie einem Wafer, ausgebildet sind. Die Speicherstruktur 326 kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Speicherzellen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Silizium-(oder anderen Typ von) Substrat angeordnet ist. In einem Beispiel schließen die nichtflüchtigen Speicherzellen vertikale NAND-Ketten mit ladungseinfangendem Material ein, wie es zum Beispiel im US-Patent 9,721,662 beschrieben ist, auf das hier in seiner Gesamtheit Bezug genommen wird.
  • In einer anderen Ausführungsform weist die Speicherstruktur 326 ein zweidimensionales Speicherarray von nichtflüchtigen Speicherzellen auf. In einem Beispiel, sind die nichtflüchtigen Speicherzellen NAND-Flash-Speicherzellen unter Verwendung von Floating-Gates wie beschrieben, zum Beispiel, im U.S. Patentschrift 9,082,502 , das hierin durch Bezugnahme in seiner Gesamtheit aufgenommen ist. Andere Arten von Speicherzellen (z. B. NOR-Typ-Flashspeicher) können ebenfalls verwendet werden.
  • Die exakte Art der Speicher-Array-Architektur oder der Speicherzelle, die in der Speicherstruktur 326 eingeschlossen ist, ist nicht auf die obigen Beispiele beschränkt. Viele unterschiedliche Arten von Speicher-Array-Architekturen oder Speichertechnologien können verwendet werden, um die Speicherstruktur 326 zu bilden. Für die Zwecke der hier beschriebenen Ausführungsformen ist keine besondere nichtflüchtige Speichertechnologie erforderlich. Andere Beispiele geeigneter Technologien für Speicherzellen der Speicherstruktur 326 schließen ReRAM-Speicher (resistive Direktzugriffsspeicher), magnetoresistive Speicher (z. B. MRAM, Spin-Transfer-Torque-MRAM, Spin-Orbit-Torque-MRAM), Phasenänderungsspeicher (z. B. PCM) und dergleichen ein. Beispiele von geeigneten Technologien für die Speicherzellen-Architekturen der Speicherstruktur 126 schließen zweidimensionale Arrays, dreidimensionale Arrays, Kreuzpunkt-Arrays, gestapelte zweidimensionale Arrays, vertikale Bitleitungs-Arrays und dergleichen ein.
  • Ein großer Teil der folgenden Erörterung betrifft Unterteilungen oder Blöcke des Speicherarrays oder der -Struktur 326, die Bestimmung und Aufzeichnung bestimmter Defekte innerhalb dieser Blöcke und die Verwendung dieser Informationen während des Betriebs des Speichers. Um ein konkretes Beispiel bereitzustellen, wird die folgende Erörterung weitgehend im Kontext einer dreidimensionalen NAND-Ausführungsform dargestellt und es wird angenommen, dass die Blöcke den Löschblöcken der NAND-Flash-Struktur entsprechen; es versteht sich jedoch, dass die Techniken ohne weiteres auf andere Speichertechnologien und andere Array-Unterteilungen ausgedehnt werden können, obwohl die Einzelheiten der Defekttypen von einer Speichertechnologie zur anderen variieren.
  • 6A ist eine perspektivische Ansicht eines Abschnitts eines Ausführungsbeispiels eines monolithischen dreidimensionalen (3D) Speicherarrays, das der Speicherstruktur 326 entsprechen kann, die eine Vielzahl von nichtflüchtigen Speicherzellen einschließt. Zum Beispiel zeigt 6A einen Abschnitt eines Speicherblocks. Die dargestellte Struktur schließt einen Satz von Bitleitungen BL ein, die über einem Stapel von alternierenden dielektrischen Schichten und leitenden Schichten positioniert sind. Als Beispiel wird eine der dielektrischen Schichten als D und eine der leitenden Schichten (auch als Wortleitungsschichten bezeichnet) wird als W markiert. Die Anzahl der alternierenden dielektrischen Schichten und der leitenden Schichten kann basierend auf spezifischen Implementierungsanforderungen variieren. Ein Satz von Ausführungsformen schließt zwischen 108 und 300 alternierende dielektrische Schichten und leitende Schichten ein. Eine beispielhafte Ausführungsform schließt 96 Datenwortleitungsschichten, 8 Auswahlschichten, 6 Dummy-Wortleitungsschichten und 110 dielektrische Schichten ein. Mehr oder weniger als 108 bis 300 Schichten können ebenfalls verwendet werden. Wie nachfolgend erläutert, sind die alternierenden dielektrischen Schichten und leitenden Schichten durch lokale Verbindungen LI in vier „Finger“ unterteilt. 6A zeigt zwei Finger und zwei lokale Zwischenverbindungen LI. Unterhalb der alternierenden dielektrischen Schichten und Wortleitungsschichten befindet sich eine Source-Leitungsschicht SL. In dem Stapel alternierender dielektrischer Schichten und leitender Schichten sind Speicherlöcher ausgebildet. Zum Beispiel ist eins der Speicherlöcher als MH markiert. Es ist zu beachten, dass in 6A die dielektrischen Schichten durchsichtig dargestellt sind, so dass der Leser die Speicherlöcher sehen kann, die in dem Stapel von alternierenden dielektrischen Schichten und leitenden Schichten positioniert sind. In einer Ausführungsform werden NAND-Ketten gebildet, indem das Speicherloch mit Materialien gefüllt wird, die ein Ladungsfängermaterial einschließen, um eine vertikale Spalte von Speicherzellen zu erzeugen. Jede Speicherzelle kann eines oder mehrere Datenbits speichern. Mehr Details des dreidimensionalen monolithischen Speicherarrays, das die Speicherstruktur 326 aufweist, werden nachstehend in Bezug auf 6B-6H bereitgestellt.
  • 6B ist ein Blockdiagramm zur Erläuterung einer beispielhaften Organisation der Speicherstruktur 326, die in zwei Ebenen 602 und 604 unterteilt ist. Jede Ebene wird dann in M Blöcke unterteilt. In einem Beispiel hat jede Ebene etwa 2000 Blöcke. Doch es können auch andere Anzahlen von Blöcken und Ebenen verwendet werden. In einer Ausführungsform ist ein Speicherzellenblock eine Einheit zum Löschen. D. h. alle Speicherzellen eines Blocks werden zusammen gelöscht. In anderen Ausführungsformen können Speicherzellen aus anderen Gründen in Blöcken gruppiert werden, wie etwa zum Organisieren der Speicherstruktur 326 für die Signalisierungs- und Auswahlschaltungen. In einigen Ausführungsformen stellt ein Block eine Gruppe von verbundenen Speicherzellen dar, da die Speicherzellen eines Blocks einen Satz von Wortleitungen gemeinsam nutzen. Die Speicherblöcke können verwendet werden, um sowohl Benutzerdaten zu speichern, die von einem Host 120 empfangen werden, als auch Systemdaten zu speichern, wie Betriebsparameter und andere Daten, die der Speicherchip 300 oder die Steuerung 102 zum Betreiben des Speichersystems 100 verwenden kann. Zum Beispiel wird, wie in 6B gezeigt, der Block 0 620 der Ebene 602 zum Speichern von Systemdaten verwendet, wie die Flags für fehlerhafte Blöcke BBK, die nachstehend ausführlicher erörtert werden. Der Systemdatenblock 620 ist hier in Block 0 gezeigt, kann sich jedoch in anderen Blöcken befinden, und sein Inhalt kann ähnlich dem ROM 320 verwendet werden, entweder anstelle des oder in Verbindung mit dem ROM 320.
  • Die 6C-6H stellen ein Beispiel einer dreidimensionalen („3D“) NAND-Struktur dar, die der Struktur von 6A entspricht und verwendet werden kann, um die Speicherstruktur 326 von 5 zu implementieren. 6C ist ein Blockdiagramm zur Darstellung einer Draufsicht auf einen Abschnitt eines Blocks der Speicherstruktur 326. Der Abschnitt des Blocks, der in 6C dargestellt ist, entspricht Abschnitt 606 in Block 2 aus 6B. Wie aus 6C ersichtlich, verläuft der in 6C dargestellte Block in der Richtung des Pfeils 632. In einer Ausführungsform hat das Speicherarray viele Schichten; Jedoch zeigt 6C nur die obere Schicht.
  • 6C stellt eine Vielzahl von Kreisen dar, die für die vertikalen Spalten stehen. Jede der vertikalen Spalten schließt mehrere Auswahltransistoren (auch als Auswahlgate bezeichnet) und mehrere Speicherzellen ein. In einer Ausführungsform implementiert jede vertikale Spalte eine NAND-Kette. Zum Beispiel stellt 6C die vertikalen Spalten 422, 432, 442 und 452 dar. Die vertikale Spalte 422 implementiert die NAND-Kette 482. Die vertikale Spalte 432 implementiert die NAND-Kette 484. Die vertikale Spalte 442 implementiert die NAND-Kette 486. Die vertikale Spalte 452 implementiert die NAND-Kette 488. Mehr Details der vertikalen Spalten werden nachstehend bereitgestellt. Da der in 6C dargestellte Block in Richtung des Pfeils 632 verläuft, enthält der Block mehr vertikale Spalten als in 6C dargestellt.
  • 6C stellt auch einen Satz Bitleitungen 415 einschließlich der Bitleitungen 411, 412, 413, 414, ... 419 dar. 6C zeigt vierundzwanzig Bitleitungen, da nur ein Abschnitt des Blocks dargestellt ist. Es wird in Betracht gezogen, dass mehr als vierundzwanzig Bitleitungen mit vertikalen Spalten des Blocks verbunden sind. Jeder der Kreise, die vertikale Spalten darstellen, hat ein „x“ zur Angabe seiner Verbindung mit jeweils einer Bitleitung. Zum Beispiel ist die Bitleitung 414 mit den vertikalen Spalten 422, 432, 442 und 452 verbunden.
  • Der in 6C dargestellte Block schließt einen Satz lokaler Verbindungen 402, 404, 406, 408 und 410 ein, die die verschiedenen Schichten mit einer Sourceleitung unterhalb der vertikalen Spalten verbinden. Die lokalen Verbindungen 402, 404, 406, 408 und 410 dienen auch zur Unterteilung jeder Schicht des Blocks in vier Bereiche; zum Beispiel ist die in 6C dargestellte obere Schicht in die Bereiche 420, 430, 440 und 450 unterteilt, die als Finger bezeichnet werden. In den Schichten des Blocks, die Speicherzellen implementieren, werden die vier Bereiche als Wortleitungsfinger bezeichnet, die durch die lokalen Verbindungen getrennt sind. In einer Ausführungsform sind die Wortleitungsfinger auf einer gemeinsamen Ebene eines Blocks miteinander verbunden, um eine einzelne Wortleitung zu bilden. In einer anderen Ausführungsform sind die Wortleitungsfinger auf derselben Ebene nicht miteinander verbunden. In einer beispielhaften Implementierung ist eine Bitleitung mit nur einer vertikalen Spalte in jedem der Bereiche 420, 430, 440 und 450 verbunden. In dieser Implementierung hat jeder Block sechzehn Reihen aktiver Spalten und ist jede Bitleitung mit vier Reihen in jedem Block verbunden. In einer Ausführungsform sind alle vier Reihen, die mit einer gemeinsamen Bitleitung verbunden sind, mit derselben Wortleitung verbunden (über verschiedene Wortleitungsfinger auf derselben Ebene, die miteinander verbunden sind); daher verwendet das System die sourceseitigen Auswahlleitungen und die drainseitigen Auswahlleitungen, um einen (oder eine andere Untermenge) der vier zu wählen, die einer Speicheroperation (Programmieren, Prüfen, Lesen und/oder Löschen) unterzogen werden sollen.
  • Obwohl 6C jeden Bereich mit vier Reihen vertikaler Spalten, vier Bereichen und sechzehn Reihen vertikaler Spalten in einem Block darstellt, sind diese genauen Zahlen eine beispielhafte Implementierung. Andere Ausführungsformen können mehr oder weniger Bereiche pro Block, mehr oder weniger Reihen vertikaler Spalten pro Bereich und mehr oder weniger Reihen vertikaler Spalten pro Block einschließen.
  • 6C zeigt auch, dass die vertikalen Spalten gestaffelt sind. In anderen Ausführungsformen können verschiedene Staffelungsmuster verwendet werden. In einigen Ausführungsformen sind die vertikalen Spalten nicht gestaffelt.
  • 6D stellt einen Abschnitt einer Ausführungsform einer dreidimensionalen Speicherstruktur 326 dar, die eine Querschnittsansicht zeigt. Diese Querschnittsansicht schneidet durch die vertikalen Spalten 432 und 434 und einen Bereich 430 (siehe 6C). Die Struktur von 6D enthält vier Drain-seitige Auswahlschichten SGD0, SGD1, SGD2 und SGD3; vier sourceseitige Auswahlschichten SGS0, SGS1, SGS2 und SGS3; sechs Dummy-Wortleitungsschichten DD0, DD1, DS0, DS1, WLDL, WLDU; und sechsundneunzig Datenwortleitungsschichten WLL0-WLL95 zum Verbinden mit Datenspeicherzellen. Andere Ausführungsformen können mehr oder weniger als vier drain-seitige Auswahlschichten, mehr oder weniger als vier source-seitige Auswahlschichten, mehr oder weniger als sechs Dummy-Wortleitungsschichten und mehr oder weniger als sechsundneunzig Wortleitungen implementieren. Vertikale Spalten 432 und 434 sind als durch die Drain-seitigen Auswahlschichten, Source-seitigen Auswahlschichten, Dummy-Wortleitungsschichten und Wortleitungsschichten hervorstehend dargestellt. In einer Ausführungsform weist jede vertikale Spalte eine vertikale NAND-Kette auf. Zum Beispiel weist die vertikale Spalte 432 die NAND-Kette 484 auf. Unterhalb der vertikalen Spalten und der nachstehend aufgelisteten Schichten befinden sich ein Substrat, eine Isolationsfolie 454 auf dem Substrat und eine Sourceleitung SL. Die NAND-Kette der vertikalen Spalte 432 hat ein Source-Ende an einer Unterseite des Stapels und ein Drain-Ende an einer Oberseite des Stapels. Wie in Übereinstimmung mit 6C zeigt 6D die vertikale Spalte 432, die mit der Bitleitung 414 über den Verbinder 491 verbunden ist. Lokale Verbindungen 404 und 406 sind ebenfalls dargestellt.
  • Zur leichteren Bezugnahme werden vier Drain-seitige Auswahlschichten SGD0, SGD1, SGD2 und SGD3; vier Source-seitige Auswahlschichten SGS0, SGS1, SGS2 und SGS3; Dummy-Wortleitungsschichten DD0, DD1, DS0, DS1, WLDL und WLDU; und Wortleitungsschichten WLL0-WLL95 zusammen als die leitenden Schichten bezeichnet. In einer Ausführungsform sind die leitenden Schichten aus einer Kombination von TiN und Wolfram hergestellt. In anderen Ausführungsformen können andere Materialien zur Bildung der leitenden Schichten verwendet werden, wie etwa dotiertes Polysilicium, Metall wie Wolfram oder Metallsilizid. In einigen Ausführungsformen können verschiedene leitende Schichten aus unterschiedlichen Materialien gebildet werden. Zwischen leitenden Schichten befinden sich dielektrische Schichten DL0-DL111. Beispielsweise befinden sich dielektrische Schichten DL104 über einer Wortleitungsschicht WLL94 und unter einer Wortleitungsschicht WLL95. In einer Ausführungsform sind die dielektrischen Schichten aus SiO2 hergestellt. In anderen Ausführungsformen können andere dielektrische Materialien verwendet werden, um die dielektrischen Schichten zu bilden.
  • Die nichtflüchtigen Speicherzellen sind entlang vertikaler Spalten ausgebildet, die durch alternierende leitende und dielektrische Schichten im Stapel verlaufen. In einer Ausführungsform sind die Speicherzellen in NAN D-Ketten angeordnet. Die Wortleitungsschichten WLL0-WLL95 sind mit Speicherzellen (auch Datenspeicherzellen genannt) verbunden. Dummy-Wortleitungsschichten DD0, DD1, DS0, DS1, WLDL und WLDU sind mit Dummy-Speicherzellen verbunden. Eine Dummy-Speicherzelle speichert keine Host-Daten (Daten, die von dem Host bereitgestellt werden, wie Daten von einem Benutzer des Hosts) und ist nicht dazu geeignet, sie zu speichern, während eine Datenspeicherzelle dazu geeignet ist, Host-Daten zu speichern. In einigen Ausführungsformen können Datenspeicherzellen und Dummy-Speicherzellen die gleiche Struktur aufweisen. Eine Dummy-Wortleitung ist mit Dummy-Speicherzellen verbunden. Drain-seitige Auswahlschichten SGD0, SGD1, SGD2 und SGD3 werden zum elektrischen Verbinden und Trennen von NAND-Ketten von Bitleitungen verwendet. Source-seitige Auswahlschichten SGS0, SGS1, SGS2 und SGS3 werden zum elektrischen Verbinden und Trennen von NAND-Ketten von der Sourceleitung SL verwendet.
  • 6D zeigt auch einen Stoßbereich. In einer Ausführungsform ist es teuer und/oder schwierig, sechsundneunzig Wortleitungsschichten zu ätzen, die mit dielektrischen Schichten vermischt sind. Zur Erleichterung dieser Belastung schließt eine Ausführungsform das Ablegen eines ersten Stapels von achtundvierzig Wortleitungsschichten, die sich mit dielektrischen Schichten abwechseln, das Ablegen des Stoßbereichs und das Ablegen eines zweiten Stapels von achtundvierzig Wortleitungsschichten, die sich mit dielektrischen Schichten abwechseln, ein. Der Stoßbereich ist zwischen dem ersten Stapel und dem zweiten Stapel positioniert. Der Stoßbereich wird dazu verwendet, um den ersten Stapel mit dem zweiten Stapel zu verbinden. In 6D wird der erste Stapel als „Unterer Satz von Wortleitungen“ und der zweite Stapel als „Oberer Satz von Wortleitungen“ bezeichnet. In einer Ausführungsform besteht der Stoßbereich aus den gleichen Materialien wie die Wortleitungsschichten. In einem beispielhaften Satz von Ausführungsformen besteht die Vielzahl von Wortleitungen (Steuerleitungen) aus einem ersten Stapel von abwechselnden Wortleitungsschichten und dielektrischen Schichten, einem zweiten Stapel von abwechselnden Wortleitungsschichten und dielektrischen Schichten und einem Stoßbereich zwischen dem ersten Stapel und dem zweiten Stapel, wie in 6D dargestellt.
  • 6E stellt eine logische Darstellung der leitenden Schichten (SGDL0, SGDL1, SGDL2, SGDL3, SGSL0, SGSL1, SGSL2, SGSL3, DDL0, DDL1, DSL0, DSL1 und WLLL0-WLLL95) für den Block dar, der teilweise in 6D dargestellt ist. Wie oben in Bezug auf 4B erwähnt, werden bei den lokalen Zwischenverbindungen 402, 404, 406, 408 und 410 in einer Ausführungsform die leitenden Schichten in vier Bereiche/Finger (oder Unterblöcke) aufgeteilt. Zum Beispiel ist die Wortleitungsschicht WLL94 in Bereiche 460, 462, 464 und 466 unterteilt. Für Wortleitungsschichten (WLL0-WLL127) werden die Bereiche als Wortleitungsfinger bezeichnet; beispielsweise ist die Wortleitungsschicht WLL126 in Wortleitungsfinger 460, 462, 464 und 466 unterteilt. Zum Beispiel ist der Bereich 460 ein Wortleitungsfinger auf einer Wortleitungsschicht. In einer Ausführungsform sind die vier Wortleitungsfinger auf derselben Ebene miteinander verbunden. In einer anderen Ausführungsform arbeitet jeder Wortleitungsfinger als separate Wortleitung.
  • Die drain-seitige Auswahlgateschicht SGDL0 (oberste Schicht) ist ebenfalls in die Bereiche 420, 430, 440 und 450 unterteilt, die auch als Finger oder Auswahlleitungsfinger bekannt sind. In einer Ausführungsform sind die vier Auswahlleitungsfinger auf derselben Ebene miteinander verbunden. In einer anderen Ausführungsform arbeitet jeder Wortleitungsfinger als separate Wortleitung.
  • 6F stellt eine Querschnittsansicht des Bereichs 429 aus 6D dar, der einen Abschnitt der vertikalen Spalte 432 (Speicherloch) einschließt. In einer Ausführungsform sind die vertikalen Spalten rund; in anderen Ausführungsformen können jedoch andere Formen verwendet werden. In einer Ausführungsform schließt die vertikale Säule 432 eine innere Kernschicht 470 ein, die aus einem Dielektrikum, wie SiO2, hergestellt ist. Andere dielektrische Materialien können ebenfalls verwendet werden. Der umgebende innere Kern 470 ist ein Polysiliziumkanal 471. Es können auch andere Materialien als Polysilicium verwendet werden. Es ist zu beachten, dass es der Kanal 471 ist, der mit der Bitleitung und der Source-Leitung verbunden ist. Der umgebende Kanal 471 ist ein Tunneldielektrikum 472. In einer Ausführungsform hat das Tunneldielektrikum 472 eine ONO-Struktur. Das umgebende Tunneldielektrikum 472 ist eine Ladungsfängerschicht 473, wie (zum Beispiel) Siliziumnitrid. Andere Speichermaterialien und Strukturen können ebenfalls verwendet werden. Die hierin beschriebene Technologie ist nicht auf ein spezifisches Material oder eine spezifische Struktur beschränkt.
  • 6F stellt dielektrische Schichten DLL105, DLL104, DLL103, DLL102 und DLL101 sowie Wortleitungsschichten WLL95, WLL94, WLL93, WLL92 und WLL91 dar. Jede der Wortleitungsschichten schließt einen Wortleitungsbereich 476 ein, der von einer Aluminiumoxidschicht 477 umgeben ist, die von einer Blockieroxidschicht 478 (SiO2) umgeben ist. Die physikalische Wechselwirkung der Wortleitungsschichten mit der vertikalen Spalte bildet die Speicherzellen. Somit weist eine Speicherzelle in einer Ausführungsform Kanal 471, Tunneldielektrikum 472, Ladungsfängerschicht 473, Blockieroxidschicht 478, Aluminiumoxidschicht 477 und Wortleitungsbereich 476 auf. Beispielsweise weisen die Wortleitungsschicht WLL95 und ein Abschnitt der vertikalen Spalte 432 eine Speicherzelle MC1 auf. Die Wortleitungsschicht WLL94 und ein Abschnitt der vertikalen Spalte 432 weisen eine Speicherzelle MC2 auf. Die Wortleitungsschicht WLL93 und ein Abschnitt der vertikalen Spalte 432 weisen eine Speicherzelle MC3 auf. Die WortleitungsschichtWLL92 und ein Abschnitt der vertikalen Spalte 432 weisen eine Speicherzelle MC4 auf. Die Wortleitungsschicht WLL91 und ein Abschnitt der vertikalen Spalte 432 weisen eine Speicherzelle MC5 auf. In anderen Architekturen kann eine Speicherzelle eine andere Struktur haben; die Speicherzelle wäre jedoch immer noch die Speicherungseinheit.
  • Wenn eine Speicherzelle programmiert wird, werden Elektronen in einem Teil der Ladungsfängerschicht 473 gespeichert, der der Speicherzelle zugeordnet ist. Diese Elektronen werden in die Ladungsfängerschicht 473 aus dem Kanal 471, durch das Tunneldielektrikum 472 in Reaktion auf eine entsprechende Spannung im Wortleitungsbereich 476 gezogen. Die Schwellenspannung (Vth) einer Speicherzelle wird proportional zur Menge der gespeicherten Ladung erhöht. In einer Ausführungsform wird die Programmierung durch Fowler Nordheim-Tunneln der Elektronen in die Ladungsfängerschicht erreicht. Während eines Löschvorgangs kehren die Elektronen in den Kanal zurück oder werden Löcher in die Ladungsfängerschicht injiziert, um sich mit Elektronen zu rekombinieren. In einer Ausführungsform wird Löschen unter Verwendung von Löcherinjektion in die Ladungsfängerschicht über einen physikalischen Mechanismus, wie etwa durch Gate induziertes Drain-Leck (GIDL), erreicht.
  • 6G ist ein schematisches Diagramm eines Abschnitts des in den 6A-6F dargestellten Speichers. 6G zeigt die physischen Wortleitungen WL0-WL95, die über den gesamten Block verlaufen, entsprechend den Wortleitungsschichten WLL0-WLL95. Die Struktur von 6G entspricht Abschnitt 606 in Block 2 der 6B-6F einschließlich der Bitleitungen 411, 412, 413, 414, ... 419. Innerhalb des Blocks ist jede Bitleitung mit vier NAND-Strings verbunden. Drain-seitige Auswahlleitungen SGD0, SGD1, SGD2 und SGD3 werden dazu verwendet, um zu bestimmen, welche der vier NAND-Ketten mit der(den) zugehörigen Bitleitung(en) verbunden sind. Die source-seitigen Auswahlleitungen SGS0, SGS1, SGS2 und SGS3 werden verwendet, um zu bestimmen, welche der vier NAND-Ketten mit der gemeinsamen Source-Leitung verbunden sind. Der Block kann auch als in vier Unterblöcke SB0, SB1, SB2 und SB3 unterteilt betrachtet werden. Unterblock SB0 entspricht solchen vertikalen NAND-Strings, die durch SGD0 und SGS0 gesteuert werden, Unterblock SB1 entspricht solchen vertikalen NAND-Strings, die durch SGD1 und SGS1 gesteuert werden, Unterblock SB2 entspricht solchen vertikalen NAND-Strings, die durch SGD2 und SGS2 gesteuert werden, und Unterblock SB3 entspricht solchen vertikalen NAND-Strings, die durch SGD3 und SGS3 gesteuert werden.
  • Die Speicherstruktur der 6A-6F ist eine komplexe Struktur mit zahlreichen Verarbeitungsschritten, die an ihrer Bildung beteiligt sind. Bei der Fertigung kann es zu einer Reihe unterschiedlicher Defekte kommen. Ein Beispiel ist ein „offenes Speicherloch“, in dem (bezugnehmend auf 6A) ein Speicherloch MH nicht einwandfrei über den Verbinder 491 (6D) mit der entsprechenden Bitleitung B1 verbunden ist. In anderen Fällen können Auswahlgates oder Speicherzellen möglicherweise nicht ordnungsgemäß gebildet sein, sodass eine NAND-Kette nicht ausgewählt oder abgewählt werden kann oder eine Speicherzelle nicht ordnungsgemäß programmiert oder gelesen wird. Andere Defekte können Wortleitungen oder Auswahlleitungen einschließen, die aufgrund von Verarbeitungsschwankungen in den Dicken der vielen Schichten gebrochen sind oder einen Kurzschluss oder Leckstrom zu einer angrenzenden Auswahlleitung oder Wortleitung aufweisen.
  • Aufgrund solcher Defekte kann ein Block des Speichers unbrauchbar sein oder zwar brauchbar sein, aber eine reduzierte Leistung oder eine reduzierte Lebensdauer aufweisen. Um das Vorhandensein von Defekten zu bestimmen, kann die Speichervorrichtung nach der Fertigung und vor dem Versenden an Kunden einer „Chip-Sortierung“ unterzogen werden, bei der sie einer Reihe von Tests der Speicherstruktur und der Peripherieschaltungsanordnung unterzogen wird. Solche Tests werden an einem neuen oder „frischen“ Speicherchip durchgeführt, bevor er mit einem anderen Speicherchip oder einer Steuerung zu einem Speicherpaket zusammengefügt und vom Kunden in Gebrauch genommen wird. Das Testen wird in der Regel unter Verwendung einer oder mehrerer externer mit dem Chip verbundener Vorrichtungen oder Einrichtungen durchgeführt, obwohl in einigen Ausführungsformen das Testen ganz oder teilweise durch den Chip selbst unter Verwendung eines eingebauten Selbsttest-Prozesses (BIST-Prozesses) durchgeführt werden kann. Wenn ein Speicherchip zu viele defekte Blöcke oder Defekte eines besonders schweren Typs aufweist, wird der Chip verworfen. Wenn die Defekte eines Chips auf eine Anzahl von bestimmten Speicherblöcken beschränkt sind und die Anzahl solcher defekter Blöcke nicht zu hoch ist, können die defekten Blöcke auf dem Chip markiert und der Chip noch verwendet werden, wobei jedoch die markierten Blöcke entweder nicht oder eingeschränkt verwendet werden.
  • Ein typischer Chipsortierablauf nach dem Stand der Technik verwendet „Fail Stop“, wobei, sobald ein Block bei einer Spezifikation einer bestimmten Kategorie ausfällt, der Chip als fehlerhaft markiert wird und in den folgenden Teilen der Testsequenz nicht getestet wird. Unter dieser Art der Anordnung hat jeder Block nur ein einziges entsprechendes Flag für einen fehlerhaften 1-Bit-Block (oder BBK-Flag), das jeden der Blöcke eines Chips entweder als GOOD (einwandfrei) oder als BAD (fehlerhaft) markiert, ohne Angabe dessen, wie defekt ein fehlerhafter Block ist, oder der Beschaffenheit seines Defekts.
  • Um diese Anordnung zu verbessern, werden im Folgenden Techniken zur Identifizierung wiederherstellbarer Blöcke vorgestellt. Durch die Vorrichtungsauswertung können Blöcke identifiziert werden, die einen gewissen Defektgrad aufweisen, sich aber in wiederherstellbaren Kategorien befinden und einen akzeptablen Risikograd aufweisen. Innerhalb dieser Kategorien können mehrere Defektspezifikationen für einen Chip ohne Fail Stop überprüft werden. Die Blöcke können dann entsprechend dieser Tests klassifiziert und die Ergebnisse entsprechend protokolliert werden, indem für jeden Block Multi-Bit-Flagwerte verwendet werden. Für Produktanwendungen, die keine strenge Spezifikation erfüllen müssen, können Blöcke in Abhängigkeit von den Klassifizierungen wiederhergestellt werden, wodurch die Anzahl der einwandfreien Blöcke erhöht wird und die Ausbeute an Chips erhöht wird. Die Verwendung eines Multi-Bit-Flags für fehlerhafte Blöcke (BBK-Flag) ermöglicht, dass die klassifizierten Blöcke während der Einschaltsequenz für den Speicherchip wiederhergestellt werden. In einigen Ausführungsformen können die Multi-Bit-Flagwerte für fehlerhafte Blöcke in einem Block des Speicherchips gespeichert werden, der für Steuerungs-oder Systemdaten verwendet wird und auf den die Steuerung für flexibleren und diversifizierteren Blockzugriff zugreifen kann.
  • 7 veranschaulicht eine Ausführungsform für die Ergebnisse einer Chipsortiertestsequenz für die Blöcke eines nichtflüchtigen Speicherchips. Die vertikale Achse in 7 stellt den kumulativen Zählwert fehlerhafter Blöcke dar. Ein Speicherchip ist in der Regel mit etwas redundanter Kapazität ausgelegt, sodass er den Verlust einiger Blöcke tolerieren kann, aber wenn ein Chip zu viele fehlerhafte Blöcke aufweist, wie auf der vertikalen Achse bei MAX veranschaulicht, kann er unbrauchbar sein. In einigen Ausführungsformen kann, wenn die maximale Anzahl fehlerhafter Blöcke erreicht ist, das Testen des Chips gestoppt werden.
  • Die horizontale Achse von 7 stellt die Testanzahl von Tests dar, die im Rahmen des Chipsortiertests durchgeführt werden, wobei die Tests sowohl für die Speicherzellen als auch für periphere Elemente sein können. Die spezifischen durchgeführten Tests variieren in Abhängigkeit von den Spezifikationen der Speicherstruktur, und selbst für einen bestimmten Vorrichtungstyp und einen bestimmten Satz von Tests kann die Reihenfolge in Abhängigkeit von der Ausführungsform variieren. Die Tests können sortiert werden basierend auf Faktoren wie Gruppierungstests, die einen Satz von Bias-Werten für Elemente gemeinsam nutzen, um die Effizienz zu verbessern. Um das Beispiel der dreidimensionalen NAND-Struktur heranzuziehen, die in Bezug auf die 6A-6F veranschaulicht ist, können die Tests unter anderem das Prüfen des Betriebs von source-seitigen Auswahlgates, des Betriebs von drain-seitigen Auswahlgates, das Prüfen auf offene Speicherlöcher (wo die horizontale NAND-Kette nicht ordnungsgemäß mit der Bitleitung verbunden ist), den Betrieb der Transistoren entlang der Dummy-Wortleitungsspeicherzellen und Mehrzustands-Programmier-und Leseoperationen mit Testdaten (z. B. zufallsbasierte Mehrzustands-Daten) einschließen.
  • 7 veranschaulicht zwei verschiedene Speicherchips (Chip 1 und Chip 2), wenn deren Blöcke während der Chipsortierung der Testsequenz unterzogen werden. Wenn der Chip die Sequenz durchläuft, nimmt der kumulative Zählwert fehlerhafter Blöcke bei einigen Tests zu, wobei ein oder mehrere fehlerhafte Blöcke gefunden werden, und bleibt gleich, wenn alle Blöcke den Test bestehen. Bei einer Fail-Stop-Ausführungsform wird ein Block, nachdem er einen Test nicht bestanden hat, bei nachfolgenden Tests nicht überprüft. Zum Beispiel werden beim ersten Pfeil etwa bei Test 10, was einem Test für ein offenes Speicherloch entsprechen könnte, mehrere Blöcke für nicht bestanden befunden, sodass in einer Fail-Stop-Ausführungsform die entsprechenden Blöcke als fehlerhaft markiert und in nachfolgenden Tests übersprungen werden. In ähnlicher Weise könnte der zweite Pfeil etwa bei Test 45 oder 50 in der Beispielsequenz zum Beispiel eine Mehrebenen-Leseoperation sein, und die Blöcke, die diesen Test nicht bestehen, werden in einer Fail-Stop-Ausführungsform als fehlerhaft markiert und später im Chipsortierablauf in den übrigen Tests übersprungen.
  • 8 ist eine Tabelle, die das Ergebnis einer Fail-Stop-Chipsortierung veranschaulicht. Die erste Spalte von 8 listet die Blockadressen für den Speicherchip auf. In den nächsten paar Spalten sind die Testergebnisse für eine Anzahl verschiedener Testkategorien aufgeführt. Jede Kategorie kann einem einzelnen Test oder einem Gruppentest entsprechen; zum Beispiel können alle Tests für source-seitige Auswahlgates als eine einzige Kategorie gruppiert werden. Das Bestehen der Testkategorie ist mit O dargestellt und ein Nichtbestehen ist mit X dargestellt. Die Spezifikation für das Bestehen oder Nichtbestehen einer gegebenen Kategorie kann in einigen Fällen auf einem einmaligen Auftreten eines Fehlers oder darauf beruhen, dass die Anzahl solcher Fehler einen Grenzwert überschreitet. Zum Beispiel kann das Speichersystem im Fall eines offenen Speicherlochs, da dies zu nur einer fehlerhaften Speicherzelle pro Wortleitung führt, in der Lage sein, eine gewisse Anzahl offener Speicherlöcher pro Block zu tolerieren, da eine gewisse Anzahl fehlerhafter Bits pro Seite durch Verwendung eines Fehlerkorrekturcodes toleriert werden kann; dies hätte jedoch bei einer gebrochenen oder ein Leck aufweisenden Wortleitung zur Folge, dass die gesamte Wortleitung/Datenseite defekt wäre, sodass selbst ein einmaliges Auftreten einen Block fehlerhaft machen würde. Bei einer Fail-Stop-Ausführungsform wird ein Block, nachdem er die Spezifikation für eine Testkategorie nicht bestanden hat, beim nachfolgenden Test nicht überprüft. In dem Beispiel von 8 besteht Block 7 bei Kategorie 1 nicht und wird auf Kategorie 2 und in nachfolgenden Tests nicht überprüft; und Block 1 besteht bei Kategorie 2 nicht und wird auf Kategorie 3 und in nachfolgenden Tests nicht überprüft.
  • Die letzte Spalte von 8 gibt die Chipsortierung (DS-Kategorien) daraufhin an, ob das Flag für fehlerhafte Blöcke des entsprechenden Blocks gesetzt ist (angegeben durch X) oder nicht (angegeben durch O). Sobald die Chipsortierung abgeschlossen ist, kann der entsprechende Satz von Flagwerten in einem ROM-Sicherungsspeicher auf dem Chip gesetzt werden, wie bei 320 von 5 veranschaulicht. In anderen Ausführungsformen können die BBK-Flagwerte alternativ oder zusätzlich in einem Block des nichtflüchtigen Speichers gespeichert werden, der einer von einem oder mehreren Blöcken 620 sein kann, die für die Speicherung von Systemdaten verwendet werden. In der in Bezug auf 8 veranschaulichten Ausführungsform, die einen Fail Stop verwendet und ein 1-Bit-Flag für fehlerhafte Blöcke verwendet, berücksichtigt der Chipsortierablauf nur einen einzigen Satz von Spezifikationen für die Bestimmungen von fehlerhaften Blöcken, der nur auf eine einzige Qualität abzielt, sodass keine Qualitätsklassifizierung auf der Blockebene durchgeführt wird. Während einer Einschaltoperation für den Speicherchip wird nur der eine Satz von Flags für fehlerhafte Blöcke aus den Registern des Speicherchips gelesen und in die Steuerung geladen, und basierend auf diesen Flags wird während des Speichersystembetriebs nicht auf die als fehlerhaft markierten Blöcke zugegriffen.
  • 9 ist ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses für einen Fail-Stop-Chipsortierprozess, beginnend bei Schritt 901, beschreibt. Der Test wird in Schritt 903 ausgewählt, beginnend mit dem ersten Test der Chipsortiersequenz, und der Block wird in Schritt 905 ausgewählt, beginnend mit dem ersten Block in der Testreihenfolge. In der Ausführungsform von 9 ist die Blockschleife innerhalb der Testschleife platziert, sodass ein gegebener Test für alle Blöcke durchgeführt wird, bevor er mit dem nächsten Test fortfährt, aber in anderen Ausführungsformen kann die Testschleife innerhalb der Blockschleife platziert werden, sodass alle Tests (oder alle Tests bis zu einem Fail Stop) für einen Block durchgeführt werden, bevor mit dem nächsten Block fortgefahren wird.
  • Der ausgewählte Test wird an dem ausgewählten Block in Schritt 907 durchgeführt, und Schritt 909 bestimmt, ob der Block den Test bestanden hat. Wenn der Block den Test nicht besteht, wird in Schritt 911 der ausgewählte Block aus nachfolgenden Tests entfernt und als fehlerhaft aufgezeichnet. In einigen Ausführungsformen kann Schritt 913 eingeschlossen sein, um zu bestimmen, ob die akkumulierte Anzahl fehlerhafter Blöcke einen Maximalwert überschreitet, und wenn ja, dann kann in einigen Ausführungsformen der Chipsortierablauf für den Chip bei Schritt 915 beendet werden. In anderen Ausführungsformen kann eine Bestimmung, ob ein Chip verworfen werden soll, alternativ oder zusätzlich nahe dem Ende des Ablaufs durchgeführt werden, wie nach Schritt 921. Wenn entweder der Block den Test bei Schritt 909 besteht oder die akkumulierte Anzahl fehlerhafter Blöcke bei 913 unter dem Maximalwert liegt, geht der Ablauf zu Schritt 917 über, um zu bestimmen, ob es mehr Blöcke für den aktuellen Test gibt.
  • Schritt 917 bestimmt, ob es mehr Blöcke gibt, die auf den aktuellen Test zu prüfen sind, und wenn ja, kehrt der Ablauf zu Schritt 905 zurück, nachdem die Blocknummer bei Schritt 919 inkrementiert wurde, wo eventuell zuvor bei Schritt 911 als fehlerhaft bestimmte Blöcke übersprungen werden. Wenn es keine Blöcke mehr für den aktuellen Test gibt, bestimmt Schritt 921, ob es mehr Tests gibt, und wenn ja, kehrt der Ablauf nach Inkrementieren der Testnummer bei Schritt 923 zurück zu Schritt 903. Wenn es keine Tests mehr in Schritt 921 gibt, ist das Testen abgeschlossen und die Flags für fehlerhafte Blöcke für den Chip können in Schritt 925 auf dem Chip gespeichert werden, beispielsweise durch Setzen der Werte in einem ROM 320, beispielsweise einem Sicherungs-ROM, oder durch Speichern von diesen in einem Systemdatenblock 620 des nichtflüchtigen Speicherarrays. Wenn der Chip anschließend in Gebrauch ist, können beim Hochfahren des Chip die Flags für fehlerhafte Blöcke von der Steuerung gelesen werden, sodass sie die fehlerhaften Blöcke überspringen kann, wenn Blockzuweisungen vorgenommen werden.
  • Die Anzahl fehlerhafter Blöcke kann auch zum Einstufen der Speicherchips basierend auf ihrer Qualität oder ihrem Wert verwendet werden. Chips mit einer geringen Anzahl von fehlerhaften Blöcken können für hochwertige Produkte ausgewählt werden, bei denen eine hohe Anzahl von Programmier-/Löschzyklen erforderlich sein kann. Der Speicherchip von niedrigerem Gütegrad kann in Anwendungen mit einer niedrigeren Spezifikation in Bezug auf Programmier-/Löschzyklen verwendet werden, da eine Vorrichtung mit weniger Reserveblöcken nach Inbetriebnahme eine geringere Toleranz für erfasste Defekte aufweisen wird.
  • Anstatt eine binäre Klassifizierung von Blöcken in „einwandfrei/fehlerhaft“ und einen grundlegenden Fail-Stop-Chipsortiertestprozess zu verwenden, führt die folgende Erörterung eine Qualitätsklassifizierung von Blöcken im Rahmen des Testprozesses ein und verwendet mehrere Flags für fehlerhafte Blöcke bezüglich Produktdiversität. Dies ermöglicht die Wiederherstellung von Chips mit gewissen Blockdefekten zur Verwendung in Produkten von niedrigerem Gütegrad, wodurch die Ausbeuten verbessert werden. Genauer werden Blockqualitätsklassifizierungen bei der Chipsortierung und Multi-Bit-Flags zum Speichern dieser Informationen auf dem Chip eingeführt, wodurch Produktdiversität und eine detailliertere Blockqualitätsklassifizierung bereitgestellt werden, die beim Einschalten für einen Chip bereitgestellt werden kann.
  • Durch Auswertungen von Vorrichtungen können Defekttypen und Defektgrade identifiziert werden, die in wiederherstellbare Kategorien fallen. Blöcke, die die Sortierung mit niedrigeren Kriterien (qualitativ, quantitativ oder beides) bestehen, können immer noch für Produkte mit niedrigeren Spezifikationsanforderungen verwendet werden. Zum Beispiel könnten Blöcke, die einen Test auf offene Speicherlöcher bei einer Spezifikation von 1 Bit pro 1000 nicht bestehen, bei einer Spezifikation von 8 Bit pro 1000 bestehen. In einem anderen Beispiel könnte ein Block, der bei einer Anforderung von nicht mehr als 52 fehlerhaften Bits pro 1000 ein Lesen auf Multi-Level-Zellenebene (MLC) nicht besteht, bei einer eher entschärften Anforderung von nicht mehr als 80 fehlerhaften Bits pro 1000 bestehen. Dank dieses höheren Defektgrades können die Blöcke immer noch erfolgreich mit den ECC-Funktionen des Speichersystems arbeiten, bieten aber weniger Raum für zusätzliche Fehler. Folglich können solche Vorrichtungen eine geringere Leistung oder kürzere Lebensdauer aufweisen und für Produkte mit einer höheren Spezifikation weniger geeignet sein, können jedoch für Anwendungen mit einer niedrigeren Spezifikation verwendet werden. Auf diese Weise ermöglichen verschiedene Spezifikationen für offenes Speicherloch, Multi-Level-Ergebnisse und andere Tests eine vollständigere Kategorisierung der Blockqualität. Nach dem Testen können die Blockklassifizierungsinformationen als Multi-Bit-Flagwerte für fehlerhafte Blöcke gespeichert werden, wie im ROM 320 oder Systemdatenblock 620, die gelesen werden können, um die Wiederherstellbarkeit der Blöcke eines Chips zu bestimmen, die dann abhängig von der Spezifikation eines Produkts flexibel aktiviert werden können.
  • Die Chipsortiertestsequenz kann wiederum wie in 7 sein, jedoch können die Tests nun mehrere Spezifikationen für ausgewählte Tests einschließen, wie für die Anzahl offener Speicherlöcher, oder es kann die Anzahl falsch gelesener Bits bei einem Mehrzustandslesen gegenüber mehreren Werten überprüft werden, wie im vorhergehenden Absatz beschrieben. In einigen Ausführungsformen können die erkannten Fehler entweder als in eine kritische Ausfallkategorie oder eine wiederherstellbare Kategorie fallend klassifiziert werden. Eine kritische Ausfallkategorie kann Defekte wie einen Wortleitungskurzschluss, einen hohen Leckstrom oder andere Defekte einschließen, die zu einer Fehlermenge führen, die einen Block unwiederherstellbar machen würde. Für solche kritischen Ausfallkategorien kann die Chipsortierung wieder ein Fail Stop sein. Für wiederherstellbare Ausfallkategorien ist der Chipsortierablauf kein Fail Stop und kann verwendet werden, um Blöcke zu bestimmen und zu klassifizieren, die für Produkte mit niedrigerer Spezifikation wiederhergestellt werden können.
  • 10 ist eine Tabelle, die das Ergebnis einer Chipsortierung veranschaulicht, in der Blöcke als für die nächste Chipsortierkategorie bestanden betrachtet werden, wenn sie die entschärften Kriterien bestanden haben, das jedoch ein Fail Stop ist, wenn der Block in einer kritischen Ausfallkategorie ausfällt. Wie in 8 listet die erste Spalte von 10 Blockadressen auf und die nächsten paar Spalten sind für verschiedene Chipsortierkategorien. In diesem Beispiel werden die Kategorie 2 und die Kategorie 5 als kritische Ausfallkategorien betrachtet: Beispielsweise könnte die Kategorie 2 einem Wortleitungskurzschluss entsprechen, der die gesamte Wortleitung unbrauchbar machen würde, und die Kategorie 5 einem Multi-Level-Lesen mit extrem hoher Fehlerrate. Wie in 10 dargestellt, sind diese Kategorien Fail Stop, wobei nachfolgende Tests für Blöcke mit X für diese Kategorien übersprungen werden. Für die unkritischen Kategorien liegt jedoch kein Fail Stop vor, sodass beispielsweise bei Block 2, auch wenn dieser bei Kategorie 3 nicht besteht, das Testen fortgesetzt wird. Block 5 veranschaulicht ein Beispiel, bei dem ein Block mehrere Tests der unkritischen Kategorie nicht besteht und weiterhin getestet wird, bis er bei dem Test der kritischen Ausfallkategorie von Kategorie 5 nicht besteht.
  • Obwohl die Prozesse hier für eine Ausführungsform beschrieben sind, die die Defekt- oder Wiederherstellbarkeits-Flag-Informationen auf Blockebene bestimmt, können andere Ausführungsformen alternativ oder zusätzlich die Flag-Informationen bei anderen Granularitäten bestimmen. Zum Beispiel könnte der Prozess auch eine Klassifizierung auf Unterblockebene (z. B. oberen und unteren Unterblöcken, die den jeweiligen Bereichen über oder unter der Verbindung zum Beispiel von 6D entsprechen) oder auf der Ebene von Gruppen von Wortleitungen oder sogar einzelnen Wortleitungen einschließen.
  • Im Anschluss an die Spalte Kategorie N enthält 10 eine Spalte Wiederherstellbarkeit. Zusätzlich zu dem kritischen Ausfallwert (angegeben durch X) und dem Wert für „alle bestanden“ (angegeben durch einen Eintrag O) der in 8 dargestellten Ausführungsform werden eine oder mehrere Wiederherstellbarkeitsstufen durch R1, R2, R3,... angegeben, wobei R1 der am weitestgehenden wiederherstellbare Block ist. Wenn ein 3-Bit-Flag für fehlerhafte Blöcke verwendet wird, können sechs Zwischengrade für Wiederherstellbarkeit in dem Flagwert codiert werden. Der Flagwert ist in der letzten Spalte von 10 gezeigt, wobei in diesem Beispiel 000 „keinen Ausfall“, 111 einem kritischen Ausfall entspricht und die Zwischenwerte mit abnehmendem Grad der Wiederherstellbarkeit zunehmen. Obwohl sich die vorstehende Erörterung hauptsächlich auf die Multi-Bit-Flagwerte für fehlerhafte Blöcke konzentriert hat, wie sie im Rahmen eines Vorrichtungsbewertungsprozesses einer frischen Vorrichtung bestimmt und aufgezeichnet wurden und nicht durch eine Speichersteuerung gesetzt wurden (da der Prozess durchgeführt wird, bevor der Chip zu einem Speichersystem zusammengefügt wird), können diese Flagwerte in einigen Ausführungsformen aktualisiert werden, um „gewachsene“ Defekte widerzuspiegeln, die auftreten, nachdem die Vorrichtung in Gebrauch ist.
  • Die Bestimmung, was die Voraussetzungen als „kritische Ausfallkategorie“ erfüllt, kann für einen gegebenen Satz von Tests benutzerdefiniert werden. Verschiedene Benutzer können unterschiedliche Kriterien haben, und selbst für einen bestimmten Benutzer können die Kriterien je nach erwarteter Verwendung für die Speicherschaltungen variieren. Zusätzlich variieren sowohl die speziellen Tests als auch das, was die Voraussetzungen für eine kritische Ausfallkategorie erfüllt, in Abhängigkeit von den Spezifika des Typs der Speichervorrichtung, die getestet wird, wie etwa der für die Speicherzellen verwendeten Speichertechnologie (z. B. NAND-Flash-Speicher gegenüber Phasenänderungsspeicher) und, sogar bei einer gegebenen Speichertechnologie, die Spezifika der Speicherstruktur (z. B. dreidimensionales NAND gegenüber zweidimensionalem NAND).
  • 11 veranschaulicht die Erhöhung der Anzahl von Chips, die bei höherwertigen Gütegraden durch Verwendung des Mechanismus zur Wiederherstellung fehlerhafter Blöcke verwendet werden können. 11 zeigt ein Beispiel einer Verteilung von Speicherchips basierend auf ihrer Anzahl von fehlerhaften Blöcken, mit der Anzahl von Chips auf der vertikalen Achse und der Anzahl von fehlerhaften Blöcken auf der horizontalen Achse. Basierend auf der Anzahl fehlerhafter Blöcke kann der Speicherchip in Gruppen sortiert werden, wobei die höherwertigen Chips weniger fehlerhafte Blöcke aufweisen und die Chips mit einer höheren Anzahl fehlerhafter Blöcke von geringerem Wert sind. 11 veranschaulicht die Verteilung, die in vier Behälter, G1, G2, G3 und G4, gruppiert ist. Die Verteilung 1101, die durch die durchgezogene Linie dargestellt wird, entspricht einer Einstufung, die auf einem einzelnen fehlerhaften Blockbit basiert, wobei sich für den G1-Bereich die durchgezogene Linie 1101 und die gestrichelte Linie von 1103 überlappen. Der Speicherchip der Gruppe G1 entspricht der höchsten Qualitätsspezifikation, höchstwertigen Chips, von denen erwartet werden kann, dass sie die längste Lebensdauer in Bezug auf Programmier-/Löschzyklen aufweisen, wobei die Gruppe G2 Vorrichtungen mittlerer Qualitätsspezifikation sind, Vorrichtungen der Gruppe G3 Vorrichtungen niedrigerer Spezifikation sind und die der Gruppe G4 für die meisten Verwendungen mit zu vielen fehlerhaften Blöcken behaftet sind.
  • Die Verteilung 1101 basiert auf der Anzahl fehlerhafter Blöcke unter Verwendung einer binären 1-Bit-Bestimmung, ob ein Block fehlerhaft ist oder nicht. Die Verteilung 1103, die mit der gestrichelten Linie gezeigt ist, nutzt die Wiederherstellung von fehlerhaften Blöcken, die in Bezug auf 10 beschrieben ist. In diesem Beispiel ist die Anzahl der Chips in dem Behälter G1 in beiden Fällen gleich, jedoch ist die Anzahl in den Behältern G2 und G3 erhöht. Wenn zum Beispiel ein Speicherchip, der sich zuvor in der Gruppe G3 oder sogar G4 befunden hätte, eine Anzahl von Blöcken aufweist, die Defekte aufweisen, jedoch aus den weitergehend wiederherstellbaren Kategorien wie R1 oder R2, könnten diese Chips in den Behälter G2 verschoben werden. Diese Situation könnte auftreten, wenn, um ein Beispiel zu nehmen, ein Chip eine Anzahl von Blöcken mit zu vielen offenen Speicherlöchern aufweist, um die strengste Testspezifikation zu erfüllen, aber noch immer ein eher entschärftes Kriterium erfüllen könnte. Solche Blöcke können eine etwas kürzere Lebensdauer aufweisen, können aber in vielen Anwendungen noch verwendbar sein. In ähnlicher Weise können viele Chips, die sich auf einer binären „Bestanden/Nicht bestanden“-Basis für fehlerhafte Blöcke in der Gruppe G4 befinden würden, nun für G3 wiederherstellbar sein.
  • 12 ist ein Ablaufdiagramm für eine Beschreibung auf hoher Ebene einer Ausführungsform eines Prozesses für einen Chipsortierprozess, der eine Blockqualitätsklassifizierung einschließt. Schritt 1200 schließt das Testen eines nichtflüchtigen Speicherchips mit mehreren Blöcken ein, wobei jeder der Blöcke mehrere Speicherzellen aufweist. Im Rahmen des Testens in Schritt 1200 wird in Schritt 1201 für jeden Block eine Sequenz einer Vielzahl von Testoperationen durchgeführt. Jede der Testoperationen ist eingerichtet, um ein Vorhandensein eines entsprechenden Defekttyps in dem Block, an dem die Testoperation durchgeführt wird, zu bestimmen. Außerdem wird im Rahmen des Testens in Schritt 1200 ein entsprechender Multi-Bit-Flagwert für jeden Block aus der Sequenz von Testoperationen in Schritt 1203 bestimmt. Wie vorstehend in Bezug auf 10 beschrieben, gibt der Multi-Bit-Flagwert eine von einer Vielzahl von Wiederherstellbarkeitskategorien für den entsprechenden Block an, wobei die Wiederherstellbarkeitskategorien eine Blockkategorie „einwandfrei“, eine Blockkategorie „unbrauchbar“ und eine Vielzahl von Zwischenstufen von Wiederherstellbarkeitskategorien einschließen. Schritt 1210 speichert den Multi-Bit-Flagwert für jeden der Blöcke im nichtflüchtigen Speicher auf dem Speicherchip. 13 zeigt ein Beispiel einer detaillierteren Implementierung für den Prozess von 12, insbesondere für Schritt 1201.
  • 13 ist ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses für eine Chipsortierung beschreibt, die eine Blockqualitätsklassifizierung wie in 12 einschließt, jedoch in einer detaillierteren Implementierung. Die in 13 dargestellte Ausführungsform ist der vorstehend in Bezug auf 9 beschriebenen ähnlich, jedoch wird nun anstelle der Bestimmung „Fail Stop - bestanden/nicht bestanden“ für jeden Test bei jedem Block die in Bezug auf 10 beschriebene Qualitätsbestimmungssortierung verwendet. Der Prozess von 13, einschließlich des Setzens der Multi-Bit-BBK-Flags in einem Sicherungs-ROM oder einem anderen nichtflüchtigen Speicher auf dem Chip, kann auf einem neu hergestellten oder „frischen“ Speicherchip durchgeführt werden, bevor er mit einem anderen Speicherchip oder einer Steuerung zu einem Speicherpaket zusammengefügt und vom Kunden in Gebrauch genommen wird. Das Testen wird in der Regel unter Verwendung einer oder mehrerer externer mit dem Chip verbundener Testvorrichtungen oder -Einrichtungen durchgeführt, obwohl in einigen Ausführungsformen das Testen ganz oder teilweise durch den Chip selbst unter Verwendung eines eingebauten Selbsttest-Prozesses (BIST-Prozesses) durchgeführt werden kann.
  • Angefangen bei Schritt 1301 wird der Test in Schritt 1303 ausgewählt, beginnend mit dem ersten Test der Chipsortiersequenz, und der Block wird in Schritt 1305 ausgewählt, beginnend mit dem ersten Block in der Testreihenfolge. In der Ausführungsform von 13 ist, wie in der Ausführungsform von 9, die Blockschleife innerhalb der Testschleife platziert, sodass ein gegebener Test für alle Blöcke durchgeführt wird, bevor er mit dem nächsten Test fortfährt, aber in anderen Ausführungsformen kann die Testschleife innerhalb der Blockschleife platziert werden, sodass alle Tests (oder alle Tests bis zu einem Fail Stop) für einen Block durchgeführt werden, bevor mit dem nächsten Block fortgefahren wird.
  • Der ausgewählte Test wird an dem ausgewählten Block in Schritt 1307 durchgeführt, und Schritt 1309 bestimmt, ob der Block den Test bestanden hat. Wenn der Block den Test nicht besteht, geht der Ablauf zu Schritt 1331 über, der bestimmt, ob der nicht bestandene Test zur kritischen Ausfallkategorie gehört. Wenn nicht, geht der Ablauf zu Schritt 1333 über, wo das Ergebnis des Tests aufgezeichnet wird, bevor mit Schritt 1317 fortgefahren wird. Da der Test keinen kritischen Ausfall darstellt, liegt kein Fail Stop für den ausgewählten Block vor, und er wird in den nächsten der Sequenz aufgenommen.
  • Wenn das in Schritt 1309 erkannte Nichtbestehen des Tests ein kritischer Ausfall ist, wird in Schritt 1311 der ausgewählte Block aus nachfolgenden Tests entfernt und als (nicht wiederherstellbar) fehlerhaft aufgezeichnet. In einigen Ausführungsformen kann Schritt 1313 eingeschlossen sein, um zu bestimmen, ob die akkumulierte Anzahl von Blöcken mit einem kritischen Ausfall einen Maximalwert überschreitet, und wenn ja, kann der Chipsortierablauf für den Chip bei Schritt 1315 beendet werden. Wenn entweder der Block den Test bei Schritt 1309 besteht oder die akkumulierte Anzahl fehlerhafter Blöcke bei 1313 unter dem Maximalwert liegt, geht der Ablauf zu Schritt 1317 über, um zu bestimmen, ob es mehr Blöcke für den aktuellen Test gibt.
  • Schritt 1317 bestimmt, ob es mehr Blöcke gibt, die auf den aktuellen Test zu prüfen sind, und wenn ja, kehrt der Ablauf zu Schritt 1305 zurück, nachdem die Blocknummer bei Schritt 1319 inkrementiert wurde, wo eventuell zuvor bei Schritt 1311 als fehlerhaft bestimmte Blöcke übersprungen werden. Wenn es keine Blöcke mehr für den aktuellen Test gibt, bestimmt Schritt 1321, ob es mehr Tests gibt, und wenn ja, kehrt der Ablauf nach Inkrementieren der Testnummer bei Schritt 1323 zurück zu Schritt 1303. Wenn es in Schritt 1321 keine Tests mehr gibt, ist in 1325 der Test abgeschlossen und die Wiederherstellbarkeitskategorien der Blöcke und entsprechenden Flagwerte für den Speicherchip können bestimmt werden, wie vorstehend in Bezug auf 10 veranschaulicht. Die Multi-Bit-Flags für fehlerhafte Blöcke für jeden der Blöcke des Chips können in Schritt 1327 auf dem Chip gespeichert werden, beispielsweise durch Setzen der Werte in einem ROM 320, beispielsweise einem Sicherungs-ROM, oder durch Speichern von diesen in einem Systemdatenblock 620 des nichtflüchtigen Speicherarrays (oder beiden). Wenn der Chip anschließend in Gebrauch ist, können beim Hochfahren des Chip die Flags für fehlerhafte Blöcke von der Steuerung gelesen werden, sodass die Steuerung die fehlerhaften Blöcke überspringen kann, wenn Blockzuweisungen vorgenommen werden.
  • Sobald die Informationen über einen fehlerhaften Block für einen Chip erhalten werden, wie in Bezug auf die 10, 12 und 13 beschrieben, können diese Informationen während des Betriebs des Chips und auch für die Auswahl des Chips zur Einbeziehung in ein Produkt verwendet werden. Wenn zum Beispiel ein Speicherpaket 104 einer hohen Spezifikation von 4 für das Speichersystem 100 von 1 gewünscht wird, kann der Speicherchip 292 für das Paket 104 aus der Gruppe G1 von 11 ausgewählt werden, während für Speicherpakete einer niedrigeren Spezifikation der Chip je nach beabsichtigter Verwendung aus den Gruppen G2 oder G3 oder einer Mischung von G1-, G2-und G3-Chips ausgewählt werden kann. Beim Zusammenfügen von Speicherpaketen aus einem Pool von Speicherchips können die Flags für fehlerhafte Blöcke des Chips überprüft werden, um ihr Qualitätsniveau zum Durchführen solcher Chipauswahlen zu bestimmen.
  • 14 ist ein Ablaufdiagramm, das eine Ausführungsform eines Prozesses für eine Einschaltsequenz eines Speichersystems mit einem Chip mit Multi-Bit-Flagwerten für fehlerhafte Blöcke beschreibt. Bezugnehmend auf die 1-5 und 6B empfängt das Speichersystem 100 in Schritt 1401 einen Zugriffsbefehl oder ein anderes Signal, das das Hochfahren bewirkt. Die Speichersteuerung 102 fährt in Schritt 1403 hoch und sendet Einschaltbefehle an die Speicherpakete 104 und deren Speicherchipbestandteil in Schritt 1405. Im Rahmen der Einschaltsequenz kann die On-Chip-Steuerschaltungsanordnung 310 in Schritt 1407 die Multi-Bit-Flagwerte für fehlerhafte Blöcke aus dem ROM-Speicher 320 oder aus einem Systemdatenblock 620 auslesen. Obwohl sich die vorstehende Erörterung hauptsächlich auf die Multi-Bit-Flagwerte für fehlerhafte Blöcke konzentriert hat, wie sie im Rahmen eines Vorrichtungsbewertungsprozesses einer frischen Vorrichtung bestimmt und aufgezeichnet wurden, können diese Flagwerte in einigen Ausführungsformen aktualisiert werden, um „gewachsene“ Defekte widerzuspiegeln, die auftreten, nachdem die Vorrichtung in Gebrauch ist. Die Multi-Bit-Flagdaten für fehlerhafte Blöcke werden dann in Schritt 1409 von dem Speicherchip an die Steuerung 102 übertragen. Die Steuerung kann dann Flagwerte in einem Betriebsspeicher für die Steuerung (d. h. RAM-Speicher für die Steuerung, wie SRAM 160 oder ein anderes zugängliches RAM auf der Steuerung oder auf einer separaten integrierten Schaltung, wie einem lokalen Speicher (z. B. DRAM/ReRAM) 106) in Schritt 1411 speichern, von wo auf sie durch andere Elemente der Steuerung bei Bedarf zugegriffen werden kann, wie durch den Speicherprozessor 156 oder die Medienverwaltungsschicht MML 158. Wenn zum Beispiel die Medienverwaltungsschicht MML 158 physische Speicherblöcke zur Verwendung bei der Durchführung einer Übersetzung von logisch zu physikalisch auswählt, werden Blöcke, die als einen kritischen Ausfall aufweisend aufgezeichnet sind (eine Kategorie X in 10), überhaupt nicht ausgewählt, während die Blockqualitätsinformationen, die durch die verschiedenen Wiederherstellbarkeitskategorien bereitgestellt werden, in dem Blockauswahlprozess verwendet werden können.
  • Ein Beispiel für die Verwendung der Blockqualitätsinformationen ist die Abnutzungsnivellierung. Abnutzungsnivellierung ist eine Technik, die verwendet wird, um die Abnutzungsgrade über Speicherblöcke eines Chips (oder eines Speichersystems) zu überprüfen und auszugleichen, sodass die Blöcke gleichmäßig altern. Ohne Abnutzungsnivellierung werden einige Blöcke unter Umständen häufiger neu geschrieben als andere, was dazu führt, dass ein Chip unbrauchbar wird, da eine geringe Anzahl von Blöcken abgenutzt ist, während andere noch eine lange erwartete Lebensdauer aufweisen. Es ist eine Reihe verschiedener Abnutzungsnivellierungstechniken bekannt, die in der Regel auf der Auswahl von Speicherblöcken zum Schreiben beruhen, basierend auf der Anzahl von Programmier-/Löschzyklen (P/E), die jeder der Blöcke durchlaufen hat, wobei der Parameter oft als „hot count“ oder Erfahrungszählwert bezeichnet wird. Wenn nur ein 1-Bit-Flag für fehlerhafte Blöcke verwendet wird, werden die Blöcke aus den einwandfreien Blöcken ausgewählt, wobei Blöcke, die als fehlerhaft markiert sind, nicht verwendet werden. Wenn ein Multi-Bit-Flag für fehlerhafte Blöcke verwendet wird, können die Qualitätsinformationen, die von dem Multi-Bit-Wert verfügbar sind, verwendet werden, um die wiederherstellbaren Blöcke in die Abnutzungsnivellierungsalgorithmen einzubeziehen, sodass die wiederhergestellten Blöcke mit weniger Zyklisierung in dem Abnutzungsnivellierungsalgorithmus verwendet werden können. Die Spezifikationen von Abnutzungsnivellierungsalgorithmen variieren, jedoch veranschaulicht 15, wie die Wiederherstellbarkeitsinformationen über Blöcke in eine generische Abnutzungsnivellierungstechnik einbezogen werden können.
  • 15 ist ein Ablaufdiagramm, das eine Ausführungsform eines Abnutzungsnivellierungsprozesses beschreibt, der die Blockqualitäts- oder Wiederherstellbarkeitsinformationen enthalten kann, die durch Verwendung von Mehrbitwerten für die Flags für fehlerhafte Blöcke bereitgestellt werden. Der Prozess beginnt mit dem Zusammenfügen oder Auffüllen eines Pools von freien Blöcken, die verfügbar sind, um mit Daten beschrieben zu werden, beginnend bei Schritt 1500. Aus den freien Blöcken wird in Schritt 1501 ein Block ausgewählt und in Schritt 1503 daraufhin geprüft, ob seine Flags für fehlerhafte Blöcke einen kritischen Ausfall angeben (X in 10). Wenn ja, wird der Block nicht ausgewählt (Schritt 1505); und wenn nicht, wird der Block ausgewählt und dem Pool hinzugefügt (Schritt 1507). Schritt 1509 bestimmt, ob genügend Blöcke ausgewählt wurden, und wenn nicht, kehrt der Ablauf zu Schritt 1501 zurück. Sobald genügend Blöcke ausgewählt sind, geht der Ablauf zu Schritt 1510 über, um damit zu beginnen, die Blöcke aus dem Pool zu sortieren.
  • In Schritt 1511 werden die Programmier-/Lösch- (P/E)-Zählwerte für jeden der Blöcke des Pools erhalten. Diese können beispielsweise von der Steuerung im Betriebsspeicher, wie SRAM 160, gepflegt werden, von wo aus auf sie von der Medienmanagementschicht MML 158 und dem Speicherprozessor 156 zugegriffen werden kann. In Schritt 1513 wird auf die Multi-Bit-Flag-Informationen über fehlerhafte Blöcke für jeden der Blöcke des Pools zugegriffen, wobei diese Informationen über die Qualität und Wiederherstellbarkeit des Blocks zuvor in den Schritten 1309 und 1311 von 13 im Rahmen der Einschaltsequenz an die Steuerung 102 übertragen und im SRAM 160 gespeichert worden sein können. Wie vorstehend erläutert, kann das Wiederherstellbarkeitsniveau oder die Wiederherstellbarkeitskategorie (R1, R2, ...) Informationen einschließen, die für die erwartete Lebensdauer eines Blocks relevant sind. Zum Beispiel wird ein Block mit einer höheren Anzahl offener Speicherlöcher als frische Vorrichtung in der Lage sein, weniger erfasste Fehler als Folge von Programmier-/Löschzyklisierung zu tolerieren, sodass seine erwartete Anzahl von maximalen P-/E-Zyklen niedriger ist als bei einer Vorrichtung, die das offene Speicherloch mit der strengsten Spezifikation bestanden hat. Folglich kann in der Ausführungsform von 15 der Programmlöschungszählwert eines Blocks basierend auf dem Wert von Flags für fehlerhafte Blöcke gewichtet werden. Diese Gewichtung wird in Schritt 1515 durchgeführt. In Schritt 1517 wird der Pool von Speicherblöcken basierend auf den gewichteten P/E-Zählwerten sortiert, um eine sortierte Liste von physischen Speicherblöcken bereitzustellen, aus denen die Medienverwaltungsschicht MML 158 auswählen kann, wenn Blöcke für eine Schreib-oder Löschoperation ausgewählt werden.
  • Wie angemerkt, variieren die Spezifikationen verschiedener Abnutzungsnivellierverfahren, wobei sie zum Beispiel auf dem Sortieren der verfügbaren Blöcke und Verwenden der Werte der Flags für fehlerhafte Blöcke basieren können, wenn ein Block für einen Schreibvorgang ausgewählt wird oder Blöcke aktiv bewegt werden, um das Nivellieren von Abnutzung zu unterstützen. In der Regel wird der Prozess jedoch irgendeine Art von Sortieren von Blöcken einschließen, das modifiziert werden kann, um die Blockqualitätsinformationen einzuschließen, die von den Multi-Bit-Flagwerten für fehlerhafte Blöcke verfügbar sind, wie den soeben beschriebenen Gewichtungsprozess. In jeder dieser Anordnungen kann, wenn eine Anforderung nach einem verfügbaren Block in Schritt 1519 empfangen wird, die Auswahl des Blocks durch die Medienverwaltungsschicht MML 158 in Schritt 1521 auf einer solchen gewichteten Liste basieren. Die Anforderung eines Blocks in Schritt 1519 kann auf einem Schreibbefehl oder Löschbefehl von einem Host oder aufgrund einer internen Datenverschiebungsoperation von Hostdaten (z. B. Speicherbereinigung, aktive Abnutzungsnivellierung usw.) basieren und eine Zuweisung einer logischen Blockadresse zu dem physischen Block beinhalten, oder kann eine Zuweisung eines Blocks für Systemdaten sein (wie für den Systemblock 620 von 6B).
  • Wie vorstehend beschrieben, kann anstelle eines Speicherchips, der aus mehreren Blöcken gebildet ist, wobei diese Blöcke im Rahmen des Vorrichtungstests in zwei Kategorien von entweder einwandfrei oder fehlerhaft gruppiert sind, die Blockklassifizierung auf eine Anzahl von Kategorien erweitert werden, die dann auf dem Chip in Multi-Bit-(z. B. 3 Bit)-Flags für fehlerhafte Blöcke aufgezeichnet werden können. Dies ermöglicht es dem Speichersystem, auf Blöcke mit verschiedenen Qualitätsniveaus zuzugreifen und sie basierend auf ihrer Verwendung zu unterscheiden. Zum Beispiel kann in Produkten mit geringerer Lebensdauer eine Blockwiederherstellung basierend auf den Multi-Bit-Flags für fehlerhafte Blöcke verwendet werden, sodass die effektive Anzahl von einwandfreien Blöcken zunimmt. Dies kann es der Speichersteuerung ermöglichen, Blöcke mit höheren Defektniveaus mit weniger Zyklisierung beispielsweise in Abnutzungsnivellierungsalgorithmen zu verwenden.
  • Eine Ausführungsform schließt ein Verfahren ein, das Testen eines nichtflüchtigen Speicherchips einschließt, der eine Vielzahl von Blöcken aufweist, wobei jeder Block eine Vielzahl von Speicherzellen hat. Das Testen schließt ein: Durchführen einer Sequenz einer Vielzahl von Testoperationen für jeden Block, wobei jede der Testoperationen eingerichtet ist, um ein Vorhandensein eines entsprechenden Defekttyps in dem Block, an dem die Sequenz von Testoperationen durchgeführt wird, zu bestimmen; und Bestimmen, aus der Sequenz von Testoperationen, eines Multi-Bit-Flagwerts für jeden Block, wobei der Multi-Bit-Flagwert eine von einer Vielzahl von Wiederherstellbarkeitskategorien eines entsprechenden Blocks angibt, wobei die Wiederherstellbarkeitskategorien eine Blockkategorie „einwandfrei“, eine Blockkategorie „unbrauchbar“ und eine oder mehrere Zwischenstufen von Wiederherstellbarkeitskategorien einschließen. Das Verfahren schließt auch das Aufzeichnen des Multi-Bit-Flagwerts für jeden der Blöcke im nichtflüchtigen Speicher auf dem Speicherchip ein.
  • Noch eine andere Ausführungsform schließt ein nichtflüchtiges Speichersystem ein, das einen Speicherchip und eine mit dem Speicherchip verbundene Speichersteuerung einschließt. Der Speicherchip schließt ein: eine Vielzahl von Blöcken, die jeweils eine Vielzahl von nichtflüchtigen Speicherzellen aufweisen; und einen nichtflüchtigen Systemspeicherabschnitt, der für jeden der Blöcke einen Multi-Bit-Flagwert speichert, der eine von einer Vielzahl von Wiederherstellbarkeitskategorien eines entsprechenden Blocks angibt, wobei die Wiederherstellbarkeitskategorien eine Blockkategorie „einwandfrei“, eine Blockkategorie „unbrauchbar“ und eine oder mehrere Zwischenstufen von Wiederherstellbarkeitskategorien einschließen. Die Speichersteuerung ist eingerichtet zum: Durchführen einer Einschaltsequenz für den Speicherchip, wobei die Einschaltsequenz das Auslesen von Multi-Bit-Flagwerten aus dem Speicherchip und das Speichern der Multi-Bit-Flagwerte im Betriebsspeicher für die Speichersteuerung einschließt; und Auswählen von Blöcken des Speicherchips, in denen die Speichersteuerung Blöcke basierend auf einem Sortieren der Blöcke, gewichtet nach der Wiederherstellbarkeitskategorie jedes der sortierten Blöcke, auswählt.
  • Eine Ausführungsform schließt einen nichtflüchtigen Speicherchip ein, der eine Vielzahl von Blöcken einschließt, die jeweils eine Vielzahl von nichtflüchtigen Speicherzellen und einen nichtflüchtigen Systemspeicher aufweisen, der für jeden der Blöcke einen Multi-Bit-Flagwert speichert, der eine von einer Vielzahl von Wiederherstellbarkeitskategorien eines entsprechenden Blocks angibt, und die Wiederherstellbarkeitskategorien eine Blockkategorie „einwandfrei“, eine Blockkategorie „unbrauchbar“ und eine oder mehrere Zwischenstufen von Wiederherstellbarkeitskategorien einschließen. Der Speicherchip schließt auch eine oder mehrere On-Chip-Steuerschaltungen ein, die mit den Blöcken und dem nichtflüchtigen Systemspeicher verbunden sind, wobei die eine oder die mehreren Steuerschaltungen eingerichtet sind, Daten in die Blöcke zu schreiben und Daten aus den Blöcken auszulesen und die Vielzahl von Multi-Bit-Flagwerten auszulesen und die Vielzahl von Multi-Bit-Flagwerten während einer Einschaltsequenz extern an den Speicherchip bereitzustellen.
  • Für die Zwecke dieses Dokuments kann eine Bezugnahme in der Beschreibung auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „eine andere Ausführungsform“ verwendet werden, um verschiedene Ausführungsformen oder dieselbe Ausführungsform zu beschreiben.
  • Für die Zwecke dieses Dokuments kann eine Verbindung eine direkte Verbindung oder eine indirekte Verbindung sein (z. B. über einen oder mehrere andere Teile). In einigen Fällen, wenn ein Element als mit einem anderen Element verbunden oder gekoppelt bezeichnet wird, kann das Element direkt mit dem anderen Element verbunden sein oder indirekt über zwischenliegende Elemente mit dem anderen Element verbunden sein. Wenn ein Element als direkt mit einem anderen Element verbunden bezeichnet wird, gibt es keine Zwischenelemente zwischen dem Element und dem anderen Element. Zwei Vorrichtungen sind „in Kommunikation“, wenn sie direkt oder indirekt miteinander verbunden sind, sodass sie elektronische Signale untereinander übertragen können.
  • Für die Zwecke dieses Dokumentes kann der Begriff „basierend auf” als „mindestens teilweise basierend auf gelesen werden.
  • Für die Zwecke dieses Dokuments impliziert ohne zusätzlichen Kontext die Verwendung numerischer Ausdrücke, wie etwa ein „erstes“ Objekt, ein „zweites“ Objekt und ein „drittes“ Objekt möglicherweise keine Sortierung von Objekten, sondern kann stattdessen zu Identifikationszwecken verwendet werden, um verschiedene Objekte zu identifizieren.
  • Für die Zwecke dieses Dokuments kann sich der Ausdruck „Satz“ von Objekten auf einen „Satz“ von einem oder mehreren der Objekte beziehen.
  • Die vorhergehende detaillierte Beschreibung wurde zu Zwecken der Veranschaulichung und Beschreibung vorgelegt. Sie soll nicht erschöpfend sein oder die genaue offenbarte Form beschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Lehre möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der vorgeschlagenen Technologie und ihre praktische Anwendung am besten zu erläutern und damit anderen Fachleuten die Möglichkeit zu geben, sie in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen, die für die jeweilige vorgesehene Verwendung geeignet sind, am besten zu nutzen. Es ist beabsichtigt, dass der Umfang durch die hier beigefügten Ansprüche definiert wird.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 9721662 [0019]
    • US 9082502 [0020]

Claims (15)

  1. Verfahren, aufweisend: Testen eines nichtflüchtigen Speicherchips, der eine Vielzahl von Blöcken aufweist, die jeweils eine Vielzahl von Speicherzellen aufweisen, aufweisend: Durchführen einer Sequenz einer Vielzahl von Testoperationen für jeden Block, wobei jede der Testoperationen eingerichtet ist, ein Vorhandensein eines entsprechenden Fehlertyps in dem Block, an dem die Testoperation durchgeführt wird, zu bestimmen; und Bestimmen, aus der Sequenz von Testoperationen, eines entsprechenden Multi-Bit-Flagwerts für jeden Block, wobei der Multi-Bit-Flagwert eine von einer Vielzahl von Wiederherstellbarkeitskategorien für den entsprechenden Block angibt, wobei die Wiederherstellbarkeitskategorien eine Blockkategorie „einwandfrei“, eine Blockkategorie „unbrauchbar“ und eine oder mehrere Zwischenstufen von Wiederherstellbarkeitskategorien einschließen; und Speichern des Multi-Bit-Flagwerts für jeden der Blöcke in einem nichtflüchtigen Speicher auf dem Speicherchip.
  2. Verfahren gemäß Anspruch 1, wobei: die Defekttypen eine Vielzahl von Fehlerkategorien einschließen.
  3. Verfahren gemäß einem der Ansprüche 1-2, wobei: die Defekttypen eine Vielzahl von Fehlergraden einer Fehlerkategorie einschließen.
  4. Verfahren gemäß einem der Ansprüche 1-3, wobei das Durchführen der Sequenz von Testoperationen für jeden Block weiterhin einschließt: Bestimmen, ob ein Block eine Testoperation einer kritischen Kategorie nicht besteht; und als Reaktion darauf, dass der Block die Testoperation der kritischen Kategorie nicht besteht, Setzen der Wiederherstellbarkeitskategorie des Blocks, der die Testoperation nicht besteht, als die unbrauchbare Blockkategorie.
  5. Verfahren gemäß Anspruch 4, wobei das Durchführen der Sequenz von Testoperationen für jeden Block weiterhin einschließt: als Reaktion darauf, dass der Block die Testoperation der kritischen Kategorie nicht besteht, Unterbrechen des Durchführens der Sequenz von Testoperationen für den Block.
  6. Verfahren gemäß einem der Ansprüche 1-5, wobei das Speichern des Multi-Bit-Flagwerts für jeden der Blöcke im nichtflüchtigen Speicher auf dem Speicherchip einschließt: Schreiben der Multi-Bit-Flagwerte in einen ROM-Sicherungsspeicher auf dem Speicherchip.
  7. Verfahren gemäß einem der Ansprüche 1-6, wobei das Speichern des Multi-Bit-Flagwerts für jeden der Blöcke im nichtflüchtigen Speicher auf dem Speicherchip einschließt: Schreiben der Multi-Bit-Flagwerte in einen Block des Speicherchips.
  8. Verfahren gemäß einem der Ansprüche 1-7, weiterhin aufweisend: Einstufen des Speicherchips in eine von einer Vielzahl von Gruppen von Qualitätsspezifikationen basierend auf den Multi-Bit-Flagwerten.
  9. Verfahren gemäß Anspruch 8, weiterhin aufweisend: Zusammenfügen des Speicherchips zu einem nichtflüchtigen Speicherpaket, das aus mehreren Speicherchips besteht.
  10. Verfahren gemäß Anspruch 9, wobei das Zusammenfügen des Speicherchips zu dem nichtflüchtigen Speicherpaket, das aus mehreren Speicherchips besteht, einschließt: Auswählen des Mehrfachspeicherchips aus einer Vielzahl von unterschiedlichen Gruppen von Qualitätsspezifikationen.
  11. Verfahren gemäß einem der Ansprüche 1-10, wobei das Durchführen einer Sequenz einer Vielzahl von Testoperationen für jeden Block einschließt: Durchführen jeder Testoperation der Sequenz an allen Blöcken vor dem Durchführen einer nachfolgenden Testoperation der Sequenz an den Blöcken.
  12. Nichtflüchtiges Speichersystem, das einschließt: Speicherchip, aufweisend: eine Vielzahl von Blöcken, die jeweils eine Vielzahl von nichtflüchtigen Speicherzellen aufweisen; und einen nichtflüchtigen Systemspeicherabschnitt, in dem für jeden der Blöcke ein Multi-Bit-Flagwert gespeichert ist, der eine von einer Vielzahl von Wiederherstellbarkeitskategorien eines entsprechenden Blocks angibt, wobei die Wiederherstellbarkeitskategorien eine Blockkategorie „einwandfrei“, eine Blockkategorie „unbrauchbar“ und eine oder mehrere Zwischenstufen von Wiederherstellbarkeitskategorien einschließen. und eine Speichersteuerung, die mit dem Speicherchip verbunden und eingerichtet ist zum: Durchführen einer Einschaltsequenz für den Speicherchip, wobei die Einschaltsequenz das Auslesen von Multi-Bit-Flagwerten aus dem Speicherchip und das Speichern der Multi-Bit-Flagwerte im Betriebsspeicher für die Speichersteuerung einschließt; und Auswählen von Blöcken des Speicherchips basierend auf einer Sortierung der Blöcke, die durch die Wiederherstellbarkeitskategorie jedes der Blöcke in der Sortierung gewichtet ist.
  13. Nichtflüchtiges Speichersystem gemäß Anspruch 12, wobei die Speichersteuerung weiterhin eingerichtet ist zum: Pflegen, für jeden der Blöcke, eines Zählwerts für eine Anzahl von Programmier-/Löschzyklen, die der Block erfährt, wobei die Sortierung der Blöcke auf der Zählwert der Blöcke der Anzahl von Programmier-/Löschzyklen basiert, die jeder Block erfährt, gewichtet nach der Wiederherstellbarkeitskategorie des Blocks.
  14. Nichtflüchtiges Speichersystem gemäß einem der Ansprüche 12-13, wobei: das Sortieren der Blöcke zur Verwendung in einem Abnutzungsnivelliervorgang dient.
  15. Nichtflüchtiges Speichersystem gemäß einem der Ansprüche 12-14, wobei: die Speichersteuerung die Blöcke für eine von der Speichersteuerung eingeleitete interne Datenverschiebungsoperation auswählt.
DE112020000182.2T 2019-12-09 2020-03-25 Blockqualitätsklassifizierung beim testen für nichtflüchtigen speicher und flags für mehrere fehlerhafte blöcke bezüglich produktdiversität Pending DE112020000182T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/708,383 2019-12-09
US16/708,383 US11397635B2 (en) 2019-12-09 2019-12-09 Block quality classification at testing for non-volatile memory, and multiple bad block flags for product diversity
PCT/US2020/024618 WO2021118617A1 (en) 2019-12-09 2020-03-25 Block quality classification at testing for non-volatile memory, and multiple bad block flags for product diversity

Publications (1)

Publication Number Publication Date
DE112020000182T5 true DE112020000182T5 (de) 2021-09-02

Family

ID=76209001

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000182.2T Pending DE112020000182T5 (de) 2019-12-09 2020-03-25 Blockqualitätsklassifizierung beim testen für nichtflüchtigen speicher und flags für mehrere fehlerhafte blöcke bezüglich produktdiversität

Country Status (5)

Country Link
US (1) US11397635B2 (de)
KR (1) KR20210077791A (de)
CN (1) CN113207306A (de)
DE (1) DE112020000182T5 (de)
WO (1) WO2021118617A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230070300A1 (en) * 2021-09-03 2023-03-09 Micron Technology, Inc. Embedded memory lifetime testing
US11687252B2 (en) 2021-10-18 2023-06-27 Western Digital Technologies, Inc. Non-volatile memory with pre-trained model and inference circuit
CN114356679B (zh) * 2022-03-18 2022-06-07 北京得瑞领新科技有限公司 实现坏块设置的方法、装置、存储介质及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9082502B2 (en) 2013-10-10 2015-07-14 Sandisk Technologies Inc. Bit line and compare voltage modulation for sensing nonvolatile storage elements
US9721662B1 (en) 2016-01-13 2017-08-01 Sandisk Technologies Llc Non-volatile memory with efficient programming

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4975798A (en) * 1989-09-05 1990-12-04 Motorola Inc. Voltage-clamped integrated circuit
US7275190B2 (en) * 2004-11-08 2007-09-25 Micron Technology, Inc. Memory block quality identification in a memory device
KR101005002B1 (ko) * 2005-11-01 2010-12-30 샌디스크 아이엘 엘티디 플래시 메모리에서의 테스트를 위한 방법, 시스템 및컴퓨터 판독가능한 코드를 저장한 저장 매체
US7609561B2 (en) 2006-01-18 2009-10-27 Apple Inc. Disabling faulty flash memory dies
JP5100663B2 (ja) * 2006-12-26 2012-12-19 株式会社アドバンテスト 試験装置および試験方法
WO2009124320A1 (en) * 2008-04-05 2009-10-08 Fusion Multisystems, Inc. Apparatus, system, and method for bad block remapping
US8805916B2 (en) * 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
US8526252B2 (en) * 2009-03-17 2013-09-03 Seagate Technology Llc Quiescent testing of non-volatile memory array
TWI401691B (zh) * 2009-03-20 2013-07-11 Phison Electronics Corp 具快閃記憶體測試功能的控制器及其儲存系統與測試方法
KR101214285B1 (ko) * 2010-12-30 2012-12-20 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
TW201327567A (zh) * 2011-09-16 2013-07-01 Mosaid Technologies Inc 具有包含專用的冗餘區域之層之記憶體系統
JP2013229080A (ja) * 2012-04-26 2013-11-07 Toshiba Corp 半導体記憶装置および半導体記憶装置のテスト方法
US8902657B2 (en) * 2012-09-07 2014-12-02 Kabushiki Kaisha Toshiba Semiconductor memory device and controller
JP2015036999A (ja) * 2013-08-13 2015-02-23 株式会社東芝 不揮発性半導体記憶装置、メモリコントローラ、及びメモリシステム
US9177673B2 (en) 2013-10-28 2015-11-03 Sandisk Technologies Inc. Selection of data for redundancy calculation by likely error rate
US9501400B2 (en) * 2013-11-13 2016-11-22 Sandisk Technologies Llc Identification and operation of sub-prime blocks in nonvolatile memory
US9443616B2 (en) * 2014-04-02 2016-09-13 Seagate Technology Llc Bad memory unit detection in a solid state drive
US9804922B2 (en) * 2014-07-21 2017-10-31 Sandisk Technologies Llc Partial bad block detection and re-use using EPWR for block based architectures
US9997258B2 (en) 2016-05-10 2018-06-12 Sandisk Technologies Llc Using non-volatile memory bad blocks
KR102487553B1 (ko) * 2016-12-07 2023-01-11 삼성전자주식회사 리페어 가능한 휘발성 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10223018B2 (en) 2017-04-19 2019-03-05 Sandisk Technologies Llc Bad page and bad block management in memory
US10223216B1 (en) 2017-10-30 2019-03-05 Western Digital Technologies, Inc. Non-volatile storage system that reclaims bad blocks
KR20190093370A (ko) 2018-02-01 2019-08-09 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
CN108897499A (zh) * 2018-07-19 2018-11-27 江苏华存电子科技有限公司 一种闪存内块的类型识别方法
US20200327953A1 (en) * 2019-04-11 2020-10-15 Pure Storage, Inc. Adaptive threshold for bad flash memory blocks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9082502B2 (en) 2013-10-10 2015-07-14 Sandisk Technologies Inc. Bit line and compare voltage modulation for sensing nonvolatile storage elements
US9721662B1 (en) 2016-01-13 2017-08-01 Sandisk Technologies Llc Non-volatile memory with efficient programming

Also Published As

Publication number Publication date
KR20210077791A (ko) 2021-06-25
US11397635B2 (en) 2022-07-26
WO2021118617A1 (en) 2021-06-17
CN113207306A (zh) 2021-08-03
US20210173734A1 (en) 2021-06-10

Similar Documents

Publication Publication Date Title
DE102018105529B4 (de) Managementschema zur Vermeidung einer Lösch- und Programmierstörung von Subblöcken im nichtflüchtigen Datenspeicher
DE102017128940B4 (de) System und Verfahren zum dynamischen Falten oder direkten Schreiben basierend auf Block-Störungsfreiheit in einem nichtflüchtigen Speichersystem
DE102008005338B4 (de) Integrierter Schaltkreis mit einer Speicherzellenanordnung und Verfahren zum Lesen eines Speicherzellenzustands unter Verwendung einer Mehrzahl von Teil-Leseoperationen
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE102018105750A1 (de) System und Verfahren für Hybrid-Push-Pull-Datenmanagement in einem nichtflüchtigen Datenspeicher
DE112017002776T5 (de) Nichtflüchtiger Speicher mit angepasster Steuerung vom Typ der Störinjektion während der Programmüberprüfung für eine verbesserte Programmleistung
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112020000182T5 (de) Blockqualitätsklassifizierung beim testen für nichtflüchtigen speicher und flags für mehrere fehlerhafte blöcke bezüglich produktdiversität
DE112015006285T5 (de) Mehrchip-doppelschreiben
DE102017104257A1 (de) Auf Zellenstrom basierende Bitleitungsspannung
DE102015116801A1 (de) Nichtflüchtige Speichersysteme und Verfahren zum Betreiben von nichtflüchtigen Speichersystemen
DE112008001151B4 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE102013104196A1 (de) System und Verfahren mit dreidimensionaler nichtflüchtiger Speichervorrichtung und Direktzugriffsspeicher
DE102015108143A1 (de) Nand-Vorab-Lese-Fehlerkorrektur
DE102007031027A1 (de) Leseverfahren einer Speichervorrichtung
DE102006001492A1 (de) Halbleiterspeicheranordnung und Verfahren zum Betreiben einer Halbleiterspeicheranordnung
DE102019124668A1 (de) Transistorschwellenspannungshaltung in 3d-speicher
DE102018123887A1 (de) Nichtflüchtiges Speichersystem. das fehlerhafte Blöcke regeneriert
DE102020115935A1 (de) Nichtflüchtiger speicher mit dem überspringen der programmprürung
DE112016000654T5 (de) Mehrzustands-Programmierung für nichtflüchtigen Speicher
DE112020000143T5 (de) Ssd-system, das einschaltzyklus-basierten read-scrub verwendet
DE102018105277A1 (de) Auf Hamming-Abstand basierende Binärdarstellungen von Zahlen
DE102019133156A1 (de) Ldpc-code-längeneinstellung

Legal Events

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

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE