DE102012103869A1 - Optimierter Flash-basierender Cache-Speicher - Google Patents

Optimierter Flash-basierender Cache-Speicher Download PDF

Info

Publication number
DE102012103869A1
DE102012103869A1 DE102012103869A DE102012103869A DE102012103869A1 DE 102012103869 A1 DE102012103869 A1 DE 102012103869A1 DE 102012103869 A DE102012103869 A DE 102012103869A DE 102012103869 A DE102012103869 A DE 102012103869A DE 102012103869 A1 DE102012103869 A1 DE 102012103869A1
Authority
DE
Germany
Prior art keywords
throttling
memory device
data
flash memory
factor
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
DE102012103869A
Other languages
English (en)
Other versions
DE102012103869B4 (de
Inventor
Edi Shmueli
Nitzan Assaf
Wendy Ann Belluomini
Daniel Felix Smith
Venu Gopal Nayar
Binny Sher Gill
Eyal Lotem
James Lee Hafner
Steven Robert Hetzler
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 DE102012103869A1 publication Critical patent/DE102012103869A1/de
Application granted granted Critical
Publication of DE102012103869B4 publication Critical patent/DE102012103869B4/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/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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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

Abstract

Ausführungsformen der Erfindung beziehen sich auf die Drosselung von Zugriffen auf eine Flash-Speichervorrichtung. Die Flash-Speichervorrichtung ist Teil eines Speichersystems, das die Flash-Speichervorrichtung und eine zweite Speichervorrichtung umfasst, Die Drosselung wird durch die Logik außerhalb der Flash-Speichervorrichtung durchgeführt und umfasst das Berechnen eines Drosselungs-Faktors reagierend auf eine geschätzte verbleibende Lebensdauer der Flash-Speichervorrichtung. Es wird bestimmt, ob der Drosselungs-Faktor einen Schwellenwert überschreitet. Daten werden, als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert nicht überschreitet, auf die Flash-Speichervorrichtung geschrieben. Daten werden, als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert überschreitet, auf die zweite Speichervorrichtung geschrieben.

Description

  • Querverweis auf verwandte Anmeldungen
  • Diese Anmeldung ist verwandt mit der US-Patentanmeldung Nr. 13/112601 mit dem Titel” DYNAMIC HIERARCHICAL MEMORY CACHE AWARENESS WITHIN A STORAGE SYSTEM ”eingereicht am selben Tag wie die vorliegende und der International Business Machines Corporation zugeordnet, die hiermit durch Bezugnahme in ihrer Gesamtheit aufgenommen wird.
  • Hintergrund
  • Die vorliegende Erfindung bezieht sich allgemein auf Speicher, und insbesondere, auf die Verwendung einer Flash-Vorrichtung als Cache-Speicher.
  • Flash-Speicher sind eine Art nicht-flüchtiger Speichervorrichtungen, die in großen Blöcken elektrisch gelöscht und neu programmiert werden können. Flash-Speicher speichern Informationen in einem Array von Speicherzellen, die aus Floating-Gate-Transistoren hergestellt wurden. Einstufige Speicherzellen (SLC) Flash-Speicher speichern ein Bit an Information in jeder Zelle. Mehrstufige Speicherzellen (MLC) Flash-Speicher können mehr als ein Bit pro Zelle speichern, durch die Wahl zwischen mehreren Ebenen der elektrischen Ladung, um die Floating-Gates der Zellen anzuwenden. Flash-Speicher haben eine begrenzte Lebensdauer, weil sie nur eine endliche Anzahl von Programmieren-Löschen(Program-Erase(P/E))-Zyklen unterstützen können. Moderne handelsübliche Flash-Speichervorrichtungen garantieren typischerweise, eine bestimmte Anzahl von P/E-Zyklen zu unterstützen, bevor der Verschleiß beginnt, der die Zuverlässigkeit des Speichersystems beeinflusst.
  • Die Verwendung von Flash-Speichern als Alternative oder Ergänzung zu dynamischen Direktzugriffsspeicher (DRAM) und/oder Festplattenlaufwerken (HDD) wird immer attraktiver, da die Kosten des Flash-Speichers abnehmen und die Leistung des Flash-Speichers zunimmt. Aus Kostensicht ist ein Flash-Speicher derzeit etwa zehn Mal günstiger als ein konventioneller DRAM. Die geringeren Kosten der Flash-Speicher ermöglichen es, viel größere Datenmengen ohne eine entsprechende Zunahme der Kosten des Speichers zu speichern. Aus Leistungssicht haben moderne Flash-Speicher derzeit etwa einen zwei Größenordnungen höheren zufälligen Lese-Durchsatz als herkömmliche mechanische Festplatten. Ein Nachteil der Verwendung von Flash-Speichern als Cache-Speicher ist, dass Flash-Speicher eine begrenzte Lebensdauer haben und möglicherweise nicht ideal zum Speichern von Daten sind, die einer großen Anzahl von Updates unterliegen.
  • Kurze Zusammenfassung
  • Eine Ausführungsform ist ein Verfahren, das die Drosselung von Zugriffen auf eine Flash-Speichervorrichtung umfasst. Die Flash-Speichervorrichtung ist Teil eines Speichersystems, das die Flash-Speichervorrichtung und eine zweite Speichervorrichtung umfasst. Die Drosselung wird durch die Logik außerhalb der Flash-Speichervorrichtung durchgeführt und umfasst das Berechnen eines Drosselungs-Faktors reagierend auf eine geschätzte verbleibende Lebensdauer der Flash-Speichervorrichtung. Es wird bestimmt, ob der Drosselungs-Faktor einen Schwellenwert überschreitet. Daten werden, als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert nicht überschreitet, auf die Flash-Speichervorrichtung geschrieben. Daten werden, als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert überschreitet, auf die zweite Speichervorrichtung geschrieben.
  • Eine andere Ausführungsform ist ein System, das einen Speicher und einen Speicher-Controller umfasst. Der Speicher umfasst eine Flash-Speichervorrichtung und eine zweite Speichervorrichtung. Der Speicher-Controller ist mit der Flash-Speichervorrichtung gekoppelt und ist ausgebildet, um einen Drosselungs-Faktor zu berechnen, reagierend auf eine geschätzte verbleibende Lebensdauer der Flash-Speichervorrichtung. Der Speicher-Controller ist außerdem ausgebildet, um zu bestimmen, ob der Drosselungs-Faktor einen Schwellenwert überschreitet. Daten werden, als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert nicht überschreitet, auf die Flash-Speichervorrichtung geschrieben und die Daten werden, als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert überschreitet, auf die zweite Speichervorrichtung geschrieben.
  • Nach einer weiteren Ausführungsform der Erfindung umfasst die Flash-Speichervorrichtung einen Cache-Speicher.
  • Nach einer weiteren Ausführungsform der Erfindung umfasst die zweite Speichervorrichtung ein Festplattenlaufwerk.
  • Nach einer weiteren Ausführungsform der Erfindung ist die Eigenschaft eine Größe der Daten.
  • Eine andere Ausführungsform ist ein Computerprogrammprodukt, dass ein computerlesbares Speichermedium mit darin enthaltenem computerlesbaren Programmcode umfasst. Der computerlesbare Programmcode umfasst einen computerlesbaren Programmcode, der zur Drosselung von Zugriffen auf eine Flash-Speichervorrichtung ausgebildet ist. Die Flash-Speichervorrichtung ist Teil eines Speichersystems, das die Flash-Speichervorrichtung und eine zweite Speichervorrichtung umfasst. Die Drosselung wird durch die Logik außerhalb der Flash-Speichervorrichtung durchgeführt und umfasst das Berechnen eines Drosselungs-Faktors reagierend auf eine geschätzte verbleibende Lebensdauer der Flash-Speichervorrichtung. Es wird bestimmt, ob der Drosselungs-Faktor einen Schwellenwert überschreitet. Daten werden, als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert nicht überschreitet, auf die Flash-Speichervorrichtung geschrieben. Daten werden, als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert überschreitet, auf die zweite Speichervorrichtung geschrieben.
  • Nach einer weiteren Ausführungsform der Erfindung ist das Berechnen des Drosselungs-Faktors ferner reagierend auf eine Eigenschaft der Daten.
  • Nach einer weiteren Ausführungsform der Erfindung ist die Eigenschaft eine Größe der Daten.
  • Nach einer weiteren Ausführungsform der Erfindung ist das Berechnen des Drosselungs-Faktor ferner reagierend auf einen geschätzten maximalen Durchsatz der Flash-Speichervorrichtung.
  • Nach einer weiteren Ausführungsform der Erfindung umfasst die Flash-Speichervorrichtung einen Cache-Speicher.
  • Nach einer weiteren Ausführungsform der Erfindung umfasst die zweite Speichervorrichtung ein Festplattenlaufwerk umfasst.
  • Eine weitere Ausführungsform ist ein Verfahren, das die Drosselung von Zugriffen auf eine Flash-Speichervorrichtung umfasst. Die Flash-Speichervorrichtung ist Teil eines Speichersystems, das die Flash-Speichervorrichtung und eine zweite Speichervorrichtung umfasst. Die Drosselung wird durch die Logik außerhalb der Flash-Speichervorrichtung durchgeführt. Die Drosselung umfasst das Berechnen eines Lebensdauer-Drosselungs-Faktors reagierend auf eine geschätzte verbleibende Lebensdauer der Flash-Speichervorrichtung. Zusätzlich wird ein Durchsatz-Drosselungs-Faktor reagierend auf einen geschätzten maximalen Durchsatz der Flash-Speichervorrichtung berechnet, nebst einem maximalen Drosselungs-Faktor reagierend auf den Lebensdauer-Drosselungs-Faktor und den Durchsatz-Drosselungs-Faktor. Es wird bestimmt, ob der Drosselungs-Faktor einen Schwellenwert überschreitet. Als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert überschreitet, wird mindestens eine Datengrößen-Drosselung, Prefetch-Fenstergrößen-Drosselung und Nutzungs-Drosselung durchgeführt. Daten werden mindestens auf eine Flash-Speichervorrichtung und die zweite Speichervorrichtung als Reaktion auf die Drosselung geschrieben.
  • Nach einer weiteren Ausführungsform der Erfindung umfasst die Flash-Speichervorrichtung einen Cache-Speicher und die zweite Speichervorrichtung umfasst ein Festplattenlaufwerk.
  • Eine weitere Ausführungsform ist ein Computerprogrammprodukt, dass ein computerlesbares Speichermedium mit darin enthaltenem computerlesbaren Programmcode umfasst. Der computerlesbare Programmcode umfasst einen computerlesbaren Programmcode, der zur Drosselung von Zugriffen auf eine Flash-Speichervorrichtung ausgebildet ist. Die Flash-Speichervorrichtung ist Teil eines Speichersystems, das die Flash-Speichervorrichtung und eine zweite Speichervorrichtung umfasst. Die Drosselung wird durch die Logik außerhalb der Flash-Speichervorrichtung durchgeführt. Die Drosselung umfasst das Berechnen eines Lebensdauer-Drosselungs-Faktors reagierend auf eine geschätzte verbleibende Lebensdauer der Flash-Speichervorrichtung. Ein Durchsatz-Drosselungs-Faktor reagierend auf einen geschätzten maximalen Durchsatz der Flash-Speichervorrichtung wird ebenfalls berechnet, nebst einem maximalen Drosselungs-Faktor reagierend auf den Lebensdauer-Drosselungs-Faktor und den Durchsatz-Drosselungs-Faktor. Es wird bestimmt, ob der Drosselungs-Faktor einen Schwellenwert überschreitet. Als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert überschreitet, wird mindestens eine Datengrößen-Drosselung, Prefetch-Fenstergrößen-Drosselung und Nutzungs-Drosselung durchgeführt. Daten werden mindestens auf eine Flash-Speichervorrichtung und die zweite Speichervorrichtung als Reaktion auf die Drosselung geschrieben.
  • Nach einer weiteren Ausführungsform der Erfindung ist die Durchführung der Datengrößen-Drosselung reagierend auf den maximalen Drosselungs-Faktor und eine Größe der Daten, die Durchführung der Datengrößen-Drosselung leitet das Schreiben der Daten auf die zweite Speichervorrichtung, wenn die Größe der Daten eine ausgewählte Größe überschreitet, wobei die Durchführung der Datengrößen-Drosselung das Berechnen einer ausgewählten Größe reagierend auf den maximalen Drosselungs-Faktor umfasst. Die Durchführung der Prefetch-Fenstergrößen-Drosselung ist reagierend auf den maximalen Drosselungs-Faktor und das Einstellen einer Größe eines Prefetch-Fensters, wenn die Daten auf die Flash-Speichervorrichtung geschrieben werden. Die Durchführung der Nutzungs-Drosselung umfasst das Durchführen einer zufälligen Auswahl von einem Teil der empfangenen Daten, um auf die Flash-Speichervorrichtung geschrieben zu werden, der Teil, der auf den maximalen Drosselungs-Faktor reagiert.
  • Zusätzliche Merkmale und Vorteile werden durch die Verfahren der vorliegenden Erfindung realisiert. Andere Ausführungsformen und Aspekte der Erfindung werden hierin im Detail beschrieben und werden als Teil der beanspruchten Erfindung angesehen. Für ein besseres Verständnis der Erfindung mit den Vorteilen und Merkmalen wird auf die Beschreibung und die Zeichnungen Bezug genommen.
  • Kurze Beschreibung der verschiedenen Ansichten der Zeichnungen
  • Der Gegenstand, der als die Erfindung betrachtet wird, wird besonders hervorgehoben und deutlich in den Ansprüchen am Ende der Beschreibung beansprucht. Die vorstehenden und anderen Merkmale und Vorteile der Erfindung sind aus der folgenden detaillierten Beschreibung in Verbindung mit den beigefügten Zeichnungen ersichtlich, in denen:
  • 1 ein Blockdiagramm eines Systems zum Bereitstellen eines Flash-Cache-Speichers in Übereinstimmung mit einer Ausführungsform darstellt;
  • 2 ein Prozessablauf ist zur Drosselung einer Rate, bei der Daten auf einen Flash-Cache-Speicher in Übereinstimmung mit einer Ausführungsform geschrieben werden;
  • 3 ein Prozessablauf ist zur Drosselung einer Rate, bei der Daten auf einen Flash-Cache-Speicher basierend auf einer Datengrößen in Übereinstimmung mit einer Ausführungsform geschrieben werden;
  • 4 ein Prozessablauf ist zur Drosselung einer Rate, bei der Daten auf einen Flash-Cache-Speicher basierend auf einer Prefetch-Fenstergröße in Übereinstimmung mit einer Ausführungsform geschrieben werden;
  • 5 ein Prozessablauf ist zur Drosselung einer Rate, bei der Daten auf einen Flash-Cache-Speicher basierend auf einer Datennutzung in Übereinstimmung mit einer Ausführungsform geschrieben werden.
  • Detaillierte Beschreibung der Erfindung
  • Eine Ausführungsform verwendet Flash-Speicher als Cache zweiter Ebene zwischen einem dynamischen Direktzugriffsspeicher(DRAM)-Cache und Festplattenlaufwerk (HDD) Speicher. Zugriff auf den Flash-Cache-Speicher wird kontrolliert und gedrosselt durch eine Logik, die sich in einem Speicher-Controller befindet. Der Zugriff auf den Flash-Cache-Speicher wird basierend auf Eigenschaften der Daten, die gespeichert werden (z. B. ob die Datenzugriffe sequentiell oder zufällig sind, die Größe der Daten) gedrosselt. in einer Ausführungsform ist der Zugriff auf den Flash-Speicher-Cache vollständig überbrückt, wenn bestimmte Daten-Merkmale erkannt werden. Durch die Drosselung der Daten in der Speicher-Controller-Ebene basierend auf den Daten-Merkmalen, kann eine Flash-Vorrichtung als Cache zweiter Ebene verwendet werden, bei gleichzeitiger Gewährleistung, dass eine angegebe Lebensdauer der Flash-Vorrichtung erhalten bleibt.
  • In einer Ausführungsform, wie beispielsweise in 1 dargestellt, wird ein Flash-Cache-Speicher 106 als Cache zweiter Ebene zwischen einem DRAM-Cache-Speicher 104 und Plattenlaufwerken 108 verwendet. Die Logik, die im Speicher-Controller angeordnet ist, wird verwendet, um festzulegen, wo Daten gespeichert werden (z. B. auf den Flash-Cache-Speicher 106, auf den DRAM-Cache-Speicher 104 und/oder auf das Plattenlaufwerk 108) und um die Anordnung von Daten, die zuvor gespeichert wurden, zu verfolgen. Der Flash-Cache-Speicher 106 kann als Lese-Cache und/oder als Schreib-Cache verwendet werden. Wenn er als Lose-Cache verwendet wird, wird der Flash-Cache-Speicher 106 mit Daten zu der Zeit aufgefüllt, bei der Daten von Plattenlaufwerken 108 zum DRAM-Cache-Speicher 104 zurückkehren und/oder zu einem späteren Zeitpunkt, wenn der DRAM-Cache-Speicher 104 unmodifizierte Daten auswirft. Für modifizierte Daten hat der DRAM-Cache-Speicher 104 (z. B. bei Verwendung als Schreib-Cache) die Möglichkeit des Rückspeicherns der Daten in den Flash-Cache-Speicher 106 und nicht in die Plattenlaufwerke 108. Wenn er in dieser Weise verwendet wird, zusätzlich zur Absorption der Überschreibungen, sammelt ein Flash-Cache-Speicher 106 (z. B bei Verwendung als Schreib-Cache) eine große Anzahl von Schreibvorgängen, die später in effizienter Weise auf die Plattenlaufwerke 108 sortiert und rückgespeichert werden können.
  • In der Ausführungsform des in 1 gezeigten Systems, fließen die Daten durch den DRAM-Cache-Speicher 104 und die Verwendung des Flash-Cache-Speicher 106 ist optional. Dies ermöglicht der Logik in dem Speicher-Controller 102 die Menge und die Art der Daten, die auf den Flash-Cache-Speicher 106 gesendet werden, zu drosseln.
  • Eine Flash-Vorrichtung ist ein Beispiel einer Speichervorrichtung mit begrenzter Lebensdauer die von beispielhaften Ausführungsformen, hierin beschrieben, ausgeführt werden kann. Andere begrenzte Speichervorrichtungen mit begrenzter Lebensdauer wie zum Beispiel, aber nicht darauf beschränkt: Phasenänderungsspeicher (PCM) und andere Speicherklassen-Speicher (SCM) können auch durch beispielhafte Ausführungsformen ausgeführt werden.
  • Traditionelle DRAM-basierte Caching-Algorithmen sind in erster Linie mit Maximierung der Trefferquote (oder Minimierung des Fehlschläge-Verhältnis) des Cache befasst, um so die Anzahl der Verweise auf die zugrunde liegenden Festplatten zu reduzieren. Der LRU(least recently used)-Algorithmus nutzt zum Beispiel zeitliche Lokalität in der Arbeitsbelastung aus, um die ältesten unreferenzierten Daten-Abschnitte zuerst auszuwerfen. Der LRU-Algorithmus wurde erfolgreich eingesetzt, um die Anzahl der Fehlschläge sowohl für Lese- als auch Schreibvorgänge zu reduzieren. Ebenso ist Prefetching der Daten eine andere Technik, um die Trefferquote für Lesevorgänge zu verbessern durch Ausnutzung räumlicher Lokalität in der Arbeitsbelastung.
  • Die Fokussierung allein auf Treffer und Fehlschläge ist jedoch möglicherweise nicht optimal für Flash-basierende Caches. Insbesondere im Gegensatz zu DRAM, wo Haltbarkeit kein Problem ist, erlauben Flash-Speicher nur eine begrenzte Anzahl von Schreibvorgängen, bevor sie abnutzen und unbrauchbar werden. Blinde Fokussierung auf Metriken der Treffer und Fehlschläge kann daher zu exzessivem und unkontrolliertem Verschleiß führen, wodurch die Lebensdauer eines Flash-Cache kurz und unberechenbar wird. Diese Verkürzung der Lebensdauer und Unvorhersehbarkeit kann unakzeptabel für viele Arten von Implementierungen sein.
  • Mehrstufige Speicherzellen (MLC) Flash-Vorrichtungen werden, zum Beispiel, derzeit für etwa fünftausend Verschließ-Zyklen ausgelegt, und es würde nur ein paar Monate dauern, solche Vorrichtungen abnutzen, wenn sie als Cache ohne Drosselung verwendet werden. Um Servicekosten niedrig zu halten, wäre es wünschenswert, dass ein Cache für jedes Speichersystem eine Lebensdauer von ein paar Jahren hat und idealerweise gewährleistet, die Lebensdauer unabhängig von der Belastung zu erreichen. Ein Ansatz, um das oben genannte Problem anzugehen ist, die Flash-Vorrichtung langsamer zu betreiben, damit sie das Ende ihrer Lebensdauer erreicht. Dies verlängert die Lebensdauer der Flash-Vorrichtung, aber zur gleichen Zeit vernichtet es deren Hauptzweck, als Cache zu fungieren, um die Leistung des Systems zu verbessern. Die Gegenwart einer langsamen Flash-Vorrichtung, die als Cache verwendet wird, kann in der Tat die Gesamtleistung des Systems senken. Hierin beschriebene Ausführungsformen verwenden Techniken, die Situationen vermeiden, wo der Flash-Cache zu einem Leistungs-Engpass wird, während zur gleichen Zeit eine minimale akzeptable Lebensdauer garantiert wird.
  • Hierin beschriebene Ausführungsformen verwenden Drosselungs-Techniken, die die Menge der Eingänge/Ausgänge (I/O) des Flash-Cache-Speichers 106 steuern, um unter der Durchsatz-Kapazität der Flash-Vorrichtung und dem Netzwerk, das mit dem Flash-Cache-Speicher 106 mit dem DRAM-Cache-Speicher 104 verbunden ist, zu bleiben. Dies erlaubt der Flash-Vorrichtung, ein minimale garantierte Lebensdauer zu erreichen. Die Durchsatz-Kapazität der Flash-Vorrichtung und des Netzwerks kann empirisch bestimmt werden. Dies ermöglicht einem Flash-Controller-Modul (FCM) eines Flash-Cache-Speichers 106 (in einer Ausführungsform, in der Speicher-Controller-Einheit 102 angeordnet), zu einem bestimmten Zeitpunkt, den Anteil dieser Kapazität, p, die gerade verwendet wird, zu berechnen. Dieser Prozentsatz wird verwendet, um einen Durchsatz-Drosselungs-Faktor (TTF) zu berechnen, der von einer Ausführungsform verwendet wird, um den Flash-Cache-Speicher 106 vor einem Leistungs-Engpass zu bewahren.
  • Die verbleibende Lebensdauer der Flash-Vorrichtung kann auf vielfältigen Wegen bestimmt werden. Eine Möglichkeit ist es, die eingebaute Verschleißanzeige, die einige Hersteller für ihre Flash-Vorrichtungen bereitstellen, zu verwenden. Eine einfache Verschleißanzeige ist ein Nur-Lese-Zähler, der Werte im Bereich von eins bis einhundert annimmt, wobei ein Wert von eins zeigt, das überhaupt kein Verschleiß vorliegt, und ein Wert einhundert bedeutet, dass das Gerät seine maximale Anzahl an Schreibvorgängen erreicht hat. In Abwesenheit einer solchen Anzeige, kann der FCM den Verschleiß selbst abschätzen, indem die Schreibvorgänge der Flash-Vorrichtung verfolgt werden. In jedem Fall kann die verbleibende Lebensdauer der Flash-Vorrichtung berechnet werden. Der Unterschied zwischen der berechneten verbleibenden Lebensdauer, c, und der gewünschten restlichen Lebensdauer, d, bildet die Grundlage für einen zweiten Drosselungs-Faktor, der von einer Ausführungsform verwendet, hierin als Lebensdauer-Drosselungs-Faktor (LTF) bezeichnet. Der LTF wird verwendet, um die Flash-Vorrichtung vor dem Erreichen des Endes ihrer Lebensdauer, früher als erwartet, zu schützen.
  • Der Einfachheit halber nehmen in einer Ausführungsform beide Drosselungs-Faktoren (TTF und LTF) Werte von –∞ bis 1 an. Für beide Faktoren zeigt ein negativer Wert, dass keine Drosselung erforderlich ist und das Daten unbehindert an den Flash-Cache-Speicher 106 gesendet werden können. Ein Wert von 1 zeigt, dass vollständige Drosselung erforderlich ist und das keine Daten an den Flash-Cache-Speicher 106 gesendet werden sollen. Ein Wert zwischen 0 und 1 zeigt, dass etwas Drosselung nötig ist, um an den Flash-Cache-Speicher 106 angelegt zu werden, abhängig von den spezifischen Werten der Drosselungs-Faktoren.
  • In einer Ausführungsform wird für den TTF ein Schwellenwert von 90% der Durchsatz-Kapazität über der Drosselung angewendet wird ausgewählt. Dies wird wie folgt definiert: TTF = (p – 90)/(100 – 90). Ebenso wird für den LTF ein Schwellenwert von 10% über der gewünschten verbleibenden Lebensdauer gewählt, und für Werte unterhalb dieses Schwellenwerts wird Drosselung angewendet. Dies wird wie folgt definiert: LTF = (1,1d – c)/1,1d. Jeder Schwellenwert kann durch eine Ausführungsform ausgeführt werden, und die Schwellenwerte können programmierbar sein basierend auf der Ausführung der spezifischen Anforderungen. In einer anderen Ausführungsform werden diese Schwellenwerte konservativer für einen Schreib-Cache als für einen Nur-Lese-Cache gewählt, da in einem Nur-Lese-Cache die Daten durch die Kopie auf dem Festplattenlaufwerk geschützt sind, und die Ausführung kann näher an dem Lebensende der Flash-Vorrichtung ohne Risiko eines Datenverlustes betrieben werden. In einer anderen Ausführungsform, wo ein gemischter Lese/Schreib-Cache ausgeführt wird, wird, bis die höheren Drosselungs-Faktoren erreicht werden, der Flash-Cache-Speicher 106 dynamisch in einen Lose- und Schreib-Abschnitt aufgeteilt, und schnellerer Verschleiß ist in dem Lese-Abschnitt eher zulässig als in dem Schreib-Abschnitt. Diese Ausführungsform nutzt den Vorteil der Tatsache, dass Datenträger-Fehler im Leseabschnitt das erwartete Verhalten in dem Schreib-Abschnitt voraussagen werden und ermöglichen eine Vorankündigung des Lebensendes der Vorrichtung.
  • 2 ist ein allgemeiner Prozessablauf zur Drosselung einer Rate, bei der Daten auf einen Flash-Cache-Speicher 106 in Übereinstimmung mit einer Ausführungsform geschrieben werden. in einer Ausführungsform wird der Prozessablauf von der Logik in dem Speicher-Controller 102 ausgeführt.
  • In Abschnitt 202 wird der TTF, der LTF und das Maximum (TTF, LTF) berechnet. in Abschnitt 204 wird bestimmt, ob das Maximum (TTF, LTF) größer ist als ein spezifischer Schwellenwert. Wenn das Maximum (TTF, LTF) nicht über dem festgelegten Schwellenwert liegt, wird der Prozess zu 204 zurückgeschleift, weil Drosselung nicht erforderlich ist. Wenn in Abschnitt 204 bestimmt wird, dass das Maximum (TTF, LTF) über dem festgelegten Schwellenwert ist, dann wird Abschnitt 206 durchgeführt. in Abschnitt 206 wird Datengrößen-Drosselung durchgeführt, um die Menge an Daten, die in dem Flash-Cache-Speicher 106 gespeichert sind, zu beschränken, basierend auf der Größe der Daten und dem Maximum (TTF, LTF). Eine Ausführungsform des Datengrößen-Drosselungs-Prozesses ist in 3 gezeigt. In einer Ausführungsform wird der Datengrößen-Drosselungs-Prozess in Abschnitt 206 für eine festgelegte Anzahl an Wiederholungen und/oder für eine festgelegte Zeitdauer durchgeführt. Dann wird Abschnitt 208 durchgeführt und TTF, LTF und Maximum (TTF, LTF) werden neu berechnet. in Abschnitt 210 wird bestimmt, ob die Datengrößen-Drosselung eine ausreichende Drosselung erbringt durch Vergleichen des Maximum (TTF, LTF) mit einem festgelegten Schwellenwert. Wenn das Maximum (TTF, LTF) nicht über einem festgelegten Schwellenwert ist, dann wird die Verarbeitung in Abschnitt 204 fortgesetzt.
  • Wenn in Abschnitt 210 bestimmt wird, dass das Maximum (TTF, LTF) über dem festgelegten Schwellenwert ist, dann wird die Verarbeitung in Abschnitt 212 fortgesetzt, wo Prefetch-Fenstergrößen-Drosselung durchgeführt wird. Eine Ausführungsform des Prefetch-Fenstergrößen-Drosselung-Prozesses ist in 4 gezeigt. In einer Ausführungsform wird der Prefetch-Fenstergrößen-Drosselungs-Prozess in Abschnitt 212 für eine festgelegte Anzahl an Wiederholungen und/oder für eine festgelegte Zeitdauer durchgeführt. Dann wird Abschnitt 214 durchgeführt und TTF, LTF und Maximum (TTF, LTF) werden neu berechnet. In Abschnitt 216 wird bestimmt, ob die Prefetch-Fenstergrößen-Drosselung eine ausreichende Drosselung erbringt durch Vergleichen des Maximum (TTF, LTF) mit einem festgelegten Schwellenwert. Wenn das Maximum (TTF, LTF) nicht über einem festgelegten Schwellenwert ist, dann wird die Verarbeitung in Abschnitt 204 fortgesetzt. In einer anderen Ausführungsform wird die Verarbeitung in Abschnitt 212 fortgesetzt und der Prozess wird für eine festgelegte Anzahl an Wiederholungen und/oder für eine festgelegte Zeitdauer zu 212 zurückgeschleift bevor zu Abschnitt 204 zurückgeschleift wird.
  • Wenn in Abschnitt 216 bestimmt wird, dass das Maximum (TTF, LTF) über dem festgelegten Schwellenwert ist, dann wird die Verarbeitung in Abschnitt 218 fortgesetzt, wo Nutzungs-Drosselung durchgeführt wird. Eine Ausführungsform des Nutzungs-Drosselung-Prozesses ist in 5 gezeigt. Eine Nutzungs-Drosselung übernimmt das Szenario, in dem die Werte des TTF, oder des LTF, oder beide, schnell und unproportional wachsen auch unter sich gut verhaltenen Arbeitsbelastungen. Dies kann durch bestimmte physikalische Eigenschaften der Flash-Vorrichtung aufgehalten werden, die nicht im Voraus absehbar sind, und kann zu einem Szenario führen, in dem der Flash-Cache-Speicher 106 einen momentanen Engpass erreicht und/oder sein Lebensende viel früher als erwartet erreicht. Unter solchen Bedingungen kann es möglicherweise nicht ausreichen, die Flash-Prefetch-Fenstergröße auf 0 zu setzen (was bedeutet, dass nur die ursprünglich angeforderten Daten in den Flash-Cache-Speicher 106 gesendet werden).
  • In einer Ausführungsform wird der Nutzungs-Drosselungs-Prozess in Abschnitt 218 für eine festgelegte Anzahl an Wiederholungen und/oder für eine festgelegte Zeitdauer durchgeführt. Dann wird Abschnitt 220 durchgeführt und TTF, LTF und Maximum (TTF, LTF) werden neu berechnet. In Abschnitt 222 wird bestimmt, ob die Nutzungs-Drosselung eine ausreichende Drosselung erbringt durch Vergleichen des Maximum (TTF, LTF) mit einem festgelegten Schwellenwert. Wenn das Maximum (TTF, LTF) nicht über einem festgelegten Schwellenwert ist, dann wird die Verarbeitung in Abschnitt 204 fortgesetzt. In einer anderen Ausführungsform wird die Verarbeitung in Abschnitt 212 (oder Abschnitt 218) fortgesetzt und der Prozess wird für eine festgelegte Anzahl an Wiederholungen und/oder für eine festgelegte Zeitdauer zu 212 zurückgeschleift bevor zu Abschnitt 204 zurückgeschleift wird. Wenn das Maximum (TTF, LTF) über einem festgelegten Schwellenwert ist, dann wird Abschnitt 224 durchgeführt und die Anwendung des Flash-Cache-Speichers 160 wird gestoppt. Das System fährt fort unter Verwendung des DRAM-Cache-Speichers 104 zusammen mit seinen Standard-Caching-Algorithmen, wobei ausschließlich mit dem Festplattenlaufwerk 108 und unter Umgehung des Flash-Cache-Speichers 106 kommuniziert wird.
  • In einer Ausführungsform wird nach einer festgelegten Anzahl an Wiederholungen und/oder für einer festgelegten Zeitdauer die Verarbeitung von Abschnitt 224 zu Abschnitt 202 fortgesetzt, um zu sehen, ob der Flash-Cache-Speicher 106 für eine aktuelle Arbeitsbelastung verwendet werden kann. In einer Ausführungsform werden die in 2 gezeigten Drosselungs-Prozesse in einer anderen Reihenfolge ausgeführt. In einer anderen Ausführungsform wird der Maxfactor mit unterschiedlichen Werte verglichen. In einer weiteren Ausführungsform wird eine Teilmenge der in 2 gezeigten Drosselungs-Prozesse durchgeführt. In noch einer weiteren Ausführungsform werden zusätzliche oder andere Drosselungs-Prozesse als die in 2 gezeigten durchgeführt. Zum Beispiel könnten bestimmte Arbeitsbelastungen oder Inhalte vorzugsweise gedrosselt werden, oder ein paar Hinweise aus den Anwendungen könnten in der Entscheidung, welche Daten wichtig sind, um an den Flash gesendet zu werden und was gedrosselt werden kann, verwendet werden.
  • 3 ist ein Prozessablauf zur Drosselung einer Rate, bei der Daten auf einen Flash-Cache-Speicher basierend auf einer Datengrößen in Übereinstimmung mit einer Ausführungsform geschrieben werden. In einer Ausführungsform wird der Prozessablauf von der Logik in dem Speicher-Controller 102 ausgeführt.
  • Der in 3 dargestellte Prozessablauf vermeidet die Verschmutzung des Flash-Cache-Speicher 106 mit großen Datenabschnitten ausgehend von sequentiellen Lese- oder Schreibvorgängen. In einer Ausführungsform werden diese großen Datenabschnitte direkt von dem DRAM-Cache-Speicher 104 an die Festplattenlaufwerke 108 übermittelt. Nicht-Schreiben der sequenziellen Arbeitsbelastungen in den Flash-Cache-Speicher 106 ist aus mehreren Gründen vorteilhaft. Erstens haben sequentielle Arbeitsbelastungen wenig Lokalität und daher nicht die Vorteile des Cache. Darüber hinaus ist die sequentielle Leistung von herkömmlichen Festplattenlaufwerken vergleichbar mit den Flash-Vorrichtungen und es ist unwahrscheinlich, dass sie durch Caching verbessert wird und kann sich möglicherweise noch verschlimmern. Ferner können sequenzielle Arbeitsbelastungen mehr Abnutzung der Flash-Vorrichtungen verursachen.
  • In der Ausführungsform gemäß 3 wird Drosselung durchgeführt und ein Schwellenwert der Größe ist eingestellt. Datengrößen unterhalb des Schwellenwerts werden von dem DRAM-Cache-Speicher 104 an den Flash-Cache-Speicher 106 gesendet, und Datengrößen oberhalb des Schwellenwerts werden direkt an die Festplattenlaufwerke 108 gesendet. Der Schwellenwert kann statisch oder dynamisch sein oder basierend auf den Drosselungs-Faktoren wie in der in 3 gezeigten Ausführungsform.
  • Bezugnehmend auf 3 wird in Abschnitt 302 der Maximalwert des TTF und des LTF der Variablen ”Maxfactor” zugewiesen. In einer Ausführungsform wird der Prozessablauf in 3 aus dem gesamten in 2 gezeigten Prozessablauf ausgewählt, wo der TTF und der LTF berechnet worden sind. In einer anderen Ausführungsform umfasst einen Teil der Verarbeitung in Abschnitt 302 die Berechnung des TTF und des LTF. In Abschnitt 304 wird bestimmt, ob der Maxfactor kleiner als 0 ist. Wenn der Maxfactor kleiner als 0 ist, fährt die Verarbeitung in Abschnitt 306 fort, in dem die maximale Datengröße auf unendlich eingestellt ist (d. h., alle Daten werden auf den Flash-Cache-Speicher 106 gesendet). Wenn in Abschnitt 304 bestimmt wird, dass der Maxfactor nicht weniger als Null ist, fährt die Verarbeitung in Abschnitt 308 fort, um zu bestimmen, ob der Maxfactor weniger als 0,2 ist. Wenn der Maxfactor weniger als 0,2 ist, fährt die Verarbeitung in Abschnitt 310 fort, wo die maximale Datengröße auf 256 Kilobyte (KB) eingestellt ist. Es werden also nur Daten, die kleiner als 256 KB sind auf den Flash-Cache-Speicher 106 aus dem DRAM-Cache-Speicher 104 gesendet, und die Daten, die größer als 256 KB sind, werden aus dem DRAM-Cache-Speicher 104 an die Festplattenlaufwerke 108 gesendet. Wenn in Abschnitt 308 bestimmt wird, dass der Maxfactor weniger als 0,2 ist, fährt die Verarbeitung in Abschnitt 312 fort, um zu bestimmen, ob der Maxfactor weniger als 0,4 ist.
  • Die Verarbeitung fährt in Abschnitt 314 fort, wenn der Maxfactor weniger als 0,4 ist um den Zugriff auf den Flash-Cache-Speicher 106 für Datengrößen über 128 KB zu verhindern und in Abschnitt 316, wenn der Maxfactor nicht weniger als 0,4 ist. In Abschnitt 316 wird bestimmt, ob der Maxfactor kleiner als 0,6 ist. Die Verarbeitung fährt in Abschnitt 318 fort, wenn der Maxfactor weniger als 0,6 ist um den Zugriff auf den Flash-Cache-Speicher 106 für Datengrößen über 64 KB zu verhindern und in Abschnitt 320, wenn der Maxfactor nicht weniger als 0,6 ist. In Abschnitt 320 wird bestimmt, ob der Maxfactor kleiner als 0,8 ist. Die Verarbeitung fährt in Abschnitt 322 fort, wenn der Maxfactor weniger als 0,8 ist um den Zugriff auf den Flash-Cache-Speicher 106 für Datengrößen über 16 KB zu verhindern und in Abschnitt 324, wenn der Maxfactor nicht weniger als 0,8 ist. In Abschnitt 324 wird bestimmt, ob der Maxfactor kleiner als 0,95 ist. Die Verarbeitung fährt in Abschnitt 326 fort, wenn der Maxfactor weniger als 0,95 ist um den Zugriff auf den Flash-Cache-Speicher 106 für Datengrößen über 4 KB zu verhindern und in Abschnitt 328, wenn der Maxfactor nicht weniger als 0,95 ist. In Abschnitt 328 werden alle Daten am Schreiben auf den Flash-Cache-Speicher gehindert. So wird der gesamte Speicher direkt aus dem DRAM-Cache-Speicher 104 auf die Festplattenlaufwerke 108 geschrieben.
  • Andere Ausführungsformen, bei denen Zugriffe auf den Flash-Cache-Speicher 106 basierend auf Datengröße gedrosselt werden, haben unterschiedliche maximale Datengrößen-Werte entsprechend den gleichen Maxfactor-Werten, unterschiedliche Maxfactor-Werte entsprechend den unterschiedlichen maximalen Datengrößen-Werten, weniger Maxfactor-Werte oder mehr Maxfactor-Werte. In einer anderen Ausführungsform wird die in 3 dargestellte Verarbeitung nach den Abschnitten 306, 310, 314, 318, 322, 326 und 328 zu Abschnitt 302 zurückgeschleift, um den TTF, den LTF und den Maxfactor für jeden Datenzugriff neu zu berechnen. In einer weiteren Ausführungsform werden der TTF, LTF und Maxfactor auf einer periodischen Basis oder als Reaktion auf einen detektierten Zustand, die möglicherweise Auswirkungen auf die Faktoren (z. B. eine bestimmte Anzahl von Zugriffen auf den Flash-Cache-Speicher 106) haben, neu berechnet.
  • In einer anderen Ausführungsform ist der kleinste Wert der maximalen Datengröße größer als Null. In einer weiteren Ausführungsform werden die obigen Drosselungs-Schwellenwerte (Maxfactor und maximale Datengrößen) unterschiedlich für Daten, die geschrieben (modifiziert) werden gegenüber den Daten, die gelesen (nicht modifiziert) werden, ausgewählt. Es kann vorteilhaft sein, die nicht modifizierten Daten zuerst oder aggressiver als die modifizierten Daten zu drosseln, da die Drosselung der modifizierten Daten einen direkten negativen Einfluss auf die Gesamtleistung hat.
  • 4 ist ein Prozessablauf zur Drosselung einer Rate, bei der Daten auf einen Flash-Cache-Speicher basierend auf einer Prefetch-Fenstergröße in Übereinstimmung mit einer Ausführungsform geschrieben werden. In einer Ausführungsform wird der Prozessablauf von der Logik in dem Speicher-Controller 102 ausgeführt.
  • Der in 4 dargestellte Prozess in 4 begrenzt die Menge des Prefetchings, das von gespeicherten Daten auf dem Flash-Cache-Speicher 106 auf zufälligen Lasevorgangen durchgeführt wird. In einer Ausführungsform wartet Prefetching auf einen Lese-Fehltreffer, um zu erfolgen, und ruft dann den Cache ab, zusätzlich zu den angeforderten Datenabschnitten, eine oder mehrere zusätzliche Abschnitte, die räumlich benachbart zu dem angeforderten Block sind. Die Anzahl von zusätzlichen Abschnitten (oder die Größe der zusätzlichen Abschnitte) wird hier als das Prefetch-Fenster bezeichnet. In einer anderen Ausführungsform wird eine variable Abschnittsgröße verwendet (mit einer Größe gleich der Prefetch-Fenstergröße), mit größeren Cache-Abschnitten als ursprünglich aus dem abgerufenen Cache angefordert.
  • In einer Ausführungsform des hierin beschriebenen Flash-Cache, werden Daten in dem DRAM-Cache-Speicher 104 zuerst abgerufen, und dann werden die Daten von dem DRAM-Cache-Speicher 104 auf den Flash-Cache-Speicher 106 gesendet. In dem in 4 dargestellten Prozessablauf wird die Menge der vorabgerufenen Daten, die auf den Flash-Cache-Speicher 106 gesendet werden gedrosselt. In der Ausführunsgform gemäß 4, wird diese durch Entkopplung der Größe des DRAM-Cache-Speicher Prefetch-Fensters (oder Prefetch-Abschnittsgröße) von dem Flash-Cache-Speicher Prefetch-Fenster (oder Prefetch-Abschnittsgröße) durchgeführt.
  • Bezugnehmend auf 4 wird in Abschnitt 402 der Maximalwert des TTF und des LTF der Variablen ”Maxfactor” zugewiesen. In einer Ausführungsform wird der Prozessablauf in 4 aus dem gesamten in 2 gezeigten Prozessablauf ausgewählt, wo der TTF und der LTF berechnet worden sind. In einer anderen Ausführungsform umfasst ein Teil der Verarbeitung in Abschnitt 402 die Berechnung des TTF und des LTF. In Abschnitt 404 wird bestimmt, ob der Maxfactor kleiner als 0 ist. Wenn der Maxfactor kleiner als 0 ist, fährt die Verarbeitung in Abschnitt 406 fort, in dem die Flash-Cache-Speicher Prefetch-Fenstergröße auf die DRAM-Flash-Cache-Speicher Prefetch-Fenstergröße eingestellt ist. Somit wird keine Drosselung basierend auf der Prefetch-Fenstergröße durchgeführt.
  • Wenn der Maxfactor kleiner als 0 ist, fährt die Verarbeitung in Abschnitt 408 fort, wobei bestimmt wird, ob der Maxfactor kleiner als 0,95 ist. Wenn der Maxfactor kleiner als 0,95 ist, fährt die Verarbeitung in Abschnitt 410 fort, wo die Flash-Cache-Speicher Prefetch-Fenstergröße auf 0 eingestellt ist. Somit werden keine Daten für den Flash-Cache-Speicher 106 vorabgerufen. Wenn der Maxfactor kleiner als 0 ist, fährt die Verarbeitung in Abschnitt 412 fort, in dem die Flash-Cache-Speicher Prefetch-Fenstergröße eingestellt ist, dass sie gleich (DRAM-Cache-Speicher Prefetch-Fenstergröße) ist, multipliziert mit (0,95 – Maxfactor). Somit variiert die Prefetch-Fenstergröße in Abhängigkeit vom Wert des Maxfactors.
  • In anderen Ausführungsformen, in denen Zugriff auf den Flash-Cache-Speicher 106 auf der Grundlage einer Prefetch-Fenstergröße gedrosselt wird, wird ein anderer Maxfactor Schwellenwert benutzt, um Prefetches auf den Flash-Cache-Speicher 106 zu beschränken. In anderen Ausführungsformen wird ein Prozentsatz anders als 0,95 für die Berechnung in Abschnitt 412 verwendet. In einer anderen Ausführungsform wird die in 4 dargestellte Verarbeitung nach den Abschnitten 406, 410 und 412 zu Abschnitt 402 zurückgeschleift, um den TTF, den LTF und den Maxfactor für jeden Datenzugriff neu zu berechnen. In einer weiteren Ausführungsform werden der TTF, LTF und Maxfactor auf einer periodischen Basis oder als Reaktion auf einen detektierten Zustand, die möglicherweise Auswirkungen auf die Faktoren (z. B. eine bestimmte Anzahl von Zugriffen auf den Flash-Cache-Speicher 106) haben, neu berechnet. In einer weiteren Ausführungsform werden die obigen Drosselungs-Schwellenwerte (Maxfactor und Flash-Prefetch-Fenstergröße) unterschiedlich für Daten, die geschrieben (modifiziert) werden gegenüber den Daten, die gelesen (nicht modifiziert) werden, ausgewählt.
  • 5 ist ein Prozessablauf zur Drosselung einer Rate, bei der Daten auf einen Flash-Cache-Speicher basierend auf einer Datennutzung in Übereinstimmung mit einer Ausführungsform geschrieben werden. In einer Ausführungsform wird die Nutzungs-Drosselung durchgeführt, indem zufällig eine Teilmenge der ursprünglich angeforderten Seiten, die sich im DRAM-Cache-Speicher 104 befinden, ausgewählt wird und nur die ausgewählte Teilmenge der ursprünglich angeforderten Seiten an den Flash-Cache-Speicher 106 gesendet wird. Die getroffene Auswahl kann unter Verwendung fester Wahrscheinlichkeiten durchgeführt werden (z. B. zufälliges Auswählen von 50% der Seiten, um auf den Flash-Cache-Speicher 106 gesendet zu werden) oder durch die Verwendung dynamischer Wahrscheinlichkeiten wie unten beschrieben. Es ist zu beachten, dass zufälliges Abwerfen unmodifizierter Daten nicht zu Inkonsistenz der Daten führt, da eine Kopie der Daten immer auf der Festplatte vorhanden ist. Bei modifizierten Daten können die Daten nicht einfach gelöscht werden, sondern werden einfach auf die Platten geschrieben, für den Fall, wenn die Drosselungs-Logik anzeigt, dass der Flash diese modifizierten Daten nicht akzeptieren kann. Darüber hinaus hat eine Ausführungsform, bei der Seiten probabilistisch ausgewählt werden, die zusätzliche Eigenschaft, dass Seiten, auf die mehrfach zugegriffen wird, schließlich an den Flash-Cache-Speicher 106 gegeben werden.
  • Bezugnehmend auf 5 wird in Abschnitt 502 der Maximalwert des TTF und des LTF der Variablen ”Maxfactor” zugewiesen. In einer Ausführungsform wird der Prozessablauf in 5 aus dem gesamten in 2 gezeigten Prozessablauf ausgewählt, wo der TTF und der LTF berechnet worden sind. In einer anderen Ausführungsform umfasst ein Teil der Verarbeitung in Abschnitt 502 die Berechnung des TTF und des LTF. In Abschnitt 504 werden ein Teil der Seiten, die vom Host gelesen werden, zufällig ausgewählt, um auf den Flash-Cache-Speicher 106 gesendet zu werden. In der Ausführungsform gemäß 5 variiert der Teil basierend auf dem aktuellen Wert des Maxfactor und ist gleich (1 – Maxfactor).
  • In anderen Ausführungsformen wird der Anteil auf einen anderen Wert, wie der absolute Werk (0,95 – Maxfactor) eingestellt. In anderen Ausführungsformen wird ein Teil für Daten, die geschrieben (modifiziert) werden, ausgewählt und ein anderer Teil wird für Daten, die gelesen (nicht modifiziert) werden, ausgewählt.
  • Die oben beschriebenen Ausführungsformen verwenden den maximalen Wert des TTF und des LTF (d. h., den Maxfactor), um die Menge der Drosselung zu bestimmen, die auf den Flash-Cache-Speicher 106 angewendet wird. In anderen Ausführungsformen wird nur der TTF verwendet, wird nur der LTF verwendet, oder ein anderer Faktor wird verwendet, um die Menge zu bestimmen, auf die Drosselung angewendet wird. In anderen Ausführungsformen wird eine Gruppe von einem oder mehreren Faktoren und Schwellenwerten für amen Drosselungs-Prozess (z. B. Datengrößen-Drosselung) verwendet und eine andere Gruppe von einem oder mehreren Faktoren und Schwellenwerte wird für eine weitere Drosselung verwendet (z. B. Nutzungs-Drosselung ). Die Gruppen können sich überlappen oder gegenseitig ausschließen. In ähnlicher Weise können verschiedene Gruppen von Faktoren und Schwellenwerte für Daten, die gelesen werden und Daten, die geschrieben werden, verwendet werden.
  • Technische Effekte und Vorteile umfassen die Möglichkeit, eine Flash-Vorrichtung für Cache-Speicher in einem Speichersystem zu verwenden, bei gleichzeitiger Unterstützung einer erwarteten nützlichen Lebensdauer der Flash-Vorrichtung und ohne dass die Flash-Vorrichtung einen Engpass in dem Speichersystem verursacht. Dies kann zu einer Erhöhung des Speichersystem-Durchsatzes führen.
  • Die im vorliegenden Dokument verwendete Terminologie dient ausschließlich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Einschränkung der Erfindung gedacht. Die im vorliegenden Dokument verwendeten Einzahlformen „ein/eine” und „der/die/das” schließen auch die Pluralformen ein, sofern dies im Kontext nicht ausdrücklich anderweitig angegeben ist. Es versteht sich des Weiteren, dass die Begriffe „umfasst” bzw. „umfassen” bei Verwendung in der vorliegenden Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Abläufe, Elemente, und/oder Komponenten davon bezeichnen, aber das Vorhandensein oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Abläufe, Elemente, Komponenten und/oder Gruppen davon nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Aktionen und Äquivalente aller Mittel oder Schritte plus Funktionselemente in den folgenden Ansprüchen schließen alle Strukturen, Materialien oder Aktionen zur Durchführung der Funktion in Verbindung mit anderen ausdrücklich beanspruchten Elementen ein. Die Beschreibung der vorliegenden Erfindung dient der Veranschaulichung und Beschreibung, ist jedoch nicht als erschöpfend oder einschränkend in Bezug auf die Erfindung in der beschriebenen Form gedacht. Für den Fachmann sind viele Abänderungen und Variationen denkbar, ohne dass dies eine Abweichung vom Geltungsbereich und Geist der Erfindung darstellt. Die Ausführungsform wurde ausgewählt und beschrieben, um die Prinzipien und praktische Anwendung der Erfindung auf bestmögliche Weise zu erklären und anderen Fachleuten das Verständnis für verschiedene Ausführungsformen mit verschiedenen Abänderungen für die betreffende betrachtete Verwendung zu ermöglichen.
  • Für einen Fachmann ist weiterhin klar ersichtlich, dass Aspekte der vorliegenden Erfindung in Form eines Systems, Verfahrens oder Computerprogrammprodukts ausgeführt sein können. Demzufolge können Aspekte der vorliegenden Erfindung die Form einer komplett in Hardware realisierten Ausführungsform, einer komplett in Software realisierten Ausführungsform (umfassend Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, in der Software- und Hardwareaspekte kombiniert sind, die im vorliegenden Dokument allgemein als „Schaltkreis”, „Modul” oder „System” bezeichnet werden. Ferner können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
  • Es können beliebige Kombinationen eines oder mehrerer computerlesbarer Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Zu computerlesbaren Speichermedien können beispielsweise und ohne Einschränkung ein elektronisches, magnetisches, optisches, elektromagnetisches, infrarotes oder Halbleiter-System, Gerät oder Vorrichtung oder beliebige geeignete Kombinationen des Vorstehenden gehören. Detaillierte Beispiele (eine nicht erschöpfende Liste) computerlesbarer Speichermedien umfassen unter anderem folgende: elektrische Verbindung mit einer oder mehreren Leitungen, portable Computerdiskette, Festplatte, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), Lichtwellenleiter, Nur-Lese-Speicher in Form einer portablen Compact Disc (CD-ROM), optische Speichervorrichtung, magnetische Speichervorrichtung oder beliebige geeignete Kombinationen des Vorstehenden. Im Kontext des vorliegenden Dokuments kann ein computerlesbares Speichermedium jedes belieblge greifbare Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einem Gerät oder einer Vorrichtung zur Befehlsausführung genutzt werden kann.
  • Ein computerlesbares Signalmedium kann ein im Basisband oder als Teil einer Trägerwelle übertragenes Datensignal mit darin verkörpertem computerlesbarem Programmcode sein. Ein derartiges übertragenes Signal kann eine beliebige Vielfalt von Formen annehmen, darunter und ohne Einschränkung eine elektromagnetische oder optische Form oder beliebige geeignete Kombinationen davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, bei dem es sich nicht um ein computerlesbares Speichermedium handelt und das ein Programm senden, übertragen oder transportieren kann, das von oder in Verbindung mit einem System, einem Gerät oder einer Vorrichtung zur Befehlsausführung genutzt werden kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums, darunter und ohne Einschränkung, drahtlose oder drahtgebundene Medien, Lichtwellenleiter, RF usw., oder beliebiger geeigneter Kombinationen des Vorstehenden übertragen werden.
  • Computerprogrammcode zur Ausführung von Operationen der vorliegenden Erfindung kann in einer oder mehrerer Programmiersprachen, einschließlich einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder Ähnlichem und einer herkömmlichen prozeduralen Programmiersprache wie z. B. in der Programmiersprache „C” oder in ähnlichen Programmiersprachen geschrieben sein. 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 entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN) verbunden sein, oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)).
  • Aspekte der vorliegenden Erfindung sind oben unter Bezugnahme auf Flussdiagramm-Darstellungen und/oder Blockdiagramme von Methoden, Geräten (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Abschnitt der Flussdiagramm-Darstellungen und/oder der Blockdiagramme und Kombinationen von Abschnitten in den Flussdiagramm-Darstellungen und/oder Blockdiagrammen durch Computerprogrammanweisungen realisiert werden kann. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderer programmierbarer Datenverarbeitungseinrichtungen, die eine Maschine darstellen, bereitgestellt werden, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel schaffen, um die in einem Abschnitt oder in den Abschnitten des Flussdiagramms und/oder des Blockdiagramms angegebenen Funktionen/Aktionen zu realisieren.
  • Die Computerprogrammanweisungen können auch in einem computerlesbaren Speicher gespeichert sein, der einen Computer oder andere programmierbare Datenverarbeitungsvorrichtungen anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Speicher gespeicherten Anweisungen ein Produkt erzeugen, das die Anweisungen enthält, die die in einem Abschnitt oder Abschnitten des Flussdiagramms und/oder des Blockdiagramms angegebene Funktion/Aktion realisiert.
  • Diese Computerprogrammanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsgeräte oder andere Vorrichtungen geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Geräten oder Vorrichtungen eine Reihe von Arbeitsschritten ausgeführt werden, um einen mittels Computer ausgeführten Prozess zu schaffen, mit dessen Hilfe die Anweisungen, die auf dem Computer oder auf anderen programmierbaren Vorrichtungen ausgeführt werden, Schritte zur Ausführung der in einem Abschnitt oder Abschnitten des Flussdiagramms und/oder des Blockdiagramms angegebenen Funktionen/Aktionen bereitstellen.
  • Die Flussdiagramme und Blockdiagramme in den Figuren veranschaulichen die Architektur, Funktionalität und Funktionsweise möglicher Ausführungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß den verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder einzelne Abschnitt im Flussdiagramm oder Blockdiagramm ein Modul, Segment oder einen Teil des Codes darstellen, der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktionen) umfasst. Außerdem ist anzumerken, dass bei einigen alternativen Ausführungsformen die im Abschnitt angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge ausgeführt werden können. Beispielsweise können zwei hintereinander aufgeführte Abschnitte tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Abschnitte können je nach der mit den Abschnitten verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder einzelne Abschnitt der dargestellten Blockdiagramme und/oder des dargestellten Flussdiagramms sowie Kombinationen von Abschnitten in den dargestellten Blockdiagrammen und/oder im dargestellten Flussdiagramm mithilfe von speziellen Systemen auf der Grundlage von Hardware zur Ausführung der angegebenen Funktionen bzw. Aktionen oder mithilfe von Kombinationen aus spezieller Hardware und Computeranweisungen realisiert werden kann.

