DE102012208141A1 - Ausgleich nachlassender Funktionsfähigkeit - Google Patents

Ausgleich nachlassender Funktionsfähigkeit Download PDF

Info

Publication number
DE102012208141A1
DE102012208141A1 DE102012208141A DE102012208141A DE102012208141A1 DE 102012208141 A1 DE102012208141 A1 DE 102012208141A1 DE 102012208141 A DE102012208141 A DE 102012208141A DE 102012208141 A DE102012208141 A DE 102012208141A DE 102012208141 A1 DE102012208141 A1 DE 102012208141A1
Authority
DE
Germany
Prior art keywords
wear
unit
units
degree
data
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
DE102012208141A
Other languages
English (en)
Other versions
DE102012208141B4 (de
Inventor
Giovanni Cherubini
Ilias Iliadis
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 DE102012208141A1 publication Critical patent/DE102012208141A1/de
Application granted granted Critical
Publication of DE102012208141B4 publication Critical patent/DE102012208141B4/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
    • 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

Abstract

In einem Verfahren zum Betreiben eines Computergestützten Speichers ist der Speicher so aufgebaut, dass er Daten in Einheiten dieses Speichers ablegt. Für jede Einheit (i) eines Satzes von Einheiten (i) wird ein Grad der Funktionsuntüchtigkeit (c(i)) der Einheit ermittelt. Ein maximaler Grad der Funktionsuntüchtigkeit (c_max) unter den Graden der Funktionsuntüchtigkeit (c(i)) wird ermittelt. Ein Vorschlag einer aus einer oder mehreren Einheiten (i) bestehenden Teilgruppe, diese für einen Löschvorgang von Daten auszuwählen, wird empfangen und mindestens eine Einheit (i) in der Teilgruppe, deren Grad der Funktionsuntüchtigkeit (c(i)) geringer als der maximale Grad der Funktionsuntüchtigkeit (c_max) ist, wird für einen späteren Löschvorgang von Daten gekennzeichnet.

Description

  • Bereich der Erfindung
  • Die vorliegende Erfindung betrifft ein Verfahren, ein Computerprogrammprodukt und eine Einheit zum Betreiben eines Computergestützten Speichers.
  • Hintergrund
  • Zu Halbleiter-Speichereinheiten gehören wiederbeschreibbare nichtflüchtige Speichereinheiten, die elektronische Schaltungen verwenden können, um Daten zu speichern. Zur Zeit werden herkömmliche Plattenspeichereinheiten wie zum Beispiel Festplattenlaufwerke und optische Plattenlaufwerke in manchen Bereichen wie zum Beispiel bei Massenspeicher-Anwendungen für Laptops oder Tischcomputer mehr und mehr durch Halbleiter-Speichereinheiten verdrängt. Halbleiter-Speichereinheiten werden auch in anderen Bereichen wie zum Beispiel bei Unternehmens-Speichersystemen als Ersatz für herkömmliche Plattenspeichereinheiten geprüft. Der Grund dafür ist, dass Halbleiter-Speichereinheiten eine außergewöhnliche Bandbreite sowie eine hervorragende Leistung bei der wahlfreien E/A (Ein/Ausgabe) in Kombination mit einer als vorteilhaft erkannten Robustheit bieten, weil sie keine beweglichen Teile aufweisen.
  • Beim Schreiben von Daten auf eine Halbleiter-Speichereinheit wie zum Beispiel eine Flash-Speichereinheit muss man jedoch auf Besonderheiten der Flash-Technologie achten: Ein NAND-Flash-Speicher ist in Einheiten von Seiten und Blöcken aufgeteilt. Mehrere Seiten bilden einen Block. Während Schreib- und Leseoperationen auf Seiten als der kleinsten Einheit einer solchen Operation angewendet werden können, können Löschoperationen nur auf ganze Blöcke angewendet werden. Und während bei anderen Speichertechnologien veraltete Daten einfach mit neuen Daten überschrieben werden können, erfordert die Flash-Technologie zuerst eine Löschoperation, bevor neue Daten in einen gelöschten Block geschrieben werden können.
  • Eine weitere Besonderheit bei der Flash-Technologie besteht darin, dass die heutigen Flash-Speichereinheiten auf eine begrenzte Anzahl von Programmier/Lösch-Zyklen (Program-Erase-(PE-)cycles) beschränkt sind. In den Spezifikationen für Flash-Speichereinheit wird gewöhnlich eine Lebensdauer angegeben, die ihrer höchstmöglichen Anzahl von PE-Zyklen entspricht. Daher wird eine Schreibtechnik mit der Bezeichnung ”write out of place” (Speichern an anderer Stelle) angewendet, bei der neue oder aktualisierte Daten auf eine freie Seite geschrieben werden, die von einem Zuteiler (allocator) für freie Seiten angeboten wird, statt die Daten auf dieselbe Seite zu schreiben, auf der sich die veralteten Daten befinden. Die Seite, die die veralteten Daten enthält, wird als ungültige Seite gekennzeichnet. Auf diese Weise kann die Lebenserwartung von auf der Flash-Technologie beruhenden Halbleiterdatenträgern (solid-state drives (SSD)) und auch von protokollstrukturierten Dateisystemen verlängert werden, da Löschzyklen, die für das direkte Überschreiben von Daten in einem Block erforderlich sind, vermieden werden.
  • Die verfügbaren freien Seiten werden im Laufe der Zeit möglicherweise jedoch aufgebraucht. Stattdessen können die Blöcke der Flash-Speichereinheit mit einem Mix aus gültigen und ungültigen Seiten belegt werden. Neuer freier Speicherplatz muss von einem Blockrückgewinnungsprozess, der auch als Speicherbereinigungsprozess bezeichnet wird, geschaffen werden, welcher Speicherplatz, der von veralteten, d. h. ungültigen, Daten belegt wird, zurückgewinnt. Zuerst kennzeichnet ein Blockrückgewinnungsprozess auf der Grundlage einer bestimmten Vorgehensweise Blöcke zum Löschen.
  • Anschließend werden gültige Daten, die sich in diesen Blöcken befinden, in andere Blöcke, die freie Seiten enthalten, kopiert/umgelagert, und schließlich werden die betreffenden Blöcke gelöscht, so dass sie zum Wiederbeschreiben zur Verfügung stehen.
  • Der Blockrückgewinnungs-Mechanismus führt zusätzliche Lese- und Schreiboperationen ein, deren Umfang von der im Einzelfall angewandten Vorgehensweise und auch den System-Parametern abhängt. Diese zusätzlichen Schreiboperationen werden auch als das Phänomen der ”Schreibverstärkung” (”write amplification”) bezeichnet. Die Schreibverstärkung wirkt sich negativ auf die Lebensdauer und die Haltbarkeit von SSDs aus, da sie Daten an anderer Stelle erzeugt, die früher oder später wieder gelöscht werden müssen, und sie beeinträchtigt die gesamte Leistungsfähigkeit der Flash-Speichereinheit.
  • Eine Flash-Speichereinheit kann sogar den Betrieb ganz einstellen, wenn nur ein kleiner Teil ihrer Blöcke eine nachlassende Funktionsfähigkeit aufweist. In diesem Fall kann es dennoch Blöcke geben, die entweder überhaupt nicht oder zu wenig verwendet werden. Algorithmen zum Ausgleich nachlassender Funktionsfähigkeit stellen sicher, dass Löschvorgänge gleichmäßiger über die Speicherblöcke des Flash-Speichers verteilt werden.
  • Kurzdarstellung der Erfindung
  • Gemäß einer Erscheinungsform der Erfindung wird ein Verfahren zum Betreiben eines computergestützten Speichers bereitgestellt, wobei der Speicher so aufgebaut ist, dass er Daten in einem Satz von Einheiten des Speichers ablegt. Für jede der Einheiten des Satzes wird ein Abnutzungsgrad ermittelt und unter den ermittelten Abnutzungsgraden wird ein maximaler Abnutzungsgrad festgelegt. Ein Vorschlag einer aus einer oder mehreren Einheiten bestehenden Teilgruppe, diese für einen Löschvorgang von Daten auszuwählen, wird empfangen. Mindestens eine Einheit in der Teilgruppe, deren Abnutzungsgrad geringer als der maximale Abnutzungsgrad ist, wird für einen späteren Löschvorgang von Daten gekennzeichnet. Der Schritt des Kennzeichnens kann vorzugsweise umfassen, dass jede Einheit der Teilgruppe aus dem Auswahlprozess für einen Löschvorgang von Daten ausscheidet, wenn der Abnutzungsgrad der jeden Einheit gleich dem maximalen Abnutzungsgrad ist, sofern der Abnutzungsgrad einer jeden der anderen Einheiten der Teilgruppe nicht gleich dem maximalen Abnutzungsgrad ist.
  • In Ausführungsformen kann das Verfahren ein oder mehrere der folgenden Funktionen aufweisen:
    • – Der Abnutzungsgrad einer Einheit wird von einem Zählstand von Löschvorgängen dargestellt, die in der Vergangenheit auf die Einheit angewendet wurden; der Zählstand der mit einer Einheit verbundenen Löschvorgänge wird jedes Mal erhöht, wenn die Einheit gelöscht wird;
    • – die eine oder die mehreren Einheiten der Teilgruppe werden vorbehaltlich eines Merkmals von Daten, die in der einen oder den mehreren Einheiten der Teilgruppe gespeichert sind, als für einen Löschvorgang von Daten zur Auswahl stehende Einheiten vorgeschlagen;
    • – jede Einheit des Satzes von Einheiten umfasst einen Satz von Untereinheiten, und die eine oder die mehreren Einheiten der Teilgruppe werden vorbehaltlich dessen, dass mehrere der Untereinheiten der einen oder mehreren Einheiten der Teilgruppe gültige Daten enthalten, als für einen Löschvorgang von Daten zur Auswahl stehende Einheiten vorgeschlagen;
    • – der Schritt des Kennzeichnens umfasst für mindestens eine Einheit in der Teilgruppe das Vergleichen des Abnutzungsgrades der Einheit mit dem maximalen Abnutzungsgrad;
    • – die Teilgruppe umfasst mehr als eine Einheit, wobei die Einheiten der Teilgruppe nach einem anderen Merkmal als Abnutzungsgraden, die den Einheiten der Teilgruppe zugeordnet werden, sortiert werden, und mindestens eine der Einheiten der Teilgruppe, die ein bevorzugtes Merkmal und einen Abnutzungsgrad aufweist, der geringer als der maximale Abnutzungsgrad ist, wird für einen späteren Löschvorgang von Daten gekennzeichnet;
    • – die Teilgruppe umfasst eine einzige Einheit, die als für einen Löschvorgang von Daten zur Auswahl stehende Einheit vorgeschlagen wird;
    • – die Teilgruppe umfasst mehr als eine Einheit, und die Einheiten der Teilgruppe werden nacheinander für einen späteren Löschvorgang von Daten in Betracht gezogen;
    • – eine erste Kennung kennzeichnet eine Einheit, die im Hinblick auf ein anderes Merkmal als Abnutzungsgrade, die den Einheiten der Teilgruppe zugeordnet werden, derzeit bevorzugt wird, und eine zweite Kennung kennzeichnet eine Einheit, die im Hinblick auf Abnutzungsgrade, die den Einheiten der Teilgruppe zugeordnet werden, derzeit für einen Löschvorgang bevorzugt zur Auswahl steht;
    • – jede Einheit des Satzes von Einheiten umfasst einen Satz von Untereinheiten und wobei die erste Kennung eine Einheit kennzeichnet, die im Hinblick darauf, dass mehrere ihrer Untereinheiten gültige Daten enthalten, derzeit bevorzugt wird;
    • – wenn der Abnutzungsgrad einer jeden Einheit des Satzes gleich dem maximalen Abnutzungsgrad ist, wird eine Einheit für einen Löschvorgang von Daten gekennzeichnet, die im Hinblick auf ein anderes Merkmal als Abnutzungsgrade, die den Einheiten der Teilgruppe zugeordnet werden, bevorzugt wird;
    • – jede Einheit des Satzes von Einheiten umfasst einen Satz von Untereinheiten, und die für einen Löschvorgang ausgewählte Einheit wird im Hinblick darauf, dass mehrere ihrer Untereinheiten gültige Daten enthalten, bevorzugt.
  • Gemäß einer weiteren Erscheinungsform der vorliegenden Erfindung wird ein Computerprogrammprodukt bereitgestellt, das einen computerlesbaren Datenträger umfasst, auf dem sich ein computerlesbarer Programmcode befindet, wobei der computerlesbare Programmcode einen computerlesbaren Programmcode umfasst, der so konfiguriert ist, dass er beliebige der vorstehend vorgestellten Verfahren durchführt.
  • Gemäß einer weiteren Erscheinungsform der vorliegenden Erfindung wird eine Speichereinheit bereitgestellt. Die Speichereinheit umfasst einen Speicher, der einen Satz von Einheiten umfasst. Eine Steuereinheit ist so ausgelegt, dass sie einen Abnutzungsgrad einer jeden der Einheiten des Satzes ermittelt und unter den ermittelten Abnutzungsgraden einen maximalen Abnutzungsgrad kennzeichnet. Die Steuereinheit ist ferner so ausgelegt, dass sie einen Vorschlag einer aus einer oder mehreren Einheiten bestehenden Teilgruppe, diese für einen Löschvorgang von Daten auszuwählen, empfängt. Die Steuereinheit ist des Weiteren so ausgelegt, dass sie mindestens eine Einheit in der Teilgruppe, deren Abnutzungsgrad geringer als der maximale Abnutzungsgrad ist, für einen späteren Löschvorgang von Daten kennzeichnet, wobei der Vorgang des Kennzeichnens für jede Einheit der Teilgruppe vorzugsweise umfasst, dass die jede Einheit aus dem Auswahlprozess für einen Löschvorgang von Daten ausscheidet, wenn der Grad der Funktionsuntüchtigkeit der jeden Einheit gleich dem maximalen Abnutzungsgrad ist, sofern der Abnutzungsgrad einer jeden der anderen Einheiten des Satzes nicht gleich dem maximalen Abnutzungsgrad ist.
  • In einer Ausführungsform handelt es sich bei dem Speicher der Speichereinheit um einen Flash-Speicher, der Einheiten in Form von Blöcken umfasst, wobei jeder Block Untereinheiten in Form von Seiten umfasst.
  • Es versteht sich, dass Verfahrensschritte in einer anderen Reihenfolge als der in einem Verfahrensanspruch aufgeführten Reihenfolge durchgeführt werden können. Eine solche andere Reihenfolge soll ebenfalls in dem Umfang dieses Anspruchs enthalten sein wie die Reihenfolge der Schritte, die aktuell aufgeführt werden.
  • In Bezug auf die Erscheinungsform eines Verfahrens beschriebene Ausführungsformen sollen ebenfalls als Ausführungsformen betrachtet werden, die in Verbindung mit beliebigen der anderen Kategorien wie zum Beispiel der Vorrichtung, dem Computerprogrammprodukt usw. beschrieben werden.
  • Kurze Beschreibung der Zeichnungen
  • Die Erfindung und ihre Ausführungsformen lassen sich durch Bezugnahme auf die folgende ausführliche Beschreibung von derzeit bevorzugten, aber dennoch lediglich der Veranschaulichung dienenden Ausführungsformen gemäß der vorliegenden Erfindung besser verstehen, wenn diese in Verbindung mit den beiliegenden Zeichnungen betrachtet wird.
  • Die Figuren stellen Folgendes dar:
  • 1 ist ein Ablaufplan eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung,
  • 2 ist ein Blockschaltbild einer Speichereinheit gemäß einer Ausführungsform der vorliegenden Erfindung,
  • 3 ist ein Blockschaltbild einer Speichersteuereinheit gemäß einer Ausführungsform der vorliegenden Erfindung und
  • 4 zeigt zwei Diagramme, die die von dem vorliegenden Verfahren erzielte Verbesserung beim Ausgleich nachlassender Funktionsfähigkeit deutlich machen.
  • Ausführliche Beschreibung der Erfindung
  • Als Einführung in die folgende Beschreibung wird zunächst auf einen allgemeinen Aspekt der Erfindung hingewiesen, der den Ausgleich nachlassender in Speichereinheiten betrifft, welche unter nachlassender Funktionstüchtigkeit leiden. Bei einer solchen Speichereinheit kann es sich vorzugsweise um Halbleiter-Speichereinheiten wie zum Beispiel Flash-Speicher, Phasenwechselspeicher, magnetische RAM-Speicher usw. handeln. Zwar wird im Folgenden gegebenenfalls auf die Terminologie der Flash-Technologie Bezug genommen, wenn beispielsweise auf Blöcke statt auf Einheiten und auf Seiten statt auf Untereinheiten Bezug genommen wird, doch versteht es sich, dass für die gesamte Anmeldung weder der Inhalt noch der Schutzumfang auf die Flash-Speichertechnologie beschränkt sein soll. Jede andere Halbleiter-Speichertechnologie soll ebenso wie jedes protokollstrukturierte Dateisystem, das eine protokollstrukturierte Speichereinheit verwendet, eingeschlossen sein.
  • Bei solchen Speichereinheiten wird der der Abnutzungsgrad eines Satzes von Speichereinheiten überwacht, so dass ein momentaner maximaler Abnutzungsgrad beobachtet wird. Der Satz von Speichereinheiten kann vorzugsweise alle Einheiten umfassen, die in der Speichereinheit zur Verfügung stehen, oder er kann alle Einheiten umfassen, die zur Speicherung von Benutzerdaten in der Speichereinheit zur Verfügung stehen, oder er kann allgemein eine Anzahl von Einheiten umfassen, die geringer als die Anzahl der Einheiten ist, die in der Speichereinheit zur Verfügung steht. Im vorliegenden Kontext handelt es sich bei dem Abnutzungsgrad eher um eine Frage der Belegung als um eine Frage des reinen Alters. Es gibt gegebenenfalls mehrere Möglichkeiten, einen Abnutzungsgrad festzustellen, in einer bevorzugten Ausführungsform kann jedoch die Anzahl der Löschzyklen, denen eine Einheit in der Vergangenheit ausgesetzt war, als Maß für den Abnutzungsgrad dienen. In diesem Beispiel ist der Abnutzungsgrad kein relatives Maß in Bezug auf einen zulässigen oder erreichbaren maximalen Abnutzungsgrad, sondern ein absolutes Maß, das mit den Abnutzungsgraden von anderen Einheiten vergleichbar ist.
  • Vorzugsweise wird der momentane Abnutzungsgrad für jede Einheit ermittelt, überwacht und gespeichert. Folglich kann der aktuelle Abnutzungszustand einer Einheit jederzeit bei Bedarf abgerufen werden. Unter allen Variablen, die die momentanen Abnutzungsgrade der zugehörigen Einheiten in dem Satz von Einheiten darstellen, wird nach der Variablen gesucht, die den maximalen Abnutzungsgrad angibt. Es gibt gegebenenfalls verschiedene Möglichkeiten für die Ermittlung des maximalen Abnutzungsgrades, der die eine oder die mehreren Einheiten in dem Satz von Einheiten darstellt, deren Abnutzungsgrad am höchsten ist. Unter der Annahme, dass eine Variable einen höheren Abnutzungsgrad anzeigt, je höher der Abnutzungsgrad ist, kann eine Suche nach dem maximalen Abnutzungsgrad eine Suche nach dem Maximalwert unter den Variablen zur Folge haben. Vorzugsweise kennzeichnet eine Kennung den momentanen maximalen Abnutzungsgrad je Einheit des Satzes. Für die aktuelle Überlegung mag es ausreichend sein, dass ein Wert, der den maximalen Abnutzungsgrad darstellt, unter all den Abnutzungsgraden gekennzeichnet wird, die für die Einheiten des Satzes ermittelt wurden, so dass es nicht unbedingt von zentraler Bedeutung ist, zu erfahren, welche dieser Einheiten die Einheit mit dem höchsten Abnutzungsgrad ist.
  • In Abhängigkeit von der gesamten Verarbeitung kann es zu irgendeinem Zeitpunkt eine Anforderung geben zu überprüfen, ob eine oder mehrere Einheiten für einen Löschvorgang geeignet sind, und die Einheit für neue Schreibvorgänge zur Verfügung zu stellen. Der Empfang einer solchen Anforderung kann im Folgenden auch als Vorschlag einer aus einer oder mehreren Einheiten bestehenden Teilgruppe für einen Löschvorgang von Daten bezeichnet werden. Die Teilgruppe stellt üblicherweise mehrere Einheiten aus dem Satz von Einheiten dar, deren Anzahl geringer als die Anzahl der Einheiten ist, welche zu dem Satz gehören. In einer anderen Ausführungsform kann die Teilgruppe der Einheiten jedoch identisch mit dem Satz von Einheiten sein. In einer Ausführungsform kann es einen Prozess wie zum Beispiel einen Einheiten-Rückgewinnungsprozess geben, um Einheiten für einen möglichen zukünftigen Löschvorgang von Daten vorab auszuwählen. In einer Ausführungsform kann eine solche Vorauswahl ein Merkmal einschließen, das besagt, welche Einheiten für einen Löschvorgang besser geeignet sind als andere, wobei es sich bei einem solchen Merkmal um ein anderes Merkmal als ein Abnutzungsgrad handeln kann, und wobei sich das Merkmal insbesondere von den Abnutzungsgraden, die den jeweiligen Einheiten zugeordnet werden, unterscheiden kann. Ein solches Merkmal kann zum Beispiel die Menge der gültigen Daten sein, die sich in einer Einheit aus dem Grund befinden, dass bei Konzepten, bei denen die Daten nicht an den vorgesehenen Ort geschrieben werden (Write-out-of-place-Konzepten) immer noch gültige Daten an einen anderen Speicherplatz umgelagert werden müssen. Auf diese Weise kann eine Vorauswahl eine Bewertung in Bezug auf ein Gültigkeitsmerkmal einer Einheit beinhalten. Wenn eine Einheit einen Satz von Untereinheiten zum Speichern von Daten umfasst, kann ein solches Gültigkeitsmerkmal von Gültigkeitsmerkmalen abhängen, die den einzelnen Untereinheiten der jeweiligen Einheit zugehörig sind. Beispielsweise kann jeder Untereinheit eine Markierung zugeordnet werden, die anzeigt, dass die Untereinheit gültige oder ungültige Daten umfasst. Eine solche Markierung kann als charakteristisch für die Untereinheit ausgelegt werden. Das Merkmal der Einheit kann sich aus einer Ansammlung der Merkmale der zugehörigen Untereinheiten ergeben, und es kann eine ganze Zahl zum Ergebnis haben, welche die Anzahl ihrer Untereinheiten darstellt, welche gültige Daten enthalten.
  • Die Teilgruppe der Einheiten, die für einen Löschvorgang von Daten vorgeschlagen werden, kann vorzugsweise eines von Folgendem beinhalten: eine einzige Einheit; mehrere Einheiten; alle Einheiten des Satzes von Einheiten. Immer wenn die Teilgruppe mehr als eine Einheit enthält, können die Einheiten als eine Liste oder aber einzeln nacheinander empfangen werden.
  • Jede vorgeschlagene Einheit wird insofern bewertet, als ihr Abnutzungsgrad mit dem maximalen Abnutzungsgrad verglichen werden kann. Falls der Abnutzungsgrad geringer als der maximale Abnutzungsgrad ist, kann die betreffende Einheit im Allgemeinen für einen Löschvorgang geeignet sein; es können jedoch zusätzliche Kriterien angewendet werden, um festzustellen, ob die betreffende Einheit letzten Endes für einen Löschvorgang ausgewählt wird oder ob eine andere Einheit, die ebenfalls einen Abnutzungsgrad aufweist, der geringer als der maximale Abnutzungsgrad ist, nach diesen anderen Kriterien möglicherweise besser geeignet ist. In diesem Zusammenhang wird versucht, mindestens eine Einheit in der Teilgruppe für einen späteren Löschvorgang von Daten zu ermitteln bzw. zu kennzeichnen, deren Abnutzungsgrad geringer als der maximale Abnutzungsgrad ist.
  • Andererseits wird möglicherweise bevorzugt, dass eine oder jede Einheit der Teilgruppe, deren Abnutzungsgrad gleich dem maximalen Abnutzungsgrad ist, aus dem Auswahlprozess für einen Löschvorgang von Daten ausscheidet. Falls jedoch alle Einheiten der Teilgruppe, die als für einen Löschvorgang von Daten zur Auswahl stehende Einheiten vorgeschlagen werden, einen Abnutzungsgrad aufweisen, der gleich dem maximalen Abnutzungsgrad ist, wird vorzugsweise eine Einheit von den Einheiten, die sich außerhalb der Teilgruppe befinden, gekennzeichnet, deren Abnutzungsgrad geringer als der maximale Abnutzungsgrad ist. Falls eine solche Einheit gekennzeichnet wird, kann es sich bei dieser Einheit um die für einen späteren Löschvorgang von Daten bevorzugte Einheit handeln. In einem solchen Szenario müssen gegebenenfalls alle Einheiten des Satzes von Einheiten auf ihren Abnutzungsgrad hin geprüft werden. Nur wenn der Abnutzungsgrad einer jeden der anderen Einheiten des Satzes gleich dem maximalen Abnutzungsgrad ist, kann die aktuell in Betracht gezogene Einheit aus der Teilgruppe der vorgeschlagenen Einheiten vorzugsweise für einen Löschvorgang von Daten gekennzeichnet werden, obgleich ihr zugehöriger Abnutzungsgrad gleich dem maximalen Abnutzungsgrad ist, weil keine andere Einheit in dem Satz von Einheiten gekennzeichnet werden konnte, deren Abnutzungsgrad geringer als der maximale Abnutzungsgrad ist. In einem solchen Szenario ist die bevorzugte Vorgehensweise möglicherweise die, dass entweder mindestens eine der Einheiten aus der Teilgruppe der Einheiten für einen Löschvorgang nach einem anderen Kriterium als Abnutzungsgrade gekennzeichnet wird, da es in Bezug auf den Abnutzungsgrad unter den in der Teilgruppe vorgeschlagenen Einheiten keine bevorzugte Einheit gibt, oder dass eine der Einheiten aus dem Satz von Einheiten für einen Löschvorgang nach einem anderen Kriterium als Abnutzungsgrad gekennzeichnet wird, da es von einem Bezug auf den Grad Abnutzungsgrad unter den Einheiten, die in dem Satz vorgeschlagen werden, keine bevorzugte Einheit gibt.
  • Wenn alle in der Teilgruppe vorgeschlagenen Einheiten einen Abnutzungsgrad aufweisen, der gleich dem maximalen Abnutzungsgrad ist, werden somit vorzugsweise keine der in der Teilgruppe vorgeschlagenen Blöcke gelöscht, vielmehr werden ein oder mehrere Blöcke, die in der Teilgruppe nicht vorgeschlagen werden, deren Abnutzungsgrad aber geringer als der maximale Abnutzungsgrad ist, für einen Löschvorgang ausgewählt, da es in dem Satz von Einheiten nach wie vor solche Einheiten geben kann. In Bezug auf die Verarbeitung kann dies entweder dadurch realisiert werden, dass der Prozess des Ausgleichs nachlassender Funktionsfähigkeit die Funktion von dem Blockrückgewinnungsschema übernimmt und nach solchen Blöcken sucht oder dadurch, dass der Prozess des Ausgleichs nachlassender Funktionsfähigkeit zum Blockrückgewinnungsschema zurückkehrt und einen Vorschlag von einem oder mehreren zusätzlichen Blöcken anfordert.
  • In der ”Block/Seite”-Terminologie wählt der Prozess des Ausgleichs nachlassender Funktionsfähigkeit einen oder mehrere Blöcke aus dem Satz der zu löschenden Blöcken aus, deren Abnutzungsgrad geringer als der momentane maximale Abnutzungsgrad unter den Blöcken in dem Satz ist. Mit dieser Vorgehensweise lassen sich gegenüber bisherigen Vorgehensweisen die folgenden Vorteile erzielen: Die aktuelle Vorgehensweise kann mit jedem Blockrückgewinnungsschema, das den Schwerpunkt gegebenenfalls auf andere Kriterien als auf den Abnutzungsgrad legt, kombiniert werden und als solches kann es mit jedem Speicherbereinigungsschema kombiniert werden, während es dem Problem der Funktionsuntüchtigkeit in dem gesamten Prozess dennoch ausreichend Bedeutung beimisst. Aus diesem Grund kann ein Prozess zur Rückgewinnung von Blöcken, der den Schwerpunkt auf die Vermeidung der Schreibverstärkung legt, realisiert werden, und die aktuelle Vorgehensweise der Nutzungsverteilung kann jedwede von dem Blockrückgewinnungsschema getroffenen Entscheidungen korrigieren, welche die Auswahl eines Blocks um den Preis des Abnutzungsgrades in unangemessener Weise begünstigen.
  • Überdies ermöglicht die vorliegende Vorgehensweise einen sehr guten Grad des Ausgleichs nachlassender Funktionsfähigkeit, da das Ungleichgewicht der Funktionsuntüchtigkeit zwischen allen Blöcken während des ganzen Betriebs der Speichereinheit auf ein Minimum herabgesetzt wird. Sie vermeidet zusätzliche kostenintensive Operationen, um einen ausreichenden Grad des Ausgleichs nachlassender Funktionsfähigkeit zwischen den Blöcken aufrechtzuerhalten. Sie verlängert die Lebensdauer der Speichereinheit, da, wenn die Speichereinheit aus dem Grund, dass ein oder mehrere Blöcke im Prinzip einen für den Abnutzungsgrad festgelegten Schwellwert überschreiten, für unbrauchbar erklärt wird, der Belegungsgrad von allen Blöcken weitgehend gleich ist.
  • Folglich wird eine neue Vorgehensweise zur Durchführung eines wirksamen Ausgleichs nachlassender Funktionsfähigkeit in SSD-Einheiten vorgeschlagen. Mittels Überwachung des Abnutzungsgrades eines jeden Blocks in dem Satz von Blöcken, indem man einen momentanen maximalen Abnutzungsgrad kennzeichnet und indem man einen oder mehrere Blöcke für einen Löschvorgang auswählt, deren Abnutzungsgrad geringer als der momentane maximale Abnutzungsgrad ist, wird eine wirksame Vorgehensweise zum Ausgleich nachlassender Funktionsfähigkeit vorgeschlagen, die für Halbleiter-Speichereinheiten geeignet ist, wobei alle Blöcke in dem überwachten Satz im Grunde denselben Belegungsgrad erfahren, um die Lebensdauer der Einheit zu verlängern. Derselbe Mechanismus kann auf jede Speicherstruktur angewendet werden, bei der neue oder aktualisierte Daten nicht an den vorgesehenen Ort (”out-of-place”) geschrieben werden, d. h., bei der an veralteten Daten vorgenommene Datenaktualisierungen nicht in die Untereinheit geschrieben werden, welche die veralteten Daten enthält, sondern in ein Protokoll, das mehrere freie Untereinheiten bereitstellt, in die Daten geschrieben werden sollen. Bei diesen Untereinheiten kann es sich gewöhnlich um keine Untereinheiten handeln, die in der Struktur der Speichereinheit aufeinander folgen, sondern sie können um die Speichereinheit herum verstreut sein und von einer Zuordnungseinheit angeboten werden. Solche Systeme können als protokollstrukturierte Dateisysteme bezeichnet werden.
  • Üblicherweise wird der vorliegende Prozess des Ausgleichs nachlassender Funktionsfähigkeit zusammen mit oder von einem Blockrückgewinnungsprozess ausgelöst, der wiederum gestartet wird, wenn die Notwendigkeit erkannt wird, dass Blöcke freigegeben werden müssen, um neue Daten in die Blöcke zu schreiben, was einen vorherigen Löschvorgang aller Daten in diesen Blöcken erforderlich macht. Je mehr Daten im Laufe der Zeit in die Einheit geschrieben werden, desto weniger freie Seiten stehen möglicherweise zur Verfügung, und es müssen gegebenenfalls neue Blöcke für eine freie Blockwarteschlange zurückgewonnen werden, d. h. eine Warteschlange zur Bereitstellung von freien, gelöschten Blöcken, um neue oder aktualisierte Daten in diese Blöcke zu schreiben. Neue freie Blöcke müssen von Blöcken zurückgewonnen werden, die mit gültigen und/oder ungültigen Daten gefüllt sind. Zunächst kennzeichnet der Blockrückgewinnungsprozess auf der Grundlage einer bestimmten Vorgehensweise Blöcke zum Löschen. Anschließend werden gültige Daten, die sich noch in diesen Blöcken befinden, in andere Blöcke kopiert/umgelagert, und schließlich werden die Blöcke, die jetzt von gültigen Daten befreit sind, gelöscht und stehen wieder zum Wiederbeschreiben zur Verfügung. Während dieser Vorgang einige zusätzliche, über das Maß hinausgehende Schreiboperationen erforderlich macht, ist es offensichtlich, dass durch diese Vorgehensweise sofortige Löschoperationen vermieden werden, die zu einer viel höheren Gesamtverarbeitungszeit beitragen würden, als dies bei einem Mehraufwand in Form von einigen zusätzlichen Schreiboperationen der Fall wäre.
  • Das vorgeschlagene Schema des Ausgleichs nachlassender Funktionsfähigkeit in Echtzeit kann mit jedem beliebigen Blockrückgewinnungsschema kombiniert werden und kann in einer Ausführungsform wie folgt funktionieren: Der Abnutzungsgrad eines jeden Blocks wird in einem individuellen Zähler erfasst. Ein zusätzlicher Zähler mit der Bezeichnung ”max_counter” wird bereitgestellt, um den momentanen Maximalwert über alle Zähler hinweg zu überwachen. Wenn ein Block gelöscht wird, wird der Inhalt des entsprechenden Zählers um eins erhöht. Wenn dieser neue Wert den Wert von max_counter übersteigt, wird ferner auch max_counter um eins erhöht. Um einen Block für eine Wiederverwendung zu kennzeichnen, kann der Blockrückgewinnungsprozess Blöcke entsprechend einer bestimmten Folge in Betracht ziehen und beispielsweise ihre Anzahl an gültigen Seiten prüfen. Dieser Prozess endet, wenn ein Block aufgefunden wird, der mehrere gültige Seiten enthält, die ein bestimmtes Kriterium erfüllt. Gemäß einem vorgeschlagenen Schema endet der Prozess vorzugsweise, wenn der Abnutzungsgrad des aufgefundenen Blocks geringer als der momentane maximale Abnutzungsgrad ist, der bis zu diesem Zeitpunkt beobachtet wurde, was in dem Zähler max_counter verzeichnet wird.
  • 1 zeigt einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
  • In einem Initialisierungsschritt 50 wird ein Löschzähler <c(i)>, der eine Variable für den Abnutzungsgrad für den Block i darstellt, für jeden Block eines Satzes von Blöcken auf null gesetzt. Der Löschzähler <c(i)> stellt eine Variable der Löschzyklen dar, die in der Vergangenheit auf den Block i angewendet wurden, und als solches stellt er den Abnutzungsgrad des Blocks i dar, wobei dieser Abnutzungsgrad in manchen Fällen auch als das Alter des Blocks bezeichnet wird. Ein Zähler <c_max> wird ebenfalls auf null gesetzt. Der Zähler <c_max> liefert einen Grad, der den maximalen Abnutzungsgrad darstellt, welcher einem beliebigen der Zähler <c(i)> zugeordnet wird.
  • Im Schritt 51 a wird ein Blockrückgewinnungsprozess beispielsweise angesichts begrenzter Ressourcen, in die neue Daten geschrieben werden können, gestartet. Der Initialisierungsschritt 50 kann natürlich auch in den Startschritt 51 eingebunden werden. Im Schritt 52 wird eine Kennung <last>, d. h. eine erste Kennung, auf minus eins gesetzt. Die Kennung <last> ist eine Kennung für den Block, der von dem Blockrückgewinnungsprozess gerade ausgewählt worden wäre, d. h. der von dem Speicherbereinigungsprozess bei Nichtvorhandensein der vorgeschlagenen Funktion des Ausgleichs nachlassender Funktionsfähigkeit wiederverwendet werden würde. In demselben Schritt 52 wird eine Kennung <last_WL>, d. h. eine zweite Kennung, auf minus eins gesetzt. Die Kennung <last_WL> ist eine Kennung für den Block, der von dem Blockrückgewinnungsprozess bei Vorhandensein des vorgeschlagenen Funktion des Ausgleichs nachlassender Funktionsfähigkeit zur Wiederverwendung ausgewählt wird.
  • Im Folgenden wird in Betracht gezogen, dass der Blockrückgewinnungsprozess einen Satz von Blöcken der Speichereinheit entsprechend einer bestimmten Folge prüfen wird. Die Folge kann fest sein, wie zum Beispiel im Fall des sogenannten gierigen Speicherbereinigungsprozesses, bei dem alle Blöcke geprüft werden, oder sie kann dynamisch sein, wobei der Suchlauf angehalten wird, wenn ein Satz von Kriterien erfüllt ist. Ein Ende des Suchlaufs wird im Schritt 59 überprüft. In dem vorliegenden Beispiel zieht der Blockrückgewinnungsprozess einen Block nach dem anderen in einer bestimmten Folge in Betracht. Jeder Block aus dem Satz von Blöcken wird bei dem Blockrückgewinnungsschema in Betracht gezogen und der Funktion des Ausgleichs nachlassender Funktionsfähigkeit vorgeschlagen, so dass eine Teilgruppe von Blöcken, die für einen Löschvorgang von Daten vorgeschlagen werden, für den gesamten Satz von Blöcken steht, die bei dem Blockrückgewinnungsschema geprüft werden. Die Funktion des Ausgleichs nachlassender Funktionsfähigkeit wird von der Klammer angegeben, die die Schritte 54 bis 56 einschließt, welche später erklärt werden.
  • Wenn die Funktion des Ausgleichs nachlassender Funktionsfähigkeit nicht realisiert würde, würde der Blockrückgewinnungsprozess einen Beispielblock j in der Folge der Blöcke mit dem besten Block vergleichen, der gemäß den bestimmten Kriterien bisher gekennzeichnet worden ist. Dies wird im Schritt 57 durchgeführt. Der bisher beste Block wird in der Kennung <last> verzeichnet. Wenn der Beispielblock j in Bezug auf die Kriterien besser als der Block <last> ist, würde der Block j der neue Block <last> werden, d. h., last = j, siehe Schritt 58. Wenn sich der Beispielblock j in Bezug auf die Kriterien nicht als besser als der Block <last> erweist, bleibt der beste Block derjenige, auf den die Kennung <last> zeigt, und im Schritt 59 würde überprüft werden, ob es noch einen Block in der Folge gibt, der darauf wartet, vorgeschlagen zu werden.
  • Das vorgeschlagene Verfahren führt jedoch eine Funktion des Ausgleichs nachlassender Funktionsfähigkeit ein, das von den Schritten 54 bis 56 realisiert wird. Folglich wird, wo auch immer ein neuer Block j vorgeschlagen wird, im Schritt 54 festgestellt, ob ein solcher Block j im Hinblick auf die Kriterien, nach denen der Block <last> gekennzeichnet wird, gegenüber dem Block <last_WL> bevorzugt wird. Anders ausgedrückt, es wird festgestellt, ob der aktuelle Block j, der gerade einer Betrachtung unterzogen wird, in Bezug auf die Kriterien besser ist als der beste Block, der bisher in Bezug auf die nachlassende Funktionsfähigkeit gekennzeichnet wurde. Wenn dies nicht der Fall ist (nein), wird zum Schritt 57 gesprungen, in dem festgestellt wird, ob der neue Block j besser ist als der in Bezug auf die Kriterien bisher beste Block in dieser Kategorie. Dies spiegelt eine Situation wider, in welcher der im Hinblick auf die nachlassende Funktionsfähigkeit aktuell bevorzugte Block auch im Hinblick auf die anderen Kriterien besser ist als der neue Block j. Wenn der neue Block j in Bezug auf diese Kriterien jedoch besser als der im Hinblick auf die nachlassende Funktionsfähigkeit aktuell beste Block ist, findet der Schritt 55 Anwendung, und der von der Variablen c(j) für den Block j dargestellte Abnutzungsgrad wird mit dem maximalen Abnutzungsgrad verglichen, der von dem Grad dargestellt wird, welcher dem Zähler <c_max> zugeordnet ist. Wenn der Abnutzungsgrad des Blocks j ungleich dem maximalen, in <c_max> gespeicherten Grad ist, wird der Block j der neue Block <last_WL>.
  • Wenn die Folge aufgebraucht ist, d. h., es werden keine weiteren Blöcke vorgeschlagen, siehe Schritt 59 (nein), enthält die Kennung <last_WL> den Block, der wiederverwendet werden soll, siehe Schritt 62, außer wenn die Kennung <last_WL> gleich minus eins oder einem beliebigen anderen Wert ist, der einen ungültigen Abnutzungsgrad angibt. Wenn alle Blöcke einen gleichen Abnutzungsgrad erzeugen, was einer Bestätigung im Schritt 60, dass <last_WL> = –1, entspricht, konnte im Schritt 55 kein neuer Block gekennzeichnet werden, der das Kriterium des Abnutzungsgrades erfüllt, da all diese Blöcke den maximalen Abnutzungsgrad erzeugen, der von <c_max> angegeben wird. In diesem Fall ist der. Block, der wiederverwendet werden soll, derjenige, den der Blockrückgewinnungsprozess wiederverwendet hätte, wenn die Funktion des Ausgleichs nachlassender Funktionsfähigkeit nicht berücksichtigt worden wäre, d. h. last_WL> = <last>, siehe Schritt 61. Im Anschluss an die Wiederverwendung des von der Kennung <last_WL> angegebenen Blocks im Schritt 62 wird sein Zähler der Funktionsuntüchtigkeit <c(last_WL)> ebenfalls im Schritt 62 um eins erhöht, und wenn der Zähler der Funktionsuntüchtigkeit <c(last_WL)> dann den momentanen maximalen Abnutzungsgrad <c_max> übersteigt, wird die Variable <c_max> auch im Schritt 62 aktualisiert. Dann kann der Prozess im Schritt 63 angehalten werden, bis eine neue Anforderung für Blockrückgewinnungsaktivitäten empfangen wird und eine Initialisierung im Schritt 50 sowie einen Start des Prozesses im Schritt 51 auslöst.
  • Es ist klar, dass auch andere Arten der Ausführung in Betracht gezogen werden können, wie zum Beispiel eine Ausführungsform, bei der die Kennung <last> nicht verwendet wird.
  • Die vorstehenden Kriterien, nach denen ein Block als derjenige gekennzeichnet wird, der ohne Berücksichtigung der nachlassenden Funktionstüchtigkeit zurückgewonnen werden soll, können eines oder mehrere der folgenden Kriterien einschließen:
    • – die Anzahl der gültigen Seiten eines Blocks;
    • – die Anzahl der ungültigen Seiten eines Blocks;
    • – die Anzahl der freien Seiten eines Blocks;
    • – das Alter des Blocks;
    • – den Zeitpunkt der jüngsten Schreibaktivität in diesen Block;
    • – den Zeitpunkt der ältesten Schreibaktivität in diesen Block;
    • – die Häufigkeit der Schreibaktivitäten in diesen Block (d. h. die nachlassende Funktionstüchtigkeit dieses Blocks).
  • Das Kriterium kann jede beliebige Kombination aus zwei oder mehr der vorstehenden Parameter einschließen. Die Kriterien können einen Vergleich von einem beliebigen der vorstehenden Parameter mit einem Schwellwert beinhalten, und die Kriterien können erfüllt sein, wenn der Parameter einen Schwellwert über- oder unterschreitet. Diese Kriterien können alternativ erfüllt sein, wenn festgestellt wird, dass ein Parameter einen Schwellwert unterschreitet. Die Kriterien können einen Vergleich von mehreren der vorstehenden Parameter mit individuell zugewiesenen Schwellwerten beinhalten oder die Kriterien können erfüllt sein, wenn alle Parameter ihren jeweiligen Schwellwert über oder unterschreiten. Ein Beispiel-Kriterium kann ”Die Anzahl der gültigen Seiten in dem Block ist geringer als 12 und ein Alter des Blocks ist geringer als 100” beinhalten.
  • Ein Schwellwert kann ein vorher festgelegter Schwellwert sein, der sich während des Betriebs nicht ändern darf. Ein Schwellwert kann vorher festgelegt werden und von den charakteristischen Eigenschaften des Speichersystems abhängen. Vorteilhafterweise kann der Schwellwert im Hinblick auf die Anzahl der Seiten je Block, die das Speichersystem bereitstellt, festgelegt werden; und/oder im Hinblick auf das Verhältnis zwischen einer durchschnittlichen Anzahl von gültigen Untereinheiten in allen Blöcken und der Gesamtzahl der Untereinheiten in dem Speicher. Der Schwellwert kann ein veränderlicher Schwellwert sein, der während des Betriebs unterschiedliche Werte annehmen kann. Beispielsweise kann der Schwellwert von einem Verhältnis zwischen einer absoluten oder einer gleitenden (durchschnittlichen) Anzahl von gültigen Untereinheiten in allen Blöcken und der Gesamtzahl der Untereinheiten in dem Speicher abhängen. Der Schwellwert kann ein anpassungsfähiger Schwellwert sein, der von anderen Parametern abhängen kann. Der Schwellwert kann auch in Bezug auf vorherige Schwellwerte anpassungsfähig sein, oder er kann in Bezug auf die tatsächliche Anzahl an gültigen Untereinheiten von zuvor gekennzeichneten Blöcken anpassungsfähig sein, insbesondere, wenn die Anzahl der gültigen Untereinheiten in dem zuvor gekennzeichneten Block als ein neuer Wert für den Schwellwert verwendet wird. Oder ein gleitender Durchschnitt der jeweiligen Anzahl der gültigen Untereinheiten in den zuvor gekennzeichneten Blöcken wird als ein neuer Wert für den Schwellwert verwendet.
  • 2 zeigt ein Blockschaltbild einer Speichereinheit gemäß einer Ausführungsform der vorliegenden Erfindung. Die Speichereinheit 1 enthält einen auf einem Flash-Speicher beruhenden Halbleiterspeicher 2 mit einer aus Blöcken/Seiten bestehenden Speicherplatzstruktur. Einige der Blöcke sind mit der Bezugszahl 21 angegeben. Eine Speichersteuereinheit 3 steuert die Aktivitäten des Flash-Speichers 2 – insofern kann der Speicher als ein computergestützter Speicher beschrieben werden. Die Speichersteuereinheit 3 ist eigens so ausgelegt, dass sie Daten in den Speicher 2 schreibt und Daten aus dem Speicher 2 liest und alle administrativen Aufgaben in Verbindung mit dem Lesen und Schreiben von Daten ausführt. Insbesondere schreibt die Speichersteuereinheit 3 an einer Seite eines Blocks vorgenommene Aktualisierungen in einen oder mehrere Blöcke, die sich von dem Block unterscheiden, in dem die veralteten Daten enthalten sind (”Out-of-place”-Schreibvorgang). Dabei markiert die Speichersteuereinheit 3 die eine oder die mehreren Untereinheiten, welche die veralteten Daten enthalten, als ungültig. Von Zeit zu Zeit kann die Speichersteuereinheit 3 einen Suchlauf unter den Blöcken durchführen – wobei ein solcher Suchlauf auf Blöcke beschränkt werden kann, die mindestens eine Seite an gültigen Daten enthalten, und/oder gemäß anderen Kriterien beschränkt werden kann –, um einen oder mehrere Blöcke zu ermitteln, die vorher festgelegten Kriterien entsprechen. In einer bevorzugten Ausführungsform kann der Suchlauf angehalten werden, wenn ein Block oder eine bestimmte Anzahl von Blöcken gefunden werden, die den bestimmten Kriterien entsprechen. Diese Blöcke bilden dann eine Teilgruppe von Blöcken, die für eine Aktion zum Ausgleich nachlassender Funktionsfähigkeit vorgeschlagen werden, um sie zu löschen. Die Speichersteuereinheit 3 kann dann die Routine zum Ausgleich nachlassender Funktionsfähigkeit ausführen, um einen oder mehrere Blöcke unter den vorgeschlagenen Blöcken im Hinblick darauf, dass der Abnutzungsgrad eines jeden Blocks mit dem maximalen Abnutzungsgrad verglichen wird, zu kennzeichnen. Nur wenn einer oder mehrere der vorgeschlagenen Blöcke einen Abnutzungsgrad aufweisen, der geringer als der maximale Abnutzungsgrad ist, den beliebige der Blöcke, die im Hinblick auf die Funktionsuntüchtigkeit einer Betrachtung unterzogen werden, aufweisen, können dieser eine oder die mehreren Blöcke gelöscht werden.
  • Vor dem Löschen leitet die Speichersteuereinheit 3 eine Umlagerung von Daten von gültigen Seiten dieses gekennzeichneten Blocks in Seiten eines anderen Blocks und möglicherweise sogar in mehrere andere Blöcke ein. In diesem Zusammenhang ist die Speichersteuereinheit 3 für die Durchführung eines Verfahrens nach beliebigen der vorstehend beschriebenen Ausführungsformen zuständig. Die Speichersteuereinheit 3 ist darüber hinaus mit einem Hostcomputer 4 verbunden, der die Speichereinheit 1 zur Speicherung von Daten nutzt. Folglich gibt der Hostcomputer 4 Lese- und/oder Schreibbefehle an die Speichereinheit 1 aus.
  • Um das Verfahren nach einem beliebigen der vorstehend beschriebenen Ausführungsformen durchzuführen, stellt die Speichersteuereinheit 3 vorzugsweise einen Computerprogramm-Code bereit, der vorzugsweise in einem nichtflüchtigen, nicht wiederbeschreibbaren Speichermedium wie zum Beispiel einem ROM 31, siehe 3, gespeichert wird. Die Speichersteuereinheit stellt ferner einen RAM 32 bereit, um den Programmcode in den RAM zu laden, und eine Verarbeitungseinheit 33, um den Programmcode im RAM 32 auszuführen. Interne Datenübertragungssysteme 34 werden bereitgestellt, um zwischen den Komponenten der Speichersteuereinheit 3 Daten auszutauschen, und eine Schnittstelle 35 wird bereitgestellt, um mit dem Flash-Speicher Daten auszutauschen, während eine andere Schnittstelle 36 für den Datenaustausch mit dem Hostcomputer bereitgestellt werden kann.
  • In dem Diagramm von 4a) ist die nachlassende Funktionsfähigkeit von mehreren Blöcken mit den Block-Kennungen 0 bis 1000, d. h. für tausend Blöcke, gezeigt, wobei die nachlassende Funktionsfähigkeit gleich der Anzahl der Löschzyklen ist, die auf einen Block angewendet werden. Es stellt sich heraus, dass das vorgeschlagene Verfahren zum Ausgleich nachlassender Funktionsfähigkeit sicherstellt, dass alle Blöcke in dem System während des gesamten Betriebs der Einheit im Grunde denselben Abnutzungsgrad aufweisen. In dem vorliegenden Beispiel wird eine Speichereinheit mit 16 Seiten pro Block, 1000 Blöcken und einer Belegung von 0,8 betrachtet, die bei zufälligen kleinen Schreiboperationen betrieben wird. 4a) zeigt in kleinen Punkten den von Blöcken nach 30 Millionen Schreiboperationen des Benutzers, wobei angenommen wird, dass ein gieriges Speicherbereinigungsschema in Fenstertechnik mit einer Fenstergröße von 10 angewendet wird. Dies bedeutet, dass der für den Löschvorgang ausgewählte Block der Block unter den ersten 10 ältesten Blöcken ist, der die geringste Anzahl von gültigen Seiten hat. Aus dem Diagramm in 4a) ist erkennbar, dass die Blöcke zwischen 4998 und 5017 Löschvorgänge pro Block erfahren haben. Im Gegensatz dazu wird durch Anwendung des vorgeschlagenen Schemas zum Ausgleich nachlassender Funktionsfähigkeit eine nahezu gleichmäßige Inanspruchnahme aller Blöcke für 5011 oder 5012 Löschvorgänge je Block erzielt, wie in 4a) durch die beiden waagerechten Linien gezeigt ist. Das vorgeschlagene Verfahren führt praktisch zu einer fast gleichmäßigen Belegung aller Blöcke, wenn die Speichereinheit das Ende ihrer Lebensdauer erreicht, wohingegen bei Nichtanwendung des vorgeschlagenen Verfahrens eine beträchtliche Anzahl von Blöcken nicht ausreichend belegt gewesen wäre.
  • Mit Bezug auf das Diagramm in 4b) wird der Fall eines warmen und kalten Verkehrs betrachtet, und es wird davon ausgegangen, dass 9% der Blöcke, d. h. 90 Blöcke, statische (kalte) Adressen enthalten. Eine statische Adresse enthält Daten, die während der Lebensdauer der Speichereinheit nicht allzu häufig geändert werden. 4b) zeigt in kleinen Punkten den Abnutzungsgrad der Blöcke nach 60 Millionen Schreiboperationen des Benutzers, wenn das gierige Speicherbereinigungsschema in Fenstertechnik mit einer Fenstergröße von 100 angewendet wird. Es ist zu beobachten, dass 9% der Blöcke einen Abnutzungsgrad von 1 (nicht gezeigt) aufweisen, wohingegen der Abnutzungsgrad der restlichen Blöcke zwischen 9878 und 9938 Löschvorgängen je Block (kleine Punkte) schwankt. Die Anwendung des vorgeschlagenen Verfahrens ergibt einen gleichmäßigen Abnutzungsgrad aller Blöcke von 9607 oder 9608 Löschvorgängen je Block, wie in 4a) durch die waagerechte Linie gezeigt ist. Das vorgeschlagene Verfahren führt praktisch zu einer fast gleichmäßigen Belegung aller Blöcke, wenn die Speichereinheit das Ende ihrer Lebensdauer erreicht, wohingegen bei Nichtanwendung des vorgeschlagenen Verfahrens eine beträchtliche Anzahl von Blöcken nicht ausreichend belegt gewesen wäre.
  • In dem vorliegenden Beispiel kann zum Zweck der Veranschaulichung davon ausgegangen werden, dass die Haltbarkeit der Blöcke 9918 Zyklen entspricht und dass die Einheit für unbrauchbar erklärt wird, wenn 15% der Blöcke nicht mehr in Betrieb sind. Falls das vorliegende Verfahren zum Ausgleich nachlassender Funktionsfähigkeit nicht vorhanden gewesen wäre, wäre die Einheit dann nach 60 Millionen Schreiboperationen des Benutzers für unbrauchbar erklärt worden. Im Gegensatz dazu ermöglicht die Anwendung des vorgeschlagenen Verfahrens zum Ausgleich nachlassender Funktionsfähigkeit eine beträchtliche Anzahl von zusätzlichen Schreiboperationen, sofern keiner der Blöcke nach 60 Millionen Schreiboperationen des Benutzers seine Lebensdauer erreicht hat. Bei dem betrachteten Beispiel erlaubt dies zusätzliche (9918 – 9607)·1000·16 = 5 Millionen Schreiboperationen des Benutzers, bevor die Einheit für unbrauchbar erklärt wird, was einer Zunahme von 8% der Lebensdauer der Einheit entspricht. Diese Zunahme der Lebensdauer wird ohne die Einführung von zusätzlichen Prozeduren und zusätzlicher Komplexität erreicht, mit denen beziehungsweise mit der sichergestellt werden soll, dass der Abnutzungsgrad in Grenzen gehalten wird, um zu verhindern, dass die Einheit für unbrauchbar erklärt wird.
  • Der Fachmann wird als vorteilhaft erkennen, dass Erscheinungsformen der vorliegenden Erfindung als ein System, ein Verfahren oder ein Computerprogrammprodukt realisiert werden können. Folglich können Erscheinungsformen der vorliegenden Erfindung, insbesondere in Form der Steuereinheit, die Form einer ganz in Hardware realisierten Ausführung, einer ganz in Software realisierten Ausführung (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführung annehmen, die Software- und Hardware-Erscheinungsformen kombiniert, die hier alle allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden können. Überdies können Erscheinungsformen der vorliegenden Erfindung wie zum Beispiel das Leseverfahren und das Schreibverfahren die Form eines Computerprogrammprodukts annehmen, das in einem oder in mehreren computerlesbaren Datenträger(n) realisiert ist, auf dem beziehungsweise denen sich computerlesbarer Programmcode befindet.
  • Jede beliebige Kombination aus einem oder mehreren computerlesbaren Datenträgern kann verwendet werden. Der computerlesbare Datenträger kann ein computerlesbarer Signaldatenträger oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, ohne auf diese beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung, -einheit oder eine beliebige geeignete Kombination des Vorstehenden sein. Zu konkreteren Beispielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für das Computerlesbare Speichermedium würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine Diskette eines tragbaren Computers, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Plattenspeichereinheit, eine magnetische Plattenspeichereinheit oder jede beliebige geeignete Kombination des Vorstehenden. Im Rahmen dieses Schriftstücks kann ein computerlesbares Speichermedium jedes physisch greifbare Medium sein, das ein Programm zur Verwendung durch ein Befehlsausführungssystem, eine Befehlsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Befehlsausführungssystem, einer Befehlsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
  • Ein computerlesbarer Signaldatenträger kann ein übertragenes Datensignal mit einem darin enthaltenen computerlesbaren Programmcode, beispielsweise in einem Basisband oder als Teil einer Trägerwelle, enthalten. Solch ein übertragenes Signal kann eine beliebige einer Vielzahl von Formen einschließlich elektromagnetischer, optischer Formen oder jede beliebige geeignete Kombination dieser Formen, ohne auf diese beschränkt zu sein, annehmen. Bei einem computerlesbaren Signaldatenträger kann es sich um jeden beliebigen computerlesbaren Datenträger handeln, der kein computerlesbares Speichermedium ist und der ein Programm zur Verwendung durch oder zur Verwendung in Verbindung mit einem Befehlsausführungssystem, einer Befehlsausführungsvorrichtung oder -einheit übertragen, weiterleiten oder transportieren kann.
  • Auf einem computerlesbaren Datenträger enthaltener Programmcode kann mittels eines geeigneten Mediums, darunter ein drahtloses Medium, ein drahtgebundenes Medium, ein Lichtwellenleiterkabel, mittels Hochfrequenz (HF) usw., ohne auf diese beschränkt zu sein, oder mittels jeder beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
  • Computer-Programmcode zur Durchführung von Operationen für Erscheinungsformen der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache, wie beispielsweise Java, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” oder in ähnlichen Programmiersprachen geschrieben sein. Die Ausführung des Programmcodes kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server erfolgen. Im letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), verbunden werden oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Diensteanbieters) hergestellt werden.
  • Erscheinungsformen der vorliegenden Erfindung werden nachstehend mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschalbilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufplane und/oder den Blockschaltbilder mittels Computerprogrammbefehlen realisiert werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, eines Computers für spezielle Anwendungen oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaltbildes angegeben sind.
  • Diese Computerprogrammbefehle können auch auf einem Computerlesbaren Datenträger gespeichert werden, der einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem Computerlesbaren Datenträger gespeicherten Befehle einen Herstellungsgegenstand erzeugen, der Befehle enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaltbilds angegeben ist.
  • Die Computerprogrammbefehle können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf andere Einheiten geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf anderen Einheiten zu bewirken, um einen von einem Computer ausgeführten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaltbilds angegeben sind.
  • Der Ablaufplan und die Blockschaltbilder in den Figuren zeigen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder den Blockschaltbildern ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der einen oder mehrere ausführbare Befehle zur Ausführung der angegebenen logischen Funktion(en) umfasst. Es sei auch angemerkt, dass die in dem Block angegebenen Funktionen in manchen alternativen Ausführungsarten nicht in der in den Figuren angegebenen Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaltbilder/und oder der Darstellung in dem Ablaufplan sowie Kombinationen aus Blöcken in den Blockschaltbilder und/oder der Darstellung in dem Ablaufplan von Systemen, die auf Hardware für spezielle Anwendungen beruhen und die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Hardware für spezielle Anwendungen und Computerbefehlen ausgeführt werden können.

