DE112006004187T5 - Initativer Abnutzungsausgleich für einen nicht-flüchtigen Speicher - Google Patents

Initativer Abnutzungsausgleich für einen nicht-flüchtigen Speicher Download PDF

Info

Publication number
DE112006004187T5
DE112006004187T5 DE112006004187T DE112006004187T DE112006004187T5 DE 112006004187 T5 DE112006004187 T5 DE 112006004187T5 DE 112006004187 T DE112006004187 T DE 112006004187T DE 112006004187 T DE112006004187 T DE 112006004187T DE 112006004187 T5 DE112006004187 T5 DE 112006004187T5
Authority
DE
Germany
Prior art keywords
memory
blocks
block
block address
erase cycles
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112006004187T
Other languages
English (en)
Other versions
DE112006004187B4 (de
Inventor
Guangqing You
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112006004187T5 publication Critical patent/DE112006004187T5/de
Application granted granted Critical
Publication of DE112006004187B4 publication Critical patent/DE112006004187B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Verfahren zum Abnutzungsausgleich eines nicht-flüchtigen Speichers, umfassend:
Zählen von Löschzyklen für jeden einer Vielzahl von Speicherblöcken eines nicht-flüchtigen Speichers, wobei das Zählen von Löschzyklen für jeden Speicherblock enthält:
Erhöhen eines ersten Zählers für eine physikalische Blockadresse des Speicherblocks, und,
wenn der Speicherblock kein freier Speicherblock ist, Erhöhen eines zweiten Zählers für eine logische Blockadresse des Speicherblocks; und
Ermitteln, ob der nicht-flüchtige Speicher eine ungleichmäßige Abnutzung von Speicherblöcken aufweist, basierend zumindest zum Teil auf dem Zählen der Löschzyklen der Vielzahl von Speicherblöcken.

Description

  • GEBIET
  • Ausführungsformen der Erfindungen betreffen Computerspeicher. Genauer gesagt betreffen Ausführungsformen der Erfindung den Abnutzungsausgleich für einen nicht-flüchtigen Speicher.
  • HINTERGRUND
  • Bei Computer- und Elektrogeräteoperationen können Flash-Speicher und ähnliche nicht-flüchtige Speicher große Vorteile bei der Erhaltung von Daten bieten, indem sie einen Kleinleistungsbetrieb mit geringen Kosten und hoher Dichte liefern. Da Daten in einem kompakten Format gespeichert werden, das im Betrieb minimale Leistung benötigt und zur Aufrechterhaltung der Speicherung keinen Strom benötigt, wird ein derartiger Speicher in einer zunehmenden Anzahl von Anwendungen verwendet.
  • Der nicht-flüchtige Speicher weist jedoch im Betrieb gewisse Kehrseiten auf. Zum Beispiel weist ein Speicher, wie zum Beispiel Flash-Speicher, eine begrenzte Lebensdauer im Gebrauch auf, weil ein derartiger Speicher dazu neigt, mit jedem Schreibzyklus schlechter zu werden. Wenn ein bestimmter Abschnitt des Speichers mehr Speicheroperationen als andere Abschnitte des Speichers unterzogen wird, dann werden aus diesem Grund die Abschnitte mit einer größeren Anzahl von Schreibvorgängen dazu neigen, schlechter zu werden und letztendlich schneller zu versagen.
  • Zur Verlängerung der gesamten Lebensdauer eines Flash-Speichers kann ein Abnutzungsausgleichsprozess implementiert werden. Der Abnutzungsausgleichsprozess soll für eine gleichmäßigere Verteilung der Abnutzung der Speichereinrichtung durch Lenken von Schreiboperationen zu weniger verwendeten Abschnitten des Speichers führen. Dieser Prozess kann durch den Speichercontroller abgewickelt werden, wobei das Host-System von dem Prozess nichts weiß.
  • Abnutzungsausgleich kann einen Algorithmus zum Neuzuordnen von logischen Blockadressen zu unterschiedlichen physikalischen Blockadressen in dem Halbleiterspeicher-Array der Einrichtung enthalten. Der verwendete Algorithmus kann jedoch die Effizienz des Speicherbetriebs und die Effektivität des Abnutzungsausgleichsprozesses erheblich beeinträchtigen. Punkte, wie die zeitliche Steuerung von Neuzuordnungsprozessen, die Art, in der die geeigneten physikalischen Bereiche für eine Neuzuordnung identifiziert werden, und damit zusammenhängende Punkte können den Speicherbetrieb erheblich beeinträchtigen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Ausführungsformen der Erfindung werden beispielhaft und nicht beschränkend in den Figuren der beigefügten Zeichnungen dargestellt, in denen sich gleiche Bezugszahlen auf gleiche Elemente beziehen:
  • 1 zeigt eine Darstellung einer Ausführungsform eines nicht-flüchtigen Speichers;
  • 2 zeigt ein Flussdiagramm, das eine Ausführungsform eines Abnutzungsausgleichsprozesses darstellt;
  • 3A zeigt eine Darstellung einer Regressionslinie, die für einen nicht-flüchtigen Speicher vor Abnutzungsausgleich generiert ist;
  • 3B zeigt eine Darstellung einer Regressionslinie, die für einen nicht-flüchtigen Speicher generiert ist, nachdem eine Ausführungsform von Abnutzungsausgleich implementiert wurde;
  • 4 bis 7 zeigen ein Beispiel für Speicherblockwiederbeanspruchungsoperationen in einer Ausführungsform eines Abnutzungsausgleichsprozesses;
  • 8 zeigt eine Darstellung einer Ausführungsform einer nicht-flüchtigen Speichervorrichtung; und
  • 9 zeigt eine Darstellung eines Computersystems, das eine Ausführungsform der Erfindung verwendet.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine Ausführungsform der Erfindung betrifft initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher.
  • In der hierin verwendeten Form bedeutet:
    • „nicht-flüchtiger Speicher” Speicher, der Speicherinhalte aufrechterhält, wenn der Speicher nicht mit Strom versorgt wird. Nicht-flüchtiger Speicher schließt Flash-Speicher ein.
    • „Flash-Speicher” nicht-flüchtiger Computerspeicher, der elektrisch gelöscht und neu programmiert werden kann. Flash-Speicher speichert Informationen in einem Array von Transistoren mit schwebendem Gate (floating gate transistors), „Zellen” genannt, von denen jeder ein oder mehr Bits an Information speichert. In der hierin verwendeten Form kann „Flash-Speicher” irgendeine der Technologien zur Flash-Speicher-Ablage einschließen. Zum Beispiel kann ein Flash-Speicher NOR- und NAND-Technologie-Speicher einschließen. Zusätzlich kann Flash-Speicher Technologien einschließen, die variierende Zahlen von Bits an Information pro Speicherzelle liefern, einschließlich ein-Bit-pro-Zelle-Flash-Speicher (single-bit-per-cell flash memory) und Mehrebenenzellstruktur (multi-level cell structure), die mehrere Bits pro Zelle zulässt.
    • „Abnutzung” die Nutzung eines nicht-flüchtigen Speichers.
    • „Block” ein Abschnitt einer nicht-flüchtigen Speicheranordnung (non-volatile memory array), der im Betrieb gelöscht werden kann, wobei der Block mehrere Zellen enthält. Einzelne Zellen eines gelöschten Flash-Speicherblocks können programmiert werden, aber Zellen in einem Block eines Flash-Speichers können nur durch Löschen des gesamten Speicherblocks geändert werden.
  • In einer Ausführungsform der Erfindung wird der ungleichmäßigen Abnutzung von Flash- oder anderen nicht-flüchtigen Speichern durch Verwendung eines Abnutzungsausgleichsprozesses begegnet. In einer Ausführungsform der Erfindung wird Abnutzungsausgleich durch Tauschen von Daten aus einer Gruppe von am meisten abgenutzten Speicherblöcken gegen Daten aus einer Gruppe von am wenigstens abgenutzten Speicherblöcken implementiert. In einer Ausführungsform enthält ein Abnutzungsausgleichsprozess für einen nicht-flüchtigen Speicher die Pflege von Zählern für Löschoperationen für Speicherblöcke sowohl für jede physikalische Blockadresse als auch für jede logische Blockadresse. In einer Ausführungsform wird der Abnutzungsausgleichsprozess in bestimmten Intervallen ausgelöst, wenn ermittelt worden ist, dass eine Steigung einer Linie, die den Zähler für Löschen von physikalischen Blöcken und den Zähler für Löschen von logischen Blöcken jedes Speicherblocks repräsentiert, größer als ein bestimmter Schwellenwert ist.
  • Ein nicht-flüchtiger Speicher, wie zum Beispiel Flash-Speicher, weist im Betrieb Einschränkungen auf, weil der Speicher nur eine bestimmte endliche Zahl von Lösch-Schreib-Zyklen zulassen wird und es notwendig ist, einen Block zu löschen, bevor irgendwelche Daten in die Zellen des Blocks geschrieben werden. Zum Beispiel wird bei den meisten kommerziell erhältlichen Flash-Produkten garantiert, dass sie 1 Million Programmierzyklen aushalten. Aus diesem Grund sollte man Vorsicht walten lassen, wenn man festplattengestützte Anwendungen, wie zum Beispiel Betriebssysteme, auf Flash-Speichergestützte Einrichtungen, wie zum Beispiel CompactFlash, umstellt. Der Effekt der ungleichen Abnutzung kann durch bestimmte Chip-Firmware oder Dateisystemtreiber durch Zählen der Schreibvorgänge und dynamisches Neuzuordnen der Blöcke, um die Schreiboperationen auf die Sektoren zu verteilen, oder durch Schreibverifikation und Neuzuordnung von freien Sektoren im Fall von Schreibfehlern teilweise kompensiert werden. Mit der Zeit wird jedoch eine Variation der Aktivität von Daten allgemein zu einer ungleichen Abnutzung führen.
  • Es wird auch allgemein empfohlen, im Betrieb von nicht-flüchtigen Speichern einen Abnutzungsausgleichsprozess oder -algorithmus zu implementieren, um die Anzahl von Schreibzyklen, die pro Speicherblock auftreten, zu überwachen und zu verteilen. Dies ist für schreibintensive Anwendungen besonders wichtig. Wenn kein Abnutzungsausgleich implementiert ist, dann können Speicherblöcke mit sehr unterschiedlichen Raten verwendet werden. Blöcke mit langlebigen Daten müssen nicht so viele Lösch-Schreib-Zyklen wie die Blöcke mit sich häufig ändernden Daten aushalten. Der Abnutzungsausgleichsprozess soll sicherstellen, dass alle verfügbaren Schreibzyklen für jeden Block allgemein gleichmäßig verwendet werden. Allgemein kann Abnutzungsausgleich den Austausch von Daten zwischen Speicherblöcken einschließen.
  • In einer Ausführungsform der Erfindung ist ein Abnutzungsausgleichsprozess (der als IWL(Initiative Wear Leveling) bezeichnet werden kann) in einem nicht-flüchtigen Speicher implementiert. In einer Ausführungsform der Erfindung kann der Abnutzungsausgleich für einen nicht-flüchtigen Speicher den Austausch von Gruppen von Speicherblöcken statt einzelner Speicherblöcke einschließen. In dieser Ausführungsform kann eine erste Gruppe die am stärksten abgenutzten Speicherblöcke eines nicht-flüchtigen Speichers repräsentierten und kann eine zweite Gruppe die am wenigstens abgenutzten Speicherblöcke repräsentieren. Die Daten können unter Blöcken in genannten Gruppen ausgetauscht werden.
  • In einer Ausführungsform der Erfindung schließt ein Prozess zum Abnutzungsausgleich für einen nicht-flüchtigen Speicher das Aufzeichnen der Anzahl von Löschoperationen für Speicherblöcke sowohl für physikalische als auch logische Adressen ein. In einer Ausführungsform wird zusätzlich zum Pflegen bzw. Aufbewahren eines PBEC(Physical Block Erase Count)-Werts zum Verfolgen, wieviele Wiederanspruchungsoperationen an einem physikalischem Block erfolgt sind, ein LBEC(Logical Block Erase Count)-Wert gepflegt, der durch einen logischen Blockindex für jeden Speicherblock indiziert wird, um die Änderungshäufigkeit von Daten pro logischen Block zu verfolgen. Auf diese Weise werden, jedesmal wenn ein Speicherblock wiederbeansprucht wird, seine PBEC- und LBEC-Werte jeweils um 1 erhöht.
  • In einer Ausführungsform gilt das folgende hinsichtlich der PBEC- und LBEC-Werte:
    • 1. PBEC-Inkrement = LBEC-Inkrement (das Wiederbeanspruchen eines Speicherblocks wird zu einer Erhöhung von sowohl PBEC als LBEC führen)
    • 2. Summe des gesamten PBEC für die Einrichtung ≥ Summe des gesamten LBEC für die Einrichtung
    • 3. Summe des gesamten PBEC für die Einrichtung = Summe des gesamten LBEC für die Einrichtung, wenn das Dateisystem auf einem frischen Speicher initiiert wird.
  • Wenn ein Dateisystem initialisiert und abgeschaltet wird und kein Formatieren des Speichers stattgefunden hat, sind die LBEC- und PBEC-Werte gleich. Wenn ein Speicher formatiert wird, bevor ein Dateisystem initialisiert wird, dann kann angenommen werden, dass die PBEC-Werte beibehalten oder neu gespeichert werden, nachdem die Formatierung abgeschlossen ist. Die LBEC-Werte können jedoch gelöscht werden, weil die Blockdaten gelöscht werden. Da die Blockdaten in diesem Fall verwendet werden, um zu reflektieren, wie aktiv die Daten sind, besteht kein Grund, deren LBEC zu speichern, nachdem die Daten gelöscht worden sind. Folglich gilt für einen frischen/neuen/vollkommen gelöschten Speicher: Die Summe (LBEC) = Summe (PBEC). Wenn eine Formatierung der Einrichtung erfolgt ist, sind die LBECs gelöscht worden und wird nachfolgend die Summe (PBEC) größer als die Summe (LBEC) sein.
  • In einer Ausführungsform der Erfindung wird ein PBEC-Feld zum Verfolgen verwendet, wie viele Wiederbeanspruchungsoperationen an jedem physikalischen Block erfolgt sind. In einer Ausführungsform wird ein zusätzliches LBEC-Feld durch einen logischen Blockindex indiziert, um die Änderungshäufigkeit von Daten durch einen logischen Block zu verfolgen. Somit wird jedesmal, wenn ein logischer Datenblock wiederbeansprucht wird, sein LBEC um eins erhöht, sowie der PBEC für den relevanten physikalischen Datenblock um eins erhöht. In einer Ausführungsform ist:
    • (1) PBEC-Inkrement = LBEC-Inkrement – jedes wird um eins erhöht, jedesmal wenn ein Block wiederbeansprucht wird.
    • (2) Summe vom gesamten PBEC ≥ Summe von gesamtem LBEC
    • (3) Summe von gesamtem PBEC = Summe von gesamtem LBEC, wenn das Dateisystem auf einem frischen Flash initialisiert wird.
  • In einer Ausführungsform der Erfindung werden mindestens zwei WBGs(Worn Block Groups) in einem IWL-Abnutzungsausgleichsprozess bestimmt. Eine erste Gruppe wird als die „hohe Gruppe” bezeichnet. Die hohe Gruppe wird relativ PBEC- und hohe LBEC-Werte aufweisen und kann irgendwelche freien (spare) Blöcke bzw. Reserveblöcke enthalten, weil Wiederbeanspruchungszyklen häufig für Leer- bzw. Zwischenblöcke von nicht-flüchtigen Speichern auftreten. Eine zweite Gruppe wird als die „niedrige Gruppe” bezeichnet und wird relativ niedrige PBEC und niedrige LBEC aufweisen, wobei freie (spare) Blöcke ausgeschlossen sind. Der IWL-Prozess soll dann die logischen Blöcken mit hohem LBEC und logischen Blöcke mit niedrigem LBEC zwischen den beiden Gruppen austauschen (swap), was durch eine Reihe von Wiederbeanspruchungsoperationen bewerkstelligt werden kann. Diese Prozedur wird als der WBG-Austausch bezeichnet. Der Zweck des WBG-Austausches besteht darin, langlebige (mit niedrigem LBEC) Datenblöcke mit viel benutzten (hoher PBEC) Blöcken zu bestücken und häufig geänderte (hoher LBEC) Datenblöcke mit weniger abgenutzten (niedriger PBEC) Blöcken zu bestücken. Bei dieser Operation weisen die freien Blöcke ein hohes Potenzial auf, dass sie der nächste Wiederbeanspruchungsblock sind, und somit werden freie Blöcke mit hohem PBEC auch zur entgegengesetzten Gruppe bewegt bzw. verschoben.
  • Ein Abnutzungsausgleichsprozess kann jedoch gewisse übliche Speicheroperationen, einschließlich der normalen Wiederbeanspruchungsoperationen, beeinträchtigen. Aufgrund dessen kann Abnutzungsausgleich ein Abwägen gegenüber Speicherleistung erfordern. In einer Ausführungsform der Erfindung können bestimmte Werte eingestellt werden, um die Häufigkeit von Abnutzung von Abnutzungsausgleich zu beeinflussen. In einer Ausführungsform kann ein Benutzer die ECMOD (Löschzählintervall) und die SLOPETH-Werte (Steigungsschwellenwert) festlegen. Eine Erhöhung dieser Werte wird die Leistungskosten reduzieren, obwohl potentiell zu Kosten gewisser Lebensdauer der nicht-flüchtigen Einrichtung.
  • In einer Ausführungsform der Erfindung enthält ein nicht-flüchtiger Speicher Abnutzungsausgleich, der zumindest teilweise auf der Anzahl von Löschoperationen für jeden physikalischen Speicherblock und der Anzahl von Löschoperationen für jeden logischen Speicherblock basiert. In einer Ausführungsform werden Abnutzungsausgleichsoperationen initiiert, wenn die Steigung einer Regressionslinie einen Schwellenwert überschreitet, wobei die Regressionslinie für den physikalischen Löschzähler für jeden Block in Abhängigkeit von dem logischen Löschzähler für jeden derartigen Block generiert wird.
  • In einer Ausführungsform der Erfindung kann die Initiierung eines IWL-Prozesses durch die Steigung einer Linie ausgelöst werden, die an eine Kurve der Zähler für Löschen von physikalischen Blöcken und logischen Blöcken für jeden Speicherblock angepasst (fit) ist, wobei die Steigung der Linie auch verwendet wird, um zu ermitteln, ob die Operation erfolgreich gewesen ist. In einer Ausführungsform kann ein statistisches Verfahren verwendet werden, um die Linie an die Fehleranzahldaten anzupassen (fitten). In einer besonderen Ausführungsform wird lineare Regression verwendet, um zu ermitteln, warm eine IWL-Operation erforderlich ist, und zu messen, wie erfolgreich eine ausgeführte IWL-Operation gewesen ist. Lineare Regression versucht die Beziehung zwischen zwei Variablen durch Anpassung (fitting) einer linearen Gleichung an beobachtete Daten zu modellieren. Das üblichste Verfahren zum Fitten einer Regressionslinie ist das Verfahren der kleinsten Quadrate. Das Verfahren der Linie mit den kleinsten Quadraten wendet eine Gleichung der Form f(x) = a + bx an, die eine Geradenfunktion mit einem Schnittpunkt bei a und einer Steigung b ist. Das Verfahren beschreibt den Trend eines Rohdatensatzes (l1, p1), (l2, p2), ..., (ln, pn) wie folgt.
  • Figure 00090001
  • Im Betrieb der nicht-flüchtigen Speichereinrichtung gibt es drei Fälle für Regressionsliniensteigung b:
    • • b = 0, was auftreten kann, wenn ein System auf frischem Flash initialisiert wird oder wenn Abnutzungsausgleich aufrechterhalten worden ist
    • • b > 0, was auftritt, wenn Abnutzung nicht ausgeglichen wird; und
    • • b < 0, was in einem erfolgreichen Prozess auftritt, wenn WBGs ausgetauscht worden sind.
  • In einer Ausführungsform der Erfindung kann Abnutzungsausgleich auf Auftreten nur nach bestimmten Intervallen beschränkt werden. Zum Beispiel ist ECMOD das Löschzählintervall, das verstreicht, bevor ein IWL-Prozess ausgelöst wird. Zum Beispiel könnte ECMOD 1000 Zyklen oder weniger betragen. Ferner kann das Auslösen des Abnutzungsausgleichens durch SLOPETH, den PBEC-LBEC-Regressionsliniensteigungsschwellenwert, gelenkt werden. In einem nicht-flüchtigen Speicher kann eine normale Wiederbeanspruchungsoperation verwendet werden, um einen „schmutzigen” (dirty) Speicherblock, der ungültige Daten enthält, mit der Operation, die zum Freisetzen des invalidierten Speicherplatzes vorgesehen ist, wiederzubeanspruchen. In einer IWL-Implementierung wird die normale Wiederbeanspruchungsprozedur für den nicht-flüchtigen Speicher nicht modifiziert, aber kann der Abnutzungsausgleichsprozess die Leistung der Hintergrundwiederbeanspruchungsaufgabe beeinträchtigen. Ein Benutzer oder Designer kann den Problemen mit der Speicherlebensdauer und den Anforderungen von Kunden an die Leistung durch Einstellen der ECMOD und SLOPETH-Parameter Rechnung tragen, die gemeinsam die Häufigkeit von Abnutzungsausgleich bestimmen. Zum Beispiel kann ein Kunde die Leistungskosten des Abnutzungsausgleichs durch Erhöhen von ECMOD und SLOPETH reduzieren.
  • In einer Implementierung von Abnutzungsausgleich kann die Verarbeitung allgemein durch der Halbleiterspeichercontroller gehandhabt werden und somit von dem Host-System unabhängig sein. In einer derartigen Implementierung führt das Host-System die Lese- und Schreibvorgänge nur bei logischen Blockadressen durch und verwendet es die zugrundeliegenden physikalischen Blockadressen nicht. Auf diese Weise erlangt der Host keine Kenntnis von Bewegungen bzw. Verschiebungen von Daten, die als Folge von Abnutzungsausgleich auftreten. Ausführungsformen der Erfindung können jedoch hinsichtlich der Speichersteuerung variieren und sind auf kein spezielles Verfahren zur Speichersteuerung beschränkt.
  • Wenn ein Dateisystem initialisiert und dann abgeschaltet wird und es keine Formatierungsoperation gibt, sind das Inkrement von LBEC und das Inkrement von PBEC gleich. Bevor jedoch das Dateisystem initialisiert wird, wenn ein Flash formatiert wird, wird PBEC gehalten oder neu gespeichert, nachdem die Formatierung abgeschlossen worden ist; man würde aber erwarten, dass der LBEC vollständig gelöscht wird, weil der Datenblock gelöscht wird, und somit besteht kein Bedarf, seinen LBEC zu speichern bzw. zu sichern. Folglich ist für einen frischen, neuen oder vollständig gelöschten Flash seine Summe (LBEC) = Summe (PBEC). Wenn eine Formatierung stattfindet, werden die LBECs gelöscht, so dass die Summe (PBEC) größer als die Summe (LBEC) sein kann.
  • In den gelieferten Beispielen wird ein einziger Schwellenwert zur Ermittlung des Beginns und des Endes eines Abnutzungsausgleichsprozesses verwendet. Ausführungsformen der Erfindung können jedoch mehr als einen Schwellenwert verwenden. In einer Ausführungsform der Erfindung kann ein Prozess zwei Schwellenwerte zur Reduzierung der Anzahl des Erfordernisses eines Austauschprozesses verwenden. In diesem Beispiel unterliegt ein nicht-flüchtiger Speicher einer normalen Verwendung, die zu einer allmählichen Zunahme einer Regressionslinienanpassung (regression line fit) an die Werte der Zählerwerte für das Löschen von physikalischen Blöcken und Zählerwerten für Löschen von logischen Blöcken der Speicherblöcke führt. Ein Prozess zum Austauschen eines abgenutzten Blocks kann initiiert werden, wenn die Steigung einer Regressionslinie für die Speicherblöcke oberhalb eines ersten Schwellenwerts liegt. Nach Initiierung können sich die Austausche von abgenutzten Blockgruppen fortsetzen, bis die Steigung der Regressionslinie geringer als ein zweiter Schwellenwert ist, wobei zu dem Zeitpunkt der Austauschprozess enden würde. Der Prozess würde dann zum Originalzustand zurückkehren, in dem der Prozess des Austausches von abgenutzten Blöcken initiiert würde, wenn die Steigung der Regressionslinie wieder den ersten Schwellenwert überschreitet. Beim Zurückkehren zum normalen Betrieb würde die Steigung der Regressionslinie wieder allmählich zunehmen, da mehr Löschzyklen bei bestimmten hochaktiven Speicherblöcken auftreten.
  • 1 zeigt eine Darstellung einer Ausführungsform eines nicht-flüchtigen Speichers. In dieser Darstellung enthält eine nicht-flüchtige Speichereinrichtung 100 eine Anordnung von Speicherblöcken 105. In einem Beispiel kann die Anordnung von Speicherblöcken 105 einen ersten Speicherblock 110 mit einer physikalischen Blockadresse PB1 und einer logischen Blockadresse LB7 und einen zweiten Speicherblock 115 mit einer physikalischen Blockadresse PB4 und einer logischen Blockadresse LB5 enthalten. Die gelieferten Adressen sind einfache Beispiele und es kann jede physikalische oder logische Adresse vorliegen. In jedem Betrieb kann jeder Block der Speicheranordnung 105 mehreren Lösch- und Schreibzyklen unterzogen sein, wobei jeder Zyklus zu einer Verkürzung der Lebensdauer der beeinflussten Zellen führt.
  • Wie dargestellt, kann der erste Speicherblock 110 relativ inaktiv sein, wobei der Block gelöscht wird und ein Satz von Daten A 120 in den Block 110 geschrieben wird 125. Im Gegensatz dazu ist der zweite Speicherblock 115 relativ aktiv, wobei zum Beispiel Daten B 130 modifiziert werden 135, was zu vielen Lösch- und Schreiboperationen 140 an den Zellen des zweiten Blocks 115 führt, da jeder Schreibprozess ein Löschen der Daten in dem Block erfordert. Folglich kann mit der Zeit die Abnutzung an dem zweiten Speicherblock 115 wesentlich größer als die Abnutzung an dem ersten Speicherblock 110 sein.
  • In einer Ausführungsform der Erfindung unterliegt die Anordnung von Speicherblöcken Abnutzungsausgleich zum Ausgleichen der Abnutzung an den Speicherblöcken. In dieser Ausführungsform basiert der Abnutzungsausgleich auf einem Zähler für physikalische Blockschreibzyklen und einem Zähler für logische Blockschreibzyklen. In einer Ausführungsform wird ein Abnutzungsausgleichsalgorithmus initiiert, wenn die Steigung der Linienanpassung (line fit) an die physikalischen Blockschreibzyklen und die logischen Blockschreibzyklen durch lineare Regression einen Schwellenwert erreicht. In einer Ausführungsform liefert der Algorithmus eine Datenwiedergewinnung (data reclamation), bei der die in einer Gruppe von am meisten abgenutzten Blöcken (die den zweiten Speicherblock 115 enthalten kann) enthaltenen Daten durch die in einer Gruppe mit am wenigstens abgenutzten Blöcken (die den ersten Speicherblock 110 enthalten können) ausgetauscht werden. In einem anderen Beispiel kann die Gruppe mit geringster Abnutzung einen freien Speicherblock enthalten, wobei freie Blöcke sehr wahrscheinlich wiederbeansprucht werden. Nach dem Austausch zwischen den vorgesehenen Gruppen können die verbleibenden Blöcke weiteren Austauschen unterliegen, wobei sich der Prozess fortsetzt, bis die Steigung der Regressionslinie nicht länger oberhalb des Schwellenwertes liegt.
  • 2 zeigt ein Flussdiagramm, um eine Ausführungsform eines Abnutzungsausgleichsprozesses darzustellen. In dieser Darstellung wird ein Hintergrundspeicherwiederbeanspruchungsprozess hervorgebracht (spawned) 205, wobei der Prozess gewöhnliche Speicherwiederbeanspruchung (memory reclaiming) für Abnutzungsausgleich einschließt. Der Wiederbeanspruchungsprozess ist eine Form davon, was man als eine „Endlosschleife” 210 bezeichnen kann, die sich mit Wiederholungen fortsetzt. In dieser Schleife erfolgen normale Speicherwiederbeanspruchungsprozesse 215.
  • Wenn ECMOD(error count modulus)-Zusatzlöschzähler aufgetreten sind 220, d. h., seit dem Beginn der Hintergrundwiederbeanspruchungsaufgabe und seit der letzten Abnutzungsausgleichsoperation, dann wird die Nutzungsausgleichsverarbeitung initiiert. Die Steigung b einer Regressionslinie für Zähler für Löschungen von physikalischen Blöcken (Physical Block Erase Count(PBEC)) und Zähler für Löschen von logischen Blöcken (Logical Block Erase Count(LBEC)) wird im Vergleich mit einem Schwellenwert SLOPETH evaluiert 225. Wenn die Steigung b den Schwellenwert nicht übersteigt, setzt die Schleife fort. Wenn die Steigung b den Schwellenwert überschreitet, dann wird ein Austausch einer Gruppe von abgenutzten Blöcken durchgeführt 230, wobei die in der am stärksten abgenutzten Gruppe enthaltenen Daten (eine Gruppe, die Speicherblöcke mit höheren PBEC- und LBEC-Werten sowie freie Speicherblöcke enthält) mit den in der am wenigsten abgenutzten Gruppe (eine Gruppe, die Speicherblöcke mit niedrigeren PBEC- und LBEC-Werten enthält, unter Ausschluss von freien Speicherblöcken) enthaltenen Daten ausgetauscht werden. Nach dem Austausch wird die Steigung b wieder mit Schwellenwert SLOPETH verglichen 225, wobei der Austauschprozess dann fortsetzt, bis die Steigung b den Schwellenwert b SLOPETH nicht länger überschreitet.
  • In einer Ausführungsform kann der Prozess hinsichtlich des für den Abnutzungsausgleich verwendeten Schwellenwerts variieren. Zum Beispiel kann das Initiieren eines Abnutzungsausgleichsprozesses auftreten, wenn die Steigung b einen ersten Schwellenwert (SLOPETH1) überschreitet, wobei der Abnutzungsausgleichsprozess sich fortsetzt, bis die Steigung b unter einem zweiten Schwellenwert (SLOPETH2) liegt, wobei zum Beispiel SLOPETH2 geringer als SLOPETH1 sein kann.
  • 3A zeigt eine Darstellung einer Regressionslinie, die für einen nicht-flüchtigen Speicher vor Abnutzungsausgleich generiert worden ist. In dieser Darstellung wird jeder Block eines hypothetischen nicht-flüchtigen Speichers durch Zähler für Löschen von physikalischen Blöcken (PBEC 305) und Zähler für Löschen von logischen Blöcken (LBEC 310) präsentiert. Wenn ein Flash-Speicher neu ist, werden anfänglich sehr niedrige Zähler für Löschen von physikalischen Blöcken und Zähler für Löschen von logischen Blöcken oder sogar mit dem Wert Null vorliegen. Wenn jedoch mehr Schreibzyklen durchgeführt werden, werden die aktiveren Speicherblöcke höhere Zählerwerte für sowohl Zähler für Löschen von physikalischen Blöcken als auch Zähler für Löschen von logischen Blöcken entwickeln, wie in 3A gezeigt ist.
  • Wie in dieser Darstellung gezeigt ist, kann mit der Zeit erwartet werden, dass bestimmte Speicherblöcke mit niedrigen PBEC- und LBEC-Werten 315, bestimmte Blöcke mit mittleren PBEC- und LBEC-Werten 320 und bestimmte Blöcke mit hohen PBEC- und LBEC-Werten 325 vorhanden sein werden. In einer Ausführungsform der Erfindung wird lineare Regression verwendet, um eine Regressionslinie für die Speicherblockwerte 335 zu generieren. Zur leichteren Darstellung ist eine Symmetrielinie 330 vorgesehen. Die Speicherblöcke auf der rechten der Symmetrielinie 330 werden im Vergleich zu den Speicherblöcken auf der linken Seite der Symmetrielinie 330 abgenutzt werden, was zu einem vorzeitigen Ausfall der Einrichtung führen kann, wenn nicht Abnutzungsausgleich eingerichtet wird.
  • In einer Ausführungsform der Erfindung kann eine Abnutzungsausgleichsevaluierung erfolgen, nachdem eine bestimmte Anzahl von Löschereignissen eingetreten ist. Bei dieser Evaluierung kann ein Abnutzungsausgleichsprozess initiiert werden, wenn die Steigung der Regressionslinie 335 oberhalb eines Schwellenwerts liegt, was zu einem Austausch von Gruppen 350 mit abgenutzten Blöcken führt. Bei dem Austausch werden in den Blöcken der am meisten abgenutzten Gruppe 325 enthaltene Daten durch Blöcke in der am wenigsten abgenutzten Gruppe 315 ausgetauscht. In einer Ausführungsform wird der Austausch durch eine Reihe von Wiederbeanspruchungsoperationen bewerkstelligt. Nach dem Austausch wird wieder eine Regressionslinie generiert und die Steigung wieder mit einem Schwellenwert verglichen. Der Prozess setzt sich fort, bis die Steigung ausreichend modifiziert worden ist, so dass sie unter den Schwellenwert fällt.
  • 3B zeigt eine Darstellung einer für einen nicht-flüchtigen Speicher generierten Regressionslinie, nachdem eine Ausführungsform von Abnutzungsausgleich implementiert worden ist. In dieser Darstellung wird jeder Block eines hypothetischen nicht-flüchtigen Speichers wieder durch Zähler für Löschen von physikalischen Blöcken (PBEC 355) und Zähler für Löschen von logischen Blöcken (LBEC 360) präsentiert. Im Nachgang zu dem Austauschen von abgenutzten Gruppen hat sich die Steigung der resultierenden Regressionslinie verändert 385. Nach dem Austauschen gibt es Speicherblöcke mit hohen PBEC und niedrigen LBEC 365, Speicherblöcke mit mittleren PBEC- und LBEC-Werten 370 (die wahrscheinlich in keinen Austausch involviert gewesen sind) und Speicherblöcke mit niedrigen PBEC- und hohen LBEC-Werten 375. Zur leichteren Darstellung ist wieder eine Symmetrielinie 380 vorgesehen. Im wesentlichen sind die Speicherblöcke auf der rechten Seite der Symmetrielinie 380 nun Blöcke mit relativ geringer Abnutzung, aber nun mit aktiven Daten, die zu einer zukünftigen Abnutzung führen können. Die Speicherblöcke auf der linken Seite der Symmetrielinie 380 sind nun Blöcke mit relativ hoher Abnutzung, aber nun mit Daten, die weniger aktiv sind und von denen somit erwartet wird, dass sie zu geringerer zukünftiger Abnutzung führen.
  • 4 bis 7 stellen ein Beispiel für Speicherblockwiederbeanspruchungsoperationen in einer Ausführungsform eines Abnutzungsausgleichsprozesses dar. Die Figuren stellen Speicherblöcke eines beispielhaften nicht-flüchtigen Speichers dar. Wie dargestellt ist, bedeutet PBn den n-ten physikalischen Block und LBn den n-ten logischen Block. Wie in der Darstellung gezeigt, weist jeder Speicherblock eine physikalische Blockadresse auf und entweder eine logische Blockadresse auf oder ist er als frei (spare) gekennzeichnet. In dieser Darstellung enthält die Speichereinrichtung acht Speicherblöcke (PB0 bis PB7). In den Figuren ist jeder Speicherblock durch seine physikalische Blockadresse 405, seine logische Blockadresse 410, seinen Zähler 415 für Löschen von logischen Blöcken und seinen Zähler 420 für Löschen von physikalischen Blöcken gekennzeichnet. In einer Ausführungsform der Erfindung wird ein IWL-Prozess implementiert und werden in Speicherblöcken der geeigneten Gruppen enthaltene Daten über eine Reihe von Wiederbeanspruchungsprozessen ausgetauscht. Während die 4 bis 7 einen besonderen Prozess zum Austauschen der Daten darstellen, sind Ausführungsformen der Erfindung nicht auf irgendeinen speziellen Prozess zur Durchführung des Austauschprozesses beschränkt.
  • In 4 sind die Blöcke eines beispielhaften nicht-flüchtigen Speichers gezeigt. Zur leichteren Darstellung nimmt die Abnutzung, die eingetreten ist, allgemein von PB0 bis PB7 zu. Die tatsächliche Abnutzung kann jedoch in irgendeinem der Speicherblöcke erfolgen; sie muss nicht in einer Reihenfolge erfolgen. In einer besonderen Implementierung werden Intervall- und Steigungsschwellenwerte festgelegt, die in diesem Beispiel ECMOD = 135 und SLOPETH = 0,09 betragen können. Es handelt sich dabei um spezielle Werte für dieses Beispiel, aber diese Werte können, falls erforderlich, modifiziert werden.
  • In 4 sind Summe (LBEC) = 135, Summe (PBEC) = 135 und b = 0,0976515 durch Berechnung des Trends des Rohdatensatzes (l1, p1), (l2, p2), ..., (ln, pn). Wenn der Löschzähler ECMOD erreicht hat, erfolgt eine Evaluierung der Steigung. In diesem Fall ist die Steigung größer als der SLOPETH-Wert 0,09, was eine übermäßige ungleiche Abnutzung des Speichers anzeigt. Somit muss ein Abnutzungsausgleichsprozess begonnen werden.
  • In einer Ausführungsform der Erfindung können die Speicherblöcke in Gruppen auf zahlreiche Arten unterteilt werden. Für das in 4 präsentierte vereinfachte Beispiel ist es möglich, dass die niedrige Gruppe PB0 425 enthalten kann (mit LBEC = 7 und PBEC = 4) und PB1 430 (mit LBEC = 3 und PBEC = 6). Es ist ersichtlich, dass diese Blöcke geringe Abnutzung aufweisen und anscheinend keine aktiven Daten enthalten. Für die hohe Gruppe können die Blöcke PB6 455 (mit LBEC = 30 und PBEC = 28) und PB7 460 (ein freier Block mit PBEC = 30) enthalten. In dieser Darstellung sind die hohen und niedrigen Gruppen aus benachbarten Speicherblöcken zusammengesetzt, aber dies dient nur zur einfacheren Darstellung. In der Praxis kann jeder Speicherblock in entweder der hohen Gruppe oder der niedrigen Gruppe enthalten sein. Die verbleibenden Blocke (PB2 435, PB3 440, PB4 445 und PB5 450) fallen in die mittlere Gruppe und sind nicht in den Austausch involviert. Wenn der Austausch zu keiner ausreichenden Änderung der Steigung führt, dann werden diese verbleibenden Blöcke in die niedrigen und hohen Gruppen zum Austausch gezogen.
  • In einer Ausführungsform der Erfindung können die Austausche in einer Reihe von Operationen unter Verwendung eines herkömmlichen Wiederbeanspruchungsprozesses implementiert werden. Wenn zum Beispiel ein Austausch zwischen PB0 425 und PB7 460 unter Verwendung des Prozesses Wiederbeanspruchen (PB0, PB7) vorliegt, führt dies zu Kopieren von Daten aus PB0 zu PB7, Löschen von PB0 und Setzen PB0 als freien Block. In diesem Beispiel von 4 ist Wiederbeanspruchen (PB0, PB7) der erste durchgeführte Austausch.
  • 5 zeigt den resultierenden Speicher nach Wiederbeanspruchen (PB0, PB7). In diesem Beispiel ist nun PB0 525 der freie Block, wobei PBEC von 4 auf 5 erhöht ist. PB7 560 ist nun LB6, wobei LBEC nun von 5 auf 7 ansteigt. (PBEC von PB7 560 bleibt auf 30, weil dies ein freier Block ist, der somit bereits gelöscht worden ist und kein Löschen vor Schreiben der Daten erfordert.). An diesem Punkt sind Summe (LBEC) = 136, Summe (PBEC) = 136 und b = –0,11161.
  • 6 zeigt den resultierenden Speicher nach der nächsten folgenden Operation, die Wiederbeanspruchen (PB6, PB0) ist. Nach der Operation ist PB6 655 nun der Zwischenblock, wobei PBEC von 28 auf 29 erhöht ist. PB0 625 ist nun LB0, wobei LBEC von 30 auf 31 zunimmt. In diesem Punkt sind in dem Austauschprozess Summe (LBEC) = 137, Summe (PBEC) = 137 und b = –0,28086.
  • 7 zeigt den resultierenden Speicher nach der letzten in der Reihe von Operationen, Wiederbeanspruchen (PB6, PB1). In diesem letzten Stadium weist PB0 625 LBEC = 31 und PBEC = 5 auf und ist PB1 730 der freie Block (der somit ein möglicher nächster Wiederbeanspruchungsblock ist), wobei PBEC = 7 ist. Somit weist die Gruppe von Blöcken mit der geringsten Abnutzung nun mehr aktive Daten auf, wodurch geringe Abnutzung an hohe Datenaktivität angepasst wird. Ferner weist PB6 755 LBEC = 4 und PBEC = 29 auf und weist PB7 560 LBEC = 8 und PBEC = 30 auf. Die Gruppe von Blöcken mit der höchsten Abnutzung weist nun am wenigsten aktive Daten auf, wodurch hohe Abnutzung an geringe Datenaktivität angepasst wird. Nach der letzten in der Reihe von Wiederbeanspruchungsoperationen sind Summe (LBEC) = 138, Summe (PBEC) = 138 und b = –0,54262. Somit ist die Steigung in der PBEC-LBEC-Regressionslinie unter den Schwellenwert reduziert worden. In dieser Ausführungsform der Erfindung ist somit die Abnutzungsausgleichsoperation abgeschlossen. Das System wird dann auf ECMOD Löschzyklen warten, bevor es wieder die Steigung mit dem Schwellenwert vergleicht, um zu ermitteln, ob ein weiterer Abnutzungsausgleichszyklus erforderlich ist. Wenn die Steigung der PBEC-LBEC-Regressionslinie noch nicht unter den Schwellenwert abgenommen hätte, würde sich dann der Austauschprozess fortsetzen, was zusätzliche Datenaustausche liefert, um die Steigung unter den erforderlichen Wert zu reduzieren.
  • 8 zeigt eine Darstellung einer Ausführungsform einer nicht-flüchtigen Speichervorrichtung. In dieser Darstellung kann eine nicht-flüchtige Speichervorrichtung 800, wie zum Beispiel ein Flash-Speicher, mit einer Vorrichtung 815 oder als ein Teil davon gekoppelt werden. Die Vorrichtung kann irgendeine Vorrichtung sein, die elektronischen Speicher erfordert, einschließlich eines Computers, eines PDA(Personal Digital Assistant) oder Handheld Computer, einer digitalen Kamera, eines digitalen Musikabspielgeräts oder einer anderen Einheit. Die Speichervorrichtung 800 enthält eine Speicheranordnung 805, die mit einem Speichercontroller 810 gekoppelt ist, wobei der Speichercontroller 810 die Speicherung von Daten in der Speicheranordnung 805 steuert. Die Speicheranordnung 805 enthält mehrere Speicherblöcke von Speicherzellen, einschließlich zum Beispiel eines ersten Speicherblocks 820 und eines zweiten Speicherblocks 825. In diesem Beispiel ist der erste Speicherblock 820 physikalischer Block PB0 und logischer Block LB5 und ist der zweite Speicherblock 825 physikalischer Block PB3 und logischer Block LB2. Der Speichercontroller 810 kann für die Zuordnung von logischen Speicherbereichen verantwortlich sein, so dass die Vorrichtung 815 Speicherzellen durch logische Bereiche adressiert und die physikalischen Bereiche der Speicherzellen nicht kennt.
  • In einer Ausführungsform der Erfindung zeichnet der Speichercontroller 810 einen Zähler von jedem Lösch-Schreib-Zyklus für die Speicheranordnung 805 auf, wobei der Zähler einen Zähler für jeden physikalischen Block und jeden logischen Block enthält. In einer Ausführungsform werden die Zähler verwendet, um Abnutzungsausgleichsoperationen für die Speichereinrichtung zu implementieren. In einer Ausführungsform kann die Speichereinrichtung 800 eine Registrierdatenbank oder Registrierdatenbanken enthalten, das/die die aktuellen Schreib-Lösch-Zyklus-Zähler enthält/enthalten. Wie dargestellt ist, enthält die Speichereinrichtung 810 eine Registrierdatenbank von Zählern 830 für Löschen von physikalischen Blöcken und eine Registrierdatenbank von Zählern 835 für Löschen von logischen Blöcken. Wie gezeigt ist, enthält die Registrierdatenbank von Zählern 830 für Löschen von physikalischen Blöcken PBOEC (der Löschzähler für PB0) 840 für den ersten Speicherblock 820 und PB3EC 845 für den zweiten Speicherblock 825, fortsetzend bis PBnEC 850 für den n-ten physikalischen Block. Die Registrierdatenbank von Zählern 835 für Löschen von logischen Blöcken enthält LB2EC (den Löschzähler für LB2) 855 für den ersten Speicherblock 820 und LB5EC 860 für den zweiten Speicherblock 825, fortsetzend bis LBmEC 865 für den m-ten logischen Block. Die Speicheranordnung 805 kann einen oder mehrere freie Blöcke enthalten, die einem logischen Speicherblock zugeordnet sind, und somit kann m geringer als n sein.
  • In einer Ausführungsform der Erfindung evaluiert der Speichercontroller 810 den aktuellen Status der Abnutzung der Blöcke der Speicheranordnung 805. In einer Ausführungsform erfolgt die Evaluierung nach ECMOD Durchläufen von Löschzyklen. In einer Ausführungsform der Erfindung berechnet der Speichercontroller 810 eine Steigung einer Regressionslinie für die in der Registrierdatenbank von Zählern 830 für Löschen von physikalischen Blöcken und in der Registrierdatenbank von Zählern 835 für Löschen von logischen Blöcken enthaltenen Daten. Wenn die Steigung der Regressionslinie einen Schwellenwert (SLOPETH) übersteigt, dann identifiziert der Speichercontroller 810 eine Gruppe mit hoher Abnutzung von Speicherblöcken (mit hohen PBEC- und LBEC-Werten, einschließlich freie Blöcke) und eine Gruppe mit niedriger Abnutzung von Speicherblöcken (mit niedrigen PBEC- und LBEC-Werten) und erfolgt ein Austausch von Daten zwischen den Gruppen, um aktive Daten zu Speicherblöcken mit niedriger Abnutzung zu übertragen.
  • 9 zeigt eine Darstellung des Computersystems, das eine Ausführungsform der Erfindung verwendet. Gewisse Standard- und allgemein bekannte Komponenten, die für die vorliegende Erfindung nicht relevant sind, sind nicht gezeigt. In einer Ausführungsform der Erfindung umfasst ein Computer 900 einen Bus 905 oder ein anderes Kommunikationsmittel zum Kommunizieren von Informationen und ein Verarbeitungsmittel, wie zum Beispiel zwei oder mehr Prozessoren 910 (als ein erster Prozessor 915 und ein zweiter Prozessor 920 gezeigt), die mit dem Bus 905 zur Verarbeitung von Information gekoppelt sind. Die Prozessoren 910 können einen oder mehrere physikalische Prozessoren und einen oder mehrere logische Prozessoren umfassen. Ferner kann jeder der Prozessoren 910 mehrere Prozessorkerne enthalten. Der Einfachheit halber ist der Computer 900 mit einem einzigen Bus 905 dargestellt, aber der Computer kann mehrere unterschiedliche Busse aufweisen und die Komponentenverbindungen mit genannten Bussen können variieren. Der in 9 gezeigte Bus 905 stellt eine Abstraktion dar, die irgendeinen oder mehrere separate physikalische Busse, Punkt-zu-Punkt-Verbindungen oder beides repräsentiert, die durch geeignete Brücken, Adapter oder Controller verbunden sind. Der Bus 905 kann somit zum Beispiel einen Systembus, einen PCI(Peripheral Component Interconnect)-Bus, einen HyperTransport oder ISA(Industry Standard Architecture)-Bus, einen SCSI(Small Computer System Interface)-Bus, einen USB(Universal Serial Bus), IIC(I2C)-Bus oder einen IEEE(Institute of Electrical and Electronics Engineers)-Standard 1394-Bus, manchmal als „Firewire” bezeichnet, aufweisen. („Standard for a High Performance Serial Bus" 1394–1995, IEEE, am 30. August 1996 veröffentlicht, und Ergänzungen).
  • Der Computer 900 umfasst ferner eine RAM(Random Access Memory)- oder andere dynamische Speichereinrichtung als einen Hauptspeicher 925 zum Speichern von Informationen und Befehlen zur Ausführung durch die Prozessoren 910. Der Hauptspeicher 925 kann auch zum Speichern von temporären Variablen oder anderer Zwischeninformation während der Ausführung von Befehlen durch die Prozessoren 910 verwendet werden. RAM-Speicher schließt DRAM(Dynamic Random Access Memory), der Auffrischen von Speicherinhalten erfordert, und SRAM(Static Random Access Memory) ein, der kein Auffrischen von Inhalten erfordert, aber höhere Kosten mitsichbringt. DRAM-Speicher kann SDRAM(Synchronous Dynamic Random Access Memory), der ein Taktsignal zum Steuern von Signalen enthält, und EDO DRAM(Extended Data-Out Dynamic Random Access Memory) einschließen. Die Verwendung des Hauptspeichers kann die Speicherung von empfangenen Signalen von drahtlosen Geräten enthalten. Der Computer 900 kann auch einen ROM(Read Only Memory) 930 und/oder andere statische Speichereinrichtungen zum Speichern von statischen Informationen und Befehlen für die Prozessoren 910 enthalten.
  • Der Datenspeicher 935 kann auch mit dem Bus 905 des Computers 900 zum Speichern von Informationen und Befehlen gekoppelt sein. Der Datenspeicher 935 kann eine Magnetplatte oder optische Platte oder optische Platte und deren korrespondierenden Laufwerke, Flash-Speicher oder andere nicht-flüchtige Speicher oder andere Speichereinrichtungen einschließen. Genannte Elemente können miteinander kombiniert werden oder können separate Komponenten sein und Teile von anderen Elementen des Computers 900 verwenden. In einer Ausführungsform der Erfindung kann der Datenspeicher 935 Flash-Speicher 937 enthalten. In einer Ausführungsform sorgt der Flash-Speicher 937 für Abnutzungsausgleichsprozesse, um die Abnutzung an Speicherblöcken des Flash-Speichers 937 auszugleichen, die durch ein Ungleichgewicht hinsichtlich der Lösch-Schreib-Zyklen für jeden Speicherblock verursacht ist.
  • Der Computer 900 kann auch über den Bus 905 mit einer Anzeigeeinrichtung 940, wie zum Beispiel einer Kathodenstrahlröhre(Cathode Ray Tube(CRT))-Anzeige, einer Flüssigkristallanzeige (Liquid Crystal Display(LCD)), einer Plasmaanzeige oder irgendeiner anderen Anzeigetechnologie, zum Anzeigen von Informationen für einen Endnutzer gekoppelt sein. In einigen Umgebungen kann die Anzeigeeinrichtung ein Touchscreen sein, der auch zumindest teilweise als eine Eingabeeinrichtung verwendet wird. In einigen Umgebungen kann die Anzeigeeinrichtung 940 eine Audioeinrichtung sein oder enthalten, wie zum Beispiel einen Lautsprecher zum Liefern von Audioinformationen. Eine Eingabeeinrichtung 945 kann mit dem Bus 905 zum Kommunizieren von Informationen und/oder Befehlsauswahlen an die Prozessoren 910 gekoppelt sein. In zahlreichen Implementierungen kann die Eingabeeinrichtung 945 eine Tastatur, ein Tastenfeld, ein Touchscreen und Stift, ein sprachaktiviertes System oder eine andere Eingabeeinrichtung oder Kombinationen von genannten Einrichtungen sein. Ein anderer Typ von Benutzereingabeeinrichtung, die enthalten sein kann, ist eine Cursorsteuereinrichtung 950, wie zum Beispiel eine Maus, ein Trackball oder Cursorrichtungstasten zum Kommunizieren von Richtungsinformationen und Befehlsauswahlen an den einen oder die mehreren Prozessoren 910 und zum Steuern von Cursorbewegung auf der Anzeigeeinrichtung 940.
  • Eine Kommunikationseinrichtung 955 kann auch mit dem Bus 905 gekoppelt sein. In Abhängigkeit von der speziellen Implementierung kann die Kommunikationseinrichtung 955 einen Transceiver, ein drahtloses Modem, eine Netzwerkschnittstellenkarte, ein LAN(Local Area Netzwork) auf der Hauptplatine oder eine andere Schnittstelleneinrichtung sein. Die Verwendung einer Kommunikationseinrichtung 955 kann den Empfang von Signalen von drahtlosen Einrichtungen einschließen. Zur Funkkommunikation kann die Kommunikationseinrichtung 955 eine oder mehrere Antennen 958 enthalten. In einer Ausführungsform kann die Kommunikationseinrichtung 955 eine Firewall enthalten, um den Computer 900 vor missbräuchlichem Zugang zu schützen. Der Computer 900 kann mit einem Netzwerk, wie zum Beispiel LAN(Local Area Network) 965 oder anderen Einrichtungen verbunden sein, die die Kommunikationseinrichtung 955 verwenden, was auch Verbindungen mit dem Internet, einem Local Area Network oder einer anderen Umgebung einschließen kann. Der Computer 900 kann auch eine Stromversorgungseinrichtung oder ein Stromversorgungssystem 960 umfassen, die/das eine Netzversorgung, eine Batterie, eine Solarzelle, eine Brennstoffzelle oder ein anderes System oder eine andere Einrichtung zum Liefern oder Erzeugen von Strom aufweisen kann. Der von der Stromversorgungseinrichtung bzw. dem Stromversorgungssystem 960 gelieferte Strom kann nach Bedarf an Elemente des Computers 900 verteilt werden.
  • Fachleute auf dem Gebiet werden vor dem Hintergrund dieser Offenbarung erkennen, dass viele andere Variationen ausgehend von der vorangehenden Beschreibung und den Zeichnungen vorgenommen werden können, die in dem Schutzbereich der vorliegenden Erfindung liegen. In der Tat ist die Erfindung nicht auf die oben beschriebenen Details beschränkt. Stattdessen definieren die folgenden Ansprüche, die irgendwelche Veränderungen bzw. Verbesserungen enthalten, den Schutzbereich der Erfindung.
  • In der obigen Beschreibung wurden zu Erläuterungszwecken zahlreiche spezielle Details dargelegt, um für ein umfassendes Verständnis der vorliegenden Erfindung zu sorgen. Für einen Fachmann auf dem Gebiet wird jedoch ersichtlich sein, dass die vorliegende Erfindung ohne einige dieser speziellen Details in die Praxis umgesetzt werden kann. In anderen Beispielen sind allgemein bekannte Strukturen und Einrichtungen in Blockdiagrammform gezeigt.
  • Die vorliegende Erfindung kann zahlreiche Prozesse einschließen. Die Prozesse gemäß der vorliegenden Erfindung können durch Hardwarekomponenten durchgeführt werden oder in maschinenausführbaren Befehlen verkörpert sein, die verwendet werden können, um einen Universalprozessor oder Spezialprozessor oder logische Schaltkreise, die mit den Befehlen programmiert sind, die Prozesse durchführen zu lassen. Alternativ können die Prozesse durch eine Kombination von Hardware und Software durchgeführt werden.
  • Teile der vorliegenden Erfindung können als ein Computerprogrammprodukt bereitgestellt werden, das ein maschinenlesbares Medium enthalten kann, auf dem Befehle gespeichert sind, die verwendet werden können, um einen Computer (oder andere elektronische Geräte) zu programmieren und einen Prozess gemäß der vorliegenden Erfindung durchführen zu lassen. Das maschinenlesbare Medium kann, ohne aber darauf beschränkt zu sein, Floppy-Disketten, optische Platten, CD-ROMs(Compact Disk Read-Only Memory) und magnetooptische Platten, ROMs(Read-Only Memory), RAMs(Random Access Memory), EPROMs(Erasable Programmable Read-Only Memory), EEPROMs(Electrically-Erasable Programmable Read-Only Memory), magnetische oder optische Karten, Flash-Speicher oder einen anderen Typ von Medium/maschinenlesbarem Medium zum Speichern von elektronischen Befehlen einschließen. Außerdem kann die vorliegende Erfindung auch als ein Computerprogrammprodukt heruntergeladen werden, wobei das Programm von einem fernem Computer auf einen anfordernden Computer mittels von Datensignalen, die in einer Trägerwelle oder einem anderen Ausbreitungsmedien verkörpert sind, über eine Kommunikationsverbindung (z. B. ein Modem oder eine Netzwerkverbindung) übertragen werden kann.
  • Viele der Verfahren sind in deren grundsätzlichsten Form beschrieben, aber es können Prozesse hinzugefügt oder entfernt werden, zu oder von jedem der beschriebenen Verfahren, und Informationen können hinzugefügt oder entfernt werden zu oder von jeder der beschriebenen Nachrichten, ohne aus dem grundlegenden Schutzbereich der vorliegenden Erfindung zu gelangen. Für Fachleute auf dem Gebiet wird ersichtlich sein, dass weitere Modifikationen und Anpassungen durchgeführt werden können. Die speziellen Ausführungsformen sollen die Erfindung nicht beschränken, sondern sie darstellen. Der Schutzbereich der vorliegenden Erfindung soll nicht durch die oben gelieferten speziellen Beispiele bestimmt werden, sondern nur durch die nachfolgenden Ansprüche.
  • Es sollte verständlich sein, dass die Bezugnahme in der gesamten Beschreibung auf „eine (1) Ausführungsform” oder „eine Ausführungsform” bedeutet, dass ein bestimmtes Merkmal bei der Ausführung der Erfindung vorhanden sein kann. In ähnlicher Weise sollte es verständlich sein, dass in der vorangehenden Beschreibung von beispielhaften Ausführungsformen der Erfindung zahlreiche Merkmale der Erfindung manchmal in einer einzigen Ausführungsform, Figur oder Beschreibung derselben zur gradlinigen Beschreibung miteinander gruppiert sind und beim Verstehen von einem oder mehreren der zahlreichen erfinderischen Aspekte helfen. Diese Offenbarungsmethode soll jedoch nicht so interpretiert werden, dass sie eine Absicht reflektiert, dass die beanspruchte Erfindung mehr Merkmale erfordert, als in jedem Anspruch ausdrücklich zitiert sind. Stattdessen liegen die erfinderischen Aspekte, wie die folgenden Ansprüche reflektieren, in weniger als allen Merkmalen einer einzigen vorangehend offenbarten Ausführungsform. Somit werden die Ansprüche hierdurch ausdrücklich in diese Beschreibung aufgenommen, wobei jeder Anspruch alleine als eine separate Ausführungsform der vorliegenden Erfindung steht.
  • Zusammenfassung
  • Ein Verfahren und eine Vorrichtung für einen initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher. Eine Ausführungsform eines Verfahrens enthält Zählen von Löschzyklen für jeden eines Satzes von mehreren Speicherblöcken eines nicht-flüchtigen Speichers, wobei das Zählen von Löschzyklen für jeden Speicherblock Erhöhen eines ersten Zählers für eine physikalische Blockadresse des Speicherblocks, und wenn der Speicherblock kein freier Speicherblock ist, Erhöhen eines zweiten Zählers für eine logische Blockadresse des Speicherblocks enthält. Das Verfahren enthält auch Ermitteln, ob der nicht-flüchtige Speicher eine ungleichmäßige Abnutzung von Speicherblöcken aufweist, auf der Grundlage von zumindest zum Teil des Zählens der Löschzyklen der Vielzahl von Speicherblöcken.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • - „Standard for a High Performance Serial Bus” 1394–1995, IEEE, am 30. August 1996 [0054]

Claims (18)

  1. Verfahren zum Abnutzungsausgleich eines nicht-flüchtigen Speichers, umfassend: Zählen von Löschzyklen für jeden einer Vielzahl von Speicherblöcken eines nicht-flüchtigen Speichers, wobei das Zählen von Löschzyklen für jeden Speicherblock enthält: Erhöhen eines ersten Zählers für eine physikalische Blockadresse des Speicherblocks, und, wenn der Speicherblock kein freier Speicherblock ist, Erhöhen eines zweiten Zählers für eine logische Blockadresse des Speicherblocks; und Ermitteln, ob der nicht-flüchtige Speicher eine ungleichmäßige Abnutzung von Speicherblöcken aufweist, basierend zumindest zum Teil auf dem Zählen der Löschzyklen der Vielzahl von Speicherblöcken.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass, wenn der nicht-flüchtige Speicher ungleichmäßige Abnutzung aufweist, dann: Identifizieren einer ersten Gruppe von Speicherblöcken des nicht-flüchtigen Speichers mit hohen Abnutzungsgraden und einer zweiten Gruppe von Speicherblöcken des nicht-flüchtigen Speichers mit niedrigen Abnutzungsgraden, und Austauschen von Daten von einem oder mehreren Speicherblöcken der ersten Gruppe mit Daten von einem oder mehreren Speicherblöcken der zweiten Gruppe erfolgt.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass Austauschen von Daten zwischen einem ersten Speicherblock und einem zweiten Speicherblock der Vielzahl von Speicherblöcken Übertragen der logischen Blockadresse von dem ersten Speicherblock auf den zweiten Speicherblock enthält.
  4. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass Austauschen von Daten von einem oder mehreren Speicherblöcken der ersten Gruppe gegen Daten von einem oder mehreren Speicherblöcken der zweiten Gruppe eine Reihe von Speicherblockwiederbeanspruchungsoperationen enthält.
  5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass Ermitteln, ob der nicht-flüchtige Speicher ungleichmäßige Abnutzung von Speicherblöcken aufweist, Generieren einer Linie durch lineare Regression aufweist, um die Löschzyklen für jede physikalische Blockadresse und die Löschzyklen für jede logische Blockadresse zu repräsentieren.
  6. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass Ermitteln, ob der nicht-flüchtige Speicher ungleichmäßige Abnutzung von Speicherblöcken aufweist, ferner Vergleichen einer Steigung der generierten Linie mit einem Steigungsschwellenwert aufweist.
  7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass die Steigung der generierten Linie mit dem Steigungsschwellenwert verglichen wird, nachdem eine vorab festgelegte Anzahl von Löschzyklen für den nicht-flüchtigen Speicher erfolgt ist.
  8. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der nicht-flüchtige Speicher ein Flash-Speicher ist.
  9. Nicht-flüchtige Speichervorrichtung, umfassend: eine Speicheranordnung, wobei die Speicheranordnung eine Vielzahl von Speicherblöcken enthält, wobei jeder Speicherblock eine physikalische Blockadresse aufweist und jeder Speicherblock entweder eine logische Blockadresse aufweist oder ein freier Speicherblock ist; einen Speichercontroller, der mit der Speicheranordnung gekoppelt ist, wobei der Speichercontroller zum Steuern der Speicherung von Daten in der Speicheranordnung dient; eine oder mehrere Registrierdatenbank/Registrierdatenbänke zum Aufzeichnen der Anzahl von Löschoperationen für die Vielzahl von Speicherblöcken der Speicheranordnung, wobei die eine oder mehreren Registrierdatenbank/Registrierdatenbänke einen Zähler für Löschzyklen für jede physikalische Blockadresse und einen Zähler für Löschzyklen für jede logische Blockadresse enthält/enthalten.
  10. Vorrichtung nach Anspruch 9, dadurch gekennzeichnet, dass der Speichercontroller dazu dient, die Steigung einer Linie zu ermitteln, die die Anzahl von Löschzyklen für jede physikalische Blockadresse und die Anzahl von Löschzyklen für jede logische Blockadresse repräsentiert.
  11. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, dass der Speichercontroller die Steigung der Linie ermittelt, nachdem eine vorab festgelegte Anzahl von Löschzyklen erfolgt ist.
  12. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, dass der Speichercontroller zum Vergleichen der Steigung der Linie mit einem Schwellenwert dient, wobei der Speichercontroller zum Durchführen eines Wechsels von Speicherblöcken, wenn die Steigung der Linie den Schwellenwert überschreitet, dient.
  13. Vorrichtung nach Anspruch 12, dadurch gekennzeichnet, dass das Wechseln von Speicherblöcken Wechseln von Daten zwischen einer ersten Gruppe von Speicherblöcken mit hohen Löschzählern und einer zweiten Gruppe von Speicherblöcken mit niedrigen Löschzählern enthält.
  14. Vorrichtung nach Anspruch 9, dadurch gekennzeichnet, dass die Speicheranordnung eine Flash-Speicheranordnung aufweist.
  15. Computersystem, umfassend: einen Bus; eine Flash-Speichervorrichtung, die mit dem Bus gekoppelt ist, wobei die nicht-flüchtige Speichervorrichtung eine Vielzahl von Speicherblöcken enthält; einen mit dem Bus gekoppelten dynamischen Direktzugriffsspeicher; und einen mit dem Bus gekoppelten Prozessor, wobei der Prozessor zum Übertragen von Daten zwischen dem dynamischen Direktzugriffsspeicher und der Flash-Speichervorrichtung dient; wobei das System die Anzahl von Löschzyklen für jeden der Speicherblöcke durch physikalische Blockadresse und durch logische Blockadresse verfolgt.
  16. System nach Anspruch 15, dadurch gekennzeichnet, dass das System dazu dient, zu ermitteln, ob die Flash-Speichervorrichtung ungleichmäßige Abnutzung aufweist, basierend zumindest zum Teil auf der Anzahl von Löschzyklen für jeden der Speicherblöcke durch physikalische Blockadresse und durch logische Blockadresse.
  17. System nach Anspruch 16, dadurch gekennzeichnet, dass das System dazu dient, zu ermitteln, ob die Flash-Speichervorrichtung ungleichmäßige Abnutzung aufweist, durch Vergleichen der Steigung einer Regressionslinie für die Anzahl von Löschzyklen für jeden der Speicherblöcke durch physikalische Blockadresse und durch logische Blockadresse mit einem Steigungsschwellenwert.
  18. System nach Anspruch 16, dadurch gekennzeichnet, dass das System dazu dient, zu ermitteln, ob die Flash-Speichervorrichtung ungleichmäßige Abnutzung aufweist, jedesmal wenn eine vorab festgelegte Anzahl von Löschzyklen erfolgt ist.
DE112006004187.8T 2006-12-27 2006-12-27 Verfahren, nicht-flüchtige Speichervorrichtung und Computersystem zum initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher Expired - Fee Related DE112006004187B4 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2006/003615 WO2008077284A1 (en) 2006-12-27 2006-12-27 Initiative wear leveling for non-volatile memory

Publications (2)

Publication Number Publication Date
DE112006004187T5 true DE112006004187T5 (de) 2009-11-26
DE112006004187B4 DE112006004187B4 (de) 2015-09-10

Family

ID=39562076

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006004187.8T Expired - Fee Related DE112006004187B4 (de) 2006-12-27 2006-12-27 Verfahren, nicht-flüchtige Speichervorrichtung und Computersystem zum initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher

Country Status (5)

Country Link
US (1) US8356152B2 (de)
JP (1) JP5006940B2 (de)
KR (1) KR101087308B1 (de)
DE (1) DE112006004187B4 (de)
WO (1) WO2008077284A1 (de)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
US7697326B2 (en) 2006-05-12 2010-04-13 Anobit Technologies Ltd. Reducing programming error in memory devices
US8239735B2 (en) 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7821826B2 (en) 2006-10-30 2010-10-26 Anobit Technologies, Ltd. Memory cell readout using successive approximation
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US7706182B2 (en) 2006-12-03 2010-04-27 Anobit Technologies Ltd. Adaptive programming of analog memory cells using statistical characteristics
US9153337B2 (en) * 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
US7900102B2 (en) 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US8001320B2 (en) 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
KR101413736B1 (ko) * 2007-09-13 2014-07-02 삼성전자주식회사 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
WO2009050703A2 (en) 2007-10-19 2009-04-23 Anobit Technologies Data storage in analog memory cell arrays having erase failures
US8068360B2 (en) 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
KR101509836B1 (ko) 2007-11-13 2015-04-06 애플 인크. 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US7924587B2 (en) 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8059457B2 (en) 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
TWI385669B (zh) * 2008-07-23 2013-02-11 Phison Electronics Corp 用於快閃記憶體的平均磨損方法、儲存系統與控制器
KR101103061B1 (ko) * 2008-07-28 2012-01-06 주식회사 팍스디스크 반도체 스토리지 시스템 및 그 제어 방법
US8498151B1 (en) 2008-08-05 2013-07-30 Apple Inc. Data storage in analog memory cells using modified pass voltages
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8891298B2 (en) 2011-07-19 2014-11-18 Greenthread, Llc Lifetime mixed level non-volatile memory system
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8397131B1 (en) 2008-12-31 2013-03-12 Apple Inc. Efficient readout schemes for analog memory cell devices
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8176295B2 (en) 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
US8065469B2 (en) * 2009-04-20 2011-11-22 Imation Corp. Static wear leveling
US8732389B2 (en) * 2009-06-23 2014-05-20 Seagate Technology Llc Memory wear control
EP2270525A1 (de) * 2009-07-02 2011-01-05 Gemalto SA Verfahren zur Ermittlung des Verschleisses eines Speichers in einem sicheren elektronischen Token
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8447915B2 (en) * 2009-07-23 2013-05-21 Hitachi, Ltd. Flash memory device for allocating physical blocks to logical blocks based on an erase count
TWI421869B (zh) * 2009-10-14 2014-01-01 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8572311B1 (en) 2010-01-11 2013-10-29 Apple Inc. Redundant data storage in multi-die memory systems
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
TWI457941B (zh) * 2010-06-25 2014-10-21 Macronix Int Co Ltd 區塊為基礎快閃記憶體之位元組存取的方法與裝置
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US9146875B1 (en) * 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
US8493781B1 (en) 2010-08-12 2013-07-23 Apple Inc. Interference mitigation using individual word line erasure operations
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US20120198124A1 (en) * 2011-01-28 2012-08-02 Apple Inc. Methods and systems for optimizing read operations in a non-volatile memory
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US20120324143A1 (en) * 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US11024352B2 (en) 2012-04-10 2021-06-01 Samsung Electronics Co., Ltd. Memory system for access concentration decrease management and access concentration decrease method
US20140089560A1 (en) * 2012-09-25 2014-03-27 Adesto Technologies Corporation Memory devices and methods having write data permutation for cell wear reduction
US9754648B2 (en) 2012-10-26 2017-09-05 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US9201786B2 (en) 2012-12-21 2015-12-01 Kabushiki Kaisha Toshiba Memory controller and memory system
US20150143021A1 (en) * 2012-12-26 2015-05-21 Unisys Corporation Equalizing wear on storage devices through file system controls
US9734097B2 (en) 2013-03-15 2017-08-15 Micron Technology, Inc. Apparatuses and methods for variable latency memory operations
US9262315B2 (en) 2013-07-05 2016-02-16 Apple Inc. Uneven wear leveling in analog memory devices
US9317367B2 (en) 2013-08-01 2016-04-19 Globalfoundries Inc. Re-distributing high usage data in a raid solid state drive array
US9727493B2 (en) 2013-08-14 2017-08-08 Micron Technology, Inc. Apparatuses and methods for providing data to a configurable storage area
US9501400B2 (en) 2013-11-13 2016-11-22 Sandisk Technologies Llc Identification and operation of sub-prime blocks in nonvolatile memory
US10365835B2 (en) 2014-05-28 2019-07-30 Micron Technology, Inc. Apparatuses and methods for performing write count threshold wear leveling operations
JP6107802B2 (ja) * 2014-12-15 2017-04-05 コニカミノルタ株式会社 不揮発性メモリ制御装置、不揮発性メモリ制御方法及びプログラム
KR102250423B1 (ko) 2015-01-13 2021-05-12 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
KR102456104B1 (ko) 2015-08-24 2022-10-19 삼성전자주식회사 데이터 신뢰성에 따라 동작 조건을 변경하는 저장 장치의 동작 방법
KR102393323B1 (ko) 2015-08-24 2022-05-03 삼성전자주식회사 재사용 주기를 이용하여 사용자 데이터를 쓰기 위한 워드라인을 결정하는 저장 장치의 동작 방법
KR102333746B1 (ko) 2015-09-02 2021-12-01 삼성전자주식회사 재사용 주기에 따라 마모도를 관리하는 저장 장치의 동작 방법
US9760303B2 (en) 2015-09-29 2017-09-12 Sandisk Technologies Llc Partially-bad block operation in 3-D nonvolatile memory
US10643700B2 (en) 2015-10-29 2020-05-05 Micron Technology, Inc. Apparatuses and methods for adjusting write parameters based on a write count
US9898215B2 (en) 2015-12-07 2018-02-20 International Business Machines Corporation Efficient management of page retirement in non-volatile memory utilizing page retirement classes
TWI571882B (zh) * 2016-02-19 2017-02-21 群聯電子股份有限公司 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置
CN107122308A (zh) * 2016-02-25 2017-09-01 群联电子股份有限公司 平均磨损方法、内存控制电路单元及内存储存装置
US9842059B2 (en) 2016-04-14 2017-12-12 Western Digital Technologies, Inc. Wear leveling in storage devices
KR20180014975A (ko) * 2016-08-02 2018-02-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20180040288A (ko) 2016-10-12 2018-04-20 삼성전자주식회사 비휘발성 메모리 장치의 리클레임 제어 방법, 상기 비휘발성 메모리 장치를 포함하는 저장 장치의 동작 방법 및 저장 장치
US10976936B2 (en) * 2017-08-23 2021-04-13 Micron Technology, Inc. Sensing operations in memory
JP7020989B2 (ja) 2018-04-23 2022-02-16 株式会社メガチップス 不揮発性記憶装置、メモリ制御装置、及びメモリ制御方法
KR102545189B1 (ko) 2018-09-07 2023-06-19 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 장치의 동작 방법
US11416163B2 (en) * 2020-04-09 2022-08-16 SK Hynix Inc. Systems and methods for dynamic logical block address distribution between multicores
KR20220138759A (ko) * 2021-04-06 2022-10-13 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
CN113707206B (zh) * 2021-05-17 2024-03-22 深圳市国微电子有限公司 Flash存储器的数据保护方法、装置、电子设备及存储介质
DE102021116828A1 (de) 2021-06-30 2023-01-05 Harman Becker Automotive Systems Gmbh Verfahren und Vorrichtung zur Überwachung einer Nutzlast eines Speichermediums
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
TW261687B (de) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
US5341339A (en) * 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
US5835935A (en) * 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5963970A (en) * 1996-12-20 1999-10-05 Intel Corporation Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
KR100297986B1 (ko) * 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
US6937948B2 (en) * 2001-11-13 2005-08-30 Intel Corporation Flash memory program and erase operations
KR100484147B1 (ko) * 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
WO2004040586A1 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Automated wear leveling in non-volatile storage systems
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US6985992B1 (en) * 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
JP4199519B2 (ja) * 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
US6865122B2 (en) * 2003-04-11 2005-03-08 Intel Corporation Reclaiming blocks in a block-alterable memory
US20050055495A1 (en) * 2003-09-05 2005-03-10 Nokia Corporation Memory wear leveling
US7032087B1 (en) * 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
US7106636B2 (en) * 2004-06-22 2006-09-12 Intel Corporation Partitionable memory device, system, and method
US7057934B2 (en) * 2004-06-29 2006-06-06 Intel Corporation Flash memory with coarse/fine gate step programming
US20060069850A1 (en) * 2004-09-30 2006-03-30 Rudelic John C Methods and apparatus to perform a reclaim operation in a nonvolatile memory
US7818342B2 (en) * 2004-11-12 2010-10-19 Sap Ag Tracking usage of data elements in electronic business communications
US7441067B2 (en) * 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Standard for a High Performance Serial Bus" 1394-1995, IEEE, am 30. August 1996

Also Published As

Publication number Publication date
KR101087308B1 (ko) 2011-11-25
JP5006940B2 (ja) 2012-08-22
US8356152B2 (en) 2013-01-15
WO2008077284A1 (en) 2008-07-03
DE112006004187B4 (de) 2015-09-10
KR20090094333A (ko) 2009-09-04
JP2010515127A (ja) 2010-05-06
US20100161880A1 (en) 2010-06-24

Similar Documents

Publication Publication Date Title
DE112006004187B4 (de) Verfahren, nicht-flüchtige Speichervorrichtung und Computersystem zum initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher
DE60319407T2 (de) Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems
US10754769B2 (en) Memory system having persistent garbage collection
DE112010002663B4 (de) Speichermanagementsysteme, Verfahren zur Verbesserung der Schreib-Lösch-Ausdauerlebenszeit von Speichervorrichtungen und Computerprogrammprodukt
DE60317551T2 (de) Aufrechterhaltung gleichförmiger löschhäufigkeit in einem nichtflüchtigen speichersystem
DE112011102160B4 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE112014005346B4 (de) Temperaturbasierte Flashspeichersystemerhaltung
DE60316171T2 (de) Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE602004011097T2 (de) Flash-speicherdatenkorrektur- und scrub-techniken
DE69024086T2 (de) EEprom-System mit Blocklöschung
DE60319563T2 (de) Verwaltung der anzahl von löschungen in einem nicht-fluchtigem speicher
DE112010003662B4 (de) Ausgleich nachlassender Funktionsfähigkeit von Halbleiterdatenträgern auf der Grundlage der von einer RAID-Steuereinheit empfangenen Daten- und Paritätsnutzungsinformationen
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE102013020269A1 (de) Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE102012208141A1 (de) Ausgleich nachlassender Funktionsfähigkeit
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112007003036T5 (de) Hybrides nichtflüchtiges Halbleiterspeichersystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G11C 16/34 AFI20061227BHDE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee