DE102012221928B4 - Dynamische Verwaltung von Speicherlebensdauer in Hybridspeicherkonfigurationen - Google Patents

Dynamische Verwaltung von Speicherlebensdauer in Hybridspeicherkonfigurationen Download PDF

Info

Publication number
DE102012221928B4
DE102012221928B4 DE102012221928.5A DE102012221928A DE102012221928B4 DE 102012221928 B4 DE102012221928 B4 DE 102012221928B4 DE 102012221928 A DE102012221928 A DE 102012221928A DE 102012221928 B4 DE102012221928 B4 DE 102012221928B4
Authority
DE
Germany
Prior art keywords
storage unit
value
computer
cell
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102012221928.5A
Other languages
English (en)
Other versions
DE102012221928A1 (de
Inventor
Wei Huang
Anthony Nelson Hylick
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 DE102012221928A1 publication Critical patent/DE102012221928A1/de
Application granted granted Critical
Publication of DE102012221928B4 publication Critical patent/DE102012221928B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory

Landscapes

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

Abstract

Verfahren zum Verwalten einer Lebensdauer einer Speichereinheit, wobei das Verfahren aufweist:Einstellen, unter Verwendung eines Prozessors, einer Drosselungsrate in einer Anwendung, die in einem Datenverarbeitungssystem ausgeführt wird, auf einen ersten Wert für die Verarbeitung von Schreiboperationen in der Speichereinheit, wobei die Lebensdauer in Form einer Anzahl von Schreiboperationen angegeben wird, die unter Nutzung des Speichers ausgeführt werden können und die Einstellung Zustandsdaten der Speichereinheit zum Ermitteln des ersten Wertes verwendet;Ermitteln, ob die Zustandsdaten der Speichereinheit einen Verschleiß in einer Zelle aufgrund einer Abweichung von Zelle zu Zelle in der Speichereinheit durch eine erste Schreiboperation mit einem gewissen Datenmuster in einer anderen Zelle in einer Nachbarschaft der Zelle angeben;Reduzieren, in Reaktion auf die Ermittlung, dass die Zustandsdaten der Speichereinheit den Verschleiß angeben, der Drosselungsrate von dem ersten Wert auf einen zweiten Wert, so dass eine Anzahl von Schreiboperationen, die in der Speichereinheit ausgeführt werden, kleiner ist mit der auf den zweiten Wert eingestellten Drosselungsrate als mit dem ersten Wert;Ermitteln, ob eine zweite Schreiboperation in der Speichereinheit innerhalb der Drosselungsrate ausgeführt werden kann, wobei die Drosselungsrate eine erste Anzahl von Schreiboperationen unter Verwendung der Speichereinheit pro Zeitraum erlaubt; undAusführen, in Reaktion darauf, dass die Ermittlung ergibt, dass die zweite Schreiboperation in der Speichereinheit innerhalb der Drosselungsrate nicht ausgeführt werden kann, der Schreiboperation unter Verwendung einer zweiten Speichereinheit.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft allgemein ein computerimplementiertes Verfahren, System und Computerprogrammprodukt zum Verbessern der Nutzung von Datenverarbeitungsressourcen. Insbesondere betrifft die vorliegende Erfindung ein computerimplementiertes Verfahren, System und Computerprogrammprodukt zum Verwalten der Lebensdauer eines Speichers, der eine Hybridspeicherkonfiguration verwendet.
  • ALLGEMEINER STAND DER TECHNIK
  • Beschreibung des Stands der Technik:
  • Ein Datenverarbeitungssystem nutzt Speicher zum Speichern von Daten, die von einer Anwendung verwendet werden. Die Daten werden unter Verwendung einer Schreiboperation (Schreiben) in einen Speicher geschrieben.
  • Wie bei jeder elektronischen Komponente verursacht die Nutzung eines Speichers Verschleiß auf den elektronischen Komponenten des Speichers. Irgendwann fallen eine oder mehrere Komponenten in dem Speicher durch den Verschleiß aus und manchen den Speicher unzuverlässig oder unbrauchbar.
  • Eine Zeitdauer ab dem Zeitpunkt des Einsatzes des Speichers bis zu dem Zeitpunkt, ab dem der Speicher wegen Verschleiß als unzuverlässig oder unbrauchbar eingeschätzt wird, wird als eine Lebensdauer des Speichers bezeichnet. Eine Lebensdauer eines Speichers gibt nicht notwendigerweise die tatsächliche Zeit vor dem Ausfall einer bestimmten Speichereinheit an, sondern nur eine erwartete Zeit vor dem Ausfall (erwartete Lebensdauer). Ein Speicherhersteller kann die durchschnittliche Lebensdauer eines Typs von Speichereinheiten mittels Testen ermitteln und kann eine erwartete Lebensdauer für eine durchschnittliche Speichereinheit des Typs von getesteten Speichereinheiten vorschlagen.
  • Im Stand der Technik finden sich zu der beschriebenen Problematik bereits einige Dokumente mit angrenzendem Inhalt. Das Dokument US 2008/0140918 A1 beschreibt ein Halbleiterspeichersystem mit einem ersten nichtflüchtigen Halbleiterspeicher, welches eine erste Schreibzyklus-Lebenszeit aufweist, und einen zweiten nichtflüchtigen Halbleiterspeicher, der eine zweite Schreibzyklus-Lebenszeit aufweist, die sich von der ersten Schreibzyklus-Lebenszeit unterscheidet. Darüber hinaus ist ein Abnutzungsgradniveaumodul vorhanden.
  • Das Dokument US 2008/0126891 A1 beschreibt eine Vorrichtung, ein Verfahren und ein Computerprogrammprodukt zur Feststellung mindestens eines Aspektes in Bezug auf eine Lebensdauer eines Speichers. Darüber hinaus wird eine Kennzeichnung dieses mindestens einen Aspektes grafisch dargestellt.
  • Das Dokument US 2010/0195384 A1 beschreibt Systeme und Verfahren zum Lesen von Daten. Insbesondere wird ein Verfahren angegeben, welches Kennwerte einer Mehrzahl von Zellen in einem Speicher misst. Die Kennwerte umfassen eine Mehrzahl von Werten inklusive eines ersten Wertes, der in einer bestimmten Speicherzelle gespeichert ist, und eines zweiten Wertes, der in einer zweiten Speicherzelle gespeichert ist. Darüber hinaus wird gemessen, ob es bei der Mehrzahl der Kennwerte Unregelmäßigkeiten in den betroffenen Zellen gibt.
  • Schließlich beschreibt das Dokument US 2011/0010514 A1 einen Mechanismus zum Verwalten von Datensegmenten in einem hierarchischen Speichersystem. Der Mechanismus verwaltet mindestens einen Zähler für jedes Datensegment in dem hierarchischen Speichersystem. Jeder Zähler zählt die Anzahl der Zugriffsoperationen auf ein entsprechendes Datensegment innerhalb eines vorher bestimmten Zeitintervalls. Darüber hinaus werden Analysefunktionen basierend auf dem einen oder mehreren Werten der Zähler für jedes Datensegment ausgeführt.
  • KURZDARSTELLUNG
  • Die veranschaulichenden Ausführungsformen stellen ein Verfahren, System und Computerprogrammprodukt zum Verwalten der Lebensdauer eines Speichers bereit, der eine Hybridspeicherkonfiguration verwendet.
  • Eine Verbesserung für die oben beschriebene Situation eines frühzeitigen Ausfalls von Speichereinheiten wird durch die Gegenstände der unabhängigen Ansprüche gelöst. Weitere Ausführungsformen sind durch die jeweils abhängigen Ansprüche angegeben.
  • Figurenliste
  • Die neuartigen Funktionen, die als kennzeichnend für die Ausführungsformen erachtet werden, sind in den Ansprüchen im Anhang dargelegt. Die Erfindung selbst sowie ein bevorzugter Verwendungsmodus, weitere Ziele und Vorteile davon sind jedoch am besten unter Bezugnahme auf die folgende ausführliche Beschreibung einer veranschaulichenden Ausführungsform zu verstehen, wenn sie in Verbindung mit den begleitenden Zeichnungen gelesen wird, wobei:
    • 1 eine piktografische Darstellung eines Netzwerks von Datenverarbeitungssystemen darstellt, in das veranschaulichende Ausführungsformen implementiert werden können;
    • 2 ein Blockschema eines Datenverarbeitungssystems darstellt, in das veranschaulichende Ausführungsformen implementiert werden können;
    • 3 eine Beispielkonfiguration für die Verwaltung einer Speicherlebensdauer gemäß einer veranschaulichenden Ausführungsform darstellt;
    • 4 ein Ablaufdiagramm eines Prozesses zum Verwalten der Lebensdauer eines Speichers darstellt, der eine Hybridspeicherkonfiguration gemäß einer veranschaulichenden Ausführungsform nutzt; und
    • 5 einen Prozess zur dynamischen Anpassung einer Drosselungsrate gemäß einer veranschaulichenden Ausführungsform darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine Schreiboperation gemäß einer Ausführungsform schreibt Daten in eine Speichereinheit. Schreiben in eine Speichereinheit kann unter zwei Bedingungen auftreten - wenn ein Thread oder ein Prozess, der in dem Datenverarbeitungssystem ausgeführt wird, Daten in die Speichereinheit schreibt, und wenn ein „read miss“ (fehlgeschlagener Lesevorgang) auftritt, während der Speicher gelesen wird und Daten von einem zweiten Speicher eingebracht und in die Speichereinheit geschrieben werden.
  • Bei gewissen Speichern wird ihre Lebensdauer in Form einer Anzahl von Schreiboperationen angegeben, die unter Nutzung des Speichers ausgeführt werden können, bevor anzunehmen ist, dass im Speicher ein Fehler auftritt, der die nützliche Lebensdauer des Speichers beendet. Ein derartiger Speicher wird in dieser Offenbarung als ein schreibbegrenzter Speicher bezeichnet.
  • Die veranschaulichenden Ausführungsformen anerkennen, dass die Lebensdauer eine Speichers ein Indikator für lediglich die durchschnittliche Erwartung der nützlichen Lebensdauer des Speichers ist und sich abhängig von einer Art und Weise der Nutzung des Speichers ändern kann. Zum Beispiel kann in einem schreibbegrenzten Speicher das häufigere Schreiben in eine bestimmte Speicherzelle als in andere Zellen dazu führen, dass der Speicher vor einer für die Lebensdauer des Speichers angegebenen Anzahl von Schreiboperationen unzuverlässig wird.
  • Der Verschleiß von Speicherzellen ist nicht nur ein Ergebnis von auf eine Zelle geschriebenen Daten (direkte Schreiboperation). Gegenwärtig gibt es eine verschleißausgleichende Technologie zum gleichmäßigen Verteilen der Datenschreiboperationen auf die verschiedenen Speicherzellen. Die veranschaulichenden Ausführungsformen anerkennen jedoch, dass die gegenwärtig verwendete verschleißausgleichende Technologie Abweichungen von Zelle zu Zelle oder Beeinflussungen nicht berücksichtigt. Eine Abweichung von Zelle zu Zelle ist eine nachteilige Auswirkung auf die Zelle - Zelle A (indirekte Schreiboperation) - wenn eine Schreiboperation in einer benachbarten Zelle - Zelle B - ausgeführt wird. Die veranschaulichenden Ausführungsformen anerkennen, dass eine Abweichung von Zelle zu Zelle sich nachteilig auf die Lebensdauer von schreibbegrenzten Speichern auswirkt, weil, auch wenn ein Schreiben auf Zelle B als eine direkte Schreiboperation auf Zelle B auftreten kann, eine benachbarte Zelle A die Auswirkungen der Schreiboperation als eine indirekte Schreiboperation auf Zelle A wahrnimmt. Somit kann die gesamte Auswirkung einer Schreiboperation größer sein als eine einzeln gezählte Schreiboperation. Die aktuelle verschleißausgleichende Technologie verteilt die Operationen nur auf verschiedene Zellen, berücksichtigt aber die Abweichungen von Zelle zu Zelle nicht.
  • Die veranschaulichenden Ausführungsformen anerkennen des Weiteren, dass die Haltbarkeit einer Speicherzelle auch von dem Datenmuster abhängig ist, das auf benachbarte Zellen geschrieben oder von diesen ausgelesen wird. Auch hier kann sich die Lebensdauer eines Speichers verringern, wenn gewisse Datenmuster, die auf eine Speicherzelle geschrieben oder aus dieser ausgelesen werden, sich ebenfalls nachteilig auf eine benachbarte Zelle auswirken, wodurch mehr als eine einzelne Lese- oder Schreibzählung für den Verschleißwert des Speichers verursacht wird. Die veranschaulichenden Ausführungsformen anerkennen, dass die aktuelle verschleißausgleichende Technologie derartige musterabhängige Auswirkungen auf benachbarte Zellen nicht berücksichtigt.
  • Die veranschaulichenden Ausführungsformen anerkennen auch, dass das Ausführen einer Anzahl von Schreiboperationen auf einem Speicher in einem Zeitraum eine andere Auswirkung auf die Lebensdauer des Speichers hat als das Ausführen derselben Anzahl von Schreiboperationen in einem kürzeren Zeitraum. Zum Beispiel ist ein Block von 100 Schreiboperationen in einer Sekunde der Lebensdauer des Speichers abträglicher als das Ausführen derselben 100 Schreiboperationen über 10 Sekunden, gleichgültig, welche Zellen für das Ausführen der Operationen ausgewählt werden. Die veranschaulichenden Ausführungsformen anerkennen, dass die gegenwärtig verfügbare verschleißausgleichende Technologie solche Blockoperationen beim Verteilen der Speicheroperationen nicht berücksichtigt.
  • Die veranschaulichenden Ausführungsformen, die zum Beschreiben der Erfindung verwendet werden, befassen sich mit den oben beschriebenen Problemen und anderen Problemen im Zusammenhang mit dem Verwalten der Lebensdauer von Speichern und lösen sie. Die veranschaulichenden Ausführungsformen stellen ein Verfahren, System und Computerprogrammprodukt zum Verwalten der Lebensdauer eines Speichers bereits, der eine Hybridspeicherkonfiguration verwendet.
  • Eine veranschaulichende Ausführungsform drosselt die Speicheroperationen gemäß einer Schreibrate - einer Rate von Schreiboperationen in den Speicher. Die Schreibrate wird auf Basis der angegebenen oder erwarteten Lebensdauer des Speichers, der erwünschten Lebensdauer des Speichers, des Zustands des Speichers oder einer Kombination daraus ermittelt. Zum Beispiel kann eine Ausführungsform eine anfängliche Rate von Schreiboperationen unter Verwendung einer erwarteten Lebensdauer einstellen und die Schreibrate dann auf Basis des Zustands des Speichers ändern. Die Schreibrate ist eine Komponente einer Nutzungsrate, die eine Rate der Nutzung des Speichers für eine Vielfalt von Operationen ist, einschließlich Leseoperationen und Schreiboperationen, aber nicht darauf beschränkt.
  • Der Zustand des Speichers umfasst Faktoren wie Abweichungen von Zelle zu Zelle für die Regelung der Schreibrate. Wenn eine Ausführungsform Anforderungen für eine Speicheroperation mit einer Rate erhält, die größer als die Schreibrate ist, leitet die Ausführungsform die überschüssigen Operationen auf einen zweiten Datenspeicher, wie beispielsweise eine andere Speicherebene, eine Festplatte, einen optischen Speicher oder eine Kombinationen von diesen und andere geeignete Datenspeichereinheiten um.
  • Die veranschaulichenden Ausführungsformen werden in Bezug auf gewisse Datenverarbeitungsressourcen nur als Beispiele beschrieben. Derartige Beschreibungen sollen die veranschaulichenden Ausführungsformen keinesfalls einschränken. Zum Beispiel werden gewisse veranschaulichende Ausführungsformen, die Schreiboperationen in einem schreibbegrenzten Speicher verwenden, nur als ein Beispielszenario beschrieben, in dem die veranschaulichenden Ausführungsformen anwendbar sind, ohne eine Einschränkung der veranschaulichenden Ausführungsformen darauf zu implizieren. Eine Ausführungsform kann auf ähnliche Weise zum Drosseln anderer Typen von Speicheroperationen in Speichern verwendet werden, deren Lebensdauer in eine Anzahl von Speicheroperationen übersetzt werden kann.
  • Ebenso werden die veranschaulichenden Ausführungsformen in Bezug auf gewisse Lebensdauerfaktoren nur als Beispiele beschrieben. Solche Beschreibungen sollen die veranschaulichenden Ausführungsformen keinesfalls einschränken. Zum Beispiel kann eine veranschaulichende Ausführungsform, die in Bezug auf eine Auswirkung durch Abweichung von Zelle zu Zelle aufgrund von Schreiboperationen in einer benachbarten Zelle beschrieben wird, mit einer Auswirkung auf eine Zelle durch Abweichung von Zelle zu Zelle aufgrund einer Leseoperation in einer benachbarten Zelle oder einer Beeinflussung aufgrund der Speicherung gewisser Datenmuster in einer benachbarten Zelle innerhalb des Schutzbereichs der veranschaulichenden Ausführungsformen implementiert werden.
  • Des Weiteren können die veranschaulichenden Ausführungsformen in Bezug auf jeden Datentyp, jede Datenquelle oder jeden Zugriff auf eine Datenquelle über ein Datennetzwerk implementiert werden. Jeder Typ einer Datenspeichereinheit kann die Daten für eine Ausführungsform der Erfindung entweder lokal in einem Datenverarbeitungssystem oder über ein Datennetzwerk innerhalb des Schutzbereichs der Erfindung bereitstellen.
  • Die veranschaulichenden Ausführungsformen werden des Weiteren in Bezug auf gewisse Anwendungen nur als Beispiele beschrieben. Derartige Beschreibungen sollen die Erfindung keinesfalls einschränken. Eine Ausführungsform der Erfindung kann in Bezug auf jeden Anwendungstyp implementiert werden, wie zum Beispiel Anwendungen, die bedient werden, die Instanzen in jedem Typ von Serveranwendung, eine Plattformanwendung, eine eigenständige Anwendung, eine Verwaltungsanwendung oder eine Kombination davon.
  • Eine Anwendung, einschließlich einer Anwendung, die eine Ausführungsform insgesamt oder teilweise implementiert, kann des Weiteren Datenobjekte, Codeobjekte, eingekapselte Anweisungen, Anwendungsfragmente, Dienste und andere in der Datenverarbeitungsumgebung verfügbare Ressourcentypen enthalten. Zum Beispiel können ein Java®-Objekt, ein Enterprise Java Bean (EJB), ein Servlet oder ein Applet Manifestationen einer Anwendung sein, in Bezug auf die die Erfindung implementiert werden kann. (Java und alle Marken und Logos auf Java-Basis sind Marken oder eingetragene Marken von Oracle und/oder dessen Tochtergesellschaften.)
  • Eine veranschaulichende Ausführungsform kann in Hardware, Software oder einer Kombination davon implementiert werden. Eine veranschaulichende Ausführungsform kann des Weiteren in Bezug auf jeden Typ von Computerressource implementiert werden, wie beispielsweise ein physisches oder virtuelles Datenverarbeitungssystem oder Komponenten davon, die in einer vorgegebenen Datenverarbeitungsumgebung verfügbar sein können.
  • Die Beispiele in dieser Offenbarung werden nur zur Verdeutlichung der Beschreibung verwendet und schränken die veranschaulichenden Ausführungsformen keinesfalls ein. Zusätzliche Daten, Operationen, Aktionen, Aufgaben, Aktivitäten und Bearbeitungen sind auf Basis dieser Offenbarung vorstellbar und dieselben werden innerhalb der Schutzbereichs der veranschaulichenden Ausführungsformen eingehend betrachtet.
  • Alle hierin aufgelisteten Vorteile stellen nur Beispiele dar und sollen die veranschaulichenden Ausführungsformen keinesfalls einschränken. Weitere oder andere Vorteile können durch spezielle veranschaulichende Ausführungsformen verwirklicht werden. Außerdem kann eine bestimmte veranschaulichende Ausführungsform einige, alle oder gar keine der oben aufgelisteten Vorteile aufweisen.
  • Unter Bezugnahme auf die Figuren, und insbesondere unter Bezugnahme auf die 1 und 2, stellen diese Figuren Beispieldiagramme von Datenverarbeitungsumgebungen dar, in denen veranschaulichende Ausführungsformen implementiert werden können. Die 1 und 2 sind nur Beispiele und sollen keinerlei Einschränkung in Bezug auf die Umgebungen bestätigen oder implizieren, in denen andere Ausführungsformen implementiert werden können. Eine besondere Realisierung kann an den dargestellten Umgebungen auf Basis der folgenden Beschreibung zahlreiche Modifizierungen vornehmen.
  • 1 stellt eine piktografische Darstellung eines Netzwerks von Datenverarbeitungssystemen dar, in die veranschaulichende Ausführungsformen implementiert werden können. Die Datenverarbeitungsumgebung 100 ist ein Netzwerk von Computern, in die die veranschaulichenden Ausführungsformen implementiert werden können. Die Datenverarbeitungsumgebung 100 enthält das Netzwerk 102. Das Netzwerk 102 ist das Medium, das für die Bereitstellung von Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern verwendet wird, die in der Datenverarbeitungsumgebung 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen enthalten, wie beispielsweise Drahtleitungen, drahtlose Datenübertragungsverbindungen oder Lichtwellenleiterkabel. Der Server 104 und der Server 106 sind zusammen mit der Speichereinheit 108 mit dem Netzwerk 102 gekoppelt. Softwareanwendungen können auf jedem Computer in der Datenverarbeitungsumgebung 100 ausgeführt werden.
  • Des Weiteren sind die Clients 110, 112 und 114 an das Netzwerk 102 gekoppelt. Ein Datenverarbeitungssystem wie der Server 104 oder 106 oder der Client 110, 112 oder 114 kann Daten enthalten und kann Softwareanwendungen oder Software-Tools aufweisen, die darauf ausgeführt werden.
  • Ein Datenverarbeitungssystem wie der Server 104 kann die Anwendung 105 enthalten, die darauf ausgeführt wird. Die Anwendung 105 kann eine Anwendung zum Verwalten der Speicherkomponente 107 des Servers 104 gemäß einer Ausführungsform sein. Der Speicher 109 kann jede Kombination von Datenspeichereinheiten sein, wie beispielsweise ein Speicher oder eine Festplatte, die von einer Ausführungsform als ein zweiter Speicher verwendet werden kann. Die Anwendung 105 kann jede geeignete Anwendung in jeder Kombination von Hardware und Software zum Verwalten eines Speichers sein, einschließlich einer Speichermanagerkomponente eines Betriebssystemkernels, aber nicht darauf beschränkt. Die Anwendung 105 kann modifiziert werden, um eine hierin beschriebene Ausführungsform der Erfindung zu implementieren. Alternativ kann die Anwendung 105 in Verbindung mit einer anderen Anwendung (nicht gezeigt) arbeiten, die eine Ausführungsform implementiert.
  • Die Server 104 und 106, die Speichereinheit 108 und die Clients 110, 112 und 114 können unter Verwendung von Drahtleitungsverbindungen, drahtlosen Datenübertragungsprotokollen oder einer anderen geeigneten Datenkonnektivität an ein Netzwerk 102 gekoppelt sein. Die Clients 110, 112 und 114 können zum Beispiel Personal Computer oder Netzwerkcomputer sein.
  • In dem dargestellten Beispiel kann der Server 104 Daten, wie z. B. Boot-Dateien, Betriebssystembilder und Anwendungen für die Clients 110, 112 und 114 bereitstellen. Die Clients 110, 112 und 114 können in diesem Beispiel Clients für den Server 104 sein. Die Clients 110, 112, 114 oder eine beliebige Kombination davon können ihre eigenen Daten, Boot-Dateien, Betriebssystembilder und Anwendungen enthalten. Die Datenverarbeitungsumgebung 100 kann weitere Server, Clients und andere Einheiten enthalten, die nicht gezeigt sind.
  • In dem dargestellten Beispiel kann die Datenverarbeitungsumgebung 100 das Internet sein. Das Netzwerk 102 kann eine Sammlung von Netzwerken und Gateways darstellen, die das Transmission Control Protocol/Internet Protocol (TCP/IP) und andere Protokolle nutzen, um miteinander zu kommunizieren. Im Kernstück des Internet befindet sich ein Backbone von Datenübertragungsverbindungen zwischen Hauptknoten oder Host-Computern, einschließlich Tausenden von in Gewerbe, in Behörden, im Bildungsbereich und anderweitig genutzten Computersystemen, die Daten und Nachrichten weiterleiten. Natürlich kann die Datenverarbeitungsumgebung 100 auch als eine Anzahl verschiedener Typen von Netzwerken implementiert werden, wie zum Beispiel ein Intranet, ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN). 1 ist als ein Beispiel gedacht und nicht als eine architekturbezogene Einschränkung für die verschiedenen veranschaulichenden Ausführungsformen.
  • Unter anderem kann die Datenverarbeitungsumgebung 100 zum Realisieren einer Client-Server-Umgebung verwendet werden, in der die veranschaulichenden Ausführungsformen implementiert werden können. Eine Client-Server-Umgebung ermöglicht die Verteilung von Softwareanwendungen und Daten über ein Netzwerk, so dass eine Anwendung unter Verwendung der Interaktivität zwischen einem Client-Datenverarbeitungssystem und einem Server-Datenverarbeitungssystem funktioniert. Die Datenverarbeitungsumgebung 100 kann auch eine dienstorientierte Architektur verwenden, in der funktionell aufeinander abgestimmte Softwarekomponenten, die über ein Netzwerk verteilt sind, als kohärente Geschäftsanwendungen in einem Paket zusammengefasst werden können.
  • Unter Bezugnahme auf 2 stellt diese Figur ein Blockschema eines Datenverarbeitungssystems dar, in das veranschaulichende Ausführungsformen implementiert werden können. Das Datenverarbeitungssystem 200 ist ein Beispiel für einen Computer, wie beispielsweise den Server 104 oder den Client 110 in 1, in dem sich ein computerverwendbarer Programmcode oder Anweisungen befinden, die für die veranschaulichenden Ausführungsformen die Prozesse der veranschaulichenden Ausführungsformen implementieren.
  • In dem dargestellten Beispiel verwendet das Datenverarbeitungssystem 200 eine Hub-Architektur mit Northbridge und dem Speicher-Controller-Hub (NB/MCH) 202 und Southbridge und dem Eingabe/Ausgabe- (E/A) Controller-Hub (SB/ICH) 204. Die Verarbeitungseinheit 206, der Hauptspeicher 208 und der Grafikprozessor 210 sind an Northbridge und den Speicher-Controller-Hub (NB/MCH) 202 gekoppelt. Die Verarbeitungseinheit 206 kann einen oder mehrere Prozessoren enthalten und kann unter Verwendung von einem oder mehreren heterogenen Prozessorsystemen implementiert werden. Der Grafikprozessor 210 kann in gewissen Realisierungen über einen beschleunigten Grafikport (AGP) an den NB/MCH gekoppelt werden.
  • In dem dargestellten Beispiel ist der Lokalnetz- (LAN) Adapter 212 an Southbridge und den E/A-Controller-Hub (SB/ICH) 204 gekoppelt. Der Audio-Adapter 216, der Tastatur- und Mausadapter 220, der Modem 222, der Nur-Lese-Speicher (ROM) 224, der Universal Serial Bus (USB) und andere Ports 232 und die PCI/PCIe-Einheiten 234 sind über den Bus 238 an Southbridge und den E/A-Controller-Hub 204 gekoppelt. Das Festplattenlaufwerk (HDD) 226 und der CD-ROM 230 sind über den Bus 240 an Southbridge und E/A-Controller-Hub 204 gekoppelt. Zu PCI/PCIe-Einheiten können zum Beispiel Ethernet-Adapter, Add-in-Karten und PC-Karten für Notebook-Computer gehören. Ein PCI (Peripheral Component Interconnect) verwendet einen Karten-Bus-Controller, während ein PCIe (PCI Express) dies nicht tut. Der ROM 224 kann zum Beispiel ein binäres Flash-Eingabe/Ausgabe-System (BIOS) sein. Das Festplattenlaufwerk 226 und der CD-ROM 230 können zum Beispiel eine Integrated-Drive-Electronics- (IDE) oder Serial-Advanced-Technology-Attachement- (SATA) Schnittstelle verwenden. Eine Super-E/A- (SIO) Einheit 236 kann an Southbridge und den E/A-Controller-Hub (SB/ICH) 204 gekoppelt werden.
  • Auf der Verarbeitungseinheit 206 läuft ein Betriebssystem. Das Betriebssystem stellt die Steuerung für verschiedene Komponenten im Datenverarbeitungssystem 200 in 2 bereit und koordiniert sie. Das Betriebssystem kann ein im Handel erhältliches Betriebssystem sein, wie zum Beispiel Microsoft® Windows® (Microsoft und Windows sind Marken der Microsoft Corporation in den Vereinigten Staaten, anderen Ländern oder beidem) oder Linux® (Linux ist eine Marke von Linus Torvalds in den Vereinigten Staaten, anderen Ländern oder beidem). Ein objektorientiertes Programmiersystem, wie zum Beispiel das Java™-Programmiersystem, kann zusammen mit dem Betriebssystem ausgeführt werden und stellt Aufrufe von Java™-Programmen an das Betriebssystem oder Anwendungen, die auf dem Datenverarbeitungssystem 200 ausgeführt werden, bereit (Java und alle Javabasierten Marken und Logos sind Marken oder eingetragene Marken von Oracle und/oder dessen Tochtergesellschaften).
  • Programmanweisungen für das Betriebssystem, das objektorientierte Programmiersystem, die Prozesse der veranschaulichenden Ausführungsformen und Anwendungen oder Programme befinden sich auf den Speichereinheiten wie dem Festplattenlaufwerk 226 und können zur Ausführung durch die Verarbeitungseinheit 206 in einen Speicher geladen werden, wie zum Beispiel den Hauptspeicher 208, den Nur-Lese-Speicher 224 oder ein oder mehrere Peripherieeinheiten. Programmanweisungen können auch dauerhaft in einem nicht flüchtigen Speicher gespeichert werden und entweder von dort aus geladen oder an Ort und Stelle ausgeführt werden. Zum Beispiel kann das synthetische Programm gemäß einer Ausführungsform in einem nicht flüchtigen Speicher gespeichert und von dort in einen DRAM geladen werden.
  • Die Hardware in den 1 bis 2 kann je nach Realisierung unterschiedlich sein. Zusätzlich oder an Stelle der in den 1 bis 2 dargestellten Hardware können auch eine andere interne Hardware- oder Peripherieeinheiten verwendet werden, wie zum Beispiel ein Flash-Speicher, ein entsprechender nicht flüchtiger Speicher oder optische Plattenlaufwerke und dergleichen. Außerdem können die Prozesse der veranschaulichenden Ausführungsformen auf ein Mehrprozessor-Datenverarbeitungssystem angewendet werden.
  • In einigen veranschaulichenden Beispielen kann das Datenverarbeitungssystem 200 ein Personal Digital Assistant (PDA) sein, der im Allgemeinen mit einem Flash-Speicher konfiguriert ist, um einen nicht flüchtigen Speicher zum Speichern von Betriebssystemdateien und/oder von benutzergenerierten Daten bereitzustellen. Ein Bussystem kann einen oder mehrere Busse enthalten, wie beispielsweise einen Systembus, einen E/A-Bus und einen PCI-Bus. Selbstverständlich kann das Bussystem unter Verwendung jedes Typs von Datenübertragungsstruktur oder - architektur implementiert werden, der eine Übertragung von Daten zwischen verschiedenen Komponenten oder Einheiten ermöglicht, die an die Struktur oder Architektur angeschlossen sind.
  • Eine Datenübertragungseinheit kann ein oder mehrere Einheiten enthalten, die zum Übertragen und Empfangen von Daten verwendet werden, wie beispielsweise ein Modem oder ein Netzwerkadapter. Ein Speicher kann zum Beispiel der Hauptspeicher 208 oder ein Cachespeicher sein, wie beispielsweise der Cachespeicher in Northbridge und im Speicher-Controller-Hub 202. Eine Verarbeitungseinheit kann einen oder mehrere Prozessoren oder CPUs enthalten.
  • Die in den 1 bis 2 dargestellten Beispiele und die oben beschriebenen Beispiele sollen keine Architektureinschränkungen implizieren. Zum Beispiel kann das Datenverarbeitungssystem 200 neben einem PDA auch ein Tablet-Computer, ein Laptop-Computer oder ein Telefongerät sein.
  • Unter Bezugnahme auf 3 stellt diese Figur eine Beispielkonfiguration zum Verwalten einer Speicherlebensdauer gemäß einer veranschaulichenden Ausführungsform dar. Die Anwendung 302 ist analog zur Anwendung 105 in 1.
  • Die Ausführungsformen werden unter Verwendung von Schreibanforderungen, Schreiboperationen und schreibbegrenztem Speicher als Beispiele zur Verdeutlichung der Beschreibung und nicht als Einschränkungen der Ausführungsformen beschrieben. Eine Ausführungsform kann mit anderen Speicherzugriffsanforderungen, anderen Speicheroperationen und anderen Speichern implementiert werden, deren Lebensdauer auf andere Weise definiert wird.
  • Die Anwendung 302 ist eine Anwendung zum Drosseln der Schreiboperationen, die an den Speicher 306 gerichtet sind. Die Anwendung 302 empfängt die Schreibanforderungen 304, um Daten in den Speicher 306 zu schreiben. Der Speicher 306 ist eine schreibbegrenzte Speichereinheit, die eine Lebensdauer mit einer Schwellenwertanzahl von Schreiboperationen während der nützlichen Lebensdauer des Speichers 306 hat. Der Speicher 306 enthält die Zellen A, B und C wie gezeigt. Operationen wie beispielsweise Schreiboperationen in Zelle B können sich auf Zelle A oder Zelle C durch Abweichung von Zelle zu Zelle auswirken, wie von den veranschaulichenden Ausführungsformen anerkannt wird.
  • Der zweite Speicher 308 enthält jeden geeigneten Typ von Datenspeichereinheiten in der Art und Weise des Speichers 109 in 1. Der zweite Speicher 308 enthält zum Beispiel, wie dargestellt, den Speicher 310 und den Plattenspeicher 312.
  • Die Zustandsüberwachung 316 ist ein Dienstprogramm, das gewisse Parameter eines Speichers misst, wie beispielsweise Temperatur, Anzahl von Operationen, elektrische Kenndaten, eine Kombination davon oder andere Parameter, die zum Ermitteln von nutzungsbedingtem Verschleiß von Speicherzellen im Speicher 306 verwendet werden können. Die Zustandsüberwachung 316 kann die Messungen periodisch, bei Eintreten eines Ereignisses oder einer Kombination davon vornehmen. In einer Ausführungsform enthält die Zustandsüberwachung 316 eine gefertigte Schaltung auf dem Speicher 306, die sich in einer Firmware-Realisierung der Zustandsüberwachung 316 befindet. In einer anderen Ausführungsform ist die Zustandsüberwachung 316 eine Anwendung, die eine Zustands-/Leistungs-/betriebliche Datenausgabe aus dem Speicher 306 verwendet.
  • Die Anwendung 302 enthält den Drosselungsalgorithmus 318 und die Ratenanpassungskomponente 320. Der Drosselungsalgorithmus 318 kann jeder geeignete Algorithmus zum Sicherstellen sein, dass eine Rate von Schreiboperationen, die an den Speicher 306 gerichtet werden, nicht die Rate überschreitet, die von der Ratenanpassungskomponente 320 eingestellt wurde.
  • Beispielsweise kann der Drosselungsalgorithmus 318 eine Realisierung des Token-Bucket-Algorithmus sein. Im Allgemeinen verwaltet eine Realisierung des Token-Bucket-Algorithmus einen Datencontainer (den symbolischen „Bücket“ oder „Eimer“), in dem Datentoken (Token) mit einer festgelegten Rate abgelegt werden.
  • Gemäß einer Ausführungsform, die den Token-Bucket-Algorithmus verwendet, kann, wenn zum Zeitpunkt der Schreibanforderung 304 ein Token in dem Token-Bucket vorhanden ist, die Schreiboperation dieser Schreibanforderung 304 fortgeführt werden. Für jede Schreibanforderung 304, die zur Verarbeitung in den Speicher 306 weitergeführt wird, wird ein Token aus dem Bucket entfernt.
  • Wenn zum Zeitpunkt der Schreibanforderung 304 keine Token mehr in dem Token-Bucket vorhanden sind, wird die Schreibanforderung zum zweiten Speicher 308 umgeleitet. Wenn der Speicher 306 später inaktiv ist oder zusätzliche Token im Bucket verfügbar sind, können die Daten der umgeleiteten Schreiboperation vom zweiten Speicher 308 unter Verwendung eines Token in den Speicher 306 verschoben werden. Auf diese Weise kann die Rate für die Ausführung von Schreiboperationen die Rate in der Drosselungsalgorithmuskomponente 318 nicht überschreiten, ungeachtet der Rate, mit der die Schreibanforderungen 304 in der Anwendung 302 empfangen werden.
  • Gemäß einer Ausführungsform ist die von der Drosselungsalgorithmuskomponente 318 verwendete Rate vorteilhafterweise dynamisch anpassbar. Die Ratenanpassungskomponente 320 stellt die Rate bereit und aktualisiert die Rate, bei der die Drosselungsalgorithmuskomponente 318 die Schreibanforderungen 304 drosseln muss. In einer Ausführungsform ermittelt die Ratenanpassungskomponente 320 die Ratenänderung durch Berücksichtigung der Zustandsdaten 322, die in der Anwendung 302 von der Zustandsüberwachung 316 empfangen werden.
  • Im Allgemeinen berechnet die Ratenanpassungskomponente 320 eine Durchschnittsrate von Schreiboperationen, die gemäß einer erwünschten oder angegebenen Lebensdauer des Speichers 306 in dem Speicher 306 ausgeführt werden sollen. Die Ratenanpassungskomponente 320 stellt diese Drosselungsrate für Schreibanforderungen 304 ein und passt sie abhängig von der Auslastung im Speicher 306 an, um sicherzustellen, dass die Durchschnittsrate von Schreiboperationen im Speicher 306 erreicht wird.
  • Zum Beispiel kann die Ratenanpassungskomponente 320 unter gewissen Umständen anhand der Zustandsdaten 322 ermitteln, dass eine Abweichung von Zelle zu Zelle im Speicher 306 einen höheren Verschleiß für eine Schreiboperation verursacht als eine einzelne Schreiboperation. Demzufolge reduziert die Ratenanpassungskomponente 320 die Schreibrate von einem vorherigen Wert auf einen neuen Wert, so dass gemäß dem neuen Wert weniger Schreibanforderungen 304 an den Speicher 306 gerichtet werden als dies gemäß dem vorherigen Wert der Fall wäre. Umgekehrt kann die Ratenanpassungskomponente 320 die Schreibrate unter gewissen Umständen von einem vorherigen Wert auf einen neuen Wert erhöhen, wie beispielsweise nach einer längeren übermäßigen Drosselung (d. h. nachdem über einen Zeitraum weniger Operationen an den Speicher 306 gesendet wurden als der Speicher 306 hätte verarbeiten können, ohne die Durchschnittsrate nachteilig zu verändern).
  • Die Anpassung der Drosselungsrate durch die Komponente 320 erfolgt insofern automatisch, als zum Ausführen der Anpassung keine Aktion des Benutzers erforderlich ist. Die Anpassung der Drosselungsrate durch die Komponente 320 erfolgt dynamisch, weil die Drosselungsrate in Reaktion auf die Änderung der Zustandsbedingungen des Speichers 306 angepasst wird. Mit anderen Worten, die Drosselungsrate ist nicht voreingestellt oder kann nur beim Warmstart geändert werden, sondern kann während der Laufzeit abhängig von Auslastung und Zustand des Speichers 306 geändert werden.
  • Unter Bezugnahme auf 4 stellt diese Figur ein Ablaufdiagramm eines Prozesses zum Verwalten der Lebensdauer eines Speichers dar, der eine Hybridspeicherkonfiguration gemäß einer veranschaulichenden Ausführungsform nutzt. Der Prozess 400 kann in die Anwendung 302 in 3 implementiert werden.
  • Der Prozess 400 beginnt mit dem Empfangen einer Schreibanforderung für einen verwalteten Speicher (Schritt 402). Der Prozess 400 ermittelt, ob die Schreibanforderung auf Basis der aktuell eingestellten Drosselungsrate fortgeführt werden kann (Schritt 404). Wenn der Prozess 400 zum Beispiel einen Token-Bucket-Algorithmus verwendet, ermittelt der Prozess 400 im Schritt 404, ob im Bucket ein Token vorhanden ist.
  • Wenn die Schreibanforderung in Schritt 402 nicht fortgeführt werden kann, wenn beispielsweise im Bucket kein Token verfügbar ist (Pfad „Nein“ im Schritt 404), leitet der Prozess 400 die Schreiboperation auf den zweiten Speicher um (Schritt 406). Der Prozess 400 endet danach.
  • Wenn die Schreibanforderung zum verwalteten Speicher weitergeführt werden kann (Pfad „Ja“ im Schritt 404), ermittelt der Prozess 400, ob der Speicher voll ist (Schritt 408). Wenn der Speicher voll ist (Pfad „Ja“ im Schritt 408), entfernt der Prozess 400 eine Seite aus dem Speicher, um die Daten der Schreibanforderung aufzunehmen (Schritt 410). Dann führt der Prozess 400 die Schreibanforderung gemäß der Schreibanforderung des Schritts 402 aus (Schritt 412). Der Prozess 400 endet danach. Wenn der Speicher nicht voll ist, d. h. die Schreiboperation kann ausgeführt werden, ohne eine Seite aus dem Speicher zu entfernen (Pfad „Nein“ von Schritt 408), führt der Prozess 400 die Schreiboperation im Schritt 412 aus end endet danach.
  • Unter Bezugnahme auf 5 stellt diese Figur einen Prozess zur dynamischen Anpassung einer Drosselungsrate gemäß einer veranschaulichenden Ausführungsform dar. Der Prozess 500 kann in die Anwendung 302 in 3 implementiert werden. Obwohl der Prozess 500 als eine durchgängige Operation von Anfang bis Ende dargestellt ist, kann eine Realisierung des Prozesses 500 iterativ sein, wobei der Prozess 500 periodisch oder im Falle gewisser Ereignisse wiederholt wird.
  • Der Prozess 500 beginnt mit dem Empfangen eines Zustandsstatus eines verwalteten Speichers (Schritt 502). Zum Beispiel empfängt der Prozess 500 in einer Ausführungsform die Zustandsdaten 322 in 3. Die Zustandsdaten 322 in 3 können indikativ für den Zustandsstatus des Speichers 306 sein, dessen Leistung durch eine Abweichung von Zelle zu Zelle in der Zelle A im Speicher 306 aufgrund von Schreiboperationen in der benachbarten Zelle B im Speicher 306 in 3 verschlechtert wird.
  • Der Prozess 500 ermittelt, ob der Speicher durch Speicheroperationen nachteilig beeinflusst wird, wie beispielsweise durch direkte oder indirekte Schreiboperationen in Zellen (Schritt 504). Wenn die Zelle durch Speicheroperationen durch direkte oder indirekte Schreiboperationen nicht nachteilig beeinflusst wird (Pfad „Nein“ in Schritt 504), endet der Prozess 500 danach. Mit anderen Worten, der Prozess 500 belässt die Drosselungsrate im Vergleich zu einem vorherigen Wert unverändert. In einer Ausführungsform (nicht gezeigt) kann, wenn die Zelle durch Speicheroperationen nicht nachteilig beeinflusst wird, die Ausführungsform die Drosselungsrate durch Erhöhen der Rate von Schreiboperationen in den Speicher anpassen.
  • Im Allgemeinen kann eine Erhöhung der Drosselungsrate abhängig von dem verwendeten Drosselungsalgorithmus auf jede geeignete Weise vorgenommen werden. Wenn der Prozess 500 zum Beispiel in Verbindung mit dem Token-Bucket-Algorithmus verwendet wird, kann der Prozess 500 die Schreibrate erhöhen (oder verringern), indem er die Rate, in dem Token in dem Bucket abgelegt werden, erhöht (oder verringert).
  • Wenn die Zelle durch direkte oder indirekte Schreib-Speicheroperationen nachteilig beeinflusst wird (Pfad „Ja“ im Schritt 504), passt der Prozess 500 die Rate von Schreiboperationen in den Speicher an, wie beispielsweise durch Verringern der Rate von Schreiboperationen (Schritt 506). Der Prozess 500 endet danach.
  • Das Ablaufdiagramm und die Blockschemata in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb von möglichen Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufdiagramm oder den Blockschemata ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Implementieren der angegeben logischen Funktion(en) aufweist. Des Weiteren ist anzumerken, dass in einigen alternativen Realisierungen die in dem Block angegebenen Funktionen nicht in der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei aufeinanderfolgend gezeigte Blöcke im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden, was von der daran beteiligten Funktionalität abhängt. Es ist des Weiteren anzumerken, dass jeder Block der Blockschemata und/oder der Ablaufdiagrammdarstellung und Kombinationen von Blöcken in den Blockschemata und/oder der Ablaufdiagrammdarstellung durch hardwarebasierte Systeme für besondere Zwecke, die die angegebenen Funktionen oder Handlungen ausführen, oder durch Kombinationen von Spezial-Hardware und Computeranweisungen implementiert werden können.
  • Auf diese Weise werden ein computerimplementiertes Verfahren, System und Computerprogrammprodukt in den veranschaulichenden Ausführungsformen zum Verwalten der Lebensdauer eines Speichers bereitgestellt, der eine Hybridspeicherkonfiguration nutzt. Unter Verwendung einer Ausführungsform wird eine Hybridkonfiguration eines Speichers und eines zweiten Speichers verwendet, um einen vorzeitigen Verschleiß der Speichereinheit zu vermeiden. Eine Ausführungsform überwacht die Verschleißkennzahlen, wie beispielsweise die Anzahl von Schreiboperationen in einer schreibbegrenzten Speichereinheit in Verbindung mit der Auslastung der Speichereinheit, dem Zustand der Speichereinheit und einer erwünschten Lebensdauer der Speichereinheit. Die Ausführungsform drosselt die Nutzung der Speichereinheit, um das Überschreiten einer durchschnittlichen Nutzungsrate zu vermeiden, die der erwünschten Lebensdauer entspricht. Es ist zu beachten, dass eine angegebene Lebensdauer sich von der erwünschten Lebensdauer der Speichereinheit unterscheiden kann.
  • Die Ausführungsformen werden nur als Beispiel unter Verwendung einer Speicherebene beschrieben, die auf Verschleiß überwacht werden muss. Eine Ausführungsform kann mehr als eine Drosselungsrate oder mehr als eine verwaltete Speichereinheit in einer Mehrebenen-Speicherarchitektur anpassen. Die Mehrebenen-Speicherarchitektur kann Speichereinheiten mit derselben oder einer anderen Lebensdauererwartung innerhalb des Schutzbereichs der veranschaulichen Ausführungsformen enthalten.
  • Wie der Fachmann zu würdigen weiß, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert sein. Demzufolge können Aspekte der vorliegenden Erfindung in Form einer völligen Hardware-Ausführungsform, einer völligen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte kombiniert, die hierin alle generell als eine „Schaltung“, ein „Modul“ oder ein „System“ bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Speichereinheit(en) oder computerlesbaren Medien enthalten ist, auf denen ein computerlesbarer Programmcode enthalten ist.
  • Jede Kombination von einer oder mehreren computerlesbaren Speichereinheit(en) oder computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium können zum Beispiel elektronische, magnetische, optische, elektromagnetische , Infrarot- oder Halbleiter-Systeme, -Vorrichtungen oder -Einheiten oder eine beliebige geeignete Kombination aus Vorgenanntem sein, ohne darauf beschränkt zu sein. Spezifischere Beispiele (eine nicht erschöpfende Liste) für die computerlesbare Speichereinheit würde Folgendes enthalten: eine elektrische Verbindung mit einer oder mehreren Drahtleitungen, eine tragbare Computerdiskette, eine Festplatte, einen Arbeitsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen Lichtwellenleiter, einen tragbarer CD-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine Magnetspeichereinheit oder eine beliebige geeignete Kombination des Vorgenannten. Im Kontext dieses Dokuments kann eine computerlesbare Speichereinheit jede Datenträgereinheit oder jedes Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen enthalten oder speichern kann.
  • Programmcode, der in einer computerlesbaren Speichereinheit oder einem computerlesbaren Medium enthalten ist, kann unter Verwendung jedes sachdienlichen Mediums übertragen werden, einschließlich drahtlos, per Drahtleitung, Lichtwellenleiterkabel, HF usw. oder einer beliebigen geeigneten Kombination des Vorgenannten, aber nicht darauf beschränkt.
  • Computerprogrammcode zum Ausführungen von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen, und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem Fernzugriff-Computer oder vollständig auf dem Fernzugriff-Computer oder Server ausgeführt werden. In letzterem Szenario kann der Fernzugriff-Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden sein, einschließlich ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters).
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Ablaufdiagrammdarstellungen und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufdiagrammdarstellungen und/oder der Blockschemata und Kombinationen in den Ablaufdiagrammdarstellungen und/oder der Blockschemata durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können für einen oder mehrere Prozessoren von einem oder mehreren Mehrzweckcomputern, Sonderzweckcomputern oder anderen programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Anweisungen, die über den einen oder die mehreren Prozessoren der Computer oder andere programmierbare Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Implementieren der Funktionen/Handlungen erstellen, die in dem Block oder den Blöcken des Ablaufdiagramms und/oder des Blockschemas angegeben sind.
  • Diese Computerprogrammanweisungen können auch in einer oder mehreren computerlesbaren Speichereinheiten oder computerlesbaren Medien gespeichert sein, die einen oder mehrere Computer, eine oder mehrere andere programmierbare Datenverarbeitungsvorrichtungen oder ein oder mehrere andere Einheiten so steuern können, dass sie auf eine bestimmte Weise funktionieren, so dass die in der einen oder den mehreren computerlesbaren Speichereinheiten oder einem computerlesbaren Medium gespeicherten Anweisungen ein Fertigprodukt mit Anweisungen erzeugen können, die die Funktion/Handlung implementieren, die in dem Block oder den Blöcken des Ablaufdiagramms und/oder Blockschemas angegeben sind.
  • Die Computerprogrammanweisungen können auch in einen oder mehrere Computer, eine oder mehrere andere programmierbare Datenverarbeitungsvorrichtungen oder ein oder mehrere andere Einheiten geladen werden, um eine Reihe von Funktionsschritten zu veranlassen, die in dem einen oder den mehreren Computern, einer oder mehreren anderen programmierbaren Datenverarbeitungsvorrichtungen oder einem oder mehreren anderen Einheiten auszuführen sind, um einen computerimplementierten Prozess zu erzeugen, so dass die Anweisungen, die auf dem einen oder den mehreren Computern, einer oder mehreren anderen programmierbaren Datenverarbeitungsvorrichtungen oder einer oder mehreren anderen Einheiten ausgeführt werden, Prozesse zum Implementieren der Funktionen/Handlungen bereitstellen, die in dem Block oder den Blöcken des Ablaufdiagramms und/oder Blockschemas angegeben sind.
  • Die hierin verwendete Terminologie dient nur zur Beschreibung bestimmter Ausführungsformen und soll die Erfindung keinesfalls einschränken. Die hierin verwendeten Singularformen „ein“, „eine“ und „der/die/das“ sollen auch die Pluralformen mit einschließen, es sei denn, der Kontext gibt eindeutig anderes vor. Des Weiteren ist klar, dass die Begriffe „aufweisen“ und/oder „aufweisend“ bei Verwendung in dieser Patentschrift das Vorhandensein ausgewiesener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten angeben, das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon aber nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Handlungen und Entsprechungen aller Mittel oder Schritt-plus-Funktion-Elemente in den nachstehenden Ansprüchen sollen alle Strukturen, Materialien oder Handlungen zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen enthalten, wie speziell beansprucht. Die Beschreibung der vorliegenden Erfindung wurde zum Zweck der Veranschaulichung und Beschreibung vorgebracht, sie soll aber keineswegs erschöpfend oder auf die Erfindung in der offenbarten Form eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, ohne vom Schutzbereich und dem Erfindungsgedanken der Erfindung abzuweichen. Die Ausführungsformen wurden ausgewählt und beschrieben, um die Grundsätze der Erfindung und die praktische Anwendungen am besten zu erklären und es anderen Fachleuten zu ermöglichen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Modifizierungen zu verstehen, die für die vorgesehene bestimmte Verwendung geeignet sind.

