DE102019134291A1 - Ausgleich der blockabnutzungsnivellierung für eine optimale ssd-haltbarkeit - Google Patents

Ausgleich der blockabnutzungsnivellierung für eine optimale ssd-haltbarkeit Download PDF

Info

Publication number
DE102019134291A1
DE102019134291A1 DE102019134291.0A DE102019134291A DE102019134291A1 DE 102019134291 A1 DE102019134291 A1 DE 102019134291A1 DE 102019134291 A DE102019134291 A DE 102019134291A DE 102019134291 A1 DE102019134291 A1 DE 102019134291A1
Authority
DE
Germany
Prior art keywords
level
block pool
blocks
pool
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019134291.0A
Other languages
English (en)
Inventor
Niles Yang
Sahil Sharma
Rohit Sehgal
Phil Reusswig
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102019134291A1 publication Critical patent/DE102019134291A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

In einer Ausführungsform gibt es ein Verfahren zum Implementieren des Ausgleichs der Blockabnutzungsnivellierung in einer Speichervorrichtung einschließlich eines oder mehrerer Single-Level-Cell-Blöcke (SLC-Blöcke) in einem SLC-Blockpool und eines oder mehrerer nicht-Single-Level-Cell-Blöcke (nSLC-Blöcke) in einem nSLC-Blockpool zum Speichern von Daten und einer Speichersteuerung zum Durchführen von Operationen in den SLC- und nSLC-Blöcken, wobei das Verfahren aufweist: an der Speichersteuerung: Empfangen einer ersten Anforderung zum Durchführen einer Abnutzungsnivellierungsoperation in einem jeweiligen Blockpool eines von: dem SLC-Pool und dem nSLC-Pool; Bestimmen, ob ein oder mehrere Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen; als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen, Neuzuordnung des einen oder der mehreren Blöcke im jeweiligen Blockpool als der andere des SLC-Blockpools und des nSLC-Blockpools; und als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien nicht erfüllen, Unterlassen der Neuzuordnung des einen oder der mehreren Blöcke im jeweiligen Blockpool als der andere des SLC-Blockpools und des nSLC-Blockpools.

