DE102017112560A1 - ADAPTIVE WEAR ADJUSTMENT - Google Patents

ADAPTIVE WEAR ADJUSTMENT Download PDF

Info

Publication number
DE102017112560A1
DE102017112560A1 DE102017112560.4A DE102017112560A DE102017112560A1 DE 102017112560 A1 DE102017112560 A1 DE 102017112560A1 DE 102017112560 A DE102017112560 A DE 102017112560A DE 102017112560 A1 DE102017112560 A1 DE 102017112560A1
Authority
DE
Germany
Prior art keywords
blocks
sets
flash memory
active
memory circuits
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.)
Granted
Application number
DE102017112560.4A
Other languages
German (de)
Other versions
DE102017112560B4 (en
Inventor
Richard David Barndt
Aldo G. COMETTI
Scott Thomas KAYSER
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/331,552 external-priority patent/US10282111B2/en
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102017112560A1 publication Critical patent/DE102017112560A1/en
Application granted granted Critical
Publication of DE102017112560B4 publication Critical patent/DE102017112560B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50004Marginal testing, e.g. race, voltage or current testing of threshold voltage
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Eine Vorrichtung, die adaptive Abnutzungs-Nivellierung bereitstellt, umfasst mindestens einen Prozessor. Der mindestens eine Prozessor benutzt Mengen von Blöcken von Flash-Speicherschaltungen für Datenspeicherungsoperationen, wobei jede Menge von Blöcken einen Block aus jeder Flash-Speicherschaltung umfasst und mindestens einige der Blöcke als für die Datenspeicherungsoperationen aktiv markiert sind. Der mindestens eine Prozessor überwacht eine Qualitätsmetrik jedes Blocks, während die als aktiv markierten Blöcke für Datenspeicherungsoperationen benutzt werden. Der mindestens eine Prozessor bestimmt, wann die Qualitätsmetrik eines Blocks unter einen Mindestwert fällt, und markiert den Block als vorübergehend inaktiv, wobei der Block nicht für die Datenspeicherungsoperationen benutzt wird, während er als vorübergehend inaktiv markiert ist. Wenn ein Kriterium erfüllt ist, markiert der mindestens eine Prozessor den Block als aktiv, so dass der Block wieder für die Datenspeicherungsoperationen benutzt werden kann.An apparatus that provides adaptive wear leveling includes at least one processor. The at least one processor uses sets of blocks of flash memory circuits for data storage operations, each set of blocks comprising one block from each flash memory circuit and at least some of the blocks being marked active for the data storage operations. The at least one processor monitors a quality metric of each block while the blocks marked as active are used for data storage operations. The at least one processor determines when the quality metric of a block falls below a minimum value and marks the block as temporarily inactive, which block is not used for the data storage operations while being marked as temporarily inactive. If a criterion is met, the at least one processor marks the block as active so that the block can be reused for the data storage operations.

Description

VERWEIS AUF VERWANDTE ANMELDUNGEN REFER TO RELATED APPLICATIONS

Die vorliegende Anmeldung beansprucht den Nutzen der vorläufigen US-Patentanmeldung Nr. 62/368,967 mit dem Titel „Adaptive Wear Levelling“, eingereicht am 29.7.2016, die hiermit für alle Zwecke durch Bezugnahme vollständig aufgenommen wird.  The present application claims the benefit of US Provisional Patent Application No. 62 / 368,967, entitled "Adaptive Wear Leveling", filed July 29, 2016, which is hereby incorporated by reference in its entirety for all purposes.

TECHNISCHES GEBIET TECHNICAL AREA

Die vorliegende Beschreibung betrifft allgemein die Abnutzungs-Nivellierung, darunter adaptive Abnutzungs-Nivellierung für Flash-Speichervorrichtungen.  The present description relates generally to wear leveling, including adaptive wear leveling for flash memory devices.

STAND DER TECHNIK STATE OF THE ART

In einem Flash-Speichersystem verwendet das System zur Erzielung hoher Standzeit typischerweise einen Abnutzungs-Nivellierungsalgorithmus, der alle physischen Blöcke in einem engen Bereich kumulativer Zyklen von Programmierung/Löschung (P/E) behält. Die Annahme ist dabei, dass die physischen Blöcke alle dieselbe Standzeit aufweisen (wenn die schwachen Blöcke außer Acht gelassen werden, die durch Überprovisionierung kompensiert werden) und sich deshalb alle im Wesentlichen zur selben Zeit abnutzen. In der Praxis weisen die physischen Blöcke jedoch nicht alle dieselbe Standzeit auf. Somit kann das Flash-Speichersystem sein spezifiziertes Lebensende erreichen, obwohl viele der physischen Blöcke immer noch benutzbar sind.  In a flash memory system, the system typically uses a wear leveling algorithm to maintain long life, keeping all physical blocks within a narrow range of cumulative programming / erasing (P / E) cycles. The assumption is that the physical blocks all have the same life (ignoring the weak blocks that are compensated for by over provisioning) and therefore all wear out at substantially the same time. However, in practice, the physical blocks do not all have the same lifetime. Thus, the flash memory system can reach its specified end of life, although many of the physical blocks are still usable.

KURZFASSUNG SHORT VERSION

Der offenbarte Gegenstand betrifft eine Vorrichtung, die mindestens einen Prozessor umfasst. Der mindestens eine Prozessor kann ausgelegt sein zum Benutzen von Mengen von Blöcken von Flash-Speicherschaltungen für Datenspeicherungsoperationen, wobei jede der Mengen von Blöcken mindestens einen Block aus jeder der Flash-Speicherschaltungen umfasst und mindestens einige der Blöcke mindestens einiger der Mengen von Blöcken als aktiv markiert sind, wobei die mindestens einigen der Blöcke der mindestens einigen der Mengen von Blöcken, die als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden. Der mindestens eine Prozessor kann ferner ausgelegt sein zum Überwachen von Qualitätsmetriken jedes Blocks jeder der Mengen von Blöcken, während die mindestens einigen der Blöcke der mindestens einigen der Mengen von Blöcken, die als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden. Der mindestens eine Prozessor kann ferner ausgelegt sein zum Bestimmen, wann die Qualitätsmetrik eines der Blöcke einer der Mengen von Blöcken unter einen Mindestqualitätswert fällt. Der mindestens eine Prozessor kann ferner ausgelegt sein zum Markieren des einen der Blöcke der einen der Mengen von Blöcken als vorübergehend inaktiv, wobei der eine der Blöcke der einen der Mengen von Blöcken nicht für die Datenspeicherungsoperationen benutzt wird, während er als vorübergehend inaktiv markiert ist. Der mindestens eine Prozessor kann ferner ausgelegt sein zum Markieren des einen der Blöcke der einen der Mengen von Blöcken als aktiv, wenn mindestens ein Kriterium erfüllt ist, wobei der eine der Blöcke der einen der Mengen von Blöcken wieder für die Datenspeicherungsoperationen benutzt wird, während er als aktiv markiert ist.  The disclosed subject matter relates to a device comprising at least one processor. The at least one processor may be configured to use sets of blocks of flash memory circuits for data storage operations, each of the sets of blocks comprising at least one block of each of the flash memory circuits and marking at least some of the blocks of at least some of the sets of blocks as active wherein the at least some of the blocks of the at least some of the sets of blocks marked active are used for the data storage operations. The at least one processor may be further configured to monitor quality metrics of each block of each of the sets of blocks while using the at least some of the blocks of the at least some of the sets of blocks marked as active for the data storage operations. The at least one processor may be further configured to determine when the quality metric of one of the blocks of one of the sets of blocks falls below a minimum quality value. The at least one processor may be further configured to mark one of the blocks of the one of the sets of blocks as temporarily inactive, wherein the one of the blocks of the one of the sets of blocks is not used for the data storage operations while being marked as temporarily inactive. The at least one processor may be further configured to mark one of the blocks of the one of the sets of blocks as active if at least one criterion is satisfied, wherein the one of the blocks of the one of the sets of blocks is reused for the data storage operations while it is being used marked as active.

In einem anderen Aspekt kann ein Verfahren Folgendes umfassen: Benutzen von Mengen von Blöcken von einer Vielzahl von Flash-Speicherschaltungen für Datenspeicherungsoperationen, wobei jede der Mengen von Blöcken mindestens einen Block aus jeder der Vielzahl von Flash-Speicherschaltungen umfasst und mindestens einige der Blöcke mindestens einiger der Mengen von Blöcken als aktiv markiert sind, wobei die mindestens einigen der Blöcke der mindestens einigen der Mengen von Blöcken, die als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden. Das Verfahren kann ferner Folgendes umfassen: Überwachen eines verbleibenden Zykluszählwerts jedes der Blöcke jeder der Mengen von Blöcken, während die mindestens einigen der Blöcke der mindestens einigen der Mengen von Blöcken, die als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden, wobei der verbleibende Zykluszählwert jedes der Blöcke jeder der Mengen von Blöcken mindestens teilweise auf einem erwarteten Zykluszählwert basiert, der jeder der Vielzahl von Flash-Speicherschaltungen zugeordnet ist, die jeden der Blöcke jeder der Mengen von Blöcken enthalten. Das Verfahren kann ferner Folgendes umfassen: Markieren des einen der Blöcke der einen der Mengen von Blöcken als vorübergehend inaktiv, wenn der verbleibende Zykluszählwert eines der Blöcke einer der Mengen von Blöcken mindestens ein erstes Kriterium erfüllt, wobei der eine der Blöcke der einen der Mengen von Blöcken nicht für die Datenspeicherungsoperationen benutzt wird, während er als vorübergehend inaktiv markiert ist. Das Verfahren kann ferner Folgendes umfassen: Markieren des einen der Blöcke der einen der Mengen von Blöcken als aktiv, wenn mindestens ein zweites Kriterium erfüllt ist, wobei der eine der Blöcke der einen der Mengen von Blöcken wieder für die Datenspeicherungsoperationen benutzt wird, während er als aktiv markiert ist.  In another aspect, a method may include using sets of blocks from a plurality of flash memory circuits for data storage operations, each of the sets of blocks comprising at least one block of each of the plurality of flash memory circuits and at least some of the blocks of at least some the sets of blocks are marked active, the at least some of the blocks of the at least some of the sets of blocks marked active being used for the data storage operations. The method may further comprise monitoring a remaining cycle count of each of the blocks of each of the sets of blocks, while using the at least some of the blocks of the at least some of the sets of blocks marked as active for the data storage operations, the remaining cycle count each of the blocks of each of the sets of blocks is based at least in part on an expected cycle count associated with each of the plurality of flash memory circuits containing each of the blocks of each of the sets of blocks. The method may further comprise marking the one of the blocks of the one of the sets of blocks as temporarily inactive if the remaining cycle count of one of the blocks of one of the sets of blocks meets at least a first criterion, wherein the one of the blocks is one of the sets of Blocks is not used for the data storage operations while it is marked as temporarily inactive. The method may further comprise marking the one of the blocks of the one of the sets of blocks as active if at least a second criterion is met, wherein the one of the blocks of the one of the sets of blocks is reused for the data storage operations while serving as is active.

In einem anderen Aspekt umfasst ein Computerprogrammprodukt Code, der in einem nichttransitorischen computerlesbaren Speicherungsmedium gespeichert ist. Der Code kann Code umfassen, um einen jeweiligen physischen Block jeder einer Vielzahl von Flash-Speicherschaltungen schnell zu zyklieren, bis eine jeweilige Qualitätsmetrik des jeweiligen physischen Blocks jeder der Vielzahl von Flash-Speicherschaltungen unter einen Mindestqualitätswert fällt. Der Code kann ferner Code umfassen, um einen erwarteten Zykluszählwert für jede der Vielzahl von Flash-Speicherschaltungen mindestens teilweise auf der Basis einer Anzahl von schnellen Zyklen zu bestimmen, die benutzt werden, um zu bewirken, dass die jeweilige Qualitätsmetrik des jeweiligen physischen Blocks jeder der Vielzahl von Flash-Speicherschaltungen unter den Mindestqualitätswert fällt. Der Code kann ferner Code umfassen, um in mindestens einer Direktzugriffsspeicherschaltung den erwarteten Zykluszählwert für jede der Vielzahl von Flash-Speicherschaltungen in individueller Assoziation mit physischen Blöcken jeder der Vielzahl von Flash-Speicherschaltungen zu speichern. In another aspect, a computer program product includes code stored in a non-transitory computer-readable storage medium. The code may include code to quickly access a respective physical block of each of a plurality of flash memory circuits until a respective quality metric of the respective physical block of each of the plurality of flash memory circuits falls below a minimum quality value. The code may further comprise code for determining an expected cycle count for each of the plurality of flash memory circuits based at least in part on a number of fast cycles used to cause the respective quality metric of the respective physical block to be any one of Variety of flash memory circuits falls below the minimum quality value. The code may further comprise code to store in at least one random access memory circuit the expected cycle count for each of the plurality of flash memory circuits in individual association with physical blocks of each of the plurality of flash memory circuits.

In einem anderen Aspekt kann ein System eine Vielzahl von Flash-Speicherschaltungen, die jeweils Blöcke umfassen, einen Direktzugriffsspeicher (RAM), ausgelegt zum Speichern einer Datenstruktur, die einen Status jedes der Blöcke jeder der Vielzahl von Flash-Speicherschaltungen umfasst, wobei der Status jedes der Blöcke jeder der Vielzahl von Flash-Speicherschaltungen mindestens angibt, ob jeder der Blöcke jeder der Vielzahl von Flash-Speicherschaltungen als aktiv markiert ist oder als vorübergehend inaktiv markiert ist, eine kommunikativ mit einer Host-Vorrichtung gekoppelte Schnittstelle und eine Steuerung umfassen. Die Steuerung kann ausgelegt sein zum Benutzen von Mengen der Blöcke der Vielzahl von Flash-Speicherschaltungen für Datenspeicherungsoperationen, die durch die Host-Vorrichtung angegeben werden, wobei jede der Mengen der Blöcke mindestens einen Block aus jeder der Vielzahl von Flash-Speicherschaltungen umfasst und mindestens einige der Blöcke mindestens einiger der Mengen der Blöcke in der Datenstruktur als aktiv markiert sind, wobei die mindestens einigen der Blöcke der mindestens einigen der Mengen der Blöcke, die in der Datenstruktur als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden. Die Steuerung kann ferner ausgelegt sein zum Überwachen einer Qualitätsmetrik jedes der Blöcke jeder der Mengen der Blöcke, während die mindestens einigen der Blöcke der mindestens einigen der Mengen der Blöcke, die in der Datenstruktur als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden. Die Steuerung kann ferner ausgelegt sein zum Bestimmen, wann die Qualitätsmetrik eines der Blöcke einer der Mengen von Blöcken unter einen Mindestqualitätswert fällt. Die Steuerung kann ferner ausgelegt sein zum Markieren des einen der Blöcke der einen der Mengen der Blöcke als vorübergehend inaktiv in der Datenstruktur, wobei der eine der Blöcke der einen der Mengen der Blöcke nicht für die Datenspeicherungsoperationen benutzt wird, während er als vorübergehend inaktiv in der Datenstruktur markiert ist. Die Steuerung kann ferner ausgelegt sein zum Markieren des einen der Blöcke der einen der Mengen der Blöcke als aktiv in der Datenstruktur, wenn mindestens ein Kriterium erfüllt ist, wobei der eine der Blöcke der einen der Mengen der Blöcke wieder für die Datenspeicherungsoperationen benutzt wird, während er als aktiv in der Datenstruktur markiert ist.  In another aspect, a system may include a plurality of flash memory circuits, each comprising blocks, a random access memory (RAM) configured to store a data structure comprising a status of each of the blocks of each of the plurality of flash memory circuits, the status of each the blocks of each of the plurality of flash memory circuits at least indicate whether each of the blocks of each of the plurality of flash memory circuits is marked active or temporarily inactive, an interface and controller communicatively coupled to a host device. The controller may be configured to use sets of the blocks of the plurality of flash memory circuits for data storage operations specified by the host device, each of the sets of blocks comprising at least one block of each of the plurality of flash memory circuits and at least some the blocks of at least some of the sets of blocks in the data structure are marked active, the at least some of the blocks of the at least some of the sets of blocks marked active in the data structure being used for the data storage operations. The controller may be further configured to monitor a quality metric of each of the blocks of each of the sets of blocks while the at least some of the blocks of the at least some of the sets of blocks marked active in the data structure are used for the data storage operations. The controller may be further configured to determine when the quality metric of one of the blocks of one of the sets of blocks falls below a minimum quality value. The controller may be further configured to mark one of the blocks of the one of the sets of blocks as temporarily inactive in the data structure, wherein the one of the blocks of the one of the sets of blocks is not used for the data storage operations while being temporarily inactive in the data storage operations Data structure is highlighted. The controller may be further configured to mark one of the blocks of the one of the sets of blocks as active in the data structure when at least one criterion is met, wherein the one of the blocks of the one of the sets of blocks is reused for the data storage operations it is marked as active in the data structure.

Es versteht sich, dass andere Konfigurationen der vorliegenden Technologie Fachleuten aus der folgenden ausführlichen Beschreibung ohne Weiteres ersichtlich werden, wobei verschiedene Konfigurationen der vorliegenden Technologie zur Veranschaulichung gezeigt und beschrieben werden. Es versteht sich, dass die vorliegende Technologie andere und verschiedene Konfigurationen aufweisen kann und ihre mehreren Einzelheiten in verschiedenen anderen Hinsichten modifiziert werden können, ohne jeweils vom Schutzumfang der vorliegenden Technologie abzuweichen. Die Zeichnungen und die ausführliche Beschreibung sind dementsprechend als veranschaulichend und nicht als einschränkend anzusehen.  It will be understood that other configurations of the present technology will become readily apparent to those skilled in the art from the following detailed description, with various configurations of the present technology shown and described by way of illustration. It should be understood that the present technology may have other and different configurations and its several details may be modified in various other respects without departing from the scope of the present technology. The drawings and detailed description are accordingly to be regarded as illustrative and not restrictive.

KURZE BESCHREIBUNG DER ZEICHNUNGEN BRIEF DESCRIPTION OF THE DRAWINGS

Bestimmte Merkmale der vorliegenden Technologie werden in den angefügten Ansprüchen dargelegt. Zur Erläuterung werden jedoch in den folgenden Figuren mehrere Ausführungsformen der vorliegenden Technologie dargelegt.  Certain features of the present technology are set forth in the appended claims. However, for purposes of explanation, several embodiments of the present technology are set forth in the following figures.

1 zeigt ein beispielhaftes Flash-Speichersystem, das ein System zur Bereitstellung von adaptiver Abnutzungs-Nivellierung implementieren kann, gemäß einer oder mehreren Implementierungen. 1 FIG. 12 shows an exemplary flash memory system that may implement a system for providing adaptive wear leveling, according to one or more implementations.

2 zeigt beispielhafte logische Gruppierungen von physischen Blöcken von Flash-Speicherschaltungen in einer beispielhaften Flash-Speichervorrichtung gemäß einer oder mehreren Implementierungen. 2 FIG. 12 shows exemplary logical groupings of physical blocks of flash memory circuits in an exemplary flash memory device according to one or more implementations.

3 zeigt ein Flussdiagramm eines beispielhaften Prozesses zur adaptiven Abnutzungs-Nivellierung unter Verwendung von Coderatenverschiebung gemäß einer oder mehreren Implementierungen. 3 FIG. 12 shows a flowchart of an exemplary adaptive wear leveling process using code rate shift according to one or more implementations.

4 zeigt ein Flussdiagramm eines beispielhaften Prozesses zur adaptiven Abnutzungs-Nivellierung unter Verwendung von empirisch bestimmten erwarteten Zykluszählwerten gemäß einer oder mehreren Implementierungen. 4 FIG. 12 is a flowchart of an exemplary adaptive wear leveling process using empirically determined expected cycle counts according to one or more implementations. FIG.

AUSFÜHRLICHE BESCHREIBUNG DETAILED DESCRIPTION

Die nachfolgend dargelegte ausführliche Beschreibung ist als Beschreibung verschiedener Konfigurationen der vorliegenden Technologie gedacht und soll nicht die einzigen Konfigurationen darstellen, in denen die vorliegende Technologie praktiziert werden kann. Die angefügten Zeichnungen sind hierin eingebunden und bilden einen Teil der ausführlichen Beschreibung. Die ausführliche Beschreibung umfasst spezifische Einzelheiten zum Zwecke des Gewährleistens eines umfassenden Verständnisses der vorliegenden Technologie. Die vorliegende Technologie ist jedoch nicht auf die hier dargelegten spezifischen Einzelheiten beschränkt und kann unter Verwendung einer oder mehrerer Implementierungen praktiziert werden. In einem oder mehreren Fällen werden Strukturen und Komponenten in Blockdarstellungsform gezeigt, um eine Verschleierung der Konzepte der vorliegenden Technologie zu vermeiden. The detailed description given below is a description of various Concepts of the present technology are not intended to be the only configurations in which the present technology can be practiced. The attached drawings are incorporated herein and form a part of the detailed description. The detailed description includes specific details for the purpose of providing a thorough understanding of the present technology. However, the present technology is not limited to the specific details set forth herein and may be practiced using one or more implementations. In one or more instances, structures and components are shown in block diagram form to avoid obscuring the concepts of the present technology.

In dem vorliegenden System zur adaptiven Abnutzungs-Nivellierung wird vor der Benutzung von Flash-Speicherschaltungen eines Flash-Speichersystems zur Datenspeicherung ein einzelner physischer Block auf jeder Flash-Speicherschaltung (z.B. einem einzelnen Flash-Speicherchip bzw. -die) schnell zykliert (P/E-zykliert), bis eine dem physischen Block zugeordnete Qualitätsmetrik (z.B. Fehlerzählwert, Fehlerrate, Zeit zum Programmieren) unter einen Mindestqualitätswert fällt. Die Anzahl von Zyklen, die benutzt wird, um zu bewirken, dass die Qualitätsmetrik des jeweiligen physischen Blocks jeder jeweiligen Flash-Speicherschaltung unter den Mindestqualitätswert fällt, wird als der erwartete Zykluszählwert für alle physischen Blöcke der jeweiligen Flash-Speicherschaltung gespeichert. Es erfolgt dementsprechend eine Annahme, dass die Standzeitabweichung zwischen physischen Blöcken einer einzelnen Flash-Speicherschaltung minimal ist.  In the present adaptive wear leveling system, prior to using flash memory circuits of a flash memory system for data storage, a single physical block on each flash memory circuit (eg, a single flash memory chip) is quickly cycled (P / E -cycled) until a quality metric associated with the physical block (eg, error count, error rate, time to program) falls below a minimum quality value. The number of cycles used to cause the quality metric of the respective physical block of each respective flash memory circuit to fall below the minimum quality value is stored as the expected cycle count for all physical blocks of the respective flash memory circuit. Accordingly, there is an assumption that the life deviation between physical blocks of a single flash memory circuit is minimal.

Während die Mengen von Blöcken (oder Superblöcken), die aus den physischen Blöcken der Flash-Speicherschaltungen angeordnet werden, für Datenspeicherungszwecke benutzt werden, überwacht das vorliegende System die erwartete verbleibende Anzahl von Zyklen für jeden der physischen Blöcke. Die erwartete verbleibende Anzahl von Zyklen für einen gegebenen Block kann bestimmt werden, indem der aktuelle Zykluszählwert für den Block von dem erwarteten Zykluszählwert für den Block subtrahiert wird. Das vorliegende System bestimmt, wann die erwartete verbleibende Anzahl von Zyklen in einem Block einer gegebenen Menge von Blöcken hinter die erwartete verbleibende Anzahl von Zyklen anderer Blöcke der gegebenen Menge von Blöcken fällt. In diesem Fall markiert das vorliegende System den Block als vorübergehend inaktiv, was verhindert, dass der Block in den Datenspeicherungsoperationen benutzt wird. Wenn die erwarteten verbleibenden Zykluszählwerte der anderen Blöcke in der Menge von Blöcken den erwarteten verbleibenden Zykluszählwert des Blocks aufholen, markiert das vorliegende System den Block als aktiv, wodurch der Block wieder für die Benutzung für Datenspeicherungsoperationen verfügbar wird. Das vorliegende System kann den Block auch ungeachtet der erwarteten verbleibenden Zykluszählwerte als aktiv markieren, z.B. um anderen Speicherungsbedingungen zu genügen, die nachfolgend weiter besprochen werden.  While the amounts of blocks (or super blocks) arranged from the physical blocks of the flash memory circuits are used for data storage purposes, the present system monitors the expected remaining number of cycles for each of the physical blocks. The expected remaining number of cycles for a given block can be determined by subtracting the current cycle count for the block from the expected cycle count for the block. The present system determines when the expected remaining number of cycles in a block of a given set of blocks falls short of the expected remaining number of cycles of other blocks in the given set of blocks. In this case, the present system marks the block as temporarily inactive, preventing the block from being used in the data storage operations. If the expected remaining cycle counts of the other blocks in the set of blocks catch up with the expected remaining cycle count of the block, the present system marks the block as active, making the block available again for use in data storage operations. The present system may also mark the block active, regardless of the expected remaining cycle counts, e.g. to meet other storage conditions, which will be discussed further below.

Als Alternative oder zusätzlich kann das vorliegende System auch adaptive Abnutzungs-Nivellierung durch Verwendung von Coderatenverschiebung bereitstellen. In diesem Fall kann das vorliegende System das anfängliche schnelle Zyklieren eines jeweiligen Blocks jeder der Flash-Speicherschaltungen nicht durchführen, kann aber stattdessen eine Qualitätsmetrik jedes der Blöcke überwachen, während die Mengen von Blöcken für die Datenspeicherungsoperationen benutzt werden. Wenn die Qualitätsmetrik eines Blocks unter einen Mindestqualitätswert fällt, wird der Block als vorübergehend inaktiv markiert. Wenn eine bestimmte Anzahl von Blöcken einer gegebenen Menge von Blöcken als vorübergehend inaktiv markiert wurde, wird die Coderate für die gegebene Menge von Blöcken verringert, um die Qualitätsreduktion der Blöcke, die vorübergehend inaktiv waren, zu kompensieren. Nachdem die Coderate für die gegebene Menge von Blöcken verringert wurde, werden alle Blöcke der gegebenen Menge von Blöcken als aktiv markiert. Das vorliegende System kann auch die Coderate einer gegebenen Menge von Blöcken ungeachtet der Anzahl von Blöcken der gegebenen Menge, die als inaktiv markiert wurden, verringern und die Blöcke der gegebenen Menge von Blöcken als aktiv markieren, z.B. um andere Speicherungsbedingungen zu erfüllen, die nachfolgend weiter besprochen werden.  Alternatively or additionally, the present system may also provide adaptive wear leveling by using code rate shifting. In this case, the present system can not perform the initial fast cycling of a respective block of each of the flash memory circuits, but instead can monitor a quality metric of each of the blocks while using the sets of blocks for the data storage operations. If the quality metric of a block falls below a minimum quality value, the block is marked as temporarily inactive. If a certain number of blocks of a given set of blocks have been marked as temporarily inactive, the code rate for the given set of blocks is decreased to compensate for the quality reduction of the blocks that were temporarily inactive. After the code rate has been reduced for the given set of blocks, all blocks of the given set of blocks are marked as active. The present system can also reduce the code rate of a given set of blocks regardless of the number of blocks of the given set marked as inactive and mark the blocks of the given set of blocks as active, e.g. to meet other storage conditions, which will be discussed further below.

Bei einer oder mehreren Implementierungen kann das vorliegende System sowohl das anfängliche schnelle Zyklieren eines jeweiligen Blocks von jeder der Flash-Speicherschaltungen als auch die Coderatenverschiebung implementieren, um adaptive Abnutzungs-Nivellierung bereitzustellen. Zum Beispiel kann das vorliegende System für jeden Block einer Menge von Blöcken eine erwartete Anzahl von Zyklen schätzen, bevor die Qualitätsmetrik jedes Blocks bei der aktuellen Coderate unter den Mindestqualitätswert fällt, z.B. auf der Basis des erwarteten Zykluszählwerts für jeden Block. Das vorliegende System kann dann die benutzten Zyklen der Blöcke der Menge von Blöcken verwalten, z.B. durch vorübergehendes Deaktivieren eines oder mehrerer der Blöcke, so wie es notwendig ist, so dass die meisten der Blöcke der Menge von Blöcken im Wesentlichen zur selben Zeit für die gegebene Coderate den Mindestqualitätswert erreichen. Die Coderate für die Menge von Blöcken wird dann verringert und alle Blöcke der Menge von Blöcken werden als aktiv markiert und sind wieder für Datenspeicherungsoperationen verfügbar. In one or more implementations, the present system may implement both the initial fast cycling of a respective block of each of the flash memory circuits and the code rate shift to provide adaptive wear leveling. For example, for each block of a set of blocks, the present system may estimate an expected number of cycles before the quality metric of each block at the current code rate falls below the minimum quality value, eg, based on the expected cycle count for each block. The present system can then manage the used cycles of the blocks of the set of blocks, eg by temporarily deactivating one or more of the blocks as necessary, so that most of the blocks of the set of blocks at substantially the same time for the given one Code rate reach the minimum quality value. The code rate for the set of blocks is then decreased and all blocks of the set of blocks are marked as active and are available again for data storage operations.

1 zeigt ein beispielhaftes Flash-Speichersystem 100, das ein System zur Bereitstellung von adaptiver Abnutzungs-Nivellierung implementieren kann, gemäß einer oder mehreren Implementierungen. Es müssen jedoch nicht alle abgebildeten Komponenten erforderlich sein, und eine oder mehrere Implementierungen können zusätzliche Komponenten umfassen, die in der Figur nicht gezeigt sind. Es können Abwandlungen der Anordnung und Art der Komponenten vorgenommen werden, ohne vom Gedanken oder Schutzumfang der Ansprüche abzuweichen, so wie sie hier dargelegt werden. Es können zusätzliche Komponenten, andere Komponenten oder weniger Komponenten bereitgestellt werden. 1 shows an exemplary flash memory system 100 , which may implement a system for providing adaptive wear leveling, according to one or more implementations. However, not all imaged components may be required, and one or more implementations may include additional components not shown in the figure. Modifications of the arrangement and nature of the components may be made without departing from the spirit or scope of the claims as set forth herein. Additional components, other components, or fewer components may be provided.

Das System 100 umfasst eine Flash-Speichervorrichtung 110 und eine Host-Vorrichtung 130. Die Flash-Speichervorrichtung 110 umfasst eine oder mehrere Flash-Speicherschaltungen 112A–N, eine Steuerung 114, einen Direktzugriffsspeicher (RAM) 122 und eine Schnittstelle 124. Die Steuerung 114 umfasst einen oder mehrere Decodierer 116, wie etwa Fehlerkorrekturcode- bzw. ECC-Decodierer, und einen oder mehrere Codierer 118, wie etwa ECC-Codierer. Der eine oder die mehreren Decodierer 116 und/oder der eine oder die mehreren Codierer 118 können eine oder mehrere dedizierte Schaltungen der Steuerung 114 sein und/oder können über Firmware implementiert werden, die auf der Steuerung 114 läuft. The system 100 includes a flash memory device 110 and a host device 130 , The flash memory device 110 includes one or more flash memory circuits 112A -N, a controller 114 , a random access memory (RAM) 122 and an interface 124 , The control 114 includes one or more decoders 116 , such as error correction code (ECC) decoder, and one or more encoders 118 , such as ECC encoders. The one or more decoders 116 and / or the one or more encoders 118 can control one or more dedicated circuits 114 be and / or can be implemented via firmware that runs on the controller 114 running.

Die Schnittstelle 124 der Flash-Speichervorrichtung 110 koppelt die Flash-Speichervorrichtung 110 mit der Host-Vorrichtung 130. Die Schnittstelle 124 kann eine verdrahtete Schnittstelle sein, wie etwa eine PCMCIA-Schnittstelle (Personal Computer Memory Card International Association), eine SATA-Schnittstelle (Serial AT Attachment), eine USB-Schnittstelle (Universal Serial Bus) oder im Allgemeinen eine beliebige verdrahtete Schnittstelle. Als Alternative oder zusätzlich kann die Schnittstelle 124 eine drahtlose Schnittstelle sein, wie etwa eine drahtlose SATA-, Bluetooth- oder im Allgemeinen eine beliebige drahtlose Schnittstelle. the interface 124 the flash memory device 110 couples the flash memory device 110 with the host device 130 , the interface 124 may be a wired interface, such as a PCMCIA (Personal Computer Memory Card International Association) interface, a Serial AT Attachment (SATA) interface, a Universal Serial Bus (USB) interface, or generally any wired interface. As an alternative or in addition, the interface 124 a wireless interface, such as a wireless SATA, Bluetooth, or generally any wireless interface.

Die Steuerung 114 ist betreibbar zum Lesen von Daten aus den Flash-Speicherschaltungen 112A–N und zum Schreiben von Daten in diese. Zum Beispiel empfängt die Steuerung 114 Daten, wie etwa einen Stream von Daten, über die Schnittstelle 124 von der Host-Vorrichtung 130, wobei die Daten dann in eine oder mehrere der Flash-Speicherschaltungen 112A–N geschrieben werden. Die Flash-Speicherschaltungen 112A–N können jeweils einen oder mehrere physische Blöcke, wie etwa NAND-Blöcke und/oder NOR-Blöcke, umfassen. Die physischen Blöcke können jeweils eine oder mehrere physische Seiten umfassen. Die Steuerung 114 kann den RAM 122 benutzen, um beim Lesen/Schreiben von Daten zu/von den Flash-Speicherschaltungen 112A–N zu helfen. Zum Beispiel kann der RAM 122 als Puffer zur Ratensteuerung oder anderweitig zum Speichern von Informationen verwendet werden (z.B. variabler, physischer Blockstatus, Tabellen der Abbildung von logischen auf physische Adressen, Standzeit-/Retentionsdaten, Einstellungen usw.), die die Steuerung 114 zum Lesen/Schreiben von Daten zu/von den Flash-Speicherschaltungen 112A–N benutzt. Da der RAM 122 flüchtiger Speicher sein kann, kann die Steuerung 114 Informationen permanent in einer oder mehreren der Flash-Speicherschaltungen 112A–N speichern. Wenn die Flash-Speichervorrichtung 110 heraufgefahren wird, kann die Steuerung 114 die Informationen aus der einen oder den mehreren Flash-Speicherschaltungen 112A–N abrufen und die Informationen im RAM 122 speichern. The control 114 is operable to read data from the flash memory circuits 112A -N and to write data into it. For example, the controller receives 114 Data, such as a stream of data, over the interface 124 from the host device 130 wherein the data is then stored in one or more of the flash memory circuits 112A -N be written. The flash memory circuits 112A -N may each comprise one or more physical blocks, such as NAND blocks and / or NOR blocks. The physical blocks may each include one or more physical pages. The control 114 can the RAM 122 to read / write data to / from the flash memory circuits 112A -N to help. For example, the RAM 122 may be used as a rate control buffer or otherwise for storing information (eg, variable, physical block status, logical-to-physical address mapping tables, lifetime / retention data, settings, etc.) that control 114 for reading / writing data to / from the flash memory circuits 112A -N used. Because of the RAM 122 can be volatile memory, the controller 114 Information permanently in one or more of the flash memory circuits 112A Save -N. When the flash memory device 110 can be ramped up, the controller 114 the information from the one or more flash memory circuits 112A -N and retrieve the information in RAM 122 to save.

Die Steuerung 114 kann einen oder mehrere Algorithmen oder Techniken in Verbindung mit dem Lesen und/oder Schreiben von Daten in die Flash-Speicherschaltungen 112A–N implementieren, wie etwa Sicherheitstechniken (z.B. Verschlüsselung), Fehlerkorrekturcodierungstechniken (z.B. LDPC), Komprimierungstechniken, Redundanztechniken (z.B. Techniken des redundanten Arrays unabhängiger Datenträger (RAID)) usw. Zum Beispiel kann die Steuerung 114 Redundanztechniken verwenden, indem logische Mengen von physischen Blöcken über mehrere Flash-Speicherschaltungen 112A–N hinweg erzeugt werden, die als Stripes, Superblöcke oder Mengen von Blöcken bezeichnet werden können. Die Steuerung 114 kann Daten als eine einzelne Einheit in eine gegebene Menge von Blöcken schreiben. Auf diese Weise werden die Daten über mehrere der Flash-Speicherschaltungen 112A–B verteilt und können deshalb wiederherstellbar sein, wenn eine oder mehrere der Flash-Speicherschaltungen ausfallen. Beispielhafte logische Gruppierungen von physischen Blöcken der Flash-Speicherschaltungen 112A–N werden später mit Bezug auf 2 weiter besprochen. The control 114 may include one or more algorithms or techniques associated with reading and / or writing data to the flash memory circuits 112A -N, such as security techniques (eg, encryption), error correction coding techniques (eg, LDPC), compression techniques, redundancy techniques (eg, redundant independent array (RAID) techniques), etc. For example, the controller may 114 Use redundancy techniques by placing logical sets of physical blocks across multiple flash memory circuits 112A -N, which can be referred to as stripes, super blocks, or sets of blocks. The control 114 can write data as a single unit in a given set of blocks. In this way, the data is shared across several of the flash memory circuits 112A -B and therefore may be recoverable if one or more of the flash memory circuits fails. Exemplary logical groupings of physical blocks of the flash memory circuits 112A -N will be related later 2 discussed further.

Da sich die Integrität der Flash-Speicherschaltungen 112A–N bei Gebrauch mit der Zeit verschlechtert, um dadurch die dem Datenlesen aus den Flash-Speicherschaltungen 112A–N zugeordnete rohe Bitfehlerrate (RBER) zu vergrößern, kann die Coderate, wie etwa eine ECC-Coderate oder eine beliebige andere Coderate, die der Codierer 118 zum Codieren jedes der Datenposten verwendet, abhängig von der Integrität der Menge von Blöcken, in die die codierten Datenposten geschrieben werden, unterschiedlich sein. Zum Beispiel können die Flash-Speicherschaltungen 112A–N dafür ausgelegt sein, zuverlässig eine Maximalzahl von Datentransferoperationen, z.B. Zyklen von Programmierung/Löschung (P/E) und/oder Lese-/Schreiboperationen, auszuführen, und die Integrität der Flash-Speicherschaltungen 112A–N kann sich verschlechtern, wenn der Zykluszählwert zunimmt und/oder sich die Flash-Speicherschaltungen 112A–N der Maximalzahl von Lese- und/oder Schreiboperationen nähern oder diese überschreiten. Um diese Verschlechterung mit der Zeit/Gebrauch zu berücksichtigen, benutzt die Steuerung 114 Fehlerkorrekturcodierung mit variabler Coderate, wobei die durch den Codierer 118 verwendete Coderate abnimmt, wenn sich die Integrität der Flash-Speicherschaltungen 112A–N verschlechtert, um dadurch den Daten zusätzlichen Schutz zu gewähren. As the integrity of the flash memory circuits 112A -N deteriorates with use over time, thereby reducing the data read from the flash memory circuits 112A For example, to increase the raw bit error rate (RBER) associated with -N, the code rate, such as an ECC code rate or any other code rate, may be used by the encoder 118 used to encode each of the data items, depending on the integrity of the set of blocks into which the encoded data items are written. For example, the flash memory circuits 112A -N be designed to reliably handle a maximum number of data transfer operations, eg programming / erasing (P / E) cycles and / or read / write operations, and the integrity of the flash memory circuits 112A -N may degrade as the cycle count increases and / or the flash memory circuits increase 112A -N approach or exceed the maximum number of read and / or write operations. To account for this degradation with time / use, the controller uses 114 Error correction coding with variable code rate, wherein the by the encoder 118 used when the integrity of the flash memory circuits 112A -N deteriorates, thereby providing the data with additional protection.

Um die richtige Coderate zur Verwendung zum Schreiben von Daten in eine gegebene Menge von Blöcken zu bestimmen, kann die Steuerung 114 die Integrität der Blöcke der Menge von Blöcken der Flash-Speicherschaltungen 112A–N überwachen. Das Überwachen kann z.B. auf der RBER basieren, die dem Datenlesen aus den Flash-Speicherschaltungen 112A–N zugeordnet ist. Wenn die Steuerung 114 bestimmt, dass sich die Integrität der Blöcke einer Menge von Blöcken der Flash-Speicherschaltungen 112A–N bis unter einen Schwellenbetrag verschlechtert hat, kann die Steuerung 114 die durch den Codierer 118 zum Durchführen der Fehlerkorrekturcodierung für die Menge von Blöcken verwendete Coderate ändern (z.B. verringern). Das Ändern der Coderate kann als Coderatenverschiebung bezeichnet werden. To determine the correct code rate for use in writing data into a given set of blocks, the controller may 114 the integrity of the blocks of the set of blocks of the flash memory circuits 112A -N monitor. The monitoring may be based, for example, on the RBER, which is the data read from the flash memory circuits 112A -N is assigned. If the controller 114 determines that the integrity of the blocks of a set of blocks of the flash memory circuits 112A -N has deteriorated to below a threshold amount, the controller can 114 through the encoder 118 change (eg decrease) the code rate used to perform error correction coding on the set of blocks. Changing the code rate can be called a code rate shift.

Da jedoch jede Menge von Blöcken Blöcke aus verschiedenen Flash-Speicherschaltungen 112A–N umfasst, kann sich jeder der Blöcke jeder Menge von Blöcken mit verschiedenen Raten verschlechtern. Wenn die Qualitätsmetrik eines Blocks einer gegebenen Menge von Blöcken unter den mindesten akzeptablen Qualitätswert fällt, deaktiviert die Steuerung 114 somit vorübergehend den Block, bis eine bestimmte Anzahl der Blöcke der Menge von Blöcken deaktiviert wurde. Zu diesem Zeitpunkt verringert die Steuerung 114 die Coderate für die gesamte Menge von Blöcken und reaktiviert alle Blöcke der Menge von Blöcken. Ein beispielhafter Prozess zur adaptiven Abnutzungs-Nivellierung unter Verwendung von Coderatenverschiebung wird später mit Bezug auf 3 weiter besprochen. Zu Erläuterungszwecken werden Coderaten hier allgemein erwähnt; Coderaten können sich jedoch auf ECC-Coderaten oder allgemein beliebige Coderaten beziehen. However, since lots of blocks blocks from different flash memory circuits 112A -N, each of the blocks of any set of blocks at different rates may degrade. If the quality metric of a block of a given set of blocks falls below the least acceptable quality value, the controller disables 114 thus temporarily blocking the block until a certain number of blocks of the set of blocks has been deactivated. At this time, the controller decreases 114 the code rate for the entire set of blocks and reactivates all blocks of the set of blocks. An exemplary adaptive wear leveling process using code rate shifting will be described later with reference to FIG 3 discussed further. For explanatory purposes, code rates are generally mentioned here; However, code rates may refer to ECC code rates or generally any code rate.

Die Steuerung 114 kann auch z.B. beim Herauffahren schnell zahlreiche Zyklen von Programmierung/Löschung (P/E) an einem einzelnen Block von jeder der Flash-Speicherschaltungen 112A–N ausführen. Die Steuerung kann eine Qualitätsmetrik des Blocks (z.B. RBER, Fehlerzählwert, Zeit zum Programmieren) überwachen, um empirisch zu bestimmen, wieviele Zyklen durchgeführt werden, bevor die Qualitätsmetrik unter einen mindesten akzeptablen Qualitätswert fällt. Die Steuerung 114 kann z.B. im RAM 122 die Anzahl von für den Block durchgeführten Zyklen als den erwarteten Zykluszählwert für alle Blöcke der den Block enthaltenden Flash-Speicherschaltung speichern. Die Steuerung 114 kann dann je nach Notwendigkeit vorübergehend Blöcke deaktivieren, um sicherzustellen, dass alle Blöcke einer gegebenen Menge von Blöcken das erwartete Lebensende im Wesentlichen zur selben Zeit erreichen. Bei einer oder mehreren Implementierungen kann sich der erwartete Zykluszählwert somit zum Beispiel auf einen Lebensende-Zykluszählwert beziehen. Ein beispielhafter Prozess zur adaptiven Abnutzungs-Nivellierung unter Verwendung empirisch bestimmter erwarteter Zykluszählwerte wird später mit Bezug auf 4 weiter besprochen. The control 114 For example, at startup, too, can quickly cycle numerous programming / erasing (P / E) cycles on a single block of each of the flash memory circuits 112A -N execute. The controller may monitor a quality metric of the block (eg, RBER, error count, time to program) to empirically determine how many cycles are performed before the quality metric falls below a least acceptable quality value. The control 114 can eg in RAM 122 store the number of cycles performed for the block as the expected cycle count for all blocks of the flash memory circuit containing the block. The control 114 can then temporarily disable blocks as necessary to ensure that all blocks of a given set of blocks reach the expected end of life at substantially the same time. Thus, in one or more implementations, the expected cycle count may refer to, for example, an end-of-life cycle count. An exemplary adaptive wear leveling process using empirically determined expected cycle counts will be described later with reference to FIG 4 discussed further.

Bei einer oder mehreren Implementierungen können die Steuerung 114, der Decodierer 116, der Codierer 118 und/oder die Schnittstelle 124 und/oder ein oder mehrere Teile davon in Software (z.B. Firmware, Subroutinen und/oder Code) implementiert werden, können in Hardware (z.B. einer ASIC (anwendungsspezifischen integrierten Schaltung), einem FPGA (Field Programmable Gate Array), einer PLD (programmierbaren Logikvorrichtung), einer Steuerung, einem Automaten, Gatterlogik, diskreten Hardwarekomponenten und/oder beliebigen anderen geeigneten Vorrichtungen) implementiert werden und/oder eine Kombination von beidem. In one or more implementations, the controller may 114 , the decoder 116 , the encoder 118 and / or the interface 124 and / or one or more portions thereof may be implemented in software (eg, firmware, subroutines, and / or code), may be implemented in hardware (eg, ASIC (Application Specific Integrated Circuit), FPGA (Field Programmable Gate Array), PLD (Programmable Logic Device) ), a controller, a state machine, gate logic, discrete hardware components, and / or any other suitable devices), and / or a combination of both.