Claims (15)

  1. Verfahren umfassend: Drosselung von Zugriffen auf eine Flash-Speichervorrichtung, die Teil eines Speichersystems ist, das die Flash-Speichervorrichtung und eine zweite Speichervorrichtung umfasst, wobei die Drosselung durch die Logik außerhalb der Flash-Speichervorrichtung durchgeführt wird, die Drosselung umfassend: Berechnen eines Drosselungs-Faktors reagierend auf eine geschätzte verbleibende Lebensdauer der Flash-Speichervorrichtung; Bestimmen, ob der Drosselungs-Faktor einen Schwellenwert überschreitet; Schreiben von Daten auf die Flash-Speichervorrichtung als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert nicht überschreitet, und Schreiben von Daten auf die zweite Speichervorrichtung als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert überschreitet.
  2. Verfahren nach Anspruch 1, wobei das Berechnen des Drosselungs-Faktors ferner reagierend auf eine Eigenschaft der Daten ist.
  3. Verfahren nach Anspruch 2, wobei die Eigenschaft eine Größe der Daten ist.
  4. Verfahren nach Anspruch 1, wobei das Berechnen des Drosselungs-Faktor ferner reagierend auf einen geschätzten maximalen Durchsatz der Flash-Speichervorrichtung ist.
  5. Verfahren nach Anspruch 1, wobei die Flash-Speichervorrichtung einen Cache-Speicher umfasst.
  6. Verfahren nach Anspruch 1, wobei die zweite Speichervorrichtung ein Festplattenlaufwerk ist.
  7. System umfassend: Speicher umfassend eine Flash-Speichervorrichtung und eine zweite Speichervorrichtung; und einen Speicher-Controller, der mit der Flash-Speichervorrichtung gekoppelt ist, der Speicher-Controller ist ausgebildet, um: einen Drosselungs-Faktor zu berechnen, reagierend auf eine geschätzte verbleibende Lebensdauer der Flash-Speichervorrichtung; zu bestimmen, ob der Drosselungs-Faktor einen Schwellenwert überschreitet; Daten auf die Flash-Speichervorrichtung zu schreiben, als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert nicht überschreitet, und Daten auf die zweite Speichervorrichtung zu schreiben, als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert überschreitet.
  8. System nach Anspruch 7, wobei die Berechnung des Drosselungs-Faktors ferner reagierend auf eine Eigenschaft der Daten ist.
  9. System nach Anspruch 7, wobei die Berechnung des Drosselungs-Faktor ferner reagierend auf einen geschätzten maximalen Durchsatz der Flash-Speichervorrichtung ist.
  10. Computerprogrammprodukt umfassend: ein computerlesbares Speichermedium mit darin enthaltenem computerlesbaren Programmcode, wobei der computerlesbare Programmcode einen computerlesbaren Programmcode umfasst, zur Durchführung der Verfahrensschritte gemäß einer der Verfahrens-Ansprüche 1–6.
  11. Verfahren umfassend: Drosselung von Zugriffen auf eine Flash-Speichervorrichtung, die Teil eines Speichersystems ist, das die Flash-Speichervorrichtung und eine zweite Speichervorrichtung umfasst, wobei die Drosselung durch die Logik außerhalb der Flash-Speichervorrichtung durchgeführt wird, die Drosselung umfassend: Berechnen eines Lebensdauer-Drosselungs-Faktors reagierend auf eine geschätzte verbleibende Lebensdauer der Flash-Speichervorrichtung; Berechnen eines Durchsatz-Drosselungs-Faktors reagierend auf einen geschätzten maximalen Durchsatz der Flash-Speichervorrichtung; Berechnen eines maximalen Drosselungs-Faktors reagierend auf den Lebensdauer-Drosselungs-Faktor und den Durchsatz-Drosselungs-Faktor; Bestimmen, ob der Drosselungs-Faktor einen Schwellenwert überschreitet; und Als Reaktion auf die Bestimmung, dass der Drosselungs-Faktor den Schwellenwert überschreitet, Durchführung mindestens einer Datengrößen-Drosselung, Prefetch-Fenstergrößen-Drosselung und Nutzungs-Drosselung; und Schreiben der Daten auf mindestens eine Flash-Speichervorrichtung und die zweite Speichervorrichtung als Reaktion auf die Drosselung.
  12. Verfahren nach Anspruch 11, wobei die Durchführung der Datengrößen-Drosselung reagierend auf den maximalen Drosselungs-Faktor und eine Größe der Daten ist, die Durchführung der Datengrößen-Drosselung leitet das Schreiben der Daten auf die zweite Speichervorrichtung, wenn die Größe der Daten eine ausgewählte Größe überschreitet, wobei die Durchführung der Datengrößen-Drosselung das Berechnen einer ausgewählten Größe reagierend auf den maximalen Drosselungs-Faktor umfasst.
  13. Verfahren nach Anspruch 11, wobei die Durchführung der Prefetch-Fenstergrößen-Drosselung reagierend auf den maximalen Drosselungs-Faktor ist und das Einstellen einer Größe eines Prefetch-Fensters, wenn die Daten auf die Flash-Speichervorrichtung geschrieben werden.
  14. Verfahren nach Anspruch 11, wobei die Durchführung der Nutzungs-Drosselung das Durchführen einer zufälligen Auswahl von einem Teil der empfangenen Daten umfasst, um auf die Flash-Speichervorrichtung geschrieben zu werden, der Teil, der auf den maximalen Drosselungs-Faktor reagiert.
  15. Computerprogrammprodukt umfassend: ein computerlesbares Speichermedium mit darin enthaltenem computerlesbaren Programmcode, wobei der computerlesbare Programmcode einen computerlesbaren Programmcode umfasst, zur Durchführung der Verfahrensschritte gemäß einer der Verfahrens-Ansprüche 11–14.
