DE102017128940B4 - System und Verfahren zum dynamischen Falten oder direkten Schreiben basierend auf Block-Störungsfreiheit in einem nichtflüchtigen Speichersystem - Google Patents

System und Verfahren zum dynamischen Falten oder direkten Schreiben basierend auf Block-Störungsfreiheit in einem nichtflüchtigen Speichersystem Download PDF

Info

Publication number
DE102017128940B4
DE102017128940B4 DE102017128940.2A DE102017128940A DE102017128940B4 DE 102017128940 B4 DE102017128940 B4 DE 102017128940B4 DE 102017128940 A DE102017128940 A DE 102017128940A DE 102017128940 B4 DE102017128940 B4 DE 102017128940B4
Authority
DE
Germany
Prior art keywords
block
mlc
blocks
per cell
capacity
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.)
Active
Application number
DE102017128940.2A
Other languages
English (en)
Other versions
DE102017128940A1 (de
Inventor
Dinesh Agarwal
Hitesh Golechchha
Guruswamy Ganesh
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 DE102017128940A1 publication Critical patent/DE102017128940A1/de
Application granted granted Critical
Publication of DE102017128940B4 publication Critical patent/DE102017128940B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3422Circuits or methods to evaluate read or write disturbance in nonvolatile memory, without steps to mitigate the problem
    • 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
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

Ein Verfahren zum Verwalten von Schreibvorgängen zum Schreiben in Blöcke in einem nicht flüchtigen Speichersystem (100), wobei das Verfahren umfasst:Empfangen (802) von Daten zur Speicherung in einem nicht flüchtigen Speicher, der Blöcke mit einer Kapazität von einem einzelnen Bit pro Zelle (604) und Blöcke mit einer Kapazität von einer Mehrzahl von Bits pro Zelle (606) aufweist,Bestimmen (702, 816), ob ein Block mit einer Kapazität einer Mehrzahl von Bits pro Zelle in dem nichtflüchtigen Speicher ein Störungsfreiheitskriterium erfüllt, wobei dann, wenn der Block mit der Kapazität einer Mehrzahl von Bits pro Zelle das Störungsfreiheitskriterium erfüllt, die empfangenen Daten direkt in den Block mit der Kapazität einer Mehrzahl von Bits pro Zelle geschrieben werden (706, 820),und wobei dann, wenn der Block mit der Kapazität einer Mehrzahl von Bits pro Zelle das Störungsfreiheitskriterium nicht erfüllt, die empfangenen Daten in einen Block mit einer Kapazität von einem Bit pro Zelle geschrieben werden (806) und außerdem die Daten in den Block mit der Kapazität einer Mehrzahl von Bits pro Zelle geschrieben werden.

Description

  • Hintergrund
  • Nichtflüchtige Speichersysteme, wie NAND-Flashspeicher enthaltende Festkörper- bzw. Halbleiter-Laufwerke (SSDs), werden allgemein in elektronischen Systemen verwendet, die von Verbraucherprodukten bis zu Computersystemen in der Unternehmensebene reichen. Die Leistungsfähigkeit eines nichtflüchtigen Speichers geringerer Dichte (weniger Bits pro Zelle) ist hinsichtlich der Lebensdauer häufig besser als die eines nichtflüchtigen Speichers höherer Dichte, wobei jedoch der Platz- und Kostenvorteil eines nichtflüchtigen Speichers höherer Dichte häufig zu SSD-Laufwerken führt, die beide Speicherarten enthalten. Die größere Lebensdauer eines Speichers niedriger Dichte, wie eines Einzelebenenzellen-(SLC)-Speichers mit einer Kapazität von einem einzelnen Bit pro Zelle mag nahelegen, dass Ausgangs-Host-Schreibvorgänge in eine SLC-Zelle gerichtet werden sollten, bevor später in einem als Schaltung bezeichneten Prozess von der SLC-Zelle in einen Multiebenenzelle-(MLC)-Speicher mit einer Kapazität von einer Mehrzahl von Bits pro Zelle geschrieben wird. Es gibt dabei Geschwindigkeitsvorteile, um Hostdaten direkt in den MLC-Speicher zu schreiben, und der Extra-Schreibschritt des ersten Schreibens von Hostdaten in den SLC-Speicher und des Faltens der Daten von mehreren SLC-Blöcken sodann in einen MLC-Block wird vermieden. Der Verlust besteht jedoch darin, dass durch Überspringen des typischen Pfades eines ersten Schreibvorgangs in SLC-Zellen und eines Faltens sodann von einer SLC-Zelle in eine MLC-Zelle weniger Schreibverlust-Schutz gegeben ist. Ein anfängliches Schreiben in eine SLC-Zelle vor einem Falten in eine MLC-Zelle bedeutet, dass es eine temporäre Kopie der korrekten Daten in der SLC-Zelle gibt, falls beim Faltungsschritt von der SIC-Zelle in die MLC-Zelle ein Fehler auftritt. Obwohl verschiedene Formen der Datenschutzcodierung angewandt werden können, um Daten vor Fehlern in einer direkten MLC-Schreibsituation zu schützen, können es dort Leistungskosten auf Grund der gesonderten erforderlichen Verarbeitung sein, um die Fehlerkorrekturdaten zu erzeugen.
  • US 2015/0149693 A1 betrifft einen nichtflüchtigen Speicher mit SLC-Blöcken und MLC-Blöcken und insbesondere ein Verfahren zum Verschieben fehlerhafter Daten in MLC-Blöcken.
  • Figurenliste
    • 1A ist ein Blockdiagramm eines nichtflüchtigen Beispiel-Speichersystems.
    • 1B ist ein Blockdiagramm, welches ein Beispiel-Speichermodul veranschaulicht.
    • 1C ist ein Blockdiagramm, welches ein hierarchisches Speichersystem veranschaulicht.
    • 2A ist ein Blockdiagramm, welches Beispiels-Komponenten einer Steuereinrichtung in einem nichtflüchtigen Speichersystem veranschaulicht.
    • 2B ist ein Blockdiagramm, welches Beispiels-Komponenten eines nichtflüchtigen Speichers eines nichtflüchtigen Speichersystems veranschaulicht.
    • 3 ist ein Beispiels-Schaltungsdiagramm eines nichtflüchtigen Speicherarrays, das eine mögliche Anordnung von Wortleitungen und Blöcken veranschaulicht.
    • 4 veranschaulicht eine physikalische Beispiels-Speicherorganisation des nichtflüchtigen Speichersystems von 1A.
    • 5 zeigt in einer gedehnten Darstellung einen Bereich des physikalischen Speichers von 4.
    • 6 veranschaulicht ein Blockdiagramm des nichtflüchtigen Speichers von 2A mit einem direkten MLC-Schreibpfad und einem indirekten zweistufigen Schreibpfad, der einen SLC-Schreibpfad und einen Faltungspfad von SLC nach MLC enthält.
    • 7 ist ein Ablaufdiagramm, welches eine Realisierung des Verwaltens einer Datenweiterleitung über verschiedene Schreibpfade in einem nichtflüchtigen Speicher veranschaulicht, wie er in 6 dargestellt ist.
    • 8 ist ein Ablaufdiagramm einer Realisierung des Verfahrens von 7.
    • 9 veranschaulicht ein Beispiel einer weiteren Unterteilung eines ungesunden bzw. nicht störungsfreien MLC-Blocks in störungsfreie und nicht störungsfreie Bereiche.
    • 10 ist ein Ablaufdiagramm einer alternativen Realisierung des Verfahrens von 8, welches ein Schreiben über unterschiedliche Schreibpfade für gesamte Blöcke oder aufgeteilte Blöcke enthält, wie in 9 veranschaulicht.
    • 11 veranschaulicht verschiedene Blocktypen in einem nichtflüchtigen Speicher in der Ordnung von relativem Leistungsvermögen und Lebensdauer.
  • Detaillierte Beschreibung
  • Es werden ein System und ein Verfahren zum Verwalten bzw. Managen von Hostdaten-Schreibvorgängen durch dynamische Faltungs- oder direkte Schreiboperationen auf der Grundlage einer Block-Störungsfreiheit in einem nichtflüchtigen Speichersystem offenbart. Das System und das Verfahren können aufgrund der Störungsfreiheit eines MLC-Blocks zur Verringerung der Chance eines Schreibfehlers vorhersagen, ob ein MLC-Block gesund bzw. störungsfrei ist, und sie können dann den betreffenden MLC-Block für direkte Schreibvorgänge während einer begrenzten Zeitspanne vor einer erneuten Prüfung der Störungsfreiheit des betreffenden Blocks nutzen. Wenn ein MLC-Block als nicht genügend störungsfrei bestimmt ist, kann der Block für die Verwendung mit weniger risikoreichen Faltungs-Schreibvorgängen von der SLC-Zelle identifiziert werden anstatt für direkte MLC-Schreibvorgänge. Die Störungsfreiheit eines MLC-Blocks kann in eine feinere Detailgenauigkeits- bzw. Auflösungsbestimmung aufgeteilt sein als eine binäre Kategorisierung in Störungsfreiheit oder Nicht-Störungsfreiheit, und die betreffende feinere Auflösungs-Kategorisierung kann zur weiteren Differenzierung der Behandlung von Blöcken in jeder der störungsfreien oder nicht störungsfreien Blockkategorien genutzt werden. Feinere Unterschiede zwischen der Störungsfreiheit von störungsfreien Blöcken können beispielsweise dazu herangezogen werden, verschiedene Zahlen von direkten Schreibzyklen jenen störungsfreien Blöcken zuzuordnen, wobei die Anzahl der direkten Schreibzyklen sich auf Programm- bzw. Programmierungs-/Löschzyklen bezieht, die für den Block zugelassen sind, bevor die Störungsfreiheit des Blocks erneut überprüft wird.
  • Gemäß einem Aspekt wird ein Verfahren zum Verwalten bzw. Managen von Schreibvorgängen in Blöcken in einem nichtflüchtigen Speichersystem beschrieben. Das Verfahren kann die Aufnahme von Daten zur Speicherung in einem nichtflüchtigen Speicher enthalten, der Blöcke mit einer Kapazität von einem einzelnen Bit pro Zelle und Blöcke mit einer Kapazität von einer Mehrzahl von Bits pro Zelle aufweist, und die Bestimmung einschließen, ob ein Block mit einer Kapazität von einer Mehrzahl von Bits pro Zelle in dem nichtflüchtigen Speicher ein Störungsfreiheitskriterium erfüllt. Wenn der Block mit der Kapazität einer Mehrzahl von Bits pro Zelle das Störungsfreiheitskriterium erfüllt, schließt das Verfahren direkt ein Schreiben der empfangenen Daten in den Block mit der Kapazität von mehreren Bits pro Zelle ein. Wenn der Block mit der Kapazität einer Mehrzahl von Bits pro Zelle das Störungsfreiheitskriterium nicht erfüllt, schließt das Verfahren ein Schreiben der empfangenen Daten in einen nichtflüchtigen Speicherblock mit einer Kapazität von einem einzelnen Bit pro Zelle und in den Block mit einer Kapazität von einer Mehrzahl von Bits pro Zelle ein. Bei verschiedenen Realisierungen kann das Störungsfreiheitskriterium auf einer Bitfehlerrate (BER) basiert sein, die für einen Block gemessen wird, und bei einigen weiteren Realisierungen bzw. Implementierungen können Blöcke, die auf der Grundlage eines bestimmten BER-Schwellwerts als nicht störungsfrei bestimmt sind, durch einen Bereich derart unterteilt bzw. subkategorisiert werden, dass in störungsfreie Bereiche des Blocks direkt geschrieben werden kann und dass in nicht störungsfreie Bereiche desselben Blocks in einem mehrstufigen Schreibvorgang geschrieben werden kann.
  • Bei einer Abwandlung des Verfahrens für einen Schreibvorgang in einen Block mit einer Kapazität von einer Mehrzahl von Bits pro Zelle erfolgt das Schreiben der empfangenen Daten in den Block der Kapazität eines einzelnen Bits pro Zelle zuerst, und dann werden die Daten später von dem Block mit der Kapazität eines einzelnen Bits pro Zelle in den Block mit der Kapazität einer Mehrzahl von Bits pro Zelle geschrieben. Bei einer alternativen Abwandlung erfolgt das Schreiben der Daten in den Block mit der Kapazität eines einzelnen Bits pro Zelle und in den Block mit der Kapazität einer Mehrzahl von Bits pro Zelle derart gleichzeitig, dass gesonderte direkte Schreibvorgänge der empfangenen Daten für beide Typen von Zellen im Wesentlichen parallel vorgenommen werden. Bei beiden Abwandlungen ist eine Sicherungs- bzw. Back-up-Kopie der Daten in dem Block mit der Kapazität eines einzelnen Bits pro Zelle vorhanden, die zur Wiedergewinnung von Daten herangezogen werden kann, falls bestimmt wird, dass der Datenschreibvorgang in den Block mit der Kapazität einer Mehrzahl von Bits pro Zelle verfälscht oder in anderer Weise fehlerhaft ist.
  • Bei einem anderen Aspekt enthält ein nichtflüchtiges Speichersystem einen nichtflüchtigen Speicher, der eine Vielzahl von Einzelebenenzellen-(SLC)-Blöcken mit Speicherzellen einer Kapazität von einem einzelnen Bit pro Zelle und eine Vielzahl von Multiebenenzellen-(MLC)-Blöcken aufweist, die Speicherzellen mit einer Kapazität von einer Mehrzahl von Bits pro Zelle aufweisen. Das System enthält außerdem eine Steuereinrichtung in Kommunikation mit dem nichtflüchtigen Speicher. Die Steuereinrichtung ist so ausgelegt, um empfangene Hostdaten in als störungsfrei identifizierte MLC-Blöcke über einen direkten MLC-Schreibpfad zu schreiben, der die SLC-Blöcke umgeht. Die Steuereinrichtung ist außerdem so ausgelegt, um empfangene Hostdaten in als nicht störungsfrei identifizierte MLC-Blöcke über einen Mehrschritt-Schreibpfad mittels eines empfänglichen Schreibvorgangs in zumindest einen SLC-Block zu schreiben, wobei störungsfreie MLC-Blöcke solche MLC-Blöcke sind, die innerhalb eines ersten Bereichs ein Störungsfreiheitskriterium aufweisen, und wobei nicht störungsfreie MLC-Blöcke solche MLC-Blöcke sind, die in einem zweiten, von dem ersten bestimmten Bereich verschiedenen bestimmten Bereich das Störungsfreiheitskriterium aufweisen. Das Störungsfreiheitskriterium kann eine BER-Rate unterhalb eines bestimmten Schwellwerts sein.
  • Bei verschiedenen Realisierungen kann in dem nichtflüchtigen Speichersystem eine Block-Störungsfreiheits-Bewertungsdatenstruktur erzeugt werden, und die Steuereinrichtung kann störungsfreie und nicht störungsfreie Blöcke in der Datenstruktur identifizieren, einschließlich der Zuordnung einer direkten Schreibzahl oder eines Zählers bzw. Zählstandes für als störungsfrei bestimmte MLC-Blöcke. Die direkte Schreibzahl kann von der Steuereinrichtung dazu herangezogen werden, die Anzahl von direkten Schreibvorgängen in einen bestimmten störungsfreien MLC-Block zu begrenzen, bis MLC-Blöcke hinsichtlich der Störungsfreiheit neu zu bewerten sind.
  • Bei einem noch weiteren Aspekt wird ein nichtflüchtiges Speichersystem offenbart, welches einen nichtflüchtigen Speicher enthält. Der nichtflüchtige Speicher kann Einzelebenenzellen-(SLC)-Blöcke mit Speicherzellen einer Kapazität von einem einzelnen Bit pro Zelle, Mehrebenenzellen-(MLC)-Blöcke mit Speicherzellen einer Kapazität von einer Mehrzahl von Bits pro Zelle und eine Block-Störungsfreiheits-Ratingdatenstruktur enthalten, die MLC-Block-Störungsfreiheitsdaten für zumindest einen Bereich der MLC-Blöcke aufweist. Das nichtflüchtige Speichersystem kann außerdem Mittel bzw. Einrichtungen zum Schreiben von empfangenen Hostdaten in MLC-Blöcke, die in der Block-Störungsfreiheits-Datenstruktur als störungsfrei identifiziert sind, über einen direkten MLC-Schreibpfad, der die SLC-Blöcke umgeht, und zum Schreiben von empfangenen Hostdaten in MLC-Blöcke, welche in der Block-Störungsfreiheits-Datenstruktur als nicht störungsfrei identifiziert sind, über einen mehrstufigen Schreibpfad mittels eines anfänglichen Schreibvorgangs in zumindest einen SLC-Block enthalten. Die störungsfreien MLC-Blöcke können MLC-Blöcke sein, welche ein Störungsfreiheitskriterium innerhalb eines ersten Bereichs aufweisen, und nicht störungsfreie MLC-Blöcke können MLC-Blöcke sein, die das Störungsfreiheitskriterium in einem zweiten bestimmten Bereich aufweisen, der von dem ersten bestimmten Bereich verschieden ist.
  • Unter Bezugnahme nunmehr auf 1A ist ein ein nichtflüchtiges Speichersystem veranschaulichendes Blockdiagramm dargestellt. Das nichtflüchtige Speicher-(NVM)-System 100 enthält eine Steuereinrichtung 102 und einen nichtflüchtigen Speicher, der aus einem oder mehreren nichtflüchtigen Speicherplättchen 104 aufgebaut sein kann. Wie hier benutzt, bezieht sich der Begriff Plättchen auf den Satz von nichtflüchtigen Speicherzellen und zugehöriger Schaltungsanordnung zum Verwalten der physikalischen Operation jener nichtflüchtigen Speicherzellen, die auf einem einzelnen Halbleitersubstrat gebildet sind. Die Steuereinrichtung 102 ist mit einem Hostsystem gekoppelt und überträgt Befehlsfolgen für Lese-, Programmierungs- und Löschoperationen zu dem nichtflüchtigen Speicherplättchen 104.
  • Die Steuereinrichtung 102 (die eine Flashspeicher-Steuereinrichtung sein kann) kann die Form einer Verarbeitungsschaltung, eines oder mehrerer Mikroprozessoren oder Prozessoren (hier auch als zentrale Verarbeitungseinheiten (CPUs) bezeichnet) und eines durch einen Computer lesbaren Mediums annehmen, welches einen mittels eines Computers lesbaren Programmcode (z.B. Software oder Firmware) speichert, der beispielsweise durch die (Mikro)-Prozessoren, Verknüpfungsglieder, Schalter, eine anwendungsspezifische integrierte Schaltung (ASIC), eine programmierbare Logik-Steuereinrichtung und einen eingebetteten Mikrocontroller ausführbar ist. Die Steuereinrichtung 102 kann mit Hardware und/oder Firmware ausgeführt sein, um die unten beschriebenen und in den Ablaufdiagrammen dargestellten verschiedenen Funktionen auszuführen. Außerdem können einige der Komponenten, die für die Steuereinrichtung als intern dargestellt sind, auch extern für die Steuereinrichtung gespeichert sein, und andere Komponenten können verwendet sein. Außerdem könnte die Formulierung „wirkungsmäßig in Kommunikation“ eine direkte Kommunikation mit oder eine indirekte (drahtgebundene oder drahtlose) Kommunikation mit bzw. durch eine oder mehrere Komponenten bedeuten, die hier dargestellt oder beschrieben sein können oder nicht.
  • Wie hier benutzt, stellt eine Flashspeicher-Steuereinrichtung eine Vorrichtung dar, die in einem Flashspeicher gespeicherte Daten verwaltet und die mit einem Host, wie einem Computer oder einem elektronischen Gerät kommuniziert. Eine Flashspeicher-Steuereinrichtung kann zusätzlich zu der hier beschriebenen spezifischen Funktionalität verschiedene Funktionalität aufweisen. So kann die Flashspeicher-Steuereinrichtung beispielsweise den Flashspeicher formatieren, um sicherzustellen, dass der Speicher richtig arbeitet; sie kann schlechte Speicherzellen aussortieren und Ersatzzellen zum Ersetzen für zukünftig ausgefallene Zellen zuweisen. Ein Bereich der Ersatzzellen kann dazu genutzt werden, Firmware für den Betrieb der Flashspeicher-Steuereinrichtung und zur Implementierung von anderen Merkmalen zu enthalten. Wenn im Betrieb ein Host Daten aus dem Flashspeicher lesen oder in diesen schreiben muss, wird er mit der Flashspeicher-Steuereinrichtung kommunizieren. Falls der Host eine Verknüpfungsadresse bereitstellt, unter der Daten zu lesen/zu schreiben sind, kann die Flashspeicher-Steuereinrichtung die von dem Host empfangene logische Adresse in eine physikalische Adresse in dem Flashspeicher umsetzen. Die Flashspeicher-Steuereinrichtung kann außerdem verschiedene Speichermanagementfunktionen ausführen, wie, ohne indessen darauf beschränkt zu sein, eine Verschleißegalisierung (Verteilung von Schreibvorgängen zur Vermeidung eines Verschleißes bzw. einer Abnutzung von spezifischen Blöcken des Speichers, in die ansonsten wiederholt geschrieben würde) und eine Abfallsammlung (Verschieben lediglich der gültigen Seiten von Daten zu einem neuen Block, nachdem ein Block voll ist, womit der volle Block gelöscht und neu verwendet werden kann).
  • Das nichtflüchtige Speicherplättchen 104 kann irgendein geeignetes nichtflüchtiges Speichermedium enthalten, einschließlich NAND-Flashspeicherzellen und/oder NOR-Flashspeicherzellen. Die Speicherzellen können die Form von Festkörper- (beispielsweise Flash)-Speicherzellen annehmen, und sie können einmalig programmierbar, wenige Male programmierbar oder viele Male programmierbar sein. Die Speicherzellen können außerdem Einzelebenen-Zellen (SLC), Mehrebenen-Zellen (MLC), Drei-ebenen-Zellen (TLC) sein oder andere Speicherzellenebenen-Technologien nutzen, die nunmehr oder später entwickelt werden. Für Zwecke dieser Offenbarung wird hier der Begriff MLC dazu benutzt, um sich auf Speicherzellen mit einer Kapazität von zwei oder mehr Bits pro Zelle zu beziehen, so dass ein TLC-Speicher daher ein Subsatz von MLC-Zellen ist, die spezifisch sind für eine Kapazität von drei Bits pro Zelle. Außerdem können die Speicherzellen in einer zweidimensionalen oder dreidimensionalen Weise hergestellt sein.
  • Das Interface zwischen der Steuereinrichtung 102 und dem nichtflüchtigen Speicherplättchen 104 kann irgendein geeignetes Flash-Interface sein, wie ein Toggle-Mode (Umschaltmodus) 200, 400 oder 800. Bei einem Ausführungsbeispiel kann das Speichersystem 100 ein kartenbasiertes System sein, wie eine digitale Sicherungs-(SD)-Karte oder eine digitale Mikro-Sicherungs-(Mikro-SD)-Karte. Bei einem alternativen Ausführungsbeispiel kann das Speichersystem 100 Bereich eines eingebetteten Speichersystems sein.
  • Obwohl bei dem in 1A dargestellten Beispiel das NVM-System 100 einen einzigen Kanal zwischen der Steuereinrichtung 102 und dem nichtflüchtigen Speicherplättchen 104 enthält, ist der hier beschriebene Gegenstand nicht darauf beschränkt, einen einzigen Speicherkanal aufzuweisen. So können beispielsweise bei einigen NAND-Speichersystemarchitekturen, wie in 1B und 1C dargestellt, 2, 4, 8 oder mehr NAND-Kanäle zwischen der Steuereinrichtung und der NAND-Speichervorrichtung existieren, und zwar in Abhängigkeit von den Fähigkeiten der Steuereinrichtung. Bei jedem der hier beschriebenen Ausführungsbeispiele kann mehr als ein einziger Kanal zwischen der Steuereinrichtung und dem Speicherplättchen sogar dann existieren, wenn in den Zeichnungen ein einziger Kanal dargestellt ist.
  • 1B veranschaulicht ein Speichermodul 200, welches eine Vielzahl von NVM-Systemen 100 enthält. Als solches kann das Speichermodul 200 eine Speicher-Steuereinrichtung 202 enthalten, die als Schnittstelle mit einem Host und dem Speichersystem 204 wirkt, welches eine Vielzahl von NVM-Systemen 100 enthält. Die Schnittstelle bzw. das Interface zwischen der Speicher-Steuereinrichtung 202 und den NVM-Systemen 100 kann ein Bus-Interface, wie ein Interface der seriellen fortgeschrittenen Technologieanbindung (SATA) oder ein Interface des peripheren Komponenten-Interfaceexpress (PCIe) sein. Das Speichermodul 200 kann bei einem Ausführungsbeispiel ein Festkörper-Laufwerk (SSD) sein, wie es in tragbaren Rechenvorrichtungen, wie Laptop-Computern und Tablet-Computern gefunden wird.
  • 1C ist ein Blockdiagramm, welches ein hierarchisches Speichersystem veranschaulicht. Ein hierarchisches Speichersystem 210 enthält eine Vielzahl von Speicher-Steuereinrichtungen 202, deren jede ein entsprechendes Speichersystem 204 steuert. Hostsysteme 212 können auf Speicher innerhalb des hierarchischen Speichersystems über ein Bus-Interface zugreifen. Bei einem Ausführungsbeispiel kann das Bus-Interface ein nichtflüchtiges Speicher-Express-(NVMe)-Interface oder ein Faserkanal-Interface über das Ethernet (FCoE) sein. Bei einem Ausführungsbeispiel kann das in 1C dargestellte System ein in einem Gestell anbringbares Massenspeichersystem sein, auf das durch eine Vielzahl von Host-Computern zugreifbar ist, wie dies in einem Datenzentrum oder an anderer Stelle zu finden ist, wo eine Massenspeicherung benötigt wird.
  • 2A stellt ein Blockdiagramm dar, welches Beispielskomponenten der Steuereinrichtung 102 detaillierter veranschaulicht. Die Steuereinrichtung 102 enthält ein Frontend-Modul 108, welches als Schnittstelle zu bzw. mit einem Host wirkt, ein Backend-Modul 110, welches als Schnittstelle mit bzw. zu einem oder mehreren nichtflüchtigen Speicherplättchen 104 wirkt, und verschiedene andere Module, welche Funktionen ausführen, die nunmehr im Detail beschrieben werden. Ein Modul kann beispielsweise die Form einer gepackten funktionalen Hardwareeinheit, die für die Nutzung mit anderen Komponenten ausgelegt ist, eines Bereiches eines Programmcodes (beispielsweise von Software oder Firmware), welche durch einen (Mikro)-Prozessor oder eine Verarbeitungsschaltung ausführbar ist, die üblicherweise eine bestimmte Funktion von verwandten Funktionen ausführt, oder einer eigenständigen Hardware oder Softwarekomponente aufweisen, die als Schnittstelle mit einem größeren System zusammenarbeitet.
  • Module der Steuereinrichtung 102 können ein auf dem Plättchen der Steuereinrichtung 102 vorhandenes MLC-Schreibstörungsfreiheits-Modul 112 enthalten. Wie unten beschrieben, kann das MLC-Schreibstörungsfreiheits-Modul 112 eine Funktionalität zum Bestimmen einer Störungsfreiheit von MLC-Blöcken in dem nichtflüchtigen Speicher 104 und auf der Grundlage der bestimmten MLC-Blockstörungsfreiheit zum Weiterleiten von Daten von einem Host direkt zu den MLC-Blöcken oder zuerst zu SLC-Blöcken und dann zum Falten zu MLC-Blöcken bereitstellen. Das MLC-Schreibstörungsfreiheits-Modul 112 der Steuereinrichtung 102 kann dies durch Nachführen einer Bitfehlerrate (BER) für MLC-Blöcke in gewissen Intervallen und durch Zuordnen eines Störungsfreiheitsniveaus zu dem MLC-Block vornehmen, wobei in einen störungsfreien MLC-Block während einer gewissen Anzahl von Zyklen direkt eingeschrieben werden kann, bevor eine neue Überprüfung auf Störungsfreiheit erfolgt, und wobei in einen weniger störungsfreien MLC-Block lediglich durch einen Faltungsprozess von SLC-Blöcken eingeschrieben werden kann.
  • Eine Puffermanager-/Bus-Steuereinrichtung 114 verwaltet Puffer in einem Speicher (RAM) 116 mit wahlfreiem Zugriff und steuert die Busvermittlung der Steuereinrichtung 102. Ein Festwert- bzw. Lesespeicher (ROM) 118 speichert einen System-Bootcode bzw. -Hochladecode. Obwohl in 2A als von der Steuereinrichtung 102 gesondert angeordnet dargestellt, können einer oder beide von dem RAM-Speicher 116 und dem ROM-Speicher 118 bei anderen Ausführungsbeispielen innerhalb der Steuereinrichtung 102 untergebracht sein. Bei noch anderen Ausführungsbeispielen können sich Bereiche des RAM-Speichers 116 und des ROM-Speichers 118 sowohl innerhalb der Steuereinrichtung 102 als auch außerhalb der Steuereinrichtung befinden. Ferner können sich die Steuereinrichtung 102, der RAM-Speicher 116 und der ROM-Speicher 118 bei einigen Realisierungen auf gesondertem Halbleiterplättchen befinden.
  • Der RAM-Speicher 116 in dem NVM-System 100 kann, ob außerhalb der Steuereinrichtung 102, innerhalb der Steuereinrichtung oder sowohl außerhalb als auch innerhalb der Steuereinrichtung 102 vorhanden, eine Anzahl von Posten enthalten, die eine Kopie von einem oder mehreren Bereichen der eine logische in eine physikalische Abbildung vornehmenden Abbildungstabellen für das NVM-System 100 enthalten. Der RAM-Speicher 116 kann, wie unten weiter beschrieben, Blockstörungsfreiheits-Bewertungen 117 für jeden der MLC-Blöcke des nichtflüchtigen Speichers enthalten. Der RAM-Speicher 116 kann außerdem eine freie Blockliste 121 enthalten, die derzeit nicht benutzte physikalische Blöcke bezeichnet, welche zur Verwendung in dem nichtflüchtigen Speicher 104 verfügbar sind.
  • Das Frontend-Modul 108 enthält ein Host-Interface 120 und ein Interface (PHY) 122 einer physikalischen Schicht, welches das elektrische Interface mit bzw. zu dem Host oder einer Speicher-Steuereinrichtung der nächsten Ebene bereitstellt. Die Wahl des Typs des Host-Interfaces 120 kann vom Typ des verwendeten Speichers abhängen. Beispiele von Host-Interfaces 120 enthalten, ohne darauf beschränkt zu sein, SA-TA, SATA-Express, SAS, Fibrekanal, USB, PCIe und NVMe. Das Host-Interface 120 erleichtert in typischer Weise den Transfer für Daten, Steuersignalen und Taktsignalen bzw. Zeitsteuersignalen.
  • Das Backend-Modul 110 enthält eine Fehlerkorrektur-Steuereinrichtungs-(ECC)-Maschine 124, welche die von dem Host empfangenen Datenbytes codiert und aus dem nichtflüchtigen Speicher gelesene Datenbytes decodiert und hinsichtlich Fehler korrigiert. Eine Befehls-Folgesteuereinrichtung 126 erzeugt zu dem nichtflüchtigen Speicherplättchen 104 zu übertragende Befehlsfolgen, wie Programm- und Löschbefehlsfolgen. Ein RAID-Modul 128 (redundantes Array von unabhängigen Laufwerken) verwaltet die Erzeugung einer RAID-Parität und die Wiedergewinnung von fehlgeschlagenen Daten. Die RAID-Parität kann als zusätzliche Ebene eines Integritätsschutzes für die Daten verwendet werden, die in das NVM-System 100 geschrieben werden. In einigen Fällen kann das RAID-Modul 128 ein Bereich der ECC-Maschine 124 sein. Ein Speicher-Interface 130 stellt die Befehlsfolgen für das nicht flüchtige Speicherplättchen 104 bereit und empfängt Statusinformationen von dem nichtflüchtigen Speicherplättchen 104. Bei einem Ausführungsbeispiel kann das Speicher-Interface 130 ein Doppeldatenraten-(DDR)-Interface sein, wie ein Toggle-Mode-(Umschaltmodus) 200-, 400- oder 800-Interface. Eine Flashsteuerungsschicht 132 steuert den Gesamtbetrieb des Backend-Moduls 110.
  • Zusätzliche Komponenten des in 2A dargestellten NVM-Systems 100 enthalten die Medienverwaltungsschicht 138, die eine Abnutzungsegalisierung von Speicherzellen des nichtflüchtigen Speicherplättchens 104 vornimmt und Abbildungstabellen und Aufgaben einer logischen Abbildung in eine physikalische Abbildung oder von Lesevorgängen ausführt. Das NVM-System 100 enthält außerdem andere diskrete Komponenten 140, wie externe elektrische Schnittstellen, externe RAM-Speicher, Widerstände, Kondensatoren oder andere Komponenten, die als Schnittstelle mit bzw. zu der Steuereinrichtung 102 wirken. Bei alternativen Ausführungsbeispielen sind eine oder mehrere von dem Interface 122 für die physikalische Schicht, dem RAID-Modul 128, der Medienverwaltungsschicht 138 und der Puffermanagement/Bus-Steuereinrichtung 114 optische Komponenten, die sich nicht notwendigerweise in der Steuereinrichtung 102 befinden.
  • 2B ist ein Blockdiagramm, welches Beispielskomponenten des nichtflüchtigen Speicherplättchens 104 detaillierter veranschaulicht. Das nichtflüchtige Speicherplättchen 104 enthält eine periphere Schaltungsanordnung 141 und ein nichtflüchtiges Speicherarray 142. Das nichtflüchtige Speicherarray 142 enthält die zur Speicherung von Daten verwendeten nichtflüchtigen Speicherzellen. Die nichtflüchtigen Speicherzellen können irgendwelche geeigneten nichtflüchtigen Speicherzellen sein, einschließlich NAND-Flashspeicherzellen und/oder NOR-Flashspeicherzellen in einer zweidimensionalen und/oder dreidimensionalen Konfiguration. Die periphere Schaltungsanordnung 141 enthält eine Zustandsmaschine 152, die Zustandsinformationen für die Steuereinrichtung 102 bereitstellt. Das nichtflüchtige Speicherplättchen 104 enthält ferner einen Daten-Zwischen- bzw. Pufferspeicher bzw. -Cachespeicher 156, der Daten zwischenspeichert, die aus den nichtflüchtigen Speicherzellen des nichtflüchtigen Speicherarrays 142 gelesen oder in diese programmiert werden. Der Daten-Cachespeicher 156 umfasst Sätze von Daten-Verriegelungseinrichtungen bzw. Daten-Latches 158 für jedes Datenbit in einer Speicherseite des nichtflüchtigen Speicherarrays 142. Somit kann jeder Satz von Daten-Latches 158 in der Breite eine Seite sein, und eine Vielzahl von Sätzen von Daten-Latches 158 kann in dem Daten-Cachespeicher 156 enthalten sein. Für ein nichtflüchtiges Speicherarray 142, welches zur Speicherung von n Bits pro Seite angeordnet ist, kann jeder Satz von Daten-Latches 158 beispielsweise N Daten-Latches enthalten, wobei jedes Daten-Latch ein Datenbit speichern kann.
  • Bei einer Realisierung kann ein einzelnes Daten-Latch eine Schaltung sein, die zwei stabile Zustände aufweist und die ein Datenbit speichern kann, wie einen Setz-/Rücksetz- oder SR-Zustand, ein Latch, welches aus NAND-Gliedern aufgebaut ist. Die Daten-Latches 158 können als eine Art von flüchtigem Speicher wirken, der lediglich Daten festhält, wenn er mit Spannung versorgt ist. Irgendeine Anzahl von bekannten Arten von Daten-Latchschaltungen kann für die Daten-Latches in jedem Satz von Daten-Latch 158 verwendet sein. Jedes Speicherplättchen eines nichtflüchtigen Speichers kann seine eigenen Sätze von Daten-Latches 158 und ein nichtflüchtiges Speicherarray 142 aufweisen. Eine periphere Schaltungsanordnung 141 enthält eine Zustandsmaschine 152, die für die Steuereinrichtung 102 eine Statusinformation bereitstellt. Die periphere Schaltungsanordnung 141 kann außerdem eine zusätzliche Eingabe-/Ausgabeschaltung, die von der Steuereinrichtung 102 dazu herangezogen worden kann, Daten zu und von den Latches 158 zu übertragen, sowie eine Reihe von Lesemoduln enthalten, die parallel arbeiten, um den Strom in jeder nichtflüchtigen Speicherzelle einer Seite von Speicherzellen in dem nichtflüchtigen Speicherarray 142 zu lesen bzw. zu erfassen. Jedes Lesemodul kann einen Leseverstärker enthalten, um zu detektieren, ob ein Leitungsstrom einer Speicherzelle in Verbindung mit einem entsprechenden Lesemodul oberhalb oder unterhalb eines Referenzpegels liegt.
  • Das nichtflüchtige Flashspeicherarray 142 in dem nichtflüchtigen Speicher 104 kann in Blöcken von Speicherzellen angeordnet sein. Ein Block von Speicherzellen ist die Löscheinheit, das heißt es ist die kleinste Anzahl von Speicherzellen, die physikalisch gemeinsam löschbar ist. Für eine gesteigerte Parallelität können die Blöcke jedoch in größeren Metablockeinheiten betrieben sein. Ein Block aus jeder von zumindest zwei Ebenen von Speicherzellen kann zur Bildung eines Metablocks logisch gemeinsam verbunden sein.
  • In 3 ist ein Beispiels-NAND-Array dargestellt. Während in einem NAND-Array eine große Anzahl von globalen Bitleitungen vorgesehen ist, sind in 3 der Einfachheit der Erläuterung wegen lediglich vier derartige Leitungen 302-308 dargestellt. Eine Anzahl von in Reihe geschalteten Speicherzellenketten 310-324 ist zwischen einer dieser Bitleitungen und einem Referenzpotential angeschlossen. Unter Heranziehung der Speicherzellenkette 314 als repräsentativ ist eine Vielzahl von Ladungsspeicherzellen 326-332 mit Auswahl-Transistoren 334 und 336 an jedem Ende der Kette in Reihe geschaltet. Wenn die Auswahl-Transistoren einer Kette leitend gemacht sind, ist die Kette zwischen ihrer Bitleitung und dem Referenzpotential verbunden. Eine Speicherzelle innerhalb der betreffenden Kette wird dann zu einem Zeitpunkt programmiert oder gelesen.
  • Wortleitungen 338-344 von 3 verlaufen individuell über das Ladungsspeicherelement einer Speicherzelle in einer Kette einer Anzahl von Ketten von Speicherzellen, und Verknüpfungsglieder bzw. Gatter 346 und 350 steuern die Zustände der Auswahl-Transistoren an jedem Ende der Ketten. Die Speicherzellenketten, welche Wort- und Steuerverknüpfungsglied-Leitungen 338-350 gemeinsam nutzen, sind zur Bildung eines Blocks 352 aus Speicherzellen aufgebaut, die gemeinsam gelöscht werden. Dieser Block aus Zellen enthält die minimale Anzahl von Zellen, die physikalisch zu einem Zeitpunkt löschbar sind. Eine Reihe bzw. Zeile von Speicherzellen, jene längs einer der Wortleitungen 338-344, wird zu einem Zeitpunkt programmiert.
  • Die Reihen bzw. Zeilen eines NAND-Arrays werden in konventioneller Weise in einer vorgeschriebenen sequentiellen Reihenfolge programmiert, und zwar in diesem Fall beginnend mit der Reihe längs der Wortleitung 344 am nächsten zu dem Ende der Ketten, das mit Masse- oder mit einem anderen gemeinsamen Potential verbunden ist. Die Reihe der Speicherzellen längs der Wortleitung 342 wird als nächstes, und so weiter durch den Block 352 hindurch programmiert.
  • Ein zweiter Block 354 ist ähnlich; seine Ketten aus Speicherzellen sind mit denselben globalen Bitleitungen verbunden wie die Ketten in dem ersten Block 352, weisen allerdings einen unterschiedlichen Satz von Wort- und Steuerverknüpfungsglied-Leitungen auf. Die Wort- und Steuerverknüpfungsglied-Leitungen werden durch Reihen- bzw. Zeilensteuerschaltungen auf ihre passenden Betriebsspannungen gesteuert. Falls es mehr als eine Ebene in dem System gibt, nutzt eine Speicherarchitektur gemeinsame Wortleitungen, die zwischen diesen verlaufen. Es kann dabei alternativ mehr als zwei Ebenen geben, welche Wortleitungen gemeinsam nutzen. Bei anderen Speicherarchitekturen werden die Wortleitungen einzelner Ebenen separat angesteuert.
  • Während das in 3 veranschaulichte Beispiels-NAND-Array dazu herangezogen worden ist, einen Prozess zum Schreiben von Daten in einen Speicherblock in einer Vorwärtsrichtung zu beschreiben, kann zum Schreiben von Daten in einen Speicherblock entweder in einer Vorwärtsrichtung oder in einer Rückwärtsrichtung eine Steuereinrichtung ändern, welches Ende der Speicherzellenketten mit einem Masse- oder anderen gemeinsamen Potential verbunden wird.
  • Bezugnehmend auf 4 ist eine andere konzeptionelle Darstellung eines repräsentativen Flashspeicherzellenarrays dargestellt. Vier Ebenen oder Subarrays 400, 402, 404 und 406 aus Speicherzellen können auf einem einzigen integrierten Speicherzellenchip, auf zwei Chips (zwei der Ebenen in jedem Chip) oder auf vier separaten Chips sein. Die spezifische Anordnung ist für die Erläuterung unten nicht von Bedeutung, und es können andere Zahlen von Ebenen in einem System existieren. Die Ebenen sind einzeln in Blöcke aus Speicherzellen unterteilt, was in 3 durch Rechtecke dargestellt ist, wie als Blöcke 408, 410, 412 und 414, die sich in entsprechenden Ebenen 400, 402, 404 und 406 befinden. Es kann Dutzende oder Hunderte von Blöcken in jeder Ebene geben. Blöcke können logisch miteinander verbunden sein, um einen Metablock zu bilden, der als einzelne Einheit gelöscht werden kann. So können beispielsweise die Blöcke 408, 410, 412 und 414 einen ersten Metablock 416 bilden. Die zur Bildung eines Metablocks verwendeten Blöcke brauchen nicht auf dieselben relativen Stellen innerhalb ihrer jeweiligen Ebenen beschränkt zu sein, wie dies in dem zweiten Metablock 418 dargestellt ist, der aus Blöcken 420, 422, 424 und 426 aufgebaut ist.
  • Die einzelnen Blöcke sind ihrerseits für Betriebs- bzw. Arbeitszwecke in Seiten von Speicherzellen ausgeteilt, wie dies in 5 veranschaulicht ist. Die Speicherzellen jedes der Blöcke 408, 410, 412 und 414 sind beispielsweise jeweils in acht Seiten P0-P7 aufgeteilt. Alternativ können 16, 32 und mehr Seiten von Speicherzellen innerhalb jedes Blocks vorhanden sein. Eine Seite stellt die Einheit von Daten dar, die innerhalb eines Blocks programmiert werden, enthaltend die minimale Menge von Daten, die zu einem Zeitpunkt programmiert werden. Die minimale Dateneinheit, die zu einem Zeitpunkt gelesen werden kann, kann kleiner sein als eine Seite. Eine Metaseite 500 ist in 4 als aus einer physikalischen Seite für jeden der vier Blöcke 408, 410, 412 und 414 gebildet dargestellt. Die Metaseite 400 enthält die Seite P2 in jedem der vier Blöcke, wobei jedoch die Seiten einer Metaseite nicht notwendigerweise dieselbe relative Position innerhalb jedes der Blöcke aufzuweisen brauchen. Eine Metaseite stellt in typischer Weise die maximale Programmierungseinheit dar, obwohl größere Gruppierungen programmiert werden können. Die in 4-5 offenbarten Blöcke werden hier als physikalische Blöcke bezeichnet, da sie sich, wie oben erörtert, auf Gruppen von physikalischen Speicherzellen beziehen. Wie hier verwendet, stellt ein logischer Block eine virtuelle Einheit eines Adressenraumes dar, der festgelegt ist, um dieselbe Größe aufzuweisen wie ein physikalischer Block. Jeder logische Block kann einen Bereich von logischen Blockadressen (LBAs) enthalten, die von einem Host empfangenen Daten zugehörig sind. Die LBAs werden dann zu einem oder mehreren physikalischen Blöcken in dem nichtflüchtigen Speichersystem 100 abgebildet, wo die Daten physikalisch gespeichert werden bzw. sind.
  • Wie oben angemerkt, kann es verschiedene Arten von Speicherblöcken in dem nichtflüchtigen Speicher 104 geben, beispielsweise SLC und MLC. Jedes nichtflüchtige Speicherplättchen in dem nichtflüchtigen Speicher kann lediglich einen Speicherblocktyp oder eine Kombination von Speicherblocktypen enthalten. Bei dem Beispiel von 6 ist eine konzeptionelle Darstellung eines nichtflüchtigen Speichers 600 (entsprechend dem nichtflüchtigen Speicher 104 in 2A, 2B) dargestellt, der SLC-Blöcke 604 und MLC-Blöcke 606 enthält. Obwohl die Drei-Ebenen-Zellen-MLC-Blöcke 606 (drei Bits pro Zelle) dargestellt sind, können bei anderen Realisierungen ein anderer Typ oder andere Typen von MLC-Blöcken von zwei oder mehr Bits pro Zellenkapazität verwendet sein. Unterschiedliche vereinfachte Schreibpfade sind ebenfalls von der Steuereinrichtung 602 zu den MLC-Blöcken 606 veranschaulicht. Ein direkter MLC-Schreibpfad 608 ist dargestellt, wo die Steuereinrichtung 602 Daten unter Umgehung jeglichen Zwischen-Anfangsschreibvorgangs in die SLC-Blöcke direkt in MLC-Blöcke 606 schreibt. Alternativ kann die Steuereinrichtung 602 zuerst Daten direkt, eventuell für die MLC-Blöcke 606 beabsichtigt, in die SLC-Blöcke 604 über einen SLC-Schreibpfad 610 schreiben und sodann die betreffenden Daten aus den SLC-Blöcken 604 in die MLC-Blöcke 606 in einem Faltungsprozess über einen Faltungspfad 612 schreiben. Der Faltungsprozess beschreibt generell das Kopieren von Daten aus einer Mehrzahl von SLC-Blöcken 604 mit einem einzelnen Bit pro Zelle in einen einzigen MLC-Block mit einer Mehrzahl von Bits pro Zellen. Da die Blöcke mit einer Mehrzahl von Bits pro Zelle MLC-Blöcke mit drei Bits pro Zellenblock sind, schließt der Faltungsprozess bei dem Beispiel von 5 das Heranziehen der Daten von drei SLC-Blöcken 604 und das Schreiben dieser Daten in einen MLC-Block 606 ein.
  • Das Weiterleiten von Daten von dem Host - direkt zu den MLC-Blöcken 606 oder mittels eines zweistufigen SLC-Schreibvorgangs und der Faltungsoperation von SLC zu MLC - wird durch das MLC-Schreib-Störungsfreiheitsmodul 112 in der Steuereinrichtung 102 gemanagt. Ein Beispiel des Prozesses der Steuereinrichtung bestimmt, welcher Schreibpfad zur Nutzung in 7 bestimmt ist. Die Steuereinrichtung bestimmt erst die Störungsfreiheit des MLC-Blocks (beim gegenwärtigen Beispiel von Blöcken (bei 702) mit drei Bits pro Zelle, zuweilen als TLC-Blöcke, einer Version von MLC-Blöcken, bezeichnet). Die Störungsfreiheit eines Blocks ist hier als die Fähigkeit des MLC-Blocks definiert, Daten korrekt zu speichern und zu behalten. Bei einer Realisierung kann die Störungsfreiheit durch die für den Block gemessene Fehlerrate (BER) bestimmt sein. Die BER-Rate kann unter Heranziehung irgendeiner aus einer Anzahl von bekannten BER-Messtechniken bzw. -Verfahren gemessen sein. So kann die BER-Rate beispielsweise für jeden Block durch die ECC-Maschine 124 in der Steuereinrichtung bestimmt sein, indem dem Block die BER-Rate der Wortleitung zugeordnet wird, die als die höchste BER-Rate in dem bestimmten Block aufweisend ermittelt worden ist. Die ECC-Maschine 124 kann irgendein Verfahren aus einer Anzahl von Bitfehler-Bestimmungsverfahren nutzen, wie generell das Heranziehen von Paritätsbitfehlern und Paritätsinformationen zur Lokalisierung und Identifizierung von Fehlern. Bei einem Beispiel kann ein störungsfreier MLC-Block irgendein Block sein, der eine BER-Rate aufweist, die niedriger ist als ein bestimmter Schwellwert, und ein weniger störungsfreier Block kann irgendein Block sein, der eine BER-Rate aufweist, die größer ist als der bestimmte Schwellwert. Falls gewisse Wortleitungen in einem Block den BER-Schwellwert überschreiten oder einige Speicherausfälle auf jenen Wortleitungen auftreten, kann der gesamte Block als nicht störungsfrei markiert werden, und er kann später in Zonen von guten und schlechten Wortleitungen unterteilt werden, wie dies unten detaillierter beschrieben wird. Somit kann die Entscheidung bei einer Realisierung, ob ein MLC-Block störungsfrei oder nicht störungsfrei ist, auf der maximalen BER-Rate basiert sein, die in einer Wortleitung des Blockes beobachtet wird. Wenn bestimmt wird, dass eine Wortleitung schlecht ist, beispielsweise aufgrund eines schwerwiegenden Ausfalls der Wortleitung, dann kann das MLC-Schreib-Störungsfreiheitsmodul die Wortleitung als schlecht voranlaufend behandeln und die betreffende Wortleitung für einen Schreibvorgang weglassen, oder sie kann alternativ die betreffende Wortleitung während direkter Schreibvorgänge mit Dummy-Daten speisen, so dass die schlechte Wortleitung in Zukunft keinen Beitrag zur Block-BER-Rate beiträgt.
  • Nachdem die Störungsfreiheit der Blöcke 606 durch den BER-Schwellwert und/oder durch andere Störungsfreiheits-Messung bestimmt ist, kann die Steuereinrichtung die MLC-Blöcke 606 in Pools aus störungsfreien und weniger störungsfreien Blöcken aufteilen, beispielsweise durch Markieren der störungsfreien Blöcke als störungsfrei in einer Block-Störungsfreiheits-Bewertungstabelle 117 oder einer anderen Datenstruktur, welche in dem Speicher, wie dem RAM-Speicher 116 (bei 704) festgehalten sein kann. Bei einer Realisierung werden die Daten das erste Mal, zu dem Daten in einen MLC-Block 606 geschrieben werden, der keine Störungsfreiheitsbestimmung enthielt, stets mittels eines zweistufigen Prozesses eines SLC-Schreibvorgangs und einer Faltung von SLC zu MLC geschrieben, um einen Sicherungsschutz bei einem Schreibfehler bzw. Schreibausfall zu ermöglichen, bei dem der anfängliche SLC-Schreibvorgang vorgenommen wird, während die BER-Rate oder eine andere Störungsfreiheitsmessung bezüglich des bestimmen MLC-Blocks vorgenommen wird.
  • Wenn bei nachfolgenden Schreiboperationen MLC-Blöcke 606 verfügbar sind, die als störungsfrei bestimmt worden sind, schreibt die Steuereinrichtung direkt Daten über den direkten MLC-Schreibpfad in jene MLC-Blöcke 606 (bei 706). Wenn in MLC-Blöcke 606, die ein Störungsfreiheitsniveau aufweisen, welches geringer ist als der bestimmte Schwellwert, oder bezüglich der eine Störungsfreiheitsbestimmung nicht vorgenommen worden ist, eingeschrieben werden, erfolgt dies lediglich durch den zweistufigen Prozess des SLC-Schreibvorgangs gefolgt von der Faltung von SLC zu MLC über den Faltungspfad (bei 708). Wie unten detaillierter beschrieben, wird in als störungsfrei bestimmte MLC-Blöcke über den direkten MLC-Schreibpfad eingeschrieben, wobei in sie jedoch lediglich während einer begrenzten Anzahl von Programm-/Löschzyklen eingeschrieben wird, bevor eine Neuüberprüfung erforderlich ist. Demgemäß wird jedem als störungsfrei bestimmten MLC-Block eine bestimmte Anzahl von Programm-/Löschzyklen für direkte MLC-Schreibpfad-Schreibvorgänge zugewiesen, bevor die Störungsfreiheit des betreffenden MLC-Blocks erneut überprüft wird. Wenn eine Schreiboperation für einen MLC-Block bestimmt wird, dann kann der Schreibvorgang, falls die bestimmte Anzahl von Programm-/Löschzyklen nicht erschöpft worden ist, direkt zu dem MLC-Block über den direkten MLC-Schreibpfad (bei 710, 706) vorgenommen werden. Falls die bestimmte Anzahl von Programm-/Löschzyklen seit der letzten Störungsfreiheitsprüfung erschöpft worden ist, dann leitet die Steuereinrichtung die Daten jedoch zuerst zu den SLC-Blöcken 604 und dann über den Faltungspfad zu dem vorangehenden störungsfreien MLC-Block 606, während die BER-Rate oder ein anderer Störungsfreiheitsstatus des vorangehenden störungsfreien MLC-Blocks erneut überprüft wird (bei 712, 704).
  • Bei einer Realisierung verfolgt die Steuereinrichtung 102 über das MLC-Schreib-Störungsfreiheitsmodul 112 sämtliche Transaktionen der Störungsfreiheit jedes MLC-Blocks (wie der MLC-Blöcke 606) durch Einbeziehen einer störungsfreien oder nichtstörungsfreien Markierung in der Blockstörungsfreiheits-Bewertungsdatenstruktur 117 in dem RAM-Speicher 116. Diese Datenstruktur 117 kann einen RAM- bzw. Programmierungs-/Löschzyklenzähler enthalten, der zugewiesen wird, wenn in den MLC-Block zuerst als störungsfrei identifiziert ist, und dessen Zählerstellung jedes Mal dekrementiert wird, wenn der MLC-Block eingeschrieben wird. Ein Beispiel einer detaillierteren Version des Prozesses von 7 ist in 8 dargestellt. Wenn Daten empfangen werden, die in die MLC-Blöcke des nichtflüchtigen Speichers eingeschrieben werden, identifiziert die Steuereinrichtung einen verfügbaren MLC-Block als den Zielblock für die Daten (bei 802). Die Steuereinrichtung 102 überprüft dann die Blockstörungsfreiheits-Ratingdatenstruktur 117, um zu bestimmen, ob der bestimmte MLC-Block zuvor bezüglich der Blockstörungsfreiheit beurteilt worden ist. Falls der Block unmarkiert ist und eine erste Störungsfreiheitsbeurteilung hatte und beispielsweise kein Eintrag gefunden wird, der angibt, dass der Block störungsfrei oder nicht störungsfrei ist, dann werden die empfangenen Daten zuerst in SLC-Blöcke geschrieben, und sodann wird eine Faltungsoperation ausgeführt, um die Daten aus den SLC-Blöcken in den MLC-Block zu schreiben (bei 804, 806). Dies ermöglicht es, den MLC-Block mit derzeit unbekannter Störungsfreiheit hinsichtlich des Datenschutzes durch den SLC-Schreibvorgang vorsichtig zu behandeln, während es außerdem das Störungsfreiheitskriterium des betreffenden MLC-Blocks, wie die BER-Rate für den betreffenden MLC-Block zulässt, um während der Faltungsoperation überprüft zu werden (bei 808).
  • Wie oben erwähnt, kann bei einer Implementierung ein bestimmter BER-Schwellwert von der Steuereinrichtung 102 über das MLC-Schreibstörungsfreiheits-Modul 112 genutzt werden, um zwischen störungsfreien Blöcken und nicht störungsfreien Blöcken zu sortieren. Falls der MLC-Block, der betrachtet wird, eine BER-Rate aufweist, die niedriger ist als der bestimmte Schwellwert, dann kann er als störungsfrei markiert und einer bestimmten Anzahl von Programmierungs-/Löschzyklen für nachfolgende direkte MLC-Schreiboperationen zugewiesen werden, bevor die Störungsfreiheit des betreffenden MLC-Blocks neu überprüft werden muss. Wenn in 8 die BER-Rate unter dem bestimmten Schwellwert liegt, wird der MLC-Block in der Blockstörungsfreiheits-Bewertungsdatenstruktur markiert und einer Anzahl eines direkten MLC-Schreibvorgangs in der Datenstruktur 117 zugeordnet. Wenn anschließend Daten als nächstes empfangen werden, um in den betreffenden MLC-Block (bei 802) geschrieben zu werden, wird die Steuereinrichtung erkennen, dass der Block in der Datenstruktur (bei 804) markiert worden ist; falls er als störungsfrei markiert ist und die Anzahl von direkten MLC-Schreibvorgängen, die dem betreffenden MLC-Block zugeordnet sind, nicht aufgetreten ist, werden die Daten direkt in den störungsfreien MLC-Block geschrieben (bei 816, 818 und 820).
  • Für einen MLC-Block, der als störungsfrei markiert worden ist, wird der Prozess des direkten Schreibens von Daten in den betreffenden MLC-Block solange wiederholt, bis die Anzahl der direkten MLC-Schreibvorgänge erreicht worden ist, an welcher Stelle die Steuereinrichtung 102 dann umkehren kann, um die Störungsfreiheit des betreffenden zuvor störungsfreien MLC-Blocks durch denselben Prozess des ersten Schreibens von Daten in den SLC-Block und des sodann erfolgenden Faltens der Daten in den MLC-Block erneut zu überprüfen und einen aktuelleren BER-Status zu erzielen (bei 818, 806 und 808). Der überprüfte MLC-Block kann in Abhängigkeit von der gegenwärtig ermittelten BER-Rate erneut als störungsfrei bestimmt oder als nicht störungsfrei markiert werden. Falls im Unterschied dazu ein MLC-Block zuvor als nicht störungsfrei markiert worden ist (bei 816), werden die empfangenen Daten durch den zweistufigen SLC-Schreib- und Faltungsprozess von SLC zu MLC laufen, um für mehr Schutz im Falle von Schreibfehlern zu sorgen. Bei der in 8 dargestellten Implementierung enthält der dargestellte Prozess ein erneutes Überprüfen des als nicht störungsfrei markierten MLC-Blocks, so dass dort die Wahrscheinlichkeit gegeben ist, dass er in einen störungsfreien Blockstatus gebracht werden kann, falls seine BER-Rate sich verbessert. Bei anderen Implementierungen wird in Betracht gezogen, dass dann, wenn ein MLC-Block als nicht störungsfrei gekennzeichnet ist, er nicht erneut überprüft wird, sondern stets als nicht störungsfrei markiert sein wird, womit er für den zweistufigen Schreibprozess durch die Steuereinrichtung 602 weitergeleitet wird (6).
  • Mehr als eine Ebene von „störungsfreien“ MLC-Blöcken wird ebenfalls in Betracht gezogen. Obwohl ein einziger Schwellwert für die BER-Rate oben erwähnt worden ist, wo MLC-Blöcke entweder störungsfrei sind, falls sie eine BER-Rate unterhalb des Schwellwerts aufweisen, und ansonsten als nicht störungsfrei markiert sind, kann eine Markierung von störungsfreien Blöcken in feinerer Aufteilung vorliegen. Unter Heranziehung der BER-Rate für einen Block als Maß der Blockstörungsfreiheit kann ein störungsfreier Block bei einem BER-Schwellwert festgelegt sein, der gut innerhalb der Fähigkeit der ECC-Maschine in der Steuereinrichtung liegt, zu korrigieren, während ein nicht störungsfreier Block ein solcher sein kann, der noch innerhalb der Fähigkeit der ECC-Maschine 124 (2A) liegt, zu korrigieren, jedoch eine BER-Rate aufweist, die eine höhere Wahrscheinlichkeit des Auftretens von Schreibfehlern angeben würde, die mehr Ressourcen und zeitaufwändigere Fehlerkorrekturprozesse in Anspruch nehmen würde. Nicht störungsfreie Blöcke, wie sie hier bezeichnet sind, sind noch brauchbare Blöcke, die imstande sind, Daten innerhalb der korrigierbaren Fehlerfähigkeit der ECC-Maschine 124 festzuhalten. Ein nicht störungsfreier Block bezieht sich in dieser Offenbarung auf einen noch brauchbaren Block, der jedoch aufgrund der gemessenen höheren BER-Rate risikoreicher ist und sich somit von einer Festlegung eines schlechten Blocks unterscheidet, bei der der Block als unbrauchbar betrachtet und aus dem Pool brauchbarer Blöcke entfernt wird. Ein nicht störungsfreier Block weist eine höhere BER-Rate als der bestimmte Schwellwert eines störungsfreien Blocks auf und wird daher als ein höheres Risiko bezüglich Schreibfehler aufweisend betrachtet, so dass Schreibvorgänge in den nicht störungsfreien Block direkt durch einen ersten SLC-Schreibvorgang in einen SLC-Block und eine anschließende Faltungsoperation geleitet werden, bei der die Daten aus dem SLC-Block und anderen in den nicht störungsfreien MLC-Block geschrieben werden.
  • Im Hinblick auf verschiedene Feineinteilungen von störungsfreien Blöcken kann eine Mehrzahl von Ebenen der Störungsfreiheit auf irgendeiner Anzahl von zusätzlichen Schwellwerten der BER-Rate basierend bestimmt werden. Falls beispielsweise ein hypothetisches nichtflüchtiges Speichersystem 100 eine ECC-Maschine 124 enthält, die imstande ist, bis zu 120 Fehlern zu korrigieren, und der bestimmte Schwellwert BER zur Identifizierung von störungsfreien Blöcken auf 60 Fehler festgelegt ist, dann kann jeder Block, der als eine BER-Rate von weniger als 60 Fehlern in dem Prozess von 7 gemessen wird, als störungsfrei markiert werden, und Blöcke mit 60 oder mehr Bitfehlern würden als nicht störungsfreie Blöcke gekennzeichnet werden, oder in Fällen, in denen ein schlechter Block als ein solcher mit 100 oder mehr Bitfehlern festgelegt ist, kann ein nicht störungsfreier Block, der mit dem zweistufigen SLC-Schreib- und SLC-MLC-Faltungsvorgang brauchbar ist, als ein solche mit einer gemessenen BER-Rate von 60-99 Bitfehlern festgelegt sein. Um für die höhere Auflösung des Störungsfreiheitsrankings in den störungsfreien Blöcken zu sorgen, kann der BER-Bereich von 0-59 Bitfehler bei diesem Beispiel ferner in bestimmte kleinere Bereiche unterteilt werden, wo eine höchstes Störungsfreiheitsbewertung den MLC-Blöcken mit einer gemessenen BER-Rate von 0-9 Fehlern zugeordnet wird, wobei ein zweithöchstes Störungsfreiheits-rating in MLC-Blöcken mit 10-19 gemessenen Bitfehlern zugeordnet sein kann, und so weiter bis zu einem Subsatz der störungsfreien Blöcke mit einem geringsten störungsfreien Bewertungs-Subsatz für störungsfreie Blöcke, beispielsweise von MLC-Blöcken mit 50-59 gemessenen Bitfehlern. Die Anzahl von Bitfehlern und die oben dargestellten Bereiche stellen lediglich eine mögliche Anordnung dar, und irgendeine Anzahl von anderen Schwellwerten und Bereichen kann ebenfalls in Betracht gezogen werden. Das Störungsfreiheits-Rating kann bei verschiedenen Ausführungsbeispielen in irgendeine Anzahl von Kategorien mit geradzahligen oder ungeradzahligen BER-Gruppierungen unterteilt sein.
  • Die MLC-Block-Störungsfreiheitsbewertungstabelle 117 oder eine andere Datenstruktur kann modifiziert werden, um eine numerische oder andere Bewertung zusätzlich zu der Störungsfreiheits-Ratingmarkierung einzubeziehen. Außerdem können unterschiedliche Bewertungen bzw. unterschiedliches Rating der Störungsfreiheit innerhalb Klasse von als störungsfrei markierten MLC-Blöcken unterschiedlichen bestimmten Zahlen von Schreibzyklen entsprechen, bevor eine erneute Überprüfung der Störungsfreiheit der MLC-Blöcke erfolgt. Als Beispiel für MLC-Blöcke, die in der störungsfreiesten Gruppe (0-9 Fehler bei dem obigen Beispiel) identifiziert sind, könnte die direkte MLC-Schreibzyklenzahl, welche jenen Blöcken zugewiesen ist, sechs betragen, wobei in Blöcke in der betreffenden störungsfreiesten Subgruppe von 0-9 Bitfehlern direkt geschrieben und sechs Mal gelöscht werden können, bevor eine nächste Block-Störungsfreiheitsüberprüfung unter Heranziehung eines zweistufigen Schreibens in SLC und SLC-in-MLC-Faltens zum Schreiben in den betreffenden MLC-Block ausgeführt wird. Die Anzahl direkter MLC-Schreibvorgänge kann für jede fortschreitend weniger störungsfreie Gruppe von störungsfreien MLC-Blöcken fortschreitend kleiner werden, wobei MLC-Blöcken im Fehlerbereich 10-19 eine Zykluszahl des direkten MLC-Schreibvorgangs von 5 zugewiesen wird, wobei Blöcken in der Fehler-Subgruppe 20-29 eine Zykluszahl des direkten MLC-Schreibvorgangs von 4 zugewiesen wird, und so weiter. Das obige Beispiel ist ebenfalls lediglich eine mögliche Anordnung von Störungsfreiheitsebenen bzw. -niveaus und entspricht Zyklenzahlen des direkten MLC-Schreibvorgangs vor einer nächsten Störungsfreiheits-Überprüfung. Andere Kombinationen werden in Betracht gezogen.
  • Bei noch weiteren Implementierungen können die Bestimmung der Störungsfreiheit von MLC-Blöcken und die nachfolgende Auswahl eines direkten Schreibvorgangs für jeden MLC-Block gegenüber einem zweistufigen SLC-Schreiben und SLC-MLC-Falten bei einer feineren Auflösung als lediglich der MLC-Blockebene angewandt werden. Bei einer Realisierung können die nicht störungsfreien Blöcke in Unterkategorien von teilweise sicheren nicht störungsfreien Blöcken, wobei die Anzahl von Wortleitungsfehlern geringer ist als ein erster Schwellwert, und in unsichere Blöcke gruppiert sein, wo die Anzahl von Wortleitungsfehlern größer als die oder gleich der Schwellwert-Ausfall- bzw. Schwellwert-Fehlerzahl ist. Ein Beispiel eines Schwellwerts, der nicht fehlerfreie Blöcke, welche teilweise sicher sind, von nicht störungsfreien Blöcken trennt, die unsicher sind, kann so sein, dass nicht störungsfreie Blöcke, die eine Wortleitungs-fehlerrate von weniger als 20% aufweisen, von der Steuereinrichtung 102 als teilweise sichere nicht störungsfreie MLC-Blöcke identifiziert werden können, und dass jene unsicheren Blöcke mit einer Wortleitungs-Fehlerrate, die größer als oder gleich 20% ist, als unsichere nicht störungsfreie MLC-Blöcke gekennzeichnet werden. Der Ausfall einer Wortleitung in einem Block kann als eine Wortleitung definiert sein, die zu viele Bitfehler aufweist, um von der ECC-Maschine 124 der Steuereinrichtung 102 korrigiert zu werden. Die 20%-Wortleitungs-Fehlerratenschwelle, welche zwischen teilweise sicheren nicht störungsfreien Blöcken und unsicheren nicht störungsfreien Blöcken unterteilt, stellt lediglich einen Beispiels-Schwellwert dar. Irgendeine andere Anzahl von Schwellwerten wird in Betracht gezogen. Beispielsweise kann ein Schwellwert im Bereich von 40%-50% von Wortleitungsfehlern als Trennlinie zwischen teilweise sicheren nicht störungsfreien Blöcken und unsicheren nicht störungsfreien Blöcken ausgewählt sein.
  • Bezugnehmend auf 9 kann dann, wenn ein ansonsten (durch BER) nicht störungsfreier MLC-Block 902 gefunden ist, bei dem eine geringere Anzahl als die bestimmte Anzahl von Wortleitungen vorliegt, die fehlerhafte Schreibvorgänge aufwiesen - wobei ein fehlerhafter Schreibvorgang als unkorrigierbarer ECC-Fehler festgelegt sein kann, wobei die Anzahl von in der Wortleitung durch die ECC-Maschine 124 detektierten Fehlern die Kapazität der ECC-Maschine 124 zu korrigieren übersteigt, andere der Wortleitungen jedoch individuell eine BER-Rate aufweisen, die innerhalb des einen oder der mehreren bestimmten Störungsfreiheits-Schwellwerte(s) liegen - eine zusätzliche Änderung in der Technik bzw. dem Verfahren zur Zuweisung des in Frage kommenden Schreibpfades zu den MLC-Blöcken angewandt werden. Bezugnehmend auf 9 können bei dieser Abwandlung in der Behandlung von nicht störungsfreien Blöcken anstelle eines gesamten MLC-Blockes 902, der einfach als nicht störungsfrei gekennzeichnet ist - wobei der oder die durch die Steuereinrichtung 602 zugewiesene(n) Schreibpfad(e) derselbe ist/dieselbe sind für den gesamten nicht störungsfreien MLC-Block - verschiedene Zonen oder Bereiche eines einzelnen MLC-Blocks 902 einem störungsfreien Bereich 904 oder einem nicht störungsfreien Bereich 906 ausgewiesen sein, so dass Daten zu jedem Bereich des MLC-Blocks auf der Grundlage der individuellen Störungsfreiheitsbewertung des betreffenden Bereiches unterschiedlich geleitet werden können. Bei dieser Realisierung kann die Störungsfreiheit der Bereiche 904, 906 eines MLC-Blocks 902 in der Störungsfreiheits-Bewertungstabelle 117 des MLC-Blocks für den MLC-Block 902 gespeichert sein. Jeder Bereich 904, 906 kann separat verfolgt werden und auf ihn kann separat eingewirkt werden. Jeder der störungsfreien Bereiche 904 und der nicht störungsfreien Bereiche 906 des MLC-Blocks 902 wird vorzugsweise in ganzzahligen Inkrementen von Wortleitungen gemessen, welche den Block 902 ausmachen.
  • Bei einer Realisierung kann jeder Block 902 in eine Vielzahl von störungsfreien Bereichen 904 und nicht störungsfreien Bereichen 906 aufgeteilt sein, wobei auf sämtlichen der Wortleitungen in jedem störungsfreien Bereich direkt geschrieben wird und wobei auf sämtlichen der Wortleitungen in jedem nicht störungsfreien Bereich mit einem Backup bzw. einer Unterstützung geschrieben wird (beispielsweise zuerst in SLC und sodann mit einer SLC-MLC-Faltung, so dass eine Sicherungskopie in SLC verbleibt). Die Wortleitungen sind auf der Grundlage des bestimmten BER-Schwellwerts, der in der Blockebene angewandt ist, hinsichtlich der BER-Rate bewertet und als nicht störungsfrei oder als störungsfrei markiert, wie in den oben erörterten Realisierungen. Es kann dabei eine Vielzahl von störungsfreien Bereichen 904 in einem einzigen Block 902 geben, wo die Störungsfreiheit eines störungsfreien Bereiches größer ist als die eines anderen störungsfreien Bereiches. Somit unterscheidet sich die Anzahl von bestimmten Programmierungs-/Löschzyklen, die zugewiesen sind, bevor die Block-Störungsfreiheit erneut überprüft werden muss, zwischen den verschiedenen störungsfreien Bereichen 904. Bei einer Realisierung können die verschiedenen Bereiche des Blocks 902 unabhängig verfolgt werden, wobei jedoch die Anzahl von bestimmten Programmierungs-/Löschzyklen vor einer erneuten Überprüfung der Block-Störungsfreiheit für den jene unterschiedlichen Bereiche enthaltenden Block durch den die geringste Störungsfreiheit aufweisenden Bereich der störungsfreien Bereiche definiert werden kann. Mit anderen Worten ausgedrückt kann die bestimmte Anzahl von Programmierungs-/Löschzyklen, für die ein Block vor einer Störungsfreiheits-Neuüberprüfung sicher genutzt werden kann, durch den störungsfreien Bereich 904 als die minimale bestimmte Anzahl von Programmierung-/Löschzyklen in dem Block festgelegt sein. Falls beispielsweise ein Block drei Bereiche aufweist, zwei störungsfreie und einen nicht störungsfreien, und die den störungsfreien Bereichen zugewiesenen sicheren Zyklen 5 bzw. 10 betragen, dann kann der Block fünf Mal ohne Neuüberprüfung programmiert und gelöscht werden, ohne dass die BER-Rate bezüglich störungsfreier Bereiche erneut überprüft wird. Nach dem fünften Programmierungs- und Löschzyklus kann die Steuereinrichtung die BER-Rate erneut hinsichtlich des ersten störungsfreien Bereiches 904 (zugewiesene fünf Zyklen) überprüfen, um zu bestimmen, ob er störungsfrei verbleibt oder in störungsfreie und nicht störungsfreie Subbereiche zu unterteilen ist. Der zweite störungsfreie Bereich (ursprünglich zugewiesene zehn Zyklen) kann noch für fünf weitere Zyklen genutzt werden, bevor es erforderlich ist, die BER-Rate erneut zu überprüfen. Der nicht störungsfreie Bereich des betreffenden Blocks 902 verbleibt generell nicht störungsfrei, wobei jedoch die BER-Rate für den betreffenden nicht störungsfreien Bereich nach jedem Zyklus überprüft werden kann um festzustellen, ob die SLC-Sicherungskopie erforderlich ist oder nicht.
  • Nunmehr sei auf 10 Bezug genommen, in der eine Abwandlung bezüglich der Prozesse von 7 und 8 dargestellt ist, welche eine Version der Unterteilung von nicht störungsfreien Blöcken in teilweise sichere nicht störungsfreie Blöcke, die einige Bereiche, in die direkt geschrieben wird, und einige Bereiche aufweisen, in die mittels einer Faltung von SLC-Blöcken geschrieben wird, und in generell unsichere Blöcke einschließt, in die sämtliche Schreibvorgänge in den Block mittels Faltung von SLC erfolgen. Wenn ein MLC-Block zuerst ausgewählt und dessen Störungsfreiheit nicht gemessen worden ist, misst die Steuereinrichtung 102 die Störungsfreiheit des Blocks, beispielsweise durch Messen der BER-Rate für den Block (bei 1002). Falls die individuelle Wortleitungs-Fehlerrate unterhalb eines Schwellwertes liegt, also beispielsweise weniger als ein festgelegter Prozentsatz der Wortleitungen ausgefallen ist, wie oben erwähnt, dann wird der Block als nicht störungsfrei markiert und die Steuereinrichtung 102 identifiziert und speichert außerdem Identifizierer für die sicheren Bereiche und die nicht sicheren Bereiche des betreffenden Blocks in der MLC-Block-Störungsfreiheits-Bewertungstabelle 117 in dem flüchtigen Speicher 126 (bei 1008, 1010 und 1012). Eine Zykluszahl für das direkte Schreiben wird den sicheren Bereichen zugewiesen und gibt die Häufigkeit an, mit der in den sicheren Bereich direkt geschrieben werden kann, bevor die Störungsfreiheit des Blocks (bei 1014) erneut überprüft wird. Eintreffende Daten für nachfolgende Schreibbefehle, die die Steuereinrichtung für den MLC-Block auswählt, werden dann die Daten aufweisen, die in direkten MLC-Schreibvorgängen in die sicheren Bereiche des Blockes geschrieben werden; in die für den betreffenden Block identifizierten nicht sicheren Bereiche werden Daten über den zweistufigen Schreibprozess geleitet, enthaltend einen SLC-Schreibvorgang und eine SLC-MLC-Faltung. Dieses Schreibmuster in dem betreffenden MLC-Block wird solange wiederholt, bis die Zykluszahl des direkten Schreibens für den Block erreicht worden ist (bei 1016). Die Störungsfreiheit des Blockes wird dann durch den indirekten zweistufigen Schreibprozess, wie zuvor beschrieben, erneut überprüft, wenn der Block das nächste Mal als Ziel für einen weiteren Datenschreibvorgang ausgewählt wird. Bei einer Realisierung kann jedem sicheren Bereich des MLC-Blocks ein und dieselbe Zykluszahl des direkten Schreibens zugewiesen werden.
  • Wenn die für einen Block (bei 1002) gemessene BER-Rate eine BER-Rate angibt, die größer als der oder gleich dem Schwellwert zur Identifizierung von nicht störungsfreien Blöcken (bei 1004) ist und eine Wortleitungs-Fehlerrate aufweist, die größer ist als der Wortleitungs-Fehlerschwellwert (beispielsweise 20%) (bei 1006), dann wird die Steuereinrichtung den Block als nicht störungsfrei markieren und anschließende Schreibvorgänge können alle in den Block durch indirektes zweistufiges Schreiben geschrieben werden, was eine SLC-MLC-Faltung (bei 1018, 1020) umfasst. In entsprechender Weise wie zuvor erörtert wird die Steuereinrichtung dann, wenn die gemessene BER-Rate kleiner ist als der BER-Schwellwert (bei 1004), den Block als störungsfrei in der MLC-Block-Störungsfreiheits-Bewertungstabelle 117 markieren und dem Block (bei 1024) eine Zykluszahl des direkten MLC-Schreibens zuweisen. Nachfolgende Schreibbefehle, bei denen die Steuereinrichtung den MLC-Block auswählt, werden für direkte MLC-Schreibvorgänge zu dem MLC-Block weitergeleitet, bis die Anzahl von vervollständigten Programmierungs-/Löschzyklen die zugewiesene Zahl von direkten MLC-Schreibvorgängen erreicht hat und eine Neuüberprüfung der Störungsfreiheit für den nächsten Schreibbefehl (bei 1026) getriggert wird.
  • In 11 sind Beispiels-Blöcke in einem nichtflüchtigen Speicher veranschaulicht, von der höchsten Lebensdauer und Leistungsfähigkeit zur niedrigsten Lebensdauer und Leistungsfähigkeit. Die SLC-Blöcke 1100 werden generell als Blöcke der höchsten Leistungsfähigkeit und Lebensdauer betrachtet. Wie oben erörtert, werden Blöcke, die eine geringere BER-Rate aufweisen als eine Schwellwert-BER-Rate als störungsfreie Blöcke 1102 betrachtet, und sie können ferner innerhalb der Kategorie des störungsfreien Blocks durch relative BER-Gruppierungen in solche MLC-Blöcke, die für „X“ Zyklen 1104 vor einer Neuüberprüfung in der Block-Störungsfreiheit sicher sind, und in solche unterstellt werden, die für „Y“-Zyklen 1106 als sicher betrachtet werden, bevor die Block-Störungsfreiheit erneut überprüft wird, wobei X>Y gilt. Zwei Unterkategorien von störungsfreien MLC-Blöcken 1102 sind dargestellt; irgendeine Anzahl von Unterkategorien ist noch in Betracht zu ziehen. Optional können MLC-Blöcke, die eine größere BER-Rate aufweisen als die Schwellwert-BER-Rate, die dann als nicht störungsfreie Blöcke 1108 berücksichtigt werden, weiter unterteilt sein. Die nicht störungsfreien Blöcke können in teilweise sichere Blöcke 1110, welche solche nicht störungsfreien Blöcke angeben, die weniger als eine Schwellwertzahl von fehlerhaften Wortleitungen aufweisen und/oder deren Schwellwertzahl kleiner ist als ein erster nicht störungsfreier BER-Schwellwert, und in unsichere Blöcke 1112 getrennt sein, bei denen es sich um solche nicht störungsfreien Blöcke handelt, die eine größere Zahl als die Schwellwertzahl von fehlerhaften Wortleitungen aufweisen und/oder deren Schwellwertzahl größer ist als der erste nicht störungsfreie BER-Schwellwert. Wie oben angemerkt, kann die Steuereinrichtung 102 Daten direkt zu den teilweise sicheren Blöcken 1110 über verschiedene Schreibpfade leiten (direkte MLC-Schreiben und zweistufiges SLC-Schreiben und SLC-MLC-Falten), was zu verschiedenen Bereichen desselben teilweise unsicheren Blocks hin gerichtet erfolgt, während die Gesamtheit von anderen der unsicheren Blöcke 1112, die die höhere BER-Rate und/oder einen höheren Wortleitungsfehler aufweisen, lediglich Daten über den zweistufigen Schreibpfad durch die SLC-Blöcke aufnehmen kann.
  • Bei einer Realisierung kann die Steuereinrichtung 102 durch das MLC-SchreibStörungsfreiheits-Modul 112 vorzugsweise die verfügbaren MLC-Blöcke für Daten-Schreibvorgänge in der Reihenfolge des Rankings der höchsten Leistungsfähigkeit und der größten Lebensdauer, wie beispielsweise in 11 dargestellt, auswählen. Somit würden störungsfreie MLC-Blöcke 1102 gegenüber nicht störungsfreien MLC-Blöcken 1108 gewählt werden, und innerhalb der störungsfreien MLC-Blöcke 1102 würde der störungsfreieste Subsatz 1104 gegenüber dem nächst störungsfreiesten Subsatz 1106 ausgewählt werden. Falls keine störungsfreien Blöcke 1102 verfügbar wären, kann die Steuereinrichtung in entsprechender Weise vorzugsweise die teilweise sicheren Blöcke 1110 aus dem nicht störungsfreien MLC-Blockpool 1108 gegenüber unsicheren Blöcken 1112 auswählen. Die Steuereinrichtung kann die MLC-Block-Störungsfreiheitswertungstabelle dazu heranziehen, eine Bestimmung der relativen Block-Störungsfreiheit vorzunehmen, wenn ein Schreibbefehl eintrifft. Die MLC-Block-Störungsfreiheitsbewertungstabelle 117 kann periodisch in den nichtflüchtigen Speicher 104 gespeichert werden, und sämtliche oder ein Bereich der Tabellendaten können dann bei Bedarf in den flüchtigen Speicher 116 kopiert werden, so dass die MLC-Block-Störungsfreiheitsbewertungstabelle 117 bestehen bleiben kann, nachdem das NVM-System 100 ausgeschaltet ist.
  • Das Schreiben von Daten in Blöcke (oder Bereiche von Blöcken), die als brauchbar, jedoch nicht störungsfrei gehalten werden, braucht nicht sequentiell zu erfolgen. Bei den Beispielen von 7 und 8 wurde ein Verfahren beschrieben, bei dem die Steuereinrichtung lediglich direkte MLC-Schreibvorgänge bezüglich Daten vornahm, die in dem NVM-System 100 empfangen wurden, wenn der ausgewählte Ziel-MLC-Block als störungsfrei identifiziert worden war. Im Gegensatz dazu wurde in die MLC-Blöcke, welche als nicht störungsfrei gehalten wurden, lediglich in einer SLC-MLC-Faltungsoperation geschrieben, nachdem in dem NVM-System empfangene Daten zuerst in SLC-Blöcke geschrieben worden waren. Bei einer alternativen Realisierung kann das Schreiben von Daten in einen als nicht störungsfrei bestimmten MLC-Block gleichzeitige Schreibvorgänge derselben Daten direkt in den nicht störungsfreien MLC-Block und in SLC-Blöcke umfassen.
  • Bezugnehmend erneut auf 6 können anstelle lediglich eines indirekten Schreibens von empfangenen Daten durch einen zweistufigen sequentiellen Prozess des ersten Schreibens in SLC 604 und sodann des Faltens der betreffenden Daten von SLC in den nicht störungsfreien MLC-Block über den Faltungspfad 612 bei diesem alternativen Ausführungsbeispiel die Daten gleichzeitig direkt in den nicht störungsfreien MLC-Block 606 über den direkten MLC-Schreibpfad 608 und in die SLC-Blöcke über den SLC-Schreibpfad 610 geschrieben werden. Dieses alternative Ausführungsbeispiel weicht von den Beispielen von 7 (bei 708) und 8 (bei 806 und 808) des sequentiellen Schreibens insoweit ab, als Daten, die das NVM-System 100 erreichen, direkt in SLC-Blöcke und in die nicht störungsfreien MLC-Blöcke geschrieben werden, anstatt die Daten zuerst durch die SLC-Blöcke passieren zu lassen. Die Bestimmung der MLC-Block-Störungsfreiheit unter Heranziehung der BER-Rate als Kriterium und die Zuweisung der bestimmten Anzahl von direkten MLC-Schreiboperationen für störungsfreie Blöcke (oder störungsfreie Bereiche von nicht störungsfreien Blöcken) bei diesem alternativen gleichzeitigen SLC- und MLC-Schreibvorgehen für nicht störungsfreie MLC-Blöcke kann dieselbe sein wie oben erörtert. Die BER-Rate kann bei dieser alternativen Realisierung durch die Steuereinrichtung auf der Grundlage von Fehlern überprüft werden, welche während des direkten Schreibens in den nicht störungsfreien MLC-Block detektiert werden.
  • Die sequentielle Vorgehensweise der Sicherung von Daten durch eine erste SLC-Schreiboperation und durch sodann erfolgendes Schreiben der betreffenden Daten von den SLC-Blöcken in den nicht störungsfreien MLC-Block in einer Faltungsoperation kann eine bessere Burst-Schreibleistung bereitstellen, da das NVM-System die höhere Schreibgeschwindigkeit, die generell in SLC-Blöcken verfügbar ist, und später die Faltung der Daten in den MLC-Block in einer Hintergrundoperation nutzen kann. Bei einer Realisierung kann eine Hintergrundoperation als eine Operation definiert sein, die in dem NVM-System abläuft, wenn kein Hostbefehl anhängig ist. Die alternative Vorgehensweise des gleichzeitigen Schreibens von Daten direkt in die nicht störungsfreien MLC-Blöcke und in die SLC-Blöcke kann in Speichersystemen erwünscht sein, die eine höhere Burst-Schreibgeschwindigkeit nicht erfordern. Jede Vorgehensweise stellt eine Sicherungskopie der Daten in dem SLC-Block bereit, die zur Wiedergewinnung der Daten herangezogen werden kann, falls das anschließende Schreiben in den nicht störungsfreien MLC-Block misslingt, falls beispielsweise das Schreiben in den nicht störungsfreien MLC-Block zu einem unkorregierbaren ECC-Fehler führt.
  • In der vorliegenden Anmeldung können Halbleiterspeichervorrichtungen, wie jene, die in der vorliegenden Anmeldung beschrieben sind, flüchtige Speichervorrichtungen, wie dynamische Schreib-Lese-Speichervorrichtungen mit wahlfreiem Zugriff („DRAM“), oder statische Schreib-Lese-Speichervorrichtungen mit wahlfreiem Zugriff („SRAM“), nichtflüchtige Speichervorrichtungen, wie Widerstandsspeicher mit wahlfreiem Zugriff („ReRAM“), elektrisch löschbare programmierbare Festwertspeicher („EEPROM“) Flashspeicher (die auch als Untersatz von EEPROM angesehen werden können), ferroelektrische Speicher mit wahlfreiem Zugriff („FRAM“) und magnetoresistive Speicher mit wahlfreiem Zugriff („MRAM“) und andere Halbleiterelemente enthalten, die imstande sind, Informationen zu speichern. Jeder Typ von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Flashspeichervorrichtungen können beispielsweise in einer NAND- oder einer NOR-Konfiguration ausgelegt sein.
  • Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in irgendwelche Kombinationen gebildet sein. Als nicht beschränkendes Beispiel enthalten passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente, die bei einigen Ausführungsbeispielen ein Widerstands-Schaltspeicherelement enthalten, wie eine Antisicherung, ein Phasenänderungsmaterial, etc. und optional ein Steuerungselement, wie eine Diode, etc. Ferner enthalten als nicht beschränkendes Beispiel aktive Halbleiterspeicherelemente EEPROM- und Flashspeichervorrichtungselemente, die bei einigen Ausführungsbeispielen Elemente enthalten, welche eine Ladungsspeicherregion, wie ein floatendes bzw. schwimmendes Gate, leitende Nanopartikel oder ein dielektrisches Ladungsspeichermaterial enthalten.
  • Eine Vielzahl von Speicherelementen kann so ausgelegt sein, dass sie in Reihe geschaltet sind, oder sie können so ausgelegt sein, dass auf jedes Element individuell zugreifbar ist. Als nicht beschränkendes Beispiel enthalten Flashspeichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) in typischer Weise in Reihe geschaltete Speicherelemente. Ein NAND-Speicherarray kann so ausgelegt sein, dass das Array aus einer Mehrzahl von Speicherketten besteht, bei denen eine Kette aus einer Mehrzahl von Speicherelementen aufgebaut ist, die eine einzelne Bitleitung gemeinsam nutzen und auf die als Gruppe zugegriffen wird. Alternativ können Speicherelemente so ausgelegt sein, dass auf jedes Element individuell zugreifbar ist, z.B. bei einem NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft, und Speicherelemente können in anderer Weise ausgelegt bzw. konfiguriert sein.
  • Die Halbleiterspeicherelemente, die sich innerhalb und/oder über einem Substrat befinden, können in zwei oder drei Dimensionen angeordnet sein, wie als zweidimensionale Speicherstruktur oder als dreidimensionale Speicherstruktur.
  • Bei einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzigen Ebene oder einer einzigen Speichervorrichtungsebene angeordnet. In typischer Weise sind die Speicherelemente in einer zweidimensionalen Speicherstruktur in einer Ebene (beispielsweise in einer x-z-Richtungs-Ebene) angeordnet, die im Wesentlichen parallel zu einer Hauptfläche eines Substrats verläuft, welches die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über dem oder in dem die Schicht aus den Speicherelementen gebildet ist, oder es kann ein Trägersubstrat sein, welches an den Speicherelementen angebracht ist, nachdem diese gebildet sind. Als nicht beschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium enthalten.
  • Die Speicherelemente können in einer einzigen Speichervorrichtungsebene in einem geordneten Array angeordnet sein, wie in einer Vielzahl von Zeilen und/oder Spalten. Die Speicherelemente können jedoch in nicht regelmäßigen oder nichtorthogonalen Konfigurationen geordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie Bitleitungen und Wortleitungen aufweisen.
  • Ein dreidimensionales Speicherarray ist so angeordnet, dass die Speicherelemente eine Mehrzahl von Ebenen oder eine Mehrzahl von Speichervorrichtungsebenen belegen, um dadurch eine Struktur in drei Dimensionen (das heißt in den Richtungen x, y und z) zu bilden, wobei die y-Richtung im Wesentlichen senkrecht und die Richtungen x und z im Wesentlichen parallel zu der Hauptfläche des Substrats verlaufen).
  • Als nicht beschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als ein Stapel einer Mehrzahl von zweidimensionalen Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht beschränkendes Beispiel kann ein dreidimensionales Speicherarray als Mehrzahl von vertikalen Säulen angeordnet sein (beispielsweise als Säulen, die im Wesentlichen rechtwinklig zu der Hauptfläche des Substrats, das heißt in der y-Richtung verlaufen), wobei jede Säule eine Mehrzahl von Speicherelementen in jeder Säule aufweist. Die Säulen können in einer zweidimensionalen Konfiguration, beispielsweise in einer x-z-Ebene, angeordnet sein, was zu einer dreidimensionalen Anordnung aus Speicherelementen mit Elementen in einer Mehrzahl von vertikal gestapelten Speicherebenen führt. Andere Konfigurationen von Speicherelementen in drei Dimensionen können ebenfalls ein dreidimensionales Speicherarray bilden.
  • Als nicht beschränkendes Beispiel können die Speicherelemente in einem dreidimensionalen NAND-Speicherarray zur Bildung einer NAND-Kette innerhalb einer einzigen horizontalen (z.B. x-z) Speichervorrichtungsebene miteinander gekoppelt sein. Alternativ können die Speicherelemente zur Bildung einer vertikalen NAND-Kette miteinander gekoppelt sein, die quer über eine Mehrzahl von horizontalen Speichervorrichtungsebenen verläuft. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, bei denen einige NAND-Ketten Speicherelemente in einer einzigen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich durch bzw. über eine Mehrzahl von Speicherebenen erstrecken. Dreidimensionale Speicherarrays können auch in einer NOR-Konfiguration und in einer ReRAM-Konfiguration ausgelegt sein.
  • In typischer Weise sind in einem monolithischen dreidimensionalen Speicherarray eine oder mehrere Speichervorrichtungsebenen über einem einzigen Substrat gebildet. Optional kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten zumindest teilweise innerhalb des einzigen Substrats aufweisen. Als nicht beschränkendes Beispiel kann das Substrat einen Halbleiter, wie Silizium enthalten. In einem monolithischen dreidimensionalen Array sind die die Speichervorrichtungsebene des Arrays bildenden Schichten in typischer Weise auf Schichten der darunterliegenden Speichervorrichtungsebenen des Arrays gebildet. Schichten von benachbarten Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays können jedoch gemeinsam genutzt werden, oder sie weisen Zwischenschichten zwischen Speichervorrichtungsebenen auf.
  • Sodann können ebenfalls zweidimensionale Arrays separat und dann zur Bildung einer nicht monolithischen Speichervorrichtung zusammengepackt sein, die eine Mehrzahl von Speicherschichten aufweist. So können beispielsweise nicht monolithische gestapelte Speicher dadurch aufgebaut sein, dass Speicherebenen auf gesonderten Substraten gebildet werden und dass dann die Speicherebenen übereinander gestapelt werden. Die Substrate können vor dem Stapeln von den Speichervorrichtungsebenen ausgedünnt oder entfernt werden, wobei jedoch dann, wenn die Speichervorrichtungsebenen zunächst über bzw. auf gesonderten Substraten gebildet sind, die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays sind. Ferner kann eine Mehrzahl von zweidimensionalen Speicherarrays oder von dreidimensionalen Speicherarrays (monolithisch oder nicht monolithisch) auf gesonderten Chips gebildet und dann zur Bildung einer gestapelten Chipspeichervorrichtung zusammengepackt sein.
  • Für den Betrieb der Speicherelemente und zur Kommunikation mit den Speicherelementen ist in typischer Weise eine zugehörige Schaltungsanordnung erforderlich. Als nicht beschränkende Beispiele können Speichervorrichtungen eine Schaltungsanordnung aufweisen, die zur Steuerung und zum Ansteuern von Speicherelementen herangezogen wird, um Funktionen, wie ein Programmieren und Lesen vorzunehmen. Die zugehörige Schaltungsanordnung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem gesonderten Substrat befinden. Eine Steuereinrichtung für Speicher-Lese-Schreiboperationen kann sich auf einem gesonderten Steuereinrichtungschip und/oder auf demselben Substrat wie die Speicherelemente befinden.
  • Ein Durchschnittsfachmann wird erkennen, dass diese Erfindung nicht auf die beschriebenen zweidimensionalen und dreidimensionalen Beispielsstrukturen beschränkt ist, sondern sämtliche relevanten Speicherstrukturen innerhalb des Schutzumfangs der Erfindung abdeckt, wie sie hier beschrieben ist und vom Durchschnittsfachmann verstanden wird.
  • Es sind Verfahren und Systeme zum Verwalten von empfangenen Daten und basierend auf einer bestimmten Block-Störungsfreiheit von MLC-Blöcken entweder zum direkten Schreiben von Daten in störungsfreie Blöcke oder zum Schreiben zuerst in SLC-Blöcke und sodann erfolgendem Falten in MLC-Blöcke im Falle von nicht störungsfreien MLC-Blöcken offenbart worden. Das System und das Verfahren ermöglichen es einem nicht flüchtigen Speichersystem, eine schnellere Leistung für störungsfreie Blöcke zu erzielen und einen hinsichtlich einer Datensicherung im Falle von Schreibfehlern umständlicheren, aber sicheren Datenschreibpfad für nicht störungsfreie Blöcke zu nutzen. Das System und das Verfahren können einen BER-Schwellwert zur Unterscheidung von störungsfreien von nicht störungsfreien MLC-Blöcken nutzen. Störungsfreie Blöcke können auf der Grundlage der relativen BER-Rate in Untergruppen unterteilt sein, wo störungsfreie Blöcke mit der niedrigsten BER-Rate dazu herangezogen werden können, MLC-Schreibvorgänge für eine größere Anzahl von Programmierungs-/Löschzyklen durchzuführen, bevor die BER-Rate erneut überprüft wird, als störungsfreie Blöcke mit einer höheren gemessenen BER-Rate. Nicht störungsfreie MLC-Blöcke können gleichmäßig behandelt werden, wobei sämtliche Schreibvorgänge in einem nicht störungsfreien MLC-Block einen Schreibvorgang in einen SLC-Block als Sicherung im Falle einer Verfälschung oder eines Fehlers in dem nicht störungsfreien MLC-Block enthalten. Das Schreiben von Daten in einen nicht störungsfreien MLC-Block kann durch einen zweistufigen Schreibvorgang erfolgen: Zuerst in SLC und dann eine Faltung von SLC in MLC oder durch gleichzeitiges direktes Schreiben sowohl in einen SLC-Block als auch in den nicht störungsfreien MLC-Block. Alternativ können für gewisse nicht störungsfreie Blöcke unterschiedliche Bereiche eines nicht störungsfreien Blocks unterschiedlich behandelt werden, wobei in bzw. auf störungsfreien Wortleitungen direkt geschrieben werden kann und wobei in bzw. auf nicht störungsfreien Wortleitungen in einem zweistufigen SLC-Schreib-SLC-MLC-Faltungsprozess geschrieben wird. Die Unterteilung von nicht störungsfreien Blöcken kann auf der Grundlage eines Wortleitungs-Fehlerprozentsatzes für den nicht störungsfreien Block und/oder auf eine feinere BER-Schwellwertfestlegung innerhalb des BER-Bereichs vorgenommen werden, der bestimmt ist, um einen nicht störungsfreien MLC-Blocks zu identifizieren.