2 zeigt beispielhafte logische Gruppierungen physischer Blöcke von Flash-Speicherschaltungen 112A–N in einer beispielhaften Flash-Speichervorrichtung 110 gemäß einer oder mehreren Implementierungen. Es müssen jedoch nicht alle abgebildeten Komponenten erforderlich sein, und eine oder mehrere Implementierungen können zusätzliche Komponenten umfassen, die in der Figur nicht gezeigt sind. Es können Abwandlungen der Anordnung und Art der Komponenten vorgenommen werden, ohne vom Gedanken oder Schutzumfang der hier dargelegten Ansprüche abzuweichen. Es können zusätzliche Komponenten, andere Komponenten oder weniger Komponenten vorgesehen werden. 2 shows exemplary logical groupings of physical blocks of flash memory circuits 112A In an exemplary flash memory device 110 according to one or more implementations. However, not all imaged components may be required, and one or more implementations may include additional components not shown in the figure. Modifications of the arrangement and nature of the components may be made without departing from the spirit or scope of the claims set forth herein. Additional components, other components or fewer components may be provided.

Die beispielhafte Flash-Speichervorrichtung 110 umfasst die Schnittstelle 124, die Steuerung 114 und eine oder mehrere Flash-Speicherschaltungen 112A–N. Die Flash-Speicherschaltungen 112A–N umfassen jeweils einen oder mehrere physische Blöcke 202A–P von Flash-Speicher, die auch als Blöcke 202A–P bezeichnet werden können. Die Flash-Speicherschaltung 112A umfasst die Blöcke 202A–D, die Flash-Speicherschaltung 112B umfasst die Blöcke 202E–H, die Flash-Speicherschaltung 112C umfasst die Blöcke 202I–L und die Flash-Speicherschaltung 112N umfasst die Blöcke 202M–P. The exemplary flash memory device 110 includes the interface 124 , the control 114 and one or more flash memory circuits 112A -N. The flash memory circuits 112A -N each include one or more physical blocks 202A -P of flash memory, also called blocks 202A -P can be designated. The flash memory circuit 112A includes the blocks 202A -D, the flash memory circuit 112B includes the blocks 202E -H, the flash memory circuit 112C includes the blocks 202i -L and the flash memory circuit 112N includes the blocks 202M -P.