Claims (14)

  1. Verfahren zum Verwalten einer Lebensdauer einer Speichereinheit, wobei das Verfahren aufweist: Einstellen, unter Verwendung eines Prozessors, einer Drosselungsrate in einer Anwendung, die in einem Datenverarbeitungssystem ausgeführt wird, auf einen ersten Wert für die Verarbeitung von Schreiboperationen in der Speichereinheit, wobei die Lebensdauer in Form einer Anzahl von Schreiboperationen angegeben wird, die unter Nutzung des Speichers ausgeführt werden können und die Einstellung Zustandsdaten der Speichereinheit zum Ermitteln des ersten Wertes verwendet; Ermitteln, ob die Zustandsdaten der Speichereinheit einen Verschleiß in einer Zelle aufgrund einer Abweichung von Zelle zu Zelle in der Speichereinheit durch eine erste Schreiboperation mit einem gewissen Datenmuster in einer anderen Zelle in einer Nachbarschaft der Zelle angeben; Reduzieren, in Reaktion auf die Ermittlung, dass die Zustandsdaten der Speichereinheit den Verschleiß angeben, der Drosselungsrate von dem ersten Wert auf einen zweiten Wert, so dass eine Anzahl von Schreiboperationen, die in der Speichereinheit ausgeführt werden, kleiner ist mit der auf den zweiten Wert eingestellten Drosselungsrate als mit dem ersten Wert; Ermitteln, ob eine zweite Schreiboperation in der Speichereinheit innerhalb der Drosselungsrate ausgeführt werden kann, wobei die Drosselungsrate eine erste Anzahl von Schreiboperationen unter Verwendung der Speichereinheit pro Zeitraum erlaubt; und Ausführen, in Reaktion darauf, dass die Ermittlung ergibt, dass die zweite Schreiboperation in der Speichereinheit innerhalb der Drosselungsrate nicht ausgeführt werden kann, der Schreiboperation unter Verwendung einer zweiten Speichereinheit.
  2. Verfahren nach Anspruch 1, des Weiteren aufweisend: Empfangen der Anforderung für die zweite Schreiboperation, die aus einem von (i) einem Prozess, der Daten in die Speichereinheit schreibt, und (ii) einem „read miss“ stammen, der in der Speichereinheit aufgetreten ist, wobei die Anforderung für die zweite Schreiboperation lautet, Daten von dem zweiten Speicher in die Speichereinheit zu schreiben.
  3. Verfahren nach Anspruch 1, wobei die Drosselungsrate konfiguriert ist, um eine durchschnittliche Rate zum Ausführen der Schreiboperationen über die Lebensdauer der Speichereinheit zu erzielen.
  4. Verfahren nach Anspruch 1, des Weiteren aufweisend: Ermitteln, ob die Zustandsdaten der Speichereinheit einen Verschleiß in einer Zelle aufgrund einer direkten Schreiboperation in diese Zelle in der Speichereinheit angeben; und Reduzieren, in Reaktion auf die Ermittlung, dass die Zustandsdaten der Speichereinheit den Verschleiß angeben, der Drosselungsrate von dem ersten Wert auf einen zweiten Wert, so dass eine Anzahl von Schreiboperationen, die in der Speichereinheit ausgeführt werden, kleiner ist mit der auf den zweiten Wert eingestellten Drosselungsrate als mit dem ersten Wert.
  5. Verfahren nach Anspruch 1, des Weiteren aufweisend: Ermitteln, ob die Zustandsdaten der Speichereinheit im Vergleich zu einem erwarteten Verschleiß gemäß einer erwarteten Lebensdauer der Speichereinheit einen erhöhten Verschleiß in einer Zelle aufgrund einer Abweichung von Zelle zu Zelle in der Speichereinheit durch eine andere Schreiboperation in einer anderen Zelle in einer Nachbarschaft der Zelle angeben; und Erhöhen, in Reaktion auf die Ermittlung, dass die Zustandsdaten der Speichereinheit den erhöhten Verschleiß nicht angeben, der Drosselungsrate von dem ersten Wert auf einen dritten Wert, so dass eine Anzahl von Schreiboperationen, die in der Speichereinheit ausgeführt werden, größer ist mit der auf den dritten Wert eingestellten Drosselungsrate als mit dem ersten Wert.
  6. Verfahren nach Anspruch 1, des Weiteren aufweisend: unverändertes Belassen, in Reaktion auf die Ermittlung, dass die Zustandsdaten der Speichereinheit den Verschleiß nicht angeben, der Drosselungsrate auf dem ersten Wert.
  7. Verfahren nach Anspruch 1, des Weiteren aufweisend: Ermitteln, in Reaktion darauf, dass die Ermittlung ergibt, dass die zweite Schreiboperation in der Speichereinheit innerhalb der Drosselungsrate ausgeführt werden kann, ob die Speichereinheit verfügbaren Platz für die Schreiboperation hat; und Ausführen, in Reaktion darauf, dass in der Speichereinheit Platz verfügbar ist, der Schreiboperation unter Verwendung der Speichereinheit.
  8. Verfahren nach Anspruch 7, des Weiteren aufweisend: Entfernen, in Reaktion darauf, dass in der Speichereinheit kein Platz verfügbar ist, von vorher in der Speichereinheit gespeicherten Daten, wodurch in der Speichereinheit Platz verfügbar gemacht wird.
  9. Verfahren nach Anspruch 1, wobei die Ermittlung, ob die Schreiboperation ausgeführt werden kann, aufweist: Verwenden eines Token-Bucket-Algorithmus.
  10. Computerverwendbares Programmprodukt, das ein computerverwendbares Speichermedium mit einem computerverwendbaren Code zum Verwalten einer Lebensdauer einer Speichereinheit aufweist, wobei der computerverwendbare Code aufweist: computerverwendbaren Code zum Einstellen, unter Verwendung eines Prozessors, einer Drosselungsrate in einer Anwendung, die in einem Datenverarbeitungssystem ausgeführt wird, auf einen ersten Wert für die Verarbeitung von Schreiboperationen in der Speichereinheit, wobei die Lebensdauer in Form einer Anzahl von Schreiboperationen angegeben wird, die unter Nutzung des Speichers ausgeführt werden können und die Einstellung Zustandsdaten der Speichereinheit zum Ermitteln des ersten Wertes verwendet; computerverwendbaren Code zum Ermitteln, ob die Zustandsdaten der Speichereinheit einen Verschleiß in einer Zelle aufgrund einer Abweichung von Zelle zu Zelle in der Speichereinheit durch eine erste Schreiboperation mit einem gewissen Datenmuster in einer anderen Zelle in einer Nachbarschaft der Zelle angeben; computerverwendbaren Code zum Reduzieren, in Reaktion auf die Ermittlung, dass die Zustandsdaten der Speichereinheit den Verschleiß angeben, der Drosselungsrate von dem ersten Wert auf einen zweiten Wert, so dass eine Anzahl von Schreiboperationen, die in der Speichereinheit ausgeführt werden, kleiner ist mit der auf den zweiten Wert eingestellten Drosselungsrate als mit dem ersten Wert; computerverwendbaren Code zum Ermitteln, ob eine zweite Schreiboperation in der Speichereinheit innerhalb der Drosselungsrate ausgeführt werden kann, wobei die Drosselungsrate eine erste Anzahl von Schreiboperationen unter Verwendung der Speichereinheit pro Zeitraum erlaubt; und computerverwendbaren Code zum Ausführen, in Reaktion darauf, dass die Ermittlung ergibt, dass die zweite Schreiboperation in der Speichereinheit innerhalb der Drosselungsrate nicht ausgeführt werden kann, der Schreiboperation unter Verwendung einer zweiten Speichereinheit.
  11. Computerverwendbares Programmprodukt nach Anspruch 10, des Weiteren aufweisend: computerverwendbaren Code zum Empfangen der Anforderung für die zweite Schreiboperation, die aus einem von (i) einem Prozess, der Daten in die Speichereinheit schreibt, und (ii) einem „read miss“ stammen, der in der Speichereinheit aufgetreten ist, wobei die Anforderung für die Schreiboperation lautet, Daten von dem zweiten Speicher in die Speichereinheit zu schreiben, und/oder wobei die Drosselungsrate konfiguriert ist, um eine durchschnittliche Rate zum Ausführen der Schreiboperationen über die Lebensdauer der Speichereinheit zu erzielen, und/oder des Weiteren aufweisend: computerverwendbaren Code zum Ermitteln, ob die Zustandsdaten der Speichereinheit einen Verschleiß in einer Zelle aufgrund einer direkten Schreiboperation in diese Zelle in der Speichereinheit angeben; und computerverwendbaren Code zum Reduzieren, in Reaktion auf die Ermittlung, dass die Zustandsdaten der Speichereinheit den Verschleiß angeben, der Drosselungsrate von dem ersten Wert auf einen zweiten Wert, so dass eine Anzahl von Schreiboperationen, die in der Speichereinheit ausgeführt werden, kleiner ist mit der auf den zweiten Wert eingestellten Drosselungsrate als mit dem ersten Wert, und/oder des Weiteren aufweisend: computerverwendbaren Code zum Erhöhen, in Reaktion auf die Ermittlung, dass die Zustandsdaten der Speichereinheit den erhöhten Verschleiß nicht angeben, der Drosselungsrate von dem ersten Wert auf einen dritten Wert, so dass eine Anzahl von Schreiboperationen, die in der Speichereinheit ausgeführt werden, größer ist mit der auf den dritten Wert eingestellten Drosselungsrate als mit dem ersten Wert, und/oder des Weiteren aufweisend: computerverwendbaren Code zum Ermitteln, ob die Zustandsdaten der Speichereinheit einen Verschleiß in einer Zelle aufgrund einer Abweichung von Zelle zu Zelle in der Speichereinheit durch eine andere Speicheroperation in einer anderen Zelle in einer Nachbarschaft der Zelle angeben; und computerverwendbaren Code zum unveränderten Belassen, in Reaktion auf die Ermittlung, dass die Zustandsdaten der Speichereinheit den Verschleiß nicht angeben, der Drosselungsrate auf dem ersten Wert.
  12. Computerverwendbares Programmprodukt nach Anspruch 10, wobei der computerverwendbare Code in einem computerlesbaren Speichermedium in einem Datenverarbeitungssystem gespeichert ist, und wobei der computerverwendbare Code über ein Netzwerk von einem Fernzugriff-Datenverarbeitungssystem übertragen wird.
  13. Computerverwendbares Programmprodukt nach Anspruch 10, wobei der computerverwendbare Code in einem computerlesbaren Speichermedium in einem Server-Datenverarbeitungssystem gespeichert ist, und wobei der computerverwendbare Code über ein Netzwerk auf ein Fernzugriff-Datenverarbeitungssystem zur Verwendung in einem computerlesbaren Speichermedium heruntergeladen wird, das dem Fernzugriff-Datenverarbeitungssystem zugeordnet ist.
  14. Datenverarbeitungssystem zum Verwalten einer Lebensdauer einer Speichereinheit, wobei das Datenverarbeitungssystem aufweist: eine Speichereinheit mit einem Speichermedium, wobei die Speichereinheit computerverwendbaren Programmcode speichert; und einen Prozessor, wobei der Prozessor den computerverwendbaren Programmcode ausführt, und wobei der computerverwendbare Programmcode aufweist: computerverwendbaren Code zum Einstellen, unter Verwendung eines Prozessors, einer Drosselungsrate in einer Anwendung, die in einem Datenverarbeitungssystem ausgeführt wird, auf einen ersten Wert für die Verarbeitung von Schreiboperationen in der Speichereinheit, wobei die Lebensdauer in Form einer Anzahl von Schreiboperationen angegeben wird, die unter Nutzung des Speichers ausgeführt werden können und die Einstellung Zustandsdaten der Speichereinheit zum Ermitteln des ersten Wertes verwendet; computerverwendbaren Code zum Ermitteln, ob die Zustandsdaten der Speichereinheit einen Verschleiß in einer Zelle aufgrund einer Abweichung von Zelle zu Zelle in der Speichereinheit durch eine erste Schreiboperation mit einem gewissen Datenmuster in einer anderen Zelle in einer Nachbarschaft der Zelle angeben; computerverwendbaren Code zum Reduzieren, in Reaktion auf die Ermittlung, dass die Zustandsdaten der Speichereinheit den Verschleiß angeben, der Drosselungsrate von dem ersten Wert auf einen zweiten Wert, so dass eine Anzahl von Schreiboperationen, die in der Speichereinheit ausgeführt werden, kleiner ist mit der auf den zweiten Wert eingestellten Drosselungsrate als mit dem ersten Wert; computerverwendbaren Code zum Ermitteln, ob eine Schreiboperation in der Speichereinheit innerhalb der Drosselungsrate ausgeführt werden kann, wobei die Drosselungsrate eine erste Anzahl von Schreiboperationen unter Verwendung der Speichereinheit pro Zeitraum erlaubt; und computerverwendbaren Code zum Ausführen, in Reaktion darauf, dass die Ermittlung ergibt, dass die zweite Schreiboperation in der Speichereinheit innerhalb der Drosselungsrate nicht ausgeführt werden kann, der Schreiboperation unter Verwendung einer zweiten Speichereinheit.