Claims (21)

  1. Ein Verfahren zum Verwalten von Schreibvorgängen zum Schreiben in Blöcke in einem nicht flüchtigen Speichersystem (100), wobei das Verfahren umfasst: Empfangen (802) von Daten zur Speicherung in einem nicht flüchtigen Speicher, der Blöcke mit einer Kapazität von einem einzelnen Bit pro Zelle (604) und Blöcke mit einer Kapazität von einer Mehrzahl von Bits pro Zelle (606) aufweist, Bestimmen (702, 816), ob ein Block mit einer Kapazität einer Mehrzahl von Bits pro Zelle in dem nichtflüchtigen Speicher ein Störungsfreiheitskriterium erfüllt, wobei dann, wenn der Block mit der Kapazität einer Mehrzahl von Bits pro Zelle das Störungsfreiheitskriterium erfüllt, die empfangenen Daten direkt in den Block mit der Kapazität einer Mehrzahl von Bits pro Zelle geschrieben werden (706, 820), und wobei dann, wenn der Block mit der Kapazität einer Mehrzahl von Bits pro Zelle das Störungsfreiheitskriterium nicht erfüllt, die empfangenen Daten in einen Block mit einer Kapazität von einem Bit pro Zelle geschrieben werden (806) und außerdem die Daten in den Block mit der Kapazität einer Mehrzahl von Bits pro Zelle geschrieben werden.
  2. Das Verfahren nach Anspruch 1, worin bzw. wobei das Störungsfreiheitskriterium eine Bitfehlerrate (BER) umfasst, die kleiner ist als ein bestimmter Betrag.
  3. Das Verfahren nach Anspruch 2, worin bzw. wobei das Schreiben (806) der empfangenen Daten in den Block mit der Kapazität von einem einzelnen Bit pro Zelle und außerdem das Schreiben der Daten in den Block mit der Kapazität einer Mehrzahl von Bits pro Zelle ein Schreiben der empfangenen Daten in den Block mit der Kapazität eines einzelnen Bits pro Zelle gleichzeitig mit einem direkten Schreiben der empfangenen Daten in den Block mit der Kapazität der Mehrzahl von Bits pro Zelle umfasst.
  4. Das Verfahren nach Anspruch 1, worin bzw. wobei das Schreiben (806) der empfangenen Daten in den Block mit der Kapazität eines einzelnen Bits pro Zelle und außerdem das Schreiben der Daten in den Block mit der Kapazität mit der Mehrzahl von Bits pro Zelle ein Schreiben der empfangenen Daten zuerst in den Block mit der Kapazität des einzelnen Bits pro Zelle und dann ein Falten der Daten von dem Block mit der Kapazität des einzelnen Bits pro Zelle in den Block mit der Kapazität der Mehrzahl von Bits pro Zelle umfasst.
  5. Das Verfahren nach Anspruch 4, worin bzw. wobei dann, wenn kein Störungsfreiheitskriterium zuvor für einen Block mit einer Kapazität einer Mehrzahl von Bits pro Zelle gemessen worden ist, die empfangenen Daten in den Block mit der Kapazität eines einzelnen Bits pro Zelle geschrieben werden, die empfangenen Daten von dem Block mit der Kapazität eines einzelnen Bits pro Zelle in den bestimmten Speicherblock mit der Kapazität einer Mehrzahl von Bits pro Zelle gefaltet werden und das Störungsfreiheitskriterium für den bestimmten Block mit der Kapazität einer Mehrzahl von Bits pro Zelle während des Faltens der empfangenen Daten gemessen wird (808).
  6. Das Verfahren nach Anspruch 5, worin bzw. wobei das Messen des Störungsfreiheitskriteriums ein Messen einer Bitfehlerrate (BER) des bestimmten Speicherblocks mit der Kapazität einer Mehrzahl von Bits pro Zelle umfasst.
  7. Das Verfahren nach Anspruch 6, ferner umfassend ein Markieren (812) des bestimmten Blocks mit der Mehrzahl von Bits pro Zelle als störungsfreien Block in einer Block-Störungsfreiheits-Bewertungsdatenstruktur, wenn die gemessene BER-Rate kleiner ist als ein bestimmter Schwellwert.
  8. Das Verfahren nach Anspruch 7, worin bzw. wobei das Markieren (812) des bestimmten Blocks mit der Mehrzahl von Bits pro Zelle als störungsfreien Block ferner ein Zuordnen einer Zykluszahl für ein direktes Schreiben zu dem bestimmten Block mit der Mehrzahl von Bits pro Zelle in der Block-Störungsfreiheits-Bewertungsdatenstruktur umfasst.
  9. Das Verfahren nach Anspruch 8, worin bzw. wobei das Markieren (812) des bestimmten Blocks mit der Mehrzahl von Bits pro Zelle als störungsfreien Block ein Zuordnen von einer aus einer Vielzahl von Zykluszahlen für direktes Schreiben zu dem bestimmten Block mit der Mehrzahl von Bits pro Zelle auf der Grundlage davon umfasst, wie viel kleiner die gemessene BER-Rate ist als der bestimmte Schwellwert.
  10. Ein nichtflüchtiges Speichersystem (100), umfassend: einen nichtflüchtigen Speicher(600), der eine Vielzahl von Einzelebenenzellen-(SLC)-Blöcken (604), die Speicherzellen mit einer Kapazität von einem einzelnen Bit pro Zelle aufweisen, und eine Vielzahl von Multiebenenzellen-(MLC)-Blöcken (606) aufweist, die Speicherzellen mit einer Kapazität von einer Mehrzahl von Bits pro Zelle aufweisen, eine Steuereinrichtung (602) in Kommunikation mit dem nichtflüchtigen Speicher, wobei die Steuereinrichtung ausgelegt ist, um Hostdaten in als störungsfrei identifizierte MLC-Blöcke über einen direkten MLC-Schreibpfad zu schreiben, der die SLC-Blöcke umgeht, und um empfangene Hostdaten in als nicht störungsfrei identifizierte MLC-Blöcke über einen mehrstufigen Schreibpfad (610) durch einen anfänglichen Schreibvorgang in zumindest einen SLC-Block zu schreiben, wobei störungsfreie MLC-Blöcke MLC-Blöcke umfassen, die ein Störungsfreiheitskriterium innerhalb eines ersten bestimmten Bereichs aufweisen, und wobei nicht störungsfreie MLC-Blöcke solche MLC-Blöcke umfassen, die das Störungsfreiheitskriterium in einem zweiten bestimmten Bereich aufweisen, der von dem ersten bestimmten Bereich verschieden ist.
  11. Das nichtflüchtige Speichersystem nach Anspruch 10, worin bzw. wobei das Störungsfreiheitskriterium eine Bitfehlerrate (BER) eines MLC-Blocks ist.
  12. Das nichtflüchtige Speichersystem nach Anspruch 11, worin bzw. wobei die Steuereinrichtung (602) ferner ausgelegt ist, um auf Empfang von Daten von einem Host hin einen verfügbaren MLC-Block in dem nichtflüchtigen Speicher auf der Grundlage einer Störungsfreiheitsbewertung des verfügbaren MLC-Blocks in einer Blockstörungsfreiheits-Bewertungsdatenstruktur in dem nichtflüchtigen Speichersystem auszuwählen.
  13. Das nichtflüchtige Speichersystem nach Anspruch 12, worin bzw. wobei die Steuereinrichtung (602) ferner ausgelegt ist, um einen in der Blockstörungsfreiheits-Bewertungsdatenstruktur als störungsfrei identifizierten verfügbaren MLC-Block auszuwählen, und wobei die Steuereinrichtung für den Fall, dass in der Blockstörungsfreiheits-Bewertungsdatenstruktur ein als störungsfrei identifizierter MLC-Block nicht verfügbar ist, so ausgelegt ist, um einen als nicht störungsfrei identifizierten verfügbaren MLC-Block auszuwählen.
  14. Das nichtflüchtige Speichersystem nach Anspruch 11, worin bzw. wobei die Steuereinrichtung (602) ferner ausgelegt ist, um dann, wenn ein verfügbarer MLC-Block in der Blockstörungsfreiheits-Bewertungsdatenstruktur nicht aufgelistet ist, Daten indirekt in den verfügbaren MLC-Block über den mehrstufigen Schreibpfad geschrieben, die BER-Rate des verfügbaren MLC-Blocks gemessen und die Blockstörungsfreiheits-Bewertungsdatenstruktur mit einer Störungsfreiheit des verfügbaren MLC-Blocks auf der Grundlage der gemessenen BER-Rate aktualisiert werden.
  15. Das nichtflüchtige Speichersystem nach Anspruch 14, worin bzw. wobei die Steuereinrichtung (602) ferner ausgelegt ist, um dann, wenn der verfügbare MLC-Block als ein störungsfreier MLC-Block bestimmt ist, dem störungsfreien MLC-Block in der Blockstörungsfreiheits-Bewertungsdatenstruktur eine Zykluszahl für ein direktes Schreiben zuzuordnen.
  16. Das nichtflüchtige Speichersystem nach Anspruch 15, worin bzw. wobei die Steuereinrichtung (602) ausgelegt ist, um auf der Grundlage davon, wie viel kleiner die gemessene BER-Rate für den verfügbaren MLC-Block ist als ein bestimmter BER-Schwellwert, dem direkten Schreiben unterschiedliche Zykluszahlen zuzuordnen.
  17. Das nichtflüchtige Speichersystem nach Anspruch 14, worin bzw. wobei dann, wenn die gemessene BER-Rate des verfügbaren MLC-Blocks sich in dem zweiten bestimmten Bereich befindet, und dann, wenn der verfügbare MLC-Block das zweite Störungsfreiheitskriterium erfüllt, der verfügbare MLC-Block ein teilweise sicherer nicht störungsfreier Block ist, und wobei die Steuereinrichtung ferner ausgelegt ist, um die Blockstörungsfreiheits-Bewertungsdatenstruktur zu aktualisieren, um störungsfreie Bereiche des teilweise sicheren nicht störungsfreien Blocks und nicht störungsfreie Bereiche des teilweise sicheren nicht störungsfreien Blocks zu identifizieren.
  18. Das nichtflüchtige Speichersystem nach Anspruch 17, worin bzw. wobei das zweite Störungsfreiheitskriterium eine Anzahl von fehlerhaften Wortleitungen in dem verfügbaren MLC-Block ist, die kleiner ist als ein bestimmter fehlerhafter Wortleitungsschwellwert, und eine fehlerhafte Wortleitung eine Wortleitung umfasst, die bestimmt ist, eine Anzahl von Bitfehlern aufzuweisen, welche für das nichtflüchtige Speichersystem unkorrigierbar sind.
  19. Das nichtflüchtige Speichersystem nach Anspruch 18, worin bzw. wobei die störungsfreien Bereiche und die nicht störungsfreien Bereiche des teilweise sicheren nicht störungsfreien Blocks entsprechende Gruppen von Wortleitungen umfassen, wobei jede Gruppe von Wortleitungen, die eine BER-Rate aufweist, welche kleiner ist als ein bestimmter BER-Schwellwert, von der Steuereinrichtung als störungsfreier Bereich identifiziert wird und wobei jede Gruppe von Wortleitungen mit einer BER-Rate, die größer als der oder gleich dem bestimmten BER-Schwellwert ist, als nicht störungsfreier Bereich identifiziert wird.
  20. Das nichtflüchtige Speichersystem nach Anspruch 17, worin bzw. wobei in dem Fall, dass der teilweise sichere nicht störungsfreie Block für eine nachfolgende Schreiboperation ausgewählt wird, die Steuereinrichtung ausgelegt ist, um empfangene Hostdaten in jeden störungsfreien Bereich über einen direkten MLC-Schreibpfad zu schreiben, der die SLC-Blöcke umgeht, und um empfangene Hostdaten in jeden nicht störungsfreien Bereich über einen mehrstufigen Schreibpfad durch zunächst erfolgendes Schreiben in zumindest einen SLC-Block zu schreiben.
  21. Nichtflüchtiges Speichersystem (100) umfassend: einen nichtflüchtigen Speicher (600), der eine Vielzahl von Einzelebenenzellen-(SLC)-Blöcken (604) mit Speicherzellen einer Kapazität von einem einzelnen Bit pro Zelle aufweist, eine Vielzahl von Mehrebenenzellen-(MLC)-Blöcken (606) mit Speicherzellen einer Kapazität von einer Mehrzahl von Bits pro Zelle, eine Blockstörungsfreiheits-Bewertungsdatenstruktur, die MLC-Block-Störungsfreiheitsdaten für zumindest einen Bereich der Vielzahl von MLC-Blöcken aufweist, und Einrichtungen bzw. Mittel zum Schreiben von empfangenen Hostdaten in als störungsfrei in der Blockstörungsfreiheits-Datenstruktur identifizierten MLC-Blöcken über einen direkten MLC-Schreibpfad, der die SLC-Blöcke umgeht, und zum Schreiben von empfangenen Hostdaten in als nicht störungsfrei in der Blockstörungsfreiheits-Bewertungsdatenstruktur identifizierte MLC-Blöcke über einen mehrstufigen Schreibpfad durch ein zunächst erfolgendes Schreiben in zumindest einen SLC-Block, wobei störungsfreie MLC-Blöcke solche MLC-Blöcke umfassen, die ein Störungsfreiheitskriterium innerhalb eines ersten bestimmten Bereiches aufweisen, und wobei nicht störungsfreie MLC-Blöcke solche MLC-Blöcke umfassen, die das Störungsfreiheitskriterium in einem zweiten bestimmten Bereich aufweisen, der von dem ersten bestimmten Bereich verschieden ist.