Wie in 2 gezeigt, gruppiert die Steuerung 114 die Blöcke 202A–P der Flash-Speicherschaltungen 112A–N logisch in logische Mengen von Blöcken 210A–N, wobei jede der Mengen von Blöcken 210A–N mindestens einen Block aus jeder der Flash-Speicherschaltungen 112A–N umfasst. Die Steuerung 114 kann jede der Mengen von Blöcken 210A–N als individuelle RAID-Stripes mit Paritäts-/ECC-Daten benutzen, um Datenwiederherstellung zu erlauben, wenn ein oder mehrere Blöcke 202A–P in den individuellen Mengen von Blöcken 210A–N kaputtgehen. Auf diese Weise können in die Flash-Speicherschaltungen 112A–N geschriebene Daten immernoch wiederhergestellt werden, wenn eine oder mehrere der Flash-Speicherschaltungen 112A–N und/oder ein oder mehrere der Blöcke 202A–P darin ausfallen. Jede der Mengen von Blöcken 210A–N wird durch die Steuerung 114 als eine logische Einheit programmiert und gelöscht. Bei einer oder mehreren Implementierungen können die Mengen von Blöcken 210A–N als Stripes, Superblöcke, logische Einheiten usw. bezeichnet werden. Jeder der Menge von Blöcken 210A–N kann einer anderen Coderate zugeordnet werden. Die Menge von Blöcken 210A–N kann als Ganzes anfänglich derselben Coderate zugeordnet werden; die der Menge von Blöcken 210A–N zugeordneten Coderaten können sich jedoch mit der Zeit ändern und deshalb unterschiedlich sein. As in 2 shown, the controller groups 114 the blocks 202A -P of the flash memory circuits 112A -N logical in logical sets of blocks 210A -N, where each of the sets of blocks 210A -N at least one block from each of the flash memory circuits 112A -N includes. The control 114 can any of the sets of blocks 210A Use -N as individual RAID stripes with parity / ECC data to allow data recovery if one or more blocks 202A -P in the individual sets of blocks 210A -N break. In this way, in the flash memory circuits 112A -N data are still restored when one or more of the flash memory circuits 112A -N and / or one or more of the blocks 202A -P fail in it. Each of the sets of blocks 210A -N will be through the controller 114 programmed and deleted as a logical unit. In one or more implementations, the sets of blocks 210A -N are called stripes, super blocks, logical units, and so on. Each of the set of blocks 210A -N can be assigned to a different code rate. The amount of blocks 210A -N can be initially assigned to the same code rate as a whole; that of the set of blocks 210A However, code clocks may change over time and therefore be different.