DE102012221928.5A 2011-12-01 2012-11-29 Dynamische Verwaltung von Speicherlebensdauer in Hybridspeicherkonfigurationen Active DE102012221928B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/308,773 2011-12-01
US13/308,773 US20130145075A1 (en) 2011-12-01 2011-12-01 Dynamically managing memory lifespan in hybrid storage configurations

Publications (2)

Publication Number Publication Date
DE102012221928A1 DE102012221928A1 (de) 2013-06-06
DE102012221928B4 true DE102012221928B4 (de) 2020-06-18

Family

ID=48431616

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012221928.5A Active DE102012221928B4 (de) 2011-12-01 2012-11-29 Dynamische Verwaltung von Speicherlebensdauer in Hybridspeicherkonfigurationen

Country Status (2)

Country Link
US (1) US20130145075A1 (de)
DE (1) DE102012221928B4 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9170943B2 (en) * 2013-08-29 2015-10-27 Globalfoundries U.S. 2 Llc Selectively enabling write caching in a storage system based on performance metrics
US9229640B2 (en) 2013-11-15 2016-01-05 Microsoft Technology Licensing, Llc Inexpensive solid-state storage by throttling write speed in accordance with empirically derived write policy table
US10228868B1 (en) * 2016-09-30 2019-03-12 EMC IP Holding Company LLC Managing lifespan of a flash memory
KR102375417B1 (ko) * 2017-09-14 2022-03-17 삼성전자주식회사 디바이스 수명 예측 방법, 디바이스 설계 방법, 및 컴퓨터 판독 가능한 저장매체
US10453543B2 (en) 2017-10-31 2019-10-22 Micron Technology, Inc. End of life performance throttling to prevent data loss
US11630579B2 (en) * 2020-02-14 2023-04-18 Micron Technology, Inc. Memory sub-system performance shaping including adding a delay to particular data traffic

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126891A1 (en) 2006-11-24 2008-05-29 Radoslav Danilak Memory lifetime gauging system, method and computer program product
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US20100195384A1 (en) 2009-01-30 2010-08-05 Sandisk Il Ltd. System and method to read data subject to a disturb condition
US20110010514A1 (en) 2009-07-07 2011-01-13 International Business Machines Corporation Adjusting Location of Tiered Storage Residence Based on Usage Patterns

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070047327A1 (en) * 2005-08-31 2007-03-01 Micron Technology, Inc. Erase method for flash memory
KR101486980B1 (ko) * 2008-10-27 2015-01-30 삼성전자주식회사 불휘발성 메모리의 문턱 전압 산포의 분석 방법
US8694856B2 (en) * 2009-08-14 2014-04-08 Intrinsic Id B.V. Physically unclonable function with tamper prevention and anti-aging system
US8819503B2 (en) * 2010-07-02 2014-08-26 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
US9213628B2 (en) * 2010-07-14 2015-12-15 Nimble Storage, Inc. Methods and systems for reducing churn in flash-based cache
US8503257B2 (en) * 2010-07-30 2013-08-06 Apple Inc. Read disturb scorecard
US8667244B2 (en) * 2011-03-21 2014-03-04 Hewlett-Packard Development Company, L.P. Methods, systems, and apparatus to prevent memory imprinting
US8745318B2 (en) * 2011-06-28 2014-06-03 Seagate Technology Llc Parameter tracking for memory devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080126891A1 (en) 2006-11-24 2008-05-29 Radoslav Danilak Memory lifetime gauging system, method and computer program product
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US20100195384A1 (en) 2009-01-30 2010-08-05 Sandisk Il Ltd. System and method to read data subject to a disturb condition
US20110010514A1 (en) 2009-07-07 2011-01-13 International Business Machines Corporation Adjusting Location of Tiered Storage Residence Based on Usage Patterns