DE102017128940.2A 2017-01-31 2017-12-06 System und Verfahren zum dynamischen Falten oder direkten Schreiben basierend auf Block-Störungsfreiheit in einem nichtflüchtigen Speichersystem Active DE102017128940B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/420,894 US10209914B2 (en) 2017-01-31 2017-01-31 System and method for dynamic folding or direct write based on block health in a non-volatile memory system
US15/420,894 2017-01-31

Publications (2)

Publication Number Publication Date
DE102017128940A1 DE102017128940A1 (de) 2018-08-02
DE102017128940B4 true DE102017128940B4 (de) 2023-03-30

Family

ID=62843084

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017128940.2A Active DE102017128940B4 (de) 2017-01-31 2017-12-06 System und Verfahren zum dynamischen Falten oder direkten Schreiben basierend auf Block-Störungsfreiheit in einem nichtflüchtigen Speichersystem

Country Status (3)

Country Link
US (1) US10209914B2 (de)
CN (1) CN108376120B (de)
DE (1) DE102017128940B4 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303571B2 (en) * 2015-11-04 2019-05-28 Intel Corporation Data recovery in memory devices
US20180239532A1 (en) 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US10824503B2 (en) * 2017-11-14 2020-11-03 Micron Technology, Inc. Systems and methods for performing a write pattern in memory devices
US10732838B2 (en) * 2017-11-29 2020-08-04 Western Digital Technologies, Inc. Logical grouping for hybrid dual write
KR102469174B1 (ko) * 2018-01-11 2022-11-23 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP7102166B2 (ja) * 2018-02-23 2022-07-19 キヤノン株式会社 情報処理装置、情報処理装置の制御方法及びプログラム
TWI668699B (zh) * 2018-10-25 2019-08-11 群聯電子股份有限公司 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置
US10725912B2 (en) * 2018-12-19 2020-07-28 Micron Technology, Inc. Power loss protection in memory sub-systems
TWI710905B (zh) * 2019-05-06 2020-11-21 慧榮科技股份有限公司 資料儲存裝置及邏輯至物理位址映射表之載入方法
US10996862B2 (en) * 2019-06-17 2021-05-04 Western Digital Technologies, Inc. Adaptive read trim for second read data retention
US11341046B2 (en) * 2019-08-05 2022-05-24 Micron Technology, Inc. Layer interleaving in multi-layered memory
US11011223B2 (en) * 2019-08-27 2021-05-18 Micron Technology, Inc. Memory sub-system grading and allocation
US10871910B1 (en) * 2019-09-27 2020-12-22 Western Digital Technologies, Inc. Non-volatile memory with selective interleaved coding based on block reliability
US11157379B2 (en) * 2019-10-30 2021-10-26 International Business Machines Corporation Managing blocks of memory based on block health using hybrid controllers
US11288011B2 (en) * 2020-03-26 2022-03-29 Western Digital Technologies, Inc. Non-volatile memory array with write failure protection for multi-level cell (MLC) storage elements using coupled writes
US11537534B2 (en) * 2020-08-20 2022-12-27 Western Digital Technologies, Inc. High throughput, low power, high parity architecture for database SSD
JP2022050016A (ja) * 2020-09-17 2022-03-30 キオクシア株式会社 メモリシステム
US11409446B2 (en) * 2020-11-11 2022-08-09 Micro Technology, Inc. Media management on power-up
CN113010112B (zh) * 2021-03-09 2022-11-11 重庆邮电大学 一种基于可变电阻式存储器的数据分配优化方法
US11545232B1 (en) * 2021-08-05 2023-01-03 Micron Technology, Inc. Quick reliability scan for memory device
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150149693A1 (en) 2013-11-25 2015-05-28 Sandisk Technologies Inc. Targeted Copy of Data Relocation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799747B2 (en) * 2010-06-03 2014-08-05 Seagate Technology Llc Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
US8560922B2 (en) * 2011-03-04 2013-10-15 International Business Machines Corporation Bad block management for flash memory
EP2710475A1 (de) * 2011-05-17 2014-03-26 SanDisk Technologies Inc. Nichtflüchtiger speicher und verfahren mit kleinen, unter aktiven slc- und mlc-speicherpartitionen aufgeteilten logischen gruppen
US9176862B2 (en) * 2011-12-29 2015-11-03 Sandisk Technologies Inc. SLC-MLC wear balancing
US9003224B2 (en) * 2012-04-25 2015-04-07 Western Digital Technologies, Inc. Managing unreliable memory in data storage systems
US8903959B2 (en) 2013-01-08 2014-12-02 Lyve Minds, Inc. Storage network data distribution
US9455048B2 (en) * 2013-06-28 2016-09-27 Sandisk Technologies Llc NAND flash word line management using multiple fragment pools
US9165683B2 (en) * 2013-09-23 2015-10-20 Sandisk Technologies Inc. Multi-word line erratic programming detection
US9478315B2 (en) * 2014-06-03 2016-10-25 Sandisk Technologies Llc Bit error rate mapping in a memory system
US20160018998A1 (en) 2014-07-17 2016-01-21 Sandisk Enterprise Ip Llc Methods and Systems for Scalable Reliability Management of Non-Volatile Memory Modules
US9558847B2 (en) 2014-11-21 2017-01-31 Sandisk Technologies Llc Defect logging in nonvolatile memory
US10503431B2 (en) 2014-12-22 2019-12-10 Sandisk Technologies Llc Trade-off adjustments of memory parameters based on memory wear or data retention
US10014060B2 (en) * 2015-01-30 2018-07-03 Sandisk Technologies Llc Memory system and method for reducing read disturb errors
US9606737B2 (en) * 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150149693A1 (en) 2013-11-25 2015-05-28 Sandisk Technologies Inc. Targeted Copy of Data Relocation