Wie in 2 gezeigt, umfasst die Menge von Blöcken 210A den Block 202A der Flash-Speicherschaltung 112A, den Block 202E der Flash-Speicherschaltung 112B, den Block 202I der Flash-Speicherschaltung 112C und den Block 202M der Flash-Speicherschaltung 112N. Die Menge von Blöcken 210B umfasst den Block 202B der Flash-Speicherschaltung 112A, den Block 202F der Flash-Speicherschaltung 112B, den Block 202J der Flash-Speicherschaltung 112C und den Block 202N der Flash-Speicherschaltung 112N. Die Menge von Blöcken 210C umfasst den Block 202C der Flash-Speicherschaltung 112A, den Block 202G der Flash-Speicherschaltung 112B, den Block 202K der Flash-Speicherschaltung 112C und den Block 202O der Flash-Speicherschaltung 112N. Die Menge von Blöcken 210N umfasst den Block 202D der Flash-Speicherschaltung 112A, den Block 202H der Flash-Speicherschaltung 112B, den Block 202L der Flash-Speicherschaltung 112C und den Block 202P der Flash-Speicherschaltung 112N. As in 2 shown, includes the set of blocks 210A the block 202A the flash memory circuit 112A , the block 202E the flash memory circuit 112B , the block 202i the flash memory circuit 112C and the block 202M the flash memory circuit 112N , The amount of blocks 210B includes the block 202B the flash memory circuit 112A , the block 202F the flash memory circuit 112B , the block 202J the flash memory circuit 112C and the block 202N the flash memory circuit 112N , The amount of blocks 210C includes the block 202C the flash memory circuit 112A , the block 202G the flash memory circuit 112B , the block 202K the flash memory circuit 112C and the block 202o the flash memory circuit 112N , The amount of blocks 210N includes the block 202D the flash memory circuit 112A , the block 202H the flash memory circuit 112B , the block 202L the flash memory circuit 112C and the block 202P the flash memory circuit 112N ,

Die Blöcke 202A–P können jeweils einem Status zugeordnet sein, der zum Beispiel durch die Steuerung 114 im RAM 122 gespeichert werden kann. Der Status der Blöcke kann zum Beispiel aktive Blöcke, zurückgezogene Blöcke, MBBs (Manufacturer Bad Blocks), GBBs (Grown Bad Blocks) oder vorübergehend inaktive Blöcke, die auch als OVBs (On Vacation Blocks) bezeichnet werden können, umfassen. Blöcke, die aktiv sind, können für Datenspeicherungsoperationen (z.B. Lesen/Schreiben) verfügbar sein; Blöcke, die zurückgezogen sind, MBBs, GBBs oder vorübergehend inaktiv sind, können jedoch nicht für Datenspeicherungsoperationen verfügbar sein. In 2 sind die Blöcke 202B, G, H, N, die schraffiert sind, Blöcke, die vorübergehend inaktiv sind und deshalb nicht für Datenspeicherungsoperationen verfügbar sind. The blocks 202A -P can each be assigned to a status, for example, by the controller 114 in the RAM 122 can be stored. The status of the blocks may include, for example, active blocks, withdrawn blocks, Manufacturer Bad Blocks, GroB Bad Blocks, or temporarily inactive blocks, which may also be referred to as On Vacation Blocks (OVBs). Blocks that are active may be available for data storage operations (eg, read / write); However, blocks that are retired, MBBs, GBBs, or temporarily inactive may not be available for data storage operations. In 2 are the blocks 202B , G, H, N, which are hatched, blocks that are temporarily inactive and therefore not available for data storage operations.

Bei einer oder mehreren Implementierungen können die Steuerung 114 und/oder die Schnittstelle 124 und/oder ein oder mehrere Teile davon in Software (z.B. Firmware, Subroutinen und/oder Code) implementiert werden, können in Hardware (z.B. einer ASIC (anwendungsspezifischen integrierten Schaltung), einem FPGA (Field Programmable Gate Array), einer PLD (programmierbaren Logikvorrichtung), einer Steuerung, einem Automaten, Gatterlogik, diskreten Hardwarekomponenten und/oder beliebigen anderen geeigneten Vorrichtungen) implementiert werden und/oder eine Kombination von beidem. In one or more implementations, the controller may 114 and / or the interface 124 and / or one or more portions thereof may be implemented in software (eg, firmware, subroutines, and / or code), may be implemented in hardware (eg, ASIC (Application Specific Integrated Circuit), FPGA (Field Programmable Gate Array), PLD (Programmable Logic Device) ), a controller, a state machine, gate logic, discrete hardware components, and / or any other suitable devices), and / or a combination of both.

3 zeigt ein Flussdiagramm eines beispielhaften Prozesses 300 der adaptiven Abnutzungs-Nivellierung unter Verwendung von Coderatenverschiebung gemäß einer oder mehreren Implementierungen. Zu Erläuterungszwecken wird der beispielhafte Prozess 300 hier mit Bezug auf die Steuerung 114 von 1 und 2 beschrieben; der beispielhafte Prozess 300 ist jedoch nicht auf die Steuerung 114 von 1 und 2 beschränkt, und ein oder mehrere Blöcke des beispielhaften Prozesses 300 können durch eine oder mehrere andere Komponenten der Steuerung 114 ausgeführt werden. Ferner werden zu Erläuterungszwecken die Blöcke des beispielhaften Prozesses 300 hier als in Serie oder linear auftretend beschrieben. Es können jedoch mehrere Blöcke des beispielhaften Prozesses 300 parallel auftreten. Außerdem müssen die Blöcke des beispielhaften Prozesses 300 nicht in der gezeigten Reihenfolge ausgeführt werden und/oder einer oder mehrere der Blöcke des beispielhaften Prozesses 300 müssen nicht ausgeführt werden. 3 shows a flowchart of an example process 300 adaptive wear leveling using code rate shifting according to one or more implementations. For explanatory purposes, the exemplary process 300 here with respect to the controller 114 from 1 and 2 described; the exemplary process 300 but not on the controller 114 from 1 and 2 limited, and one or more blocks of the exemplary process 300 can be controlled by one or more other components of the controller 114 be executed. Further, for purposes of explanation, the blocks of the example process 300 described here as occurring in series or linear. However, there may be multiple blocks of the example process 300 occur in parallel. In addition, the blocks of the example process must 300 not performed in the order shown and / or one or more of the blocks of the example process 300 do not have to be executed.

Vor dem Ausführen jeglicher Datenspeicherungsoperationen an den Flash-Speicherschaltungen 112A–N ordnet die Steuerung 114 die Blöcke 202A–P der Flash-Speicherschaltungen 112A–N in Mengen von Blöcken 210A–N an, wobei jede Menge von Blöcken 210A–N einen der Blöcke 202A–P aus jeder der Flash-Speicherschaltungen 112A–N umfasst und jede der Mengen von Blöcken 210A–N einer Coderate zugeordnet ist (302). Zum Beispiel kann die Steuerung 114 die Menge von Blöcken 210A–N beim Herauffahren anordnen und/oder die Steuerung 114 kann mit der Anordnung der Menge von Blöcken 210A–N vorkonfiguriert werden. Bei einer oder mehreren Implementierungen kann die Steuerung 114 die Blöcke an gleichen physischen Blockadressen in jeder der Flash-Speicherschaltungen 112A–N zur Bildung jeder der Mengen von Blöcken 210A–N benutzen. Die Coderate kann anfänglich für jede der Mengen von Blöcken 210A–N dieselbe sein, kann sich aber im Gebrauch mit der Zeit ändern. Die Blöcke 202A–P der Flash-Speicherschaltungen 112A–N können alle anfänglich als aktiv markiert werden, mit der Ausnahme etwaiger Manufacturer Bad Blocks. Before performing any data storage operations on the flash memory circuits 112A -N maps the controller 114 the blocks 202A -P of the flash memory circuits 112A -N in amounts of blocks 210A -N, with lots of blocks 210A -N one of the blocks 202A -P off each of the flash memory circuits 112A -N includes and each of the sets of blocks 210A -N is assigned to a code rate ( 302 ). For example, the controller 114 the amount of blocks 210A -N at startup and / or the controller 114 can with the arrangement of the amount of blocks 210A -N are preconfigured. In one or more implementations, the controller may 114 the blocks at the same physical block addresses in each of the flash memory circuits 112A -N to form each of the sets of blocks 210A Use -N. The code rate may initially be for each of the sets of blocks 210A -N may be the same, but may change over time in use. The blocks 202A -P of the flash memory circuits 112A -N can all initially be marked as active, with the exception of any Manufacturer Bad Blocks.

Die Steuerung 114 benutzt die Mengen von Blöcken 210A–N zum Ausführen von Datenspeicherungsoperationen, die durch die Host-Vorrichtung 130 angegeben werden (304). Die Datenspeicherungsoperationen können eine oder mehrere Lese- und/oder Schreiboperationen an einer oder mehreren der Mengen von Blöcken 210A–N umfassen und die Datenspeicherungsoperationen können auf die Blöcke 202A–P der Mengen von Blöcken 210A–N, die als aktiv markiert sind, begrenzt werden. Die Datenspeicherungsoperationen können auch zu einer oder mehreren Hintergrundoperationen, wie etwa Müllabfuhr, führen, die einen oder mehrere Zyklen von Programmierung/Löschung im Hinblick auf eine oder mehrere der Mengen von Blöcken 210A–N umfassen können. The control 114 uses the amounts of blocks 210A -N for performing data storage operations by the host device 130 be specified ( 304 ). The data storage operations may include one or more read and / or write operations on one or more of the sets of blocks 210A Include -N and the data storage operations can access the blocks 202A -P of the quantities of blocks 210A -N that are marked as active. The data storage operations may also result in one or more background operations, such as garbage collection, involving one or more cycles of programming / deletion with respect to one or more of the sets of blocks 210A -N can include.

Die Steuerung 114 überwacht eine Qualitätsmetrik jedes der Blöcke 202A–P jeder der Mengen von Blöcken 210A–N (306). Die Qualitätsmetrik kann zum Beispiel RBER, Fehlerzählwert, Zeit zum Programmieren usw. umfassen. Die Steuerung 114 bestimmt, ob die Qualitätsmetrik für einen Block, wie etwa den Block 202B, einer der Mengen von Blöcken, wie etwa der Menge von Blöcken 210B, unter den Mindestqualitätswert fällt (308). Der Mindestqualitätswert kann zum Beispiel die maximale RBER sein, die aufrechterhalten werden kann, während vorbestimmte Leistungsfähigkeitsbeschränkungen, wie etwa Lese- und/oder Schreibzeiten, eingehalten werden. The control 114 monitors a quality metric of each of the blocks 202A -P each of the sets of blocks 210A -N ( 306 ). The quality metric may include, for example, RBER, error count, time to program, and so on. The control 114 determines if the quality metric for a block, such as the block 202B , one of the sets of blocks, such as the amount of blocks 210B , below the minimum quality value falls ( 308 ). For example, the minimum quality value may be the maximum RBER that can be maintained while meeting predetermined performance limitations, such as read and / or write times.

Wenn die Steuerung 114 bestimmt, dass die Qualitätsmetrik eines Blocks einer der Mengen von Blöcken, wie etwa des Blocks 202B der Menge von Blöcken 210B, unter den Mindestqualitätswert fällt (308), verlagert die Steuerung 114 alle gültigen Daten in dem Block 202B z.B. in einen anderen aktiven Block (310). Die Steuerung 114 markiert den Block 202B dann als vorübergehend inaktiv (312). Zum Beispiel kann die Steuerung 114 einen Status des Blocks 202B, der im RAM 122 gespeichert wird, ändern, um anzugeben, dass der Block 202B vorübergehend inaktiv und deshalb für Programmierung/Löschung nicht verfügbar ist. If the controller 114 determines that the quality metric of a block is one of the sets of blocks, such as the block 202B the amount of blocks 210B , below the minimum quality value falls ( 308 ), relocates the controller 114 all valid data in the block 202B eg into another active block ( 310 ). The control 114 marks the block 202B then as temporarily inactive ( 312 ). For example, the controller 114 a status of the block 202B in the ram 122 is saved, change to indicate that the block 202B temporarily inactive and therefore not available for programming / deletion.