Claims (15)

  1. Verfahren zum Betreiben eines computergestützten Speichers, wobei der Speicher so aufgebaut ist, dass er Daten in einem Satz von Einheiten des Speichers ablegt, wobei das Verfahren Folgendes aufweisend: – Ermitteln eines Abnutzungsgrades (c(i)) einer jeden der Einheiten (i) des Satzes und Kennzeichnen eines maximalen Abnutzungsgrades (c_max) unter den ermittelten Abnutzungsgraden (c(i)), – Empfangen eines Vorschlags einer aus einer oder mehreren Einheiten (i) bestehenden Teilgruppe, diese für einen Löschvorgang von Daten auszuwählen; und – Ermitteln mindestens einer Einheit (i) in der Teilgruppe, deren Abnutzungsgrad (c(i)) geringer als der maximale Abnutzungsgrad (c_max) ist, für ein späteres Löschen von Daten; – wobei das Ermitteln vorzugsweise aufweist, dass für jede Einheit (i) der Teilgruppe gilt, dass jede Einheit (i) aus dem Auswahlprozess für einen Löschvorgang von Daten ausscheidet, wenn der Abnutzungsgrad (c(i)) der jeden Einheit (i) gleich dem maximalen Abnutzungsgrad (c_max) ist, sofern der Abnutzungsgrad (c(i)) einer jeden der anderen Einheiten (i) des Satzes nicht gleich dem maximalen Abnutzungsgrad (c_max) ist.
  2. Verfahren nach Anspruch 1, wobei der Abnutzungsgrad (c(i)) von mindestens einer Einheit (i) des Satzes auf der Grundlage eines Zählstands von Löschvorgängen ermittelt wird, die auf die mindestens eine Einheit (i) angewendet werden, wobei der Zählstand der Löschvorgänge jedes Mal erhöht wird, wenn die Einheit (i) gelöscht wird.
  3. Verfahren nach Anspruch 1 oder Anspruch 2, wobei die eine oder die mehreren Einheiten (i) der Teilgruppe vorbehaltlich eines Merkmals von Daten, die in der einen oder den mehreren Einheiten (i) der Teilgruppe gespeichert sind, als für einen Löschvorgang von Daten zur Auswahl stehende Einheiten vorgeschlagen werden.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei jede Einheit (i) des Satzes von Einheiten (i) einen Satz von Untereinheiten aufweist, und wobei die eine oder die mehreren Einheiten (i) der Teilgruppe vorbehaltlich dessen, dass mehrere der Untereinheiten der einen oder mehreren Einheiten der Teilgruppe gültige Daten enthalten, als für einen Löschvorgang von Daten zur Auswahl stehende Einheiten vorgeschlagen werden.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Schritt des Kennzeichnens für mindestens eine Einheit (i) in der Teilgruppe ein Vergleichen des Abnutzungsgrad (c(i)) der Einheit (i) mit dem maximalen Abnutzungsgrad (c_max) umfasst.
  6. Verfahren nach Anspruch 5, wobei die Teilgruppe mehr als eine Einheit (i) aufweist, wobei die Einheiten (i) der Teilgruppe nach einem anderen Merkmal als den Abnutzungsgraden (c(i)), die den Einheiten (i) der Teilgruppe zugehörig sind, sortiert werden, und wobei mindestens eine der Einheiten (i) der Teilgruppe, die ein bevorzugtes Merkmal und einen Abnutzungsgrad (c(i)) aufweist, der geringer als der maximale Abnutzungsgrad (c_max) ist, für einen späteren Löschvorgang von Daten gekennzeichnet wird.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Teilgruppe eine einzige Einheit (i) aufweist, die als für einen Löschvorgang von Daten zur Auswahl stehende Einheit vorgeschlagen wird.
  8. Verfahren nach einem der vorhergehenden Ansprüche 1 bis 6, wobei die Teilgruppe mehr als eine Einheit (i) aufweist und wobei die Einheiten (i) der Teilgruppe nacheinander für einen späteren Löschvorgang von Daten in Betracht gezogen werden.
  9. Verfahren nach Anspruch 8, wobei eine erste Kennung (last) eine Einheit (i) kennzeichnet, die im Hinblick auf ein anderes Merkmal als Abnutzungsgrade (c(i)), die den Einheiten (i) der Teilgruppe zugehörig sind, derzeit bevorzugt wird, und wobei eine zweite Kennung (last_WL) eine Einheit kennzeichnet, die im Hinblick auf Abnutzungsgrad (c(i)), die den Einheiten (i) der Teilgruppe zugehörig sind, derzeit für einen Löschvorgang bevorzugt zur Auswahl steht.
  10. Verfahren nach Anspruch 9, wobei jede Einheit (i) des Satzes von Einheiten (i) einen Satz von Untereinheiten aufweist und wobei die erste Kennung (last) eine Einheit (i) kennzeichnet, die im Hinblick darauf, dass mehrere ihrer Untereinheiten gültige Daten enthalten, derzeit bevorzugt wird.
  11. Verfahren nach einem der vorhergehenden Ansprüche, wobei, wenn der Abnutzungsgrad (c(i)) einer jeden Einheit (i) des Satzes gleich dem maximalen Abnutzungsgrad (c_max) ist, eine Einheit (i) für einen Löschvorgang von Daten gekennzeichnet wird, die im Hinblick auf ein anderes Merkmal als Abnutzungsgrade (c(i)), die den Einheiten (i) der Teilgruppe zugehörig sind, bevorzugt wird.
  12. Verfahren nach Anspruch 11, wobei jede Einheit (i) des Satzes von Einheiten (i) einen Satz von Untereinheiten aufweist und wobei die Einheit (i), die für einen Löschvorgang ausgewählt wird, im Hinblick darauf, dass mehrere ihrer Untereinheiten gültige Daten enthalten, bevorzugt wird.
  13. Computerprogrammprodukt, das einen computerlesbaren Datenträger umfasst, auf dem sich ein computerlesbarer Programmcode befindet, wobei der computerlesbare Programmcode einen computerlesbaren Programmcode umfasst, der so konfiguriert ist, dass er ein Verfahren nach einem der vorhergehenden Ansprüche 1 bis 11 ausführt.
  14. Speichereinheit, aufweisend: – einen Speicher (2), der einen Satz von Einheiten (i) aufweist und – eine Steuereinheit (3), die so ausgelegt ist, dass sie – einen Abnutzungsgrad (c(i)) einer jeden der Einheiten (i) des Satzes ermittelt und einen maximalen Abnutzungsgrad (c_max) unter den ermittelten Abnutzungsgraden (c(i)) kennzeichnet, – einen Vorschlag einer aus einer oder mehreren Einheiten (i) bestehenden Teilgruppe, diese für einen Löschvorgang von Daten auszuwählen, empfängt; – mindestens eine Einheit (i) in der Teilgruppe, deren Abnutzungsgrad (c(i)) geringer als der maximale Abnutzungsgrad (c_max) ist, für einen späteren Löschvorgang von Daten kennzeichnet, wobei der Vorgang des Kennzeichnens für jede Einheit (i) der Teilgruppe vorzugsweise aufweist, dass jede Einheit (i) aus dem Auswahlprozess für einen Löschvorgang von Daten ausscheidet, wenn der Abnutzungsgrad (c(i)) der jeden Einheit (i) gleich dem maximalen Abnutzungsgrad (c_max) ist, sofern der Abnutzungsgrad (c(i)) einer jeden der anderen Einheiten (i) des Satzes nicht gleich dem maximalen Abnutzungsgrad (c_max) ist.
  15. Speichereinheit nach Anspruch 14, wobei es sich bei dem Speicher (2) um einen Flash-Speicher handelt, der Einheiten (i) in Form von Blöcken umfasst, wobei jeder Block Untereinheiten in Form von Seiten aufweist.