Also Published As

Publication number Publication date
US10209914B2 (en) 2019-02-19
CN108376120A (zh) 2018-08-07
DE102017128940A1 (de) 2018-08-02
US20180217751A1 (en) 2018-08-02
CN108376120B (zh) 2020-02-07

Similar Documents

Publication Publication Date Title
DE102017128940B4 (de) System und Verfahren zum dynamischen Falten oder direkten Schreiben basierend auf Block-Störungsfreiheit in einem nichtflüchtigen Speichersystem
DE102018105529B4 (de) Managementschema zur Vermeidung einer Lösch- und Programmierstörung von Subblöcken im nichtflüchtigen Datenspeicher
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE112018000181T5 (de) System und verfahren für die schnelle ausführung von kapselinternen befehlen
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE112019000141T5 (de) System und verfahren zur vorhersage von mehrfachlesebefehlen, die auf nicht sequentielle daten gerichtet sind
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
US20170109040A1 (en) Systems and Methods for Sampling Data at a Non-Volatile Memory System
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112017005637T5 (de) Verfahren und System zur Schreibverstärkungsanalyse
DE102019117787B4 (de) Speichervorrichtung und Betriebsverfahren derselben
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
DE112016004148T5 (de) Systeme und Verfahren zur Befehlsautorisierung
DE102017128941A1 (de) Speichersystem und Verfahren zur prädiktiven Blockzuweisung zur effizienten Speicherbereinigung
DE102008030858A1 (de) Speicher mit dynamischer Redundanzkonfigurierung
DE112015006285T5 (de) Mehrchip-doppelschreiben
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE102021107443A1 (de) Dynamische speichersteuerung und verfahren zur verwendung damit
DE102020105946A1 (de) Speicherzellen-fehlform-abschwächung
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112020000143T5 (de) Ssd-system, das einschaltzyklus-basierten read-scrub verwendet

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 PARTNERSCHAFT MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final