Dann bestimmt die Steuerung 114, ob die Anzahl verbleibender aktiver Blöcke 202F, J der Menge von Blöcken 210B unter einer Schwelle der Mindestzahl aktiver Blöcke liegt. Die Schwelle kann auf der Coderate basieren, die der Menge von Blöcken 210B zugeordnet ist (314). Zum Beispiel kann die Steuerung 114 eine durch jede der Mengen von Blöcken 210A–N aufrechtzuerhaltende mindestens verfügbare Datenkapazität setzen. Die verfügbare Datenkapazität für eine gegebene Menge von Blöcken kann auf der Basis der Anzahl von Blöcken in der Menge von Blöcken, die gerade aktiv sind, und der Datenkapazität jedes Blocks bei der gegebenen Coderate, die der Menge von Blöcken zugeordnet ist, bestimmt werden. Then the controller determines 114 , whether the number of remaining active blocks 202F , J the amount of blocks 210B is below a threshold of the minimum number of active blocks. The threshold may be based on the code rate, that of the set of blocks 210B assigned ( 314 ). For example, the controller 114 one through each of the sets of blocks 210A -N maintain at least available data capacity. The available data capacity for a given set of blocks may be determined based on the number of blocks in the set of blocks that are currently active and the data capacity of each block at the given code rate associated with the set of blocks.

Wenn die Steuerung 114 bestimmt, dass die Anzahl verbleibender aktiver Blöcke 202F, J der Menge von Blöcken 210B für die Coderate unter der Schwelle der Mindestzahl aktiver Blöcke liegt (314), verringert die Steuerung 114 die der Menge von Blöcken 210B zugeordnete Coderate (320), um die Qualitätsverminderung der vorübergehend inaktiven Blöcke 202B, N der Menge von Blöcken 210B zu kompensieren. Nach dem Verringern der Coderate (320) markiert die Steuerung 114 alle vorübergehend inaktiven Blöcke 202B, N der Menge von Blöcken 210B als aktiv, so dass die Blöcke 202B, N wieder für Datenspeicherungsoperationen verfügbar sind (322). If the controller 114 determines that the number of remaining active blocks 202F , J the amount of blocks 210B for the code rate is below the threshold of the minimum number of active blocks ( 314 ), reduces the control 114 that of the set of blocks 210B assigned code rate ( 320 ) to reduce the quality of temporarily inactive blocks 202B , N the amount of blocks 210B to compensate. After decreasing the code rate ( 320 ) marks the controller 114 all temporarily inactive blocks 202B , N the amount of blocks 210B as active, leaving the blocks 202B , N are available again for data storage operations ( 322 ).

Wenn die Steuerung 114 bestimmt, dass die Anzahl aktiver Blöcke 202F, J in der Menge von Blöcken 210B nicht unter die Schwelle der Mindestzahl aktiver Blöcke fällt (314), bestimmt die Steuerung 114, ob die Gesamtzahl aktiver Blöcke 202A–P über alle Flash-Speicherschaltungen 112A–N hinweg unter die Schwelle der Mindestzahl aktiver Blöcke gefallen ist (316). Wenn zum Beispiel die Anzahl aktiver Blöcke unter eine Schwelle der Mindestzahl aktiver Blöcke fällt, kann die Überprovisionierung der Flash-Speichervorrichtung 110 einen Mindestwert erreichen und deshalb kann es notwendig sein, mehr Blöcke aktiv zu machen. If the controller 114 determines that the number of active blocks 202F , J in the amount of blocks 210B does not fall below the threshold of the minimum number of active blocks ( 314 ), determines the controller 114 whether the total number of active blocks 202A -P over all flash memory circuits 112A -N has fallen below the threshold of the minimum number of active blocks ( 316 ). For example, if the number of active blocks falls below a threshold of the minimum number of active blocks, overprovisioning of the flash memory device may occur 110 reach a minimum value and therefore it may be necessary to make more blocks active.

Wenn die Steuerung 114 bestimmt, dass die Gesamtzahl aktiver Blöcke 202A–P über die Flash-Speicherschaltungen 112A–N hinweg unter die Schwelle der Mindestzahl aktiver Blöcke gefallen ist, sucht die Steuerung 114 nach einer der Mengen von Blöcken 210A–N, wie etwa der Menge von Blöcken 210B, die einen oder mehrere vorübergehend inaktive Blöcke aufweist (318). Zum Beispiel kann die Steuerung 114 nach einer der Mengen von Blöcken 210A–N suchen, die relativ zu den anderen Mengen von Blöcken 210A–N eine höchste Anzahl von vorübergehend inaktiven Blöcken aufweist. Auf die Identifizierung einer Menge von Blöcken 210B hin verringert die Steuerung 114 die Coderate der identifizierten Menge von Blöcken 210B (320), markiert alle vorübergehend inaktiven Blöcke 202B, N der Menge von Blöcken 210B als aktiv (322) und wiederholt den Prozess (318322), bis die Gesamtzahl aktiver Blöcke über alle Flash-Speicherschaltungen 112A–N hinweg die Schwelle der Mindestzahl aktiver Blöcke übersteigt (316). If the controller 114 determines that the total number of active blocks 202A -P via the flash memory circuits 112A -N has fallen below the threshold of the minimum number of active blocks, seeks control 114 according to one of the sets of blocks 210A -N, such as the amount of blocks 210B which has one or more temporarily inactive blocks ( 318 ). For example, the controller 114 according to one of the sets of blocks 210A -N search, relative to the other sets of blocks 210A -N has a highest number of temporarily inactive blocks. On the identification of a lot of blocks 210B down reduces the control 114 the code rate of the identified set of blocks 210B ( 320 ) marks all temporarily inactive blocks 202B , N the amount of blocks 210B as active ( 322 ) and repeats the process ( 318 - 322 ) until the total number of active blocks across all flash memory circuits 112A -N exceeds the threshold of the minimum number of active blocks ( 316 ).

4 zeigt ein Flussdiagramm eines beispielhaften Prozesses 400 der adaptiven Abnutzungs-Nivellierung unter Verwendung empirisch bestimmter erwarteter Zykluszählwerte gemäß einer oder mehreren Implementierungen. Zu Erläuterungszwecken wird der beispielhafte Prozess 400 hier mit Bezug auf die Steuerung 114 von 1 und 2 beschrieben; der beispielhafte Prozess 400 ist jedoch nicht auf die Steuerung 114 von 1 und 2 beschränkt, und ein oder mehrere Blöcke des beispielhaften Prozesses 400 können durch eine oder mehrere andere Komponenten der Steuerung 114 ausgeführt werden. Ferner werden zu Erläuterungszwecken die Blöcke des beispielhaften Prozesses 400 hier als in Serie oder linear auftretend beschrieben. Es können jedoch mehrere Blöcke des beispielhaften Prozesses 400 parallel auftreten. Außerdem müssen die Blöcke des beispielhaften Prozesses 400 nicht in der gezeigten Reihenfolge ausgeführt werden und/oder einer oder mehrere der Blöcke des beispielhaften Prozesses 400 müssen nicht ausgeführt werden. 4 shows a flowchart of an example process 400 adaptive wear leveling using empirically determined expected cycle counts according to one or more implementations. For explanatory purposes, the exemplary process 400 here with respect to the controller 114 from 1 and 2 described; the exemplary process 400 but not on the controller 114 from 1 and 2 limited, and one or more blocks of the exemplary process 400 can be controlled by one or more other components of the controller 114 be executed. Further, for purposes of explanation, the blocks of the example process 400 described here as occurring in series or linear. However, there may be multiple blocks of the example process 400 occur in parallel. In addition, the blocks of the example process must 400 not performed in the order shown and / or one or more of the blocks of the example process 400 do not have to be executed.

Vor dem Ausführen jeglicher Datenspeicherungsoperationen an den Flash-Speicherschaltungen 112A–N wählt die Steuerung 114 die erste Flash-Speicherschaltung 112A der Flash-Speichervorrichtung 110 aus (402). Die Steuerung 114 führt Zyklen der schnellen Programmierung/Löschung (P/E) an einem Block 202A aus der ersten Flash-Speicherschaltung 112A aus, bis eine dem Block 202A zugeordnete Qualitätsmetrik unter einen Mindestqualitätswert fällt (404). Die Qualitätsmetrik kann zum Beispiel RBER, Fehlerzählwert, Zeit zum Programmieren usw. sein. Die Steuerung 114 markiert den Block 202A dann als inaktiv oder zurückgezogen, so dass der Block 202A für Datenspeicherungsoperationen nicht verfügbar sein wird (406). Die Steuerung 114 speichert die Anzahl von P/E-Zyklen, die bewirkt hat, dass die Qualitätsmetrik des Blocks 202A unter den Mindestqualitätswert fällt, als den erwarteten Zykluszählwert der verbleibenden Blöcke 202B–D der Flash-Speicherschaltung 112A (408). Before performing any data storage operations on the flash memory circuits 112A -N selects the controller 114 the first flash memory circuit 112A the flash memory device 110 out ( 402 ). The control 114 performs fast programming / erasure (P / E) cycles on a block 202A from the first flash memory circuit 112A out until one of the block 202A assigned quality metric falls below a minimum quality value ( 404 ). The quality metric may be, for example, RBER, error count, time to program, and so on. The control 114 marks the block 202A then as inactive or withdrawn, leaving the block 202A will not be available for data storage operations ( 406 ). The control 114 stores the number of P / E cycles that has caused the quality metric of the block 202A below the minimum quality value than the expected cycle count of the remaining blocks 202B -D the flash memory circuit 112A ( 408 ).

Die Steuerung 114 bestimmt, ob es jegliche zusätzliche Flash-Speicherschaltungen 112B–N in der Flash-Speichervorrichtung 110 gibt (410). Wenn die Steuerung 114 bestimmt, dass es zusätzliche Flash-Speicherschaltungen 112B-N in der Flash-Speichervorrichtung 110 gibt, wählt die Steuerung 114 die nächste Flash-Speicherschaltung 112B aus (412) und wiederholt den Prozess (404408). Wenn die Steuerung 114 bestimmt, dass es keine weiteren Flash-Speicherschaltungen 112A–N in der Flash-Speichervorrichtung 110 gibt, ordnet die Steuerung 114 die Blöcke 202A–P der Flash-Speicherschaltungen 112A–N in Mengen von Blöcken 210A–N an, wobei jede Menge von Blöcken 210A–N einen Block aus jeder der Flash-Speicherschaltungen 112A–N umfasst (418). The control 114 determines if there are any additional flash memory circuits 112B -N in the flash memory device 110 gives ( 410 ). If the controller 114 determines that there are additional flash memory circuits 112B -N in the flash memory device 110 gives, chooses the controller 114 the next flash memory circuit 112B out ( 412 ) and repeats the process ( 404 - 408 ). If the controller 114 determines that there are no more flash memory circuits 112A -N in the flash memory device 110 gives, arranges the control 114 the blocks 202A -P of the flash memory circuits 112A -N in amounts of blocks 210A -N, with lots of blocks 210A -N one block from each of the flash memory circuits 112A Includes -N ( 418 ).

Die Steuerung 114 benutzt die Mengen von Blöcken 210A–N zum Ausführen von Datenspeicherungsoperationen, die durch die Host-Vorrichtung 130 angegeben werden (420). Die Datenspeicherungsoperationen können eine oder mehrere Lese- und/oder Schreiboperationen an einer oder mehreren der Mengen von Blöcken 210A–N umfassen und die Datenspeicherungsoperationen können auf die Blöcke 202A–P der Mengen von Blöcken 210A–N, die als aktiv markiert sind, begrenzt werden. Die Datenspeicherungsoperationen können auch zu einer oder mehreren Hintergrundoperationen, wie etwa Müllabfuhr, führen, die einen oder mehrere Zyklen von Programmierung/Löschung im Hinblick auf eine oder mehrere der Mengen von Blöcken 210A–N umfassen können. The control 114 uses the amounts of blocks 210A -N for performing data storage operations by the host device 130 be specified ( 420 ). The data storage operations may include one or more read and / or write operations on one or more of the sets of blocks 210A Include -N and the data storage operations can access the blocks 202A -P of the quantities of blocks 210A -N that are marked as active. The data storage operations may also result in one or more background operations, such as garbage collection, involving one or more cycles of programming / deletion with respect to one or more of the sets of blocks 210A -N can include.

Die Steuerung 114 überwacht einen erwarteten verbleibenden Zykluszählwert jedes der Blöcke 202A–P jeder der Mengen von Blöcken 210A–N (422). Der erwartete verbleibende Zykluszählwert jedes der Blöcke 202A–P kann auf der Basis des für jeden der Blöcke 202A–P gespeicherten erwarteten Zykluszählwerts minus dem aktuellen Zykluszählwert (oder der benutzten Anzahl von Zyklen) für jeden der Blöcke 202A–P bestimmt werden. Die Steuerung 114 deaktiviert vorübergehend einen oder mehrere Blöcke 202A–P jeder der Mengen von Blöcken 210A–N, so wie es notwendig ist, um ausgeglichene verbleibende Zykluszählwerte der Blöcke 202A–P jeder der Mengen von Blöcken 210A–N aufrechtzuerhalten, während gleichzeitig auch eine Mindestzahl aktiver Blöcke für jede der Mengen von Blöcken 210A–N aufrechterhalten wird (424). The control 114 monitors an expected remaining cycle count of each of the blocks 202A -P each of the sets of blocks 210A -N ( 422 ). The expected remaining cycle count of each of the blocks 202A -P can be based on the for each of the blocks 202A -P stored expected cycle count minus the current cycle count (or number of cycles used) for each of the blocks 202A -P be determined. The control 114 temporarily disables one or more blocks 202A -P each of the sets of blocks 210A -N, as necessary, to balance the remaining cycle counts of the blocks 202A -P each of the sets of blocks 210A -N while simultaneously maintaining a minimum number of active blocks for each of the sets of blocks 210A -N is maintained ( 424 ).

Wenn zum Beispiel der verbleibende Zykluszählwert des Blocks 202A um einen Schwellenbetrag hinter den erwarteten Zykluszählwert eines anderen der Blöcke 202E, I, M in der Menge von Blöcken 210A fällt, kann der Block 202A auf vorübergehend inaktiv gesetzt werden. Der Block 202A kann vorübergehend inaktiv bleiben, bis die erwarteten verbleibenden Zykluszählwerte von einem oder mehreren der anderen Blöcke 202E, I, M der Menge von Blöcken 210A den erwarteten verbleibenden Zykluszählwert des Blocks 202A einholen (oder innerhalb eines Schwellenbetrags liegen). Zu diesem Zeitpunkt kann der Block 202A als aktiv markiert werden und deshalb wieder für Datenspeicherungsoperationen verfügbar sein. Wenn die Gesamtzahl aktiver Blöcke 202E, I, M für die Menge von Blöcken 210A jedoch unter eine Mindestzahl aktiver Blöcke für die Menge von Blöcken 210A fällt, kann der Block 202A als aktiv markiert werden, gleichgültig, ob die erwarteten verbleibenden Zyklen der anderen Blöcke 202E, I, M den Block 202A einholen. For example, if the remaining cycle count of the block 202A by a threshold amount behind the expected cycle count of another of the blocks 202E , I, M in the amount of blocks 210A falls, the block can 202A be set to temporarily inactive. The block 202A may temporarily remain inactive until the expected remaining cycle counts of one or more of the other blocks 202E , I, M the amount of blocks 210A the expected remaining cycle count of the block 202A (or within a threshold). At this time, the block 202A be marked as active and therefore available again for data storage operations. If the total number of active blocks 202E , I, M for the amount of blocks 210A but below a minimum number of active blocks for the set of blocks 210A falls, the block can 202A be marked as active, regardless of the expected remaining cycles of the other blocks 202E , I, M the block 202A seek.