Description

  • STAND DER TECHNIK
  • Halbleiterspeichervorrichtungen oder Solid-State-Laufwerke (SSD), einschließlich Flash-Speicher, verwenden üblicherweise Speicherzellen, um Daten als einen elektrischen Wert zu speichern, wie eine elektrische Ladung oder Spannung. Eine Flash-Speicherzelle schließt beispielsweise einen einzelnen Transistor mit einem Floating-Gate ein, der verwendet wird, um eine Ladung zu speichern, die einen Datenwert darstellt. Ein Flash-Speicher ist eine nichtflüchtige Datenspeichervorrichtung, die elektrisch gelöscht und neu programmiert werden kann. Genauer gesagt behalten nichtflüchtige Speicher (z. B. Flash-Speicher sowie andere Arten von nichtflüchtigen Speichern, die unter Verwendung jeder beliebigen von einer Vielzahl von Technologien implementiert werden) gespeicherte Informationen auch ohne Strom, im Gegensatz zu flüchtigen Speichern, die Strom benötigen, um die gespeicherten Informationen zu erhalten.
  • Die Halbleiterspeichervorrichtungen können eingerichtet sein, um Blöcke oder Gruppen nichtflüchtiger Single-Level-Cell-Speichereinheiten (SLC-Speichereinheiten) und/oder Nicht-SLC-Speichereinheiten (nSLC-Speichereinheiten) (z. B. Multi-Level-, Triple-Level-, Quad-Level- oder eine andere nicht-Single-Level-Cell-Speichereinheit) einzuschließen. Jeder Block kann eine Größe von 256 KB bis 4 MB aufweisen. Blöcke ähnlicher Art (z. B. SLC- oder nSLC-Blöcke) können jeweils in Gruppen oder Pools von Blöcken (im Folgenden auch als „Blockpools“ bezeichnet) organisiert werden. Die Halbleitervorrichtungen können eingerichtet sein, um in jedem der Blöcke und/oder Blockpools eine Abnutzungsnivellierung durchzuführen. Abnutzungsnivellierung ist eine Technik, um die Nutzung von Flash-Speicherblöcken (gemessen in Programmier-Lösch-Zyklen (PEC)) auszugleichen und so die Langlebigkeit der Halbleiterspeichervorrichtungen zu erhöhen. PEC kann sich auf die Anzahl von Sequenzen beziehen, bei denen Daten auf einen Abschnitt des Speichers geschrieben, dann gelöscht und dann erneut geschrieben werden. PEC kann eine Quantitätsbestimmung der Haltbarkeit des Abschnitts des Speichers darstellen, da jeder PEC einen kleinen physischen Schaden auf dem jeweiligen Speicher, auf den zugegriffen wird, verursachen kann. Nach einer bestimmten Anzahl von PEC kann es zu Fehlfunktionen der Zellen kommen, wodurch die darin gespeicherten Daten unzuverlässig werden. Die Anzahl der verfügbaren PECs, bevor es zu Fehlfunktionen der Zellen kommt, ist abhängig von der Zellart. Eine SLC beispielsweise ist im Allgemeinen so eingerichtet, dass sie mehr PECs als eine nSLC aushält. Bei der üblichen Abnutzungsnivellierung werden die SLC-Blöcke und nSLC-Blöcke unterschiedlich behandelt, sodass die SLC- und nSLC-Blöcke jeweils in ihrem Pool „nivelliert“ werden. Alle Blöcke des Pools erreichen den maximal zulässigen PEC mit etwa gleicher Geschwindigkeit, um die angestrebte optimale SSD-Leistung und -Haltbarkeit zu erzielen.
  • Dies ist nicht effizient, da es unterschiedliche Host-Workloads geben könnte, die auf unterschiedliche Blockpools abzielen. Der Host-Workload kann sich auf einen Prozess beziehen, der durch das Hostsystem implementiert wurde, um eine oder mehrere individualisierte Aufgaben unter Verwendung der Daten in den Blockpools durchzuführen. Diese individualisierten Aufgaben können das Lesen von Daten von bzw. Schreiben von Daten auf den Blockpools einschließen, was zu zusätzlicher Abnutzung an diesen Blockpools führt. Daher können Situationen entstehen, in denen die optimale SLC-Pool-Leistung und -Haltbarkeit allein erreicht wird, während der nSLC-Pool kaum verwendet wurde, oder umgekehrt. Somit ist die SSD als Ganzes möglicherweise nicht für Abnutzungsnivellierung optimiert.
  • Daher besteht Bedarf an einer effizienten Halbleitervorrichtung und deren Steuerung, welche die Nutzung aller Blöcke des Speichers, und nicht nur einzelner Blockpools, optimiert.
  • KURZDARSTELLUNG
  • Ohne den Schutzumfang der beiliegenden Ansprüche einzuschränken, wird man nach Berücksichtigung dieser Offenbarung und insbesondere nach Berücksichtigung des Abschnitts „Detaillierte Beschreibung“ verstehen, wie die Aspekte von verschiedenen Ausführungsformen implementiert und verwendet werden, um Abnutzungsnivellierung mit verbessertem PEC-Ausgleich in allen Arten von Speicherblöcken durchzuführen.
  • In einer Ausführungsform gibt es ein Verfahren zum Implementieren des Ausgleichs der Blockabnutzungsnivellierung in einer Speichervorrichtung einschließlich eines oder mehrerer Single-Level-Cell-Blöcke (SLC-Blöcke) in einem SLC-Blockpool und eines oder mehrerer nicht-Single-Level-Cell-Blöcke (nSLC-Blöcke) in einem nSLC-Blockpool zum Speichern von Daten und einer Speichersteuerung zum Durchführen von Operationen in den SLC- und nSLC-Blöcken, wobei das Verfahren aufweist: an der Speichersteuerung: Empfangen einer ersten Anforderung zum Durchführen einer Abnutzungsnivellierungsoperation in einem jeweiligen Blockpool eines von: dem SLC-Pool und dem nSLC-Pool; Bestimmen, ob ein oder mehrere Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen; als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen, Neuzuordnung des einen oder der mehreren Blöcke im jeweiligen Blockpool als der andere des SLC-Blockpools und des nSLC-Blockpools; und als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien nicht erfüllen, Unterlassen der Neuzuordnung des einen oder der mehreren Blöcke im jeweiligen Blockpool als der andere des SLC-Blockpools und des nSLC-Blockpools.
  • In einigen Ausführungsformen ist der jeweilige Blockpool der SLC-Pool.
  • In einigen Ausführungsformen schließen die Blockpooltransferkriterien ein Kriterium ein, das erfüllt ist, wenn ein Programmier-Lösch-Zyklus-Zählwert (PEC-Zählwert) für einen oder mehrere der SLC-Blöcke im SLC-Blockpool kleiner als ein nSLC-Abnutzungsnivellierungsschwellenwert ist.
  • In einigen Ausführungsformen ist der nSLC-Abnutzungsnivellierungsschwellenwert eine vorbestimmte maximale PEC-Zählwertdifferenz zwischen einem nSLC-Block mit einem höchsten PEC-Zählwert im nSLC-Blockpool und einem nSLC-Block mit einem niedrigsten PEC-Zählwert im nSLC-Blockpool.
  • In einigen Ausführungsformen schließen die Blockpooltransferkriterien ein Kriterium ein, das erfüllt ist, wenn ein (PEC-) Zählwert für den einen oder die mehreren SLC-Blöcke kleiner als eine Summe eines durchschnittlichen PEC-Zählwerts des einen oder der mehreren nSLC-Blöcke im nSLC-Blockpool und einem nSLC-Abnutzungsnivellierungsschwellenwert ist.
  • In einigen Ausführungsformen schließen die Blockpooltransferkriterien ein Kriterium ein, das erfüllt ist, wenn eine Bitfehlerrate (BER) des einen oder der mehreren SLC-Blöcke in dem SLC-Blockpool kleiner als ein BER-SLC-Schwellenwert ist.
  • In einigen Ausführungsformen erfolgt als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen, das Neuzuordnen ein oder mehrerer nSLC-Blöcke in dem nSLC-Blockpool als ein oder mehrere SLC-Blöcke, wobei jeder der einen oder mehreren nSLC-Blöcke über einen Programmier-Lösch-Zyklus-Zählwert größer als der Programmier-Lösch-Zyklus-Zählwert der anderen nSLC-Blöcke in dem nSLC-Blockpool verfügt.
  • In einigen Ausführungsformen ist der jeweilige Blockpool ein nSLC-Blockpool, wobei die Neuzuordnung ein oder mehrerer nSLC-Blöcke in dem nSLC-Blockpool als einer oder mehrere der SLC-Blöcke in dem SLC-Blockpool das Multiplizieren eines entsprechenden PEC-Zählwerts für jeden der einen oder mehreren nSLC-Blöcke mit einen SLC-Umrechnungsfaktor einschließt.
  • In einigen Ausführungsformen ist der jeweilige Blockpool der nSLC-Blockpool, wobei die Blockpooltransferkriterien ein Kriterium einschließen, das erfüllt ist, wenn eine Bitfehlerrate (BER) des einen oder der mehreren nSLC-Blöcke in dem nSLC-Blockpool kleiner als ein BER-nSLC-Schwellenwert ist.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
  • Die vorstehende Kurzdarstellung sowie die folgende detaillierte Beschreibung der Ausführungsformen der offenbarten Erfindung werden besser verstanden, wenn sie in Verbindung mit den beigefügten Zeichnungen eines Ausführungsbeispiels betrachtet werden. Es versteht sich jedoch, dass die Erfindung nicht auf die gezeigten präzisen Anordnungen und Mittel beschränkt ist.
  • In den Zeichnungen:
    • ist 1 ein Blockdiagramm, das eine Implementierung eines Datenspeichersystems gemäß einigen Ausführungsformen veranschaulicht;
    • ist 2 ein Blockdiagramm, das Blockpools mit unterschiedlichen Speicherarten (z. B. SLC oder nSLC) gemäß einem Ausführungsbeispiel der vorliegenden Erfindung veranschaulicht;
    • ist 3 ein Blockdiagramm, das den Ausgleich der Blockabnutzungsnivellierung in Blockpools mit unterschiedlichen Speicherarten (z. B. SLC oder nSLC) gemäß einem Ausführungsbeispiel der vorliegenden Erfindung veranschaulicht;
    • ist 4 ein Blockdiagramm, das den Ausgleich der Blockabnutzungsnivellierung in Blockpools mit unterschiedlichen Speicherarten (z. B. SLC oder nSLC) gemäß einem Ausführungsbeispiel der vorliegenden Erfindung veranschaulicht; und
    • 5 ein Flussdiagramm, das den Ausgleich der Blockabnutzungsnivellierung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • In einigen Ausführungsformen kann die Haltbarkeit des Flash-Speicherblocks auf dem SSD-System mit verbesserter PEC-Nivellierung in allen Speicherblockarten verbessert werden, indem die SLC-Blöcke basierend auf bestimmten Kriterien (z. B. PEC und/oder Abnutzungsnivellierung, die bestimmte Kriterien von sowohl SLC- als auch von Nicht-SLC-Pools erfüllen) dynamisch in einen Nicht-SLC-Block konvertiert werden und umgekehrt; die Haltbarkeit des Flash-Speicherblocks auf dem SSD-System kann ausgeglichen werden.
  • Hierin sind zahlreiche Details beschrieben, um ein gründliches Verstehen der Ausführungsbeispiele zu ermöglichen, die in den beigefügten Zeichnungen veranschaulicht sind. Allerdings können einige Ausführungsformen ohne zahlreiche spezifische Details praktiziert werden und der Schutzumfang der Ansprüche wird nur durch die Merkmale und Aspekte eingeschränkt, die in den Ansprüchen spezifisch genannt sind. Ferner wurden wohlbekannte Verfahren, Komponenten und Schaltungen nicht ausführlich beschrieben, um die klare Darstellung von sachdienlichen Aspekten der hier beschriebenen Ausführungsformen nicht unnötig zu beeinträchtigen.
  • Bezugnehmend auf 1 wird ein Blockdiagramm gezeigt, das eine Implementierung eines Datenspeichersystems 100 gemäß einigen Ausführungsformen veranschaulicht. Obgleich einige beispielhafte Merkmale veranschaulicht sind, wurden verschiedene andere Merkmale zum Zwecke der Kürze, und um nicht unnötig von den sachdienlichen Aspekten der hierin beschriebenen Ausführungsbeispielen abzulenken, nicht veranschaulicht. Zu diesem Zweck, als ein nicht begrenzendes Beispiel, schließt ein Datenspeichersystem 100 eine Speichervorrichtung 120 ein (manchmal auch als eine Informationsspeichervorrichtung oder eine Datenspeichervorrichtung bezeichnet), die eine Speichersteuerung 124 und ein Speichermedium 130 einschließt, und in Verbindung mit einem Computersystem 110 (z. B. einem Hostsystem oder einem Hostcomputer) verwendet wird oder ein solches einschließt. In einigen Ausführungsformen ist das Speichermedium 130 eine einzelne Flash-Speichervorrichtung, während in anderen Ausführungsformen das Speichermedium 130 eine Vielzahl von Flash-Speichervorrichtungen einschließt. In einigen Ausführungsformen ist das Speichermedium 130 ein NAND-Flash-Speicher oder ein NOR-Flash-Speicher. In einigen Ausführungsformen schließt das Speichermedium 130 eine oder mehrere dreidimensionale (3D) Speichervorrichtungen ein. In einigen Ausführungsformen sind die Speicherzellen des Speichermediums 130 eingerichtet, um zwei oder drei Bits pro Speicherzelle zu speichern. Ferner ist in manchen Ausführungsformen die Speichersteuerung 124 eine Solid-State-Laufwerk-Steuerung (SSD-Steuerung). Andere Arten von Speichermedien können jedoch gemäß den Aspekten einer umfassenden Vielzahl von Ausführungsformen eingeschlossen werden (z. B. Phase Change Random-Access Memory (PCRAM), Resistive Random Access Memory (ReRAM), Spin-Transfer Torque Random-Access Memory (STT-RAM), Magnetoresistive Random-Access Memory (MRAM) usw.). In einigen Ausführungsformen schließt eine Flash-Speichervorrichtung einen oder mehrere Flash-Speicherchips, ein oder mehrere Flash-Speicherpakete, einen oder mehrere Flash-Speicherkanäle oder dergleichen ein. In einigen Ausführungsformen schließt das Datenspeichersystem 100 eine oder mehrere Speichervorrichtungen 120 ein.
  • Das Computersystem 110 ist mit der Speichersteuerung 124 über Datenverbindungen 101 gekoppelt. Jedoch schließt das Computersystem 110 in einigen Ausführungsformen die Speichersteuerung 124 oder einen Abschnitt der Speichersteuerung 124 als eine Komponente und/oder als ein Subsystem ein. Zum Beispiel werden in einigen Ausführungsformen einige oder alle der Funktionalitäten der Speichersteuerung 124 durch Software implementiert, die auf dem Computersystem 110 ausgeführt wird. Das Computersystem 110 kann jede beliebige geeignete Computervorrichtung sein, wie ein Computer, ein Laptop, ein Tablet, ein Netbook, ein Internetkiosk, ein persönlicher digitaler Assistent, ein Mobiltelefon, ein Smartphone, eine Spielekonsole, ein Computerserver oder eine beliebige andere Rechenvorrichtung. Das Computersystem 110 wird manchmal als ein Host, Hostsystem, Client, oder Clientsystem bezeichnet. In einigen Ausführungsformen ist das Computersystem 110 ein Serversystem, wie ein Serversystem in einem Datenzentrum. In einigen Ausführungsformen schließt das Computersystem 110 einen oder mehrere Prozessoren, eine oder mehrere Arten von Speicher, ein Display und/oder andere Benutzerschnittstellenkomponenten wie eine Tastatur, ein Touchscreen-Display, eine Maus, ein Trackpad, eine digitale Kamera und/oder eine beliebige Anzahl von zusätzlichen E/A-Vorrichtungen ein, um Funktionalität zum Computersystem 110 hinzuzufügen. In einigen Ausführungsformen weist das Computersystem 110 kein Display und keine anderen Benutzerschnittstellenkomponenten auf.
  • Das Speichermedium 130 ist mit der Speichersteuerung 124 über Verbindungen 103 gekoppelt. Verbindungen 103 werden manchmal als Datenverbindungen bezeichnet, übertragen in der Regel jedoch zusätzlich zu Daten Befehle, und übertragen zusätzlich zu Datenwerten, die im Speichermedium 130 gespeichert werden und zusätzlich zu Datenwerten, die vom Speichermedium 130 gelesen werden, gegebenenfalls Metadaten, Fehlerkorrekturinformationen und/oder andere Informationen. In einigen Ausführungsformen sind die Speichersteuerung 124 und das Speichermedium 130 jedoch in derselben Vorrichtung (d. h. einer integrierten Vorrichtung) als Komponenten davon eingeschlossen. Ferner sind in einigen Ausführungsformen die Speichersteuerung 124 und das Speichermedium 130 in eine Hostvorrichtung (z. B. ein Computersystem 110) eingebettet, wie eine mobile Vorrichtung, ein Tablet, ein anderer Computer oder eine computergesteuerte Vorrichtung, und die hierin beschriebenen Verfahren werden zumindest teilweise durch die eingebettete Speichersteuerung durchgeführt. Das Speichermedium 130 kann eine beliebige Anzahl von (d. h. eine oder mehrere) Speichervorrichtungen 134-i einschließen, einschließlich, ohne Einschränkung, persistenter Speicher oder nichtflüchtiger Halbleiterspeichervorrichtungen, wie Flash-Speichervorrichtung(en). Zum Beispiel kann eine Flash-Speichervorrichtung bzw. können Flash-Speichervorrichtungen für Unternehmensspeicher eingerichtet sein, die für Anwendungen wie Cloud Computing, für Datenbankanwendungen, als primäre und/oder sekundäre Speicher oder zum Zwischenspeichern von gespeicherten (oder zu speichernden) Daten in sekundären Speichern, wie Festplattenlaufwerken, geeignet sind. Außerdem und/oder alternativ kann die Flash-Speichervorrichtung bzw. können die Flash-Speichervorrichtungen auch für Anwendungen mit relativ kleinerem Maßstab wie persönliche Flash-Laufwerke oder Festplattenersatz für PCs, Laptops und Tablets eingerichtet sein. In einigen Ausführungsformen ist jede Speichervorrichtung 134-i ein einzelner persistenter 3D-Speicher oder ein nichtflüchtiger Halbleiterspeicherchip, der mehrere Löschblöcke einschließt (z. B. Arrays 302, 3, manchmal einfach als „Blöcke“ bezeichnet), die die löschbaren Einheiten mit minimaler Größe in diesen Speichervorrichtungen sind. In einigen Ausführungsformen kann das Computersystem 110 und/oder die Speichersteuerung 124 Löschblöcke in einer jeweiligen Speichervorrichtung 134-i in Gruppen von einem oder mehreren Blockpools zuweisen. Zum Beispiel schließt in einigen Ausführungsformen jeder Blockpool der jeweiligen Speichervorrichtung 134-i N Blöcke ein, wobei N eine Ganzzahl größer als 1 ist, und in der Regel größer als 15, 63 oder 99 ist.
  • Speichervorrichtungen 134-i des Speichermediums 130 können adressierbare und individuell auswählbare Blöcke einschließen, wie den auswählbaren Abschnitt 131 des Speichermediums 130 (hierin auch als ausgewählter Abschnitt 131 bezeichnet). In einigen Ausführungsformen sind die individuell auswählbaren Blöcke (manchmal Löschblöcke genannt) die löschbaren Einheiten mit minimaler Größe in einer Flash-Speichervorrichtung. Mit anderen Worten: jeder Block enthält die minimale Anzahl von Speicherzellen, die gleichzeitig gelöscht werden können. Jeder Block wird in der Regel weiter unterteilt in eine Vielzahl von Seiten und/oder Wortleitungen, wobei jede Seite oder Wortleitung in der Regel eine Instanz des kleinsten individuell zugänglichen (lesbaren) Abschnitts in einem Block ist. In einigen Ausführungsformen (z. B. unter Verwendung einiger Arten von Flash-Speichern) ist die kleinste individuell zugängliche Einheit eines Datensatzes jedoch ein Sektor, der eine Untereinheit einer Seite ist. Das heißt, ein Block schließt eine Vielzahl von Seiten ein, wobei jede Seite eine Vielzahl von Sektoren enthält, und jeder Sektor die minimale Dateneinheit zum Schreiben von Daten auf die Flash-Speichervorrichtung oder zum Lesen von Daten von der Flash-Speichervorrichtung ist.
  • In einigen Ausführungsformen schließt die Speichersteuerung 124 ein Verwaltungsmodul 121-1, eine Host-Schnittstelle 129, eine Speichermediumschnittstelle 128 und ein zusätzliches Modul bzw. zusätzliche Module 125 ein. Die Speichersteuerung 124 kann verschiedene zusätzliche Merkmale einschließen, die aus Gründen der Kürze, und damit nicht von sachdienlichen Merkmalen der hierin offenbarten Ausführungsbeispiele abgelenkt wird, nicht veranschaulicht wurden, und eine verschiedene Anordnung von Merkmalen kann möglich sein. Die Host-Schnittstelle 129 stellt eine Schnittstelle zu dem Computersystem 110 über Datenverbindungen 101 bereit. Die Host-Schnittstelle 129 schließt in der Regel einen Eingangspuffer und einen Ausgangspuffer ein, die nicht gezeigt werden. In ähnlicher Weise stellt die Speichermediumschnittstelle 128 eine Schnittstelle zu dem Speichermedium 130 über die Verbindungen 103 bereit. In einigen Ausführungsformen schließt die Speichermediumschnittstelle 128 Lese- und Schreibschaltungen ein, einschließlich Schaltungen, die in der Lage sind, Lesesignale an das Speichermedium 130 (z. B. Lesen von Schwellenspannungen für NAND-Flash-Speicher) bereitzustellen.
  • In einigen Ausführungsformen schließt das Verwaltungsmodul 121-1 eine oder mehrere Verarbeitungseinheiten 122-1 (hierin gelegentlich als CPUs, Prozessoren oder Hardware-Prozessoren bezeichnet und manchmal unter Verwendung von Mikroprozessoren, Mikrosteuerungen oder dergleichen implementiert), die eingerichtet sind zum Ausführen von Anweisungen in einem oder mehreren Programmen (z. B. im Verwaltungsmodul 121-1). In einigen Ausführungsformen teilen sich eine oder mehrere Komponenten eine oder mehrere CPUs 122-1 im Rahmen der Funktion der Speichersteuerung 124 und in einigen Fällen auch darüber hinausgehend. Das Verwaltungsmodul 121-1 ist mit der Host-Schnittstelle 129, einem zusätzlichen Modul bzw. zusätzlichen Modulen 125 und der Speichermediumschnittstelle 128 gekoppelt, um den Betrieb dieser Komponenten zu koordinieren. In einigen Ausführungsformen sind ein oder mehrere Module des Verwaltungsmoduls 121-1 im Verwaltungsmodul 121-2 des Computersystems 110 implementiert. In einigen Ausführungsformen sind ein oder mehrere Prozessoren des Computersystems 110 (nicht gezeigt) eingerichtet, um Anweisungen in einem oder mehreren Programmen (z. B. im Verwaltungsmodul 121-2) auszuführen. Das Verwaltungsmodul 121-2 ist mit der Speichervorrichtung 120 gekoppelt, um den Betrieb der Speichervorrichtung 120 zu verwalten.
  • In einigen Ausführungsformen schließt ein zusätzliches Modul bzw. schließen zusätzliche Module 125 ein Fehlerüberwachungsmodul ein, das bereitgestellt ist, um die Anzahl der nicht korrigierbaren Fehler zu begrenzen, die versehentlich bei Schreibvorgängen in den Speicher oder bei Lesevorgängen von dem Speicher in die Daten eingeführt werden. In einigen Ausführungsformen wird das Fehlerüberwachungsmodul in der Software durch einen oder mehrere CPUs 122-1 des Verwaltungsmoduls 121-1 ausgeführt, und in anderen Ausführungsformen wird das Fehlersteuerungsmodul vollständig oder teilweise mithilfe einer besonderen Schaltung implementiert, um Datenkodierungs- und Datendekodierungsfunktionen durchzuführen. Zu diesem Zweck schließt das Fehlerüberwachungsmodul in einigen Ausführungsformen einen Encoder und einen Decoder ein. Der Encoder kodiert Daten durch Anwenden eines Fehlerüberwachungscodes, um ein Codewort zu erzeugen, das nachfolgend in dem Speichermedium 130 gespeichert wird.
  • Wenn die kodierten Daten (z. B. ein oder mehrere Codewörter) aus dem Speichermedium 130 gelesen werden, wendet der Decoder einen Dekodierungsprozess auf die kodierten Daten an, um die Daten wiederherzustellen und die Fehler in den wiederhergestellten Daten innerhalb der Fehlerkorrekturfähigkeit des Fehlerüberwachungscodes zu korrigieren. Der Fachmann erkennt, dass verschiedene Fehlerüberwachungscodes unterschiedliche Fehlererfassungs- und Fehlerkorrekturfähigkeiten aufweisen und dass bestimmte Codes für verschiedene Anwendungen aus Gründen ausgewählt werden, die über den Schutzumfang dieser Offenbarung hinausgehen. Somit wird eine vollständige Übersicht über die verschiedenen Arten von Fehlerüberwachungscodes hierin nicht bereitgestellt. Darüber hinaus erkennt der Fachmann, dass jede Art oder Familie von Fehlerüberwachungscodes Kodierungs- und Dekodierungsalgorithmen aufweisen kann, die speziell für die Art oder die Familie des Fehlerüberwachungscodes gelten. Andererseits können einige Algorithmen zumindest bis zu einem gewissen Ausmaß für das Dekodieren einer Anzahl von verschiedenen Arten oder Familien von Fehlerüberwachungscodes verwendet werden. Somit wird zum Zwecke der Kürze eine ausführliche Beschreibung der verschiedenen Arten der Kodierungs- und Dekodierungsalgorithmen, die allgemein verfügbar und dem Fachmann bekannt sind, hierin nicht bereitgestellt.
  • Die Speichersteuerung 124 ist eingerichtet, um Erfassungsoperationen durchzuführen (z. B. Leseoperationen oder hierin auch als Abnutzungsnivellierungsoperation bezeichnet). Eine Leseoperation wird gestartet, wenn das Computersystem (Host) 110 einen oder mehrere Host-Lesebefehle (z. B. über Datenverbindungen 101) an die Speichersteuerung 124 sendet und Daten von einem oder mehreren Blockpools des Speichermediums 130 anfordert. Die Speichersteuerung 124 sendet einen oder mehrere Lesezugriffsbefehle an das Speichermedium 130 über die Speichermediumschnittstelle 128, um unverarbeitete Lesedaten gemäß Speicherorten (Adressen auf bestimmten Pools) zu erhalten, die durch den einen oder die mehreren Host-Lesebefehle festgelegt werden. Die Speichermediumschnittstelle 128 liefert die unverarbeiteten Lesedaten (z. B. ein oder mehrere Codewörter aufweisend) an den Decoder. Wenn die Dekodierung erfolgreich ist, werden die dekodierten Daten an einen Ausgangspuffer geliefert, in dem die dekodierten Daten dem Computersystem 110 zur Verfügung gestellt werden. In einigen Ausführungsformen kann, wenn die Dekodierung nicht erfolgreich ist, die Speichersteuerung 120 auf eine Anzahl von Abhilfemaßnahmen zurückgreifen oder eine Anzeige eines unauflösbaren Fehlerzustands bereitstellen.
  • Bezug nehmend auf 2 wird ein Blockdiagramm 200 gezeigt, das einen durch die Speichersteuerung 124 (oder alternativ das Computersystem 110) im Speicher 134-i von 1 zugewiesenen SLC-Blockpool 208 und nSLC-Blockpool 220 gemäß einigen Ausführungsformen veranschaulicht. Obgleich einige beispielhafte Merkmale veranschaulicht sind, wurden verschiedene andere Merkmale zum Zwecke der Kürze, und um nicht unnötig von den sachdienlichen Aspekten der hierin beschriebenen Ausführungsbeispielen abzulenken, nicht veranschaulicht. SLC- und nSLC-Pools können aus einzelnen Blöcken bestehen. Wie hierin beschrieben, kann ein Block eine Gruppe von Zellen eines ähnlichen Typs (z. B. SLC oder nSLC) sein, zugewiesen von einem Hostsystem 110 und/oder einer Speichersteuerung 124. Wie hierin beschrieben, kann ein Pool eine Gruppe von Blöcken sein, zugeordnet durch das Computersystem 110 und/oder die Speichersteuerung 124. Daten, die die SLC- und nSLC-Blöcke und/oder Blockpools beschreiben, können in dem Speichermedium 130 gespeichert sein. Wie in 2 gezeigt, kann der SLC-Pool beispielsweise die Blöcke 202 bis 206 und 210 einschließen, die unter anderem in den 3 bis 4 gezeigt und unten ausführlicher erläutert werden. Ein nSLC-Pool (in 2 als TLC-Pool gezeigt) kann die Blöcke 212 bis 218 einschließen, die unter anderem in den 3 bis 4 gezeigt und unten ausführlicher erläutert werden. Jeder Block 202 bis 206 und 210 bis 218 in einem Pool 208, 220 kann einen eindeutigen PEC-Wert haben (z. B. X für Block 210 oder Y+100 für Block 214), der die Anzahl von Programmier-Lösch-Zyklen darstellt, die bereits auf dem jeweiligen Block durchgeführt wurden. Ein oder mehrere PEC-Werte können in dem Speichermedium 130 gespeichert werden. Der Einfachheit halber werden die Blöcke vom höchsten bis zum niedrigsten Wert vertikal geordnet dargestellt.
  • Ein minimaler PEC-Wert für einen Block in einem SLC-Pool kann in den Figuren als „X“ dargestellt sein. Der minimale PEC-Wert für einen Block in einem SLC-Pool kann durch einen Bediener ausgewählt oder unter Verwendung verschiedener anderer Techniken zur Berechnung der minimalen PEC-Werte berechnet werden. In diesem Ausführungsbeispiel kann der minimale PEC-Wert im SLC-Pool ein Wert zwischen null (0) und fünfzigtausend (50.000) sein. Daten, die den minimalen PEC-Wert für einen Block in einem SLC-Pool beschreiben, können in einem Speichermedium 130 gespeichert werden.
  • Eine maximale Differenz zwischen PEC-Werten in dem SLC-Pool (hierin auch als „SLC-PEC-Spanne“ bezeichnet) kann in den Figuren als „S“ dargestellt sein. In dem Ausführungsbeispiel von 2 beträgt „S“ eintausendfünfhundert (1.500). Die maximale Differenz zwischen den PEC-Werten im SLC-Pool kann durch einen Bediener ausgewählt oder unter Verwendung verschiedener anderer Techniken zur Berechnung der maximalen Differenz zwischen PEC-Werten in dem SLC-Pool berechnet werden. Daten, die die maximale Differenz zwischen PEC-Werten in dem SLC-Pool beschreiben, können in einem Speichermedium 130 gespeichert werden.
  • Ein minimaler PEC-Wert für einen Block in einem nSLC-Pool kann in den Figuren als „Y“ dargestellt sein. In diesen Ausführungsbeispielen kann der minimale PEC-Wert in dem nSLC-Pool ein Wert zwischen null (0) und eintausendfünfhundert (1.500) sein. Ein minimaler PEC-Wert für einen Block in einem nSLC-Pool kann durch einen Bediener ausgewählt oder unter Verwendung verschiedener anderer Techniken zur Berechnung des minimalen PEC-Werts für einen Block in einem SLC-Pool berechnet werden. Daten, die den minimalen PEC-Wert für einen Block in einem nSLC-Pool beschreiben, können in einem Speichermedium 130 gespeichert werden.
  • Eine maximale Differenz zwischen PEC-Werten in dem nSLC-Pool (hierin auch als „nSLC-PEC-Spanne“ bezeichnet), kann in den Figuren als „M“ dargestellt sein. In dem Ausführungsbeispiel von 2 beträgt „M“ einhundertfünfzig (150). Die maximale Differenz zwischen den PEC-Werten im nSLC-Pool kann durch einen Bediener ausgewählt oder unter Verwendung verschiedener anderer Techniken zur Berechnung der maximalen Differenz zwischen PEC-Werten berechnet werden. Daten, die die maximale Differenz zwischen PEC-Werten in dem nSLC-Pool beschreiben, können in einem Speichermedium 130 gespeichert werden.
  • Bezug nehmend auf 3 wird ein Blockdiagramm 300 gezeigt, das den Ausgleich der Blockabnutzungsnivellierung in Pools von 2 gemäß einigen Ausführungsformen veranschaulicht. Obgleich einige beispielhafte Merkmale veranschaulicht sind, wurden verschiedene andere Merkmale zum Zwecke der Kürze, und um nicht unnötig von den sachdienlichen Aspekten der hierin beschriebenen Ausführungsbeispielen abzulenken, nicht veranschaulicht. In einigen Ausführungsformen kann entweder die Speichersteuerung 124 oder das Computersystem 110 eine der hierin beschriebenen Funktionen durchführen. Der Einfachheit halber hat die Speichersteuerung 124 in den hierin beschriebenen Beispielen von 1 eine Anforderung empfangen oder eine Anweisung erzeugt, eine Abnutzungsnivellierungsoperation im SLC-Pool 208 durchzuführen.
  • Nachdem eine Anforderung zum Durchführen einer Abnutzungsnivellierungsoperation im SLC-Pool 208 von der Speichersteuerung 124 empfangen wird, kann die Speichersteuerung 124 bestimmen, ob ein oder mehrere Blöcke in dem SLC-Pool 208 die Pooltransferkriterien erfüllen. Wie beispielsweise in 3 gezeigt, können die Pooltransferkriterien für den SLC-Pool 208 ein Kriterium einschließen, das erfüllt ist, wenn ein PEC-Wert von einem oder mehreren der SLC-Blöcke kleiner oder gleich der nSLC-PEC-Spanne ist. Wie in 3 gezeigt, bestimmt die Speichersteuerung 124, dass Block 308 und Block 210 Pooltransferkriterien erfüllt, da jeder Block kleiner als die oder gleich der nSLC-PEC-Spanne von 150 ist. In 3 beträgt die nSLC-PEC-Spanne 150 und beide Blöcke 308 und 210 haben einen Wert von 150 oder „X“, der, wenn er wie in 3 als vertikal vom größtem bis zum kleinsten Wert geordnet gezeigt wird, ein Wert kleiner als 150 ist.
  • Als Reaktion auf das Bestimmen, dass Block 308 und 210 die Pooltransferkriterien erfüllen, ordnet die Speichersteuerung 124 Block 308 und Block 210 als nSLC-Blöcke in den nSLC-Pool neu zu (oder „transferiert“ sie). Die Pfeile 310 und 312 stellen jeweils Block 308 und Block 210 dar, die vom SLC-Pool 208 zum nSLC-Pool 220 transferiert werden. Die Blöcke 308 und 210 können nun als nSLC-Blöcke für die Datenspeicherung verwendet werden. Durch das Durchführen des Transfers können weniger genutzte Blöcke, die für den nSLC-Pool neu zugeordnet wurden, den gesamten durchschnittlichen PEC-Zählwert aller Blöcke in dem nSLC-Pool senken, wodurch die Langlebigkeit und Leistung der Halbleitervorrichtung verbessert wird. Wie hierin verwendet, kann „neu zugeordnet“ den Transfer oder die Neuzuordnung einzelner Blöcke von einem SLC-Pool zu einem nSLC-Pool oder umgekehrt durch die Speichersteuerung 124 bedeuten, sodass diese transferierten oder neu zugeordneten Blöcke ähnlich zu anderen Blöcken in dem jeweiligen Blockpool verwendet werden können. Die Blöcke 308 und 210 beispielsweise, die ursprünglich als SLC-Blöcke verwendet wurden, können nun als nSLC-Blöcke verwendet werden. Die Information bezüglich der Neuzuordnung kann in dem Speichermedium 130 gespeichert werden.
  • In einigen Ausführungsformen ordnet die Speichersteuerung 124 als Reaktion auf die Bestimmung, dass Block 308 und Block 210 die Pooltransferkriterien erfüllt, einen oder mehrere nSLC-Blöcke dem SLC-Pool neu zu. Dieser eine oder die mehreren nSLC-Blöcke haben in der Regel die höchsten PEC-Zählwerte in dem nSLC-Pool. Beispielsweise weist in 3 der Block 212 den höchsten PEC-Wert von „Y+M“ auf. Entsprechend wird der Block 212 vom nSLC-Pool in den SLC-Pool neu zugeordnet. Pfeil 314 stellt den Block 212 dar, der vom SLC-Pool 208 zum nSLC-Pool 220 transferiert wird.
  • In einigen Ausführungsformen wird der PEC-Wert eines Blocks, der von einem nSLC-Pool zu einem SLC-Pool konvertiert wird, mit einem Faktor R multipliziert, wobei R eine beliebige ganze positive Zahl ist. Diese Konvertierung wird durchgeführt, um einen vorherigen nSLC-Block den SLC-Blöcken richtig zuzuweisen und die richtige Abnutzungsnivellierung festzulegen, da SLC-Blöcke häufiger verwendet werden als nSLC-Blöcke. Der Faktor R kann auf einer Beziehung zwischen einer Level-Art der Blöcke in dem nSLC-Pool und der Single-Level-Art der Blöcke in dem SLC-Pool basieren. Wenn beispielsweise der nSLC-Pool ein Quad-Level-Cell-Pool ist, dann kann der Faktor R ein Wert von 4 sein, was dem Verhältnis der Level-Art des nSLC-Blocks (d. h. 4) und der Level-Art des SLC-Blocks (d. h. 1) entspricht. Wenn in anderen Ausführungsformen der nSLC-Pool eine Multi-Level-Cell ist, kann R ein Wert von 2 und wenn der nSLC-Pool eine Triple-Level-Cell ist, ein Wert von 3 sein.
  • In einigen Ausführungsformen können die Pooltransferkriterien ein weiteres Kriterium einschließen, das erfüllt ist, wenn eine BER des einen oder der mehreren SLC-Blöcke in dem SLC-Blockpool 208 kleiner als ein BER-SLC-Schwellenwert ist (z. B. ca. 0,01 %). Gemäß einer Bestimmung, dass der eine oder die mehreren SLC-Blöcke (z. B. SLC-Block 210) in dem SLC-Pool 208 kleiner oder gleich der nSLC-PEC-Spanne ist und die BER des einen oder der mehreren SLC-Blöcke kleiner als der BER-SLC-Schwellenwert, kann der SLC-Block 210 wie oben erläutert als nSLC-Block neu zugeordnet werden. Durch Konditionieren der Neuzuordnung basierend auf BER kann eine Bestätigung erfolgen, dass die Verwendung eines vorherigen SLC-Blocks als neuer nSLC-Block keine erhöhten BER-Probleme erzeugt, wenn der neue nSLC-Block verwendet wird.
  • In einigen Ausführungsformen können die Pooltransferkriterien ein Kriterium einschließen, das erfüllt ist, wenn einer oder mehrere der nSLC-Blöcke des nSLC-Pools 220 eine geringere BER als ein BER-nSLC-Schwellenwert haben (z. B. ca. 0,02 %). Wenn nSLC zu SLC konvertiert wird, kann die so erhaltene SLC ebenso wie jeder intrinsische SLC-Block eine vollständig funktionsfähige SLC sein, anstatt auf eine Teilmenge von Zuständen begrenzt zu sein (z. B. 3 von 4 oder 7 von 8). Durch Überprüfen der Bitfehlerrate, um die Verwendung eines vorherigen nSLC-Blocks als neuen SLC-Block zu bestätigen, können erhöhte BER-Probleme vermieden werden.
  • Bezug nehmend auf 4 wird ein Blockdiagramm 400 gezeigt, das den Ausgleich der Blockabnutzungsnivellierung in Pools von 2 gemäß einigen Ausführungsformen veranschaulicht. Obgleich einige beispielhafte Merkmale veranschaulicht sind, wurden verschiedene andere Merkmale zum Zwecke der Kürze, und um nicht unnötig von den sachdienlichen Aspekten der hierin beschriebenen Ausführungsbeispielen abzulenken, nicht veranschaulicht. In diesem Beispiel hat die Speichersteuerung 124 von 1 eine Anforderung empfangen, eine Abnutzungsnivellierungsoperation in dem SLC-Pool 208 durchzuführen.
  • Nachdem eine Anforderung (oder alternativ eine Anweisung) an die Speichersteuerung 124 zur Durchführung einer Abnutzungsnivellierungsoperation in dem SLC-Pool 208 empfangen wird, kann die Speichersteuerung 124 bestimmen, ob ein oder mehrere Blöcke in dem SLC-Pool 208 Pooltransferkriterien erfüllen. Wie beispielsweise in 4 dargestellt, können Pooltransferkriterien für den SLC-Pool 208 ein Kriterium einschließen, das erfüllt ist, wenn ein PEC-Wert von einem oder mehreren SLC-Blöcken kleiner ist als die Summe des durchschnittlichen PEC-Werts für den nSLC-Pool 220 und die nSLC-PEC-Spanne. In 4 ist der PEC-Wert für den nSLC-Pool 220 „Y“ und die nSLC-PEC-Spanne „M“. Daher ist das Kriterium für den SLC-Block 210 erfüllt, wobei „x“ kleiner ist als die Summe des PEC-Werts für den nSLC-Pool 220 „Y“ und die nSLC-PEC-Spanne „M“. In diesem Beispiel kann Y null (0) und M hundertfünfzig (150) sein. Der als „X“ festgelegte Block 210 ist kleiner als 150, da die SLC-Blöcke vertikal von den höchsten zu den niedrigsten Werten geordnet werden. Wie in 4 gezeigt, bestimmt die Speichersteuerung 124, dass der Block 210 einen Wert von weniger als 150 hat.
  • Als Reaktion auf die Bestimmung, dass Block 210 die Pooltransferkriterien erfüllt, kann die Speichersteuerung 124 den Block 210 als ein nSLC-Block in dem nSLC-Pool neu zuordnen (oder „transferieren“). Pfeil 410 stellt den Block 210 dar, der von dem SLC-Pool 208 zu dem nSLC-Pool 220 transferiert wird. Block 210 kann nun als nSLC-Block für die Datenspeicherung verwendet werden. Durch das Durchführen des Transfers können weniger genutzte Blöcke, die für den nSLC-Pool neu zugeordnet wurden, den gesamten durchschnittlichen PEC-Zählwert aller Blöcke in dem nSLC-Pool senken, wodurch die Langlebigkeit und Leistung der Halbleitervorrichtung verbessert wird.
  • In einigen Ausführungsformen kann die Speichersteuerung 124 als Reaktion auf die Bestimmung, dass Block 210 die Pooltransferkriterien erfüllt, ein oder mehrere nSLC-Blöcke dem SLC-Pool neu zuordnen. Dieser eine oder die mehreren nSLC-Blöcke haben in der Regel die höchsten PEC-Zählwerte in dem nSLC-Pool. Zum Beispiel hat in 4 der Block 212 den höchsten PEC-Wert „Y+M“. Entsprechend wird der Block 212 vom nSLC-Pool in den SLC-Pool neu zugeordnet. Pfeil 414 stellt Block 212 dar, der vom SLC-Pool 208 in den nSLC-Pool 220 transferiert wird.
  • Wie hierin erläutert, wird in dieser Ausführungsform der PEC-Wert eines Blocks, der von einem nSLC-Pools zu einem SLC-Pool konvertiert wurde, mit einem Faktor R multipliziert.
  • In einigen Ausführungsformen können die Pooltransferkriterien ein weiteres Kriterium einschließen, das erfüllt ist, wenn eine BER des einen oder der mehreren SLC-Blöcke in dem SLC-Blockpool 208 kleiner als ein BER-SLC-Schwellenwert ist (z. B. ca. 0,01 %). Gemäß einer Bestimmung, dass der eine oder die mehreren SLC-Blöcke in dem SLC-Pool 208 kleiner oder gleich der nSLC-PEC-Spanne ist und die BER des einen oder der mehreren SLC-Blöcke kleiner ist als der BER-SLC-Schwellenwert, kann der eine oder die mehreren SLC-Blöcke wie oben erläutert als nSLC-Blöcke neu zugeordnet werden. In einer Ausführungsform kann durch Konditionieren einer Neuzuordnung basierend auf der BER eine Bestätigung erfolgen, dass die Verwendung eines vorherigen SLC-Blocks als neuer nSLC-Block keine erhöhten BER-Probleme erzeugt.
  • Unter Bezugnahme auf 5 wird ein Flussdiagramm 500 gezeigt, das einen Ausgleich der Blockabnutzungsnivellierungsoperationen gemäß einigen Ausführungsformen veranschaulicht. Obgleich einige beispielhafte Merkmale veranschaulicht sind, wurden verschiedene andere Merkmale zum Zwecke der Kürze, und um nicht unnötig von den sachdienlichen Aspekten der hierin beschriebenen Ausführungsbeispielen abzulenken, nicht veranschaulicht.
  • In Schritt 502 empfängt die Speichersteuerung 124 eine Anforderung, eine Abnutzungsnivellierungsoperation in einem jeweiligen Blockpool durchzuführen von einem von: dem Blockpool der ersten Level-Art und dem Blockpool der zweiten Level-Art. In einigen Ausführungsformen schließt ein Blockpool der ersten Level-Art einen SLC-Pool 208 ein. In einigen Ausführungsformen schließt ein Blockpool der zweiten Level-Art einen nSLC-Pool 220 ein.
  • In Schritt 504 kann die Speichersteuerung 124 einen oder mehrere der SLC-Pools (z. B. SLC-Pool 208) überprüfen. Die Überprüfung kann, wie in den folgenden Schritten beschrieben, eine Bestimmung darüber einschließen, ob einer oder mehrere der SLC-Blöcke als nSLC-Blöcke transferiert oder neu zugeordnet werden.
  • In Schritt 506 kann die Speichersteuerung 124 bestimmen, ob ein oder mehrere Blöcke im SLC-Pool 208 Pooltransferkriterien erfüllen. In einigen Ausführungsformen schließen die Blockpooltransferkriterien ein Kriterium ein, das erfüllt ist, wenn ein Programmier-Lösch-Zyklus-Zählwert (PEC-Zählwert) für einen oder mehrere der SLC-Blöcke im SLC-Blockpool kleiner als ein nSLC-Abnutzungsnivellierungsschwellenwert ist. In einigen Ausführungsformen ist der nSLC-Abnutzungsnivellierungsschwellenwert eine vorbestimmte maximale PEC-Zählwertdifferenz zwischen einem nSLC-Block mit einem höchsten PEC-Zählwert in dem nSLC-Blockpool und einem nSLC-Block mit einem niedrigsten PEC-Zählwert in dem nSLC-Blockpool. In 3 beträgt der nSLC-Abnutzungsnivellierungsschwellenwert (hierin auch als „nSLC-PEC-Spanne“ bezeichnet) „M“ beispielsweise hundertfünfzig (150). Wie oben erläutert, können die Blöcke 308 und 210 einen niedrigeren Wert als 150 haben, was bedeutet, dass die Blöcke 308, 210 die Pooltransferkriterien erfüllen.
  • Wenn die Speichersteuerung 124 in Schritt 508 bestimmt, dass ein oder mehrere Blöcke (z. B. Block 308 und Block 210) in dem SLC-Pool 208 ein Pooltransferkriterium aus Schritt 506 erfüllen, kann die Speichersteuerung 124 bestimmen, ob ein oder mehrere Blöcke im SLC-Pool 208 weitere Pooltransferkriterien erfüllen. In dieser Ausführungsform schließen die Pooltransferkriterien ein weiteres Kriterium ein, das erfüllt ist, wenn eine BER von einem oder mehreren der SLC-Blöcke in SLC-Blockpool 208 kleiner ist als ein BER-SLC-Schwellenwert (z. B. ca. 0,01 %).
  • Wenn die Speichersteuerung 124 in Schritt 510 bestimmt, dass ein oder mehrere Blöcke (z. B. Block 308 und Block 210) in SLC-Pool 208 die Pooltransferkriterien von Schritt 506 und 508 erfüllen, kann die Speichersteuerung 124 den einen oder die mehreren SLC-Blöcke als nSLC-Blöcke in dem nSLC-Pool neu zuordnen (oder „transferieren“). In 3 stellen die Pfeile 310 und 312 beispielsweise den Block 308 bzw. Block 210 dar, die von dem SLC-Pool 208 zu dem nSLC-Pool 220 transferiert werden, da diese Blöcke die Pooltransferkriterien erfüllen. Block 308 und 210 können nun als nSLC-Blöcke für die Datenspeicherung verwendet werden.
  • Wenn die Speichersteuerung 124 in Schritt 512 bestimmt, dass ein oder mehrere Blöcke (z. B. Block 308 und Block 210) in dem SLC-Pool 208 die Pooltransferkriterien von 506 oder 508 nicht erfüllen, kann die Speichersteuerung 124 es unterlassen, den einen oder die mehreren SLC-Blöcke als nSLC-Blöcke in dem nSLC-Pool neu zuzuordnen (oder zu „transferieren“), da die BER für die SLC-Blöcke zu hoch sein kann und viele Blöcke nicht sicher als nSLC-Blöcke verwendet werden können.
  • Als eine Fortsetzung von Schritt 506 kann die Speichersteuerung 124 in Schritt 514 fortfahren, einen oder mehrere SLC-Pools (z. B. SLC-Pool 208) zu überprüfen.
  • In Schritt 516 kann die Speichersteuerung 124 bestimmen, ob ein oder mehrere Blöcke im SLC-Pool 208 Pooltransferkriterien erfüllen. In einigen Ausführungsformen können die Pooltransferkriterien ein Kriterium einschließen, das erfüllt ist, wenn ein PEC-Wert von einem oder mehreren SLC-Blöcken kleiner als die Summe des durchschnittlichen PEC-Werts für den nSLC-Pool 220 und der nSLC-PEC-Spanne ist. In 4 kann der nSLC-Pool-PEC-Wert Y beispielsweise null (0) und die nSLC-PEC-Spanne M kann einhundertfünfzig (150) sein. Der als „X“ festgelegte Block 210 ist kleiner als 150, da die SLC-Blöcke vertikal von den höchsten zu den niedrigsten Werten geordnet werden. Wie in 4 gezeigt, bestimmt die Speichersteuerung 124, dass der Block 210 einen Wert von weniger als 150 hat.
  • Wenn die Speichersteuerung 124 in Schritt 518 bestimmt, dass ein oder mehrere Blöcke (z. B. Block 210) im SLC-Pool 208 ein Pooltransferkriterium von Schritt 516 erfüllen, kann die Speichersteuerung 124 bestimmen, ob ein oder mehrere Blöcke im SLC-Pool 208 weitere Pooltransferkriterien erfüllen. In dieser Ausführungsform schließen die Pooltransferkriterien ein weiteres Kriterium ein, das erfüllt ist, wenn eine BER von einem oder mehreren der SLC-Blöcke in SLC-Blockpool 208 kleiner ist als ein BER-SLC-Schwellenwert (z. B. ca. 0,01 %).
  • Wenn die Speichersteuerung 124 bestimmt, dass der eine oder die mehreren Blöcke in dem SLC-Pool 208 die Pooltransferkriterien aus den Schritten 516 oder 518 nicht erfüllen, kann das Verfahren 500 mit Schritt 512 fortfahren.
  • Wenn die Speichersteuerung 124 in Schritt 520 bestimmt, dass ein oder mehrere Blöcke (z. B. Block 210) in dem SLC-Pool 208 die Pooltransferkriterien von 516 und 518 erfüllen, kann die Speichersteuerung 124 den einen oder die mehreren SLC-Blöcke als nSLC-Blöcke im nSLC-Pool neu zuordnen (oder „transferieren“). In 4 stellt Pfeil 410 beispielsweise Block 210 dar, der vom SLC-Pool 208 zum nSLC-Pool 220 transferiert wird. Block 210 kann nun als nSLC-Block für die Datenspeicherung verwendet werden.
  • Wenn die Speichersteuerung 124 in Schritt 522 bestimmt, dass ein oder mehrere Blöcke (z. B. Block 210) in dem SLC-Pool 208 Pooltransferkriterien aus Schritt 516 nicht erfüllen, kann die Speichersteuerung 124 es unterlassen, den einen oder die mehreren SLC-Blöcke als nSLC-Blöcke in dem nSLC-Pool neu zuzuordnen (oder zu „transferieren“), da die SLC-Blöcke sich wahrscheinlich schneller abgenutzt haben als die nSLC-Blöcke.
  • Als eine Fortsetzung von Schritt 506 kann die Speichersteuerung 124 in Schritt 524 einen oder mehrere nSLC-Pools (z. B. nSLC-Pool 220) überprüfen. Die Überprüfung kann, wie in den folgenden Schritten beschrieben, eine Bestimmung darüber einschließen, ob einer oder mehrere der nSLC-Blöcke als SLC-Blöcke transferiert oder neu zugeordnet werden.
  • In Schritt 526 kann die Speichersteuerung 124 bestimmen, ob ein oder mehrere Blöcke im nSLC-Pool 220 Pooltransferkriterien erfüllen. In einigen Ausführungsformen können die Pooltransferkriterien ein Kriterium einschließen, das erfüllt ist, wenn einer oder mehrere der nSLC-Blöcke des nSLC-Pools 220 eine geringere BER als ein BER-nSLC-Schwellenwert haben (z. B. ca. 0,02 %).
  • Wenn die Speichersteuerung 124 in Schritt 528 bestimmt, dass ein oder mehrere Blöcke in nSLC-Pool 220 die Pooltransferkriterien erfüllen, kann die Speichersteuerung 124 den einen oder die mehreren nSLC-Blöcke als SLC-Blöcke in dem SLC-Pool neu zuordnen (oder „transferieren“). In einigen Ausführungsformen wird, wie hierin erläutert, der PEC-Wert eines Blocks, der von einem nSLC-Pool zu einem SLC-Pool konvertiert wird, mit einem Faktor R multipliziert.
  • Wenn die Speichersteuerung 124 in Schritt 530 bestimmt, dass ein oder mehrere Blöcke (z. B. Block 210) in nSLC-Pool 220 Pooltransferkriterien von Schritt 516 nicht erfüllen, kann die Speichersteuerung 124 es unterlassen, den einen oder die mehreren der nSLC-Blöcke als SLC-Blöcke in dem SLC-Pool neu zuzuordnen (oder zu „transferieren“), da die nSLC-Blöcke sich wahrscheinlich schneller abgenutzt haben als die SLC-Blöcke.
  • In mindestens einer Ausführungsform sind ein oder mehrere Computer mit einem oder mehreren Prozessoren und Speicher (z. B. eine oder mehrere nichtflüchtige Speichervorrichtungen) eingeschlossen. In einigen Ausführungsformen speichert der Speicher oder das computerlesbare Speichermedium des Speichers Programme, Module und Datenstrukturen oder eine Teilmenge davon, damit ein Prozessor die verschiedenen hierin offenbarten Systeme und Verfahren steuern und ausführen kann. In einer Ausführungsform, ein nichtflüchtiges, computerlesbares Speichermedium, auf dem computerausführbare Anweisungen gespeichert sind, die, wenn sie von einem Prozessor ausgeführt werden, eines oder mehrere der hierin offenbarten Verfahren durchführen.
  • Der Fachmann erkennt, dass an den vorstehend gezeigten und beschriebenen Ausführungsbeispielen Änderungen vorgenommen werden könnten, ohne von deren umfassendem erfinderischen Konzept abzuweichen. Es versteht sich aus diesem Grund, dass diese Erfindung nicht auf die gezeigten und beschriebenen Ausführungsbeispiele beschränkt ist, sondern dass Modifikationen innerhalb des Geistes und Schutzumfangs der vorliegenden Erfindung, wie durch die Ansprüche definiert, abgedeckt sein sollen. Beispielsweise können spezifische Merkmale der Ausführungsbeispiele Teil der beanspruchten Erfindung sein oder nicht, verschiedene Komponenten im Gegensatz zu den ausdrücklich erwähnten können zumindest einige der hierin beschriebenen Merkmale durchführen, und Merkmale der offenbarten Ausführungsformen können kombiniert werden. Die Ausdrücke „circa (ca.)“ und „etwa“ können sich, wie hierin verwendet, auf + oder - 10 % des referenzierten Werts beziehen. Beispielsweise ist „ca. 9“ so zu verstehen, dass es 8,2 und 9,9 umfasst.
  • Es ist zu verstehen, dass mindestens einige der Figuren und Beschreibungen der Erfindung vereinfacht wurden, um den Fokus auf Elemente zu lenken, die für ein klares Verständnis der Erfindung relevant sind, während zum Zwecke der Klarheit andere Elemente ausgelassen wurden, die, wie ein Durchschnittsfachmann erkennt, auch einen Teil der Erfindung aufweisen können. Da jedoch solche Elemente im Stand der Technik gut bekannt sind und da sie nicht notwendigerweise ein besseres Verständnis der Erfindung ermöglichen, wird eine Beschreibung solcher Elemente hierin nicht bereitgestellt.
  • Es versteht sich, dass obwohl die Begriffe „erste“, „zweite“ usw. hierin manchmal verwendet werden, um verschiedene Elemente zu beschreiben, diese Elemente nicht auf diese Begriffe beschränkt sein sollen. Diese Begriffe werden nur verwendet, um ein Element von einem anderen zu unterscheiden. Beispielsweise könnte ein erstes Element als ein zweites Element bezeichnet werden, und gleichermaßen könnte ein zweites Element als erstes Element bezeichnet werden, ohne die Bedeutung der Beschreibung zu ändern, sofern jedes Auftreten von „erstes Element“ systematisch umbenannt wird und jedes Auftreten von „zweites Element“ systematisch umbenannt wird. Das erste Element und das zweite Element sind beides Elemente, es handelt sich dabei aber nicht um dasselbe Element.
  • Die hier verwendeten Begriffe dienen nur der Beschreibung von bestimmten Implementierungen und sollen nicht als Einschränkung der Ansprüche verstanden werden. So, wie sie in der Beschreibung der Implementierungen und der beiliegenden Ansprüche verwendet werden, sollen die Singularformen „ein/eine“ und „der/die/das“ ebenfalls die Pluralformen einschließen, sofern der Zusammenhang nicht eindeutig etwas anderes vorgibt. Es versteht sich ebenfalls, dass der Begriff „und/oder“, wie er hierin verwendet wird, jede und alle möglichen Kombinationen von einem oder mehreren der dazugehörigen aufgelisteten Objekte bezeichnet. Es versteht sich ferner, dass die Begriffe „aufweisen“ und/oder „aufweisend“, wenn sie in dieser Patentschrift verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Operationen, Elementen und/oder Komponenten bezeichnen, nicht aber das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen Merkmalen, ganzen Zahlen, Operationen, Elementen, Komponenten und/oder Gruppen von diesen ausschließen.
  • Wie hierin verwendet kann der Begriff „falls“ in der Bedeutung von „wenn“ oder „nach“ oder „als Reaktion auf die Bestimmung“ oder „gemäß einer Bestimmung“ oder „als Reaktion auf die Feststellung“ so ausgelegt werden, dass je nach Textzusammenhang eine angegebene unabdingbare Voraussetzung wahr ist. Analog kann die Formulierung „falls bestimmt wird (dass eine angegebene unabdingbare Voraussetzung wahr ist)“ oder „falls (eine angegebene unabdingbare Voraussetzung wahr ist)“ oder „wenn (eine angegebene unabdingbare Voraussetzung wahr ist)“ je nach Textzusammenhang in der Bedeutung von „nach Bestimmung“ oder „als Reaktion auf die Bestimmung“ oder „gemäß einer Bestimmung“ oder „nach Feststellung“ oder „als Reaktion auf die Feststellung“ so ausgelegt werden, dass eine angegebene unabdingbare Voraussetzung wahr ist.
  • Soweit sich das Verfahren nicht auf die hierin dargestellte besondere Reihenfolge der Schritte stützt, sollte die besondere Reihenfolge der Schritte ferner nicht als Beschränkung der Ansprüche ausgelegt werden. Alle Ansprüche, die sich auf das Verfahren der vorliegenden Erfindung beziehen, sollten nicht auf die Durchführung ihrer Schritte in der angegebenen Reihenfolge beschränkt werden, und ein Fachmann kann leicht erkennen, dass die Schritte variiert werden können und dennoch im Geist und Schutzumfang der vorliegenden Erfindung bleiben.