DE102012103869.4A 2011-05-20 2012-05-03 Optimierter Flash-basierender Cache-Speicher Active DE102012103869B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/112,894 2011-05-20
US13/112,894 US8656088B2 (en) 2011-05-20 2011-05-20 Optimized flash based cache memory

Publications (2)

Publication Number Publication Date
DE102012103869A1 true DE102012103869A1 (de) 2012-11-22
DE102012103869B4 DE102012103869B4 (de) 2014-02-13

Family

ID=46330626

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012103869.4A Active DE102012103869B4 (de) 2011-05-20 2012-05-03 Optimierter Flash-basierender Cache-Speicher

Country Status (4)

Country Link
US (2) US8656088B2 (de)
CN (1) CN102841868B (de)
DE (1) DE102012103869B4 (de)
GB (1) GB2491004B (de)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9128854B1 (en) * 2012-09-28 2015-09-08 Emc Corporation System and method for data prediction
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
WO2014102886A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Information processing apparatus and cache control method
CN103514958B (zh) * 2012-12-31 2016-02-10 Tcl集团股份有限公司 一种emmc芯片寿命检测方法
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9183137B2 (en) * 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
TWI511035B (zh) * 2013-03-08 2015-12-01 Acer Inc 動態調整快取層級方法
CN104063182B (zh) * 2013-03-20 2017-04-12 宏碁股份有限公司 动态调整快取层级方法
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
CN104182359B (zh) * 2013-05-23 2017-11-14 杭州宏杉科技股份有限公司 一种缓存分配方法及装置
JP6106028B2 (ja) * 2013-05-28 2017-03-29 株式会社日立製作所 サーバ及びキャッシュ制御方法
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
WO2015167490A1 (en) 2014-04-30 2015-11-05 Hewlett-Packard Development Company, L.P. Storage system bandwidth adjustment
US9478274B1 (en) 2014-05-28 2016-10-25 Emc Corporation Methods and apparatus for multiple memory maps and multiple page caches in tiered memory
US9535844B1 (en) 2014-06-30 2017-01-03 EMC IP Holding Company LLC Prioritization for cache systems
WO2016036374A1 (en) 2014-09-04 2016-03-10 Hewlett Packard Enterprise Development Lp Storage system bandwidth determination
US10235054B1 (en) * 2014-12-09 2019-03-19 EMC IP Holding Company LLC System and method utilizing a cache free list and first and second page caches managed as a single cache in an exclusive manner
US10956617B2 (en) * 2014-12-12 2021-03-23 Coresecure Technologies, Llc Systems and methods for random fill caching and prefetching for secure cache memories
KR102288546B1 (ko) 2015-08-31 2021-08-10 삼성전자주식회사 스토리지 장치 및 그 제어 방법
JP2017107321A (ja) * 2015-12-08 2017-06-15 京セラドキュメントソリューションズ株式会社 電子機器およびデータアクセス制御プログラム
US10037172B2 (en) 2016-02-09 2018-07-31 Toshiba Memory Corporation Memory system and controlling method
US10228868B1 (en) * 2016-09-30 2019-03-12 EMC IP Holding Company LLC Managing lifespan of a flash memory
US10593409B2 (en) * 2017-10-12 2020-03-17 Distech Controls Inc. Memory device comprising flash memory and method for controlling a write speed of a bus transmitting data for storage on the flash memory
US10855556B2 (en) * 2018-07-25 2020-12-01 Netapp, Inc. Methods for facilitating adaptive quality of service in storage networks and devices thereof
US11379355B2 (en) * 2018-10-30 2022-07-05 Micron Technology, Inc. Power-on-time based data relocation
KR20200073592A (ko) * 2018-12-14 2020-06-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US11347428B2 (en) * 2019-01-16 2022-05-31 EMC IP Holding Company LLC Solid state tier optimization using a content addressable caching layer
US11182087B2 (en) * 2019-09-27 2021-11-23 Micron Technology, Inc. Modifying write performance to prolong life of a physical memory device
WO2021087042A1 (en) * 2019-10-30 2021-05-06 Qualcomm Incorporated Modem throughput throttling
US11768777B2 (en) * 2020-01-22 2023-09-26 EMC IP Holding Company LLC Application aware cache management
US11334285B2 (en) 2020-06-25 2022-05-17 Corvil Limited Method and system for accelerating storage of data in write-intensive computer applications

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696917A (en) 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US6574707B2 (en) 2001-05-07 2003-06-03 Motorola, Inc. Memory interface protocol using two addressing modes and method of operation
US6990558B2 (en) 2002-06-18 2006-01-24 Ip-First, Llc Microprocessor, apparatus and method for selective prefetch retire
US7272710B2 (en) 2004-09-30 2007-09-18 Dell Products L.P. Configuration aware pre-fetch switch setting by BIOS based on the number of CPUs and cache size
US7472256B1 (en) 2005-04-12 2008-12-30 Sun Microsystems, Inc. Software value prediction using pendency records of predicted prefetch values
JP2007193865A (ja) * 2006-01-17 2007-08-02 Toshiba Corp 情報記録装置及びその制御方法
US20080065718A1 (en) 2006-09-12 2008-03-13 Emc Corporation Configuring a cache prefetch policy that is controllable based on individual requests
US7565494B1 (en) 2006-09-12 2009-07-21 Emc Corporation Configuring a bounded cache prefetch policy in a computer system employing object addressable storage
KR100847021B1 (ko) 2006-10-26 2008-07-17 한국과학기술원 데이터 저장 장치, 데이터 저장 방법 및 그 방법이 기록된컴퓨터로 읽을 수 있는 기록매체
KR100866962B1 (ko) 2007-03-08 2008-11-05 삼성전자주식회사 Hdd를 하이브리드 hdd에서 노멀 hdd로 전환시키는방법
US7908439B2 (en) 2007-06-25 2011-03-15 International Business Machines Corporation Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache
JP4829191B2 (ja) 2007-08-30 2011-12-07 株式会社東芝 キャッシュシステム
US20090106498A1 (en) 2007-10-23 2009-04-23 Kevin Michael Lepak Coherent dram prefetcher
US20090193187A1 (en) 2008-01-25 2009-07-30 International Business Machines Corporation Design structure for an embedded dram having multi-use refresh cycles
KR101032359B1 (ko) 2008-04-22 2011-05-03 영진전문대학 산학협력단 블렌디드러닝 종합관리시스템과 그 관리방법
US8275902B2 (en) * 2008-09-22 2012-09-25 Oracle America, Inc. Method and system for heuristic throttling for distributed file systems
CN101419842B (zh) * 2008-11-07 2012-04-04 成都市华为赛门铁克科技有限公司 硬盘的损耗均衡方法、装置及系统
US20100185816A1 (en) 2009-01-21 2010-07-22 Sauber William F Multiple Cache Line Size
US8195878B2 (en) 2009-02-19 2012-06-05 Pmc-Sierra, Inc. Hard disk drive with attached solid state drive cache
US8112587B2 (en) 2009-04-30 2012-02-07 International Business Machines Corporation Shared data prefetching with memory region cache line monitoring
US8176367B2 (en) 2009-05-28 2012-05-08 Agere Systems Inc. Systems and methods for managing end of life in a solid state drive
US9213628B2 (en) * 2010-07-14 2015-12-15 Nimble Storage, Inc. Methods and systems for reducing churn in flash-based cache