Die Steuerung 114 bestimmt, ob eine Gesamtzahl aktiver Blöcke 202A–P in der Flash-Speichervorrichtung 110 unter eine Mindestzahl aktiver Blöcke gefallen ist (426). Wenn die Steuerung 114 bestimmt, dass die Gesamtzahl aktiver Blöcke 202A–P in der Flash-Speichervorrichtung 110 unter die Mindestzahl aktiver Blöcke gefallen ist (426), aktiviert die Steuerung 114 einige der vorübergehend inaktiven Blöcke mindestens einiger der Mengen von Blöcken 210A–N, z.B. ungeachtet erwarteter verbleibender Zyklen, um die Gesamtzahl aktiver Blöcke in der Flash-Speichervorrichtung 110 über die Schwelle der Mindestzahl aktiver Blöcke zu vergrößern (428). The control 114 determines if a total number of active blocks 202A -P in the flash memory device 110 under a minimum number of active Blocks has fallen ( 426 ). If the controller 114 determines that the total number of active blocks 202A -P in the flash memory device 110 has fallen below the minimum number of active blocks ( 426 ), activates the controller 114 some of the temporarily inactive blocks of at least some of the sets of blocks 210A -N, for example, regardless of expected remaining cycles, by the total number of active blocks in the flash memory device 110 to increase beyond the threshold of the minimum number of active blocks ( 428 ).

Implementierungen im Schutzumfang der vorliegenden Offenbarung können teilweise oder vollständig unter Verwendung eines greifbaren computerlesbaren Speicherungsmediums (oder mehrerer greifbarer computerlesbarer Speicherungsmedien eines oder mehrerer Typen), das eine oder mehrere Anweisungen codiert, realisiert werden. Das greifbare computerlesbare Speicherungsmedium kann auch von nichttransitorischer Beschaffenheit sein.  Implementations within the scope of the present disclosure may be implemented in part or in full using a tangible computer-readable storage medium (or more tangible computer-readable storage media of one or more types) that encodes one or more instructions. The tangible computer readable storage medium may also be non-transitory in nature.

Das computerlesbare Speicherungsmedium kann ein beliebiges Speicherungsmedium sein, das durch eine Vielzweck- oder Spezialdatenverarbeitungsvorrichtung, darunter jegliche Verarbeitungselektronik und/oder Verarbeitungsschaltkreise mit der Fähigkeit zum Ausführen von Anweisungen, gelesen und beschrieben werden kann oder auf das sie anderweitig zugreifen können. Zum Beispiel und ohne Beschränkung kann das computerlesbare Medium einen beliebigen flüchtigen Halbleiterspeicher umfassen, wie zum Beispiel RAM, DRAM, SRAM, T-RAM, Z-RAM und TTRAM. Das computerlesbare Medium kann auch einen beliebigen nichtflüchtigen Halbleiterspeicher umfassen, wie zum Beispiel ROM, PROM, EPROM, EEPROM, NVRAM, Flash, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, Racetrack-Speicher, FJG und Millipede-Speicher.  The computer readable storage medium may be any storage medium that may be read, written to, or otherwise accessed by a general purpose or specialized computing device, including any processing electronics and / or processing circuitry capable of executing instructions. By way of example and not limitation, the computer-readable medium may include any volatile semiconductor memory such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM. The computer readable medium may also include any nonvolatile semiconductor memory such as ROM, PROM, EPROM, EEPROM, NVRAM, Flash, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, Racetrack Memory, FJG, and Millipede memory.

Ferner kann das computerlesbare Speicherungsmedium einen beliebigen Nicht-Halbleiterspeicher umfassen, wie etwa optische Plattenspeicherung, magnetische Plattenspeicherung, Magnetband, andere magnetische Speichervorrichtungen oder ein beliebiges anderes Medium mit der Fähigkeit zum Speichern einer oder mehrerer Anweisungen. Bei einigen Implementierungen kann das greifbare computerlesbare Speicherungsmedium direkt mit einer Datenverarbeitungsvorrichtung gekoppelt sein, während bei anderen Implementierungen das greifbare computerlesbare Speicherungsmedium z.B. über eine oder mehrere verdrahtete Verbindungen, eine oder mehrere drahtlose Verbindungen oder eine beliebige Kombination davon indirekt mit einer Datenverarbeitungsvorrichtung gekoppelt sein kann.  Further, the computer readable storage medium may include any non-semiconductor memory, such as optical disk storage, magnetic disk storage, magnetic tape, other magnetic storage devices, or any other media capable of storing one or more instructions. In some implementations, the tangible computer readable storage medium may be directly coupled to a data processing device, while in other implementations the tangible computer readable storage medium may be e.g. may be indirectly coupled to a data processing device via one or more wired connections, one or more wireless connections, or any combination thereof.

Anweisungen können direkt ausführbar sein oder können zur Entwicklung von ausführbaren Anweisungen verwendet werden. Zum Beispiel können Anweisungen als ausführbarer oder nichtausführbarer Maschinencode oder als Anweisungen in einer hohen Sprache, die kompiliert werden kann, um ausführbaren oder nichtausführbaren Maschinencode zu produzieren, realisiert werden. Ferner können Anweisungen auch als Daten realisiert werden oder können solche umfassen. Computerausführbare Anweisungen können auch in einem beliebigen Format organisiert werden, darunter Routinen, Subroutinen, Programme, Datenstrukturen, Objekte, Module, Anwendungen, Applets, Funktionen usw. Wie für Fachleute erkennbar ist, können Einzelheiten, darunter, aber ohne Beschränkung darauf, die Anzahl, Struktur, Sequenz und Organisation von Anweisungen, sehr unterschiedlich sein, ohne die zugrundeliegende Logik, Funktion, Verarbeitung und Ausgabe zu verändern.  Instructions can be directly executable or can be used to develop executable statements. For example, instructions may be implemented as executable or non-executable machine code or as high-level instructions that may be compiled to produce executable or non-executable machine code. Further, instructions may also be implemented as data or may include such. Computer-executable instructions may also be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As will be appreciated by those skilled in the art, details including, but not limited to, the number, Structure, sequence and organization of instructions, be very different, without changing the underlying logic, function, processing and output.

Obwohl sich die obige Besprechung hauptsächlich auf Mikroprozessor oder Mehrkern-Prozessoren bezieht, die Software ausführen, werden eine oder mehrere Implementierungen durch eine oder mehrere integrierte Schaltungen ausgeführt, wie etwa ASICs (anwendungsspezifische integrierte Schaltungen) oder FPGAs (Field Programmable Gate Arrays). Bei einer oder mehreren Implementierungen führen solche integrierten Schaltungen Anweisungen aus, die auf der Schaltung selbst gespeichert sind.  Although the above discussion relates primarily to microprocessor or multi-core processors executing software, one or more implementations are performed by one or more integrated circuits, such as ASICs (Application Specific Integrated Circuits) or FPGAs (Field Programmable Gate Arrays). In one or more implementations, such integrated circuits execute instructions stored on the circuit itself.

Für Fachleute ist erkennbar, dass die verschiedenen hier beschriebenen beispielhaften Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen als elektronische Hardware, Computersoftware oder Kombinationen von beidem implementiert werden können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, wurden oben verschiedene beispielhafte Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen allgemein im Hinblick auf ihre Funktionalität beschrieben. Ob solche Funktionalität als Hardware oder Software implementiert wird, richtet sich nach der konkreten Anwendung und Entwurfsbeschränkungen, die dem Gesamtsystem auferlegt werden. Fachleute können die beschriebene Funktionalität für jede konkrete Anwendung auf unterschiedliche Weisen implementieren. Verschiedene Komponenten und Blöcke können anders angeordnet werden (z.B. in einer anderen Reihenfolge angeordnet oder auf eine andere Weise aufgeteilt werden), ohne jeweils vom Schutzumfang der vorliegenden Technologie abzuweichen.  It will be appreciated by those skilled in the art that the various example blocks, modules, elements, components, methods, and algorithms described herein may be implemented as electronic hardware, computer software, or combinations of both. To illustrate this interchangeability of hardware and software, various exemplary blocks, modules, elements, components, methods, and algorithms have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the particular application and design constraints imposed on the overall system. Those skilled in the art can implement the described functionality in different ways for each particular application. Various components and blocks may be rearranged (e.g., arranged in a different order or otherwise partitioned) without departing from the scope of the present technology.

Es versteht sich, dass jede spezifische Ordnung oder Hierarchie von Blöcken in den offenbarten Prozessen eine Veranschaulichung von beispielhaften Ansätzen ist. Auf der Basis von Entwurfspräferenzen versteht sich, dass die spezifische Ordnung oder Hierarchie von Blöcken in den Prozessen umgeordnet werden kann oder dass alle dargestellten Blöcke ausgeführt werden können. Beliebige der Blöcke können gleichzeitig ausgeführt werden. Bei einer oder mehreren Implementierungen können Multitasking und Parallelverarbeitung vorteilhaft sein. Außerdem sollte die Trennung von verschiedenen Systemkomponenten in den Ausführungsformen, die oben beschrieben werden, nicht als eine solche Trennung in allen Ausführungsformen erfordernd aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in einem einzigen Softwareprodukt integriert oder in mehrere Softwareprodukte verpackt werden können. It will be understood that each specific order or hierarchy of blocks in the disclosed processes is an exemplification of exemplary approaches. On the basis of design preferences, it is understood that the specific order or hierarchy of blocks in the processes may be rearranged or that all the blocks presented may be executed. Any of the blocks can be executed simultaneously. In one or more implementations, multitasking and parallel processing may be beneficial. Moreover, the separation of various system components in the embodiments described above should not be construed as requiring such a separation in all embodiments, and it should be understood that the described program components and systems are generally integrated together into a single software product or into several Software products can be packed.

So wie sie in der vorliegenden Beschreibung und jeglichen Ansprüchen der vorliegenden Anmeldung verwendet werden, beziehen sich die Ausdrücke „Basisstation“, „Empfänger“, „Computer“, „Server“, „Prozessor“ und „Speicher“ alle auf elektronische oder andere technologische Vorrichtungen. Diese Ausdrücke schließen Personen oder Gruppen von Personen aus. Für die Zwecke der Beschreibung bedeuten die Ausdrücke „Anzeige“ oder „Anzeigen“ das Anzeigen auf einer elektronischen Vorrichtung.  As used in the present specification and claims of the present application, the terms "base station", "receiver", "computer", "server", "processor" and "memory" all refer to electronic or other technological devices , These expressions exclude persons or groups of persons. For purposes of description, the terms "display" or "display" mean displaying on an electronic device.

Im vorliegenden Gebrauch modifiziert der Ausdruck „mindestens eines von“, der einer Reihe von Posten vorausgeht, mit dem Ausdruck „und“ oder „oder“ zur Trennung beliebiger der Posten, die Liste als Ganzes, statt jedes Element der Liste (d.h. jeden Posten). Der Ausdruck „mindestens eines von“ erfordert nicht Auswahl mindestens eines jedes aufgelisteten Postens; stattdessen erlaubt der Ausdruck eine Bedeutung, die mindestens einen von einem beliebigen der Posten und/oder mindestens einen einer beliebigen Kombination der Posten und/oder mindestens einen von jedem der Posten umfasst. Beispielsweise beziehen sich die Ausdrücke „mindestens eines von A, B und C“ oder „mindestens eines von „A, B oder C“ jeweils auf nur A, nur B oder nur C; eine beliebige Kombination von A, B und C; und/oder mindestens eine jeweils von A, B und C.  As used herein, the phrase "at least one of" preceding a series of items modifies the term "and" or "or" to separate any of the items, the list as a whole, rather than each item of the list (ie, each item). , The phrase "at least one of" does not require selection of at least one of each listed item; instead, the term allows a meaning that includes at least one of any of the items and / or at least one of any combination of items and / or at least one of each of the items. For example, the terms "at least one of A, B and C" or "at least one of" A, B or C "refer to A, B only or C only. any combination of A, B and C; and / or at least one each of A, B and C.

Die Prädikate „ausgelegt zum“, „betreibbar zum“ und „programmiert zum“ bedingen nicht irgendeine konkrete greifbare oder nichtgreifbare Modifikation eines Subjekts, sondern sollen stattdessen austauschbar verwendet werden. Bei einer oder mehreren Implementierungen kann ein zum Überwachen und Steuern einer Operation oder einer Komponente ausgelegter Prozessor auch bedeuten, dass der Prozessor dafür programmiert ist, die Operation zu überwachen und zu steuern, oder der Prozessor betreibbar ist zum Überwachen und Steuern der Operation. Ähnlich kann ein zum Ausführen von Code ausgelegter Prozessor als ein Prozessor, programmiert zum Ausführen von Code oder betreibbar zum Ausführen von Code, aufgefasst werden.  The predicates "designed to," "operable to," and "programmed to" do not imply any concrete tangible or intangible modification of a subject, but are instead to be used interchangeably. In one or more implementations, a processor configured to monitor and control an operation or a component may also mean that the processor is programmed to monitor and control the operation, or the processor is operable to monitor and control the operation. Similarly, a processor designed to execute code may be construed as a processor programmed to execute code or operable to execute code.

Ausdrücke wie ein Aspekt, der Aspekt, ein anderer Aspekt, einige Aspekte, ein oder mehrere Aspekte, eine Implementierung, die Implementierung, eine andere Implementierung, einige Implementierungen, eine oder mehrere Implementierungen, eine Ausführungsform, die Ausführungsform, eine andere Ausführungsform, einige Ausführungsformen, eine oder mehrere Ausführungsformen, eine Konfiguration, die Konfiguration, eine andere Konfiguration, einige Konfigurationen, eine oder mehrere Konfigurationen, die vorliegende Technologie, die Offenbarung, die vorliegende Offenbarung oder andere Varianten davon und Ähnliches dienen der Zweckmäßigkeit und bedingen nicht, dass eine einen solchen Ausdruck bzw. solche Ausdrücke betreffende Offenbarung für die vorliegende Technologie wesentlich ist oder dass eine solche Offenbarung für alle Konfigurationen der vorliegenden Technologie gilt. Eine Offenbarung bezüglich eines solchen Ausdrucks bzw. solcher Ausdrücke kann für alle Konfigurationen oder eine oder mehrere Konfigurationen gelten. Eine Offenbarung, die einen solchen Ausdruck bzw. solche Ausdrücke betrifft, kann ein oder mehrere Beispiele geben. Ein Ausdruck, wie etwa ein Aspekt oder einige Aspekte, kann sich auf einen oder mehrere Aspekte beziehen und umgekehrt, und Ähnliches gilt für andere obige Ausdrücke.  Expressions such as one aspect, the aspect, another aspect, some aspects, one or more aspects, an implementation, the implementation, another implementation, some implementations, one or more implementations, an embodiment, the embodiment, another embodiment, some embodiments , one or more embodiments, a configuration, the configuration, another configuration, some configurations, one or more configurations, the present technology, the disclosure, the present disclosure or other variants thereof, and the like are of convenience and do not require that a such term or expression is essential to the present technology or that such disclosure applies to all configurations of the present technology. A revelation regarding such term (s) may apply to all configurations or one or more configurations. A disclosure relating to such term (s) may give one or more examples. An expression, such as an aspect or some aspects, may refer to one or more aspects and vice versa, and the like applies to other terms above.

Das Wort „beispielhaft“ wird hier mit der Bedeutung „als Beispiel, Fall oder Veranschaulichung dienend“ gebraucht. Jede hier als „beispielhaft“ oder als ein „Beispiel“ beschriebene Ausführungsform ist nicht unbedingt als gegenüber anderen Ausführungsformen bevorzugt oder vorteilhaft aufzufassen. Soweit der Ausdruck „enthalten“, „aufweisen“ oder dergleichen in der Beschreibung oder in den Ansprüchen verwendet wird, soll ein solcher Ausdruck ferner auf ähnliche Weise wie der Ausdruck „umfassen“ einschließend sein, da „umfassen“ gedeutet wird, wenn es als Übergangswort in einem Anspruch verwendet wird.  The word "exemplary" is used herein to mean "serving as an example, case, or illustration." Any embodiment described herein as "exemplary" or as an "example" is not necessarily to be construed as preferred or advantageous over other embodiments. As far as the term "contain", "comprise" or the like is used in the specification or in the claims, such expression shall further be inclusive in a similar manner as the term "comprise", as "to include" is interpreted as a transitional word used in a claim.