Claims (20)

  1. Verfahren zum Implementieren eines Ausgleichs der Blockabnutzungsnivellierung in einer Speichervorrichtung einschließlich eines oder mehrerer Blöcke der ersten Level-Art in einem Blockpool der ersten Level-Art und eines oder mehrerer Blöcke der zweiten Level-Art in einem Blockpool der zweiten Level-Art zum Speichern von Daten, wobei das Verfahren aufweist: Empfangen einer ersten Anforderung oder einer ersten Anweisung, um einen Ausgleich der Abnutzungsnivellierung in einem jeweiligen Blockpool durchzuführen von einem von: dem Blockpool der ersten Level-Art und dem Blockpool der zweiten Level-Art; Bestimmen, ob ein oder mehrere Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen; als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen, Neuzuordnung des einen oder der mehreren Blöcke in den jeweiligen Blockpool als der andere von dem Blockpool der ersten Level-Art und dem Blockpool der zweiten Level-Art; und als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien nicht erfüllen, Unterlassen der Neuzuordnung des einen oder der mehreren Blöcke in den jeweiligen Blockpool als der andere von dem Blockpool der ersten Level-Art und dem Blockpool der zweiten Level-Art.
  2. Verfahren nach Anspruch 1, wobei der jeweilige Blockpool der Blockpool der ersten Level-Art ist.
  3. Verfahren nach Anspruch 2, wobei die Blockpooltransferkriterien ein Kriterium einschließen, das erfüllt ist, wenn ein Programmier-Lösch-Zyklus-Zählwert (PEC-Zählwert) für einen oder mehrere der Blöcke der ersten Level-Art im Blockpool der ersten Level-Art kleiner als ein Abnutzungsnivellierungsschwellenwert der zweiten Level-Art ist.
  4. Verfahren nach Anspruch 3, wobei der Abnutzungsnivellierungsschwellenwert der zweiten Level-Art eine vorbestimmte maximale PEC-Zählwertdifferenz zwischen einem Block des zweiten Levels mit einem höchsten PEC-Zählwert im Blockpool der zweiten Level-Art und einem Block der zweiten Level-Art mit einem niedrigsten PEC-Zählwert im Blockpool der zweiten Level-Art ist.
  5. Verfahren nach Anspruch 2, wobei die Blockpooltransferkriterien ein Kriterium einschließen, das erfüllt ist, wenn ein (PEC-)Zählwert des einen oder der mehreren Blöcke der ersten Level-Art kleiner ist als eine Summe eines durchschnittlichen PEC-Zählwerts des einen oder der mehreren Blöcke der zweiten Level-Art im Blockpool der zweiten Level-Art und eines Abnutzungsnivellierungsschwellenwerts des Blocks der zweiten Level-Art.
  6. Verfahren nach Anspruch 2, ferner aufweisend: als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen, Neuzuordnung von einem oder mehreren Blöcken der zweiten Level-Art im Blockpool der zweiten Level-Art als ein oder mehrere Blöcke der ersten Level-Art, wobei jeder der einen oder der mehreren Blöcke der zweiten Level-Art über einen höheren Programmier-Lösch-Zyklus-Zählwert verfügt als ein Programmier-Lösch-Zyklus-Zählwert der anderen Blöcke der zweiten Level-Art im Blockpool der zweiten Level-Art.
  7. Verfahren nach Anspruch 2, wobei der jeweilige Blockpool ein Blockpool der zweiten Level-Art ist und wobei die Neuzuordnung von einem oder mehreren Blöcken der zweiten Level-Art im Blockpool der zweiten Level-Art als ein oder mehrere Blöcke der ersten Level-Art im Blockpool der ersten Level-Art das Multiplizieren eines entsprechenden PEC-Zählwerts für jeden der einen oder mehreren Blöcke der zweiten Level-Art mit einem Umrechnungsfaktor der ersten Level-Art einschließt.
  8. Speichervorrichtung, die einen oder mehreren Blöcke des ersten Levels in einem Blockpool des ersten Levels und einen oder mehrere Blöcke des zweiten Levels in einem Blockpool des zweiten Levels zum Speichern von Daten einschließt, wobei die Speichervorrichtung zum Durchführen der folgenden Operationen eingerichtet ist: Empfangen einer ersten Anforderung oder ersten Anweisung für die Durchführung einer Abnutzungsnivellierungsoperation in einem jeweiligen Blockpool von einem von: dem Blockpool des ersten Levels und dem Blockpool des zweiten Levels; Bestimmen, ob ein oder mehrere Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen; als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen, Neuzuordnung des einen oder der mehreren Blöcke in den jeweiligen Blockpool als der andere von dem Blockpool des ersten Levels und dem Blockpool des zweiten Levels; und als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien nicht erfüllen, Unterlassen der Neuzuordnung des einen oder der mehreren Blöcke in den jeweiligen Blockpool als der andere von dem Blockpool des ersten Levels und dem Blockpool des zweiten Levels.
  9. Speichervorrichtung nach Anspruch 8, wobei der jeweilige Blockpool der Blockpool des ersten Levels ist.
  10. Speichervorrichtung nach Anspruch 9, wobei die Blockpooltransferkriterien ein Kriterium einschließen, das erfüllt ist, wenn ein Programmier-Lösch-Zyklus-Zählwert (PEC-Zählwert) für einen oder mehrere der Blöcke des ersten Levels im Blockpool des ersten Levels kleiner ist als ein Abnutzungsnivellierungsschwellenwert des Blocks des zweiten Levels.
  11. Speichervorrichtung nach Anspruch 10, wobei der Abnutzungsnivellierungsschwellenwert des Blocks des zweiten Levels eine vorbestimmte maximale PEC-Zählwertdifferenz zwischen einem Block des zweiten Levels mit einem höchsten PEC-Zählwert im Blockpool des zweiten Levels und einem Block des zweiten Levels mit einem niedrigsten PEC-Zählwert im Blockpool des zweiten Levels ist.
  12. Speichervorrichtung nach Anspruch 9, wobei die Blockpooltransferkriterien ein Kriterium einschließen, das erfüllt ist, wenn ein (PEC-)Zählwert der einen oder mehreren Blöcke des ersten Levels kleiner ist als eine Summe eines durchschnittlichen PEC-Zählwerts des einen oder der mehreren Blöcke des zweiten Levels im Blockpool des zweiten Levels und eines Abnutzungsnivellierungsschwellenwerts des zweiten Levels.
  13. Verfahren nach Anspruch 9, wobei die Speichersteuerung ferner eingerichtet ist, um den folgenden Schritt durchzuführen: als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen, Neuzuordnung von einem oder mehreren Blöcken des zweiten Levels im Blockpool des zweiten Levels als ein oder mehrere Blöcke des ersten Levels, wobei jeder der einen oder der mehreren Blöcke des zweiten Levels einen höheren Programmier-Lösch-Zyklus-Zählwert hat als ein Programmier-Lösch-Zyklus-Zählwert der anderen Blöcke der zweiten Level-Art in dem Blockpool des zweiten Levels.
  14. Speichervorrichtung nach Anspruch 9, wobei der jeweilige Blockpool ein Blockpool des zweiten Levels ist und wobei die Neuzuordnung von einem oder mehreren Blöcken des zweiten Levels im Blockpool des zweiten Levels als ein oder mehrere Blöcke des ersten Levels im Blockpool des ersten Levels das Multiplizieren eines entsprechenden PEC-Zählwerts für jeden der einen oder mehreren Blöcke des zweiten Levels mit einem Umrechnungsfaktor des ersten Levels einschließt.
  15. Speichersteuerung zum Durchführen von Operationen auf den Blöcken des ersten Levels und des zweiten Levels, wobei die Speichersteuerung zum Durchführen der folgenden Operationen eingerichtet ist: Empfangen einer ersten Anforderung oder ersten Anweisung für die Durchführung einer Abnutzungsnivellierungsoperation in einem jeweiligen Blockpool von einem von: dem Blockpool des ersten Levels und dem Blockpool des zweiten Levels; Bestimmen, ob ein oder mehrere Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen; als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien erfüllen, Neuzuordnung des einen oder der mehreren Blöcke in den jeweiligen Blockpool als der andere von dem Blockpool des ersten Levels und dem Blockpool des zweiten Levels; und als Reaktion auf eine Bestimmung, dass der eine oder die mehreren Blöcke in dem jeweiligen Blockpool Blockpooltransferkriterien nicht erfüllen, Unterlassen der Neuzuordnung des einen oder der mehreren Blöcke in den jeweiligen Blockpool als der andere von dem Blockpool des ersten Levels und dem Blockpool des zweiten Levels.
  16. Speichersteuerung nach Anspruch 15, wobei der jeweilige Blockpool der Blockpool des ersten Levels ist.
  17. Speichersteuerung nach Anspruch 16, wobei die Blockpooltransferkriterien ein Kriterium einschließen, das erfüllt ist, wenn ein Programmier-Lösch-Zyklus-Zählwert (PEC-Zählwert) für einen oder mehrere der Blöcke des ersten Levels in dem Blockpool des ersten Levels kleiner ist als ein Abnutzungsnivellierungsschwellenwert des Blocks des zweiten Levels.
  18. Speichervorrichtung nach Anspruch 17, wobei der Abnutzungsnivellierungsschwellenwert des Blocks des zweiten Levels eine vorbestimmte maximale PEC-Zählwertdifferenz zwischen einem Block des zweiten Levels mit einem höchsten PEC-Zählwert im Blockpool des zweiten Levels und einem Block des zweiten Levels mit einem niedrigsten PEC-Zählwert im Blockpool des zweiten Levels ist.
  19. Speichersteuerung nach Anspruch 16, wobei die Blockpooltransferkriterien ein Kriterium einschließen, das erfüllt ist, wenn ein (PEC-)Zählwert der einen oder mehreren Blöcke des ersten Levels kleiner ist als eine Summe eines durchschnittlichen PEC-Zählwerts des einen oder der mehreren Blöcke des zweiten Levels im Blockpool des zweiten Levels und eines Abnutzungsnivellierungsschwellenwerts des zweiten Levels.
  20. Speichersteuerung nach Anspruch 16, wobei der jeweilige Blockpool ein Blockpool des zweiten Levels ist und wobei die Neuzuordnung von einem oder mehreren Blöcken des zweiten Levels im Blockpool des zweiten Levels als ein oder mehrere Blöcke des ersten Levels im Blockpool des ersten Levels das Multiplizieren eines entsprechenden PEC-Zählwerts für jeden des einen oder der mehreren Blöcke des zweiten Levels mit einem Umrechnungsfaktor des ersten Levels einschließt.