DE102012208141.0A 2011-05-19 2012-05-15 Ausgleich nachlassender Funktionsfähigkeit Active DE102012208141B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP11166647 2011-05-19
EP11166647.5 2011-05-19

Publications (2)

Publication Number Publication Date
DE102012208141A1 true DE102012208141A1 (de) 2012-11-22
DE102012208141B4 DE102012208141B4 (de) 2018-10-25

Family

ID=46026257

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012208141.0A Active DE102012208141B4 (de) 2011-05-19 2012-05-15 Ausgleich nachlassender Funktionsfähigkeit

Country Status (4)

Country Link
US (2) US9218277B2 (de)
CN (1) CN102841849B (de)
DE (1) DE102012208141B4 (de)
GB (1) GB2490991B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015223834A1 (de) * 2015-12-01 2017-06-01 Bayerische Motoren Werke Aktiengesellschaft Elektronisches Steuergerät, Fortbewegungsmittel sowie Verfahren zur Verwendung eines beschreibbaren Speichermittels

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011198433A (ja) * 2010-03-23 2011-10-06 Toshiba Corp メモリシステム
US9141526B2 (en) * 2010-09-16 2015-09-22 International Business Machines Corporation Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit
GB2490991B (en) * 2011-05-19 2017-08-30 Ibm Wear leveling
US9274854B2 (en) * 2012-07-27 2016-03-01 International Business Machines Corporation Contamination based workload management
US9547586B2 (en) * 2013-01-03 2017-01-17 Macronix International Co., Ltd. Metadata containers with indirect pointers
GB2514354A (en) 2013-05-20 2014-11-26 Ibm Managing storage devices having a lifetime of a finite number of operations
US9348748B2 (en) 2013-12-24 2016-05-24 Macronix International Co., Ltd. Heal leveling
US9996303B2 (en) * 2014-05-08 2018-06-12 Kabushiki Kaisha Toshiba Hybrid-HDD that gives up old NAND data at the last moment
US20170068467A1 (en) * 2015-09-04 2017-03-09 HGST Netherlands B.V. Wear management for flash memory devices
CN105512049B (zh) * 2015-11-23 2019-04-23 联想(北京)有限公司 一种存储器数据回收方法、装置及系统
US9959058B1 (en) 2016-03-31 2018-05-01 EMC IP Holding Company LLC Utilizing flash optimized layouts which minimize wear of internal flash memory of solid state drives
US10157004B2 (en) * 2016-04-14 2018-12-18 Sandisk Technologies Llc Storage system and method for recovering data corrupted in a host memory buffer
WO2018087421A1 (en) * 2016-11-09 2018-05-17 Jetico Inc. Oy Method in data wiping of a mass storage
US10552056B2 (en) 2016-12-28 2020-02-04 EMC IP Holding Company LLC Data storage system tiering accounting for limited write endurance
US10198195B1 (en) 2017-08-04 2019-02-05 Micron Technology, Inc. Wear leveling
CN110968268B (zh) * 2019-11-15 2023-03-17 成都智邦科技有限公司 一种基于spiflash的存储管理方法及存储结构
JP2021099642A (ja) * 2019-12-20 2021-07-01 キヤノン株式会社 情報処理装置および情報処理装置の制御方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
JP3641280B2 (ja) * 1992-10-30 2005-04-20 インテル・コーポレーション フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US7409490B2 (en) 2006-04-15 2008-08-05 Yi-Chun Liu Method of flash memory management
KR100830580B1 (ko) * 2006-10-20 2008-05-21 삼성전자주식회사 플래시 메모리 장치를 포함한 메모리 시스템의 데이터 복원방법
CN101655819B (zh) 2008-08-18 2012-11-28 深圳市朗科科技股份有限公司 对半导体存储介质进行空块回收的方法、系统及设备
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
WO2010097065A1 (de) * 2009-02-26 2010-09-02 Hyperstone Gmbh Verfahren zur verwaltung von flashspeichern mit gemischten speichertypen
US20100318719A1 (en) * 2009-06-12 2010-12-16 Micron Technology, Inc. Methods, memory controllers and devices for wear leveling a memory
US8732389B2 (en) * 2009-06-23 2014-05-20 Seagate Technology Llc Memory wear control
GB2490991B (en) 2011-05-19 2017-08-30 Ibm Wear leveling

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015223834A1 (de) * 2015-12-01 2017-06-01 Bayerische Motoren Werke Aktiengesellschaft Elektronisches Steuergerät, Fortbewegungsmittel sowie Verfahren zur Verwendung eines beschreibbaren Speichermittels

