DE112011102160T5 - Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers - Google Patents

Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers Download PDF

Info

Publication number
DE112011102160T5
DE112011102160T5 DE112011102160T DE112011102160T DE112011102160T5 DE 112011102160 T5 DE112011102160 T5 DE 112011102160T5 DE 112011102160 T DE112011102160 T DE 112011102160T DE 112011102160 T DE112011102160 T DE 112011102160T DE 112011102160 T5 DE112011102160 T5 DE 112011102160T5
Authority
DE
Germany
Prior art keywords
memory
data
block
blocks
wear
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
DE112011102160T
Other languages
English (en)
Other versions
DE112011102160B4 (de
Inventor
Ilias Iliadis
Roman A. Pletka
Roy Daron Cideciyan
Robert Haas
Xiaoyu Hu
Evangelos S. Eleftheriou
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112011102160T5 publication Critical patent/DE112011102160T5/de
Application granted granted Critical
Publication of DE112011102160B4 publication Critical patent/DE112011102160B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • 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
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • 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)
  • Read Only Memory (AREA)

Abstract

Die Erfindung bezieht sich auf ein Verfahren zum Wear-Levelling (Ausgleich nachlassender Funktionsfähigkeit) bei Zellen oder Seiten oder Teilseiten oder Blöcken eines Speichers wie zum Beispiel eines Flash-Speichers, wobei das Verfahren aufweist:
– Empfangen (S10) eines Blocks von Daten, der in eine Zelle oder Seite oder Teilseite oder einen Block des Speichers geschrieben werden soll;
– Zählen (S40), wie häufig ein bestimmter Binärdatentyp ,0' oder ,1' geschrieben werden soll, in dem empfangenen Block von Daten; und
– Verteilen (S50) des Schreibens des empfangenen Blocks von Daten auf Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers, sodass die nachlassende Funktionsfähigkeit des Speichers im Hinblick auf die Anzahl des bestimmten Binärdatentyps ,0' oder ,1', die in dem zu schreibenden Block von Daten gezählt worden ist, ausgeglichen wird.

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung bezieht sich auf das Gebiet der Verwaltung eines Speichers und insbesondere auf Wear-Levelling-Techniken (Techniken zum Ausgleich nachlassender Funktionsfähigkeit), die in einem Speicher wie zum Beispiel einem Flash-Speicher angewendet werden.
  • HINTERGRUND
  • Halbleiterspeicher oder -einheiten (die auch als SSDs bezeichnet werden) speichern Daten, beispielsweise in einen auf NAND beruhenden Flash-Speicher. Operationen, die auf einer SSD durchgeführt werden, wie zum Beispiel Lese- und Schreiboperationen, werden durch eine Halbleiterspeicher-Steuereinheit oder eine Flash-Speichersteuereinheit gesteuert. Vor dem Schreiben neuer Daten auf ein Segment einer SSD müssen Daten, die bereits in das Segment geschrieben worden sind, gelöscht werden, bevor neue Daten darüber geschrieben werden können. Die Speicher können lediglich einer begrenzten Anzahl von Lösch-Schreib-Zyklen standhalten, üblicherweise zwischen 10.000 und 1.000.000, was gemeinhin als Lebensdauer dieser Einheiten bezeichnet wird. Bei der Lebensdauer handelt es sich um ein entscheidendes Konstruktionskriterium zum Messen der Zuverlässigkeit von SSDs.
  • Flash-Speicher sind zu einer Anzahl von Löschblöcken oder -sektoren geordnet, und diese müssen jeweils vor dem Schreiben von Daten gelöscht werden. Ein typischer Löschblock weist eine Größe von 256 KB auf, er kann jedoch eine Größenordnung von 128 KB bis 2.048 KB oder sogar mehr aufweisen. Eine beliebige vorgegebene Adresse innerhalb eines Löschblocks kann nicht ohne dazwischen erfolgendes Löschen neu geschrieben werden. Löschzyklen sind kumulativ und betreffen nur diejenigen Löschblöcke, die zyklisch durchlaufen werden. Mit anderen Worten, ein Fehler in einem beliebigen Löschblock ist auf die Daten dieses Blocks beschränkt. Abhängig vom Fertigungsprozess des Anbieters sind zwischen 10.000 und 1.000.000 Löschzyklen möglich.
  • Wear-Levelling ist eine verbreitete Technik, die dazu verwendet wird, die Lebensdauer von SSDs zu verlängern. Diese Funktion wird üblicherweise in der Halbleiterspeicher-Steuereinheit oder der Flash-Speichersteuereinheit realisiert. Wear-Levelling ermöglicht, dass Datenschreibvorgänge gleichmäßig über das gesamte Speichermedium verteilt werden. Genauer gesagt, bei Wear-Levelling handelt es sich um einen Algorithmus, durch den die Steuereinheit in der Speichereinheit die insgesamt nachlassende Funktionsfähigkeit über sämtliche Flash-Blöcke ausgleicht, z. B. durch erneutes Zuordnen logischer Blockadressen zu verschiedenen physischen Blockadressen in der SSD.
  • Es sind zahlreiche Wear-Levelling-Algorithmen nach dem Stand der Technik bekannt. Sie legen den Schwerpunkt auf die gleichmäßige Nutzung jedes Flash-Blocks. Diese Algorithmen unterscheiden sich voneinander vor allem im Hinblick auf die Häufigkeit der Neuzuordnung von Blöcken, auf den Algorithmus zum Finden der Blöcke mit der „am geringsten nachlassenden Funktionsfähigkeit”, in die geschrieben werden soll, und auf Varianten von Funktionen zum Austauschen von Datenblöcken. Abhängig davon, ob statische Datenblöcke verschoben werden oder nicht, können diese Algorithmen in zwei Kategorien eingeordnet werden: in dynamisches Wear-Levelling und statisches Wear-Levelling. Ein Wear-Levelling-Algorithmus wird als dynamisch bezeichnet, wenn er keine statischen Datenblöcke verschiebt, anderenfalls wird er als statisch bezeichnet.
  • Alle vorhandenen Wear-Levelling-Algorithmen, seien sie dynamisch oder statisch, arbeiten auf der Blockebene, und zwar zielen sie darauf ab, Lösch/Schreib-Operationen auf sämtlichen in der SSD verfügbaren Flash-Blöcken ins Gleichgewicht zu bringen. Die tatsächliche nachlassende Funktionsfähigkeit, die an einer bestimmten Zelle auftritt, ist jedoch proportional zu der Anzahl von 0en (Nullen), die je darauf geschrieben worden sind. Wenn für Flash-Zellen zum Beispiel eine Lebensdauerangabe von 10.000 Lösch-/Schreibzyklen angegeben wird, kann daher jede Zelle 10.000-mal gelöscht und mit 0en beschrieben werden. Da Blöcke von Daten, die in Flash-Blöcke geschrieben werden, als wahlfrei betrachtet werden können und folglich nicht unbedingt dieselbe Anzahl von 0en aufweisen, besteht die Wahrscheinlichkeit, dass die nachlassende Funktionsfähigkeit von Flash-Blöcken aufgrund der differierenden Anzahl von 0en, die in sie geschrieben werden, in erheblichem Umfang unterschiedlich ausfällt, was dazu führt, dass die Funktionsfähigkeit eines Teils der Blöcke deutlich früher nachlässt als die anderer.
  • Folglich entsteht der Nachteil des Wear-Levelling auf Blockebene aus dem Umstand, dass unterschiedliche Datenblöcke zu einer unterschiedlich nachlassenden Funktionsfähigkeit von Flash-Blöcken führen können und infolgedessen die tatsächliche nachlassende Funktionsfähigkeit zweier beliebiger Blöcke stark voneinander abweichen kann, selbst wenn beide genau dieselbe Anzahl von Lösch-Schreib-Operationen aufweisen.
  • Da es sich bei einer Flash-Zelle um die kleinste Speichereinheit handelt, die potenziell zu einem Ausfall des gesamten Blocks führen kann, ist ein Wear-Levelling-Algorithmus auf der Grundlage von Zellen, der die nachlassende Funktionsfähigkeit einzelner Speicherzellen überwacht und steuert, erwünscht.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß einem ersten Aspekt wird die Erfindung als Verfahren zum Wear-Levelling bei Zellen oder Seiten oder Teilseiten oder Blöcken eines Speichers wie zum Beispiel eines Flash-Speichers verkörpert. Das Verfahren beinhaltet:
    • – Empfangen eines Blocks von Daten, der in eine Zelle oder Seite oder Teilseite oder einen Block des Speichers geschrieben werden soll;
    • – Zählen, wie häufig ein bestimmter Binärdatentyp ,0' oder ,1' geschrieben werden soll, in dem empfangenen Block von Daten; und
    • - Verteilen des Schreibens des empfangenen Blocks von Daten auf Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers, sodass die nachlassende Funktionsfähigkeit des Speichers im Hinblick auf die Anzahl des bestimmten Binärdatentyps ,0' oder ,1', die in dem zu schreibenden Block von Daten gezählt worden ist, ausgeglichen wird.
  • Bei Ausführungsformen kann das Verfahren eines oder mehrere der folgenden Merkmale aufweisen:
    • – Das Verteilen des Schreibens des empfangenen Blocks von Daten wird des Weiteren im Hinblick auf Wear-Levelling-Daten ausgeführt, die jeder/jedem der Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers zugehörig sind;
    • – bei den Wear-Levelling-Daten handelt es sich um die Anzahl von ,0en', die bereits in eine Zelle oder Seite oder Teilseite oder einen Block des Speichers geschrieben worden sind;
    • – Verwalten eines Pools von empfangenen Blöcken von Daten;
    • – der Block von Daten, der von den empfangenen Blöcken von Daten des Pools die größte Anzahl von ,0en' aufweist, wird in die Zelle oder Seite oder Teilseite oder den Block des Speichers geschrieben, die/der die Wear-Levelling-Daten aufweist, die die Zelle oder Seite oder Teilseite oder den Block des Speichers mit der am geringsten nachlassenden Funktionsfähigkeit kennzeichnen;
    • – der Block von Daten, der von den empfangenen Blöcken von Daten des Pools die geringste Anzahl von ,0en' aufweist, wird in die Zelle oder Seite oder Teilseite oder den Block des Speichers geschrieben, die/der die Wear-Levelling-Daten aufweist, die die Zelle oder Seite oder Teilseite oder den Block des Speichers mit der am stärksten nachlassenden Funktionsfähigkeit kennzeichnen;
    • – die Zelle oder Seite oder Teilseite oder der Block des Speichers mit der am geringsten nachlassenden Funktionsfähigkeit wird mit den Wear-Levelling-Daten verknüpft, die die geringste Anzahl von ,0en' aufweisen; und die Zelle oder Seite oder Teilseite oder der Block des Speichers mit der am stärksten nachlassenden Funktionsfähigkeit wird mit den Wear-Levelling-Daten verknüpft, die die größte Anzahl von ,0en' aufweisen;
    • – jede(r) der Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers wird mit ihren/seinen jeweiligen Wear-Levelling-Daten in einem Zähler erfasst;
    • – die in dem Zähler erfassten Zellen oder Seiten oder Teilseiten oder Blöcke werden geordnet;
    • – die Wear-Levelling-Daten werden nach jedem Verteilen des Schreibens jedes empfangenen Blocks von Daten aktualisiert;
    • – das Verteilen des Schreibens des empfangenen Blocks von Daten ist auf einen Satz von Zellen oder Seiten oder Teilseiten oder Blöcken des Speichers beschränkt, wobei der Satz von Zellen oder Seiten oder Teilseiten oder Blöcken des Speichers Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers aufweist, die über unterschiedliche Wear-Levelling-Daten verfügen.
  • Gemäß einem weiteren Aspekt wird die Erfindung als System zum Wear-Levelling bei Zellen oder Seiten oder Teilseiten oder Blöcken eines Speichers wie zum Beispiel eines Flash-Speichers verkörpert, das aufweist:
    • – ein Mittel zum Empfangen eines Blocks von Daten, der in eine Zelle oder Seite oder Teilseite oder einen Block des Speichers geschrieben werden soll; und
    • – eine Speichersteuereinheit; wobei die Speichersteuereinheit
    • – in dem empfangenen Block von Daten zählt, wie häufig ein bestimmter Binärdatentyp ,0' oder ,1' geschrieben werden soll; und
    • – das Schreiben des empfangenen Blocks von Daten auf Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers verteilt, sodass die nachlassende Funktionsfähigkeit des Speichers im Hinblick auf die Anzahl des bestimmten Binärdatentyps ,0' oder ,1', die in dem zu schreibenden Block von Daten gezählt worden ist, ausgeglichen wird.
  • Bei Ausführungsformen kann das System eines oder mehrere der folgenden Merkmale aufweisen:
    • – Die Speichersteuereinheit erfasst die Wear-Levelling-Daten für jede Zelle oder Seite oder Teilseite oder jeden Block des Speichers in einem Zähler und aktualisiert die Wear-Levelling-Daten nach jedem Verteilen des Schreibvorgangs jedes empfangenen Blocks von Daten;
    • – die Speichersteuereinheit weist des Weiteren eine Schreibzuordnungsfunktion auf, die einen Satz von Zellen oder Seiten oder Teilseiten oder Blöcken des Speichers verwaltet, wobei der Satz von Zellen oder Seiten oder Teilseiten oder Blöcken des Speichers Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers aufweist, die über unterschiedliche Wear-Levelling-Daten verfügen.
  • Gemäß einem weiteren Aspekt wird die Erfindung als Computerprogramm verkörpert das auf einem computerlesbaren Medium gespeichert ist, um die nachlassende Funktionsfähigkeit von Zellen oder Seiten oder Teilseiten oder Blöcken eines Speichers wie zum Beispiel eines Flash-Speichers auszugleichen, ein Codemittel aufweisend, um einen Computer zu veranlassen, die Schritte des Verfahrens gemäß der Erfindung durchzuführen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ein System und ein Prozess, die die Erfindung verkörpern, werden nun mithilfe eines nicht beschränkenden Beispiels und unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, für die gilt:
  • 1 ist eine schematische Darstellung eines Flash-Speichers;
  • 2 ist eine schematische Darstellung einer Halbleitereinheit;
  • 3 ist ein Ablaufplan einer Ausführungsform eines Prozesses gemäß der Erfindung;
  • 4 ist ein Blockschaltbild einer Computer-Hardware gemäß einer Ausführungsform der vorliegenden Erfindung.
  • GENAUE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Die Erfindung bezieht sich auf ein Verfahren zum Wear-Levelling bei Zellen oder Seiten oder Teilseiten oder Blöcken (Zellen/Seiten/Teilseiten/Blöcken) eines Speichers wie zum Beispiel eines Flash-Speichers. Wear-Levelling bei Zellen/Seiten/Teilseiten/Blöcken bedeutet das Ausgleichen der nachlassenden Funktionsfähigkeit von Zellen/Seiten/Teilseiten/Blöcken des Speichers. Zu diesem Zweck wird ein Block von Daten empfangen, der in eine(n) Zelle/Seite/Teilseite/Block des Speichers geschrieben werden soll. Anschließend wird in dem empfangenen Block von Daten gezählt, wie häufig ein bestimmter Binärdatentyp ,0' oder ,1' geschrieben werden soll. Als Nächstes wird das Schreiben des empfangenen Blocks von Daten auf Zellen/Seiten/Teilseiten/Blöcke des Speichers verteilt, sodass die nachlassende Funktionsfähigkeit des Speichers im Hinblick auf die Anzahl des bestimmten Binärdatentyps ,0' oder ,1', die in dem zu schreibenden Block von Daten gezählt worden ist, ausgeglichen wird.
  • In einem Speicher wie zum Beispiel einem Flash-Speicher wird der Block von Daten, der darin gespeichert ist, mit einem Binärsystem dargestellt, das auch als Dualsystem bezeichnet wird. Dies geht damit einher, dass Blöcke von Daten aus Binärdaten bestehen, die durch numerische Werte mithilfe zweier Symbole dargestellt werden: ,0' und ,1'; dies bedeutet, dass Binärdaten durch ,0en' und/oder ,1en' dargestellt werden. Wenn die Anzahl eines bestimmten Binärdatentyps innerhalb eines Datenblocks gezählt wird (zum Beispiel die ,0en'), wird dementsprechend die Anzahl des anderen bestimmten Binärdatentyps innerhalb des Datenblocks implizit ebenfalls gezählt (zum Beispiel die ,1en'). Mit anderen Worten, das Zählen der ,0en' bedeutet, dass die ,1en' gezählt werden, und umgekehrt.
  • Daher schlägt die vorliegende Erfindung eine neue Lösung für das Wear-Levelling eines Speichers, z. B. eines Speichers einer Halbleitereinheit wie zum Beispiel eines Flash-Speichers, vor. Sie gründet sich auf ein statistisches Wear-Levelling auf der Grundlage von Zellen. Das statistische Wear-Levelling auf der Grundlage von Zellen zielt darauf ab, eine gleichmäßig nachlassende Funktionsfähigkeit über sämtliche Zellen des Speichers hinweg anstelle einer ungefähr gleichmäßig nachlassenden Funktionsfähigkeit über Blöcke hinweg nach dem Stand der Technik zu erhalten. Die vorliegende Erfindung arbeitet nach dem Prinzip, dass lediglich das Schreiben einer ,0' in eine Zelle ein Nachlassen ihrer Funktionsfähigkeit verursacht und folglich eine gleichmäßig nachlassende Funktionsfähigkeit auf der Zellenebene erzielt wird, wenn die Gesamtzahl der geschriebenen ,0en' für alle Zellen statistisch gleichmäßig gehalten wird. Eine Ausführungsform der Erfindung überwacht die Anzahl der ,0en', die auf Zellen-/Seiten/Teilseiten-/Blockebene geschrieben werden, berechnet die Anzahl der 0en eingehender Datenblöcke, die in den Speicher geschrieben werden sollen, und schreibt Blöcke von Daten mit weniger 0en in die/den Zelle/Block/Seite/Teilseite mit einer hohen Anzahl von geschriebenen ,0en' im Verlauf und umgekehrt.
  • Es wird nun auf 1 Bezug genommen, in der eine schematische Darstellung eines Flash-Speichers 1 wie zum Beispiel eines NAND-Speichers dargestellt wird. Der Flash-Speicher speichert Daten in einem Array von Zellen, die aus Floating-Gate-Transistoren 2, 4, 6, 8, 10, 12 bestehen. Bei einem Floating-Gate-Transistor handelt es sich um einen Feldeffekttransistor, der einem herkömmlichen MOSFET ähnelt, der einen Drain (D), eine Source (S) und ein Gate aufweist, er weist jedoch ferner ein elektrisch isoliertes Floating-Gate (FG) auf, in dem Elektronen gefangen werden können. In 1 weist die Zelle 10 einen Drain (D), eine Source (S), ein Steuer-Gate (CG) und ein Floating-Gate (FG) auf.
  • Die Floating-Gate-Transistoren 2, 4, 6 des Flash-Speichers 1 sind in Reihe verbunden und bilden so eine erste Bit-Leitung 14 aus. Die Floating-Gate-Transistoren 8, 10, 12 sind in Reihe verbunden und bilden eine zweite Bit-Leitung 14 aus. Beispielsweise ist der Drain (D) der Zelle 10 in Reihe mit der Source der Zelle 8 verbunden, und die Source (S) der Zelle 10 ist in Reihe mit dem Drain der Zelle 12 verbunden. Darüber hinaus sind die Zellen, die aus den Floating-Gate-Transistoren (2, 8) bzw. (4, 10) und (6, 12) hergestellt sind, über ihr jeweiliges Steuer-Gate (CG) mit einer Wortleitung 22 bzw. mit den Wortleitungen 20 und 18 verbunden. Es versteht sich, dass 1 nur einen kleinen Abschnitt des Array von Zellen darstellt, die den Flash-Speicher 1 ausbilden.
  • Jede einzelne Zelle 2, 4, 6, 8, 10, 12 kann durch Anlegen einer Spannung an das Steuer-Gate (CG) und den Drain (D) und durch Verbinden der Source (S) mit Masse programmiert werden. Elektronen werden in das Floating-Gate injiziert und werden in dem Floating-Gate gefangen, das deshalb geladen wird. Infolgedessen wird die Zelle auf ein Binärdatum ,0' festgelegt.
  • Jede einzelne Zelle 2, 4, 6, 8, 10, 12 kann auf mehrere Arten gelöscht werden. Ein Ansatz kann darin bestehen, das Steuer-Gate (CG) auf Masse zu legen und eine Spannung an die Source (S) anzulegen, sodass die gefangenen Elektronen von dem Floating-Gate (FG) zu der Source (S) fließen. Folglich wird das Floating-Gate entladen, und die Zelle wird auf ein Binärdatum ,1' festgelegt.
  • In einem Speicher auf der Grundlage von Zellen mit einem Speicherwert (single-level cell, SLC) speichert eine Zelle nur ein Bit (ein Binärdatum ,0' oder ,1'). Bei einer Einheit auf der Grundlage von Zellen mit mehreren Speicherwerten (multi-level cell, MLC) kann eine Zelle mehr als ein Bit (z. B. zwei Binärdaten) speichern.
  • Daher legt eine elektrische Ladung, die in dem Floating-Gate der Zelle gefangen ist, den logischen Zustand fest, der aus der Zelle des Speichers ausgelesen wird. Etwas vereinfacht ausgedrückt arbeitet der Speicher folgendermaßen: Das Programmieren eines Binärdatums ,0' (gemeinhin als Schreiben einer ,0' bezeichnet) in den Flash-Speicher ist gleichbedeutend mit dem Laden des Floating-Gate, wodurch der Logikwert auf Null gebracht wird. Darüber hinaus ist es nur möglich, eine Zelle zu programmieren (das heißt, das Floating-Gate zu laden), die gelöscht worden ist. Zudem wird beim Löschen einer Zelle ein Binärdatum ,1' in dem Floating-Gate des Flash-Speichers programmiert, und dies ist gleichbedeutend mit dem Entladen der Zelle, was als logische ,1' gelesen wird.
  • Ein Speicher wie zum Beispiel ein Flash-Speicher wird in Seiten, Teilseiten und Blöcken angeordnet. Jeder Block besteht aus einer Anzahl von Seiten, die üblicherweise eine Größe von 512 oder 2.048 oder 4.096 Byte aufweisen. Jede Seite ist mit einigen Bytes zum Speichern einer Prüfsumme eines Fehlerkorrekturcodes (error correcting code, ECC) verknüpft. Üblicherweise weist eine Seite eine Vielzahl von Zellen auf, und ein Block weist eine Vielzahl von Seiten auf. Darüber hinaus kann eine Seite in Teilseiten unterteilt werden; beispielsweise kann eine Seite mit einer Größe von 4.096 Byte in 8 Teilseiten von jeweils 512 Byte unterteilt werden. Bei der Zelle eines Speichers handelt es sich um die kleinste Einheit zum Speichern eines Binärdatums.
  • Es wird nun auf 2 Bezug genommen, in der eine schematische Darstellung einer Halbleitereinheit (oder eines Halbleiterspeichers) dargestellt wird. Die Halbleitereinheit 20 weist einen Hauptspeicher 206; zum Beispiel einen Flash-Speicher wie etwa einen NAND-Speicher auf, wie in 1 dargestellt. Im Übrigen kann der Hauptspeicher einen oder mehrere Chips aufweisen. Bei einem Chip handelt es sich um eine integrierte Schaltung, die eine Vielzahl von Zellen aufweist. Die Halbleitereinheit kann eine Speichersteuereinheit 202 aufweisen, die Funktionen zum Durchführen von Operationen realisiert, die in der SSD durchgeführt werden, wie zum Beispiel Lese-, Schreib- und Lösch-Operationen. Die Speichersteuereinheit kann sonstige Funktionen zur Verwaltung der SSD realisieren. Zusätzlich weist die SSD Eingabe/Ausgabe-(E/A-)Schnittstellen 204a und 204b zum Austauschen von Daten mit einer Einheit (z. B. einem Computer) auf. Die E/A-Schnittstellen ermöglichen das Empfangen von Blöcken von Daten, die in den Hauptspeicher 206 geschrieben werden sollen, und das Senden von Blöcken von Daten, die bereits in dem Hauptspeicher 206 gespeichert sind. Die E/A-Schnittstellen können mit einem Sekundärspeicher 210 verbunden sein, auf dem die empfangenen Blöcke von Daten vorübergehend gespeichert werden können. Dieser Sekundärspeicher 210 bezweckt das Bereitstellen eines Pools von empfangenen Blöcken von Daten, die in den Hauptspeicher 210 geschrieben werden sollen. Der Sekundärspeicher 210 fungiert als Datenpuffer, und es kann sich dabei um eine DRAM-, Flash- oder eine sonstige Speichertechnologie handeln. Folglich werden die empfangenen Blöcke von Daten in einem ersten Schritt in dem Sekundärspeicher 210 gespeichert, und sie werden in einem zweiten Schritt in den Hauptspeicher 206 verschoben. Die Operationen, die in dem Pool der empfangenen Blöcke von Daten durchgeführt werden, werden durch die Speichersteuereinheit 202 verwaltet. Die SSD 20 kann außerdem einen Zähler 208 aufweisen, in dem Wear-Levelling-Daten, die jeder/jedem der Zellen/Seiten/Teilseiten/Blöcke des Hauptspeichers 206 zugehörig sind, erfasst werden. Die Wear-Levelling-Daten einer/eines Zelle/Seite/Teilseite/Blocks stellen die verbleibende Lebensdauer des Hauptspeichers 206, z. B. eines Flash-Speichers, dar. Mit anderen Worten, die Wear-Levelling-Daten beschreiben, wie viele zusätzliche Lösch-/Schreib-Zyklen in einer/einem Zelle/Seite/Teilseite/Block des Hauptspeichers 206 durchgeführt werden können. Konkret ist der Zähler 208 ein Speicher, bei dem es sich um eine DRAM-, Flash- oder eine sonstige Speichertechnologie handeln kann, und Operationen, die in dem Zähler 208 durchgeführt werden, werden durch die Speichersteuereinheit 202 gesteuert.
  • Es versteht sich, dass der Hauptspeicher 206 im Allgemeinen als Speicher bezeichnet wird; der Deutlichkeit halber und zur Unterscheidung der verschiedenen Speicher der Halbleitereinheit 20 sind die Begriffe Hauptspeicher 206, Sekundärspeicher 210 und Zähler 208 eingeführt worden.
  • Es wird nun auf 3 Bezug genommen, in der ein Ablaufplan einer Ausführungsform eines Verfahrens zum Wear-Levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers wie etwa eines Flash-Speichers beispielsweise im Hinblick auf eine Ausführungsform einer Halbleitereinheit, wie in 2 beschrieben, dargestellt wird.
  • In Schritt S10 wird ein Block von Daten empfangen. Wie unter Bezugnahme auf 2 erörtert, kann die Halbleitereinheit 20 den Block von Daten durch die Eingabe/Ausgabe-(E/A-)Schnittstellen 204a und 204b empfangen.
  • Als Nächstes wird der empfangene Block von Daten in Schritt S20 mit anderen Blöcken von Daten, die zuvor empfangen worden waren, gespeichert, sodass ein Pool von empfangenen Blöcken von Daten geführt wird. Der Pool von empfangenen Blöcken von Daten kann in dem Sekundärspeicher 210 der SSD 20 gespeichert werden. Folglich weist der Pool den nächsten Block von Daten auf, der in eine(n) Zelle/Seite/Teilseite/Block des Speichers geschrieben werden soll.
  • Dann werden in Schritt S30 die in einem Zähler erfassten Zellen/Seiten/Teilseiten/Blöcke geordnet (S30). Das Ordnen wird gemäß den jeweiligen Wear-Levelling-Daten ausgeführt, die jeder/jedem der Zellen/Seiten/Teilseiten/Blöcke zugehörig sind.
  • Bei den Wear-Levelling-Daten einer/eines Zelle/Seite/Teilseite/Blocks des Speichers kann es sich um die Anzahl von ,0en' handeln, die bereits in die/den Zelle/Seite/Teilseite/Block des Speichers geschrieben worden sind. Es ist tatsächlich nur möglich, eine Zelle zu programmieren, die gelöscht worden ist, das heißt, ein Binärdatum ,1' wird in das Floating-Gate des Flash-Speichers programmiert; damit geht einher, dass die tatsächlich nachlassende Funktionsfähigkeit, die an einer beliebigen konkreten Zelle auftritt, proportional zu der Anzahl der 0en ist, die je in sie geschrieben worden sind. Daher versteht sich, dass die/der Zelle/Seite/Teilseite/Block des Speichers mit der am geringsten nachlassenden Funktionsfähigkeit mit den Wear-Levelling-Daten verknüpft ist, die die geringste Anzahl von ,0en' aufweisen. Demgegenüber ist die/der Zelle/Seite/Teilseite/Block des Speichers mit der am stärksten nachlassenden Funktionsfähigkeit mit den Wear-Levelling-Daten verknüpft, die die größte Anzahl von ,0en' aufweisen. Das Ordnen der Wear-Levelling-Daten ermöglicht ein leichtes Identifizieren der/des Zelle/Seite/Teilseite/Blocks des Speichers mit der am stärksten und mit der am geringsten nachlassenden Funktionsfähigkeit.
  • Konkret zählt der Zähler (z. B. ein Speicher) fortlaufend die Anzahl von ,0en', die in jede(n) Zelle/Seite/Teilseite/Block des Speichers geschrieben werden, sodass durch den Zähler eine Tabelle geführt wird, die eine Anzahl von ,0en' zuordnet, die in jede(n) Zelle/Seite/Teilseite/Block geschrieben worden sind. Die Zellen/Seiten/Teilseiten/Blöcke, die in der Tabelle erfasst sind, können leicht nach ihrer jeweiligen Anzahl von ,0en' geordnet werden.
  • Ob Wear-Levelling-Daten für jede Zelle oder Seite oder Teilseite oder jeden Block erfasst werden, hängt von dem Kompromiss ab, den man zwischen der Komplexität/den Kosten der Realisierung und der Leistungsfähigkeit des Wear-Levelling eingehen will. Wear-Levelling-Daten auf (Teil-)Seitenebene zu verwalten, weist die größte Wirksamkeit beim Wear-Levelling auf und hat gleichzeitig die höchste Realisierungskomplexität und -kosten zur Folge, während Zähler auf Blockebene den geringsten Realisierungsaufwand erfordern, jedoch die geringste Wirksamkeit beim Wear-Levelling aufweisen.
  • Als Nächstes wird in Schritt S40 für jeden empfangenen Block von Daten gezählt, wie häufig ein bestimmter Binärdatentyp ,0' oder ,1' in eine(n) Zelle/Seite/Teilseite/Block des Speichers geschrieben werden soll. Konkret wird die Anzahl von ,0en' oder ,1en', die in dem Block von Daten gezählt worden ist, in einem Speicher, z. B. dem Sekundärspeicher 210, gespeichert.
  • Als Nächstes wird in Schritt S50 das Schreiben eines empfangenen Blocks von Daten auf Zellen/Seiten/Teilseiten/Blöcke des Speichers verteilt, sodass die nachlassende Funktionsfähigkeit des Speichers im Hinblick auf die Anzahl des bestimmten Binärdatentyps ,0' oder ,1', die in dem zu schreibenden Block von Daten gezählt worden ist, ausgeglichen wird. Folglich kann Wear-Levelling auf Zellenebene im statistischen Sinne ausgeführt werden, da jede Zelle im Durchschnitt und langfristig höchstwahrscheinlich einer ähnlich nachlassenden Funktionsfähigkeit im Hinblick auf die Anzahl von 0en, die in sie geschrieben werden, unterliegt, da das Verteilen der Blöcke von Daten auf der Grundlage der ,0en' in dem zu schreibenden Block von Daten durchgeführt wird. Es versteht sich, dass das Verteilen der Blöcke von Daten auf der Grundlage der Anzahl von ,1en' in dem zu schreibenden Block von Daten durchgeführt werden kann, da das Zählen der Anzahl von ,1en' in dem zu schreibenden Block von Daten implizit bedeutet, dass die Anzahl der ,0en' in dem Block von Daten gezählt wird.
  • Darüber hinaus kann das Schreiben eines empfangenen Blocks von Daten im Hinblick auf Wear-Levelling-Daten, die jeder/jedem der Zellen/Seiten/Teilseiten/Blöcken des Speichers zugehörig sind, verteilt werden. Das Wear-Levelling wird in vorteilhafter Weise verbessert, wenn das Wear-Levelling einer bestimmten Zelle berücksichtigt wird.
  • Alternativ wird das Schreiben eines empfangenen Blocks von Daten auf einen Satz von Zellen/Seiten/Teilseiten/Blöcken des Speichers beschränkt, wobei die Zellen/Seiten/Teilseiten/Blöcke unterschiedliche Wear-Levelling-Daten aufweisen. Dies ermöglicht es, einen empfangenen Block von Daten unverzüglich zu schreiben und auf diese Weise die Konsistenz des Wear-Levelling und die Geschwindigkeit der Verarbeitung von Blöcken von Daten erheblich zu verbessern.
  • Konkret wird der Satz von Zellen/Seiten/Teilseiten/Blöcken des Speichers durch eine Schreibzuordnungsfunktion verwaltet, die durch den Hauptspeicher 202 der Halbleitereinheit 20 verwaltet wird.
  • Es können zwei Verteilungsmodi (S60, S70) ausgeführt werden. Die Schritte S60 und S70 können gleichzeitig, nacheinander oder abwechselnd ausgeführt werden.
  • In Schritt S60 wird das Verteilen so durchgeführt, dass der Block von Daten, der von den empfangenen Blöcken von Daten des Pools die größte Anzahl von ,0en' aufweist, in die/den Zelle/Seite/Teilseite/Block des Speichers geschrieben wird, die/der die Wear-Levelling-Daten aufweist, die die/den Zelle/Seite/Teilseite/Block des Speichers mit der am geringsten nachlassenden Funktionsfähigkeit kennzeichnen.
  • Wie aus dem Obigen zu ersehen ist, weist die/der Zelle/Seite/Teilseite/Block mit der am geringsten nachlassenden Funktionsfähigkeit die Wear-Levelling-Daten auf, die von den Zellen/Seiten/Teilseiten/Blöcken des Speichers die geringste Anzahl von ,0en' aufweisen.
  • Alternativ kann das Verteilen so durchgeführt werden, dass der Block von Daten, der von den empfangenen Blöcken von Daten des Pools die geringste Anzahl von ,1en' aufweist, in die/den Zelle/Seite/Teilseite/Block des Speichers geschrieben wird, die/der die Wear-Levelling-Daten aufweist, die die/den Zelle/Seite/Teilseite/Block des Speichers mit der am geringsten nachlassenden Funktionsfähigkeit kennzeichnen.
  • In Schritt S70 wird das Verteilen so durchgeführt, dass der Block von Daten, der von den empfangenen Blöcken von Daten des Pools die geringste Anzahl von ,0en' aufweist, in die/den Zelle/Seite/Teilseite/Block des Speichers geschrieben wird, die/der die Wear-Levelling-Daten aufweist, die die/den Zelle/Seite/Teilseite/Block des Speichers mit der am stärksten nachlassenden Funktionsfähigkeit kennzeichnen; wobei die/der Zelle/Seite/Teilseite/Block mit der am stärksten nachlassenden Funktionsfähigkeit die Wear-Levelling-Daten aufweist, die von den Zellen/Seiten/Teilseiten/Blöcken die größte Anzahl von ,0' en aufweisen.
  • Alternativ kann das Verteilen so durchgeführt werden, dass der Block von Daten, der von den empfangenen Blöcken von Daten des Pools die größte Anzahl von ,1en' aufweist, in die/den Zelle/Seite/Teilseite/Block des Speichers geschrieben wird, die/der die Wear-Levelling-Daten aufweist, die die/den Zelle/Seite/Teilseite/Block des Speichers mit der am stärksten nachlassenden Funktionsfähigkeit kennzeichnen.
  • Nachdem das Schreiben eines Blocks durchgeführt worden ist, werden die Wear-Levelling-Daten der/des gerade geschriebenen Zelle/Seite/Teilseite/Blocks aktualisiert (Schritt S80). Üblicherweise kann die Aktualisierung durchgeführt werden, indem an den Zähler 208 übertragen wird, wie häufig ein bestimmter Binärdatentyp ,0' oder ,1' für den geschriebenen Block von Daten in Schritt S40 gezählt worden ist. Diese Operation kann durch die Speichersteuereinheit 202 durchgeführt werden.
  • Es versteht sich, dass das Verfahren der Erfindung auch in ähnlicher Weise auf die Chips angewendet werden kann, die den Hauptspeicher ausbilden. In diesem Fall werden die Wear-Levelling-Daten mit jedem Chip des Hauptspeichers verknüpft.
  • Die in 3 beschriebene Ausführungsform ist im Hinblick auf einen Speicher auf der Grundlage von Zellen mit einem Speicherwert (SLC), die nur ein Bit speichern können, beschrieben worden.
  • Bei einer weiteren Ausführungsform wird das Verfahren der Erfindung in ähnlicher Weise auf einen Speicher auf der Grundlage von Zellen mit mehreren Speicherwerten (MLC) angewendet. Jede Zelle in einem MLC weist mehrere Bits auf, zum Beispiel 2 Bits. Nach dem Löschen wird eine Zelle mit einem Datenmuster 11 zurückgesetzt, was bedeutet, dass die Zelle entladen wird. Folglich lässt die Funktionsfähigkeit nach, wenn und nur wenn sonstige Datenmuster wie zum Beispiel 01, 10 und 00 in die Zelle geschrieben werden. Daher kann die Erfindung selbstverständlich in einem MLC-Speicher verkörpert werden, indem alle diese Muster 01, 10 und 00 berücksichtigt werden.
  • Genauer gesagt, die Wear-Levelling-Daten werden für jede(n) Zelle, Seite, Teilseite, Block für die Anzahl der Vorkommen jeglicher Muster 01, 10 und 00 oder jegliche Gruppen von Mustern gehalten, die in sie/ihn geschrieben worden sind. Ein Pool von zu schreibenden Blöcken von Daten wird verwaltet, in dem die Anzahl von 01-, 10- und 00-Mustern für jeden empfangenen Block von Daten gezählt wird. Anschließend wird das Verteilen des Schreibens eines Blocks von Daten ausgeführt.
  • Wie für einen Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als Verfahren, System oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung eine reine Hardware-Ausführungsform, eine reine Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform annehmen, in der Software- und Hardware-Aspekte kombiniert werden, die sämtlich hierin verallgemeinernd als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert wird, auf denen computerlesbarer Programmcode verkörpert ist.
  • Es kann eine beliebige Kombination eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel um eine) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- bzw. Halbleitersystem, -vorrichtung oder -einheit oder um eine beliebige geeignete Kombination aus Obigem handeln, ohne darauf beschränkt zu sein. Zu konkreteren Beispielen (einer nicht erschöpfenden Liste) des computerlesbaren Speichermediums würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (random access memory, RAM), ein Festwertspeicher (read-only memory, ROM), ein löschbarer, programmierbarer Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine Magnetspeichereinheit oder eine beliebige geeignete Kombination des Obigen. Im Rahmen dieses Dokuments kann ein computerlesbares Speichermedium jedes physische Medium sein, das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal, in dem computerlesbarer Programmcode verkörpert wird, zum Beispiel im Basisband oder als Teil einer Trägerwelle beinhalten. Ein solches sich ausbreitendes Signal kann eine Vielfalt von Formen annehmen, darunter eine elektromagnetische, eine optische oder eine beliebige geeignete Kombination daraus, ohne darauf beschränkt zu sein. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen austauschen, verbreiten oder transportieren kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann mithilfe eines beliebigen geeigneten Mediums übertragen werden, zum Beispiel über Funk, Kabel, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder über eine beliebige geeignete Kombination des Obigen, ohne darauf beschränkt zu sein.
  • Computerprogrammcode zum Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben werden, zum Beispiel in einer objektorientierten Programmiersprache wie etwa Java, Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie zum Beispiel der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jede Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (local area network, LAN) oder ein Weitverkehrs-Netzwerk (wide area network, WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden.
  • Aspekte der vorliegenden Erfindung werden oben unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle realisiert werden kann/können. Diese Computerprogrammbefehle können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Befehle, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Realisieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Befehle einen hergestellten Gegenstand (article of manufacture) erzeugen, der Befehle beinhaltet, die die/den Funktion/Vorgang realisieren, die/der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaltbilder angegeben ist.
  • Die Computerprogrammbefehle können außerdem auf einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten geladen werden, um zu bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder sonstigen Einheiten ausgeführt wird, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführten Befehle Prozesse bereitstellen, um die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge zu realisieren.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der einen oder mehrere ausführbare Befehle zum Realisieren der angegebenen logischen Funktion(en) aufweist. Es ist außerdem zu beachten, dass bei einigen alternativen Realisierungen die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten können. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Vorgänge ausführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen realisiert werden können.
  • 4 ist ein Blockschaltbild einer Computer-Hardware gemäß einer Ausführungsform der Erfindung. Ein Computersystem (401) gemäß einer Ausführungsform der Erfindung beinhaltet eine CPU (404) und einen Hauptspeicher (402), die mit einem Bus (400) verbunden sind. Der Bus (400) ist mit einer Anzeigesteuereinheit (412) verbunden, die mit einer Anzeige (414) wie zum Beispiel einem LCD-Bildschirm verbunden ist. Die Anzeige (414) wird zum Anzeigen von Daten zu einem Computersystem verwendet. Der Bus (400) ist außerdem über eine Einheitensteuereinheit (406) wie zum Beispiel eine IDE- oder SATA-Steuereinheit mit einer Speichereinheit wie zum Beispiel einer Festplatte (408) oder einer DVD (410) verbunden. Der Bus (404) ist des Weiteren durch eine Tastatur-/Maussteuereinheit (420) oder eine (nicht dargestellte) USB-Steuereinheit mit einer Tastatur (422) und einer Maus (424) verbunden. Der Bus ist außerdem mit einer Datenaustausch-Steuereinheit (418) verbunden, die zum Beispiel einem Ethernet-(eingetragenes Warenzeichen) Protokoll entspricht. Die Datenaustausch-Steuereinheit (418) wird dazu verwendet, das Computersystem (401) physisch mit einem Netzwerk (416) zu verbinden.

Claims (15)

  1. Verfahren zum Wear-Levelling (Ausgleich nachlassender Funktionsfähigkeit) bei Zellen oder Seiten oder Teilseiten oder Blöcken eines Speichers wie zum Beispiel eines Flash-Speichers, wobei das Verfahren aufweist: – Empfangen (S10) eines Blocks von Daten, der in eine Zelle oder Seite oder Teilseite oder einen Block des Speichers geschrieben werden soll; – Zählen (S40), wie häufig ein bestimmter Binärdatentyp ,0' oder ,1' geschrieben werden soll, in dem empfangenen Block von Daten; und – Verteilen (S50) des Schreibens des empfangenen Blocks von Daten auf Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers, sodass die nachlassende Funktionsfähigkeit des Speichers im Hinblick auf die Anzahl des bestimmten Binärdatentyps ,0' oder ,1', die in dem zu schreibenden Block von Daten gezählt worden ist, ausgeglichen wird.
  2. Verfahren nach Anspruch 1, wobei das Verteilen des Schreibens des empfangenen Blocks von Daten des Weiteren im Hinblick auf Wear-Levelling-Daten ausgeführt wird, die jeder/jedem der Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers zugehörig sind.
  3. Verfahren nach Anspruch 2, wobei es sich bei den Wear-Levelling-Daten um die Anzahl von ,0en' (Nullen) handelt, die bereits in eine Zelle oder Seite oder Teilseite oder einen Block des Speichers geschrieben worden sind.
  4. Verfahren nach einem der Ansprüche 2 oder 3, das des Weiteren ein Verwalten (S20) eines Pools von empfangenen Blöcken von Daten aufweist.
  5. Verfahren nach Anspruch 4, wobei der Block von Daten, der von den empfangenen Blöcken von Daten des Pools die größte Anzahl von ,0en' aufweist, in die Zelle oder Seite oder Teilseite oder den Block des Speichers geschrieben (S60) wird, die/der die Wear-Levelling-Daten aufweist, die die Zelle oder Seite oder Teilseite oder den Block des Speichers mit der am geringsten nachlassenden Funktionsfähigkeit kennzeichnen.
  6. Verfahren nach Anspruch 4 oder 5, wobei der Block von Daten, der von den empfangenen Blöcken von Daten des Pools die geringste Anzahl von ,0en' aufweist, in die Zelle oder Seite oder Teilseite oder den Block des Speichers geschrieben (S70) wird, die/der die Wear-Levelling-Daten aufweist, die die Zelle oder Seite oder Teilseite oder den Block des Speichers mit der am stärksten nachlassenden Funktionsfähigkeit kennzeichnen.
  7. Verfahren nach Anspruch 5 oder 6, wobei: – die Zelle oder Seite oder Teilseite oder der Block des Speichers mit der am geringsten nachlassenden Funktionsfähigkeit mit den Wear-Levelling-Daten verknüpft ist, die die geringste Anzahl von ,0en' aufweisen; und – die Zelle oder Seite oder Teilseite oder der Block des Speichers mit der am stärksten nachlassenden Funktionsfähigkeit mit den Wear-Levelling-Daten verknüpft ist, die die größte Anzahl von ,0en' aufweisen.
  8. Verfahren nach einem der Ansprüche 2 bis 7, wobei jede(r) der Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers mit ihren/seinen jeweiligen Wear-Levelling-Daten in einem Zähler erfasst wird.
  9. Verfahren nach Anspruch 8, wobei die in dem Zähler erfassten Zellen oder Seiten oder Teilseiten oder Blöcke geordnet (S30) werden.
  10. Verfahren nach einem der Ansprüche 2 bis 10, wobei die Wear-Levelling-Daten nach jedem Verteilen des Schreibens jedes empfangenen Blocks von Daten aktualisiert (S80) werden.
  11. Verfahren nach einem der Ansprüche 2 bis 11, wobei das Verteilen des Schreibens des empfangenen Blocks von Daten auf einen Satz von Zellen oder Seiten oder Teilseiten oder Blöcken des Speichers beschränkt ist, wobei der Satz von Zellen oder Seiten oder Teilseiten oder Blöcken des Speichers Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers aufweist, die über unterschiedliche Wear-Levelling-Daten verfügen.
  12. System zum Wear-Levelling bei Zellen oder Seiten oder Teilseiten oder Blöcken eines Speichers wie zum Beispiel eines Flash-Speichers, aufweisend: – ein Mittel zum Empfangen eines Blocks von Daten, der in eine Zelle oder Seite oder Teilseite oder einen Block des Speichers geschrieben werden soll; und – eine Speichersteuereinheit; wobei die Speichersteuereinheit – in dem empfangenen Block von Daten zählt, wie häufig ein bestimmter Binärdatentyp ,0' oder ,1' geschrieben werden soll; und das Schreiben des empfangenen Blocks von Daten auf Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers verteilt, sodass die nachlassende Funktionsfähigkeit des Speichers im Hinblick auf die Anzahl des bestimmten Binärdatentyps ,0' oder ,1', die in dem zu schreibenden Block von Daten gezählt worden ist, ausgeglichen wird.
  13. System nach Anspruch 12, wobei die Speichersteuereinheit: – die Wear-Levelling-Daten für jede(n) Zelle oder Seite oder Teilseite oder Block des Speichers in einem Zähler erfasst; und – die Wear-Levelling-Daten nach jedem Verteilen des Schreibens jedes empfangenen Blocks von Daten aktualisiert.
  14. System nach Anspruch 12 oder 13, wobei die Speichersteuereinheit des Weiteren eine Schreibzuordnungsfunktion aufweist, die einen Satz von Zellen oder Seiten oder Teilseiten oder Blöcken des Speichers verwaltet, wobei der Satz von Zellen oder Seiten oder Teilseiten oder Blöcken des Speichers Zellen oder Seiten oder Teilseiten oder Blöcke des Speichers aufweist, die über unterschiedliche Wear-Levelling-Daten verfügen.
  15. Computerprogramm, das auf einem computerlesbaren Medium gespeichert ist, um die nachlassende Funktionsfähigkeit von Zellen oder Seiten oder Teilseiten oder Blöcken eines Speichers wie zum Beispiel eines Flash-Speichers auszugleichen, und das ein Codemittel aufweist, um einen Computer zu veranlassen, die Schritte des Verfahrens nach einem der Ansprüche 1 bis 11 durchzuführen.
DE112011102160.7T 2010-06-28 2011-06-08 Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers Active DE112011102160B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP10167547.8 2010-06-28
EP10167547 2010-06-28
PCT/IB2011/052492 WO2012001556A1 (en) 2010-06-28 2011-06-08 Wear-leveling of cells/pages/sub-pages/blocks of a memory

Publications (2)

Publication Number Publication Date
DE112011102160T5 true DE112011102160T5 (de) 2013-05-02
DE112011102160B4 DE112011102160B4 (de) 2016-10-27

Family

ID=44454748

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011102160.7T Active DE112011102160B4 (de) 2010-06-28 2011-06-08 Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers

Country Status (6)

Country Link
US (1) US9170933B2 (de)
JP (1) JP5706520B2 (de)
CN (1) CN102918601B (de)
DE (1) DE112011102160B4 (de)
GB (1) GB2495873B (de)
WO (1) WO2012001556A1 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262336B2 (en) 2011-12-23 2016-02-16 Intel Corporation Page miss handler including wear leveling logic
WO2013095641A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Sub-block based wear leveling
US8769193B2 (en) * 2012-04-30 2014-07-01 Empire Technology Development Llc Numeric representation to improve life of solid state storage devices
US20140089560A1 (en) * 2012-09-25 2014-03-27 Adesto Technologies Corporation Memory devices and methods having write data permutation for cell wear reduction
US9153331B2 (en) 2013-03-13 2015-10-06 Sandisk Technologies Inc. Tracking cell erase counts of non-volatile memory
US9117533B2 (en) 2013-03-13 2015-08-25 Sandisk Technologies Inc. Tracking erase operations to regions of non-volatile memory
US20160196076A1 (en) * 2013-07-08 2016-07-07 Wilus Institute Of Standards And Technology Inc. Memory system and method for controlling same
GB201322075D0 (en) 2013-12-13 2014-01-29 Ibm Device for selecting a level for at least one read voltage
EP3140300B1 (de) * 2014-05-07 2019-08-14 Evotec International GmbH Sulfoximinsubstituierte chinazoline für pharmazeutische zusammensetzungen
US9563373B2 (en) 2014-10-21 2017-02-07 International Business Machines Corporation Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management
US9830087B2 (en) * 2014-11-13 2017-11-28 Micron Technology, Inc. Memory wear leveling
US10339048B2 (en) 2014-12-23 2019-07-02 International Business Machines Corporation Endurance enhancement scheme using memory re-evaluation
US9990279B2 (en) 2014-12-23 2018-06-05 International Business Machines Corporation Page-level health equalization
US10445232B2 (en) 2015-07-14 2019-10-15 Western Digital Technologies, Inc. Determining control states for address mapping in non-volatile memories
US10452533B2 (en) 2015-07-14 2019-10-22 Western Digital Technologies, Inc. Access network for address mapping in non-volatile memories
US10445251B2 (en) 2015-07-14 2019-10-15 Western Digital Technologies, Inc. Wear leveling in non-volatile memories
US9921969B2 (en) 2015-07-14 2018-03-20 Western Digital Technologies, Inc. Generation of random address mapping in non-volatile memories using local and global interleaving
US10452560B2 (en) 2015-07-14 2019-10-22 Western Digital Technologies, Inc. Wear leveling in non-volatile memories
WO2017017842A1 (ja) * 2015-07-30 2017-02-02 株式会社日立製作所 メモリの制御装置、記憶装置、および、メモリの書込み方法
US9842059B2 (en) 2016-04-14 2017-12-12 Western Digital Technologies, Inc. Wear leveling in storage devices
CN105931660A (zh) * 2016-05-20 2016-09-07 西安紫光国芯半导体有限公司 一种数据拓扑转换器及转换方法及动态存储器
US10055159B2 (en) 2016-06-20 2018-08-21 Samsung Electronics Co., Ltd. Morphic storage device
US10489076B2 (en) 2016-06-20 2019-11-26 Samsung Electronics Co., Ltd. Morphic storage device
US10740466B1 (en) 2016-09-29 2020-08-11 Amazon Technologies, Inc. Securing interfaces of a compute node
US10901627B1 (en) * 2017-02-28 2021-01-26 Amazon Technologies, Inc. Tracking persistent memory usage
CN107102820B (zh) * 2017-04-17 2018-07-06 北京得瑞领新科技有限公司 一种nand闪存设备的数据处理方法及装置
US10976936B2 (en) * 2017-08-23 2021-04-13 Micron Technology, Inc. Sensing operations in memory
KR102556459B1 (ko) 2017-12-20 2023-07-18 에스케이하이닉스 주식회사 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템, 및 그의 라이트 동작방법
US10761739B2 (en) 2018-08-23 2020-09-01 Micron Technology, Inc. Multi-level wear leveling for non-volatile memory
US11537307B2 (en) 2018-08-23 2022-12-27 Micron Technology, Inc. Hybrid wear leveling for in-place data replacement media
KR20200031924A (ko) 2018-09-17 2020-03-25 삼성전자주식회사 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치
US10817430B2 (en) 2018-10-02 2020-10-27 Micron Technology, Inc. Access unit and management segment memory operations
US10860219B2 (en) * 2018-10-05 2020-12-08 Micron Technology, Inc. Performing hybrid wear leveling operations based on a sub-total write counter

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292868B1 (en) * 1996-10-15 2001-09-18 Micron Technology, Inc. System and method for encoding data to reduce power and time required to write the encoded data to a flash memory
US8078794B2 (en) 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
JP2001056785A (ja) 1999-08-20 2001-02-27 Matsushita Electric Ind Co Ltd メモリ制御装置及びメモリ制御方法
US7610438B2 (en) * 2000-01-06 2009-10-27 Super Talent Electronics, Inc. Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
JP3881869B2 (ja) 2001-11-05 2007-02-14 株式会社ルネサステクノロジ 半導体記憶装置
US6973531B1 (en) 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US7237074B2 (en) 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
JP2006012367A (ja) 2004-06-29 2006-01-12 Toshiba Corp 不揮発性半導体記憶装置
US7355892B2 (en) 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices
US7366017B2 (en) 2006-08-22 2008-04-29 Micron Technology, Inc. Method for modifying data more than once in a multi-level cell memory location within a memory array
KR100830580B1 (ko) 2006-10-20 2008-05-21 삼성전자주식회사 플래시 메모리 장치를 포함한 메모리 시스템의 데이터 복원방법
JP4575346B2 (ja) 2006-11-30 2010-11-04 株式会社東芝 メモリシステム
JP2008217857A (ja) 2007-02-28 2008-09-18 Toshiba Corp メモリコントローラ及び半導体装置
CN100468576C (zh) 2007-05-30 2009-03-11 忆正存储技术(深圳)有限公司 闪存数据读写处理方法
US7697325B2 (en) 2007-09-24 2010-04-13 Sandisk Corporation Non-volatile memory cell endurance using data encoding
US7924628B2 (en) 2007-11-14 2011-04-12 Spansion Israel Ltd Operation of a non-volatile memory array
US7903486B2 (en) * 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
KR100857252B1 (ko) 2007-12-27 2008-09-05 (주)인디링스 마모도를 비트 수준에서 평준화하는 플래시 메모리 장치 및플래시 메모리 프로그래밍 방법
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8250417B2 (en) * 2009-01-14 2012-08-21 Micron Technology, Inc. Method for detecting flash program failures

Also Published As

Publication number Publication date
GB2495873A (en) 2013-04-24
GB2495873B (en) 2015-06-10
JP5706520B2 (ja) 2015-04-22
CN102918601B (zh) 2015-10-14
JP2013530473A (ja) 2013-07-25
DE112011102160B4 (de) 2016-10-27
GB201300772D0 (en) 2013-02-27
US20130166827A1 (en) 2013-06-27
WO2012001556A1 (en) 2012-01-05
US9170933B2 (en) 2015-10-27
CN102918601A (zh) 2013-02-06

Similar Documents

Publication Publication Date Title
DE112011102160B4 (de) Wear-levelling bei Zellen/Seiten/Teilseiten/Blöcken eines Speichers
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE102017120840B4 (de) Verfahren und Vorrichtung zur Detektion und Handhabung von Lesestörungen
DE112010002663B4 (de) Speichermanagementsysteme, Verfahren zur Verbesserung der Schreib-Lösch-Ausdauerlebenszeit von Speichervorrichtungen und Computerprogrammprodukt
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE60319407T2 (de) Verfolgen der am häufigsten gelöschten blöcke eines nichtflüchtigen speichersystems
DE112010004656B4 (de) Blockinterner Ausgleich für nachlassende Funktionsfähigkeit von Speichern
DE112014005346B4 (de) Temperaturbasierte Flashspeichersystemerhaltung
DE112006004187B4 (de) Verfahren, nicht-flüchtige Speichervorrichtung und Computersystem zum initiativen Abnutzungsausgleich für einen nicht-flüchtigen Speicher
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE102014103125A1 (de) Verfahren und Vorrichtung zum Optimieren des Log-Likelihood-Quotienten (LLR), die verwendet werden für eine nichtflüchtige Speichervorrichtung und zum Korrigieren von Fehlern in einer nichtflüchtigen Speichervorrichtung
DE102011055714A1 (de) Verfahren zum Programmieren einer nicht-flüchtigen Speichervorrichtung
DE112010003887T5 (de) Datenverwaltung in Halbleiter-Speichereinheiten
DE102013108491A1 (de) Nichtflüchtige Speichervorrichtung und Betriebsverfahren mit variablen Speicherzellenzustandsdefinitionen
DE112017005637T5 (de) Verfahren und System zur Schreibverstärkungsanalyse
DE112020005502T5 (de) Dynamische überprovisionierungszuweisung für zweckbestimmte blöcke
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112019000161T5 (de) Speicher-cache-verwaltung
DE112020006215T5 (de) Blockfamilien-basierte Fehlervermeidung für Speichervorrichtungen
DE102015011991A1 (de) Codierungsschema für vertikale 3D-Flash-Speicher
DE112020005695T5 (de) Speichercontroller für solid-state-speichereinheiten
DE102018105277A1 (de) Auf Hamming-Abstand basierende Binärdarstellungen von Zahlen

Legal Events

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