DE102019134291.0A 2019-01-24 2019-12-13 Ausgleich der blockabnutzungsnivellierung für eine optimale ssd-haltbarkeit Pending DE102019134291A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/256,020 US10817187B2 (en) 2019-01-24 2019-01-24 Balancing the block wearing leveling for optimum SSD endurance
US16/256,020 2019-01-24

Publications (1)

Publication Number Publication Date
DE102019134291A1 true DE102019134291A1 (de) 2020-07-30

Family

ID=71524134

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019134291.0A Pending DE102019134291A1 (de) 2019-01-24 2019-12-13 Ausgleich der blockabnutzungsnivellierung für eine optimale ssd-haltbarkeit

Country Status (4)

Country Link
US (1) US10817187B2 (de)
KR (1) KR102346572B1 (de)
CN (1) CN111477260B (de)
DE (1) DE102019134291A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12009038B2 (en) * 2022-04-20 2024-06-11 Micron Technology, Inc. Memory device wear leveling
US11734110B1 (en) 2022-04-27 2023-08-22 Dell Products L.P. Storage device reclassification system

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7646636B2 (en) 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation
KR101490421B1 (ko) * 2008-07-11 2015-02-06 삼성전자주식회사 메모리 셀 사이의 간섭을 억제할 수 있는 불휘발성 메모리장치, 컴퓨팅 시스템 및 그것의 프로그램 방법
US8891298B2 (en) 2011-07-19 2014-11-18 Greenthread, Llc Lifetime mixed level non-volatile memory system
TWI375887B (en) * 2008-10-31 2012-11-01 A Data Technology Co Ltd Flash memory device with wear-leveling mechanism and controlling method thereof
KR101548175B1 (ko) * 2008-11-05 2015-08-28 삼성전자주식회사 싱글 레벨 메모리 셀 블락과 멀티 레벨 메모리 셀 블락을 포함하는 불휘발성 메모리 장치의 마모 레벨링 방법
KR101097438B1 (ko) * 2009-10-29 2011-12-23 주식회사 하이닉스반도체 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법
US9021177B2 (en) * 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US9588883B2 (en) * 2011-09-23 2017-03-07 Conversant Intellectual Property Management Inc. Flash memory system
US9176862B2 (en) * 2011-12-29 2015-11-03 Sandisk Technologies Inc. SLC-MLC wear balancing
US8804415B2 (en) * 2012-06-19 2014-08-12 Fusion-Io, Inc. Adaptive voltage range management in non-volatile memory
US9965199B2 (en) 2013-08-22 2018-05-08 Sandisk Technologies Llc Smart dynamic wear balancing between memory pools
US9417804B2 (en) * 2014-07-07 2016-08-16 Microsemi Storage Solutions (Us), Inc. System and method for memory block pool wear leveling
US9697134B2 (en) * 2015-06-10 2017-07-04 Micron Technology, Inc. Memory having a static cache and a dynamic cache
US9952801B2 (en) * 2015-06-26 2018-04-24 Intel Corporation Accelerated address indirection table lookup for wear-leveled non-volatile memory
US20170075812A1 (en) * 2015-09-16 2017-03-16 Intel Corporation Technologies for managing a dynamic read cache of a solid state drive
CN108255419A (zh) 2017-12-19 2018-07-06 深圳忆联信息系统有限公司 一种用于tlc类型ssd的磨损均衡方法及ssd

