-
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 „Leibson, S.: What is a Flash cache?. In: Denali Memory Blog. 26.04.2010 (http://www.denali.com/wordpress/index.php/dmr/2010/04/26/what-is-a-flash-cache)” ist beispielsweise die Nutzung von Flash-Speichern als Cache-Speicher bekannt. 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.
-
Hierzu offenbart das Dokument
US 2010/0306577 A1 Systeme und Methoden um das Ende der Lebensdauer eines Halbleiterlaufwerks zu regeln. Beispielsweise wird hierin ein Speichersystem beschrieben, das zumindest einen ersten Flash-Speicherblock, einen zweiten Flash-Speicherblock, sowie einen Steuerungsschaltkreis umfasst. Der erste Flash-Speicherblock und der zweite Flash-Speicherblock sind in einem Speichersystem adressierbar. Der Steuerungsschaltkreis ist dazu ausgebildet den ersten Flash-Speicherblock als teilweise ausgefallen zu identifizieren, eine Schreibanfrage zu erhalten, welche an den ersten Flash-Speicherblock gerichtet ist, und diese Schreibanfrage an den zweiten Flash-Speicherblock weiterzuleiten.
-
Kurze Zusammenfassung
-
Der vorliegenden Anmeldung liegt die technische Aufgabe zugrunde, ein Verfahren zu schaffen, durch welches Situationen vermieden werden können, in denen ein Flash-Cache zu einem Leistungs-Engpass wird, während zur gleichen Zeit eine minimale akzeptable Lebensdauer garantiert wird. Diese Aufgabe wird mit dem Verfahren nach dem vorliegenden Hauptanspruch 1, sowie dem Computerprogrammprodukt nach Anspruch 2 gelöst.
-
Erfindungsgemäß wird ein Verfahren beschrieben, 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 LTF abhängig von einer geschätzten verbleibenden Lebensdauer c der Flash-Speichervorrichtung, einer gewünschten restlichen Lebensdauer d, sowie eines vorgegebenen LTF-Schwellwerts e als LTF = ((LTF = ((1 + e)·d – c)/((1 + e)·d).
-
Zusätzlich wird ein Durchsatz-Drosselungs-Faktor TTF abhängig von der gerade verwendeten Durchsatzkapazität p der Flash-Speichervorrichtung und einem vorgegebenen TTF-Schwellwert f als TTF = (p – f)/1 – f) berechnet, nebst einem maximalen Drosselungs-Faktor als Maximum des Lebensdauer-Drosselungsfaktors LTF und des Durchsatz-Drosselungsfaktors TTF. 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. Bei einer Datengrößen-Drosselung werden Datengrößen unterhalb des Schwellwertes an die Flash-Speichervorrichtung gesendet und Datengrößen über dem Schwellenwert an die zweite Speichervorrichtung gesendet. Bei einer Prefetch-Fenstergrößen-Drosselung wird die Menge des Prefetchings begrenzt, das von gespeicherten Daten auf der Flash-Speichervorrichtung auf zufälligen Lesevorgängen durchgeführt wird. Bei einer Nutzungs-Drosselung wird die Rate mit der Daten auf die Flash-Speichervorrichtung geschrieben werden gedrosselt.
-
Nach einer Ausführungsform der Erfindung umfasst die Flash-Speichervorrichtung einen Cache-Speicher und die zweite Speichervorrichtung umfasst ein Festplattenlaufwerk.
-
In einem weiteren Aspekt betrifft die Erfindung ein Computerprogrammprodukt, dass ein computerlesbares Speichermedium mit darin enthaltenem computerlesbaren Programmcode umfasst. Der computerlesbare Programmcode umfasst einen computerlesbaren Programmcode zur Durchführung des zuvor beschriebenen Verfahrens.
-
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 Lese-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 Lese- 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 Lesevorgängen 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 einen 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 beliebige 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 Pragramm 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 Logikfunktion(en) 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.