-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht sich allgemein auf Computer und insbesondere auf Mechanismen zum Verwalten von Teildatensegmenten in einer Datenverarbeitungs-Speicherumgebung, die ein System mit doppeltem Cachespeicher aufweist.
-
Beschreibung der verwandten Technik
-
Computersysteme sind in der heutigen Gesellschaft weit verbreitet. Bei Computersystemen kann es sich um handeln Auf dem Gebiet der Datenverarbeitung bezieht sich ein „Cachespeicher” üblicherweise auf eine kleine, schnelle Hauptspeicher- oder Speichereinheit, die zum Speichern von Daten oder Befehlen verwendet wird, auf die kürzlich zugegriffen wurde, auf die häufig zugegriffen wird oder auf die wahrscheinlich künftig zugegriffen wird. Aus einem Cachespeicher zu lesen oder in ihn zu schreiben, ist üblicherweise kostengünstiger (im Hinblick auf die Zugriffszeit und/oder die Ressourcen-Auslastung), als auf sonstige Hauptspeicher- oder Speichereinheiten zuzugreifen. Nachdem Daten im Cachespeicher gespeichert worden sind, kann im Cachespeicher auf sie zugegriffen werden, statt die Daten erneut abzurufen und/oder neu zu verarbeiten, wodurch Zeit und Ressourcen eingespart werden.
-
KURZDARSTELLUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Cachespeicher können als Cachespeicher mit mehreren Ebenen bereitgestellt werden. Ein Cachespeicherungssystem kann zum Beispiel sowohl einen „primären” als auch einen „sekundären” Cachespeicher beinhalten. Beim Lesen von Daten kann ein(e) Datenverarbeitungssystem oder -einheit zuerst Daten im primären Cachespeicher suchen, und wenn die Daten nicht vorhanden sind, die Daten in dem sekundären Cachespeicher suchen. Wenn die Daten in keinem der Cachespeicher vorhanden sind, kann das/die Datenverarbeitungssystem oder -einheit die Daten von Plattenlaufwerken oder sonstigen Speichereinheiten abrufen. Beim Schreiben von Daten kann ein(e) Datenverarbeitungssystem oder -einheit Daten in den primären Cachespeicher schreiben. Diese Daten können schließlich in den sekundären Cachespeicher oder in eine Speichereinheit ausgelagert werden, um Platz in dem primären Cachespeicher zu schaffen.
-
Bei Datenverarbeitungssystemen, die Cachespeicher mit mehreren Ebenen aufweisen, kann das Schreiben von sogenannten „Teilspuren” oder Datensegmenten, die nicht vollständig gefüllt sind, in einen sekundären Cachespeicher Probleme bereiten. Beispielsweise wird unter Umständen Speicherplatz in dem sekundären Cachespeicher verschwendet. Bei einem sekundären Cachespeicher, der als Flash-Speicher oder Flash-Cachespeicher implementiert ist, ist das Implementieren des Speichers üblicherweise kostspielig, und Speicherplatz zu verschwenden, kann knappe Ressourcen in Anspruch nehmen. Erneut auf die Plattenlaufwerke oder sonstige primäre Speicher zuzugreifen, um die zusätzlichen Daten zu erfassen, um die „Lücken” in den Teilspuren zu füllen, kann darüber hinaus zusätzliche Eingabe/Ausgabe(E/A)-Aktivität verursachen, die ebenfalls Ressourcen in Anspruch nimmt und möglicherweise die Leistungsfähigkeit herabsetzt.
-
Gemäß einem Aspekt bezieht sich die Erfindung auf ein System zum Verschieben von Teildatensegmenten innerhalb einer Datenverarbeitungs-Speicherumgebung, die über untergeordnete und übergeordnete Cachespeicherebenen verfügt, das aufweist:
einen Prozessor, der innerhalb der Datenverarbeitungs-Speicherumgebung betriebsfähig ist, wobei der Prozessor angepasst ist zum:
Umstufen eines gesamten Datensegments, das eines der Teildatensegmente enthält, sowohl in die untergeordneten als auch die übergeordneten Cachespeicherebenen, wobei:
angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem zuletzt verwendeten (Most Recently Used, MRU-)Abschnitt einer Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden,
nicht geforderte Daten des gesamten Datensegments aufgeteilt werden und an einem am längsten ungenutzten (Least Recently Used, LRU-)Abschnitt der Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, und
die nicht angeforderten Daten fixiert werden, bis ein Schreibvorgang des gesamten Datensegments in die untergeordnete Cachespeicherebene abgeschlossen ist.
-
Gemäß einer Ausführungsform erfolgt das Umstufen des gesamten Datensegments nach einer Leseanforderung für das eine der Teildatensegmente.
-
Gemäß einer Ausführungsform ist der Prozessor des Weiteren so angepasst, dass er vor dem Umstufen des gesamten Datensegments ermittelt, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte.
-
Gemäß einer Ausführungsform beinhaltet das Ermitteln, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, das Berücksichtigen einer Metrik der Eingabe/Ausgabe-Leistungsfähigkeit (Input/Output Performance, IOP), einer Bandbreitenmetrik und einer Speicherbereinigungsmetrik.
-
Gemäß einer Ausführungsform beinhaltet das Ermitteln, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, das Berücksichtigen, ob das eine der Teildatensegmente auf ein weiteres der Teildatensegmente folgt.
-
Gemäß einer Ausführungsform wird, wenn festgestellt wird, dass das eine der Teildatensegmente nicht auf untergeordneten Cachespeicherebene zwischengespeichert werden soll, eine vorhandene Umstufungsregel ausgeführt, statt das gesamte Datensegment umzustufen.
-
Gemäß einer Ausführungsform wird, wenn festgestellt wird, dass das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden soll, die untergeordnete Cachespeicherebene mit dem gesamten Datensegment befüllt, und die nicht angeforderten Daten des gesamten Datensegments an dem LRU-Ende der übergeordneten Cachespeicherebene werden freigegeben, wenn das Befüllen der untergeordneten Cachespeicherebene mit dem gesamten Datensegment abgeschlossen ist.
-
Gemäß einer Ausführungsform handelt es sich bei dem Cachespeicher der untergeordneten Ebene um einen Flash-Cachespeicher.
-
Gemäß einer Ausführungsform handelt es sich bei dem Cachespeicher der übergeordneten Ebene um einen dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM).
-
In einem weiteren Aspekt ein Computerprogrammprodukt zum Verschieben von Teildatensegmenten innerhalb einer Datenverarbeitungs-Speicherumgebung, die durch einen Prozessor untergeordnete und übergeordnete Cachespeicherebenen aufweist, wobei das Computerprogrammprodukt ein nichttransitorisches, computerlesbares Speichermedium aufweist, in dem computerlesbare Programmcodeabschnitte gespeichert sind, wobei die computerlesbaren Programmcodeabschnitte aufweisen:
einen ersten ausführbaren Abschnitt zum Umstufen eines gesamten Datensegments, das eines der Teildatensegmente enthält, sowohl in die untergeordneten als auch in die übergeordneten Cachespeicherebenen, wobei:
angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem zuletzt verwendeten (MRU-)Abschnitt einer Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, nicht angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem am längsten ungenutzten (LRU-)Abschnitt der Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, und
die nicht angeforderten Daten fixiert werden, bis ein Schreibvorgang des gesamten Datensegments in die untergeordnete Cachespeicherebene abgeschlossen ist.
-
Gemäß einer Ausführungsform tritt das gesamte Datensegment nach einer Leseanforderung für das eine der Teildatensegmente auf.
-
Gemäß einer Ausführungsform ein Weiterer, der einen zweiten ausführbaren Abschnitt aufweist, um vor dem Umstufen des gesamten Datensegments zu ermitteln, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte.
-
Gemäß einer Ausführungsform beinhaltet, das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, das Berücksichtigen einer Metrik der Eingabe/Ausgabe-Leistungsfähigkeit (Input/Output Performance, IOP), einer Bandbreitenmetrik und einer Speicherbereinigungsmetrik.
-
Gemäß einer Ausführungsform beinhaltet, das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, das Berücksichtigen, ob das eine der Teildatensegmente auf ein weiteres der Teildatensegmente folgt.
-
Das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, beinhaltet das Berücksichtigen, ob das eine der Teildatensegmente auf ein weiteres der Teildatensegmente folgt.
-
Gemäß einer Ausführungsform wird festgestellt, dass das eine der Teildatensegmente nicht auf der untergeordneten Cachespeicherebene zwischengespeichert werden soll, und es wird eine vorhandene Umstufungsregel ausgeführt, statt das gesamte Datensegment umzustufen.
-
Gemäß einer Ausführungsform wird festgestellt, dass das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden soll, die untergeordnete Cachespeicherebene wird mit dem gesamten Datensegment befüllt, und die nicht angeforderten Daten des gesamten Datensegments werden an dem LRU-Ende der übergeordneten Cachespeicherebene freigegeben, wenn das Befüllen der untergeordneten Cachespeicherebene mit dem gesamten Datensegment abgeschlossen ist.
-
Angesichts des Obigen besteht ein Bedarf an einer effizienten Verwaltung von Teildatensegmenten in Systemen mit primärem/sekundärem Cachespeicher. Dementsprechend und angesichts des Obigen werden verschiedene beispielhafte Ausführungsformen von Verfahren, Systemen und Computerprogrammprodukten zum Verschieben von Teildatensegmenten innerhalb einer Datenverarbeitungs-Speicherumgebung, die untergeordnete und übergeordnete Cachespeicherebenen aufweist, durch einen Prozessor bereitgestellt. Bei einer solchen Ausführungsform wird, lediglich als Beispiel, ein gesamtes Datensegment, das eines der Teildatensegmente enthält, sowohl in die untergeordnete als auch in die übergeordnete Cachespeicherebene umgestuft. Angeforderte Daten des gesamten Datensegments werden aufgeteilt und an einem zuletzt verwendeten (MRU-)Abschnitt einer Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert. Nicht angeforderte Daten des gesamten Datensegments werden aufgeteilt und an einem am längsten ungenutzten (LRU-)Abschnitt der Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert. Die nicht angeforderten Daten werden fixiert, bis ein Schreibvorgang des gesamten Datensegments in die untergeordnete Cachespeicherebene abgeschlossen ist.
-
Zusätzlich zu der vorhergehenden beispielhaften Ausführungsform werden verschiedene sonstige Ausführungsformen von Systemen und Computerprogrammprodukten bereitgestellt, die damit in Zusammenhang stehende Vorteile bieten. Die vorhergehende Kurzdarstellung ist bereitgestellt worden, um eine Auswahl von Konzepten in vereinfachter Form vorzustellen, die im Folgenden in der ausführlichen Beschreibung näher beschrieben werden. Diese Kurzdarstellung soll weder dazu dienen, Schlüsselmerkmale oder Wesensmerkmale des beanspruchten Gegenstandes zu kennzeichnen, noch soll sie als Hilfsmittel zur Festlegung des Umfangs des beanspruchten Gegenstandes verwendet werden. Der beanspruchte Gegenstand ist nicht auf Realisierungen beschränkt, die beliebige oder sämtliche Nachteile beseitigen, die im Hintergrund angemerkt wurden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Zum besseren Verständnis der Vorteile der Erfindung erfolgt eine genauere Beschreibung der oben kurz beschriebenen Erfindung unter Bezugnahme auf bestimmte Ausführungsformen, die in den beigefügten Zeichnungen veranschaulicht werden. In dem Verständnis, dass diese Zeichnungen Ausführungsformen der Erfindung darstellen und daher nicht so zu verstehen sind, dass sie ihren Umfang einschränken, wird die Erfindung genauer und ausführlicher mithilfe der beigefügten Zeichnungen beschrieben und erläutert, für die gilt:
-
1 ist ein Übersichts-Blockschaubild, das ein Beispiel für eine Netzwerk- und Datenverarbeitungsumgebung darstellt, in der eine Vorrichtung und ein Verfahren gemäß der Erfindung implementiert werden können;
-
2 ist ein Übersichts-Blockschaubild, das ein Beispiel für ein Speichersystem darstellt, in dem eine Vorrichtung und ein Verfahren gemäß der Erfindung implementiert werden können;
-
3 ist ein Übersichts-Blockschaubild, das eine Ausführungsform eines Cachespeichers mit mehreren Ebenen gemäß der Erfindung darstellt;
-
4 ist ein Übersichts-Blockschaubild, das verschiedene Ebenen oder Bereiche darstellt, die innerhalb des sekundären Cachespeichers implementiert werden können;
-
5 ist ein Ablaufplan, der ein beispielhaftes Verfahren zum Verwalten von Datensegmenten veranschaulicht, das das effiziente Umstufen von Teildatensegmenten gemäß einer Ausführungsform aufweist;
-
6A ist ein Blockschaubild, das eine beispielhafte Leseanforderung und ihre angeforderten und nicht angeforderten Datenseiten einer Spur veranschaulicht; und
-
6B ist ein Blockschaubild einer beispielhaften Leseanforderung und ihrer anschließenden Platzierung in dem primären Cachespeicher.
-
GENAUE BESCHREIBUNG BESTIMMTER AUSFÜHRUNGSFORMEN
-
Im Rahmen dieser Offenbarung wird der Ausdruck „sekundärer Cachespeicher” verwendet, um auf einen beliebigen Cachespeicher (wie zum Beispiel einen L2- oder L3-Cachespeicher) zu verweisen, der sich zwischen einem primären Cachespeicher und einer Speichereinheit wie zum Beispiel einem Plattenlaufwerk, einem Bandlaufwerk oder dergleichen befindet.
-
Unter Bezugnahme auf 1 wird eine Ausführungsform einer Computer-Netzwerkarchitektur 100 veranschaulicht. Die Architektur 100 wird dargestellt, um verschiedene Szenarien zum Implementieren des hierin veranschaulichten Cachespeicherungssystems darzulegen. Die Architektur 100 wird lediglich als Beispiel dargestellt und ist nicht beschränkend gemeint. Tatsächlich kann das hierin offenbarte Cachespeicherungssystem über die dargestellte Netzwerkarchitektur 100 hinaus auf eine große Vielfalt verschiedener Computer, Server, Speichersysteme und Netzwerkarchitekturen anwendbar sein.
-
Wie dargestellt, kann die Computer-Netzwerkarchitektur 100 einen oder mehrere Computer 102, 106 beinhalten, die durch ein Netzwerk 104 miteinander verbunden sind. Das Netzwerk 104 kann zum Beispiel ein lokales Netzwerk (local area network, LAN) 104, ein Weitverkehrs-Netzwerk (wide area network, WAN) 104, das Internet 104, ein Intranet 104 oder dergleichen beinhalten. Bei bestimmten Ausführungsformen können die Computer 102, 106 sowohl Client-Computer 102 als auch Server-Computer 106 beinhalten. Im Allgemeinen können die Client-Computer 102 Datenaustauschsitzungen initiieren, wohingegen die Server-Computer 106 auf Anforderungen von den Client-Computern 102 warten können. Bei bestimmten Ausführungsformen können die Computer 102 und/oder die Server 106 eine Verbindung mit einem oder mehreren internen oder externen direkt angeschlossenen Speichersystemen 112 (z. B. Festplattenlaufwerken, Halbleiterlaufwerken, Bandlaufwerken usw.) herstellen. Diese Computer 102, 106 und die direkt angeschlossenen Speichereinheiten 112 können mithilfe von Protokollen wie zum Beispiel ATA, SATA, SCSI, SAS, Fibre Channel oder dergleichen Daten austauschen. Beliebige oder sämtliche der Computer 102, 106 können das hierin beschriebene Cachespeicherungssystem verwenden, um auf Daten aus den Speichereinheiten 112 zuzugreifen.
-
Die Computer-Netzwerkarchitektur 100 kann bei bestimmten Ausführungsformen ein Speichernetzwerk 108 hinter den Servern 106 wie zum Beispiel ein Speicherbereichsnetz (storage area network, SAN) 108 oder ein LAN 108 beinhalten (z. B. wenn ein netzwerkgebundener Speicher verwendet wird). Dieses Netzwerk 108 kann die Server 106 mit einem oder mehreren Speichersystemen 110 wie zum Beispiel einzelnen Festplattenlaufwerken 110a oder Halbleiterlaufwerken 110a, Arrays 110b von Festplattenlaufwerken oder Halbleiterlaufwerken, Bandlaufwerken 110c, Bandbibliotheken 110d, CD-ROM-Bibliotheken oder dergleichen verbinden. Wenn es sich bei dem Netzwerk 108 um ein SAN handelt, können die Server 106 und die Speichersysteme 110 mithilfe eines Netzwerkstandards wie zum Beispiel Fibre Channel (FC) Daten austauschen. Beliebige oder sämtliche der Computer 102, 106 können das hierin beschriebene Cachespeicherungssystem verwenden, um Daten zu speichern, die aus den Speichereinheiten 110 abgerufen worden sind.
-
Unter Bezugnahme auf 2 wird eine Ausführungsform eines Speichersystems 110b veranschaulicht, das ein Array von Festplattenlaufwerken 204 und/oder Halbleiterlaufwerken 203 enthält. Die internen Komponenten des Speichersystems 110b werden dargestellt, da das Cachespeicherungssystem bei bestimmten Ausführungsformen innerhalb eines solchen Speichersystems 110b implementiert werden kann, wenngleich das Cachespeicherungssystem auch auf andere Speichersysteme 110 anwendbar sein kann. Wie dargestellt, beinhaltet das Speichersystem 110b eine Speichersteuereinheit 200, eine oder mehrere Weichen 202 und eine oder mehrere Steuereinheiten 203, 204 wie zum Beispiel Festplattenlaufwerke 204 oder Halbleiterlaufwerke 203 (wie zum Beispiel Laufwerke 203 auf der Grundlage von Flash-Speichern). Die Speichersteuereinheit 200 kann einen oder mehrere Hosts 106 (z. B. offenes System und/oder Mainframe-Server 106) in die Lage versetzen, auf Daten in der einen oder den mehreren Speichereinheiten 203, 204 zuzugreifen.
-
Bei ausgewählten Ausführungsformen beinhaltet die Speichersteuereinheit 200 einen oder mehrere Server 206. Die Speichersteuereinheit 200 kann außerdem Host-Adapter 208 und Einheitenadapter 210 beinhalten, um die Speichersteuereinheit 200 mit den Host-Einheiten 106 bzw. den Speichereinheiten 203, 204 zu verbinden. Mehrere Server 206a, 206b können Redundanz bereitstellen, um zu gewährleisten, dass Daten jederzeit für verbundene Hosts 106 verfügbar sind. Auf diese Weise kann, wenn ein Server 206a ausfällt, der andere Server 206b funktionsfähig bleiben, um zu gewährleisten, dass eine E/A zwischen den Hosts 106 und den Speichereinheiten 203, 204 fortgesetzt werden kann. Dieser Prozess kann als „Failover” bezeichnet werden.
-
Ein Beispiel für ein Speichersystem 110b, das eine ähnliche Architektur wie die in 2 veranschaulichte aufweist, ist das Unternehmensspeichersystem IBM® DS8000TM. Bei dem DS8000TM handelte sich um eine leistungsstarke Speichersteuereinheit mit hoher Speicherkapazität, die Plattenspeicher bereitstellt, der dazu bestimmt ist, einen Dauerbetrieb zu unterstützen. Die Modelle der Serie DS8000TM können die POWER5TM-Server 206a, 206b von IBM verwenden, die in eine Virtualisierungs-Engine-Technologie von IBM integriert werden können. Gleichwohl ist das hierin offenbarte Cachespeicherungssystem nicht auf das Unternehmensspeichersystem IBM® DS8000TM 110b beschränkt, sondern kann unabhängig von dem Hersteller, dem Produktnamen oder Komponenten oder Komponentennamen, die mit dem System 110 verbunden sind, in einem beliebigen vergleichbaren oder entsprechenden Speichersystem 110 implementiert werden. Des Weiteren wird jedes System, das einen Nutzen aus einer oder mehreren Ausführungsformen der Erfindung haben könnte, als in den Umfang der Erfindung fallend betrachtet. Folglich wird das IBM® DS8000TM lediglich als Beispiel dargestellt und ist nicht beschränkend gemeint.
-
Bei ausgewählten Ausführungsformen kann jeder Server 206 einen oder mehrere Prozessoren 212 (z. B. symmetrische n-Wege-Mehrprozessoren) und einen Speicher 214 beinhalten. Der Speicher 214 kann flüchtigen Speicher (z. B. RAM) wie auch nichtflüchtigen Speicher (z. B. ROM, EPROM, EEPROM, Festplatten, Flash-Speicher usw.) beinhalten. Der flüchtige Speicher und der nichtflüchtige Speicher können bei bestimmten Ausführungsformen Software-Module speichern, die auf dem/den Prozessor(en) 212 ausgeführt werden und dazu verwendet werden, auf Daten in den Speichereinheiten 203, 204 zuzugreifen. Die Server 206 können zumindest eine Instanz dieser Software-Module betreiben. Diese Software-Module können sämtliche Lese- und Schreibanforderungen an logische Datenträger in den Speichereinheiten 203, 204 verwalten.
-
Bei ausgewählten Ausführungsformen kann der Speicher 214 einen Cachespeicher 218 beinhalten. Wenn ein Host 106 (z. B. ein offenes System oder Mainframe-Server 106) einen Lesevorgang durchführt, kann der Server 206, der den Lesevorgang durchführt, Daten aus den Speichereinheiten 203, 204 abrufen und sie für den Fall, dass sie erneut benötigt werden, in seinem Cachespeicher 218 speichern. Wenn die Daten erneut durch einen Host 106 angefordert werden, kann der Server 206 die Daten aus dem Cachespeicher 218 abrufen, statt sie aus den Speichereinheiten 203, 204 abzurufen und so Zeit und Ressourcen einsparen. Wenn ein Host 106 einen Schreibvorgang durchführt, kann der Server 106, der die Schreibanforderung empfängt, den Schreibvorgang in ähnlicher Weise in seinem Cachespeicher 218 speichern und das Schreiben für einen späteren Zeitpunkt in die Speichereinheiten 203, 204 auslagern. Wenn ein Schreibvorgang in dem Cachespeicher 218 gespeichert wird, kann der Schreibvorgang auch in einem nichtflüchtigen Speicher (non-volatile storage, NVS) 220 des Gegenservers 206 gespeichert werden, sodass der Schreibvorgang durch den Gegenserver 206 wiederhergestellt werden kann, falls der erste Server 206 ausfällt.
-
Unter Bezugnahme auf 3 und unter fortdauernder Bezugnahme auf 2 kann ein Speichersystem 110b, wie zuvor erwähnt, sowohl Festplattenlaufwerke 204 als auch Halbleiterlaufwerke (solid-state drives, SSDs) 203 wie zum Beispiel Laufwerke 203 auf der Grundlage von Flash-Speichern beinhalten. Die E/A-Leistungsfähigkeit der SSDs 203 oder sonstiger Typen von Halbleiterspeichern ist üblicherweise erheblicher höher als die E/A-Leistungsfähigkeit der Festplattenlaufwerken 204. Aufgrund der höheren E/A-Leistungsfähigkeit können die Halbleiterlaufwerke 203 bei bestimmten Ausführungsformen dazu verwendet werden, einen großen sekundären Cachespeicher 300 zwischen dem primären Cachespeicher 218 und den Festplattenlaufwerken 204 bereitzustellen. Dieser große sekundäre Cachespeicher 300 kann die E/A-Leistungsfähigkeit des Speichersystems 110b erheblich verbessern und kann hierin als „Flash-Cachespeicher” bezeichnet werden.
-
Wenn eine Leseanforderung durch einen Server 106 empfangen wird, kann der Server 106 mithilfe des sekundären Cachespeichers 300 zunächst in dem primären Cachespeicher 218 nach Daten suchen und, wenn die Daten nicht vorhanden sind, in dem sekundären Cachespeicher 300 (der sich in den Halbleiterlaufwerken 203 befindet) nach den Daten suchen. Wenn die Daten in keinem der Cachespeicher vorhanden sind, kann der Server 106 die Daten aus den Plattenlaufwerken 204 abrufen. Beim Schreiben von Daten kann der Server 106 in ähnlicher Weise zunächst die modifizierten Daten in den primären Cachespeicher 218 schreiben. Diese modifizierten Daten können schließlich in den sekundären Cachespeicher 300 ausgelagert werden, um Platz in dem primären Cachespeicher 218 zu schaffen. Diese Daten können anschließend nach Bedarf in die Plattenlaufwerke 204 ausgelagert werden, um Platz in dem sekundären Cachespeicher 300 zu schaffen.
-
Bei bestimmten Ausführungsformen kann der sekundäre Cachespeicher 300 so dimensioniert sein, dass er etwa ein bis zwanzig Prozent oder bei anderen Ausführungsformen etwa fünf Prozent der gesamten Speicherkapazität des Speichersystems 110b bereitstellt. Auf diese Weise können bei einem Speichersystem 110b, das etwa zehn Terabyte (TB) Speicher (aus den Festplattenlaufwerken 204 und den Halbleiterlaufwerken 203) enthält, etwa 0,5 TB dieses Speicherplatzes als sekundärer Cachespeicher 300 verwendet werden. Bei einem so großen sekundären Cachespeicher 300 müssen unter Umständen Daten deutlich weniger häufig aus dem sekundären Cachespeicher 300 ausgelagert werden als bei herkömmlichen sekundären Cachespeichern. Als Beispiel könnte ein sehr großer sekundärer Cachespeicher 300 Schreibvorgänge für einen ganzen Tag speichern, ohne die Schreibvorgänge in die Plattenlaufwerke 204 auslagern zu müssen. Die Schreibvorgänge könnten dann nachts oder in einem Zeitraum relativer Inaktivität ausgelagert werden. Cachespeicher-Verwaltungsalgorithmen können neu gestaltet werden, um den zusätzlichen Speicherplatz in dem sekundären Cachespeicher 300 effizient auszunutzen und einen Nutzen aus den Verbesserungen der Leistungsfähigkeit zu ziehen, die bei der Verwendung eines großen sekundären Cachespeichers 300 möglich sind.
-
Wie in 3 dargestellt, kann jeder Cachespeicher 218, 300 Daten 302a, 302b und Metadaten 304a, 304b speichern. Wie in 4 dargestellt wird, können die Daten 302a, 302b in Form von Spuren gespeichert werden. Jeder Spur in dem sekundären Cachespeicher 300 kann ein sekundärer Spursteuerblock (secondary track control block, STCB) zugehörig sein. Der STCB kann hierin auch als Cachespeicher-Flash-Steuerblock (Cache Flash Control Block, CFCB) bezeichnet werden. Der STCB kann für jede Spur neben sonstigen Daten einen Zeiger auf die nächste Spur in der Kette, Daten, die angeben, ob die Spur frei oder belegt ist, wie auch Daten, die angeben, welche Sektoren in der Spur modifiziert worden sind, beinhalten. Bei bestimmten Ausführungsformen können die STCBs für alle Spuren in einer STCB-Tabelle 306 gespeichert werden, die, wie dargestellt, in dem sekundären Cachespeicher 300 oder an anderer Stelle gespeichert wird.
-
Darüber hinaus kann jeder Spur in dem sekundären Cachespeicher 300 ein sekundärer Stride-Steuerblock (secondary stride control block, SSCB) zugehörig sein. Der SSCB kann wie der STCB Diagnose- und/oder Statistikdaten beinhalten, bezieht sich jedoch stattdessen auf Strides (Gruppen von Spuren), die in dem sekundären Cachespeicher 300 gespeichert sind. Der SSCB kann hierin auch als Cachespeicher-Flash-Element (CFE) bezeichnet werden. Bei bestimmten Ausführungsformen können die SSCBs für alle Strides in einer SSCB-Tabelle 308 gespeichert werden, die, wie dargestellt, in dem sekundären Cachespeicher 300 oder an anderer Stelle gespeichert wird.
-
In ähnlicher Weise kann der primäre Cachespeicher 218 außerdem die Metadaten 304a speichern, die dem sekundären Cachespeicher 300 zugehörig sind. Der primäre Cachespeicher 218 kann zum Beispiel eine Indextabelle des sekundären Cachespeichers (secondary cache index table, SCIT) 308 speichern, die ein Verzeichnis für Spuren in dem sekundären Cachespeicher 300 bereitstellt. Bei bestimmten Ausführungsformen handelt es sich bei der SCIT 308 im Wesentlichen um eine Hash-Tabelle mit einer konstanten Hash-Funktion. Um eine bestimmte Spur in der SCIT 308 ausfindig zu machen, kann die Hash-Funktion eine Spurkennung (z. B. eine Spurnummer) in einen Hash-Wert umwandeln. Dieser Hash-Wert kann dann in der SCIT 308 nachgeschlagen werden, um den STCB für die Spur zu finden. Alternativ könnte die SCIT 308 in ein Cachespeicherverzeichnis des primären Cachespeichers 218 integriert werden, wodurch eine einzige Hash-Tabelle bereitgestellt würde, die die Spuren sowohl des primären als auch des sekundären Cachespeichers 218, 300 speichert. Bei ausgewählten Ausführungsformen wird die SCIT 308 ausschließlich in dem primären Cachespeicher 218 gehalten. Die SCIT 308 kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cachespeicher 300 erstellt oder neu erstellt werden (bei einem Failover, einem Failback oder einem einleitenden Laden des Microcodes (initial microcode load, IML)).
-
Bei bestimmten Ausführungsformen kann der primäre Cachespeicher 218 außerdem eine Liste freier Spuren (list of free tracks, LOFT) 310 speichern, die angibt, welche Spuren in dem sekundären Cachespeicher 300 frei (d. h. nicht belegt) sind. Diese Liste 310 kann dazu verwendet werden, freien Speicherplatz in dem sekundären Cachespeicher 300 ausfindig zu machen, um Daten aus dem primären Cachespeicher 218 in den sekundären Cachespeicher 300 auszulagern. Bei ausgewählten Ausführungsformen kann das Einfügen oder Entfernen von Spuren aus der LOFT 310 mit einer Protokollstruktur durchgeführt werden. Spuren können zum Beispiel am Ende der LOFT 310 eingefügt und am Beginn der LOFT 310 gelöscht werden. Die LOFT 310 kann ausschließlich in dem primären Cachespeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cachespeicher 300 erstellt oder neu erstellt werden.
-
Der primäre Cachespeicher 218 kann außerdem eine sortierte Baumstruktur von Spuren (sorted tree of tracks, STOT) 312 speichern, in der die Spuren nach „Spur-ID” oder einer anderen Kennung sortiert sind. Die STOT 312 kann dazu verwendet werden, die Suchzeit (auf den Plattenlaufwerken 204) beim Auslagern von Spuren aus dem sekundären Cachespeicher 300 in die Plattenlaufwerke 204 so weit wie möglich zu verkürzen. Die STOT 312 kann ausschließlich in dem primären Cachespeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cachespeicher 300 erstellt oder neu erstellt werden.
-
Der primäre Cachespeicher 218 kann außerdem eine Statistik je Stride (statistics per stride, STATS) 314 für jeden Stride mit einer oder mehreren Spuren in dem sekundären Cachespeicher 300 speichern. Ein „Stride” bezieht sich auf einen Satz logisch sequentieller Daten, die über mehrere Platten hinweg segmentiert sein könnten, zusammen mit zusätzlichen Paritätsdaten, wie sie beispielsweise in einer RAID-5-Konfiguration (eines redundanten Arrays kostengünstiger Platten) verwendet werden. Im Allgemeinen kann die STATS 314 verwendet werden, um zu ermitteln, für welche Spuren die geringste Anzahl von Plattenoperationen („Platten-Ops”) zum Auslagern aus dem sekundären Cachespeicher 300 in die Plattenlaufwerke 204 erforderlich ist. Im Allgemeinen ist die Auslagerungsabwertung für eine Spur geringer, wenn mehr Spuren in einem Stride vorhanden sind. Beim Auswählen von auszulagernden Spuren können Spuren, die die geringste Anzahl von Platten-Ops erfordern, zuerst ausgelagert werden, um die Ressourcen-Auslastung so weit wie möglich zu verringern. Bei ausgewählten Ausführungsformen kann die STATS 314 Daten wie zum Beispiel die Anzahl von Spuren, die in dem sekundären Cachespeicher 300 je Stride vorhanden sind, und die Anzahl von Platten-Ops, die zum Auslagern einer Spur in einem Stride erforderlich sind, speichern. Bei bestimmten Ausführungsformen kann die STATS 314 ein „Neuigkeits”-Bit für jeden Stride speichern. Das Neuigkeits-Bit kann jedes Mal, wenn ein Entfernungsprozess einen Stride durchläuft, inkrementiert werden. Das Neuigkeits-Bit kann jedes Mal, wenn eine Spur einem Stride hinzugefügt wird, zurückgesetzt werden. Das Neuigkeits-Bit kann dazu verwendet werden, Strides in dem sekundären Cachespeicher 300 zu halten, in die aktiv geschrieben wird. Die STATS 314 kann ausschließlich in dem primären Cachespeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cachespeicher 300 erstellt oder neu erstellt werden.
-
Die oben beschriebenen Metadaten 304a, 304b können auf unterschiedliche Weise strukturiert und gespeichert werden und sind nicht auf die veranschaulichte Struktur oder Ordnung beschränkt. Die Metadaten 304a, 304b werden beispielhaft bereitgestellt, um eine Technik zum Speichern und Strukturieren der Metadaten 304a, 304b darzustellen. Bei bestimmten Ausführungsformen können die Daten und Metadaten zum Beispiel gemeinsam in dem sekundären Cachespeicher 300 in einem Array mit Umlaufprotokollstruktur gespeichert werden. Sonstige Verfahren zum Strukturieren und Speichern der Metadaten 304a, 304b können angewendet werden und sind im Umfang der Erfindung eingeschlossen.
-
Wie zuvor erwähnt, besteht ein Vorteil eines großen sekundären Cachespeichers 300 darin, dass Daten deutlich weniger häufig aus dem sekundären Cachespeicher 300 ausgelagert werden müssen als bei herkömmlichen sekundären Cachespeichern. Dies kann es möglich machen, dass mehr Daten in dem sekundären Cachespeicher 300 angesammelt werden, bevor sie in die Plattenlaufwerke 204 ausgelagert werden. Dementsprechend können bei ausgewählten Ausführungsformen eine Vorrichtung und ein Verfahren gemäß der Erfindung so eingerichtet werden, dass sie abwarten, bis sich vollständige Strides von Daten in dem sekundären Cachespeicher 300 angesammelt und verbunden haben, bevor die Daten in die Plattenlaufwerke 204 ausgelagert werden. Wie oben erläutert, kann dadurch die Anzahl von Platten-Ops, die erforderlich sind, um Daten aus dem sekundären Cachespeicher 300 in die Plattenlaufwerke 204 auszulagern, so weit wie möglich verringert werden, wodurch die Leistungsfähigkeit des Systems insgesamt verbessert wird.
-
Unter Bezugnahme auf 4 können bei bestimmten Ausführungsformen Bereinigungsvorgänge aus dem sekundären Cachespeicher 300 auf der Grundlage der Belegung durchgeführt werden. Beispielsweise können drei Bereiche in dem sekundären Cachespeicher 300 definiert werden: (1) Quiesce; (2) Trigger; und (3) hohe Priorität. Wenn sich die Belegung des sekundären Cachespeichers 300 im Quiesce-Bereich befindet (wenn der sekundäre Cachespeicher z. B. zu null bis fünfzig Prozent belegt ist), können keine Daten aus dem Cachespeicher 300 entfernt werden. In ähnlicher Weise gilt, dass, wenn sich die Cachespeicherbelegung im Trigger-Bereich befindet (wenn der sekundäre Cachespeicher 300 z. B. zu fünfzig bis siebzig Prozent belegt ist), Bereinigungsvorgänge aus dem Cachespeicher in einem Normalmodus durchgeführt werden können, bis die Cachespeicherbelegung sich innerhalb des Quiesce-Bereichs befindet. In ähnlicher Weise gilt, dass, wenn sich die Cachespeicherbelegung in einem Bereich hoher Priorität befindet (wenn der sekundäre Cachespeicher 300 z. B. zu mehr als siebzig Prozent belegt ist), Bereinigungsvorgänge aus dem Cachespeicher in einem Hochprioritätsmodus durchgeführt werden können, bis sich die Cachespeicherbelegung wieder innerhalb des Trigger-Bereichs befindet. Die oben bereitgestellten numerischen Bereiche werden lediglich als Beispiel dargestellt und sind nicht beschränkend gemeint. Ungeachtet des Bereinigungsmodus kann der Bereinigungsprozess Spuren auslagern, für deren Auslagerung die geringste Anzahl von Platten-Ops erforderlich ist.
-
Wie zuvor erwähnt, kann das Verschieben von Teildatensegmenten (z. B. Spuren) in den sekundären Cachespeicher eine Verschwendung von Speicherplatz in dem sekundären Cachespeicher selbst verursachen und/oder zu zusätzlichen E/A-Vorgängen führen, da zusätzliche Arbeit erforderlich sein kann, um Lücken mit Daten aus dem Sicherungsspeicher zu füllen. Um die Verwaltung von Datensegmenten innerhalb eines Systems mit doppeltem Cachespeicher (d. h. eines Systems mit primärem und sekundärem Cachespeicher, wie zuvor beschrieben) zu unterstützen, stellen die veranschaulichten Ausführungsformen Mechanismen zum Verschieben von Daten zwischen einem Sicherungsspeicher, einem primären und einem sekundären Cachespeicher bereit, wie im Folgenden beschrieben wird.
-
Die Mechanismen der veranschaulichten Ausführungsformen zielen darauf ab, Teildatensegmente in dem primären (z. B. DRAM-)Cachespeicher zu beseitigen, sodass es sich bei Umstufungen von Datensegmenten in den sekundären (z. B. Flash-)Cachespeicher durchweg um vollständige Datensegmente handelt. Um dieses Ziel zu erreichen, speichern diese Mechanismen bei einer Ausführungsform vollständige Spuren in dem primären Cachespeicher zwischen, selbst wenn eine Teilzwischenspeicherung angefordert wird. Seiten oder Abschnitte der Spuren, die nicht Teil einer Client-/Host-Anforderung waren, können dann in dem Cachespeicher fixiert oder gehalten werden, bis die Umstufung des Datensegments abgeschlossen ist. Nachdem die Umstufung in den sekundären Cachespeicher abgeschlossen ist, können diejenigen Abschnitte, die nicht durch den Client/Host angefordert worden waren, aus dem primären Cachespeicher herabgestuft werden.
-
Was 5 betrifft, so veranschaulicht ein Verfahren 500 ein beispielhaftes Verfahren zur Datenverwaltung in einer Datenverarbeitungs-Speicherumgebung, die primäre, sekundäre und Sicherungsspeichersysteme, wie zuvor beschrieben, gemäß verschiedenen Mechanismen der veranschaulichten Ausführungsformen aufweist. Das Verfahren 500 beginnt (Schritt 502) mit einer Ermittlung, ob ein bestimmtes Datensegment (Spur) in dem sekundären Cachespeicher (Flash-Cachespeicher) zwischengespeichert werden soll (Schritt 504). Wenn dies nicht der Fall ist, werden vorhandene Spurumstufungsregeln ausgeführt (Schritt 508), und das Verfahren 500 endet (Schritt 520). Anderenfalls wird die gesamte Spur (einschließlich angeforderter und nicht angeforderter Abschnitte) gelesen (Schritt 506).
-
Das Verfahren 500 geht anschließend zu Schritt 510, in dem die angeforderten Seiten in einem zuletzt verwendeten (MRU-)Abschnitt des primären/übergeordneten Cachespeichers platziert werden, und dann zu Schritt 512 über, in dem die nicht angeforderten Seiten in einem am längsten ungenutzten (LRU-)Abschnitt des primären/übergeordneten Cachespeichers platziert und fixiert werden. Als anschließender oder gleichzeitiger Schritt wird der sekundäre Cachespeicher mit der gesamten Spur befüllt (Schritt 514). Nachdem das Schreiben in den sekundären Cachespeicher abgeschlossen ist (Schritt 516), werden die nicht angeforderten Seiten aus dem LRU-Abschnitt des primären Cachespeichers freigegeben (Schritt 518), und das Verfahren 500 endet (wiederum Schritt 520).
-
6A und darauf folgend 6B veranschaulichen Blockschaubilder einer Leseanforderung und ihre anschließende Platzierung in dem primären (wie in dieser Ausführungsform dargestellt, DRAM-)Cachespeicher. Wie in 6A dargestellt, enthält die Leseanforderung für verschiedene Seiten einer Spur i (Datensegment 600) 0 bis 16 Seiten, darunter angeforderte Seiten 602 und nicht angeforderte Seiten 604. Wie darauf folgend in 6B dargestellt, wird das Datensegment aufgeteilt, wobei die angeforderten Seiten an dem MRU-Ende des primären Cachespeichers 218 (hier als angeforderte Seiten 606 dargestellt) platziert werden und die nicht angeforderten Seiten an dem LRU-Ende des primären Cachespeichers 218 (hier dargestellt als nicht angeforderte Seiten 608) platziert werden. Die nicht angeforderten Seiten 608 werden in dem Cachespeicher 218 fixiert, bis die Umstufung desselben Datensegments 600 in den sekundären Cachespeicher abgeschlossen ist. Anschließend werden die nicht angeforderten Seiten 608 freigegeben.
-
Wie für einen Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung eine reine Hardware-Ausführungsform, eine reine Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform annehmen, in der Software- und Hardware-Aspekte kombiniert werden, die sämtlich hierin verallgemeinernd als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert wird, auf denen computerlesbarer Programmcode verkörpert ist.
-
Es kann eine beliebige Kombination eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel um ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- bzw. Halbleitersystem, -vorrichtung oder -einheit oder um eine beliebige geeignete Kombination aus Obigem handeln, ohne darauf beschränkt zu sein. Zu konkreteren Beispielen (einer nicht erschöpfenden Liste) des computerlesbaren Speichermediums würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (random access memory, RAM), ein Festwertspeicher (read-only memory, ROM), ein löschbarer, programmierbarer Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine Magnetspeichereinheit oder eine beliebige geeignete Kombination des Obigen. Im Rahmen dieses Dokuments kann ein computerlesbares Speichermedium jedes physische Medium sein, das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen enthalten oder speichern kann.
-
Auf einem computerlesbaren Medium verkörperter Programmcode kann mithilfe eines beliebigen geeigneten Mediums übertragen werden, zum Beispiel über Funk, Kabel, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder über eine beliebige geeignete Kombination des Obigen, ohne darauf beschränkt zu sein. Computerprogrammcode zum Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben werden, zum Beispiel in einer objektorientierten Programmiersprache wie etwa Java, Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie zum Beispiel der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jede Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden.
-
Aspekte der vorliegenden Erfindung werden oben unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle realisiert werden kann/können. Diese Computerprogrammbefehle können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Befehle, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Realisieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
-
Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Befehle einen hergestellten Gegenstand (article of manufacture) erzeugen, der Befehle beinhaltet, die die/den Funktion/Vorgang realisieren, die/der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaltbilder angegeben ist. Die Computerprogrammbefehle können außerdem auf einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten geladen werden, um zu bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder sonstigen Einheiten ausgeführt wird, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführten Befehle Prozesse bereitstellen, um die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge zu realisieren.
-
Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der einen oder mehrere ausführbare Befehle zum Realisieren der angegebenen logischen Funktion(en) aufweist. Es ist außerdem zu beachten, dass bei einigen alternativen Umsetzungen die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten können. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Vorgänge ausführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen realisiert werden können.
-
Es sind zwar eine oder mehrere Ausführungsformen der vorliegenden Erfindung genau veranschaulicht worden, Fachleuten ist jedoch ersichtlich, dass Modifizierungen und Anpassungen an diesen Ausführungsformen vorgenommen werden können, ohne vom Umfang der vorliegenden Erfindung, wie sie in den folgenden Ansprüchen dargelegt wird, abzuweichen.