Also Published As

Publication number Publication date
US20200241765A1 (en) 2020-07-30
CN111477260A (zh) 2020-07-31
CN111477260B (zh) 2023-10-24
KR102346572B1 (ko) 2021-12-31
KR20200092252A (ko) 2020-08-03
US10817187B2 (en) 2020-10-27

Similar Documents

Publication Publication Date Title
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE102017120840B4 (de) Verfahren und Vorrichtung zur Detektion und Handhabung von Lesestörungen
DE102008003113B4 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE112011102160B4 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE112010003887B4 (de) Datenverwaltung in Halbleiter-Speichereinheiten
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112016002631B4 (de) Speicherfunktionszustandsüberwachung
DE112008001151B4 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE112016000696B4 (de) Ablaufplanungsschema(ta) für eine Mehrchip-Speichervorrichtung
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE102019134290A1 (de) Verfahren und System zum Verbessern der Leistung einer Speichervorrichtung unter Verwendung einer asynchronen, unabhängigen Ebenenlesefunktionalität
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE112020000230T5 (de) Datenspeichervorrichtung mit dynamischem streifenlängenmanager
DE102015117500A1 (de) Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe
DE112020005092T5 (de) Konstruktion einer blockvorrichtung
DE102019134291A1 (de) Ausgleich der blockabnutzungsnivellierung für eine optimale ssd-haltbarkeit
DE112016002305T5 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE102020107166A1 (de) Zweidimensional skalierbares vielseitiges speicherformat fürdatenspeichervorrichtungen
DE112017006698T5 (de) Erreichen einheitlicher lesezeiten in nicht flüchtigen mehrebenenspeichern

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