Also Published As

Publication number Publication date
GB2490991A (en) 2012-11-21
US20120297123A1 (en) 2012-11-22
CN102841849B (zh) 2015-10-28
US9218277B2 (en) 2015-12-22
GB2490991B (en) 2017-08-30
CN102841849A (zh) 2012-12-26
US20120324155A1 (en) 2012-12-20
US9274944B2 (en) 2016-03-01
GB201204152D0 (en) 2012-04-25
DE102012208141B4 (de) 2018-10-25

Similar Documents

Publication Publication Date Title
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE112010003650B4 (de) Container-Markierungsschema zum Verringern einer Schreibverstärkung bei Halbleiter-Einheiten
DE19782041B4 (de) Verfahren zum Durchführen eines kontinuierlichen Überschreibens einer Datei in einem nicht-flüchtigen Speicher
DE60317551T2 (de) Aufrechterhaltung gleichförmiger löschhäufigkeit in einem nichtflüchtigen speichersystem
DE112011100618B4 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE102012103869B4 (de) Optimierter Flash-basierender Cache-Speicher
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE4218025C2 (de) Vorrichtung und Verfahren zur automatischen Zuordnung von Datenspeichereinrichtungen in einem Computersystem
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE69726088T2 (de) Methode und Apparat zur Speicherverwaltung
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE102009019271A1 (de) Übertragen von Sequenzzahlen für das Wiederherstellen nach Stromausfall bei einem nichtflüchtigen Speicher
DE112010003794B4 (de) Datenspeicherung unter Verwendung von Bitmaps
DE112012002452B4 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE102007006307A1 (de) Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, Aufzeichnungsmedium und nichtflüchtigen Speicherelement
DE102009034651A1 (de) Prozess und Verfahren zur Abbildung von logischen Adressen auf physische Adressen in Festkörperplatten
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112006004187T5 (de) Initativer Abnutzungsausgleich für einen nicht-flüchtigen Speicher
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE112010004573T5 (de) System und verfahren zur optimierten wiedernutzbarmachungsverarbeitung in einem virtuellen bandbibliotheksystem
DE102012212183B4 (de) Verfahren und Speichercontroller zur Bestimmung einer Zugriffscharakteristik einer Datenentität
DE102013210719B4 (de) Verfahren und Systeme zum Verwalten von Cache-Speichern
DE112019006530T5 (de) Markieren von betroffenen ähnlichkeitsgruppen in freispeichersammeloperationen in duplizierten speichersystemen
DE102022108673A1 (de) Ressourcenzuweisung für synthetische backups

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012020000

Ipc: G11C0016340000

R083 Amendment of/additions to inventor(s)
R082 Change of representative

Representative=s name: SPIES DANNER & PARTNER PATENTANWAELTE PARTNERS, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: DILG HAEUSLER SCHINDELMANN PATENTANWALTSGESELL, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R016 Response to examination communication
R082 Change of representative

Representative=s name: SPIES DANNER & PARTNER PATENTANWAELTE PARTNERS, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R016 Response to examination communication
R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final