DE102017112560B4 - ADAPTIVE WEAR LEVELING - Google Patents

ADAPTIVE WEAR LEVELING Download PDF

Info

Publication number
DE102017112560B4
DE102017112560B4 DE102017112560.4A DE102017112560A DE102017112560B4 DE 102017112560 B4 DE102017112560 B4 DE 102017112560B4 DE 102017112560 A DE102017112560 A DE 102017112560A DE 102017112560 B4 DE102017112560 B4 DE 102017112560B4
Authority
DE
Germany
Prior art keywords
blocks
sets
active
marked
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102017112560.4A
Other languages
German (de)
Other versions
DE102017112560A1 (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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
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

Vorrichtung, umfassend:mindestens einen Prozessor, ausgelegt zumBenutzen 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;Bestimmen, dass mindestens ein Kriterium erfüllt ist, wenn für eine 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, wobei jede der Mengen von Blöcken der Coderate zugeordnet ist; undwenn das mindestens eine 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.An apparatus comprising: at least one processor configured to utilize sets of blocks of flash memory circuits for data storage operations, each of the sets of blocks including at least one block from each of the flash memory circuits and at least some of the blocks at least some of the sets of blocks as active are marked, wherein the at least some of the blocks of the at least some of the sets of blocks marked as active are used for the data storage operations; monitoring quality metrics of each block 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 are used for data storage operations; determining when the quality metric of any of the blocks of any of the sets of blocks falls below a minimum quality value; marking the one of the one of the sets of blocks as temporarily inactive, wherein of the one of the blocks of the one of the sets of blocks is not used for the data storage operations while it is marked as temporarily inactive; determining that at least one criterion is met if a number of the blocks of the one code rate associated with one of the sets of blocks the set of blocks marked active falls below a minimum number of active blocks, each of the sets of blocks being associated with the code rate; andif the at least one criterion is met, marking the one of the blocks of the one of the sets of blocks as active, the one of the blocks of the one of the sets of blocks being reused for the data storage operations while it is marked as active.

Description

VERWEIS AUF VERWANDTE ANMELDUNGENREFERENCE 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 the preliminary U.S. Patent Application No. 62 / 368,967 entitled "Adaptive Wear Leveling", filed 7/29/2016, which is hereby incorporated by reference in its entirety for all purposes.

TECHNISCHES GEBIETTECHNICAL 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 TECHNIKSTATE 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. Aus der US 8,843,698 B2 ist eine Vorrichtung bekannt, umfassend mindestens einen Prozessor, ausgelegt zum Benutzen 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. Hierbei erfolgt ein Überwachen von Qualitätsmetriken jedes Blocks jeder der Menge 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. Es wird ferner bestimmt, wann die Qualitätsmetrik eines der Blöcke einer der Mengen von Blöcken unter einen Mindestqualitätswert fällt. Ferner vorgesehen ist das 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 Datenspeicherungsoperation benutzt wird, während er als vorübergehend inaktiv markiert ist. Wenn mindestens ein Kriterium erfüllt ist, erfolgt ein 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 Datenspeicherungsoperation benutzt wird, während er als aktiv markiert ist.In a flash memory system, to achieve long life, the system typically employs a wear-leveling algorithm that keeps 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 lifespan (if the weak blocks are disregarded, which are compensated by overprovisioning) and therefore all wear out at essentially the same time. In practice, however, the physical blocks do not all have the same lifespan. Thus, the flash memory system can reach its specified end of life even though many of the physical blocks are still usable. From the US 8,843,698 B2 an apparatus is known comprising at least one processor adapted to use flash memory circuits for data storage operations, each of the sets of blocks including at least one block from each of the flash memory circuits, and at least some of the blocks at least some of the sets of blocks as active are marked, 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. Here, quality metrics of each block of each of the sets of blocks are monitored while the at least some of the blocks of the at least some of the sets of blocks that are marked as active are used for the data storage operations. It is also determined when the quality metric of one of the blocks of one of the sets of blocks falls below a minimum quality value. It is also provided that one of the blocks of the one of the sets of blocks is marked as temporarily inactive, the one of the blocks of the one of the sets of blocks not being used for the data storage operation while it is marked as temporarily inactive. If at least one criterion is met, one of the blocks of the one of the sets of blocks is marked as active, the one of the blocks of the one of the sets of blocks being used again for the data storage operation while it is marked as active.

Kurzfassung Die vorliegende Erfindung schlägt eineVorrichtung mit den Merkmalen des Patentanspruchs 1, ein Verfahren mit den Merkmalen des Patentanspruchs 12, ein Computerprogrammprodukt mit den Merkmalen des Patentanspruchs 19, sowie ein System mit den Merkmalen des Patentanspruchs 21 vor.Summary The present invention proposes a device with the features of patent claim 1, a method with the features of patent claim 12, a computer program product with the features of patent claim 19, and a system with the features of patent claim 21.

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 including at least one block from each of the plurality of flash memory circuits and at least some of the blocks at least some of 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 data storage operations. The method may further include: monitoring a remaining cycle count 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 are being used 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 including each of the blocks of each of the sets of blocks. The method may further include marking the one 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, the one of the blocks of the one of the sets of Block is not being used for data storage operations while marked as temporarily inactive. The method may further include: marking the one of the one of the sets of blocks as active when at least a second criterion is met, the one of the one of the sets of blocks being reused for the data storage operations while being active is marked.

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 add a respective physical block to each of a variety of flash memory circuits cycle 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 include code to determine 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 of each of the Large number of flash memory circuits fall below the minimum quality value. The code may further include 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, random access memory (RAM) configured to store a data structure including 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 is marked temporarily inactive, include an interface communicatively coupled to a host device, and a controller. 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 the blocks including at least one block from 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 further be configured to monitor a quality metric of each of the blocks of each of the sets of the blocks while the at least some of the blocks of the at least some of the sets of the blocks marked active in the data structure are being used for data storage operations. The controller can further be 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 further be configured to mark the one of the blocks of the one of the sets of blocks as temporarily inactive in the data structure, the one of the blocks of the one of the sets of blocks not being used for the data storage operations while it is temporarily inactive in the Data structure is highlighted. The controller may further be configured to mark the 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, the one of the blocks of the one of the sets of blocks being used again for the data storage operations while 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 should 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 for purposes of illustration. It should be understood that the present technology can have other and different configurations, and its several details can be modified in various other respects, without each departing from the scope of the present technology. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not restrictive.

FigurenlisteFigure list

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.

  • 1 zeigt ein beispielhaftes Flash-Speichersystem, das ein System zur Bereitstellung von adaptiver Abnutzungs-Nivellierung implementieren kann, gemäß einer oder mehreren Implementierungen.
  • 2 zeigt beispielhafte logische Gruppierungen von physischen Blöcken von Flash-Speicherschaltungen in einer beispielhaften Flash-Speichervorrichtung gemäß einer oder mehreren Implementierungen.
  • 3 zeigt ein Flussdiagramm eines beispielhaften Prozesses zur adaptiven Abnutzungs-Nivellierung unter Verwendung von Coderatenverschiebung gemäß einer oder mehreren Implementierungen.
  • 4 zeigt ein Flussdiagramm eines beispielhaften Prozesses zur adaptiven Abnutzungs-Nivellierung unter Verwendung von empirisch bestimmten erwarteten Zykluszählwerten gemäß einer oder mehreren Implementierungen.
Certain features of the present technology are set out in the appended claims. For purposes of explanation, however, several embodiments of the present technology are presented in the following figures.
  • 1 FIG. 10 shows an exemplary flash memory system that can implement a system for providing adaptive wear leveling, according to one or more implementations.
  • 2 FIG. 10 shows example logical groupings of physical blocks of flash memory circuits in an example flash memory device according to one or more implementations.
  • 3 FIG. 12 is a flow diagram of an exemplary process for adaptive wear leveling using code rate shifting, according to one or more implementations.
  • 4th FIG. 10 is a flow diagram of an exemplary process for adaptive wear leveling using empirically determined expected cycle counts, according to one or more implementations.

AUSFÜHRLICHE BESCHREIBUNGDETAILED 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 set forth below is intended as a description of various configurations of the present technology and is not intended to be the only configurations represent in which the present technology can be practiced. The appended drawings are incorporated herein and form a part of the detailed description. The detailed description includes specific details for the purpose of ensuring a thorough understanding of the present technology. However, the present technology is not limited to the specific details set forth and can be practiced using one or more implementations. In one or more cases, structures and components are shown in block diagram form in order 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 (e.g., a single flash memory chip or die) is rapidly cycled (P / E -cycled) until a quality metric assigned to the physical block (e.g. error count, error rate, time for programming) 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, an assumption is made that the lifetime 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 sets 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 number of cycles remaining for each of the physical blocks. The expected number of cycles remaining 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 below the expected remaining number of cycles in other blocks of the given set of blocks. In this case, the present system marks the block as temporarily inactive, which prevents the block from being used in the data storage operations. When 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, thereby making the block available again for use for data storage operations. The present system can also mark the block as active regardless of the expected remaining cycle counts, e.g. to meet other storage conditions, which are 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.As an alternative or in addition, the present system can also provide adaptive wear leveling through the use of code rate shifting. In this case, the present system cannot perform the initial fast cycling of a respective block of each of the flash memory circuits, but can instead monitor a quality metric of each of the blocks while the quantities of blocks are used 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. When 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 degradation of the blocks that were temporarily inactive. After the code rate has been decreased for the given set of blocks, all blocks of the given set of blocks are marked as active. The present system can also decrease the code rate of a given set of blocks regardless of the number of blocks of the given set that have been marked as inactive and mark the blocks of the given set of blocks as active, e.g. to meet other storage requirements, which are 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 can implement both the initial fast cycling of a respective block from each of the flash memory circuits and code rate shifting to provide adaptive wear leveling. For example, for each block of a set of blocks, the present system can estimate an expected number of cycles before the quality metric of each block at the current code rate falls below the minimum quality value, e.g. 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, e.g. by temporarily deactivating one or more of the blocks as necessary so that most of the blocks of the set of blocks achieve the minimum quality value for the given code rate at substantially the same time. 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 again available 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 Figure 3 shows an exemplary flash memory system 100 that may implement a system for providing adaptive wear leveling, according to one or more implementations. However, not all of the components depicted are required, and one or more implementations may include additional components not shown in the figure. Modifications to the arrangement and type of components can be made without deviating from the spirit or scope of protection of the claims as set out here. Additional components, different components, or fewer components can 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 comprises one or more decoders 116 such as ECC decoders, and one or more encoders 118 such as ECC encoder. The one or more decoders 116 and / or the one or more encoders 118 can have one or more dedicated circuits of control 114 and / or can be implemented via firmware running 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 can be a wired interface such as a PCMCIA (Personal Computer Memory Card International Association) interface, a SATA (Serial AT Attachment) interface, a USB (Universal Serial Bus) interface, or in general any wired interface. As an alternative or in addition, the interface 124 be a wireless interface, such as a SATA wireless, bluetooth, or in general 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 , with the data then in one or more of the flash memory circuits 112A-N to be written. The flash memory circuits 112A-N each may include one or more physical blocks, such as NAND blocks and / or NOR blocks. The physical blocks can each include one or more physical pages. The control 114 can use the RAM 122 use to read / write data to / from the flash memory circuits 112A-N to help. For example, the RAM 122 be used as a buffer for rate control or otherwise for storing information (e.g. variable, physical block status, tables of mapping from logical to physical addresses, service life / retention data, settings, etc.) that the control 114 for reading / writing data to / from the flash memory circuits 112A-N used. Since the RAM 122 Can be volatile memory, the controller can 114 Information permanently in one or more of the flash memory circuits 112A-N to save. When the flash memory device 110 is started up, the controller can 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 implement such as security techniques (e.g. encryption), error correction coding techniques (e.g. LDPC), compression techniques, redundancy techniques (e.g. redundant independent disk array (RAID) techniques), etc. For example, the controller can 114 Use redundancy techniques by dividing logical amounts 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 stored across several of the flash memory circuits 112A-B distributed and therefore may be recoverable if one or more of the flash memory circuits fail. Exemplary logical groupings of physical blocks of the flash memory circuits 112A-N will be later referring to 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 over time with use, thereby preventing data reading from flash memory circuits 112A-N associated raw bit error rate (RBER) can increase the code rate, such as an ECC code rate or any other code rate specified by the encoder 118 used to encode each of the data items may be different 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 perform a maximum number of data transfer operations, such as program / erase (P / E) and / or read / write cycles, and the integrity of the flash memory circuits 112A-N may degrade as the cycle count increases and / or the flash Memory circuits 112A-N approach or exceed the maximum number of read and / or write operations. To account for this deterioration over time / use, the controller uses 114 Error correction coding with variable code rate, which is done by the encoder 118 Code rate used decreases when the integrity of the flash memory circuits 112A-N deteriorated in order to give the data 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 to use to write data in a given set of blocks, the controller can 114 the integrity of the blocks of the set of blocks of the flash memory circuits 112A-N monitor. The monitoring can be based, for example, on the RBER, which is the reading of data from the flash memory circuits 112A-N assigned. When the controller 114 determines that the integrity of the blocks of a set of blocks of the flash memory circuits 112A-N The control can deteriorate below a threshold amount 114 those by the encoder 118 change (e.g., decrease) the code rate used to perform error correction coding for the amount of blocks. Changing the code rate can be referred to as 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 are blocks from different flash memory circuits 112A-N each of the blocks of any set of blocks can deteriorate at different rates. If the quality metric of a block of a given set of blocks falls below the minimum acceptable quality value, the controller deactivates 114 thus temporarily the block until a certain number of blocks of the set of blocks has been deactivated. At this point the control decreases 114 the code rate for the entire set of blocks and reactivates all blocks of the set of blocks. An exemplary process for adaptive wear leveling using code rate shifting is discussed later with reference to FIG 3 discussed further. For purposes of explanation, code rates are mentioned here in general; However, code rates can refer to ECC code rates or any code rates in general.

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 can also, for example, quickly run numerous cycles of program / erase (P / E) on a single block of each of the flash memory circuits 112A-N To run. The controller can monitor a quality metric of the block (e.g., RBER, error count, time to program) to empirically determine how many cycles will be performed before the quality metric falls below a minimum acceptable quality value. The control 114 can for example 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 deactivate 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 relate to an end-of-life cycle count, for example. An exemplary process for adaptive wear leveling using empirically determined expected cycle counts is discussed later with reference to FIG 4th 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 can 114 , the decoder 116 , the encoder 118 and / or the interface 124 and / or one or more parts thereof in software (e.g. firmware, subroutines and / or code) can be implemented in hardware (e.g. an ASIC (application-specific integrated circuit), an FPGA (Field Programmable Gate Array), a PLD (programmable logic device ), a controller, an automaton, 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 Figure 12 shows exemplary logical groupings of physical blocks of flash memory circuits 112A-N in an exemplary flash memory device 110 according to one or more implementations. However, not all of the components depicted are required, and one or more implementations may include additional components not shown in the figure. The arrangement and type of components can be modified without departing from the spirit or scope of the claims presented here. Additional components, different components, or fewer components can 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 comprise 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 who have favourited Flash memory circuit 112B includes the blocks 202E-H who have favourited 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 112AN 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 210AN 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 control groups 114 the blocks 202A-P of the flash memory circuits 112AN 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 be any of the sets of blocks 210AN Use as individual RAID stripes with parity / ECC data to allow data recovery when one or more blocks 202A-P in the individual sets of blocks 210A-N break down. This allows in the flash memory circuits 112A-N written data will still be recovered if one or more of the flash memory circuits 112A-N and / or one or more of the blocks 202A-P fail in it. Any of the sets of blocks 210A-N is controlled by the controller 114 programmed and erased as a logical unit. In one or more implementations, the sets of blocks 210A-N referred to as stripes, super blocks, logical units, etc. Each of the set of blocks 210A-N can be assigned to a different code rate. The set of blocks 210A-N can initially be assigned to the same code rate as a whole; that of the set of blocks 210A-N assigned code rates can 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 2021 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 2020 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 2021 the flash memory circuit 112C and the block 202M the flash memory circuit 112N . The set 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 set 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 2020 the flash memory circuit 112N . The set 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 a status, for example by the controller 114 in RAM 122 can be saved. The status of the blocks can include, for example, active blocks, withdrawn blocks, MBBs (Manufacturer Bad Blocks), GBBs (Grown Bad Blocks) or temporarily inactive blocks, which can also be referred to as OVBs (On Vacation Blocks). Blocks that are active may be available for data storage operations (e.g. read / write); However, blocks that are withdrawn, MBBs, GBBs, or temporarily inactive may not be available for data store operations. In 2 are the blocks 202B , G, H, N that 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 can 114 and / or the interface 124 and / or one or more parts thereof in software (e.g. firmware, subroutines and / or code) can be implemented in hardware (e.g. an ASIC (application-specific integrated circuit), an FPGA (Field Programmable Gate Array), a PLD (programmable logic device ), a controller, an automaton, 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 Figure 3 shows a flow diagram of an exemplary process 300 adaptive wear leveling using code rate shifting according to one or more implementations. For purposes of illustration, the exemplary process 300 here with reference to the controller 114 from 1 and 2 described; the exemplary process 300 however, is 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 114 are executed. Further, for purposes of illustration, the blocks of the exemplary process 300 described here as occurring in series or linearly. However, there can be multiple blocks of the exemplary process 300 occur in parallel. You must also include the blocks of the exemplary process 300 may not be performed in the order shown and / or one or more of the blocks of the exemplary process 300 do not need to be run.

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 arranges the control 114 the blocks 202A-P of the flash memory circuits 112A-N in sets of blocks 210A-N at, taking any lot of blocks 210A-N one of the blocks 202A-P from 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 can 114 the amount of blocks 210A-N when starting to arrange and / or control 114 can with the arrangement of the set of blocks 210A-N can be pre-configured. 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-N to use. The code rate can initially be for each of the Sets of blocks 210A-N be the same but can change over time in use. The blocks 202A-P of the flash memory circuits 112A-N can all be initially 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 sets of blocks 210A-N to perform data storage operations initiated by the host device 130 specified (304). The data store operations can include one or more read and / or write operations on one or more of the sets of blocks 210A-N and the data storage operations can be performed on the blocks 202A-P of sets of blocks 210A-N that are marked as active are limited. The data storage operations can also result in one or more background operations, such as garbage collection, that require one or more cycles of programming / erasing 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 can include, for example, RBER, error count, time to program, and so on. The control 114 determines whether the quality metric for a block, such as the block 202B , one of the sets of blocks, such as the set of blocks 210B , falls below the minimum quality value ( 308 ). The minimum quality value can be, for example, the maximum RBER that can be sustained while adhering to predetermined performance constraints, 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.When 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 , falls below the minimum quality value ( 308 ), the control shifts 114 all valid data in the block 202B e.g. in another active block ( 310 ). The control 114 marks the block 202B then as temporarily inactive ( 312 ). For example, the controller can 114 a status of the block 202B that is in RAM 122 will 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 set of blocks 210B is below a threshold of the minimum number of active blocks. The threshold can be based on the code rate, the amount of blocks 210B is assigned (314). For example, the controller can 114 one through each of the sets of blocks 210A-N Set the minimum available data capacity to be maintained. The available data capacity for a given set of blocks can 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).When the controller 114 determines the number of remaining active blocks 202F , J the set of blocks 210B for the code rate is below the threshold of the minimum number of active blocks ( 314 ), decreases the control 114 that of the set of blocks 210B assigned code rate ( 320 ) to reduce the quality of the temporarily inactive blocks 202B , N the set of blocks 210B to compensate. After reducing the code rate ( 320 ) marks the control 114 all temporarily inactive blocks 202B , N the set of blocks 210B as active, so 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.When the controller 114 that determines the number of active blocks 202F , J in the set of blocks 210B does not fall below the threshold of the minimum number of active blocks ( 314 ), determines the control 114 whether the total number of active blocks 202A-P across 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 be 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 (318-322), bis die Gesamtzahl aktiver Blöcke über alle Flash-Speicherschaltungen 112AN hinweg die Schwelle der Mindestzahl aktiver Blöcke übersteigt (316).When 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, the controller searches 114 after one of the sets of blocks 210A-N , such as the amount of blocks 210B that has one or more temporarily inactive blocks ( 318 ). For example, the controller can 114 after one of the sets of blocks 210A-N look that is relative to the other sets of blocks 210A-N has the highest number of temporarily inactive blocks. On the identification of a lot of blocks 210B down the control 114 the code rate of the identified set of blocks 210B ( 320 ), marks all temporarily inactive blocks 202B , N the set of blocks 210B as active ( 322 ) and repeat the process ( 318-322 ) until the total number of active blocks across all flash memory circuits 112AN 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. 4th Figure 3 shows a flow diagram of an exemplary process 400 of adaptive wear leveling using empirical certain expected cycle counts according to one or more implementations. For purposes of illustration, the exemplary process 400 here with reference to the controller 114 from 1 and 2 described; the exemplary process 400 however, is 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 114 are executed. Further, for purposes of illustration, the blocks of the exemplary process 400 described here as occurring in series or linearly. However, there can be multiple blocks of the exemplary process 400 occur in parallel. You must also include the blocks of the exemplary process 400 may not be performed in the order shown and / or one or more of the blocks of the exemplary process 400 do not need to be run.

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 controls 114 the first flash memory circuit 112A the flash memory device 110 out ( 402 ). The control 114 performs fast programming / erasing (P / E) cycles on a block 202A from the first flash memory circuit 112A off until one of the block 202A associated quality metric falls below a minimum quality value (404). The quality metric can be, for example, RBER, error count, time to program, etc. 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 caused the quality metric of the block 202A falls 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 (404-408). 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 is any additional flash memory circuitry 112B-N in the flash memory device 110 gives ( 410 ). When the controller 114 determines that there will be additional flash memory circuits 112B-N in the flash memory device 110 there, the controller chooses 114 the next flash memory circuit 112B out ( 412 ) and repeat the process ( 404-408 ). When the controller 114 determines that there are no more flash memory circuits 112A-N in the flash memory device 110 there, the controller assigns 114 the blocks 202A-P of the flash memory circuits 112A-N in sets of blocks 210A-N at, taking any lot of blocks 210A-N one block from each of the flash memory circuits 112A-N includes ( 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 sets of blocks 210A-N to perform data storage operations initiated by the host device 130 be specified ( 420 ). The data store operations can include one or more read and / or write operations on one or more of the sets of blocks 210A-N and the data storage operations can be performed on the blocks 202A-P of sets of blocks 210A-N that are marked as active are limited. The data storage operations can also result in one or more background operations, such as garbage collection, that require one or more cycles of programming / erasing 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 210AN, 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 to be determined. The control 114 temporarily deactivates one or more blocks 202A-P each of the sets of blocks 210AN as necessary to get balanced remaining cycle counts of the blocks 202A-P each of the sets of blocks 210A-N while also 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 set of blocks 210A falls, the block can 202A can be set to temporarily inactive. The block 202A can remain temporarily inactive until the expected remaining cycle counts from one or more of the other blocks 202E , I, M of the set of blocks 210A the expected remaining cycle count of the block 202A catch up (or fall within a threshold). At this point the block can 202A 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 however, below a minimum number of active blocks for the set of blocks 210A falls, the block can 202A marked as active regardless of the expected remaining cycles of the other blocks 202E , I, M the block 202A catch up.

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 whether a total number of active blocks 202A-P in the flash memory device 110 has fallen below a minimum number of active blocks (426). When the controller 114 determines that the total number of active blocks 202A-P in the flash memory device 110 under the minimum number of active blocks has fallen (426), the controller is activated 114 some of the temporarily inactive blocks at least some of the sets of blocks 210A-N , for example, regardless of expected remaining cycles, 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 realized in whole or in part 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 can 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 can be any storage medium that can be read and written to or otherwise accessed by general purpose or special purpose computing apparatus, including any processing electronics and / or processing circuitry capable of executing instructions. For example and without limitation, the computer readable medium can include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM. The computer readable medium can also include any non-volatile semiconductor memory such as ROM, PROM, EPROM, EEPROM, NVRAM, Flash, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, Racetrack memory, FJG and Millipede store.

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 can include any non-semiconductor storage medium, such as optical disk storage, magnetic disk storage, magnetic tape, other magnetic storage devices, or any other medium capable of storing one or more instructions. In some implementations, the tangible computer readable storage medium may be coupled directly to a computing device, while in other implementations the tangible computer readable storage medium may e.g. may be indirectly coupled to a computing 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.Statements can be directly executable or can be used to develop executable statements. For example, instructions can be implemented as executable or non-executable machine code or as high-level language instructions that can be compiled to produce executable or non-executable machine code. Furthermore, instructions can also be implemented as data or can include such. Computer-executable instructions can 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, The structure, sequence and organization of instructions can 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 mainly relates to microprocessors or multi-core processors that execute software, one or more implementations are carried out 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 that are 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.Those skilled in the art will recognize that the various example blocks, modules, elements, components, methods, and algorithms described herein can be implemented as electronic hardware, computer software, or combinations of both. In order to illustrate this interchangeability of hardware and software, various exemplary blocks, modules, elements, components, methods, and algorithms have been described above in general with regard to their functionality. Whether such functionality is implemented as hardware or software depends on the specific application and design constraints that are imposed on the overall system. Those skilled in the art can implement the functionality described in different ways for each specific application. Various components and blocks can be rearranged (e.g., arranged in a different order or divided in a different way) without, in each case, 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 should be understood that any specific order or hierarchy of blocks in the disclosed processes is an illustration of example approaches. Based on design preferences, it will be understood that the specific order or hierarchy of blocks in the processes can be rearranged or that all of the represented blocks can be executed. Any of the blocks can be executed at the same time. In one or more implementations, multitasking and parallel processing may be beneficial. Also should be the separation of different System components in the embodiments described above are not to be construed as requiring such separation in all embodiments, and it is to be understood that the program components and systems described can generally be integrated together in a single software product or packaged into multiple software products.

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 any claims of this application, the terms "base station", "receiver", "computer", "server", "processor" and "memory" all refer to electronic or other technological devices . These terms exclude people or groups of people. 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 term "at least one of" preceding a series of items, with the term "and" or "or" to separate any of the items, modifies the list as a whole, rather than each element of the list (i.e., each item) . The phrase "at least one of" does not require selecting at least one of each of the items listed; instead, the term allows for a meaning that includes at least one of any of the items and / or at least one of any combination of the items and / or at least one of any of the items. For example, the terms "at least one of A, B and C" or "at least one of" A, B or C "each refer to only A, only B, or only C; any combination of A, B and C; and / or at least one of 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 for”, “operable for” and “programmed for” do not require any concrete, tangible or intangible modification of a subject, but should instead be used interchangeably. In one or more implementations, a processor designed to monitor and control an operation or 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 can be thought of 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 an aspect, the aspect, another aspect, some aspect, 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 variations thereof, and the like are for convenience and are not intended to imply any such expression or disclosure relating to such expressions is essential to the present technology or that such disclosure applies to all configurations of the present technology. A disclosure regarding such a term or such terms may apply to all configurations or to one or more configurations. A disclosure relating to such a term or expressions may give one or more examples. A term, such as an aspect or some aspects, can refer to one or more aspects and vice versa, and the same applies to other expressions 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 here 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. Further, to the extent that the term “contain”, “have” or the like is used in the specification or claims, such term is intended to be inclusive in a manner similar to the term “comprise” since “comprise” is interpreted when used as a transitional word is used in a claim.

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. Various modifications to these aspects will readily occur to those skilled in the art, and the generic principles defined herein can be applied to other aspects. The claims are therefore not to be restricted to the aspects shown here, but are to be given the full scope of protection compatible with the language claims, whereby mention of an element in the singular is not intended to mean “one and only one”, unless it is specifically stated as such, but “ one or more ". Unless specifically stated otherwise, the term “some” refers to one or more. Male pronouns (e.g. his) include the feminine and neutral gender (e.g. her and his) and vice versa. Any titles and subtitles are provided for convenience only and do not limit the present disclosure.

Claims (21)

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; Bestimmen, dass mindestens ein Kriterium erfüllt ist, wenn für eine 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, wobei jede der Mengen von Blöcken der Coderate zugeordnet ist; und wenn das mindestens eine 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, each of the sets of blocks including at least one block from each of the flash memory circuits and at least some of the blocks of at least some of the sets of blocks being marked active, the at least some of the blocks that at least some of the sets of blocks marked active are used for data storage operations; Monitoring quality metrics of each block 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 as active are being used for 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, the one of the blocks of the one of the sets of blocks not being used for the data storage operations while it is marked as temporarily inactive; Determining that at least one criterion is met if, for a code rate assigned to one of the sets of blocks, a number of the blocks of the one of the sets of blocks that are marked as active falls below a minimum number of active blocks, each of the sets of blocks the code rate is assigned; and if the at least one criterion is met, marking the one of the blocks of the one of the sets of blocks as active, the one of the blocks of the one of the sets of blocks being reused for the data storage operations while it is marked as active. Vorrichtung nach Anspruch 1, wobei der mindestens eine Prozessor ferner ausgelegt ist 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.Device according to Claim 1 wherein the at least one processor is further configured, in response to determining that the criterion is met, reducing the code rate associated with the 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 temporarily inactive as active, wherein any blocks of the one of the sets of blocks marked active are reused for the data storage operations become. 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.Device according to Claim 2 , where the minimum number of active blocks for the code rate is smaller than another minimum number of active blocks for the reduced code rate. Vorrichtung nach Anspruch 2 oder 3, 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.Device according to Claim 2 or 3 wherein the at least one processor is further configured to determine that the at least one criterion is met when a current 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 temporarily inactive; Reducing the code rate associated with the identified at least one of the sets of blocks; and in response to reducing the code rate, marking any blocks of the at least one of the sets of blocks marked as temporarily inactive as active, with any blocks of the at least one of the sets of blocks marked as active again for the Data storage operations can 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.Device according to Claim 4 wherein the at least one processor is further configured to repeat the identifying, reducing and marking until the current storage capacity over the entire set of blocks exceeds the minimum storage capacity. Vorrichtung nach Anspruch 4 oder 5, 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.Device according to Claim 4 or 5 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 einem der Ansprüche 4 bis 6, 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.Device according to one of the Claims 4 to 6th 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 greatest relative to another of the sets of blocks Includes number of temporarily inactive blocks. Vorrichtung nach einem der vorherigen Ansprüche, 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.Device according to one of the preceding claims, 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 prior to marking the one of the blocks of the one of the sets of blocks as temporarily inactive. Vorrichtung nach einem der vorherigen Ansprüche, 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.Apparatus according to any preceding claim, wherein the apparatus further comprises at least one random access memory circuit and the flash memory circuits comprising blocks of physical blocks of the flash memory circuits and the at least one processor is further configured to 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 at least indicating whether each block of each of the sets of blocks is marked as active or is marked as temporarily inactive. Vorrichtung nach einem der vorherigen Ansprüche, wobei die Qualitätsmetrik einen Fehlerzählwert und/oder eine Fehlerrate und/oder eine Zeit zum Programmieren umfasst.Device according to one of the preceding claims, wherein the quality metric comprises an error count and / or an error rate and / or a time for programming. Vorrichtung nach einem der vorherigen Ansprüche, wobei der mindestens eine Prozessor ausgelegt ist zum Anordnen der Blöcke der Flash-Speicherschaltungen in die Mengen von Blöcken.Device according to one of the preceding claims, 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; Bestimmen, dass mindestens ein zweites Kriterium erfüllt ist, wenn eine Anzahl der Blöcke einer der Mengen von Blöcken, die als aktiv markiert sind, unter eine Mindestzahl aktiver Blöcke für eine Coderate fällt, die der einen der Mengen von Blöcken zugeordnet ist, wobei jeder der Mengen von Blöcken der Coderate zugeordnet 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 from a plurality of flash memory circuits for data storage operations, each of the sets of blocks including at least one block from each of the plurality of flash memory circuits and at least some of the blocks 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 as 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 the at least some of the blocks of the at least some of the sets of blocks marked active are being used 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 including 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, the one of the blocks of the one of the sets of blocks not being used for data storage operations while marked as temporarily inactive; Determine that at least a second criterion is met when a number of the blocks of one of the sets of blocks marked as active falls below a minimum number of active blocks for a code rate associated with the one of the sets of blocks, each of the Sets of blocks are assigned the code rate; and Marking the one of the blocks of the one of the sets of blocks as active when at least a second criterion is met, the one of the blocks of the one of the sets of blocks being reused for the data storage operations while it is 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.Procedure according to Claim 12 wherein the remaining cycle count of the one of the blocks of the one of the sets of 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 by a threshold number of cycles from another remaining cycle count of another of the blocks one of the sets of blocks is different. 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.Procedure according to Claim 13 , further comprising: determining that the at least one second criterion is met if the remaining cycle count associated with the one of the blocks of the one of the sets of blocks is equal to the other remaining cycle count associated with the other of the blocks of the one of the sets of blocks. Verfahren nach einem der Ansprüche 12 bis 14, ferner umfassend: 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 Lese- oder Schreiboperationen, 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 Assoziation mit jedem der Blöcke jeder der Vielzahl von Flash-Speicherschaltungen.Method according to one of the Claims 12 to 14th further comprising: 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 read or write 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 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 Zyklieren des jeweiligen Blocks jeder der Vielzahl von Flash-Speicherschaltungen.Procedure according to Claim 15 further comprising: marking the respective block of each of the plurality of flash memory circuits as inactive after cycling the respective block of each of the plurality of flash memory circuits. Verfahren nach Anspruch 15 oder 16, 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.Procedure according to Claim 15 or 16 , 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 einem der Ansprüche 12 bis 17, 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.Method according to one of the Claims 12 to 17th , further comprising: determining that the at least one second criterion is met if 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 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; Code 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; Code zum Bestimmen, wann die Qualitätsmetrik eines der Blöcke einer der Mengen von Blöcken unter einen Mindestqualitätswert fällt; Code 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; Code 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, wobei jede der Mengen von Blöcken der Coderate zugeordnet ist; und Code zum Markieren des einen der Blöcke der einen der Mengen von Blöcken als aktiv, wenn das mindestens eine 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.A computer program product comprising code stored in a non-transitory computer readable storage medium, the code comprising: Code for using sets of blocks of flash memory circuits for data storage operations, each of the sets of blocks including at least one block from each of the flash memory circuits and at least some of the blocks of at least some of the sets of blocks being marked as active, the at least some the blocks of the at least some of the sets of blocks marked active are used for the data storage operations; Code for monitoring quality metrics of each block 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 that are marked active are used for data storage operations; Code for determining when the quality metric of one of the blocks of one of the sets of blocks falls below a minimum quality value; Code for marking the one of the blocks of the one of the sets of blocks as temporarily inactive, the one of the blocks of the one of the sets of blocks not being used for data storage operations while it is marked as temporarily inactive; Code for determining that the at least one criterion is met if, for the code rate assigned to the one of the sets of blocks, a number of the blocks of the one of the sets of blocks that are marked as active falls below a minimum number of active blocks, each of the Sets of blocks are assigned the code rate; and Code for marking the one of the blocks of the one of the sets of blocks as active when the at least one criterion is met, the one of the blocks of the one of the sets of blocks being reused for data storage operations while it is marked as active. Computerprogrammprodukt nach Anspruch 19, wobei der Code ferner Folgendes umfasst: Code zum Verringern der der einen der Mengen von Blöcken zugeordneten Coderate, wenn das Kriterium erfüllt ist; und Code zum Markieren jeglicher Blöcke der einen der Mengen von Blöcken, die als vorübergehend inaktiv markiert sind, als aktiv, wenn die Coderate verringert wurde, wobei jegliche Blöcke der einen der Mengen von Blöcken, die als aktiv markiert sind, wieder für die Datenspeicherungsoperationen benutzt werden.Computer program product according to Claim 19 the code further comprising: code for decreasing the code rate associated with the one of the sets of blocks when the criterion is met; and code for marking any blocks of the one of the sets of blocks marked temporarily inactive as active when the code rate has been decreased, wherein any blocks of the one of the sets of blocks marked active are reused for the data storage operations become. 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; Bestimmen, dass mindestens ein Kriterium erfüllt ist, wenn für eine 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, wobei jede der Mengen von Blöcken der Coderate zugeordnet ist; und Markieren des einen der Blöcke der einen der Mengen der Blöcke als aktiv in der Datenstruktur, wenn das mindestens eine 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 including blocks; a random access memory (RAM) configured to store a data structure including a status of each of the blocks of each of the plurality of flash memory circuits, the status of each of the blocks of each of the plurality of flash memory circuits at least indicating whether each of the blocks of each of the plurality marked as active or temporarily inactive by flash memory circuits; an interface communicatively coupled to a host device; and a controller configured to use amounts of the blocks of the plurality of flash memory circuits for data storage operations indicated by the host device, each of the amounts of the blocks including at least one block from each of the plurality of flash memory circuits and at least some marking the blocks of at least some of the sets of blocks in the data structure as 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 the at least some of the blocks of the at least some of the sets of the blocks marked active in the data structure are being used for the data storage operations; Determining when the quality metric of one of the blocks of one of the sets of the blocks falls below a minimum quality value; Marking the one of the one of the sets of blocks in the data structure as temporarily inactive, the one of the blocks of the one of the sets of blocks not being used for data storage operations while it is marked as temporarily inactive in the data structure; Determining that at least one criterion is met if, for a code rate assigned to one of the sets of blocks, a number of the blocks of the one of the sets of blocks that are marked as active falls below a minimum number of active blocks, each of the sets of blocks the code rate is assigned; and marking the one of the blocks of the one of the sets of blocks as active in the data structure when the at least one criterion is met, the one of the blocks of the one of the sets of blocks being reused for the data storage operations while it is in the data structure as active 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 DE102017112560A1 (en) 2018-02-01
DE102017112560B4 true 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)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8843698B2 (en) * 2007-12-05 2014-09-23 Densbits Technologies Ltd. Systems and methods for temporarily retiring memory portions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8843698B2 (en) * 2007-12-05 2014-09-23 Densbits Technologies Ltd. Systems and methods for temporarily retiring memory portions

Also Published As

Publication number Publication date
DE102017112560A1 (en) 2018-02-01

Similar Documents

Publication Publication Date Title
DE112014004761B4 (en) Influencing wear leveling in storage systems
DE102017120840B4 (en) Method and device for detecting and handling reading disorders
DE102017001433B4 (en) Systems and methods for adaptive read level adjustment
DE112016005869T5 (en) Predictive memory maintenance
DE112011103295B4 (en) Decoding in solid-state storage devices
DE112011100371B4 (en) Method, device and computer program product for decoding a code word
DE112020006139T5 (en) PRE-READ AND READ THRESHOLD VOLTAGE OPTIMIZATION
DE112011102160B4 (en) Wear-leveling in cells / pages / subpages / blocks of a memory
DE112010004656B4 (en) In-block compensation for decreasing functionality of memories
DE102020112512A1 (en) Data storage device and operating methods therefor
DE112016002631B4 (en) Memory health monitoring
DE102013109235A1 (en) An abnormal word line detector flash memory system and method for detecting an abnormal word line
DE112020006215T5 (en) Block family based error prevention for memory devices
DE102010037290A1 (en) Memory systems and methods for detecting a distribution of unstable memory cells
DE112020000230T5 (en) DATA STORAGE DEVICE WITH DYNAMIC STRIP LENGTH MANAGER
DE112019000162T5 (en) Method for maximizing power efficiency in a block of a memory interface
DE102018105440A1 (en) Power failure treatment using stop commands
DE112021000776T5 (en) MANAGEMENT OF WRITE OPERATIONS IN A NON-VOLATILE MEMORY DEVICE USING A VARIABLE READ-OUT VOLTAGE LEVEL
DE112020004958T5 (en) DYNAMIC ZONE ACTIVE LIMIT FOR OPEN CNS
DE112019000161T5 (en) MEMORY CACHE MANAGEMENT
DE112020005787T5 (en) IMPROVED FILE SYSTEM SUPPORT FOR ZONE NAMESPACE STORAGE
DE112018002500T5 (en) Storage array for hybrid data
DE102018115199A1 (en) METHOD FOR MAXIMIZING THE FREQUENCY DURING A DATA INTEGRITY TEST ON A PHYSICAL INTERFACE BUS
DE102017120826A1 (en) A method and apparatus for monitoring memory using a background media scan
DE102018124836A1 (en) NEW STORAGE BLOCK

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