DE112020005502T5 - Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke - Google Patents

Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke Download PDF

Info

Publication number
DE112020005502T5
DE112020005502T5 DE112020005502.7T DE112020005502T DE112020005502T5 DE 112020005502 T5 DE112020005502 T5 DE 112020005502T5 DE 112020005502 T DE112020005502 T DE 112020005502T DE 112020005502 T5 DE112020005502 T5 DE 112020005502T5
Authority
DE
Germany
Prior art keywords
blocks
data
dedicated
parity
memory component
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
DE112020005502.7T
Other languages
English (en)
Inventor
Kishore Kumar Muchherla
Harish R. Singidi
Ashutosh Malshe
Vamsi Pavan Rayaprolu
Sampath K. Ratnam
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.)
Micron Technology Inc
Original Assignee
Micron Technology 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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE112020005502T5 publication Critical patent/DE112020005502T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

Ein oder mehrere Blöcke aus einem Pool von Speicherbereichsblöcken der Speicherkomponente werden einem ersten Satz von zweckbestimmten Blöcken zugewiesen. Erste Schreiboperationen werden durchgeführt, um erste Daten in erste Datenstreifen bei Benutzerblöcken der Speicherkomponente zu schreiben. Es wird bestimmt, ob die Blöcke in dem ersten Satz von zweckbestimmten Blöcken eine Bedingung erfüllen, durch die angegeben wird, dass der erste Satz von zweckbestimmten Blöcken ausgemustert werden soll. Als Reaktion darauf, dass die Blöcke in dem ersten Satz von zweckbestimmten Blöcken die Bedingung erfüllen, werden ein oder mehrere andere Blöcke aus dem Pool von Speicherbereichsblöcken der Speicherkomponente einem zweiten Satz von zweckbestimmten Blöcken zugewiesen. Zweite Schreiboperationen werden durchgeführt, um zweite Daten in zweite Datenstreifen bei den Benutzerblöcken der Speicherkomponente zu schreiben.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen der Erfindung beziehen sich allgemein auf Speicher-Untersysteme, und betreffen insbesondere die dynamische Zuweisung von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken einer Speicherkomponente zur Verwendung als zweckbestimmte Blöcke.
  • HINTERGRUND
  • Ein Speicher-Untersystem kann eine oder mehrere Speicherkomponenten enthalten, um Daten zu speichern. Bei den Speicherkomponenten kann es sich zum Beispiel um nichtflüchtige Speicherkomponenten und flüchtige Speicherkomponenten handeln. Allgemein kann ein Host-System ein Speicher-Untersystem verwenden, um Daten in den Speicherkomponenten zu speichern und um Daten aus den Speicherkomponenten abzurufen.
  • Figurenliste
  • Die Erfindung wird anhand der nachstehenden detaillierten Beschreibung und der beigefügten Zeichnungen verschiedener Ausführungsformen der Erfindung besser verstanden.
    • 1A zeigt eine beispielhafte Computer-Umgebung, die ein Speicher-Untersystem enthält, gemäß einigen Ausführungsformen der Erfindung.
    • 1B zeigt die Blöcke eines Speicher-Untersystems gemäß einigen Ausführungsformen der Erfindung.
    • 1C zeigt Datenstreifen gemäß einigen Ausführungsformen der Erfindung.
    • 2A ist ein Flussdiagramm eines beispielhaften Verfahrens zur Zuweisung von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken zur Verwendung als zweckbestimmte Blöcke gemäß einigen Ausführungsformen der Erfindung.
    • 2B ist ein Flussdiagramm eines beispielhaften Verfahrens zur Zuweisung von einem oder mehreren Blöcken aus einem Pool von Überprovisionierungsblöcken („over provisioning blocks“) zur Verwendung als Paritätsblöcke gemäß einigen Ausführungsformen der Erfindung.
    • 3 ist eine Darstellung, die eine vollständige dynamische Zuweisung von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken zur Verwendung als zweckbestimmte Blöcke gemäß einigen Ausführungsformen der Erfindung veranschaulicht.
    • 4 ist eine Darstellung, die eine partielle dynamische Zuweisung von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken zur Verwendung als zweckbestimmte Blöcke gemäß einigen Ausführungsformen der Erfindung veranschaulicht.
    • 5 ist eine Darstellung, die eine mehrphasige dynamische Zuweisung von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken zur Verwendung als zweckbestimmte Blöcke gemäß einigen Ausführungsformen der Erfindung veranschaulicht.
    • 6 zeigt eine beispielhafte Maschine eines Computersystems, in der ein Satz von Instruktionen ausgeführt werden kann, um die Maschine zu veranlassen, eine oder mehrere der hier beschriebenen Operationen durchzuführen.
  • DETAILLIERTE BESCHREIBUNG
  • Aspekte der vorliegenden Erfindung beziehen sich auf die dynamische Zuweisung von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken einer Speicherkomponente zur Verwendung als zweckbestimmte Blöcke („purposed blocks“). Ein Speicher-Untersystem kann eine Speichervorrichtung, ein Speichermodul oder ein Hybrid aus einer Speichervorrichtung und einem Speichermodul sein. Beispiele für Speichervorrichtungen und Speichermodule werden nachfolgend in Verbindung mit 1 beschrieben. Allgemein kann ein Host-System ein Speicher-Untersystem verwenden, das eine oder mehrere Speichervorrichtungen enthält, um Daten zu speichern. Das Host-System kann Daten bereitstellen, die in dem Speicher-Untersystem gespeichert werden sollen, und kann Daten anfordern, die aus dem Speicher-Untersystem abgerufen werden sollen.
  • Eine Speichervorrichtung kann eine nichtflüchtige Speichervorrichtung sein. Eine nichtflüchtige Speichervorrichtung ist ein Baustein aus einem oder mehreren Chips. Jeder Chip kann eine oder mehrere Ebenen aufweisen. Bei einigen Typen von nichtflüchtigen Speichervorrichtungen (z.B. Negativ-Und-Vorrichtung (NAND-Vorrichtungen)) enthält jede Ebene einen Satz von physischen Blöcken. Jeder Block enthält einen Satz von Seiten. Jede Seite enthält einen Satz von Speicherzellen, um Datenbits zu speichern. Bei einigen Speichervorrichtungen, wie zum Beispiel NAND-Vorrichtungen, sind Blöcke der kleinste Bereich, der gelöscht werden kann, und die Seiten innerhalb der Blöcke können nicht einzeln gelöscht werden. Bei solchen Vorrichtungen werden die Löschoperationen blockweise durchgeführt. Eine Seite eines Blocks kann gültige Daten, ungültige Daten oder keine Daten enthalten. Ungültige Daten sind Daten, die als veraltet gekennzeichnet sind, da eine neue Version der Daten in der Speichervorrichtung gespeichert ist. Gültige Daten sind die neueste Version solcher Daten, die in der Speichervorrichtung gespeichert sind. Ein Speicher-Untersystem kann Daten auf Basis von Informationen, die es zum Beispiel von einem Betriebssystem erhält, als ungültig kennzeichnen.
  • Ein Block kann einige Seiten mit gültigen Daten und einige Seiten mit ungültigen Daten enthalten. Damit nicht gewartet werden muss, bis alle Seiten in dem Block ungültige Daten enthalten, um den Block löschen und erneut verwenden zu können, kann ein Algorithmus aufgerufen werden, der im Folgenden als „Speicherbereinigung“ („garbage collection“) bezeichnet wird, damit der Block gelöscht und erneut für Schreiboperationen verwendet werden kann. Die Speicherbereinigung umfasst einen Satz von Operationen, die zum Beispiel das Auswählen eines Blocks, der gültige und ungültige Daten enthält, das Auswählen von Seiten in dem Block, die gültige Daten enthalten, das Kopieren der gültigen Daten an neue Stellen (z.B. freie Seiten in einem anderen Block), das Markieren der Daten in den zuvor ausgewählten Seiten als ungültig, und das Löschen des ausgewählten Blocks umfassen.
  • Da die Speicherbereinigung die gültigen Daten in einen anderen Block schreiben kann, bevor der Block gelöscht wird, können Daten viele Male in verschiedene Blöcke in dem Speicher-Untersystem erneut geschrieben werden. Die Anzahl zusätzlicher erneuter Schreibvorgänge von Daten in dem Speicher-Untersystem wird hier als Schreibverstärkung („write-amplification“) bezeichnet. Durch die Schreibverstärkung kann die Lebensdauer eines Speicher-Untersystems verringert werden. Um die Schreibverstärkung zu verringern, kann das Speicher-Untersystem eine gewisse Anzahl zusätzlicher Blöcke enthalten, die über die Gesamtzahl der Blöcke hinausgeht, die zu einer beliebigen einzelnen Zeit für das Speichern von Daten aus dem Host-System verfügbar sind. Solche zusätzlichen Blöcke können als Überprovisionierung („over-provisioning“) bezeichnet werden. Durch eine größere Menge an Überprovisionierung kann die Schreibverstärkung erheblich reduziert werden, da die Anzahl von Zeitpunkten, in denen Daten erneut in das Speicher-Untersystem geschrieben werden, weil die Speicherbereinigung versucht, Blöcke freizugeben, verringert wird.
  • Ein „Speicherbereichsblock“ kann sich auf einen Pool von Blöcken (z.B. eine minimale Anzahl) beziehen, die die Nennkapazität des Speicher-Untersystems (z.B. die Kapazität des Laufwerks) und die Überprovisionierungsblöcke umfassen. Wenn beispielsweise ein Speicher-Untersystem eine Nennkapazität von 256 Gigabyte (GB) hat, dann umfassen die Speicherbereichsblöcke einen Pool von Blöcken für die volle Benutzerkapazität von 256 GB und die Überprovisionierungsblöcke. Aus dem Pool von Speicherbereichsblöcken werden andere Blöcke dynamisch als Paritätsblöcke oder andere „spezielle“ zweckbestimmte Blöcke zugewiesen. Je mehr Blöcke aus den Speicherbereichsblöcken als zweckbestimmte Blöcke zugewiesen werden, desto weniger Blöcke werden als Überprovisionierungsblöcke zugewiesen. In einem illustrativen Beispiel umfasst der Pool aus Speicherbereichsblöcken 1100 Blöcke. 1000 Blöcke werden als Benutzerblöcke verwendet, um die Datenkapazität von 265 GB unterzubringen, und 100 Blöcke werden als Überprovisionierungsblöcke verwendet.
  • Ein „zweckbestimmter Block“ kann sich auf einen Block beziehen, der für einen bestimmten Zweck verwendet wird. Beispiele für zweckbestimmte Blöcke können Paritätsblöcke, Blöcke, die temporäre Daten für eine Anwendung, wie zum Beispiel eine Scratch-Pad-Anwendung (Notizblock-Anwendung) speichern, oder temporäre Systemdaten umfassen. In einigen Ausführungsformen wird die Anzahl der zweckbestimmten Blöcke, die für einen speziellen Zweck zugewiesen werden, nicht durch die augenblickliche Verwendung (z.B. zu einem bestimmten Zeitpunkt) bestimmt, sondern durch die Anzahl der Blöcke, die verwendet werden, um eine Anzahl X von Daten unterzubringen, die während der Lebensdauer des Speicher-Untersystems in die bestimmten Blöcke geschrieben werden.
  • Paritätsblöcke können sich auf Blöcke beziehen, die Paritätsdaten speichern. Zum Beispiel kann ein Streifen von Benutzerdaten über mehrere Knoten geschrieben werden. Ein Paritätsblock kann zumindest vorübergehend Paritätsdaten für den jeweiligen Streifen von Benutzerdaten speichern.
  • In einigen konventionellen Speicher-Untersystemen wird die Gesamtzahl der zweckbestimmten Blöcke, die während der Lebensdauer eines Speicher-Untersystems verwendet werden, als Herstellungsstandard zum Zeitpunkt Null zugewiesen. Die zugewiesenen zweckbestimmten Blöcke werden verwendet, um zweckbestimmte Daten für Datenstreifen zu speichern, die in das Speicher-Untersystem geschrieben werden. Die zweckbestimmten Daten werden in einen oder mehrere zweckbestimmte Blöcke für die Lebensdauer des jeweiligen Datenstreifens gespeichert (z.B. werden die zweckbestimmten Daten in einen Datenblock für die gesamte Zeit gespeichert, in der der jeweilige Datenstreifen in dem Speicher-Untersystem gespeichert ist). Wenn beispielsweise 10 Paritätsblöcke über die Lebensdauer des Speicher-Untersystems verwendet werden, werden die 10 Paritätsblöcke zu Beginn des Betriebs des Speicher-Untersystems zugewiesen. Wenn Daten in einen Datenstreifen geschrieben werden, werden die Paritätsdaten erstellt und in einen oder mehrere Paritätsblöcke gespeichert, bis die Daten des Datenstreifens durch eine Speicherbereinigungsoperation gelöscht werden. In den oben erwähnten konventionellen Speicher-Untersystemen wird durch die Zuweisung der Gesamtzahl der zweckbestimmten Blöcke, die während der Lebensdauer des Speicher-Untersystems verwendet werden, die Menge an OP verringert, die für die Durchführung von Speicherbereinigungsoperationen zur Verfügung steht, wodurch die Schreibverstärkung erhöht wird und was sich negativ auf die Leistung des Speicher-Untersystems auswirkt.
  • Aspekte der Erfindung gehen die oben genannten Herausforderungen sowie andere Herausforderungen an, indem ein oder mehrere Blöcke aus einem Pool von Speicherbereichsblöcken dynamisch zur Verwendung als zweckbestimmte Blöcke, wie zum Beispiel Paritätsblöcke, zugewiesen werden. In einigen Ausführungsformen ist die Anzahl der zu einem bestimmten Zeitpunkt benötigten speziellen zweckbestimmten Blöcke geringer als die gesamte Anzahl der speziellen zweckbestimmten Blöcke, die während der Lebensdauer der Vorrichtung zugewiesen werden müssen. In einigen Ausführungsformen werden ein oder mehrere Blöcke aus einem Pool von Speicherbereichsblöcken der Speicherkomponente als anfänglicher Satz von zweckbestimmten Blöcken zugewiesen. Die zweckbestimmten Blöcke werden verwendet, um zweckbestimmte Daten zu speichern, die als anfängliche Datenstreifen gespeichert werden. Nach dem Schreiben der anfänglichen Daten (z.B. zweckbestimmte Daten) in die anfänglichen Datenstreifen erfolgt eine Bestimmung, ob die Blöcke des anfänglichen Satzes von zweckbestimmten Blöcken eine Bedingung erfüllen, die angibt, dass der erste Satz von zweckbestimmten Blöcken ausgemustert werden soll. Beispielsweise kann ein Hinweis auf den Lebensdauerzustand der zweckbestimmten Blöcke ausgewertet werden, um zu bestimmen, ob die zweckbestimmten Blöcke immer noch zuverlässig sind oder einen Lebensendezustand erreicht haben. Als Reaktion auf das Bestimmen, dass die Blöcke ausgemustert werden sollen, werden ein oder mehrere andere Blöcke aus dem Pool von Speicherbereichsblöcken einem nachfolgenden Satz von zweckbestimmten Blöcken zugewiesen, und der anfängliche Satz von bestimmten Blöcken wird ausgemustert. Der nachfolgende Satz von zweckbestimmten Blöcken kann verwendet werden, um zweckbestimmte Daten für nachfolgende Datenstreifen zu speichern.
  • In einigen Ausführungsformen kann das Speicher-Untersystem unter Verwendung eines „temporären Paritätsschemas“ arbeiten. Anstatt die Paritätsdaten für die gesamte Lebensdauer des jeweiligen Datenstreifens aufzubewahren, können die Paritätsdaten „vorübergehend“ in einem Paritätsblock gespeichert werden. Bevor die jeweiligen Daten des Datenstreifens speicherbereinigt werden, kann der Paritätsblock erneut verwendet werden, um die Paritätsdaten eines nachfolgenden Datenstreifens zu speichern. Bitfehler in einem bestimmten Block entstehen beispielsweise häufig durch eine Programmier-Operation in diesem Block. Zum Beispiel kann eine Seite eines Blocks programmiert werden. Während der Block offen ist (d.h. der Block wurde nicht vollständig beschrieben), kann eine andere Seite des Blocks programmiert werden, wodurch die Bits der zuvor programmierten Seite desselben Blocks entweder gestört oder beschädigt werden können. Ein temporäres Paritätsschema kann die Paritätsdaten eines Blocks speichern, bis die Inhalte des Blocks validiert sind. Sobald die Daten des Blocks validiert sind, werden die Paritätsdaten nicht mehr benötigt, und der jeweilige Paritätsblock kann erneut zum Speichern von Paritätsdaten für einen anderen Datenstreifen verwendet werden. So kann beispielsweise ein Block vollständig mit Daten beschrieben und anschließend geschlossen werden. Nach dem Schließen des Blocks können die Daten des Blocks gelesen und mit den tatsächlich in dem flüchtigen Speicher gespeicherten Daten verglichen werden. Wenn der Block keine nicht-korrigierbaren Bitfehler aufweist, können die zugehörigen Paritätsdaten „gespült“ werden, und der jeweilige Paritätsblock kann erneut verwendet werden.
  • In einigen Ausführungsformen arbeitet der Pool von Speicherbereichsblöcken (z.B. ein Pool von OP-Blöcken) im Multi-Bit-Modus (z.B. TLC-Modus) oder im Single-Bit-Modus, und die zweckbestimmten Blöcke arbeiten in einem Single-Bit-Modus (z.B. SLC-Modus). Wenn ein zweckbestimmter Block bzw. zweckbestimmte Blöcke ausgemustert wird bzw. werden, wird ein neuer Paritätsblock bzw. neue Paritätsblöcke aus dem Pool von Speicherbereichsblöcken (z.B. Pool von OP-Blöcken) zugewiesen, die im Multi-Bit-Modus oder im Single-Bit-Modus arbeiten. Der/die neue(n) zweckbestimmte(n) Block (Blöcke) wird/werden dann im Single-Bit-Modus betrieben, was zu einer höheren Lebensdauer führt als bei Blöcken, die im Multi-Bit-Modus arbeiten. In einigen Ausführungsformen können einige Blöcke des Pools von Speicherbereichsblöcken im Single-Bit-Modus und andere Blöcke des Pools von Speicherbereichsblöcken im Multi-Bit-Modus betrieben werden.
  • Durch die hier beschriebene dynamische Zuweisung von zweckbestimmten Blöcken kann die Leistung eines Speicher-Untersystems verbessert werden, indem die Zuweisung von mehr Blöcken für die Überprovisionierung für mindestens einen Teil der Lebensdauer des Speicher-Untersystems ermöglicht wird, wodurch die Schreibverstärkung verringert und die Leistung des Speicher-Untersystems verbessert wird. Darüber hinaus kann durch die dynamische Zuweisung von zweckbestimmten Blöcken die Leistung eines Speicher-Untersystems verbessert werden, indem zumindest für einen Teil der Lebensdauer des Speicher-Untersystems zusätzliche Datenblöcke für den Benutzerraum bereitgestellt werden, wodurch die Kapazität des Benutzerraums des Speicher-Untersystems verbessert wird.
  • 1A zeigt eine beispielhafte Computerumgebung 100, die ein Speicher-Untersystem 110 gemäß einigen Ausführungsformen der Erfindung enthält. Das Speicher-Untersystem 110 kann Medien enthalten, wie zum Beispiel Speicherkomponenten 112A bis 112N (im Folgenden auch als „Speichervorrichtungen“ bezeichnet). Die Speicherkomponenten 112A bis 112N können flüchtige Speicherkomponenten, nichtflüchtige Speicherkomponenten oder eine Kombination davon sein. Ein Speicher-Untersystem 110 kann eine Speichervorrichtung, ein Speichermodul oder eine Mischung aus einer Speichervorrichtung und einem Speichermodul sein. Beispiele für eine Speichervorrichtung sind ein Solid-State-Laufwerk (SSD), ein Flash-Laufwerk, ein USB-Flash-Laufwerk (Universal Serial Bus Flash Laufwerk), ein eMMC-Laufwerk (Embedded Multi-Media Controller Laufwerk), ein UFS-Laufwerk (Universal Flash Storage Laufwerk) und ein Festplattenlaufwerk (HDD). Beispiele für Speichermodule umfassen ein Dual-Inline-Speichermodul (DIMM), ein Small-Outline-DIMM (SO-DIMM) und ein nichtflüchtiges Dual-Inline-Speichermodul (NVDIMM).
  • Die Computerumgebung 100 kann ein Host-System 120 umfassen, das mit einem Speichersystem gekoppelt ist. Das Speichersystem kann ein oder mehrere Speicher-Untersysteme 110 enthalten. In einigen Ausführungsformen ist das Host-System 120 mit verschiedenen Typen von Speicher-Untersystemen 110 gekoppelt. 1 zeigt ein Beispiel eines Host-Systems 120, das mit einem Speicher-Untersystem 110 gekoppelt ist. Das Host-System 120 verwendet das Speicher-Untersystem 110, um beispielsweise Daten in das Speicher-Untersystem 110 zu schreiben und Daten aus dem Speicher-Untersystem 110 zu lesen. Wie hier verwendet, bezieht sich „gekoppelt mit“ allgemein auf eine Verbindung zwischen Komponenten, die eine indirekte kommunikative Verbindung oder eine direkte kommunikative Verbindung (z.B. ohne zwischengeschaltete Komponenten) sein kann, entweder verdrahtet oder drahtlos, einschließlich Verbindungen, wie zum Beispiel elektrische, optische, magnetische Verbindungen, usw.
  • Das Host-System 120 kann eine Computervorrichtung sein, wie zum Beispiel ein Desktop-Computer, ein Laptop-Computer, ein Netzwerk-Server, eine mobile Vorrichtung, ein eingebetteter Computer (enthalten z.B. in einem Fahrzeug, in einer Industrieanlage oder in einer vernetzten kommerziellen Vorrichtung) oder eine solche Computervorrichtung, die einen Speicher und eine Verarbeitungsvorrichtung enthält. Das Host-System 120 kann das Speicher-Untersystem 110 enthalten oder mit diesem gekoppelt sein, so dass das Host-System 120 Daten aus dem Speicher-Untersystem 110 lesen oder in dieses schreiben kann. Das Host-System 120 kann über eine physische Host-Schnittstelle mit dem Speicher-Untersystem 110 gekoppelt sein. Beispiele für eine physische Host-Schnittstelle umfassen unter anderem eine SATA-Schnittstelle (Serial Advanced Technology Attachment Schnittstelle), eine PCIe-Schnittstelle (Peripheral Component Interconnect Express Schnittstelle), eine USB-Schnittstelle (Universal Serial Bus Schnittstelle), einen Fibre Channel, ein SAS (Serial Attached SCSI), usw. Die physische Host-Schnittstelle kann verwendet werden, um Daten zwischen dem Host-System 120 und dem Speicher-Untersystem 110 zu übertragen. Das Host-System 120 kann außerdem eine NVMe-Schnittstelle (NVM Express Schnittstelle) verwenden, um auf die Speicherkomponenten 112A bis 112N zuzugreifen, wenn das Speicher-Untersystem 110 über die PCIe-Schnittstelle mit dem Host-System 120 verbunden ist. Die physische Host-Schnittstelle kann eine Schnittstelle zur Weiterleitung von Steuersignalen, Adressensignalen, Datensignalen und anderen Signalen zwischen dem Speicher-Untersystem 110 und dem Host-System 120 bereitstellen.
  • Die Speicherkomponenten 112A bis 112N können eine beliebige Kombination der verschiedenen Typen von nichtflüchtigen Speicherkomponenten und/oder flüchtigen Speicherkomponenten umfassen. Ein Beispiel für nichtflüchtige Speicherkomponenten ist ein Flash-Speicher vom Typ Negativ-Und (NAND). Jede der Speicherkomponenten 112A bis 112N kann eine oder mehrere Arrays aus Speicherzellen enthalten, wie zum Beispiel Single-Level-Zellen (SLCs), Multi-Level-Zellen (MLCs), Triple-Level-Zellen (TLCs) oder Quad-Level-Zellen (QLCs). In einigen Ausführungsformen kann eine bestimmte Speicherkomponente sowohl einen SLC-Bereich als auch einen anderen Typ (z.B. MLC, TLC, QLC) von Speicherzellen enthalten. Jede der Speicherzellen kann ein oder mehrere Datenbits (z.B. Datenblöcke) speichern, die vom Host-System 120 verwendet werden. Obwohl nichtflüchtige Speicherkomponenten, wie zum Beispiel Flash-Speicher des Typs NAND, beschrieben werden, können die Speicherkomponenten 112A bis 112N auf jedem anderen Speichertyp basieren, zum Beispiel auf einem flüchtigen Speicher. In einigen Ausführungsformen können die Speicherkomponenten 112A bis 112N Direktzugriffsspeicher (RAM), Festwertspeicher (ROM), dynamische Direktzugriffsspeicher (DRAM), synchrone dynamischer Direktzugriffsspeicher (SDRAM), Phasenänderungsspeicher (PCM), Magneto-Direktzugriffsspeicher (MRAM), Negativ-Oder-Flash-Speicher (NOR-Flash-Speicher), elektrisch löschbare programmierbare Festwertspeicher (EEPROM) und ein Kreuzpunkt-Arrays aus nichtflüchtigen Speicherzellen sein, aber nicht hierauf beschränkt. Ein Kreuzpunkt-Array aus nichtflüchtigen Speicherzellen kann in Verbindung mit einem stapelbaren Kreuzgitter-Datenzugriffs-Array eine Bitspeicherung auf Basis einer Änderung des Bahnwiderstands durchführen. Darüber hinaus kann ein nichtflüchtiger Kreuzpunktspeicher im Gegensatz zu vielen Flash-Speichern einen Write-in-Place-Vorgang durchführen, bei dem eine nichtflüchtige Speicherzelle programmiert werden kann, ohne dass die nichtflüchtige Speicherzelle zuvor gelöscht wurde. Darüber hinaus können die Speicherzellen der Speicherkomponenten 112A bis 112N als eine Gruppe von Speicherzellen, Wortleitungen, Wortleitungsgruppen (z.B. mehrere Wortleitungen in einer Gruppe) oder Seiten gruppiert werden, die sich auf eine Einheit der Speicherkomponente beziehen können, die zum Speichern von Daten verwendet wird. Bei einigen Speichertypen (z.B. NAND) können Seiten zu Blöcken gruppiert werden.
  • Der Speichersystem-Controller 115 (nachfolgend als „Controller“ bezeichnet) kann mit den Speicherkomponenten 112A bis 112N kommunizieren, um Operationen durchzuführen, wie zum Beispiel Lesen von Daten, Schreiben von Daten oder Löschen von Daten in den Speicherkomponenten 112A bis 112N, und andere solche Operationen. Der Controller 115 kann Hardware, wie zum Beispiel eine oder mehrere integrierte Schaltungen und/oder diskrete Komponenten, einen Pufferspeicher oder eine Kombination davon enthalten. Der Controller 115 kann ein Mikro-Controller, eine spezielle Logikschaltung (z.B. ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC), usw.) oder ein anderer geeigneter Prozessor sein. Der Controller 115 kann einen Prozessor (z.B. eine Verarbeitungsvorrichtung) 117 enthalten, der ausgestaltet ist, um in dem lokalen Speicher 119 gespeicherte Instruktionen auszuführen. In dem dargestellten Beispiel umfasst der lokale Speicher 119 des Controllers 115 einen eingebetteten Speicher, der ausgestaltet ist, um Instruktionen zur Durchführung verschiedener Prozesse, Operationen, logischer Abläufe und Routinen zu speichern, die den Betrieb des Speicher-Untersystems 110 steuern, einschließlich der Handhabung der Kommunikation zwischen dem Speicher-Untersystem 110 und dem Host-System 120. In einigen Ausführungsformen kann der lokale Speicher 119 Speicherregister enthalten, die Speicherzeiger, abgerufene Daten, usw. speichern. Der lokale Speicher 119 kann auch einen Nur-Lese-Speicher (ROM) zum Speichern von Mikro-Code enthalten. Obwohl das beispielhafte Speicher-Untersystem 110 aus 1 so dargestellt ist, dass es den Controller 115 enthält, kann ein Speicher-Untersystem 110 in einer anderen Ausführungsform der Erfindung keinen Controller 115 enthalten und stattdessen auf einer externen Steuerung basieren (z.B. zur Verfügung gestellt durch einen externen Host oder durch einen vom Speicher-Untersystem getrennten Prozessor oder Controller).
  • Allgemein kann der Controller 115 Befehle oder Operationen vom Host-System 120 empfangen und die Befehle oder Operationen in Instruktionen oder geeignete Befehle umwandeln, um die gewünschten Zugriffe auf die Speicherkomponenten 112A bis 112N zu erreichen. Der Controller 115 kann für andere Operationen verantwortlich sein, wie zum Beispiel Abnutzungsausgleichs-Operationen, Speicherbereinigungs-Operationen, Fehlererfassungs-Operationen und Fehlerkorrektur-Code-Operationen (ECC-Operationen), Verschlüsselungs-Operationen, Cache-Operationen und Adressübersetzungen zwischen einer logischen Adresse (z.B. logische Blockadresse (LBA)) und einer physischen Adresse (z.B. physische Blockadresse), die den Speicherkomponenten 112A bis 112N zugeordnet sind. Der Controller 115 kann außerdem eine Host-Schnittstellenschaltung enthalten, um über die physische Host-Schnittstelle mit dem Host-System 120 zu kommunizieren. Die Host-Schnittstellenschaltung kann die vom Host-System empfangenen Befehle in Befehlsinstruktionen umwandeln, um auf die Speicherkomponenten 112A bis 112N zugreifen zu können, und die mit den Speicherkomponenten 112A bis 112N in Beziehung stehenden Antworten in Informationen für das Host-System 120 umwandeln.
  • Das Speicher-Untersystem 110 kann auch zusätzliche Schaltungen oder Komponenten enthalten, die nicht dargestellt sind. In einigen Ausführungsformen kann das Speicher-Untersystem 110 einen Cache oder Puffer (z.B. DRAM) und eine Adressenschaltung (z.B. einen Zeilen-Dekodierer und einen Spalten-Dekodierer) enthalten, die eine Adresse vom Controller 115 empfangen und die Adresse dekodieren kann, um auf die Speicherkomponenten 112A bis 112N zugreifen zu können.
  • Jede der Speicherkomponenten 112A bis 112N kann einen Medien-Controller (z.B. Medien-Controller 130A und Medien-Controller 130N) enthalten, um die Speicherzellen der Speicherkomponente 112 zu verwalten, mit dem Speicher-Untersystem-Controller 115 zu kommunizieren und vom Speicher-Untersystem-Controller 115 empfangene Speicheranforderungen (z.B. Lesen oder Schreiben) auszuführen.
  • Das Speicher-Untersystem 110 enthält eine Blockzuweisungskomponente 113, die die hier beschriebenen Operationen durchführt. In einigen Ausführungsformen kann die Blockzuweisungskomponente 113 Teil des Host-Systems 120, des Controllers 115, der Speicherkomponenten 112A-112N, eines Betriebssystems oder einer Anwendung sein. Die Blockzuweisungskomponente 113 kann einen oder mehrere Blöcke aus einem Pool von Speicherbereichsblöcken einer oder mehrerer Speicherkomponenten 112A-112N zur Verwendung als zweckbestimmte Blöcke dynamisch zuweisen. Der Controller 115 kann beispielsweise einen Prozessor 117 (Verarbeitungsvorrichtung) enthalten, der ausgestaltet ist, um im lokalen Speicher 119 gespeicherte Instruktionen auszuführen, um die hier beschriebenen Operationen durchzuführen.
  • In einigen Ausführungsformen können die Speicherkomponenten 112A bis 112N verwaltete Speichervorrichtungen (z.B. verwalteter NAND) sein, d.h. eine Roh-Speichervorrichtung, die mit einem lokalen Controller (z.B. Mediencontroller 130) für die Speicherverwaltung innerhalb desselben Speichervorrichtungsbausteins kombiniert ist. Ein Medien-Controller 130 kann eine Blockzuweisungskomponente 113 enthalten.
  • 1B zeigt die Blöcke eines Speicher-Untersystems gemäß den Ausführungsformen der Erfindung. In einigen Ausführungsformen können die Blöcke 120 logisch alle Blöcke eines Speicher-Untersystems darstellen, wie zum Beispiel das Speicher-Untersystem 110. In einigen Ausführungsformen können die Blöcke 120 Teil einer oder mehrerer Speicherkomponenten 112A-112N des Speicher-Untersystems 110 sein. Die Blöcke 120 können einen Pool aus Speicherbereichsblöcken 128 und zweckbestimmten Blöcken 124 umfassen. In einigen Ausführungsformen können die Speicherbereichsblöcke 128 einen Pool aus Benutzerblöcken 122 und einen Pool aus Überprovisionierungsblöcken 126 umfassen. Gemäß den Aspekten der Erfindung können ein oder mehrere Blöcke aus den Speicherbereichsblöcken 124 den zweckbestimmten Blöcken 124 dynamisch zugewiesen werden. Beispiele für zweckbestimmte Blöcke 124 können Paritätsblöcke, Blöcke mit temporären Daten, die mit einer Anwendung zusammenhängen, wie zum Beispiel eine Scratch-Pad-Anwendung (Notizblock-Anwendung), oder temporäre Systemdaten sein.
  • In einigen Ausführungsformen kann eine Speicherkomponente in einem Speicher-Untersystem Speicherzellen enthalten. Eine Speicherzelle kann eine oder mehrere Speicherseiten (hier auch als „Seiten“ bezeichnet) zum Speichern von einem oder mehreren binären Datenbits enthalten, die den von einem Host-System empfangenen Daten entsprechen. Eine oder mehrere Speicherzellen der Speicherkomponente können zu einem Block gruppiert werden. Zum Beispiel können eine oder mehrere Seiten einer Speicherkomponente gruppiert werden, um einen Block zu bilden. Ein oder mehrere Blöcke können gruppiert werden, um eine Ebene der Speicherkomponente zu bilden, damit in jeder Ebene gleichzeitige Operationen (z.B. Parallelität) stattfinden können. Ein physischer Chip kann eine oder mehrere Ebenen enthalten. Eine physische Speicherkomponente (z.B. eine Speicherkomponente in einem eigenen diskreten physischen Gehäuse mit externen Stiften oder elektrischen Kontakten) kann einen oder mehrere physische Chips enthalten.
  • In einigen Ausführungsformen kann eine Single-Level-Zelle (SLC) nur ein Bit pro Speicherzelle speichern, während eine Multi-Level-Zelle (MLC) eine Speicherzelle ist, die mehr als ein einzelnes Bit an Informationen speichern kann. Es ist zu beachten, dass der Zustand der Speicherzelle programmiert werden kann und der Zustand der Speicherzelle durch Vergleichen einer Lesespannung der Speicherzelle mit einem oder mehreren Lesepegel-Grenzwerten bestimmt werden kann. Bei der SLC-NAND-Flash-Technologie kann jede Zelle einen von zwei Zuständen einnehmen und ein Informationsbit pro Zelle speichern, während der MLC-NAND-Flash-Speicher vier oder mehr mögliche Zustände pro Zelle einnehmen kann, so dass jede MLC-basierte Zelle zwei oder mehr Informationsbits pro Zelle speichern kann. Durch die höhere Anzahl möglicher Zustände wird die Spielraum (z.B. Talspanne oder Spannungsbereich) zwischen den einzelnen Zuständen reduziert. Die Speichervorrichtung kann Triple-Level-Zellen-Speicher (TLC-Speicher) enthalten. In einem TLC-Speicher speichert die Speicherzelle drei Bits an Informationen pro Zelle mit insgesamt acht Spannungszuständen. Die Speichervorrichtung kann einen Quad-Level-Zellen-Speicher (QLC-Speicher) enthalten. In einem QLC-Speicher kann jede Speicherzelle vier Bits an Informationen mit sechzehn Spannungszuständen speichern. In einem QLC-Speicher kann eine Speicherzelle beispielsweise vier Datenbits (z.B. 1111, 0000, 1101 usw.) speichern, die den vom Host-System empfangenen Daten entsprechen, wobei die sechzehn Spannungszustände verwendet werden. Eine Speicherkomponente kann in einem oder mehreren Modi betrieben werden. Beispielsweise können einige Speicherzellen der Speicherkomponente in einem Single-Bit-Modus, wie zum Beispiel dem SLC-Modus, arbeiten, während andere Speicherzellen gleichzeitig in einem Multi-Bit-Modus arbeiten, wie zum Beispiel dem TLC-Modus.
  • In einigen Ausführungsformen kann jeder Typ von Speicherzellen eine unterschiedliche Lebensdauer zum Speichern von Daten haben. Die Lebensdauer der Speicherkomponente entspricht der Anzahl von Schreiboperationen oder der Anzahl der Programmieren-Löschen-Zyklen (PE-Zyklen), die bezüglich einer Speicherzelle der Speicherkomponente durchgeführt werden, bevor die Daten nicht mehr zuverlässig in der Speicherzelle gespeichert werden können. SLC-Speicherzellen, die eine geringere Datendichte haben, können beispielsweise einen Lebensdauer-Grenzwert von 80xN PE-Zyklen haben, während TLC-Speicherzellen, die eine höhere Datendichte haben, einen Lebensdauer-Grenzwert von 4xN PE-Zyklen haben können.
  • In einigen Ausführungsformen ist die Speicherbereinigung ein Prozess, durch den identifiziert wird, welche Blöcke nicht benötigte Daten (d.h. veraltete Daten) enthalten, und die Daten an eine andere Stelle schreibt, damit der Block gelöscht werden kann. Die Effizienz von Speicherbereinigungs-Operationen kann oft von der physischen Größe der Speicherkomponenten abhängen, die über die logische Größe der Speicherkomponente hinausgeht, die als Benutzerbereich freigegeben ist (z.B. Überprovisionierung oder OP). Ein Speicher-Untersystem kann beispielsweise über 64 Gigabyte (GB) Benutzerplatz (auch als „Benutzerblöcke“ bezeichnet) verfügen. Zusätzlich zu den 64 GB an Benutzerblöcken können weitere 4% - 5% (z.B. 3 GB) des Speichers zusätzlich zu den Benutzerblöcken enthalten sein und als Überprovisionierungsblöcke verwendet werden. Während der Speicherbereinigungs-Operationen trägt die zusätzliche OP dazu bei, den Aufwand für die Speicherbereinigung und damit die PE-Zyklen zu reduzieren. Bei einer Speicherkomponente, die eine Benutzerraumgröße von 128 GB aufweist, beträgt die OP beispielsweise 12 GB, wenn die physische Größe 140 GB beträgt. In solchen Fällen können die Speicherbereinigungs-Operationen weniger effizient sein als bei Komponenten mit der gleichen Größe des Benutzerraums.
  • In einigen Ausführungsformen kann sich Daten-Striping auf eine Technik zum Speichern von Daten durch Segmentierung logisch sequentieller Daten beziehen, so dass aufeinanderfolgende Segmente auf verschiedenen Speichervorrichtungen oder verschiedenen Bereichen derselben Speichervorrichtung (z.B. auf verschiedenen Ebenen derselben Speichervorrichtung) gespeichert werden. Ein Blocksteifen kann beispielsweise eine logische Gruppe von Blöcken umfassen, wobei nicht mehr als ein Block aus jeder Ebene einer oder mehrerer Speicherkomponenten Teil des Blockstreifens ist. Daten-Striping ermöglicht Leistungsverbesserungen zumindest deshalb, weil durch das Daten-Striping ermöglicht wird, dass Daten parallel geschrieben und gelesen werden können, wodurch der Durchsatz erhöht und die Leistung der Datenverarbeitung verbessert wird. Die Zuverlässigkeit eines Datenstreifens kann durch die Einbeziehung von Paritäten erhöht werden. Paritäten können sich auf eine Technik zur Fehlererfassung beziehen und können einen Fehlererfassungs-Code enthalten. Paritäten, wie zum Beispiel in einem oder mehreren Paritätsblöcken gespeicherte Paritäten, können es ermöglichen, einen oder mehrere Fehler in einem Datenstreifen zu erfassen oder zu korrigieren. Die Paritäten können mit jedem Datenstreifen in Beziehung stehen. Zum Beispiel kann ein Blockstreifen einen oder mehrere Paritätsblöcke verwenden, um Paritätsdaten für den Blockstreifen zu speichern.
  • Ein Beispiel für eine Daten-Striping-Technik sind redundante Arrays von unabhängigen NAND-Operationen (RAIN-Operationen), bei denen ein oder mehrere RAIN-Streifen geschrieben werden. RAIN kann sich auf ein Datensicherungsschema zum Erzeugen und Schreiben von Daten auf NAND-Medien beziehen. Ein RAIN-Streifen kann mit RAIN-Paritäten in Beziehung stehen. Beispielsweise können Daten eines RAIN-Streifens in mehrere Benutzerblöcke über mehrere Ebenen von einer oder mehreren Speicherkomponenten geschrieben werden. Eine Exklusiv-Oder-Operation (XOR-Operation) kann mit den Daten jedes aufeinanderfolgenden Blocks des RAIN-Streifens durchgeführt werden, bis der RAIN-Streifen geschlossen ist (wenn z.B. alle Daten des Streifens geschrieben worden sind). So wird beispielsweise eine XOR-Operation für den ersten Benutzerblock und den zweiten Benutzerblock des RAIN-Streifens durchgeführt, um einen ersten XOR-Wert zu erzeugen. Nach dem Schreiben des dritten Benutzerblocks des RAIN-Streifens wird eine XOR-Operation mit dem ersten XOR-Wert und dem dritten Benutzerblock durchgeführt, um einen zweiten XOR-Wert zu erzeugen, und so weiter.
  • In einigen konventionellen Speicher-Untersystemen wird die Gesamtzahl der Paritätsblöcke, die während der Lebensdauer eines Speicher-Untersystems verwendet werden, als Herstellungsstandard zum Zeitpunkt Null zugewiesen. Die zugewiesenen Paritätsblöcke werden verwendet, um Paritätsdaten für Datenstreifen zu speichern, die in das Speicher-Untersystem geschrieben werden. Die Paritätsdaten werden für die Lebensdauer des jeweiligen Datenstreifens in einem Paritätsblock (bzw. in den Paritätsblöcken) gespeichert (z.B. werden die Paritätsdaten in einem Datenblock für die gesamte Zeit gespeichert, in der der jeweilige Datenstreifen im Speicher-Untersystem gespeichert ist). Wenn beispielsweise 10 Paritätsblöcke über die Lebensdauer des Speicher-Untersystems verwendet werden, dann werden die 10 Paritätsblöcke zu Beginn des Betriebs des Speicher-Untersystems zugewiesen. In den vorstehend erwähnten konventionellen Speicher-Untersystemen verringert die Zuweisung der Gesamtzahl der Paritätsblöcke, die über die Lebensdauer des Speicher-Untersystems verwendet werden, die Menge an OP, die für die Durchführung von Speicherbereinigungs-Operationen zur Verfügung steht, wodurch die Schreibverstärkung erhöht wird, was sich negativ auf die Leistung des Speicher-Untersystems auswirkt.
  • Aspekte der Erfindung gehen die oben genannten Herausforderungen sowie andere Herausforderungen an, indem ein oder mehrere Blöcke aus einem Pool aus Speicherbereichsblöcken zur Verwendung als zweckbestimmte Blöcke dynamisch zugewiesen werden. In einigen Ausführungsformen werden ein oder mehrere Blöcke aus einem Pool aus Speicherbereichsblöcken der Speicherkomponente als ein anfänglicher Satz von zweckbestimmten Blöcken zugewiesen. Die zweckbestimmten Blöcke werden verwendet, um zweckbestimmte Daten von anfänglichen Daten zu speichern, die als anfängliche Datenstreifen gespeichert werden. Nach dem Schreiben der anfänglichen Daten in die anfänglichen Datenstreifen wird bestimmt, ob die Blöcke des anfänglichen Satzes von zweckbestimmten Blöcken eine Bedingung erfüllen, wodurch angegeben wird, ob der erste Satz von zweckbestimmten Blöcken ausgemustert werden soll. Beispielsweise kann ein Hinweis auf den Lebensdauerzustand der zweckbestimmten Blöcke ausgewertet werden, um zu bestimmen, ob die zweckbestimmten Blöcke noch zuverlässig sind oder einen Lebensendezustand erreicht haben. Als Reaktion auf das Bestimmen, dass die Blöcke ausgemustert werden sollen, werden ein oder mehrere andere Blöcke aus dem Pool von Speicherbereichsblöcken einem nachfolgenden Satz von zweckbestimmten Blöcken zugewiesen, und der ursprüngliche Satz von zweckbestimmten Blöcken wird ausgemustert. Der nachfolgende Satz von zweckbestimmten Blöcken kann verwendet werden, um zweckbestimmte Daten für nachfolgende Datenstreifen zu speichern.
  • In einigen Ausführungsformen kann das Speicher-Untersystem unter Verwendung eines „temporären Paritätsschemas“ arbeiten. Anstatt die Paritätsdaten für die gesamte Lebensdauer des jeweiligen Datenstreifens aufzubewahren, können die Paritätsdaten „vorübergehend“ in einem Paritätsblock gespeichert werden. Bevor die jeweiligen Daten des Datenstreifens speicherbereinigt werden, kann der Paritätsblock erneut verwendet werden, um Paritätsdaten eines nachfolgenden Datenstreifens zu speichern. Bitfehler in einem bestimmten Block entstehen beispielsweise häufig durch eine Programmieroperation in diesem bestimmten Block. Zum Beispiel kann eine Seite eines Blocks programmiert werden. Während der Block offen ist (d.h. der Block wurde noch nicht vollständig beschrieben), kann eine andere Seite des Blocks programmiert werden, wodurch die Bits der zuvor programmierten Seite desselben Blocks gestört werden können. Ein temporäres Paritätsschema kann die Paritätsdaten eines Blocks speichern, bis die Inhalte des Blocks validiert sind. Sobald die Daten des Blocks validiert sind, werden die Paritätsdaten nicht mehr benötigt, und der jeweilige Paritätsblock kann zum Speichern von Paritätsdaten für einen anderen Datenstreifen wiederverwendet werden. So kann beispielsweise ein Block vollständig mit Daten beschrieben und anschließend geschlossen werden. Nach dem Schließen des Blocks können die Daten des Blocks gelesen und mit den tatsächlichen Daten verglichen werden, die im flüchtigen Speicher gespeichert sind. Wenn der Block keine nicht-korrigierbaren Bitfehler aufweist, können die zugehörigen Paritätsdaten „gespült“ werden, und der jeweilige Paritätsblock kann erneut verwendet werden.
  • In einigen Ausführungsformen arbeitet der Pool aus Speicherbereichsblöcken (z.B. Pool aus OP-Blöcken) im Multi-Bit-Modus (z.B. TLC-Modus) oder im Single-Bit-Modus, und die zweckbestimmten Blöcke arbeiten im Single-Bit-Modus (z.B. SLC-Modus). Wenn ein zweckbestimmter Block bzw. zweckbestimmte Blöcke ausgemustert werden, wird ein neuer zweckbestimmter Block bzw. neue zweckbestimmte Blöcke aus dem Pool aus Speicherbereichsblöcken zugewiesen, die im Multi-Bit-Modus arbeiten. Der (die) neue(n) zweckbestimmte(n) Block (Blöcke) wird (werden) dann im Single-Bit-Modus betrieben, der eine höhere Lebensdauer hat als Blöcke, die im Multi-Bit-Modus arbeiten.
  • Durch die hier beschriebene dynamische Zuweisung von zweckbestimmten Blöcken kann die Leistung eines Speicher-Untersystems verbessert werden, indem ermöglicht wird, dass dem Speicherbereichs-Pool zumindest für einen Teil der Lebensdauer des Speicher-Untersystems mehr Blöcke zugewiesen werden, wodurch die Schreibverstärkung verringert und die Leistung des Speicher-Untersystems verbessert wird. Darüber hinaus kann durch die dynamische Zuweisung von zweckbestimmten Blöcken die Leistung eines Speicher-Untersystems verbessert werden, indem zusätzliche Datenblöcke für den Benutzerraum für mindestens einen Teil der Lebensdauer des Speicher-Untersystems bereitgestellt werden, wodurch die Benutzerraumkapazität des Speicher-Untersystems verbessert wird.
  • Es ist anzumerken, dass in dieser Offenbarung Ausführungsformen in Form von Blöcken beschrieben werden, um die Erfindung zu veranschaulichen und nicht einzuschränken. Aspekte der Erfindung können auf Dateneinheiten beliebiger Größe einer Speicherkomponente angewendet werden. Es ist auch anzumerken, dass in der Offenbarung Ausführungsformen beschrieben werden, die zweckbestimmte Blöcke aus einem Pool aus Speicherbereichsblöcken zuweisen, was eher der Veranschaulichung als der Einschränkung dient. Paritätsblöcke können auch aus anderen Domänen zugewiesen werden. Es ist zu beachten, dass sich ein „Satz“, wie hier beschrieben, auf ein oder mehrere Elemente beziehen kann. Zum Beispiel kann ein Satz von zweckbestimmten Blöcken einen oder mehrere Blöcke umfassen.
  • Im Operations-Modus (z.B. im Feldbetrieb) können Aspekte der Erfindung dynamisch ausgeführt werden, um die nutzbare Lebensdauer der Speicherkomponenten des Speicher-Untersystems zu verlängern. Der hier verwendete Begriff „dynamisch“ kann sich auf Prozesse, Funktionen, Operationen oder Implementierungen beziehen, die während des Betriebs, der Verwendung oder des Einsatzes einer entsprechenden Vorrichtung, Systems, Speicher-Untersystems oder einer Ausführungsform sowie nach oder während der Ausführung der Firmware des Herstellers oder eines Drittanbieters auftreten. Die dynamisch auftretenden Prozesse, Funktionen, Operationen oder Implementierungen können nach oder im Anschluss an die Entwicklung, Herstellung und anfängliche Prüfung, Einrichtung oder Konfiguration (z.B. nach dem Test-Modus) auftreten.
  • 1C zeigt Datenstreifen gemäß Ausführungsformen der Erfindung. Die Datenstreifen 130 zeigen 8 Datenstreifen mit den Bezeichnungen Streifen 1-8. Die Reihe von Blöcken direkt rechts von der Streifenbezeichnung zeigt die Blöcke an, die Teil des jeweiligen Streifens sind. Streifen 1 umfasst beispielsweise die erste Reihe von Blöcken der Knoten 132A-132F und den ersten zweckbestimmten (z.B. Paritätsblock) Block von Knoten 132G. Der Knoten 132A stellt Speichersegmente dar, die für das Daten-Striping verwendet werden, und können für verschiedene Striping-Techniken unterschiedlich sein. Ein Knoten kann zum Beispiel eine Ebene, einen Chip oder eine Speicherkomponente darstellen. In einem anderen Beispiel kann die jeweilige Striping-Technik Daten auf verschiedenen Ebenen strippen. Die Knoten 132A-132G können verschiedene Ebenen in einer oder mehreren Speicherkomponenten darstellen. In einem anderen Beispiel kann die bestimmte Striping-Technik Daten auf verschiedenen Chips strippen. Die Knoten 132A-132G können verschiedene Chips in einer oder mehreren Speicherkomponenten darstellen. In einigen Ausführungsformen können sich die Knoten 132A-132G auf demselben Speicher-Untersystem oder auf verschiedenen Speicher-Untersystemen befinden. Der Knoten 132G zeigt, dass einige Datenstreifen (z.B. Datenstreifen 1-2) einen jeweiligen zweckbestimmten Block (Blöcke) (z.B. Paritätsblock) haben und einige Datenstreifen (z.B. Streifen 3-8) keinen jeweiligen zweckbestimmten Block (Blöcke) (z.B. Paritätsblock) haben, um ein temporäres Paritätsschema zu veranschaulichen, wie vorstehend unter Bezugnahme auf 1B beschrieben wurde.
  • 2A und 2B zeigen das Verfahren 200 bzw. das Verfahren 250. Das Verfahren 200 oder das Verfahren 250 kann von einer Verarbeitungslogik durchgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungen, dedizierte Logik, programmierbare Logik, Mikro-Code, Hardware einer Vorrichtung, integrierte Schaltungen, usw.), Software (z.B. Instruktionen, die auf einer Verarbeitungsvorrichtung ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Ausführungsformen wird das Verfahren 200 oder das Verfahren 250 von der Blockzuweisungskomponente 113 aus 1A durchgeführt. Obwohl in einer bestimmten Reihenfolge dargestellt, kann die Reihenfolge der Operationen, sofern nicht anders angegeben, geändert werden. Daher sind die dargestellten Ausführungsformen nur als Beispiele zu verstehen, und die dargestellten Operationen können in einer anderen Reihenfolge ausgeführt werden, und einige Operationen können parallel ausgeführt werden. Darüber hinaus können in verschiedenen Ausführungsformen eine oder mehrere Operationen weggelassen werden. Es sind also nicht alle Operationen in jeder Ausführungsform erforderlich. Andere Operationsabläufe sind möglich. In einigen Ausführungsformen können verschiedene Operationen verwendet werden.
  • 2A ist ein Flussdiagramm eines beispielhaften Verfahrens zum Zuweisen von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken zur Verwendung als zweckbestimmte Blöcke (z.B. Paritätsblöcke) gemäß einigen Ausführungsformen der Erfindung.
  • Bei Operation 205 weist die Verarbeitungslogik, die das Verfahren 200 durchführt, einen oder mehrere Blöcke aus einem Pool von Speicherbereichsblöcken der Speicherkomponente einem ersten Satz von zweckbestimmten Blöcken zu.
  • Bei Operation 210 führt die Verarbeitungslogik erste Schreiboperationen durch, um erste Daten in erste Datenstreifen bei Benutzerblöcken der Speicherkomponente zu schreiben. In einigen Ausführungsformen dient der erste Satz von zweckbestimmten Blöcken dazu, zweckbestimmte Daten (z.B. Paritätsdaten) der ersten Datenstreifen zu speichern, die mit den ersten Schreiboperationen in Beziehung stehen.
  • In einigen Ausführungsformen führt die Verarbeitungslogik zum Durchführen der ersten Schreiboperationen, um die ersten Daten in die ersten Datenstreifen bei den Benutzerblöcken der Speicherkomponente zu schreiben, eine erste Schreiboperation der ersten Schreiboperationen durch, um einen ersten Teil der ersten Daten in einen Datenstreifen der ersten Datenstreifen bei den Benutzerblöcken der Speicherkomponente zu schreiben. Die zweckbestimmten Daten (z.B. Paritätsdaten) des Datenstreifens der ersten Datenstreifen werden bei dem ersten Satz von zweckbestimmten Blöcken gespeichert.
  • In einigen Ausführungsformen validiert die Verarbeitungslogik, dass der Datenstreifen der ersten Datenstreifen, der bei den Benutzerblöcken der Speicherkomponente geschrieben wurde, keine nicht-korrigierbaren Bitfehler aufweist. In einigen Beispielen ist ein nicht-korrigierbarer Bitfehler ein Bitwertfehler (z.B. Lesen einer logischen „1“ anstelle einer logischen „0“ und umgekehrt), der nicht durch eine Fehlerkorrekturtechnik, wie zum Beispiel ECC, korrigiert werden kann. In einigen Ausführungsformen validiert die Verarbeitungslogik, ob der Datenstreifen der ersten Datenstreifen, der bei den Benutzerblöcken der Speicherkomponente geschrieben wurde, keine Bitfehler aufweist. Wenn beispielsweise irgendwelche Bitfehler oder eine Grenzwertanzahl von Bitfehlern in dem Datenstreifen erkannt werden, validiert die Verarbeitungslogik den Datenstreifen nicht. Es sei darauf hingewiesen, dass in einigen Ausführungsformen das Validieren auf einer detaillierteren Ebene durchgeführt werden kann. So kann die Verarbeitungslogik beispielsweise einen oder mehrere Blöcke eines Datenstreifens validieren. In einigen Ausführungsformen kann die Verarbeitungslogik einen oder mehrere Blöcke des Datenstreifens validieren, während der Datenstreifen offen ist (z.B. bevor er geschlossen wird) oder nachdem der Datenstreifen geschlossen ist. In einigen Ausführungsformen wird die Validierungsoperation durchgeführt, um einen oder mehrere Blöcke des Datenstreifens (oder z.B. den gesamten Datenstreifen) zu validieren. Die Validierungsoperation kann Daten lesen, die bei den Benutzerblöcken der Speicherkomponente geschrieben wurden, und diese Daten mit den aktuellen Benutzerdaten vergleichen. Die aktuellen Benutzerdaten können in einem flüchtigen Speicher, wie zum Beispiel einem Puffer, gespeichert werden und werden verwendet, um die Benutzerdaten bei den Speicherkomponenten zu schreiben. Ein offener Datenstreifen kann sich auf einen Datenstreifen beziehen, der für Schreiboperationen verwendet wird, wobei der Streifen einen oder mehrere offene Blöcke enthält. Ein geschlossener Datenstreifen kann sich auf einen Datenstreifen beziehen, der vollständig beschrieben wurde. Ein offener Block kann sich auf einen Block beziehen, der für Schreiboperationen verwendet wird, und auf Daten, die noch nicht vollständig in den Block geschrieben wurden (z.B. eine oder mehrere Seiten desselben Blocks wurden noch nicht programmiert). Ein geschlossener Block kann sich auf einen Block beziehen, der bereits vollständig beschrieben wurde.
  • In einigen Ausführungsformen führt die Verarbeitungslogik als Reaktion auf das Validieren, dass der Datenstreifen der ersten Datenstreifen, der bei den Benutzerblöcken der Speicherkomponente geschrieben wurde, keine nicht-korrigierbaren Bitfehler aufweist, eine Löschoperation durch, um den ersten Satz von zweckbestimmten Blöcken zu löschen. In einigen Ausführungsformen führt die Verarbeitungslogik eine zweite Schreiboperation der ersten Schreiboperationen durch, um einen zweiten Teil der ersten Daten in einen anderen Datenstreifen der ersten Datenstreifen bei den Benutzerblöcken der Speicherkomponente zu schreiben. Die zweckbestimmten Daten (z.B. Paritätsdaten) des anderen Datenstreifens werden in den ersten Satz von zweckbestimmten Blöcken geschrieben und gespeichert, nachdem die Löschoperation bei dem ersten Satz von zweckbestimmten Blöcken durchgeführt wurde.
  • In einigen Ausführungsformen sind die ersten Schreiboperationen zum Schreiben der ersten Daten in die ersten Datenstreifen bei den Benutzerblöcken der Speicherkomponente redundante Arrays aus unabhängigen NAND-Operationen (RAIN-Operationen). Der eine oder die mehreren zweckbestimmten Blöcke, die mit einem RAIN-Streifen in Beziehung stehen, können RAIN-Paritätsblöcke sein.
  • In einigen Ausführungsformen umfasst der erste Satz von zweckbestimmten Blöcken eine minimale Anzahl von zweckbestimmten Blöcken, die zweckbestimmte Daten (z.B. Paritätsdaten) für eine maximale Anzahl von offenen Benutzerblöcken zu einem bestimmten Zeitpunkt speichern können (z.B. temporäres Paritätsschema). In einigen Ausführungsformen umfasst der erste Satz von zweckbestimmten Blöcken weniger zweckbestimmte Blöcke als die Gesamtzahl von zweckbestimmten Blöcke, die während der Lebensdauer der Speicherkomponente verwendet werden.
  • Bei Operation 215 bestimmt die Verarbeitungslogik, ob die Blöcke in dem ersten Satz von zweckbestimmten Blöcken eine Bedingung erfüllen, die angibt, dass der erste Satz von zweckbestimmten Blöcken ausgemustert werden soll. Wenn die Verarbeitungslogik bestimmt, dass die Blöcke in dem ersten Satz der zweckbestimmten Blöcke die Bedingung erfüllen, fährt die Verarbeitungslogik mit der Operation 220 fort. Wenn die Verarbeitungslogik bestimmt, dass die Blöcke in dem ersten Satz von zweckbestimmten Blöcken die Bedingung nicht erfüllen, fährt die Verarbeitungslogik mit der Operation 210 fort.
  • In einigen Ausführungsformen bestimmt die Verarbeitungslogik, um zu bestimmen, ob die Blöcke in dem ersten Satz von zweckbestimmten Blöcken die Bedingung erfüllen, eine Roh-Bitfehlerrate (RBER), die mit dem ersten Satz von zweckbestimmten Blöcken in Beziehung steht. Die Verarbeitungslogik bestimmt, ob die RBER, die mit dem ersten Satz von zweckbestimmten Blöcke in Beziehung steht, einen Grenzwert erfüllt (z.B. größer oder gleich einem RBER-Grenzwert ist). In einigen Ausführungsformen mustert die Verarbeitungslogik, als Reaktion auf das Bestimmen, dass die RBER, die mit dem ersten Satz von zweckbestimmten Blöcken in Beziehung steht, den Grenzwert erfüllt, den ersten Satz von zweckbestimmten Blöcke aus. Beispielsweise kann die Verarbeitungslogik die zweckbestimmten Blöcke hinsichtlich einer zukünftigen Verwendung entfernen, so dass die Blöcke nicht mehr zum Speichern neuer Daten verwendet werden. Die RBER entspricht einer Anzahl von Bitfehler pro Zeiteinheit, die die im Datenblock gespeicherten Daten aufweisen.
  • In einigen Ausführungsformen bestimmt die Verarbeitungslogik die Anzahl der Programmieren-Löschen-Zyklen (PE-Zyklen), die mit dem ersten Satz von zweckbestimmten Blöcken in Beziehung steht, um zu bestimmen, ob die Blöcke in dem ersten Satz von zweckbestimmten Blöcke die Bedingung erfüllen. Ein Programmieren-Löschen-Zyklus kann sich auf eine oder mehrere Operationen (z.B. Programmier- oder Löschoperation) beziehen, bei denen Daten in die Speicherkomponente geschrieben und anschließend gelöscht werden. Die Verarbeitungslogik bestimmt, ob der PE-Zyklus einen Grenzwert erfüllt (z.B. größer oder gleich einer Grenzwertanzahl von PE-Zyklen ist). Als Reaktion auf das Bestimmen, dass die Anzahl der PE-Zyklen den Grenzwert erfüllt, kann die Verarbeitungslogik den ersten Satz von zweckbestimmten Blöcken ausmustern.
  • In einigen Ausführungsformen kann die Verarbeitungslogik, um zu bestimmen, ob die Blöcke in dem ersten Satz von zweckbestimmten Blöcken die Bedingung erfüllen, eine Kennzahl bestimmen, die den Lebensdauerzustand des ersten Satzes von zweckbestimmten Blöcken angibt. Die Verarbeitungslogik bestimmt, ob die Kennzahl einen Grenzwert erfüllt (z.B. größer oder gleich einem Lebensdauergrenzwert ist). Als Reaktion auf das Bestimmen, dass die Kennzahl den Grenzwert erfüllt, kann die Verarbeitungslogik den ersten Satz von zweckbestimmten Blöcken ausmustern. Ein Block kann eine begrenzte Lebensdauer haben. Die Lebensdauer kann sich auf die Nutzungsdauer einer Speichereinheit (z.B. eines Blocks) beziehen, innerhalb derer die Speichereinheit zuverlässig beschrieben werden kann (wenn sie z.B. als „0“ oder „1“ geschrieben wird, behält die Speicherkomponente den Zustand). Der Lebensdauerzustand kann angeben, wo in dem Spektrum der Lebensdauer (z.B. neu, kurz vor der Ausmusterung, Zeit bis zur Ausmusterung) die Speichereinheit arbeitet. Zur Angabe des Lebensdauerzustands können viele Kennzahlen verwendet werden, einschließlich RBER, PE-Zykluszahl, Gesamtmenge der geschriebenen Daten und so weiter, aber nicht hierauf beschränkt.
  • Bei Operation 220 weist die Verarbeitungslogik einen oder mehrere andere Blöcke aus dem Pool von Speicherbereichsblöcken der Speicherkomponente einem zweiten Satz von zweckbestimmten Blöcken zu. In einigen Ausführungsformen erfolgt das Zuweisen des einen oder der mehreren anderen Blöcke aus dem Pool von Speicherbereichsblöcken als Reaktion auf das Bestimmen, dass die Blöcke in dem ersten Satz von zweckbestimmten Blöcken die Bedingung erfüllen, wodurch angegeben wird, dass der erste Satz von zweckbestimmten Blöcken ausgemustert werden soll. In einigen Ausführungsformen gibt die Verarbeitungslogik, als Reaktion auf das Bestimmen, dass die Blöcke in dem ersten Satz von zweckbestimmten Blöcken die Bedingung erfüllen, an, dass die Blöcke in dem ersten Satz von zweckbestimmten Blöcken ausgemustert werden sollen.
  • Bei Operation 225 führt die Verarbeitungslogik zweite Schreiboperationen aus, um zweite Daten in zweite Datenstreifen bei den Benutzerblöcken der Speicherkomponente zu schreiben. Der zweite Satz von zweckbestimmten Blöcken soll zweckbestimmte Daten (z.B. Paritätsdaten) der zweiten Datenstreifen speichern, die mit den zweiten Schreiboperationen in Beziehung stehen.
  • In einigen Ausführungsformen sind die zweiten Schreiboperationen zum Schreiben der zweiten Daten in die zweiten Datenstreifen bei den Benutzerblöcken der Speicherkomponente RAIN-Operationen zum Schreiben von RAIN-Streifen.
  • In einigen Ausführungsformen arbeiten die Benutzerblöcke der Speicherkomponente, in die die ersten Datenstreifen oder die zweiten Datenstreifen geschrieben werden, in einem Multi-Bit-Modus (XLC) (z.B. mehr als 1 Bit, wie zum Beispiel MLC, TLC, QLC). In einigen Ausführungsformen arbeiten die Blöcke in dem ersten Satz von zweckbestimmten Blöcken oder die anderen Blöcke in dem zweiten Satz von zweckbestimmten Blöcken in einem Single-Bit-Modus (z.B. SLC-Modus). In einigen Ausführungsformen arbeitet der Pool von Speicherbereichsblöcken in einem Multi-Bit-Modus.
  • Die Operationen des Verfahrens 200 werden unter Bezugnahme auf 3, 4 und 5 weiter beschrieben.
  • 2B ist ein Flussdiagramm eines beispielhaften Verfahrens zum Zuweisen von einem oder mehreren Blöcken aus einem Pool von Überprovisionierungsblöcken zur Verwendung als Paritätsblöcke gemäß einigen Ausführungsformen der Erfindung. Es soll auch angemerkt werden, dass Operationen und Elemente des Verfahrens 200 auch in Verbindung mit Operationen, die unter Bezugnahme auf 2B beschrieben wurden, angewendet oder verwendet werden können.
  • Bei Operation 255 weist die Verarbeitungslogik, die das Verfahren 250 durchführt, einen oder mehrere Blöcke aus einem Pool von Überprovisionierungsblöcken der Speicherkomponente einem ersten Satz von Paritätsblöcken zu.
  • In einigen Ausführungsformen kann die Verarbeitungslogik, um den einen oder die mehreren Blöcke aus dem Pool von Überprovisionierungsblöcken der Speicherkomponente dem ersten Satz von Paritätsblöcken zuzuweisen, eine Anzahl von Blöcken aus dem Pool von Überprovisionierungsblöcken zuweisen, die einer minimalen Anzahl von Paritätsblöcken entspricht, die Paritätsdaten für eine maximale Anzahl von offenen Benutzerblöcken zu einem gegebenen Zeitpunkt speichern können (z.B. temporäres Paritätsschema). Das Zuweisen einer Anzahl von Blöcken aus dem Pool von Überprovisionierungsblöcken, die einer minimalen Anzahl von Paritätsblöcken entspricht, die Paritätsdaten für eine maximale Anzahl von offenen Benutzerblöcken zu einem beliebigen Zeitpunkt speichern können, wird unter Bezugnahme auf 3 und 4 weiter beschrieben.
  • In einigen Ausführungsformen weist die Verarbeitungslogik, um den einen oder die mehreren Blöcke aus dem Pool von Überprovisionierungsblöcken der Speicherkomponente dem ersten Satz von Paritätsblöcken zuzuweisen, eine Anzahl von Blöcken aus dem Pool von Überprovisionierungsblöcken zu, die größer ist als eine minimale Anzahl von Paritätsblöcken, die Paritätsdaten für eine maximale Anzahl von offenen Benutzerblöcken zu jedem gegebenen Zeitpunkt speichern können, und kleiner als die Gesamtzahl von Paritätsblöcken, die während der Lebensdauer der Speicherkomponente verwendet werden sollen. Die vorgenannte(n) Ausführungsform(en) wird/werden in Bezug auf 5 näher beschrieben.
  • In einigen Ausführungsformen enthält der erste Satz von Paritätsblöcken weniger Paritätsblöcke als die Gesamtzahl der Paritätsblöcke, die während der Lebensdauer der Speicherkomponente verwendet werden. Die vorgenannte Ausführungsform wird unter Bezugnahme auf 3, 4 und 5 näher beschrieben.
  • Bei Operation 260 führt die Verarbeitungslogik erste Schreiboperationen aus, um erste Daten in erste Datenstreifen bei Benutzerblöcken der Speicherkomponente zu schreiben. In einigen Ausführungsformen dient der erste Satz von Paritätsblöcken zum Speichern von Paritätsdaten der ersten Datenstreifen, die mit den ersten Schreiboperationen in Beziehung stehen.
  • In einigen Ausführungsformen sind die ersten Schreiboperationen zum Schreiben der ersten Daten in die ersten Datenstreifen bei den Benutzerblöcken der Speicherkomponente redundante Arrays von unabhängigen NAND-Operationen (RAIN-Operationen) zum Schreiben mehrerer RAIN-Streifen.
  • In einigen Ausführungsformen führt die Verarbeitungslogik zum Durchführen der ersten Schreiboperationen, um die ersten Daten in die ersten Datenstreifen bei den Benutzerblöcken der Speicherkomponente zu speichern, eine erste Schreiboperation der ersten Schreiboperationen aus, um einen ersten Teil der ersten Daten in einen Datenstreifen der ersten Datenstreifen bei den Benutzerblöcken der Speicherkomponente zu schreiben. Die Paritätsdaten des Datenstreifens der ersten Datenstreifen werden in dem ersten Satz von Paritätsblöcken gespeichert.
  • In einigen Ausführungsformen validiert die Verarbeitungslogik, dass der Datenstreifen der ersten Datenstreifen, der in die Benutzerblöcke der Speicherkomponente geschrieben wurde, keine nicht-korrigierbaren Bitfehler aufweist. In einigen Ausführungsformen validiert die Verarbeitungslogik, dass der Datenstreifen der ersten Datenstreifen, der in die Benutzerblöcke der Speicherkomponente geschrieben wurde, keine Bitfehler aufweist. Wenn beispielsweise irgendwelche Bitfehler oder eine Grenzwertanzahl von Bitfehlern in dem Datenstreifen erkannt werden, validiert die Verarbeitungslogik den Datenstreifen nicht. Es sei darauf hingewiesen, dass in einigen Ausführungsformen das Validieren auf einer detaillierteren Ebene durchgeführt werden kann. So kann die Verarbeitungslogik beispielsweise einen oder mehrere Blöcke eines Datenstreifens validieren. In einigen Ausführungsformen kann die Verarbeitungslogik einen oder mehrere Blöcke des Datenstreifens validieren, während der Datenstreifen offen ist (z.B. bevor er geschlossen wird). In einigen Ausführungsformen wird die Validierungsoperation durchgeführt, um einen oder mehrere Blöcke des Datenstreifens (z.B. den gesamten Datenstreifen) zu validieren.
  • In einigen Ausführungsformen führt die Verarbeitungslogik, als Reaktion auf das Validieren, dass der Datenstreifen des ersten Datenstreifens, der bei den Benutzerblöcken der Speicherkomponente geschrieben wurde, keine nicht-korrigierbaren Bitfehler aufweist, eine Löschoperation durch, um den ersten Satz von Paritätsblöcken zu löschen. In einigen Ausführungsformen führt die Verarbeitungslogik eine zweite Schreiboperation der ersten Schreiboperationen durch, um einen zweiten Teil der ersten Daten in einen anderen Datenstreifen der ersten Datenstreifen bei den Benutzerblöcken der Speicherkomponente zu schreiben. Die Paritätsdaten des anderen Datenstreifens werden in dem ersten Satz von Paritätsblöcken gespeichert, nachdem die Löschoperation bei dem ersten Satz von Paritätsblöcken durchgeführt wurde.
  • In einigen Ausführungsformen kann die Verarbeitungslogik nach dem Durchführen von Operation 260 und vor dem Durchführen von Operation 265 bestimmen, ob der erste Satz von Paritätsblöcken eine Bedingung erfüllt, die angibt, dass der erste Satz von Paritätsblöcken ausgemustert werden soll. Als Reaktion auf das Bestimmen, dass der erste Satz von Paritätsblöcken die Bedingung erfüllt, kann die Verarbeitungslogik angeben, dass die Blöcke in dem ersten Satz von Paritätsblöcken ausgemustert werden sollen, und einen oder mehrere Blöcke aus dem Pool von Überprovisionierungsblöcken der Speicherkomponente einem dritten Satz von Paritätsblöcken zuweisen. Die Verarbeitungslogik kann eine dritte Mehrzahl von Schreiboperationen durchführen, um dritte Daten in eine dritte Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente zu schreiben. Der dritte Satz von Paritätsblöcken dient zum Speichern von Paritätsdaten der dritten Datenstreifen, die mit den dritten Schreiboperationen in Beziehung stehen. Die vorgenannte Ausführungsform wird unter Bezugnahme auf 3 und 4 weiter beschrieben.
  • In einigen Ausführungsformen bestimmt die Verarbeitungslogik eine Roh-Bitfehlerrate (RBER), die mit dem ersten Satz von Paritätsblöcken in Beziehung steht, um zu bestimmen, ob der erste Satz von Paritätsblöcken die Bedingung erfüllt, die angibt, dass der erste Satz von Paritätsblöcken ausgemustert werden soll. Die Verarbeitungslogik bestimmt, ob die mit dem ersten Satz von Paritätsblöcken in Beziehung stehende RBER einen Grenzwert erfüllt. Als Reaktion auf das Bestimmen, dass die mit dem ersten Satz von Paritätsblöcken in Beziehung stehende RBER den Grenzwert erfüllt, mustert die Verarbeitungslogik den ersten Satz von Paritätsblöcken aus.
  • Bei Operation 265 bestimmt die Verarbeitungslogik, ob die Benutzerblöcke der Speicherkomponente einen Grenzwert erfüllen, der einem Lebensdauerzustand der Benutzerblöcke entspricht. In einigen Ausführungsformen geht die Verarbeitungslogik, als Reaktion auf das Bestimmen, dass die Benutzerblöcke der Speicherkomponente einen Grenzwert erfüllen, der einem Lebensdauerzustand der Benutzerblöcke entspricht, zu Operation 270 über. In einigen Ausführungsformen kann die Verarbeitungslogik, als Reaktion auf das Bestimmen, dass die Benutzerblöcke der Speicherkomponente einen Grenzwert, der einem Lebensdauerzustand der Benutzerblöcke entspricht, nicht erfüllen, zu Operation 260 zurückkehren und zusätzliche Schreiboperation(en) der ersten Schreiboperationen durchführen.
  • In einigen Ausführungsformen kann die Verarbeitungslogik, um zu bestimmen, ob die Benutzerblöcke der Speicherkomponente einen Grenzwert erfüllen, der einem Lebensdauerzustand der Benutzerblöcke entspricht, eine Kennzahl bestimmen, die den Lebensdauerzustand der Benutzerblöcke angibt. Die Verarbeitungslogik bestimmt, ob die Kennzahl einen Grenzwert erfüllt (z.B. größer oder gleich einem Lebensdauergrenzwert ist).
  • Das Bestimmen, ob die Benutzerblöcke der Speicherkomponente einen Grenzwert erfüllen, der einem Lebensdauerzustand der Benutzerblöcke entspricht, wird unter Bezugnahme auf 4 und 5 und vorstehend unter Bezugnahme auf 2A weiter beschrieben.
  • Bei Operation 270 weist die Verarbeitungslogik Blöcke aus dem Pool von Überprovisionierungsblöcken zu. In einigen Ausführungsformen weist die Verarbeitungslogik Blöcke aus dem Pool von Überprovisionierungsblöcken, die zumindest gleich einer verbleibenden Anzahl von Paritätsblöcken von einer Gesamtzahl von Paritätsblöcken, die während einer Lebensdauer der Speicherkomponente verwendet werden, einem zweiten Satz von Paritätsblöcken zu. Ausführungsformen, die die verbleibende Anzahl von Paritätsblöcken der Gesamtzahl von Paritätsblöcken verwenden, die über eine Lebensdauer der Speicherkomponente verwendet werden, werden unter Bezugnahme auf 4 und 5 weiter beschrieben.
  • Bei Operation 275 führt die Verarbeitungslogik zweite Schreiboperationen aus, um zweite Daten in zweite Datenstreifen bei den Benutzerblöcken der Speicherkomponente zu schreiben. In einigen Ausführungsformen dient der zweite Satz von Paritätsblöcken zum Speichern von Paritätsdaten der zweiten Datenstreifen, die mit den zweiten Schreiboperationen in Beziehung stehen.
  • In einigen Ausführungsformen sind die zweiten Schreiboperationen zum Schreiben der zweiten Daten in die zweiten Datenstreifen bei den Benutzerblöcken der Speicherkomponente RAIN-Operationen zum Beschreiben einer Mehrzahl von RAIN-Streifen.
  • In einigen Ausführungsformen arbeiten die Benutzerblöcke der Speicherkomponente, in die die ersten Datenstreifen oder die zweiten Datenstreifen geschrieben werden, in einem Multi-Bit-Modus (XLC) (z.B. mehr als 1 Bit, wie zum Beispiel MLC, TLC, QLC). In einigen Ausführungsformen arbeiten die Blöcke in dem ersten Satz von Paritätsblöcken oder die anderen Blöcke in dem zweiten Satz von Paritätsblöcken in einem Single-Bit-Modus (z.B. SLC-Modus). In einigen Ausführungsformen arbeitet der Pool von Überprovisionierungsblöcken im Multi-Bit-Modus.
  • 3, 4 und 5 zeigen Diagramme 300, 400 bzw. 500. Die Diagramme 300, 400 und 500 zeigen eine vertikale Achse, die PE-Zyklen darstellt, wobei die PE-Zyklen von unten nach oben ansteigen. Die Diagramme 300, 400 und 500 zeigen eine horizontale Achse, die die insgesamt geschriebenen Bytes (TBW) darstellt. TBW ist die Gesamtzahl der Bytes, die während der Lebensdauer einer Speicherkomponente oder eines Speicher-Untersystems in eine Speichereinheit, z.B. einen Block, geschrieben wurden.
  • Die Diagramme 300, 400 und 500 werden anhand des folgenden Beispiels beschrieben, das der Veranschaulichung und nicht der Einschränkung dient. Wie bereits erwähnt, kann das Speicher-Untersystem mit einer temporären Datensicherungstechnik arbeiten, wie zum Beispiel einer temporären RAIN-Technik. Die minimale Anzahl der zweckbestimmten Blöcke (z.B. SLC-Paritätsblock), die zu einem bestimmten Zeitpunkt (z.B. in einem bestimmten Fall) verwendet werden, kann durch die maximale Anzahl der offenen Benutzerblöcke (z.B. Speicherbereichsblöcke) zu einem bestimmten Zeitpunkt bestimmt werden. In einem Beispiel kann das Speicher-Untersystem 8 Ebenen-Parallelität verwenden, und die Datensicherungstechnik, wie zum Beispiel RAIN, kann einen Ausfall einer einzigen Ebene abdecken. Das Verhältnis von Benutzerblock zu Paritätsblock beträgt 8:1. Wenn zu einem bestimmten Zeitpunkt zwei TLC-Blöcke offen sind (z.B. Benutzerblöcke, die im TLC-Modus arbeiten), verwenden die TLC-Blöcke die TLC-Block-Paritätsgröße von 2/8. Die Paritätsblöcke können im SLC-Modus arbeiten, und die Benutzerblöcke können im TLC-Modus arbeiten, was bedeutet, dass die minimale Anzahl der Paritätsblöcke 3*2/8 SLC-Blöcken entspricht (z.B. weniger als 1 SLC-Block in dem aktuellen Beispiel). Ein Block (der z.B. im SLC-Modus arbeitet) stellt die minimale Anzahl von Paritätsblöcken dar, die zu einem bestimmten Zeitpunkt verwendet werden (z.B. die minimale Anzahl von Paritätsblöcken, die Paritätsdaten für eine maximale Anzahl von offenen Benutzerblöcken zu einem bestimmten Zeitpunkt speichern können). Es sei angemerkt, dass die Benutzerblöcke, die im TLC-Modus arbeiten, lediglich der Veranschaulichung dienen und nicht der Einschränkung. Der Speicher kann Benutzerblöcke in jedem beliebigen Modus betreiben, z.B. in einem Multi-Bit-Modus. In einigen Fällen können die Benutzerblöcke im Single-Bit-Modus betrieben werden. Es sei ferner angemerkt, dass die Paritätsblöcke, die im SLC-Modus arbeiten, nur der Veranschaulichung dienen und keine Einschränkung darstellen. In einigen Fällen können die Paritätsblöcke in einem Multi-Bit-Modus arbeiten.
  • Die Gesamtzahl der Paritätsblöcke, zum Beispiel die Gesamtzahl der während der Lebensdauer des Speicher-Untersystems verwendeten SLC-Paritätsblöcke, kann bestimmt werden. Im aktuellen Beispiel kann ein 64-GB-Speicher-Untersystem eine TBW-Spezifikation von 64 Terabyte (TB) haben. Die Speicherbereinigungs-Schreibverstärkung beträgt 2, so dass die Speicherbereinigungsdaten 128 TB entsprechen. Die Gesamtmenge der in das Speicher-Untersystem geschriebenen Benutzerdaten während der Lebensdauer des Speicher-Untersystems beträgt 194 TB (z.B. 64 TB Benutzerdaten und 128 TB Speicherbereinigungsdaten). Die Gesamtmenge der Paritätsdaten, die während der Lebensdauer des Speicher-Untersystems geschrieben werden, beträgt 194 TB/8, also etwa 24 TB. Unter der Annahme, dass die SLC-Lebensdauer 80.000 PE-Zyklen beträgt, beläuft sich die Größe der Paritätsdaten während der Lebensdauer des Speicher-Untersystems auf etwa 24 TB / 80k = 0,3 GB im SLC-Modus oder 0,9 GB im TLC-Modus, was etwa 1,5% eines 64-GB-Speicher-Untersystems entspricht. Wenn man davon ausgeht, dass ein Speicher-Untersystem 700 Blöcke enthält, entsprechen 1,5 % des Speicher-Untersystems 10 Blöcken. Die 10 Blöcke stellen die Gesamtzahl der Paritätsblöcke dar, die während der Lebensdauer der Speicherkomponente (oder des Speicher-Untersystems) verwendet werden sollen.
  • Im aktuellen Beispiel und wie vorstehend erwähnt, beträgt die Gesamtzahl der Paritätsblöcke, die während der Lebensdauer der Speicherkomponente (oder des Speicher-Untersystems) zu verwenden sind, 10 Blöcke. Die minimale Anzahl von Paritätsblöcken, die Paritätsdaten für eine maximale Anzahl von offenen Benutzerblöcken zu einem bestimmten Zeitpunkt speichern kann, beträgt 1 Paritätsblock. Die TLC-Lebensdauer beträgt 2k PE-Zyklen. Die SLC-Lebensdauer beträgt 80k PE-Zyklen. Ein Block kann 80k SLC-PE-Zyklen durchlaufen, nachdem eine Anzahl von N von TLC-PE-Zyklen durchgeführt wurde. Der Wert von N kann für ein oder mehrere der Diagramme 300, 400 und 500 unterschiedlich sein.
  • Es ist anzumerken, dass der Paritätsblock (Paritätsböcke) hier als aus einem Pool von Speicherbereichsblöcken zugewiesen beschrieben wird, und zwar eher zur Veranschaulichung als zur Einschränkung. In einigen Ausführungsformen können die Paritätsblöcke aus den Benutzerblöcken zugewiesen werden.
  • 3 ist ein Diagramm, das die vollständige dynamische Zuweisung von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken zur Verwendung als zweckbestimmte Blöcke gemäß einigen Ausführungsformen der Erfindung zeigt. In Fortsetzung des obigen Beispiels ist ein Block unter Bezugnahme auf Diagramm 300 in der Lage, 80k SLC-PE-Zyklen auszuführen, nachdem 2k TLC-PE-Zyklen durchgeführt wurden - ein vollständig genutzter TLC-Block kann immer noch für die volle SLC-Lebensdauer verwendet werden. Das Diagramm 300 veranschaulicht die minimale Anzahl von zweckbestimmten Blöcken (z.B. SLC-Paritätsblöcke), die zu einem bestimmten Zeitpunkt zugewiesen werden (z.B. 1 SLC-Paritätsblock). Das Diagramm 300 veranschaulicht auch, dass dann, wenn ein zugewiesener zweckbestimmter Block (z.B. ein Satz von zweckbestimmten Blöcken) eine Lebensdauergrenze erreicht (z.B. 80k PE-Zyklen), der zweckbestimmte Block ausgemustert wird und ein neuer Block (z.B. ein neuer Satz von zweckbestimmten Blöcken) aus dem TLC-Pool, wie zum Beispiel dem Pool von Speicherbereichsblöcken, zugewiesen wird. Im Diagramm 300 kann das Speicher-Untersystem 1 zweckbestimmten SLC-Block pro 1/10 des TBW verbrauchen. Die effektive Überprovisionierungsstrafe zum Zeitpunkt Null beträgt 0,14% und steigt allmählich auf 1,4% am Ende der Lebensdauer der Speicherkomponente (oder des Speicher-Untersystems) an.
  • Im Diagramm 300 stellt die Linie 305 die Anzahl der TLC-PE-Zyklen des Pools von Speicherbereichsblöcken und der Benutzerblöcke über die TBW dar. Die vertikalen Linien mit Kreisen, die sich von der Linie 305 aus erstrecken, stellen die Zuweisung eines zweckbestimmten Blocks aus dem Pool von Speicherbereichsblöcken dar. Jeder zweckbestimmte Block wird zu einem anderen Zeitpunkt zugewiesen, der durch die TBW, zu der der zweckbestimmte Block zugewiesen wird, dargestellt wird. Der zweckbestimmte Block wird verwendet, um zweckbestimmte Daten für einen Datenstreifen zu speichern, bis eine Lebensdauergrenze von 80k PE-Zyklen erreicht ist. Nachdem der zweckbestimmte Block die Lebensdauergrenze erreicht hat, wird der zweckbestimmte Block ausgemustert, und ein neuer zweckbestimmter Block wird aus dem Pool der Speicherbereichsblöcke ausgewählt, um zweckbestimmte Daten (z.B. Paritätsdaten) für neue Datenstreifen zu speichern.
  • Tabelle 1 dient der Veranschaulichung des Diagramms 300. (Tabelle 1)
    TBW TLC-P/E-Zyklen SLC-Paritätsblöcke Gesamtzahl Datenblöcke Paritätseinfluss
    0% 0 1 699 0,14%
    10% 200 2 698 0,29%
    20% 400 3 697 0,43%
    30% 600 4 696 0,57%
    40% 800 5 695 0,71%
    50% 1000 6 694 0,86%
    60% 1200 7 693 1,00%
    70% 1400 8 692 1,14%
    80% 1600 9 691 1,29%
    90% 1800 10 690 1,43%
    100% 2000
  • Bei TBW 0% (z.B. zum Zeitpunkt Null) wird ein zweckbestimmter Block (z.B. ein Satz von Paritätsblöcken, Paritätsblock 1) aus dem Pool von Speicherbereichsblöcken zugewiesen. Der Pool von Speicherbereichsblöcken (z.B. der Pool von Überprovisionierungsblöcken) und die Benutzerblöcke arbeiten im TLC-Modus. Da der erste zweckbestimmte Block zum Zeitpunkt Null zugewiesen wird, hat der zweckbestimmte Block Null TLC-PE-Zyklen durchgeführt. Der zweckbestimmte Block kann bis zur Lebensdauergrenze des zweckbestimmten Blocks im SLC-Modus verwendet werden, die z.B. 80k PE-Zyklen beträgt. Im aktuellen Beispiel wird bei TBW 0% ein Block von 700 Blöcken (z.B. Gesamtzahl der Blöcke) der Speicherkomponente (oder des Speicher-Untersystems) zur Speicherung zweckbestimmter Daten zugewiesen, und der zweckbestimmte Einfluss beträgt 0,14% der Gesamtzahl der Blöcke. Es sei nochmals darauf hingewiesen, dass im vorliegenden Beispiel 1 zweckbestimmter Block die minimale Anzahl der zu einem bestimmten Zeitpunkt verwendeten zweckbestimmten Blöcke ist.
  • Bei TBW 10% nach Durchführung der ersten Schreiboperationen (z.B. Programmieren und Löschen) wird bestimmt, dass der zweckbestimmte Block eine Bedingung erfüllt hat, wodurch angegeben wird, dass der zweckbestimmte Block ausgemustert werden soll. Beispielsweise kann der Paritätsblock 1 bis zur Lebensdauergrenze des Paritätsblocks im SLC-Modus verwendet werden, die beispielsweise 80k PE-Zyklen beträgt. Wenn festgestellt wird, dass der zweckbestimmte Block die Bedingung für den Lebensdauerzustand erfüllt hat, wird der zweckbestimmte Block 1 ausgemustert und ein neuer zweckbestimmter Block (z.B. Paritätsblock 2) aus dem Pool von Speicherbereichsblöcke zugewiesen. Bei TBW 10% hat der zugewiesene zweckbestimmte Block 2 als Teil des Pools von Speicherbereichsblöcken 200 TLC-PE-Zyklen durchgeführt. Der zweckbestimmte Einfluss bei TBW 10% beträgt 0,29 % der gesamten Blöcke.
  • In ähnlicher Weise wird bei TBW 20% nach Durchführung der zweiten Schreiboperationen bestimmt, dass der zweckbestimmte Block 2 eine Bedingung erfüllt hat, die angibt, dass der zweckbestimmte Block ausgemustert werden soll. Beispielsweise kann der zweckbestimmte Block 2 bis zur Lebensdauergrenze des zweckbestimmten Blocks im SLC-Modus verwendet werden, die beispielsweise 80k PE-Zyklen beträgt. Wenn bestimmt wird, dass der zweckbestimmte Block die Bedingung für den Lebensdauerzustand erfüllt hat, wird der zweckbestimmte Block 2 ausgemustert und ein neuer zweckbestimmter Block (z.B. der zweckbestimmte Block 3) aus dem Pool der Speicherbereichsblöcke zugewiesen. Bei TBW 20% hat der zugewiesene zweckbestimmte Block 2 400 TLC-PE-Zyklen durchgeführt und ist Teil des Pools von Speicherbereichsblöcken. Der zweckbestimmte Einfluss bei TBW 20% beträgt 0,43% der Gesamtzahl der Blöcke.
  • Die Operation kann für TBW 30%-90% wiederholt werden. Bei TBW 100% wurden 10 zweckbestimmte Blöcke im SLC-Modus für die Speicherung zweckbestimmter Daten zugewiesen. Ein zweckbestimmter Block im SLC-Modus wird alle 10% der TBW verbraucht. Der letzte zweckbestimmte Block hat 1,8k TLC-PE-Zyklen und 80K SLC-PE-Zyklen ausgeführt. Es wird davon ausgegangen, dass die zusätzlichen 1,8k TLC-PE-Zyklen einen nicht-materiellen Beitrag (z.B. Auswaschung) zu den 80k SLC-PE-Zyklen leisten.
  • 4 ist ein Diagramm, das die partielle dynamische Zuweisung von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken zur Verwendung als zweckgebundene Blöcke gemäß einigen Ausführungsformen der Erfindung veranschaulicht. In einigen Ausführungsformen kann die volle SLC-Lebensdauer negativ beeinflusst werden, wenn ein Block einen bestimmten Lebensdauerzustand überschreitet, zum Beispiel eine Grenzwertanzahl von TLC-PE-Zyklen. Das Diagramm 400 ähnelt dem Diagramm 300 aus 3 (z.B. TBW 0%-40%), bis ein Grenzwert ermittelt wird, der dem Lebensdauerzustand der Benutzerblöcke (oder des Pools von Speicherbereichsblöcken) entspricht. Bei TBW 50 % werden als Reaktion auf das Bestimmen, dass der Benutzerblock der Speicherkomponente (oder des Speicher-Untersystems) den Grenzwert erfüllt, der dem Lebensdauerzustand der Benutzerblöcke entspricht, die zweckbestimmten Blöcke 6-10 aus dem Pool von Speicherbereichsblöcken zugewiesen. Die Anzahl der zugewiesenen zweckbestimmten Blöcke ist gleich der verbleibenden Anzahl der zweckbestimmten Blöcke von der Gesamtzahl der zweckbestimmten Blöcke, die während der Lebensdauer der Speicherkomponente (oder des Speicher-Untersystems) verwendet werden.
  • Im Diagramm 400 stellt die Linie 405 die Anzahl der TLC-PE-Zyklen des Pools von Speicherbereichsblöcken und der Benutzerblöcke über TBW dar. Die vertikalen Linien mit Kreisen, die sich von der Linie 405 erstrecken, stellen die Zuweisung von einem oder mehreren zweckbestimmte Blöcke aus dem Pool der Speicherbereichsblöcke dar. Die gestrichelte Linie 410 stellt den Grenzwert dar, der dem Lebensdauerzustand der Benutzerblöcke entspricht. Der Grenzwert ist zum Beispiel auf 1k TLC-PE-Zyklen festgelegt.
  • Tabelle 2 dient der Veranschaulichung des Diagramms 400. (Tabelle 2)
    TBW TLC-P/E-Zyklen SLC-Paritätsblöcke Gesamtzahl Datenblöcke Paritätseinfluss
    0% 0 1 699 0,14%
    10% 200 2 698 0,29%
    20% 400 3 697 0,43%
    30% 600 4 696 0,57%
    40% 800 5 695 0,71%
    50% 1000 10 690 1,43%
    60% 1200 10 690 1,43%
    70% 1400 10 690 1,43%
    80% 1600 10 690 1,43%
    90% 1800 10 690 1,43%
    100% 2000
  • Bei TBW 0%-40% werden die zweckbestimmten Blöcke in ähnlicher Weise zugewiesen und ausgemustert, wie im Diagramm 300 aus 3 beschrieben. Bei TBW 0% wird beispielsweise ein zweckbestimmter Block (z.B. ein Satz von zweckbestimmten Blöcken einschließlich des zweckbestimmten Blocks 1) aus dem Pool von Speicherbereichsblöcken zugewiesen. Der Pool von Überprovisionierungsblöcken und die Benutzerblöcke arbeiten im TLC-Modus. Der zweckbestimmte Block kann im SLC-Modus bis zur Lebensdauergrenze des zweckbestimmten Blocks verwendet werden, die z.B. 80k PE-Zyklen beträgt. Im aktuellen Beispiel wird bei TBW 0% ein Block von 700 Blöcken der Speicherkomponente (oder des Speicher-Untersystems) zum Speichern zweckgebundener Daten zugewiesen, und der zweckgebundene Einfluss beträgt 0,14% der Gesamtzahl der Blöcke. Bei TBW 10% wird der zweckbestimmte Block 1 ausgemustert und ein neuer zweckbestimmter Block (z.B. der zweckbestimmte Block 2) aus dem Pool der Speicherbereichsblöcke zugewiesen. Es sei nochmals darauf hingewiesen, dass im vorliegenden Beispiel die minimale Anzahl der zu einem bestimmten Zeitpunkt verwendeten zweckgebundenen Blöcke von TBW 0%-40% zugewiesen und verwendet wird.
  • Bei TBW 50% erreichen die Benutzerblöcke und der Pool von Speicherbereichsblöcken einen Grenzwert, der dem Lebensdauerzustand der Benutzerblöcke entspricht. Beispielsweise haben die Benutzerblöcke und der Pool von Speicherbereichsblöcken 1k TLC-PE-Zyklen durchgeführt. Bei TBW 50% wird die verbleibende Anzahl der zweckbestimmten Blöcke (z.B. 5 Blöcke) der Gesamtzahl der zweckbestimmten Blöcke, die während der Lebensdauer der Speicherkomponente (oder des Speicher-Untersystems) verwendet werden, als zweckbestimmte Blöcke (zweckbestimmte Blöcke 6-10) zugewiesen. Die zweckbestimmten Blöcke 6-10 werden aus dem Pool von Speicherbereichsblöcken zugewiesen und zum Speichern zweckbestimmter Daten für Datenstreifen verwendet. Der zweckbestimmte Einfluss bei TBW 0%-50% ist gering und minimiert die Überprovisionierungsstrafe.
  • 5 ist ein Diagramm, das eine mehrphasige dynamische Zuweisung von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken zur Verwendung als zweckbestimmte Blöcke gemäß einigen Ausführungsformen der Erfindung veranschaulicht. Das Diagramm 500 ist ähnlich wie das Diagramm 400 aus 4 von TBW 50%-100%. Bei TBW 0% (z.B. Zeitpunkt Null) wird eine Anzahl von zweckbestimmten Blöcken aus dem Pool von Speicherbereichsblöcken zugewiesen, die größer ist als die minimale Anzahl von zweckbestimmten Blöcken, die zweckbestimmte Daten für eine maximale Anzahl von offenen Benutzerblöcken zu einem gegebenen Zeitpunkt speichern können, und kleiner als die Gesamtzahl von zweckbestimmten Blöcken, die während der Lebensdauer der Speicherkomponente verwendet werden sollen. Beispielsweise wird bei TBW 0% die minimale Anzahl von zweckbestimmten Blöcken zugewiesen, die zum Speichern von zweckbestimmten Daten verwendet werden, bis die Benutzerblöcke den Grenzwert erfüllen, der dem Lebensdauerzustand der Benutzerblöcke entspricht. Bei TBW 50 % wird als Reaktion auf das Erreichen des Grenzwerts, der dem Lebensdauerzustand der Benutzerblöcke entspricht, die verbleibende Anzahl der zweckbestimmten Blöcke einer Gesamtzahl von zweckbestimmten Blöcken, die während der Lebensdauer der Speicherkomponente verwendet werden, einem zweiten Satz zweckbestimmter Blöcke zugewiesen. Nachdem beispielsweise der Grenzwert für den TLC-PE-Zyklus erreicht ist, werden die verbleibenden zweckbestimmten Blöcke, die zum Speichern von zweckbestimmten Daten verwendet werden, TBW 100 % zugewiesen.
  • Im Diagramm 500 stellt Linie 505 die Anzahl der TLC-PE-Zyklen des Pools von Speicherbereichsblöcken und der Benutzerblöcke über TBW dar. Die vertikalen Linien mit Kreisen, die sich von der Linie 505 erstrecken, stellen die Zuweisung eines bestimmten Blocks aus dem Pool der Speicherbereichsblöcke dar. Die gestrichelte Linie 510 stellt den Grenzwert dar, der dem Lebensdauerzustand der Benutzerblöcke entspricht. Der Grenzwert ist zum Beispiel auf 1k TLC-PE-Zyklen festgelegt.
  • Tabelle 3 dient der Veranschaulichung des Diagramms 500. (Tabelle 3)
    TBW TLC-P/E-Zyklen SLC-Paritätsblöcke Gesamtzahl Datenblöcke Paritätseinfluss
    0% 0 5 695 0,71%
    10% 200 5 695 0,71%
    20% 400 5 695 0,71%
    30% 600 5 695 0,71%
    40% 800 5 695 0,71%
    50% 1000 10 690 1,43%
    60% 1200 10 690 1,43%
    70% 1400 10 690 1,43%
    80% 1600 10 690 1,43%
    90% 1800 10 690 1,43%
    100% 2000
  • Bei TBW 0% wird die minimale Anzahl von zweckbestimmten Blöcken zugewiesen, die zum Speichern von zweckbestimmten Daten verwendet werden, bis die Benutzerblöcke den Grenzwert erfüllen, der dem Lebensdauerzustand der Benutzerblöcke entspricht. Im aktuellen Beispiel werden die zweckbestimmten Blöcke 1-5 zum Speichern von Paritätsdaten für Datenstreifen bei TBW 0% zugewiesen. Von TBW 0% bis TBW 50% wird eine Anzahl von Schreibvorgängen durchgeführt, bei denen die zweckbestimmten Blöcke 1-5 zum Speichern von Paritätsdaten verwendet werden. Bei TBW 50% werden die zweckbestimmten Blöcke 1-5 ausgemustert.
  • Es sei angemerkt, dass in 5 die bei TBW 0% zugewiesenen Blöcke erst bei 50% TBW auf 80K treffen. In einigen Ausführungsformen kann die Speicherkomponente (z.B. NAND) geschwächt werden, wenn mehr P/E-Zyklen hinzugefügt werden, und die Eigenschaften der Speicherkomponente können sich mit den P/E-Zyklen verschlechtern, obwohl die Eigenschaften noch innerhalb der angegebenen Grenzen liegen. Durch eine Batch-Zuweisung, wie sie in 5 dargestellt ist, wird die P/E-Zyklus-Akkumulationsrate auf SLC-Blöcken verlangsamt. Dies trägt dazu bei, dass die frühen TBW (z.B. < 30% TBW) P/E-Zyklen von weniger als 50K P/E-Zyklen erfahren und ein gutes Verhalten aufweisen. Es wird ein Kompromiss zwischen der P/E-Zyklus-Akkumulationsrate und der OP-Strafe erfolgen (mehr Blöcke haben eine geringere P/E-Zyklus-Akkumulation, was zu einer höheren OP-Strafe führt).
  • Bei TBW 50% erreichen die Benutzerblöcke und der Pool von Speicherbereichsblöcken einen Grenzwert, der dem Lebensdauerzustand der Benutzerblöcke entspricht. Bei TBW 50% haben die Benutzerblöcke und der Pool von Speicherbereichsblöcken beispielsweise 1k TLC-PE-Zyklen durchgeführt, was dem Grenzwert entspricht, der dem Lebensdauerzustand der Benutzerblöcke entspricht. Bei TBW 50% wird die verbleibende Anzahl der zweckbestimmten Blöcke (z.B. 5 Blöcke) der Gesamtzahl der zweckbestimmten Blöcke, die während der Lebensdauer der Speicherkomponente (oder des Speicher-Untersystems) verwendet werden, als zweckbestimmte Blöcke zugewiesen (zweckbestimmte Blöcke 6-10). Die zweckbestimmten Blöcke 6-10 werden aus dem Pool von Speicherbereichsblöcken zugewiesen und zum Speichern zweckbestimmter Daten (z.B. Paritätsdaten) für Datenstreifen verwendet. Der zweckbestimmte Einfluss bei TBW 0%-50% ist gering und minimiert die Überprovisionierungsstrafe.
  • 6 zeigt eine beispielhafte Maschine eines Computersystems 600, in der ein Satz von Instruktionen ausgeführt werden kann, die die Maschine veranlassen, eine oder mehrere der hierin erörterten Verfahren durchzuführen. In einigen Ausführungsformen kann das Computersystem 600 einem Host-System entsprechen (z.B. dem Host-System 120 aus 1A), das ein Speicher-Untersystem (z.B. das Speicher-Untersystem 110 aus 1A) enthält, mit diesem gekoppelt ist oder dieses nutzt, oder es kann verwendet werden, um die Operationen eines Controllers auszuführen (z.B. um ein Betriebssystem auszuführen, um Operationen durchzuführen, die der Blockzuweisungskomponente 113 aus 1A entsprechen). In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet und/oder dem Internet verbunden (z.B. vernetzt) sein. Der Rechner kann in der Funktion eines Servers oder einer Client-Maschine in einer Client-Server-Netzwerkumgebung, als eine Peer-Maschine in einer Peer-to-Peer- Netzwerkumgebung (oder verteilten Netzwerkumgebung) oder als ein Server oder eine Client-Maschine in einer Cloud-Computing-Infrastruktur oder Cloud-Computing-Umgebung arbeiten.
  • Bei der Maschine kann es sich um einen Personal Computer (PC), einen Tablet-PC, eine Set-Top-Box (STB), einen Personal Digital Assistant (PDA), ein Mobiltelefon, eine Web-Anwendung, einen Server, einen Netzwerk-Router, einen Switch oder eine Bridge oder um eine beliebige Maschine handeln, die in der Lage ist, einen Satz von Instruktionen (sequenziell oder anderweitig) auszuführen, die von dieser Maschine auszuführende Aktionen spezifizieren. Auch wenn nur eine einzelne Maschine abgebildet ist, umfasst der Begriff „Maschine“ auch eine beliebige Sammlung von Maschinen, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Instruktionen ausführen, um ein oder mehrere der hier erörterten Verfahren durchzuführen.
  • Das beispielhafte Computersystem 600 umfasst eine Verarbeitungsvorrichtung 602, einen Hauptspeicher 604 (z.B. Festwertspeicher (ROM), Flash-Speicher, dynamischer Direktzugriffsspeicher (DRAM), wie zum Beispiel synchroner DRAM (SDRAM) oder Rambus DRAM (RDRAM), usw.), einen statischen Speicher 606 (z.B. Flash-Speicher, statischer Direktzugriffsspeicher (SRAM), usw.) und ein Datenspeichersystem 618, die über einen Bus 630 miteinander kommunizieren.
  • Die Verarbeitungsvorrichtung 602 repräsentiert eine oder mehrere Mehrzweck-Verarbeitungsvorrichtungen, wie zum Beispiel ein Mikroprozessor, eine zentrale Verarbeitungseinheit oder ähnliches. Insbesondere kann die Verarbeitungsvorrichtung ein CISC-Mikroprozessor (Complex Instruction Set Computing Mikroprozessor), ein RISC-Mikroprozessor (Reduced Instruction Set Computing Mikrocomputer), ein VLIW-Mikroprozessor (Very Long Instruction Word Mikrocomputer) oder ein Prozessor sein, der andere Instruktionssätze implementiert, oder ein Prozessor, der eine Kombination von Instruktionssätzen implementiert. Bei der Verarbeitungsvorrichtung 602 kann es sich auch um eine oder mehrere spezielle Verarbeitungsvorrichtungen handeln, wie zum Beispiel eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate Array (FPGA), ein digitaler Signalprozessor (DSP), ein Netzwerk-Prozessor oder Ähnliches. Die Verarbeitungsvorrichtung 602 ist ausgestaltet, um Instruktionen 626 zur Durchführung der hier besprochenen Operationen und Schritte auszuführen. Das Computersystem 600 kann ferner eine Netzwerk-Schnittstellenvorrichtung 608 zur Kommunikation über das Netzwerk 620 enthalten.
  • Das Datenspeichersystem 618 kann ein maschinenlesbares Speichermedium 624 (auch bekannt als nicht-transitorisches computerlesbares Speichermedium) enthalten, auf dem ein oder mehrere Sätze von Instruktionen 626 oder Software gespeichert sind, durch die ein oder mehrere der hier beschriebenen Verfahren oder Funktionen verkörpert sind. Die Instruktionen 626 können sich auch vollständig oder zumindest teilweise in dem Hauptspeicher 604 und/oder in der Verarbeitungsvorrichtung 602 befinden, während sie von dem Computersystem 600 ausgeführt werden, wobei der Hauptspeicher 604 und die Verarbeitungsvorrichtung 602 ebenfalls maschinenlesbare Speichermedien bilden. Das maschinenlesbare Speichermedium 624, das Datenspeichersystem 618 und/oder der Hauptspeicher 604 können dem Speicher-Untersystem 110 aus 1A entsprechen.
  • In einer Ausführungsform enthalten die Instruktionen 626 Instruktionen zum Implementieren einer Funktionalität, die der Blockzuweisungskomponente 113 aus 1A entspricht. Obwohl das maschinenlesbare Speichermedium 624 in einer beispielhaften Ausführungsform als ein einzelnes Medium dargestellt ist, soll der Begriff „maschinenlesbares Speichermedium“ so verstanden werden, dass er ein einzelnes Medium oder mehrere Medien umfasst, die den einen oder mehrere Sätze von Instruktionen speichern. Der Begriff „maschinenlesbares Speichermedium“ soll auch jedes Medium umfassen, das in der Lage ist, einen Satz von Instruktionen zur Ausführung durch die Maschine zu speichern oder zu kodieren, und das die Maschine veranlasst, ein oder mehrere der Verfahren der Erfindung durchzuführen. Der Begriff „maschinenlesbares Speichermedium“ soll folglich Festkörperspeicher, optische Medien und magnetische Medien umfassen, aber nicht hierauf beschränkt.
  • Einige Teile der vorhergehenden detaillierten Beschreibungen wurden in Form von Operationen und symbolischen Darstellungen von Operationen an Datenbits in einem Computerspeicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen werden von Fachleuten auf dem Gebiet der Datenverarbeitung verwendet, um anderen Fachleuten den Inhalt ihrer Arbeit am effektivsten zu vermitteln. Ein Algorithmus oder eine Operation wird hier und im Allgemeinen als eine in sich konsistente Folge von Operationen verstanden, die zu einem gewünschten Ergebnis führt. Bei den Operationen handelt es sich um solche, die physikalische Manipulationen von physikalischen Größen erfordern. Normalerweise, wenn auch nicht notwendigerweise, haben diese Größen die Form von elektrischen oder magnetischen Signalen, die gespeichert, kombiniert, verglichen und anderweitig manipuliert werden können. Zuweilen hat es sich als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder Ähnliches zu bezeichnen, hauptsächlich aus Gründen des allgemeinen Sprachgebrauchs.
  • Es sollte jedoch bedacht werden, dass alle diese und ähnliche Begriffe mit den entsprechenden physikalischen Größen in Verbindung zu bringen sind und lediglich praktische Bezeichnungen für diese Größen darstellen. Die Erfindung kann sich auf die Aktionen und Prozesse eines Computersystems oder einer ähnlichen elektronischen Computervorrichtung beziehen, die Daten, die als physikalische (elektronische) Größen in den Registern und Speichern des Computersystems dargestellt werden, manipuliert und in andere Daten umwandelt, die in ähnlicher Weise als physikalische Größen in den Speichern oder Registern des Computersystems oder in anderen derartigen Informations-Speichersystemen dargestellt werden.
  • Die Erfindung bezieht sich auch auf ein Gerät zur Durchführung der hier beschriebenen Operationen. Dieses Gerät kann speziell für die beabsichtigten Zwecke konstruiert sein, oder sie kann einen Mehrzweck-Computer umfassen, der durch ein in dem Computer gespeichertes Computerprogramm selektiv aktiviert oder neu konfiguriert wird. Ein solches Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert werden, wie zum Beispiel, aber nicht hierauf beschränkt, jede Art von Diskette, einschließlich Disketten, optische Disketten, CD-ROMs und magnetisch-optische Disketten, Festwertspeicher (ROMs), Direktzugriffsspeicher (RAMs), EPROMs, EEPROMs, magnetische oder optische Karten oder jede Art von Medien, die zur Speicherung elektronischer Anweisungen geeignet sind und jeweils mit einem Computersystembus verbunden sind.
  • Die hier vorgestellten Algorithmen, Operationen und Anzeigen sind nicht von Natur aus an einen bestimmten Computer oder ein anderes Gerät gebunden. Verschiedene Mehrzwecksysteme können mit Programmen gemäß den hier dargelegten Lehren verwendet werden, oder es kann sich als zweckmäßig erweisen, ein spezielleres Gerät zur Durchführung des Verfahrens zu konstruieren. Die Struktur für eine Vielzahl dieser Systeme wird in der folgenden Beschreibung definiert. Darüber hinaus wird die Erfindung nicht unter Bezugnahme auf eine bestimmte Programmiersprache beschrieben. Es soll verstanden werden, dass eine Vielzahl von Programmiersprachen verwendet werden kann, um die Lehren der Erfindung, wie hier beschrieben, zu implementieren.
  • Die Erfindung kann als Computerprogrammprodukt oder Software zur Verfügung gestellt werden, die ein maschinenlesbares Medium mit darauf gespeicherten Instruktionen umfassen kann, die zum Programmieren eines Computersystems (oder anderer elektronischer Geräte) zur Durchführung eines Verfahrens gemäß der Erfindung verwendet werden können. Ein maschinenlesbares Medium umfasst jeden Mechanismus zum Speichern von Informationen in einer Form, die von einer Maschine (z.B. einem Computer) gelesen werden kann. In einigen Ausführungsformen umfasst ein maschinenlesbares (z.B. computerlesbares) Medium ein maschinenlesbares (z.B. computerlesbares) Speichermedium, wie zum Beispiel einen Festwertspeicher („ROM“), einen Direktzugriffsspeicher („RAM“), Magnetplatten-Speichermedien, optische Speichermedien, Flash-Speicherkomponenten, usw.
  • Die Worte „Beispiel“ oder „beispielhaft“ werden hier verwendet, um als Beispiel, Instanz oder Illustration zu dienen. Jeder Aspekt oder jedes Design, das hier als „Beispiel“ oder „beispielhaft“ beschrieben wird, ist nicht unbedingt als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Ausgestaltungen zu verstehen. Vielmehr soll die Verwendung der Worte „Beispiel“ oder „beispielhaft“ dazu dienen, Konzepte in einer konkreten Weise darzustellen. Wie in dieser Anmeldung verwendet, soll der Begriff „oder“ eher ein einschließendes „oder“ bedeuten als ein ausschließendes „oder“. Das heißt, sofern nicht anders angegeben oder aus dem Kontext ersichtlich, ist mit „X umfasst A oder B ein“ jede der natürlichen, einschließenden Permutationen gemeint. Das heißt, wenn X umfasst A, X umfasst B oder X umfasst sowohl A als auch B, dann ist „X umfasst A oder B“ in jedem der vorgenannten Fälle erfüllt. Darüber hinaus können die Artikel „ein“ und „eine“, wie sie in dieser Anmeldung und den beigefügten Ansprüchen verwendet werden, im Allgemeinen so ausgelegt werden, dass sie „ein oder mehrere“ bedeuten, es sei denn, es ist etwas anderes angegeben, oder aus dem Kontext geht eindeutig hervor, dass sie sich auf eine Singularform beziehen. Darüber hinaus ist die Verwendung des Begriffs „eine Implementierung“ oder „die eine Implementierung“ oder „eine Ausführungsform“ oder „die eine Ausführungsform“ oder dergleichen nicht so zu verstehen, dass damit dieselbe Implementierung oder Ausführungsform gemeint ist, es sei denn, sie wird als solche beschrieben. Eine oder mehrere der hier beschriebenen Implementierungen oder Ausführungsformen können in einer bestimmten Implementierung oder Ausführungsform kombiniert werden. Die hier verwendeten Begriffe „erstes“, „zweites“, „drittes“, „viertes“ usw. dienen zur Unterscheidung verschiedener Elemente und haben nicht unbedingt die Bedeutung einer Ordnungszahl entsprechend ihrer numerischen Bezeichnung.
  • In der vorstehenden Beschreibung wurden die Ausführungsformen der Erfindung unter Bezugnahme auf spezifische Ausführungsbeispiele beschrieben. Es ist offensichtlich, dass verschiedene Modifikationen daran vorgenommen werden können, ohne von dem Grundgedanken und Umfang der Ausführungsformen der Erfindung, wie in den folgenden Ansprüchen dargelegt, abzuweichen. Die Beschreibung und die Zeichnungen sind dementsprechend eher in einem illustrativen als in einem einschränkenden Sinne zu verstehen.

Claims (20)

  1. System, umfassend: eine Speicherkomponente; und eine Verarbeitungsvorrichtung, die funktional mit der Speicherkomponente gekoppelt ist, zum: Zuweisen von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken der Speicherkomponente zu einem ersten Satz von zweckbestimmten Blöcken; Durchführen einer ersten Mehrzahl von Schreiboperationen zum Schreiben von ersten Daten in eine erste Mehrzahl von Datenstreifen bei Benutzerblöcken der Speicherkomponente, wobei der erste Satz von zweckbestimmten Blöcken zum Speichern von zweckbestimmten Daten der ersten Mehrzahl von Datenstreifen mit der ersten Mehrzahl von Schreiboperationen in Beziehung steht; Bestimmen, ob die Blöcke in dem ersten Satz von zweckbestimmten Blöcken eine Bedingung erfüllen, durch die angegeben wird, dass der erste Satz von zweckbestimmten Blöcken ausgemustert werden soll; als Reaktion darauf, dass die Blöcke in dem ersten Satz von zweckbestimmten Blöcken die Bedingung erfüllen, Bestimmen, dass die Blöcke in dem ersten Satz von zweckbestimmten Blöcken ausgemustert werden sollen, und Zuweisen von einem oder mehreren anderen Blöcke aus dem Pool von Speicherbereichsblöcken der Speicherkomponente zu einem zweiten Satz von zweckbestimmten Blöcken; und Durchführen einer zweiten Mehrzahl von Schreiboperationen zum Schreiben von zweiten Daten in eine zweite Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente, wobei der zweite Satz von zweckbestimmten Blöcken zum Speichern von zweckbestimmten Daten der zweiten Mehrzahl von Datenstreifen mit der zweiten Mehrzahl von Schreiboperationen in Beziehung steht.
  2. System nach Anspruch 1, wobei, zum Durchführen der ersten Mehrzahl von Schreiboperationen zum Schreiben der ersten Daten in die erste Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente, die Verarbeitungsvorrichtung ausgestaltet ist, zum: Durchführen einer ersten Schreiboperation der ersten Mehrzahl von Schreiboperationen zum Schreiben eines ersten Teils der ersten Daten in einen Datenstreifen der ersten Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente, wobei Paritätsdaten des Datenstreifens der ersten Mehrzahl von Datenstreifen in dem ersten Satz von zweckbestimmten Blöcken gespeichert sind; Validieren, dass der Datenstreifen der ersten Mehrzahl von Datenstreifen, der bei den Benutzerblöcken der Speicherkomponente geschrieben wurde, keine nicht-korrigierbaren Bitfehler enthält; als Reaktion auf das Validieren, dass der Datenstreifen der ersten Mehrzahl von Datenstreifen, der bei den Benutzerblöcken der Speicherkomponente geschrieben wurde, keine nicht-korrigierbaren Bitfehler enthält, Durchführen einer Löschoperation zum Löschen des ersten Satzes von zweckbestimmten Blöcken; und Durchführen einer zweiten Schreiboperation der ersten Mehrzahl von Schreiboperationen zum Schreiben eines zweiten Teils der ersten Daten in einen anderen Datenstreifen der ersten Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente, wobei Paritätsdaten des anderen Datenstreifens bei dem ersten Satz von zweckbestimmten Blöcken nach dem Durchführen der Löschoperation bei dem ersten Satz von zweckbestimmten Blöcken gespeichert werden.
  3. System nach Anspruch 1, wobei die Benutzerblöcke der Speicherkomponente, bei denen die erste Mehrzahl von Datenstreifen und die zweite Mehrzahl von Datenstreifen geschrieben sind, in einem Multi-Bit-Modus arbeiten, und wobei die Blöcke in dem ersten Satz von zweckbestimmten Blöcken und die anderen Blöcke in dem zweiten Satz von zweckbestimmten Blöcken in einem Single-Bit-Modus oder Multi-Bit-Modus arbeiten.
  4. System nach Anspruch 3, wobei Überprovisionierungsblöcke in dem Pool von Speicherbereichsblöcken im Multi-Bit-Modus oder im Single-Bit-Modus arbeiten.
  5. System nach Anspruch 1, wobei, zum Bestimmen, ob die Blöcke in dem ersten Satz von zweckbestimmten Blöcken die Bedingung erfüllen, die Verarbeitungsvorrichtung ausgestaltet ist, zum: Bestimmen einer Roh-Bitfehlerrate (RBER), die mit dem ersten Satz von zweckbestimmten Blöcken in Beziehung steht; Bestimmen, ob die RBER, die mit dem ersten Satz von zweckbestimmten Blöcken in Beziehung steht, einen Grenzwert erfüllt; und als Reaktion darauf, dass die RBER, die mit dem ersten Satz von zweckbestimmten Blöcken in Beziehung steht, den Grenzwert erfüllt, Ausmustern des ersten Satzes von zweckbestimmten Blöcken.
  6. System nach Anspruch 1, wobei die erste Mehrzahl von Schreiboperationen zum Schreiben der ersten Daten in die erste Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente und die zweite Mehrzahl von Schreiboperationen zum Schreiben der zweiten Daten in die zweite Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente redundante Arrays aus unabhängigen NAND-Operationen (RAIN-Operationen) zum Schreiben einer Mehrzahl von RAIN-Streifen sind.
  7. System nach Anspruch 1, wobei der erste Satz von zweckbestimmten Blöcken eine minimale Anzahl von zweckbestimmten Blöcken enthält, die zweckbestimmte Daten für eine maximale Anzahl von offenen Benutzerblöcken zu einer gegebenen Zeit speichern können, wobei der erste Satz von zweckbestimmten Blöcken weniger zweckbestimmte Blöcke enthält als eine Gesamtzahl von zweckbestimmten Blöcken, die über eine Lebensdauer der Speicherkomponente verwendet werden.
  8. System, umfassend: eine Speicherkomponente; und eine Verarbeitungsvorrichtung, die funktional mit der Speicherkomponente gekoppelt ist, zum: Zuweisen von einem oder mehreren Blöcken aus einem Pool von Überprovisionierungsblöcken der Speicherkomponente zu einem ersten Satz von Paritätsblöcken; Durchführen einer ersten Mehrzahl von Schreiboperationen zum Schreiben von ersten Daten in eine erste Mehrzahl von Datenstreifen bei Benutzerblöcken der Speicherkomponente, wobei der erste Satz von Paritätsblöcken zum Speichern von Paritätsdaten der ersten Mehrzahl von Datenstreifen mit der ersten Mehrzahl von Schreiboperationen in Beziehung steht; Bestimmen, ob die Benutzerblöcke der Speicherkomponente einen Grenzwert erfüllen, der einem Lebensdauerzustand der Benutzerblöcke entspricht; als Reaktion auf das Bestimmen, dass die Benutzerblöcke der Speicherkomponente den Grenzwert erfüllen, der dem Lebensdauerzustand der Benutzerblöcke entspricht, Zuweisen von Blöcken aus dem Pool von Überprovisionierungsblöcken, die zumindest gleich einer verbleibenden Anzahl von Paritätsblöcken von einer Gesamtzahl von Paritätsblöcken sind, die über eine Lebensdauer der Speicherkomponente verwendet werden, zu einem zweiten Satz von Paritätsblöcken; und Durchführen einer zweiten Mehrzahl von Schreiboperationen zum Schreiben von zweiten Daten in eine zweite Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente, wobei der zweite Satz von Paritätsblöcken zum Speichern von Paritätsdaten der zweiten Mehrzahl von Datenstreifen mit der zweiten Mehrzahl von Schreiboperationen in Beziehung steht.
  9. System nach Anspruch 8, wobei, zum Zuweisen des einen oder der mehreren Blöcke aus dem Pool von Überprovisionierungsblöcken der Speicherkomponente zu dem ersten Satz von Paritätsblöcken, die Verarbeitungsvorrichtung ausgestaltet ist, zum: Zuweisen einer Anzahl von Blöcken aus dem Pool von Überprovisionierungsblöcken, die einer minimalen Anzahl von Paritätsblöcken entspricht, die Paritätsdaten für eine maximale Anzahl von offenen Benutzerblöcken zu einer gegebenen Zeit speichern können.
  10. System nach Anspruch 9, wobei die Verarbeitungsvorrichtung ferner ausgestaltet ist, zum: Bestimmen, ob der erste Satz von Paritätsblöcken eine Bedingung erfüllt, durch die angegeben wird, dass der erste Satz von Paritätsblöcken ausgemustert werden soll; als Reaktion auf das Bestimmen, dass der erste Satz von Paritätsblöcken die Bedingung erfüllt, Angeben, dass die Blöcke in dem ersten Satz von Paritätsblöcken ausgemustert werden sollen, und Zuweisen von einem oder mehreren Blöcken aus dem Pool von Überprovisionierungsblöcken der Speicherkomponente zu einem dritten Satz von Paritätsblöcken; und Durchführen einer dritten Mehrzahl von Schreiboperationen zum Schreiben von dritten Daten in eine dritte Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente, wobei der dritte Satz von Paritätsblöcken zum Speichern von Paritätsdaten der dritten Mehrzahl von Datenstreifen mit der dritten Mehrzahl von Schreiboperationen in Beziehung steht.
  11. System nach Anspruch 10, wobei, zum Bestimmen, ob der erste Satz von Paritätsblöcken die Bedingung erfüllt, durch die angegeben wird, dass der erste Satz von Paritätsblöcken ausgemustert werden soll, die Verarbeitungsvorrichtung ausgestaltet ist, zum: Bestimmen einer Roh-Bitfehlerrate (RBER), die mit dem ersten Satz von Paritätsblöcken in Beziehung steht; Bestimmen, ob die RBER, die mit dem ersten Satz von Paritätsblöcken in Beziehung steht, einen Grenzwert erfüllt; und als Reaktion darauf, dass die RBER, die mit dem ersten Satz von Paritätsblöcken in Beziehung steht, den Grenzwert erfüllt, Ausmustern des ersten Satzes von Paritätsblöcken.
  12. System nach Anspruch 8, wobei, um Zuweisen des einen oder der mehreren Blöcke aus dem Pool von Überprovisionierungsblöcken der Speicherkomponente zu dem ersten Satz von Paritätsblöcken, die Verarbeitungsvorrichtung ausgestaltet ist, zum: Zuweisen einer Anzahl von Blöcken aus dem Pool von Überprovisionierungsblöcken, die größer ist als eine minimale Anzahl von Paritätsblöcken, die Paritätsdaten für eine maximale Anzahl von offenen Benutzerblöcken zu einer gegebenen Zeit speichern können, und kleiner ist als die Gesamtzahl von Paritätsblöcken, die über die Lebensdauer der Speicherkomponente verwendet werden.
  13. System nach Anspruch 8, wobei, zum Durchführen der ersten Mehrzahl von Schreiboperationen zum Schreiben der ersten Daten in die erste Mehrzahl von Datenstreifen bei der Speicherkomponente, die Verarbeitungsvorrichtung ausgestaltet ist, zum: Durchführen einer ersten Schreiboperation der ersten Mehrzahl von Schreiboperationen zum Schreiben eines ersten Teils der ersten Daten in einen Datenstreifen der ersten Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente, wobei Paritätsdaten des Datenstreifens der ersten Mehrzahl von Datenstreifen in dem ersten Satz von Paritätsblöcken gespeichert sind; Validieren, dass der Datenstreifen der ersten Mehrzahl von Datenstreifen, der bei den Benutzerblöcken der Speicherkomponente geschrieben wurde, keine nicht-korrigierbaren Bitfehler enthält; als Reaktion auf das Validieren, dass der Datenstreifen der Mehrzahl von Datenstreifen, der bei den Benutzerblöcken der Speicherkomponente geschrieben wurde, keine nicht-korrigierbaren Bitfehler enthält, Durchführen einer Löschoperation zum Löschen des ersten Satzes von Paritätsblöcken; und Durchführen einer zweiten Schreiboperation der ersten Mehrzahl von Schreiboperationen zum Schreiben eines zweiten Teils der ersten Daten in einen anderen Datenstreifen der ersten Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente, wobei Paritätsdaten des anderen Datenstreifens bei dem ersten Satz von Paritätsblöcken nach dem Durchführen der Löschoperation bei dem ersten Satz von Paritätsblöcken gespeichert werden.
  14. System nach Anspruch 8, wobei die Benutzerblöcke der Speicherkomponente, bei denen die ersten Daten der ersten Mehrzahl von Datenstreifen und die zweiten Daten der zweiten Mehrzahl von Datenstreifen geschrieben werden, in einem Multi-Bit-Modus arbeiten, wobei die Blöcke des ersten Satzes von Paritätsblöcken und die Blöcke des zweiten Satzes von Paritätsblöcken in einem Single-Bit-Modus arbeiten, und wobei der Pool von Überprovisionierungsblöcken in dem Multi-Bit-Modus arbeitet.
  15. System nach Anspruch 8, wobei die erste Mehrzahl von Schreiboperationen zum Schreiben der ersten Daten in die erste Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente und die zweite Mehrzahl von Schreiboperationen zum Schreiben der zweiten Daten in die zweite Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente redundante Arrays aus unabhängigen NAND-Operationen (RAIN-Operationen) zum Schreiben einer Mehrzahl von RAIN-Streifen sind.
  16. System nach Anspruch 8, wobei der erste Satz von Paritätsblöcken weniger Paritätsblöcke als die Gesamtzahl von Paritätsblöcken enthält, die über die Lebensdauer der Speicherkomponente verwendet werden.
  17. Verfahren, umfassend: Zuweisen, durch eine Verarbeitungsvorrichtung, von einem oder mehreren Blöcken aus einem Pool von Speicherbereichsblöcken einer Speicherkomponente zu einem ersten Satz von zweckbestimmten Blöcken; Durchführen einer ersten Mehrzahl von Schreiboperationen zum Schreiben von ersten Daten in eine erste Mehrzahl von Datenstreifen bei Benutzerblöcken der Speicherkomponente, wobei der erste Satz von zweckbestimmten Blöcken zum Speichern von zweckbestimmten Daten der ersten Mehrzahl von Datenstreifen mit der ersten Mehrzahl von Schreiboperationen in Beziehung steht; Bestimmen, ob die Blöcke in dem ersten Satz von zweckbestimmten Blöcken eine Bedingung erfüllen, durch die angegeben wird, dass der erste Satz von zweckbestimmten Blöcken ausgemustert werden soll; als Reaktion darauf, dass die Blöcke in dem ersten Satz von zweckbestimmten Blöcken die Bedingung erfüllen, Bestimmen, dass die Blöcke in dem ersten Satz von zweckbestimmten Blöcken ausgemustert werden sollen, und Zuweisen von einem oder mehreren anderer Blöcken aus dem Pool von Speicherbereichsblöcken der Speicherkomponente zu einem zweiten Satz von zweckbestimmten Blöcken; und Durchführen einer zweiten Mehrzahl von Schreiboperationen zum Schreiben von zweiten Daten in eine zweite Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente, wobei der zweite Satz von zweckbestimmten Blöcken zum Speichern von zweckbestimmten Daten der zweiten Mehrzahl von Datenstreifen mit der zweiten Mehrzahl von Schreiboperationen in Beziehung steht.
  18. Verfahren nach Anspruch 17, wobei das Durchführen der ersten Mehrzahl von Schreiboperationen zum Schreiben der ersten Daten in die erste Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente umfasst: Durchführen einer ersten Schreiboperation der ersten Mehrzahl von Schreiboperationen zum Schreiben eines ersten Teils der ersten Daten in einen Datenstreifen der ersten Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente, wobei Paritätsdaten des Datenstreifens der ersten Mehrzahl von Datenstreifen bei dem ersten Satz von zweckgebundenen Blöcken gespeichert sind; Validieren, dass der Datenstreifen der ersten Mehrzahl von Datenstreifen, der bei den Benutzerblöcken der Speicherkomponente geschrieben wurde, keine nicht-korrigierbaren Bitfehler enthält; als Reaktion auf das Validieren, dass der Datenstreifen der ersten Mehrzahl von Datenstreifen, der bei den Benutzerblöcken der Speicherkomponente geschrieben wurde, keine nicht-korrigierbaren Bitfehler enthält, Durchführen einer Löschoperation zum Löschen des ersten Satzes von zweckbestimmten Blöcken; und Durchführen einer zweiten Schreiboperation der ersten Mehrzahl von Schreiboperationen zum Schreiben eines zweiten Teils der ersten Daten in einen anderen Datenstreifen der ersten Mehrzahl von Datenstreifen bei den Benutzerblöcken der Speicherkomponente, wobei Paritätsdaten des anderen Datenstreifens bei dem ersten Satz von zweckbestimmten Blöcken nach dem Durchführen der Löschoperation bei dem ersten Satz von zweckbestimmten Blöcken gespeichert werden.
  19. Verfahren nach Anspruch 17, wobei die Benutzerblöcke der Speicherkomponente, bei denen die erste Mehrzahl von Datenstreifen und die zweite Mehrzahl von Datenstreifen geschrieben werden, in einem Multi-Bit-Modus arbeiten, und wobei die Blöcke in dem ersten Satz von zweckbestimmten Blöcken und die anderen Blöcke in dem zweiten Satz von zweckbestimmten Blöcken in einem Single-Bit-Modus oder Multi-Bit-Modus arbeiten, und wobei Überprovisionierungsblöcke in dem Pool von Speicherbereichsblöcken im Multi-Bit-Modus oder Single-Bit-Modus arbeiten.
  20. Verfahren nach Anspruch 17, wobei das Bestimmen, ob die Blöcke in dem ersten Satz von zweckbestimmten Blöcken die Bedingung erfüllen, umfasst: Bestimmen einer Roh-Bitfehlerrate (RBER), die mit dem ersten Satz von zweckbestimmten Blöcken in Beziehung steht; Bestimmen, ob die RBER, die mit dem ersten Satz von zweckbestimmten Blöcken in Beziehung steht, einen Grenzwert erfüllt; und als Reaktion darauf, dass die RBER, die mit dem ersten Satz von zweckbestimmten Blöcken in Beziehung steht, den Grenzwert erfüllt, Ausmustern des ersten Satzes von zweckbestimmten Blöcken.
DE112020005502.7T 2019-11-08 2020-11-06 Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke Pending DE112020005502T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/679,019 US10915400B1 (en) 2019-11-08 2019-11-08 Dynamic over provisioning allocation for purposed blocks
US16/679,019 2019-11-08
PCT/US2020/059513 WO2021092465A1 (en) 2019-11-08 2020-11-06 Dynamic over provisioning allocation for purposed blocks

Publications (1)

Publication Number Publication Date
DE112020005502T5 true DE112020005502T5 (de) 2022-08-25

Family

ID=74537245

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020005502.7T Pending DE112020005502T5 (de) 2019-11-08 2020-11-06 Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke

Country Status (6)

Country Link
US (2) US10915400B1 (de)
JP (1) JP2022553791A (de)
KR (1) KR20220085804A (de)
CN (1) CN114651241A (de)
DE (1) DE112020005502T5 (de)
WO (1) WO2021092465A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11327940B2 (en) * 2019-12-18 2022-05-10 International Business Machines Corporation Interlinked tuples in coordination namespace
US11934675B2 (en) * 2020-09-12 2024-03-19 Western Digital Technologies, Inc. Mixed mode block cycling for intermediate data
US11487450B1 (en) * 2021-05-14 2022-11-01 Western Digital Technologies, Inc. Storage system and method for dynamic allocation of control blocks for improving host write and read
CN117289876B (zh) * 2023-11-22 2024-02-23 苏州元脑智能科技有限公司 一种数据写入方法、系统、装置、介质及四级单元闪存

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6745284B1 (en) * 2000-10-02 2004-06-01 Sun Microsystems, Inc. Data storage subsystem including a storage disk array employing dynamic data striping
US7596739B2 (en) * 2005-11-04 2009-09-29 Sun Microsystems, Inc. Method and system for data replication
US20090113235A1 (en) * 2007-10-30 2009-04-30 Selinger Robert D Raid with redundant parity
EP2077559B1 (de) * 2007-12-27 2012-11-07 Hagiwara Solutions Co., Ltd. Aktualisierungsverfahren für einen Flash-Speicher
US9026887B2 (en) * 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US9684591B2 (en) * 2012-04-27 2017-06-20 Hitachi, Ltd. Storage system and storage apparatus
US9003270B2 (en) * 2012-06-04 2015-04-07 Marvell World Trade Ltd. Methods and apparatus for temporarily storing parity information for data stored in a storage device
US9069695B2 (en) * 2013-03-14 2015-06-30 Apple Inc. Correction of block errors for a system having non-volatile memory
US9141484B2 (en) * 2013-03-15 2015-09-22 Seagate Technology Llc Transiently maintaining ECC
US9431113B2 (en) * 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US10733069B2 (en) * 2013-12-04 2020-08-04 International Business Machines Corporation Page retirement in a NAND flash memory system
US9430375B2 (en) * 2013-12-30 2016-08-30 International Business Machines Corporation Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency
US20160328179A1 (en) * 2015-05-08 2016-11-10 Micron Technology, Inc. Multiple virtually over-provisioned, virtual storage devices created from a single physical storage device
US10296260B2 (en) * 2016-11-09 2019-05-21 Sandisk Technologies Llc Method and system for write amplification analysis
US10204693B2 (en) * 2016-12-31 2019-02-12 Western Digital Technologies, Inc. Retiring computer memory blocks
KR20220103205A (ko) * 2017-12-29 2022-07-21 마이크론 테크놀로지, 인크. 정정 불가능 ecc
US10877880B2 (en) * 2018-10-11 2020-12-29 Micron Technology, Inc. Unretiring memory device blocks
US11106518B2 (en) * 2019-03-01 2021-08-31 Western Digital Technologies, Inc. Failure mode study based error correction

Also Published As

Publication number Publication date
KR20220085804A (ko) 2022-06-22
US20210157674A1 (en) 2021-05-27
JP2022553791A (ja) 2022-12-26
US10915400B1 (en) 2021-02-09
WO2021092465A1 (en) 2021-05-14
CN114651241A (zh) 2022-06-21
US11436085B2 (en) 2022-09-06

Similar Documents

Publication Publication Date Title
DE112011102160B4 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE102017120840B4 (de) Verfahren und Vorrichtung zur Detektion und Handhabung von Lesestörungen
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE102019124438B4 (de) Multi-state-programmierung für speichervorrichtungen
DE102019123709A1 (de) Verwendung verschachtelter schreibvorgänge zur trennung von die-ebenen
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE112020006139B4 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE112011103295B4 (de) Decodieren in Solid-State-Speichereinheiten
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112010003887B4 (de) Datenverwaltung in Halbleiter-Speichereinheiten
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE102020130044A1 (de) Techniken zum verhindern von lese-störung in nand-speicher
DE112015000378T5 (de) Selektives Rückkopieren für einen auf einem Chipplättchen gepufferten nichtflüchtigen Speicher
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102017128994A1 (de) Weiche Dekodierungs-Planung
DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112019000161T5 (de) Speicher-cache-verwaltung
DE102015117500A1 (de) Verfahren zur Verbesserung des gemischten Random-Verhaltens bei Arbeitslasten mit niedriger Queue-Tiefe
DE112020000143T5 (de) Ssd-system, das einschaltzyklus-basierten read-scrub verwendet
DE112018000485T5 (de) Komprimierer/Dekomprimierer für nicht binäre Kontextmischung
DE112020000230T5 (de) Datenspeichervorrichtung mit dynamischem streifenlängenmanager

Legal Events

Date Code Title Description
R012 Request for examination validly filed