Also Published As

Publication number Publication date
GB2491004B (en) 2013-04-24
US8656088B2 (en) 2014-02-18
GB2491004A (en) 2012-11-21
CN102841868B (zh) 2015-11-18
US20120297113A1 (en) 2012-11-22
GB201207613D0 (en) 2012-06-13
US20120297127A1 (en) 2012-11-22
DE102012103869B4 (de) 2014-02-13
CN102841868A (zh) 2012-12-26
US8645619B2 (en) 2014-02-04

Similar Documents

Publication Publication Date Title
DE102012103869B4 (de) Optimierter Flash-basierender Cache-Speicher
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE112013003255B4 (de) Managementmechanismus für fehlerhafte Blöcke
DE102019130450B4 (de) Bypass-Speicherklasse Lese Cache auf der Grundlage eines Schwellwertes der Warteschlange
DE112009000431B4 (de) Prozessorbasiertes system, nichtflüchtiger cachespeicher und verfahren zum nutzen eines nichtflüchtigen cachespeichers
DE102012216035B4 (de) Aktivierung der drosselung auf den durchschnittlichen schreibdurchsatz bei festkörperspeichereinheiten
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE60224552T2 (de) Fehlerbehandlung für beschreibbare referenz-speicherzellen zum verfolgen von einsatzspannungsdriften
DE102008057219B4 (de) Verfahren zum Betreiben eines Solid-State-Speichersystems, Solid-State-Speichersystem und Computersystem
DE69034227T2 (de) EEprom-System mit Blocklöschung
DE102018115163A1 (de) Routing von datenblöcken während einer thermodrosselung
DE102012208141A1 (de) Ausgleich nachlassender Funktionsfähigkeit
DE112015004873T5 (de) Verarbeitung von Entabbildungsbefehlen zur Verbesserung der Leistungsfähigkeit und Standzeit einer Speicherungsvorrichtung
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102013020269A1 (de) Umordnen des Zurückschickens für einen Host-Lesebefehl basierend auf der Zeitschätzung des Abschlusses eines Flash-Lesebefehls
DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
DE102009034836A1 (de) Verfahren und Vorrichtung zum Speichern von Daten in einem Festkörperspeicher
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE102021114457A1 (de) Abwicklung von lesen in vorrichtungen mit in zonen unterteiltem namensraum
DE102020202379A1 (de) Speichersystem, speicher-controller und deren betriebsverfahren
DE112018004316T5 (de) Verfahren und vorrichtung zur auswahl von leistungszuständen in speichergeräten

Legal Events

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

Effective date: 20141114