Also Published As

Publication number Publication date
US20130145075A1 (en) 2013-06-06
DE102012221928A1 (de) 2013-06-06

Similar Documents

Publication Publication Date Title
DE102012221928B4 (de) Dynamische Verwaltung von Speicherlebensdauer in Hybridspeicherkonfigurationen
DE112020000123T5 (de) Patch-verwaltung in einer hybriden datenverwaltungsumgebung
DE112013000650B4 (de) Datenzwischenspeicherungsbereich
DE112019001480B4 (de) Automatisches Optimieren der Ressourcennutzung in einemZieldatenbankverwaltungssystem zum Erhöhen der Arbeitslastleistung
DE112011103378B4 (de) Automatische und sich selbsttätig anpassende Datensicherungsoperationen
DE112013001421B4 (de) Auf Richtlinien beruhendes Verwalten von Speicherfunktionen in Datenreplikationsumgebungen
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112010003133B4 (de) Datenmigration zwischen datenspeichereinheiten
DE102016221811A1 (de) Zuordnung von Ressourcen mit mehrschichtigem Speicher
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE102012208141A1 (de) Ausgleich nachlassender Funktionsfähigkeit
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE102012219907A1 (de) Erhöhen der Speicherkapazität in Systemen mit eingeschränkter elektischer Leistungsaufnahme
DE102015015196A1 (de) Verwaltungssystem und Steuerungsverfahren für Verwaltungssystem
DE112013006476T5 (de) Speicher-Management-Rechner und Speicher-Management-Verfahren
DE102020112531A1 (de) Operationelle metrische Berechnung für Arbeitsbelastungstyp
DE112020004661T5 (de) Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex
DE102012218264A1 (de) Effiziente Datenbereinigung in einer komprimierten Journaldatei
DE112018000900T5 (de) Verarbeiten eines Befehls zum Freigeben von Speicherplatz in einem Computersystem
DE102016101311A1 (de) Datenspeicherverfahren, Datenspeichervorrichtung und Solid State Disk
DE112017001376T5 (de) Erkennen und Vorhersagen von Engpässen in komplexen Systemen
DE102019102861A1 (de) Verfahren und Vorrichtung zur Abschätzung der Abnutzung eines nicht-flüchtigen Informationsspeichers
DE102012221261A1 (de) Verfahren zum Zwischenspeichern und System zum Ausführen des Verfahrens zum Zwischenspeichern zum Betreiben eines mindestens einen Host-Computer aufweisenden Computerserversystems
DE112011103299T5 (de) Systeme und Verfahren zum Verwalten einer virtuellen Bandarchiv-Domäne
DE112019005043T5 (de) Streamzuweisung unter verwendung von stream-guthaben

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: G06F0013100000

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

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