Alle strukturellen und funktionalen Äquivalente der Elemente der verschiedenen Aspekte, die im Verlauf der vorliegenden Offenbarung beschrieben werden, die bekannt sind oder später Fachleuten zur Kenntnis kommen, sind hier durch Bezugnahme ausdrücklich aufgenommen und sollen durch die Ansprüche eingeschlossen werden. Außerdem soll nichts hier Offenbartes der Öffentlichkeit gewidmet sein, gleichgültig, ob diese Offenbarung ausdrücklich in den Ansprüchen angeführt wird. Kein Anspruchselement ist unter den Bestimmungen des sechsten Paragraphs von 35 U.S.C. §112 aufzufassen, sofern das Element nicht ausdrücklich unter Verwendung des Ausdrucks „Mittel zum“ angeführt wird oder im Fall eines Verfahrensanspruchs das Element unter Verwendung des Ausdrucks „Schritt zum“ angeführt wird.  All structural and functional equivalents of the elements of the various aspects described in the course of the present disclosure which are known or later will become apparent to those skilled in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. In addition, nothing here disclosed should be devoted to the public, regardless of whether this disclosure is explicitly stated in the claims. No claim element is under the provisions of the sixth paragraph of 35 U.S.C. §112 unless the item is expressly cited using the term "means for" or, in the case of a claim, the item is cited using the phrase "move to".

Die obige Beschreibung wird bereitgestellt, um es beliebigen Fachleuten zu ermöglichen, die verschiedenen hier beschriebenen Aspekte zu praktizieren. Fachleuten werden ohne weiteres verschiedene Modifikationen dieser Aspekte einfallen, und die hier definierten generischen Prinzipien können auf andere Aspekte angewandt werden. Die Ansprüche sollen somit nicht auf die hier gezeigten Aspekte beschränkt werden, sondern sollen den vollen Schutzumfang vereinbar mit den Sprachenansprüchen erhalten, wobei Erwähnung eines Elements im Singular nicht „eines und nur eines“ bedeuten soll, sofern es nicht spezifisch so angegeben wird, sondern „eines oder mehrere“. Sofern es nicht ausdrücklich anders angegeben wird, bezieht sich der Ausdruck „einige“ auf eines oder mehrere. Männliche Pronomen (z.B. sein) umfassen das weibliche und neutrale Geschlecht (z.B. ihr und sein) und umgekehrt. Etwaige Titel und Untertitel dienen lediglich der Zweckmäßigkeit und beschränken die vorliegende Offenbarung nicht.  The above description is provided to enable any person skilled in the art to practice the various aspects described herein. Those skilled in the art will readily appreciate various modifications of these aspects, and the generic principles defined herein may be applied to other aspects. The claims should therefore not be limited to the aspects shown here, but should be given the full scope of protection compatible with the language claims, with mention of an element in the singular should not mean "one and only one", unless it is specifically stated, but " one or more ". Unless otherwise stated, the term "some" refers to one or more. Male pronouns (e.g., being) include the female and neutral sex (e.g., her and his) and vice versa. Any titles and subtitles are for convenience only and do not limit the present disclosure.

Claims (22)

Vorrichtung, umfassend: mindestens einen Prozessor, ausgelegt zum Benutzen von Mengen von Blöcken von Flash-Speicherschaltungen für Datenspeicherungsoperationen, wobei jede der Mengen von Blöcken mindestens einen Block aus jeder der Flash-Speicherschaltungen umfasst und mindestens einige der Blöcke mindestens einiger der Mengen von Blöcken als aktiv markiert sind, wobei die mindestens einigen der Blöcke der mindestens einigen der Mengen von Blöcken, die als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden; Überwachen von Qualitätsmetriken jedes Blocks jeder der Mengen von Blöcken, während die mindestens einigen der Blöcke der mindestens einigen der Mengen von Blöcken, die als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden; Bestimmen, wann die Qualitätsmetrik eines der Blöcke einer der Mengen von Blöcken unter einen Mindestqualitätswert fällt; Markieren des einen der Blöcke der einen der Mengen von Blöcken als vorübergehend inaktiv, wobei der eine der Blöcke der einen der Mengen von Blöcken nicht für die Datenspeicherungsoperationen benutzt wird, während er als vorübergehend inaktiv markiert ist; und wenn mindestens ein Kriterium erfüllt ist, Markieren des einen der Blöcke der einen der Mengen von Blöcken als aktiv, wobei der eine der Blöcke der einen der Mengen von Blöcken wieder für die Datenspeicherungsoperationen benutzt wird, während er als aktiv markiert ist.  Apparatus comprising: at least one processor designed for Using sets of blocks of flash memory circuits for data storage operations, wherein each of the sets of blocks comprises at least one block of each of the flash memory circuits and at least some of the blocks of at least some of the sets of blocks are marked active, the at least some of the blocks the at least some of the sets of blocks marked active are used for the data storage operations; Monitoring quality metrics of each block of each of the sets of blocks while using the at least some of the blocks of the at least some of the sets of blocks marked as active for the data storage operations; Determining when the quality metric of one of the blocks of one of the sets of blocks falls below a minimum quality value; Marking the one of the blocks of the one of the sets of blocks as temporarily inactive, wherein the one of the blocks of the one of the sets of blocks is not used for the data storage operations while being marked as temporarily inactive; and if at least one criterion is met, marking one of the blocks of the one of the sets of blocks as active, wherein the one of the blocks of the one of the sets of blocks is reused for the data storage operations while being marked as active. Vorrichtung nach Anspruch 1, wobei jede der Mengen von Blöcken einer Coderate zugeordnet ist und der mindestens eine Prozessor ferner ausgelegt ist zum Bestimmen, dass das mindestens eine Kriterium erfüllt ist, wenn für die der einen der Mengen von Blöcken zugeordnete Coderate eine Anzahl der Blöcke der einen der Mengen von Blöcken, die als aktiv markiert sind, unter eine Mindestzahl aktiver Blöcke fällt; als Reaktion auf das Bestimmen, dass das Kriterium erfüllt ist, Verringern der der einen der Mengen von Blöcken zugeordneten Coderate; und als Reaktion auf das Verringern der Coderate, Markieren jeglicher Blöcke der einen der Mengen von Blöcken, die als vorübergehend inaktiv markiert sind, als aktiv, wobei jegliche Blöcke der einen der Mengen von Blöcken, die als aktiv markiert sind, wieder für die Datenspeicherungsoperationen benutzt werden.  The apparatus of claim 1, wherein each of the sets of blocks is associated with a code rate and the at least one processor is further configured for Determining that the at least one criterion is met when, for the code rate associated with one of the sets of blocks, a number of the blocks of the one of the sets of blocks marked as active falls below a minimum number of active blocks; in response to determining that the criterion is met, decreasing the code rate associated with one of the sets of blocks; and in response to decreasing the code rate, marking any blocks of the one of the sets of blocks marked as temporarily inactive as active, with any blocks of the one of the sets of blocks marked active being used again for the data storage operations , Vorrichtung nach Anspruch 2, wobei die Mindestzahl aktiver Blöcke für die Coderate kleiner als eine andere Mindestzahl aktiver Blöcke für die verringerte Coderate ist.  The apparatus of claim 2, wherein the minimum number of active blocks for the code rate is less than another minimum number of active blocks for the reduced code rate. Vorrichtung nach Anspruch 2, wobei der mindestens eine Prozessor ferner ausgelegt ist zum Bestimmen, dass das mindestens eine Kriterium erfüllt ist, wenn eine aktuelle Speicherungskapazität über alle Mengen von Blöcken hinweg unter eine Mindestspeicherungskapazität fällt; als Reaktion auf das Bestimmen, dass das Kriterium erfüllt ist, Identifizieren mindestens einer der Mengen von Blöcken, für die mindestens ein Block als vorübergehend inaktiv markiert ist; Verringern der Coderate, die der identifizierten mindestens einen der Mengen von Blöcken zugeordnet ist; und als Reaktion auf das Verringern der Coderate, Markieren jeglicher Blöcke der mindestens einen der Mengen von Blöcken, die als vorübergehend inaktiv markiert sind, als aktiv, wobei jegliche Blöcke der mindestens einen der Mengen von Blöcken, die als aktiv markiert sind, wieder für die Datenspeicherungsoperationen benutzt werden.  The device of claim 2, wherein the at least one processor is further adapted for Determining that the at least one criteria is met if an actual storage capacity falls below a minimum storage capacity across all sets of blocks; in response to determining that the criterion is met, identifying at least one of the sets of blocks for which at least one block is marked as temporarily inactive; Decreasing the code rate associated with the identified at least one of the sets of blocks; and in response to decreasing the code rate, marking any blocks of the at least one of the sets of blocks marked as temporarily inactive as being active, with any blocks of the at least one of the sets of blocks marked as being active again for the data storage operations to be used. Vorrichtung nach Anspruch 4, wobei der mindestens eine Prozessor ferner ausgelegt ist zum Wiederholen des Identifizierens, Verringerns und Markierens, bis die aktuelle Speicherungskapazität über die gesamte Menge von Blöcken die Mindestspeicherungskapazität überschreitet.  The apparatus of claim 4, wherein the at least one processor is further configured to repeat the identify, reduce, and mark until the current storage capacity over the entire set of blocks exceeds the minimum storage capacity. Vorrichtung nach Anspruch 4, wobei der mindestens eine Prozessor ferner ausgelegt ist zum Bestimmen der aktuellen Speicherungskapazität mindestens teilweise auf der Basis einer Anzahl von Blöcken jeder der Mengen von Blöcken, die als aktiv markiert sind, und der jeder der Mengen von Blöcken zugeordneten Coderate.  The apparatus of claim 4, wherein the at least one processor is further configured to determine the current storage capacity based at least in part on a number of blocks of each of the sets of blocks marked as active and the code rate associated with each of the sets of blocks. Vorrichtung nach Anspruch 4, wobei der mindestens eine Prozessor ferner ausgelegt ist zum Identifizieren der mindestens einen der Mengen von Blöcken, für die mindestens ein Block als vorübergehend inaktiv markiert ist, durch Bestimmen, dass die mindestens eine der Mengen von Blöcken relativ zu anderen der Mengen von Blöcken eine größte Anzahl vorübergehend inaktiver Blöcke umfasst. The apparatus of claim 4, wherein the at least one processor is further configured to identify the at least one of the sets of blocks for which at least one block is marked as temporarily inactive by determining that the at least one of the sets of blocks is relative to other of the sets of blocks comprises a largest number of temporarily inactive blocks. Vorrichtung nach Anspruch 1, wobei der mindestens eine Prozessor ferner ausgelegt ist zum Verlagern jeglicher gültiger Daten in dem einen der Blöcke der einen der Mengen von Blöcken vor dem Markieren des einen der Blöcke der einen der Mengen von Blöcken als vorübergehend inaktiv.  The apparatus of claim 1, wherein the at least one processor is further configured to move any valid data in the one of the blocks of the one of the sets of blocks before marking the one of the blocks of the one of the sets of blocks as temporarily inactive. Vorrichtung nach Anspruch 1, wobei die Vorrichtung ferner mindestens eine Direktzugriffsspeicherschaltung und die Flash-Speicherschaltungen umfasst, die Blöcke physische Blöcke der Flash-Speicherschaltungen umfassen und der mindestens eine Prozessor ferner ausgelegt ist zum Benutzen der Mengen der Blöcke der Flash-Speicherschaltungen zum Ausführen der Datenspeicherungsoperationen wie durch eine Host-Vorrichtung angegeben; und Unterhalten einer in der mindestens einen Direktzugriffsspeicherschaltung gespeicherten Datenstruktur, wobei die Datenstruktur einen Status jedes Blocks jeder der Mengen von Blöcken umfasst, wobei der Status jedes Blocks jeder der Mengen von Blöcken mindestens angibt, ob jeder Block jeder der Mengen von Blöcken als aktiv markiert ist oder als vorübergehend inaktiv markiert ist.  The apparatus of claim 1, wherein the apparatus further comprises at least one random access memory circuit and the flash memory circuits, the blocks comprising physical blocks of the flash memory circuits and the at least one processor is further adapted for Using the sets of the blocks of the flash memory circuits to perform the data storage operations as indicated by a host device; and Maintaining a data structure stored in the at least one random access memory circuit, the data structure comprising a status of each block of each of the sets of blocks, the status of each block of each of the sets of blocks indicating at least whether each block of each of the sets of blocks is marked active or is marked as temporarily inactive. Vorrichtung nach Anspruch 1, wobei die Qualitätsmetrik einen Fehlerzählwert und/oder eine Fehlerrate und/oder eine Zeit zum Programmieren umfasst.  Apparatus according to claim 1, wherein the quality metric comprises an error count and / or an error rate and / or a time for programming. Vorrichtung nach Anspruch 1, wobei der mindestens eine Prozessor ausgelegt ist zum Anordnen der Blöcke der Flash-Speicherschaltungen in die Mengen von Blöcken.  The apparatus of claim 1, wherein the at least one processor is configured to arrange the blocks of the flash memory circuits into the sets of blocks. Verfahren, umfassend: Benutzen von Mengen von Blöcken von einer Vielzahl von Flash-Speicherschaltungen für Datenspeicherungsoperationen, wobei jede der Mengen von Blöcken mindestens einen Block aus jeder der Vielzahl von Flash-Speicherschaltungen umfasst und mindestens einige der Blöcke mindestens einiger der Mengen von Blöcken als aktiv markiert sind, wobei die mindestens einigen der Blöcke der mindestens einigen der Mengen von Blöcken, die als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden; Überwachen eines verbleibenden Zykluszählwerts jedes der Blöcke jeder der Mengen von Blöcken, während die mindestens einigen der Blöcke der mindestens einigen der Mengen von Blöcken, die als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden, wobei der verbleibende Zykluszählwert jedes der Blöcke jeder der Mengen von Blöcken mindestens teilweise auf einem erwarteten Zykluszählwert basiert, der jeder der Vielzahl von Flash-Speicherschaltungen zugeordnet ist, die jeden der Blöcke jeder der Mengen von Blöcken enthalten; Markieren des einen der Blöcke der einen der Mengen von Blöcken als vorübergehend inaktiv, wenn der verbleibende Zykluszählwert eines der Blöcke einer der Mengen von Blöcken mindestens ein erstes Kriterium erfüllt, wobei der eine der Blöcke der einen der Mengen von Blöcken nicht für die Datenspeicherungsoperationen benutzt wird, während er als vorübergehend inaktiv markiert ist; und Markieren des einen der Blöcke der einen der Mengen von Blöcken als aktiv, wenn mindestens ein zweites Kriterium erfüllt ist, wobei der eine der Blöcke der einen der Mengen von Blöcken wieder für die Datenspeicherungsoperationen benutzt wird, während er als aktiv markiert ist.  Method, comprising: Using sets of blocks of a plurality of flash memory circuits for data storage operations, each of the sets of blocks comprising at least one block of each of the plurality of flash memory circuits and at least some of the blocks of at least some of the sets of blocks being marked as active, wherein the at least some of the blocks of the at least some of the sets of blocks marked active are used for the data storage operations; Monitoring a remaining cycle count of each of the blocks of each of the sets of blocks, while using the at least some of the blocks of the at least some of the sets of blocks marked as active for the data storage operations, the remaining cycle count of each of the blocks of each of the sets of Blocks based at least in part on an expected cycle count associated with each of the plurality of flash memory circuits containing each of the blocks of each of the sets of blocks; Marking the one of the blocks of the one of the sets of blocks as temporarily inactive when the remaining cycle count of one of the blocks of one of the sets of blocks meets at least a first criterion, wherein the one of the blocks of the one of the sets is not used for the data storage operations while it is marked as temporarily inactive; and Marking the one of the blocks of the one of the sets of blocks as active when at least a second criterion is satisfied, wherein the one of the blocks of the one of the sets of blocks is reused for the data storage operations while being marked as active. Verfahren nach Anspruch 12, wobei der verbleibende Zykluszählwert des einen der Blöcke der einen der Mengen von Blöcken das mindestens eine erste Kriterium erfüllt, wenn der verbleibende Zykluszählwert des einen der Blöcke der einen der Mengen von Blöcken um eine Schwellenzahl von Zyklen von einem anderen verbleibenden Zykluszählwert eines anderen der Blöcke der einen der Mengen von Blöcken verschieden ist.  The method of claim 12, wherein the remaining cycle count of the one of the blocks of the one of the blocks satisfies the at least one first criterion if the remaining cycle count of the one of the blocks of the one of the sets of blocks is one threshold number of cycles from another remaining cycle count another of the blocks that is different from one of the sets of blocks. Verfahren nach Anspruch 13, ferner umfassend: Bestimmen, dass das mindestens eine zweite Kriterium erfüllt ist, wenn der dem einen der Blöcke der einen der Mengen von Blöcken zugeordnete verbleibende Zykluszählwert gleich dem dem anderen der Blöcke der einen der Mengen von Blöcken zugeordneten anderen verbleibenden Zykluszählwert ist.  The method of claim 13, further comprising: Determining that the at least one second criterion is met when the remaining cycle count associated with one of the blocks of the one of the sets of blocks equals the other remaining cycle count associated with the other of the blocks of the one of the sets of blocks. Verfahren nach Anspruch 12, ferner umfassend: schnelles Zyklieren eines jeweiligen Blocks jeder der Vielzahl von Flash-Speicherschaltungen vor dem Benutzen jeglicher der Blöcke jeglicher der Mengen von Blöcken für die Datenspeicherungsoperationen, bis eine jeweilige Qualitätsmetrik des jeweiligen Blocks jeder der Vielzahl von Flash-Speicherschaltungen unter einen Mindestqualitätswert fällt; Bestimmen des erwarteten Zykluszählwerts für jede der Vielzahl von Flash-Speicherschaltungen mindestens teilweise auf der Basis einer Anzahl von schnellen Zyklen, die zum Bewirken, dass die jeweilige Qualitätsmetrik des jeweiligen Blocks jeder der Vielzahl von Flash-Speicherschaltungen unter den Mindestqualitätswert fällt, benutzt wird; und Speichern des erwarteten Zykluszählwerts für jede der Vielzahl von Flash-Speicherschaltungen in individueller Assoziation mit jedem der Blöcke jeder der Vielzahl von Flash-Speicherschaltungen.  The method of claim 12, further comprising: rapidly cycling a respective block of each of the plurality of flash memory circuits prior to using any of the blocks of any of the sets of blocks for the data storage operations until a respective quality metric of the respective block of each of the plurality of flash memory circuits falls below a minimum quality value; Determining the expected cycle count for each of the plurality of flash memory circuits based at least in part on a number of fast cycles used to cause the respective quality metric of the respective block of each of the plurality of flash memory circuits to fall below the minimum quality value; and Storing the expected cycle count for each of the plurality of flash memory circuits in individual association with each of the blocks of each of the plurality of flash memory circuits. Verfahren nach Anspruch 15, ferner umfassend: Markieren des jeweiligen Blocks jeder der Vielzahl von Flash-Speicherschaltungen als inaktiv nach dem schnellen Zyklieren des jeweiligen Blocks jeder der Vielzahl von Flash-Speicherschaltungen. The method of claim 15, further comprising: Marking the respective block of each of the plurality of flash memory circuits as inactive after fast cycling the respective block of each of the plurality of flash memory circuits. Verfahren nach Anspruch 15, ferner umfassend: Bestimmen des verbleibenden Zykluszählwerts für jeden der Blöcke jeder der Mengen von Blöcken mindestens teilweise auf der Basis des jedem der Blöcke jeder der Menge von Blöcken zugeordneten erwarteten Zykluszählwerts und einer Anzahl von Zyklen, die für die Datenspeicherungsoperationen für jeden der Blöcke jeder der Mengen von Blöcken benutzt wird.  The method of claim 15, further comprising: Determining the remaining cycle count for each of the blocks of each of the sets of blocks based at least in part on the expected cycle count associated with each of the blocks of each of the sets of blocks and a number of cycles used for the data storage operations for each of the blocks of each of the sets of blocks becomes. Verfahren nach Anspruch 12, ferner umfassend: Bestimmen, dass das mindestens eine zweite Kriterium erfüllt ist, wenn eine Anzahl der Blöcke der einen der Mengen von Blöcken, die als aktiv markiert sind, unter eine Mindestzahl aktiver Blöcke fällt.  The method of claim 12, further comprising: Determining that the at least one second criterion is met when a number of the blocks of the one of the sets of blocks marked as active falls below a minimum number of active blocks. Verfahren nach Anspruch 12, ferner umfassend: Bestimmen, dass das mindestens eine zweite Kriterium erfüllt ist, wenn eine aktuelle Speicherungskapazität über alle Mengen von Blöcken hinweg unter eine Mindestspeicherungskapazität fällt.  The method of claim 12, further comprising: Determining that the at least one second criterion is met when a current storage capacity falls below a minimum storage capacity across all sets of blocks. Computerprogrammprodukt, das in einem nichtransitorischen computerlesbaren Speicherungsmedium gespeicherten Code umfasst, wobei der Code Folgendes umfasst: Code zum schnellen Zyklieren eines jeweiligen physischen Blocks jeder einer Vielzahl von Flash-Speicherschaltungen, bis eine jeweilige Qualitätsmetrik des jeweiligen physischen Blocks jeder der Vielzahl von Flash-Speicherschaltungen unter einen Mindestqualitätswert fällt; Code zum Bestimmen des erwarteten Zykluszählwerts für jede der Vielzahl von Flash-Speicherschaltungen mindestens teilweise auf der Basis einer Anzahl von schnellen Zyklen, die zum Bewirken, dass die jeweilige Qualitätsmetrik des jeweiligen physischen Blocks jeder der Vielzahl von Flash-Speicherschaltungen unter den Mindestqualitätswert fällt, benutzt wird; Code zum Speichern des erwarteten Zykluszählwerts für jede der Vielzahl von Flash-Speicherschaltungen in individueller Assoziation mit physischen Blöcken jeder der Vielzahl von Flash-Speicherschaltungen in mindestens einer Direktzugriffsspeicherschaltung.  A computer program product comprising code stored in a non-transitory computer-readable storage medium, the code comprising: Code for rapidly cycling a respective physical block of each of a plurality of flash memory circuits until a respective quality metric of the respective physical block of each of the plurality of flash memory circuits falls below a minimum quality value; Code for determining the expected cycle count for each of the plurality of flash memory circuits based, at least in part, on a number of fast cycles used to cause the respective quality metric of the respective physical block of each of the plurality of flash memory circuits to fall below the minimum quality value becomes; Code for storing the expected cycle count for each of the plurality of flash memory circuits in individual association with physical blocks of each of the plurality of flash memory circuits in at least one random access memory circuit. Computerprogrammprodukt nach Anspruch 20, wobei der Code ferner Folgendes umfasst: Code zum Anordnen der physischen Blöcke jeder der Vielzahl von Flash-Speicherschaltungen in Mengen von physischen Blöcken, wobei jede der Mengen von physischen Blöcken mindestens einen der physischen Blöcke aus jeder der Vielzahl von Flash-Speicherschaltungen umfasst und mindestens einige der physischen Blöcke mindestens einiger der Mengen physischer Blöcke als aktiv markiert sind; Code zum Überwachen des Zykluszählwerts jedes der physischen Blöcke jeder der Mengen von physischen Blöcken, während die mindestens einigen der physischen Blöcke der mindestens einigen der Mengen von physischen Blöcken, die als aktiv markiert sind, für Datenspeicherungsoperationen benutzt werden; und Code zum vorübergehenden Deaktivieren mindestens eines der physischen Blöcke jeder der Mengen von Blöcken, so dass der Zykluszählwert jedes der physischen Blöcke jeder der Mengen von physischen Blöcken den erwarteten Zykluszählwert, der jedem der physischen Blöcke jeder der Mengen von physischen Blöcken zugeordnet ist, im Wesentlichen zur selben Zeit erreicht.  The computer program product of claim 20, wherein the code further comprises: Code for arranging the physical blocks of each of the plurality of flash memory circuits in amounts of physical blocks, each of the sets of physical blocks comprising at least one of the physical blocks of each of the plurality of flash memory circuits, and at least some of the physical blocks of at least some of the sets physical blocks are marked as active; Code for monitoring the cycle count of each of the physical blocks of each of the sets of physical blocks, while the at least some of the physical blocks of the at least some of the sets of physical blocks marked active are used for data storage operations; and Code for temporarily disabling at least one of the physical blocks of each of the sets of blocks so that the cycle count of each of the physical blocks of each of the sets of physical blocks substantially matches the expected cycle count associated with each of the physical blocks of each of the sets of physical blocks reached the same time. System, umfassend: eine Vielzahl von Flash-Speicherschaltungen, die jeweils Blöcke umfassen; einen Direktzugriffsspeicher (RAM), ausgelegt zum Speichern einer Datenstruktur, die einen Status jedes der Blöcke jeder der Vielzahl von Flash-Speicherschaltungen umfasst, wobei der Status jedes der Blöcke jeder der Vielzahl von Flash-Speicherschaltungen mindestens angibt, ob jeder der Blöcke jeder der Vielzahl von Flash-Speicherschaltungen als aktiv markiert ist oder als vorübergehend inaktiv markiert ist; eine kommunikativ mit einer Host-Vorrichtung gekoppelte Schnittstelle; und eine Steuerung, ausgelegt zum Benutzen von Mengen der Blöcke der Vielzahl von Flash-Speicherschaltungen für Datenspeicherungsoperationen, die durch die Host-Vorrichtung angegeben werden, wobei jede der Mengen der Blöcke mindestens einen Block aus jeder der Vielzahl von Flash-Speicherschaltungen umfasst und mindestens einige der Blöcke mindestens einiger der Mengen der Blöcke in der Datenstruktur als aktiv markiert werden, wobei die mindestens einigen der Blöcke der mindestens einigen der Mengen der Blöcke, die in der Datenstruktur als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden; Überwachen einer Qualitätsmetrik jedes der Blöcke jeder der Mengen der Blöcke, während die mindestens einigen der Blöcke der mindestens einigen der Mengen der Blöcke, die in der Datenstruktur als aktiv markiert sind, für die Datenspeicherungsoperationen benutzt werden; Bestimmen, wann die Qualitätsmetrik eines der Blöcke einer der Mengen der Blöcke unter einen Mindestqualitätswert fällt; Markieren des einen der Blöcke der einen der Mengen der Blöcke in der Datenstruktur als vorübergehend inaktiv, wobei der eine der Blöcke der einen der Mengen der Blöcke nicht für die Datenspeicherungsoperationen benutzt wird, während er in der Datenstruktur als vorübergehend inaktiv markiert ist; und Markieren des einen der Blöcke der einen der Mengen der Blöcke als aktiv in der Datenstruktur, wenn mindestens ein Kriterium erfüllt ist, wobei der eine der Blöcke der einen der Mengen der Blöcke wieder für die Datenspeicherungsoperationen benutzt wird, während er in der Datenstruktur als aktiv markiert ist. A system comprising: a plurality of flash memory circuits each comprising blocks; a random access memory (RAM) configured to store a data structure comprising a status of each of the blocks of each of the plurality of flash memory circuits, wherein the status of each of the blocks of each of the plurality of flash memory circuits at least indicates whether each of the blocks is each of the plurality is marked active by flash memory circuits or marked as temporarily inactive; an interface communicatively coupled to a host device; and a controller configured to use sets of the blocks of the plurality of flash memory circuits for data storage operations specified by the host device, each of the sets of blocks comprising at least one block of each of the plurality of flash memory circuits and at least some the blocks of at least some of the sets of blocks in the data structure are marked active, the at least some of the blocks of the at least some of the sets of blocks marked active in the data structure being used for the data storage operations; Monitoring a quality metric of each of the blocks of each of the sets of the blocks while using the at least some of the blocks of the at least some of the sets of blocks marked active in the data structure for the data storage operations; Determining when the quality metric of one of the blocks of one of the sets of blocks falls below a minimum quality value; Marking one of the blocks of one of the sets of blocks in the data structure as temporarily inactive, wherein the one of the blocks of one of the sets of blocks is not for the Data storage operations while being marked as temporarily inactive in the data structure; and marking one of the blocks of the one of the sets of blocks as active in the data structure when at least one criterion is satisfied, wherein the one of the blocks of the one of the sets of blocks is reused for the data storage operations while being active in the data structure is marked.
DE102017112560.4A 2016-07-29 2017-06-07 ADAPTIVE WEAR LEVELING Active DE102017112560B4 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662368967P 2016-07-29 2016-07-29
US62/368,967 2016-07-29
US15/331,552 US10282111B2 (en) 2016-07-29 2016-10-21 Adaptive wear levelling
US15/331,552 2016-10-21

Publications (2)

Publication Number Publication Date
DE102017112560A1 true DE102017112560A1 (en) 2018-02-01
DE102017112560B4 DE102017112560B4 (en) 2020-08-27

Family

ID=60951460

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017112560.4A Active DE102017112560B4 (en) 2016-07-29 2017-06-07 ADAPTIVE WEAR LEVELING

Country Status (1)

Country Link
DE (1) DE102017112560B4 (en)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009072104A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith

Also Published As

Publication number Publication date
DE102017112560B4 (en) 2020-08-27

Similar Documents

Publication Publication Date Title
DE102017001433B4 (en) Systems and methods for adaptive read level adjustment
DE112020006139B4 (en) PRE-READ AND READ THRESHOLD VOLTAGE OPTIMIZATION
DE112016002631B4 (en) Memory health monitoring
DE112016005869T5 (en) Predictive memory maintenance
DE102010030745B4 (en) Non-volatile memory for storing memory remapping information
DE112014004761T5 (en) Influencing Wear Leveling in Storage Systems
DE102018123891A1 (en) Handling non-aligned writes
DE112010004656B4 (en) In-block compensation for decreasing functionality of memories
DE112020006215T5 (en) Block family based error prevention for memory devices
DE112015004536T5 (en) Hardware automation for storage management
DE112015000339T5 (en) Mitigate reading error in a crosspoint memory
DE102017120840A1 (en) Method and device for the detection and handling of reading disorders
DE112018004256T5 (en) REDUNDANCY CODE STRIPS BASED ON INTERNAL ADDRESSES OF STORAGE DEVICES
DE102017114078A1 (en) ERROR WAKE-OFF FOR 3D NAND FLASH MEMORY
DE102018105440A1 (en) Power failure treatment using stop commands
DE112017005637T5 (en) Method and system for write enhancement analysis
DE102013100596B4 (en) Non-volatile memory system with programming and erasing methods and block management methods
DE112021000776T5 (en) MANAGEMENT OF WRITE OPERATIONS IN A NON-VOLATILE MEMORY DEVICE USING A VARIABLE READ-OUT VOLTAGE LEVEL
DE102008030859A1 (en) Method of conditioning resistive memory cells of memory array, involves applying pulse to unreliable cell such that pulse shifts resistance respectively associated with unreliable cell to predetermined reliable resistance range
DE112018002500T5 (en) Storage array for hybrid data
DE112020000230T5 (en) DATA STORAGE DEVICE WITH DYNAMIC STRIP LENGTH MANAGER
DE102019134290A1 (en) Method and system for improving the performance of a storage device using asynchronous, independent level reading functionality
DE102017120826A1 (en) A method and apparatus for monitoring memory using a background media scan
DE112020005001T5 (en) QLC PROGRAMMING METHOD WITH FINE DATA RESTORE
DE112020004452T5 (en) MANAGING DATA DEPENDENCES FOR NON-SEQUENTIAL PROCESSING IN A HYBRID DIMM

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CALIF., US

R081 Change of applicant/patentee

Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US

Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US