-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht sich allgemein auf Computer und insbesondere auf Mechanismen zum Unterstützen von unvollständigen Datensegmenten in einer Datenverarbeitungs-Speicherumgebung.
-
Beschreibung des Standes der Technik
-
In der heutigen Gesellschaft sind Computersysteme allgegenwärtig. Auf dem Gebiet der Datenverarbeitung bezeichnet ein „Cache-Speicher” üblicherweise einen kleinen schnellen Arbeitsspeicher oder eine schnelle Speichereinheit, der bzw. die zum Speichern von Daten oder Befehlen verwendet wird, auf die kurz zuvor zugegriffen wurde, häufig zugegriffen wird oder möglicherweise in Kürze zugegriffen wird. Lesen von oder Schreiben in einen Cache-Speicher ist üblicherweise günstiger (in Bezug auf Zugriffszeit und/oder Ressourcennutzung) als Zugreifen auf einen anderen Arbeitsspeicher oder andere Speichereinheiten. Nachdem Daten in einem Cache-Speicher gespeichert wurden, kann auf sie im Cache-Speicher zugegriffen werden, anstatt die Daten neu abzurufen und/oder neu zu berechnen, wodurch sowohl Zeit als auch Ressourcen gespart werden.
-
Cache-Speicher können als Mehrebenen-Cache-Speicher bereitgestellt werden. Ein System zum Zwischenspeichern kann z. B. sowohl einen „primären” als auch einen „sekundären” Cache-Speicher enthalten. Beim Lesen von Daten kann ein Datenverarbeitungssystem oder eine Datenverarbeitungseinheit zuerst nach Daten in dem primären Cache-Speicher suchen und wenn keine Daten vorhanden sind, nach den Daten im sekundären Cache-Speicher suchen. Wenn die Daten in keinem Cache-Speicher vorhanden sind, kann das Datenverarbeitungssystem oder die Datenverarbeitungseinheit die Daten von Plattenlaufwerken oder anderen Speichereinheiten abrufen. Beim Schreiben von Daten kann ein Datenverarbeitungssystem oder eine Datenverarbeitungseinheit Daten in den primären Cache-Speicher schreiben. Diese Daten können schließlich in den sekundären Cache-Speicher oder eine Speichereinheit verschoben werden, um in dem primären Cache-Speicher Platz zu schaffen.
-
Bei Datenverarbeitungssystemen mit Mehrebenen-Cache-Speichern kann ein Schreiben von so genannten „unvollständigen Spuren” oder Datensegmenten, die nicht vollständig gefüllt sind, in einen sekundären Cache-Speicher Probleme bereiten. Speicherplatz in dem sekundären Cache-Speicher kann z. B. vergeudet werden. Bei einem sekundären Cache-Speicher, der als Flash-Arbeitsspeicher oder Flash-Cache-Speicher umgesetzt ist, ist die Realisierung eines Arbeitsspeichers üblicherweise kostenintensiv, und beim Vergeuden von Speicherplatz werden möglicherweise knappe Ressourcen in Anspruch genommen. Außerdem kann ein Zurückgreifen auf die Plattenlaufwerke oder andere primäre Speicher, um die zusätzlichen Daten zu erlangen, damit die „Leerstellen” in den unvollständigen Spuren aufgefüllt werden, zusätzliche Eingabe/Ausgabe-(E/A-)Aktivitäten hervorrufen, wodurch ebenfalls Ressourcen in Anspruch genommen werden und möglicherweise die Leistung herabgesetzt wird.
-
KURZDARSTELLUNG DER BESCHRIEBENEN AUSFÜHRUNGSFORMEN
-
Im Hinblick auf das Vorhergehende besteht ein Bedarf an einem wirkungsvollen Unterstützen von unvollständigen Datensegmenten in einem sekundären Cache-Speicher. Dementsprechend und im Hinblick auf das Vorhergehende werden zahlreiche beispielhafte Ausführungsformen von Verfahren, System und Computerprogrammprodukt zum Unterstützen von unvollständigen Datensegmenten in einer Datenverarbeitungsspeicherumgebung bereitgestellt, die Ebenen des Cache-Speichers mit geringerer und höherer Geschwindigkeit aufweist. Bei einer derartigen Ausführungsform ist lediglich beispielhaft ein Mechanismus zum Verschieben von Daten eingerichtet. Der Mechanismus ist so ausgelegt, dass er ausführt: Zulassen, dass die unvollständigen Datensegmente in der Cache-Speicher-Ebene mit höherer Geschwindigkeit während einer längeren Zeitspanne als wenigstens ein vollständiges Datensegment verbleiben und/oder Umsetzen einer Präferenz zum Verschieben der unvollständigen Datensegmente zu einer Cache-Speicher-Ebene mit geringerer Geschwindigkeit auf der Grundlage einer Anzahl von Leerstellen und/oder einer Daten-Vergleichsmaßzahl, wobei ein erstes der unvollständigen Datensegmente, das eine kleinere Anzahl von Leerstellen und/oder Daten mit höherer Aktualität aufweist, vor einem zweiten der unvollständigen Datensegmente, das eine höhere Anzahl von Leerstellen und/oder Daten mit geringerer Aktualität aufweist, zu der Cache-Speicher-Ebene mit geringerer Geschwindigkeit verschoben wird.
-
Zusätzlich zu der vorhergehenden beispielhaften Ausführungsform werden zahlreiche weitere Ausführungsform von System und Computerprogrammprodukt bereitgestellt und gewährleisten zugehörige Vorteile. Die vorhergehende Zusammenfassung wurde bereitgestellt, um eine Auswahl von Konzepten in einer vereinfachten Form vorzustellen, die nachstehend in der genauen Beschreibung weiter dargestellt werden. Diese Zusammenfassung soll keine Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands identifizieren und soll auch nicht als eine Hilfe verwendet werden, um den Umfang des beanspruchten Gegenstands festzulegen. Der beanspruchte Gegenstand ist nicht auf Umsetzungen beschränkt, die einige oder alle Nachteile beseitigen, die im Hintergrund genannt wurden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Damit die Vorteile der Erfindung leicht verständlich sind, wird eine ausführliche Beschreibung der Erfindung, die oben kurz beschrieben wurde, unter Bezugnahme auf spezielle Ausführungsformen wiedergegeben, die in den angefügten Zeichnungen dargestellt sind. Es ist klar, dass diese Zeichnungen Ausführungsformen der Erfindung darstellen und deshalb nicht so betrachtet werden sollen, dass sie ihren Umfang einschränken, wobei die Erfindung mit zusätzlicher Spezifität und zusätzlichen Einzelheiten durch die Verwendung der beigefügten Zeichnungen beschrieben und erläutert wird, worin:
-
1 ein Übersichts-Blockschaltplan ist, der ein Beispiel einer Netzwerk- und Datenverarbeitungsumgebung zeigt, bei der eine Vorrichtung und ein Verfahren gemäß der Erfindung umgesetzt werden können;
-
2 ein Übersichts-Blockschaltplan ist, der ein Beispiel eines Speichersystems zeigt, bei dem eine Vorrichtung und ein Verfahren gemäß der Erfindung umgesetzt werden können;
-
3 ein Übersichts-Blockschaltplan ist, der eine Ausführungsform eines Mehrebenen-Cache-Speichers gemäß der Erfindung zeigt;
-
4 ein Übersichts-Blockschaubild ist, das verschiedene Ebenen oder Bereiche zeigt, die in dem sekundären Cache-Speicher umgesetzt werden können;
-
5 ein Ablaufplan ist, der ein beispielhaftes Verfahren zum wirkungsvollen Unterstützen von unvollständigen Datensegmenten gemäß einer Ausführungsform veranschaulicht;
-
6 ein Ablaufplan ist, der eine zusätzliche Ausführungsform zum wirkungsvollen Unterstützen von unvollständigen Datensegmenten veranschaulicht;
-
7 ein Ablaufplan ist, der eine zusätzliche Ausführungsform zum wirkungsvollen Unterstützen von unvollständigen Datensegmenten veranschaulicht; und
-
8 ein Ablaufplan ist, der eine weitere zusätzliche Ausführungsform zum wirkungsvollen Unterstützen von unvollständigen Datensegmenten veranschaulicht.
-
GENAUE BESCHREIBUNG BESTIMMTER AUSFÜHRUNGSFORMEN
-
Für die Zwecke dieser Offenbarung wird der Ausdruck „sekundärer Cache-Speicher” verwendet, um einen beliebigen Cache-Speicher (darunter z. B. L2- oder L3-Cache-Speicher) zu bezeichnen, der sich zwischen einem primären Cache-Speicher und einer Speichereinheit wie etwa Plattenlaufwerk, Bandlaufwerk oder dergleichen befindet.
-
In 1 ist eine Ausführungsform einer Computer-Netzwerkarchitektur 100 veranschaulicht. Die Architektur 100 ist so dargestellt, dass sie verschiedene Szenarien zum Umsetzen des hier dargestellten Systems zum Zwischenspeichern zeigt. Die Architektur 100 wird lediglich beispielhaft dargestellt und soll nicht einschränkend sein. Stattdessen kann das hier offenbarte System zum Zwischenspeichern bei einer großen Vielfalt von unterschiedlichen Computern, Servern, Speichersystemen und Netzwerkarchitekturen zusätzlich zu der gezeigten Netzwerkarchitektur 100 angewendet werden.
-
Die gezeigte Computer-Netzwerkarchitektur 100 kann einen oder mehrere Computer 102, 106 enthalten, die durch ein Netzwerk 104 untereinander verbunden sind. Für das Netzwerk 104 kommen z. B. ein lokales Netzwerk (LAN) 104, ein Weitverkehrsnetz (WAN) 104, das Internet 104, ein Intranet 104 oder dergleichen infrage. Bei bestimmten Ausführungsformen können zu den Computern 102, 106 sowohl Client-Computer 102 als auch Server-Computer 106 gehören. Client-Computer 102 können im Allgemeinen Kommunikationssitzungen auslösen, wohingegen Server-Computer 102 auf Anforderungen von den Server-Computern 102 warten können. Bei bestimmten Ausführungsformen können die Computer 102 und/oder Server 106 mit einem oder mehreren internen oder externen direkt angeschlossenen Speichersystemen 112 verbunden werden (z. B. Festplattenlaufwerke, Halbleiter-Datenträger, Bandlaufwerke usw.). Diese Computer 102, 106 und direkt angeschlossene Speichereinheiten 112 können unter Verwendung von Protokollen wie ATA, SATA, SCSI, SAS, Fibre Channel oder dergleichen Daten untereinander austauschen. Alle oder einige der Computer 102, 106 können das System zum Zwischenspeichern nutzen, das hier beschrieben ist, um auf Daten der Speichereinheiten 112 zuzugreifen.
-
Die Computer-Netzwerkarchitektur 100 kann bei bestimmten Ausführungsformen ein Speichernetzwerk 108 neben den Servern 106 enthalten wie etwa ein Speicherbereichsnetzwerk (SAN) 108 oder ein LAN 108 (z. B. bei Verwendung einer am Netzwerk angeschlossenen Speichereinrichtung). Dieses Netzwerk 108 kann die Server 106 mit einem oder mehreren Speichersystemen 110 verbinden wie etwa einzelne Festplattenlaufwerke 110a oder Halbleiter-Datenträger 110a, Arrays 110b aus Festplattenlaufwerken oder Halbleiter-Datenträgern, Bandlaufwerke 110c, Bandspeicherbibliotheken 110d, CD-ROM-Bibliotheken oder dergleichen. Wenn es sich bei dem Netzwerk 108 um ein SAN handelt, können die Server 106 und die Speichersysteme 110 unter Verwendung eines Vernetzungs-Standards wie etwa Fibre Channel (FC) Daten untereinander austauschen. Einige oder alle Computer 102, 106 können das System zum Zwischenspeichern nutzen, das hier beschrieben wird, um Daten zu speichern, die von den Speichereinheiten 110 abgerufen werden.
-
In 2 ist eine Ausführungsform eines Speichersystems 110b dargestellt, das ein Array aus Festplattenlaufwerken 204 und/oder Halbleiter-Datenträgern 203 enthält. Die internen Komponenten des Speichersystems 110b sind dargestellt, da das System zum Zwischenspeichern bei bestimmten Ausführungsformen in einem derartigen Speichersystem 110b umgesetzt sein kann, obwohl das System zum Zwischenspeichern auch bei anderen Speichersystemen 110 anwendbar ist. Das gezeigte Speichersystem 110b enthält eine Speichersteuereinheit 200, ein oder mehrere Switches 202 und eine oder mehrere Speichereinheiten 203, 204 wie etwa Festplattenlaufwerke 204 und/oder Halbleiter-Datenträger 203 (wie etwa Datenträger 203 auf der Grundlage von Flash-Speichern). Die Speichersteuereinheit 200 kann es einem oder mehreren Hosts 106 (z. B. Open-System- und/oder Mainframe-Servern 106) ermöglichen, auf Daten in dem einen oder den mehreren Speichereinheiten 203, 204 zuzugreifen.
-
Bei ausgewählten Ausführungsformen enthält die Speichersteuereinheit 200 einen oder mehrere Server 206. Die Speichersteuereinheit 200 kann außerdem Host-Adapter 208 und Einheitenadapter 210 enthalten, um die Speichersteuereinheit 200 mit Host-Einheiten 106 bzw. Speichereinheiten 203, 204 zu verbinden. Mehrere Server 206a, 206b können eine Redundanz schaffen, um sicherzustellen, dass Daten stets für angeschlossene Hosts 106 zur Verfügung stehen. Sollte ein Server 206a ausfallen, kann somit der andere Server 206 funktionsfähig bleiben, um sicherzustellen, dass E/A-Operationen zwischen den Hosts und den Speichereinheiten 203, 204 fortgesetzt werden können. Dieser Prozess kann als „Ausfallsicherung” (failover) bezeichnet werden.
-
Bei einem Beispiel eines Speichersystems 110b, das eine Architektur ähnlich zu der in 2 dargestellten Architektur aufweist, handelt es sich um das IBM® DS8000TM Firmen-Speichersystem. Bei dem DS8000TM handelt es sich um eine leistungsfähige Speichersteuereinrichtung mit hoher Kapazität, die einen Plattenspeicher bereitstellt, der so ausgelegt ist, dass er Dauerbetrieb unterstützt. Die Modelle der DS8000TM-Serien können IBM POWER5TM-Server 206a, 206b verwenden, die bei der IBM Technologie einer Virtualisierungs-Steuerungsroutine integriert sein können. Das hier offenbarte System zum Zwischenspeichern ist trotzdem nicht auf das IBM® DS8000TM Firmen-Speichersystem 110b beschränkt, sondern kann in jedem vergleichbaren oder analogen Speichersystem 110 umgesetzt sein, unabhängig von Hersteller, Produktbezeichnung oder Komponenten oder Komponentenbezeichnungen, die dem System 110 zugehörig sind. Des Weiteren wird angenommen, dass jedes System, das aus einer oder mehreren Ausführungsformen der Erfindung Nutzen ziehen könnte, in den Umfang der Erfindung fällt. Deswegen wird das IBM® DS8000TM lediglich beispielhaft dargestellt und soll nicht einschränkend sein.
-
Bei ausgewählten Ausführungsformen kann jeder Server 206 einen oder mehrere Prozessoren 212 (z. B. symmetrische n-Wege-Prozessoren) und einen Arbeitsspeicher 214 enthalten. Für den Arbeitsspeicher 214 kommen flüchtige Arbeitsspeicher (z. B. RAM) sowie nichtflüchtige Arbeitsspeicher (z. B. ROM, EPROM, EEPROM, Festplatten, Flash-Speicher usw.) infrage. Der flüchtige Arbeitsspeicher und der nichtflüchtige Arbeitsspeicher können bei bestimmten Ausführungsformen Softwaremodule speichern, die in dem (den) Prozessor(en) 212 betrieben und verwendet werden, um auf Daten in den Speichereinheiten 203, 204 zuzugreifen. Die Server 206 können wenigstens eine Instanz dieser Softwaremodule beherbergen. Diese Softwaremodule können alle Lese- und Schreibanforderungen an logische Speicherdatenträger in den Speichereinheiten 203, 204 verwalten.
-
Bei ausgewählten Ausführungsformen kann der Arbeitsspeicher 214 einen Cache-Speicher 218 enthalten. Wenn ein Host 106 (z. B. ein Open-System- oder Mainframe-Server 106) eine Leseoperation ausführt, kann der Server 106, der den Lesevorgang ausführt, Daten von den Speichereinheiten 203, 204 holen und sie für den Fall, dass sie erneut benötigt werden, in seinem Cache-Speicher 218 speichern. Wenn die Daten durch einen Host 106 erneut benötigt werden, kann der Server 206 die Daten von dem Cache-Speicher 218 holen, anstatt sie von den Speichereinheiten 203, 204 zu holen, wodurch Zeit und Ressourcen gespart werden. Wenn ein Host 106 in ähnlicher Weise einen Schreibvorgang ausführt, kann der Server 106, der die Schreibanforderung empfängt, die Schreibdaten in seinem Cache-Speicher 218 speichern und die Schreibdaten zu einem späteren Zeitpunkt zu den Speichereinheiten 203, 204 auslagern. Wenn Schreibdaten im Cache-Speicher 218 gespeichert sind, können die Schreibdaten außerdem in einem nichtflüchtigen Speicher (NVS) 220 des gegenüberliegenden Servers 206 gespeichert werden, so dass die Schreibdaten durch den gegenüberliegenden Server 206 wiederhergestellt werden können, wenn der erste Server 206 ausfällt.
-
Unter allgemeiner weiterer Bezugnahme auf 2 kann in 3 ein Speichersystem 110b wie zuvor erwähnt sowohl Festplattenlaufwerke 204 als auch Halbleiter-Datenträger (SSDs) 203 wie etwa Datenträger 203 auf der Grundlage von Flash-Speichern enthalten. Die Eingabe/Ausgabe-(E/A-)Leistung von SSDs 203 oder anderer Typen des Halbleiter-Arbeitsspeichers ist üblicherweise viel höher als die E/A-Leistung von Festplattenlaufwerken 204. Wegen der höheren E/A-Leistung können die Halbleiter-Datenträger 203 bei bestimmten Ausführungsformen verwendet werden, um einen großen sekundären Cache-Speicher 300 zwischen dem primären Cache-Speicher 218 und den Festplattenlaufwerken 204 bereitzustellen. Der große sekundäre Cache-Speicher 300 kann die E/A-Leistung des Speichersystems 110b erheblich verbessern und kann hier als ein „Flash-Cache-Speicher” bezeichnet werden.
-
Wenn bei Verwendung des sekundären Cache-Speichers 300 eine Leseanforderung durch einen Server 106 empfangen wird, kann der Server 106 anfangs in dem primären Cache-Speicher 218 nach Daten suchen, und wenn die Daten nicht vorhanden sind, in dem sekundären Cache-Speicher 300 (der sich in den Halbleiter-Datenträgern 203 befindet) nach den Daten suchen. Wenn die Daten in keinem Cache-Speicher zur Verfügung stehen, kann der Server 106 die Daten von den Plattenlaufwerken 204 abrufen. Wenn Daten geschrieben werden, kann ein Server 106 in ähnlicher Weise anfangs die modifizierten Daten in den primären Cache-Speicher 218 schreiben. Diese modifizierten Daten können schließlich zu dem sekundären Cache-Speicher 300 verschoben werden, um in dem primären Cache-Speicher 218 Platz zu schaffen. Diese Daten können dann bei Bedarf zu den Plattenlaufwerken 204 verschoben werden, um in dem sekundären Cache-Speicher 300 Platz zur Verfügung zu stellen.
-
Bei bestimmten Ausführungsformen kann der sekundäre Cache-Speicher 300 beispielsweise so dimensioniert sein, dass er etwa ein bis zwanzig Prozent oder bei weiteren Ausführungsformen etwa fünf Prozent der Gesamt-Datenspeicherkapazität des Speichersystems 110b bereitstellt. Somit können für ein Speichersystem 110b, das einen Datenspeicher von etwa zehn Terabyte (TB) (sowohl von den Festplattenlaufwerken 204 als auch den Halbleiter-Datenträgern 203) bereitstellt, etwa 0,5 TB dieses Speicherplatzes als sekundärer Cache-Speicher 300 verwendet werden. Bei einem derartig großen Umfang des sekundären Cache-Speichers 300 besteht die Möglichkeit, dass Daten weit weniger häufig als bei herkömmlichen primären und sekundären Cache-Speichern aus dem sekundären Cache-Speicher 300 verschoben werden. Beispielsweise könnte ein sehr großer sekundärer Cache-Speicher 300 Schreibdaten für einen ganzen Tag speichern, ohne dass er die Schreibdaten zu den Plattenlaufwerken 204 verschieben muss. Die Schreibdaten könnten dann nachts oder während einer Periode relativer Inaktivität verschoben werden. Algorithmen zum Cache-Speicher-Management können neu entwickelt werden, um den zusätzlichen Platz in dem sekundären Cache-Speicher 300 wirkungsvoll zu nutzen und Vorteile aus Leistungsverbesserungen zu ziehen, die unter Verwendung eines großen sekundären Cache-Speichers 300 möglich sind.
-
Wie in 3 gezeigt kann jeder Cache-Speicher 218, 300 Daten 302a, 302b und Metadaten 304a, 304b speichern. Wie aus 4 ersichtlich können die Daten 302a, 302b in Form von Spuren gespeichert werden. Jede Spur in dem sekundären Cache-Speicher 300 kann einen ihr zugehörigen Steuerblock der sekundären Spur (STCB) aufweisen. Der STCB kann hier außerdem als Cache-Speicher-Flash-Steuerblock (CFCB) bezeichnet werden. Gemeinsam mit weiteren Informationen kann der STCB für jede Spur einen Zeiger auf die nächste Spur in der Kette, Informationen, die angeben, ob die Spur frei ist oder verwendet wird, sowie Informationen, die angeben, welche Sektoren in der Spur modifiziert wurden, enthalten. Bei bestimmten Ausführungsformen können die STCBs für sämtliche Spuren in einer STCB-Tabelle 306 gespeichert werden, die in der gezeigten Weise in dem sekundären Cache-Speicher 300 oder an anderer Stelle gespeichert wird.
-
Außerdem kann jede Spur in dem sekundären Cache-Speicher 300 einen ihr zugehörigen Steuerblock des sekundären Stride (SSCB) aufweisen. Der SSCB kann wie der STCB diagnostische und/oder statistische Angaben enthalten, die jedoch Strides (Gruppen von Spuren) betreffen, die in dem sekundären Cache-Speicher 300 gespeichert sind. Der SSCB kann hier auch als Cache-Speicher-Flash-Element (CFE) bezeichnet werden. Bei bestimmten Ausführungsformen können die SSCBs für sämtliche Strides in einer SSCB-Tabelle 308 gespeichert werden, die in der gezeigten Weise in dem sekundären Cache-Speicher 300 oder an anderer Stelle gespeichert wird.
-
Der primäre Cache-Speicher 218 kann in ähnlicher Weise ebenfalls Metadaten 304a speichern, die dem sekundären Cache-Speicher 300 zugehörig sind. Der primäre Cache-Speicher 218 kann z. B. eine Indextabelle des sekundären Cache-Speichers (SCIT) 308 speichern, die ein Verzeichnis für Spuren in dem sekundären Cache-Speicher 300 bereitstellt. Bei bestimmten Ausführungsformen handelt es sich bei der SCIT 308 im Wesentlichen um eine Hash-Wert-Tabelle mit einer konstanten Hash-Funktion. Um eine spezielle Spur in der SCIT 308 zu lokalisieren, kann die Hash-Funktion eine Spurkennung (z. B. eine Spurnummer) in einen Hash-Wert umsetzen. Nach diesem Hash-Wert kann dann in der SCIT 308 gesucht werden, um den STCB für die Spur zu finden. Alternativ könnte die SCIT 308 in einem Cache-Speicher-Verzeichnis des primären Cache-Speichers 218 vorhanden sein, wodurch eine einzige Hash-Wert-Tabelle bereitgestellt wird, die Spuren sowohl für den primären als auch den sekundären Cache-Speicher 218, 300 speichert. Bei ausgewählten Ausführungsformen wird die SCIT 308 ausschließlich in dem primären Cache-Speicher 218 geführt. Die SCIT 308 kann (bei einem Failover, Failback oder anfänglichen Laden von Mikrocode (IML)) durch Lesen der STCB-Tabelle 306 in dem sekundären Cache-Speicher 300 gebildet oder neu gebildet werden.
-
Bei bestimmten Ausführungsformen kann der primäre Cache-Speicher 218 außerdem eine Liste freier Spuren (LOFT) 310 speichern, die angibt, welche Spuren in dem sekundären Cache-Speicher 300 frei (d. h. nicht gelegt) sind. Diese Liste 310 kann verwendet werden, um freien Platz in dem sekundären Cache-Speicher 300 zu lokalisieren, um Daten von dem primären Cache-Speicher 218 zu dem sekundären Cache-Speicher 300 zu verschieben. Bei ausgewählten Ausführungsformen kann ein Einfügen oder Entfernen von Spuren von der LOFT 310 in einer mittels Protokoll strukturierten Weise ausgeführt werden. Spuren können beispielsweise am Ende der LOFT 310 eingefügt und vom Anfang der LOFT 310 gelöscht werden. Die LOFT 310 kann ausschließlich in dem primären Cache-Speicher 218 geführt werden und kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cache-Speicher 300 gebildet oder neu gebildet werden.
-
Der primäre Cache-Speicher 218 kann außerdem einen sortierten Baum von Spuren (DTOT) 312 speichern, bei dem die Spuren durch „trackid” oder eine andere Angabe sortiert sind. Die STOT 312 kann verwendet werden, um eine Suchdauer (auf den Plattenlaufwerken 204) auf ein Mindestmaß zu begrenzen, wenn Spuren von dem sekundären Cache-Speicher 300 zu den Plattenlaufwerken 204 verschoben werden. Die STOT 312 kann ausschließlich in dem primären Cache-Speicher 218 geführt werden und kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cache-Speicher 300 gebildet oder neu gebildet werden.
-
Der primäre Cache-Speicher 218 kann außerdem statistische Angaben pro Stride-Element (STATS) 314 für jedes Stride-Element speichern, das in dem sekundären Cache-Speicher 300 eine oder mehrere Spuren aufweist. Ein „Stride-Element” bezeichnet eine Gruppe von logisch aufeinanderfolgenden Datenelementen, die möglicherweise über mehrere Platten segmentiert sind, verknüpft mit zusätzlichen Paritätsangaben, die beispielsweise bei einer RAID5-Konfiguration (Redundant Array of Inexpensive Disks) verwendet werden. Die STATS 314 können im Allgemeinen verwendet werden, um zu ermitteln, welche Spuren die geringste Anzahl von Plattenoperationen („disk ops”) zum Verschieben von dem sekundären Cache-Speicher 300 zu den Plattenlaufwerken 204 benötigen. Im Allgemeinen ist der Nachteil beim Verschieben einer Spur geringer, wenn in einem Stride-Element eine größere Anzahl von Spuren vorhanden ist. Wenn Spuren zum Verschieben ausgewählt werden, können Spuren, die die geringste Anzahl von Plattenoperationen (disk ops) erfordern, zuerst verschoben werden, um die Ressourcennutzung auf ein Mindestmaß zu begrenzen. Bei ausgewählten Ausführungsformen können die STATS 314 Angaben speichern wie etwa die Anzahl von Spuren, die in dem sekundären Cache-Speicher 300 für jedes Stride-Element vorhanden sind, und die Anzahl von Plattenoperationen (disk ops), die erforderlich sind, um eine Spur in ein Stride-Element zu verschieben. Bei bestimmten Ausführungsformen können die STATS 314 ein „Aktualitäts”-Bit für jedes Stride-Element speichern. Das Aktualitätsbit kann immer dann gesetzt werden, wenn ein Ausweisungsprozess durch ein Stride-Element verläuft. Das Aktualitätsbit kann immer dann zurückgesetzt werden, wenn eine Spur einem Stride-Element hinzugefügt wird. Das Aktualitätsbit kann verwendet werden, um Stride-Elemente in dem sekundären Cache-Speicher 300 zu halten, auf die aktiv geschrieben wird. Die STATS 314 können ausschließlich in dem primären Cache-Speicher 218 geführt werden und können durch Lesen der STCB-Tabelle 306 in dem sekundären Cache-Speicher 300 gebildet oder neu gebildet werden.
-
Die oben beschriebenen Metadaten 304a, 304b können auf zahlreiche verschiedene Arten strukturiert und gespeichert werden und sind nicht auf die dargestellte Struktur und Organisation beschränkt. Die Metadaten 304a, 304b werden beispielhaft bereitgestellt, um eine Technik zum Speichern und Strukturieren der Metadaten 304a, 304b zu zeigen. Bei bestimmten Ausführungsformen können die Daten und die Metadaten beispielsweise gemeinsam in dem sekundären Cache-Speicher 300 in einem kreisförmigen, mittels Protokoll strukturierten Array gespeichert werden. Weitere Verfahren zum Strukturieren und Speichern von Metadaten 304a, 304b können verwendet werden und sind in dem Umfang der Erfindung eingeschlossen.
-
Wie zuvor erwähnt besteht ein Vorteil eines großen sekundären Cache-Speichers 300 darin, dass Daten von dem sekundären Cache-Speicher 300 weit weniger häufig als bei herkömmlichen sekundären Cache-Speichern verschoben werden können. Dadurch besteht die Möglichkeit, dass mehr Daten in dem sekundären Cache-Speicher 300 angesammelt werden, bevor sie zu den Plattenlaufwerken 204 verschoben werden. Dementsprechend können bei ausgewählten Ausführungsformen eine Vorrichtung und ein Verfahren gemäß der Erfindung so eingerichtet werden, dass sie abwarten, bis volle Stride-Elemente von Daten in dem sekundären Cache-Speicher 300 akkumuliert und zusammengefügt werden, bevor die Daten zu den Plattenlaufwerken 204 verschoben werden. Wie oben erläutert kann dadurch die Anzahl von Plattenoperationen (disk ops) auf ein Mindestmaß begrenzt werden, die erforderlich sind, um Daten von dem sekundären Cache-Speicher 300 zu den Plattenlaufwerken 204 zu verschieben, wodurch die Gesamtsystemleistung verbessert wird.
-
In 4 können bei bestimmten Ausführungsformen Verschiebungen aus dem sekundären Cache-Speicher 300 auf der Grundlage eines Belegungsgrads ausgeführt werden. Es können beispielsweise drei Bereiche in dem sekundären Cache-Speicher 300 definiert werden: (1) Ruhezustand; (2) Auslöser; und (3) hohe Priorität. Wenn der Belegungsgrad des sekundären Cache-Speichers 300 im Bereich Ruhezustand ist (der sekundäre Cache-Speicher 300 ist z. B. zwischen null und fünfzig Prozent gefüllt), werden möglicherweise keine Daten aus dem Cache-Speicher 300 verschoben. Wenn in ähnlicher Weise der Belegungsgrad des Cache-Speichers in dem Bereich Auslöser liegt (der sekundäre Cache-Speicher 300 ist z. B. zwischen fünfzig und siebzig Prozent gefüllt), können Cache-Speicher-Verschiebungen in einer normalen Betriebsart ausgeführt werden, bis der Belegungsgrad des Cache-Speichers in dem Bereich Ruhezustand liegt. Wenn in ähnlicher Weise der Belegungsgrad des Cache-Speichers in dem Bereich hohe Priorität liegt (der sekundäre Cache-Speicher 300 ist z. B. mehr als siebzig Prozent gefüllt), können Cache-Speicher-Verschiebungen in einer Betriebsart mit hoher Priorität ausgeführt werden, bis der Belegungsgrad des Cache-Speichers wieder im Bereich Ruhezustand liegt. Die numerischen Bereiche, die oben bereitgestellt wurden, werden lediglich beispielhaft dargestellt und sollen nicht einschränkend sein. Unabhängig von der Verschiebungs-Betriebsart kann der Verschiebungsprozess Spuren verschieben, die die geringste Anzahl von Plattenoperationen zum Verschieben benötigen.
-
Wie oben erwähnt können Probleme infolge des Schreibens von teilweise gefüllten (unvollständigen) Datensegmenten in den sekundären Cache-Speicher, einschließlich des Verschwendens von wertvollem Speicherplatz und des Auftretens zusätzlicher E/A-Operationen entstehen. Die Mechanismen der vorliegenden Erfindung dienen dazu, diese Probleme durch Umsetzen von zahlreichen Strategien für ein wirksameres Unterstützen von unvollständigen Datensegmenten in dem sekundären Cache-Speicher zu lösen. Zu diesen Strategien gehören die folgenden möglichen Umsetzungen, die weiter beschrieben werden. Bei einer ersten Ausführungsform werden die unvollständigen Datensegmente oder Spuren als vollständige Spuren (mit Leerstellen oder fehlenden Daten) in den sekundären Cache-Speicher geschrieben. Bei einer zweiten Ausführungsform werden die unvollständigen Spuren in ein oder mehreren Cache-Speicher-Flash-Elemente (CFEs) dicht gepackt. Bei einer dritten möglichen Ausführungsform werden verschiedene Abschnitte oder Datenseiten der Spuren über Segmente des sekundären Cache-Speichers verstreut, wenn Speicherplatz lokalisiert wird.
-
Zunächst in 5 ist ein erstes beispielhaftes Verfahren zum Unterstützen von unvollständigen Datensegmenten in einem sekundären Cache-Speicher (Flash-Cache-Speicher) in einer Datenverarbeitungsumgebung mit zwei Ebenen des Cache-Speichers mit geringerer und höherer Geschwindigkeit dargestellt. Bei der dargestellten Ausführungsform ist der sekundäre Cache-Speicher als die Cache-Speicher-Ebene mit geringerer Geschwindigkeit dargestellt, und der Cache-Speicher mit höherer Geschwindigkeit kann wie in einer vorhergehenden beispielhaften Darstellung in der Speichersteuereinheit als DRAM-Cache-Speicher umgesetzt sein. Ein Verfahren 500 beginnt (Schritt 502), wenn ein Mechanismus zum Verschieben von Daten eingerichtet wird. Der Mechanismus zum Verschieben von Daten ist so ausgelegt, dass er zuerst ermöglicht, dass unvollständige Datensegmente länger in der höheren Ebene des Cache-Speichers bleiben als vollständige Datensegmente (Schritt 504). Mit anderen Worten, der Mechanismus zum Verschieben von Daten sieht Operationen bei einer integrierten Bevorzugung des Verschiebens von vollständigen Datensegmenten zu dem Flash-Cache-Speicher gegenüber den unvollständigen Datensegmenten in der Hoffnung vor, dass die Leerstellen in den unvollständigen Datensegmenten gefüllt werden.
-
Der Mechanismus zum Verschieben von Daten ist ferner so ausgelegt, dass er eine Bevorzugung der Datenverschiebung der unvollständigen Datensegmente zu dem Cache-Speicher mit geringerer Geschwindigkeit (wiederum z. B. ein Flash-Cache-Speicher) anhand von verschiedenen Maßzahlen umsetzt. Bei zwei möglichen derartigen Maßzahlen handelt es sich um die Anzahl von Leerstellen und die „Aktualität” von Daten oder eine Daten-Vergleichsmaßzahl (Schritt 506). Diese Maßzahlen werden in einer folgenden beispielhaften Situation weiter beschrieben. Eine Zielsetzung der zuvor beschriebenen Bevorzugung einer Datenverschiebung besteht darin, einen größeren Platz in dem schnelleren Cache-Speicher bei einer nachfolgenden Verschiebungsoperation freizugeben (wobei eine größere Anzahl von Daten verschoben wird) und sie zu einem einzigen Schreibvorgang in den sekundären langsameren Cache-Speicher zu verschmelzen. Das Verfahren 500 wird dann beendet (Schritt 508).
-
Wie zuvor beschrieben werden bei einer möglichen Ausführungsform des Mechanismus zum Verlagern von Daten, der oben in 5 dargestellt ist, die unvollständigen Datensegmente über Abschnitte des sekundären Cache-Speichers geschrieben, wenn Speicherplatz zur Verfügung steht. Um die verstreuten Daten zu lokalisieren, können Zeiger in dem Cache-Speicher-Flash-Steuerblock (wiederum CFCB) benutzt werden. Die folgende 6 veranschaulicht einen derartigen Mechanismus, der durch ein Verfahren 600 gezeigt ist, das beginnt (Schritt 602), indem Speicherseiten einer Spur über einen Flash-Cache-Speicher verteilt werden, wenn Speicherplatz zur Verfügung steht, wobei diese Speicherseiten unter Verwendung von Zeigern in einem oder mehreren CFCBs lokalisiert werden (Schritt 604). Das Verfahren 600 wird dann beendet. Zu Vorteilen der vorhergehenden Ausführungsform gehören ein Verringern und/oder Beseitigen von wertvollem Speicherplatz in dem sekundären Cache-Speicher und dass keine zusätzlichen E/A-Operationen benötigt werden.
-
Eine zusätzliche mögliche Umsetzung eines Mechanismus zum Verlagern von Daten beinhaltet das Schreiben der unvollständigen Spur(en) als vollständige Spuren (mit den Daten-Leerstellen) in den sekundären Cache-Speicher in Abhängigkeit von verschiedenen Faktoren. Die folgende 7 veranschaulicht einen derartigen Mechanismus zum Verlagern von Daten, der als Verfahren 700 ausgeführt ist. Das Verfahren 700 beginnt (Schritt 702) mit dem Ermitteln, ob das fragliche Datensegment eine unvollständige Spur ist (Schritt 704). Wenn das nicht der Fall ist, geht das Verfahren 700 zum Schritt 705, in dem die vollständige Spur in den Flash-Cache-Speicher geschrieben wird. Das Verfahren 700 wird dann beendet (Schritt 716). Das Verfahren 700 fragt ab, ob die unvollständige Spur eine „aktuellere” Daten-Vergleichsmaßzahl aufweist (mit anderen Worten, die Daten werden im Vergleich mit anderen Daten häufiger verwendet). Wenn das der Fall ist, geht das Verfahren 700 zum Schritt 708, in dem das Verfahren 700 abfragt, ob das fragliche unvollständige Datensegmente weniger als eine im Voraus festgelegte Anzahl „N” von Leerstellen aufweist. Wenn das der Fall ist, geht das Verfahren zum Schritt 710, in dem das unvollständige Datensegment in den sekundären Cache-Speicher geschrieben wird (Schritt 710). Bei einer alternativen Ausführungsform kann in ähnlicher Weise der Umfang der Leerstelle(n) bei einer Entscheidung, das unvollständige Datensegment zu schreiben, gewichtet werden.
-
Wenn das Datensegment im Schritt 706 keine aktuellere Daten-Vergleichsmaßzahl aufweist und nicht weniger als N Leerstellen vorhanden sind, geht das Verfahren 700 zum Schritt 712, in dem das unvollständige Datensegment verworfen wird. Das Verfahren 700 wird dann beendet (wiederum Schritt 716). Im Schritt 710 und wie bei einer optionalen Ausführungsform umgesetzt sein kann, geht das Verfahren 700 dann zu dem Sicherungsspeicher zurück, um die fehlenden Abschnitte des unvollständigen Datensegments zu lesen und einzufügen (Schritt 714). Das Verfahren wird dann beendet (wieder Schritt 716). Das Verwenden der vorhergehenden beispielhaften Mechanismen, die in 7 dargestellt sind, ermöglicht, dass die unvollständigen Datensegmente länger in der schnelleren Cache-Speicher-Ebene (z. B. DRAM-Cache-Speicher) bleiben als vollständige Datensegmente. Einem Fachmann ist klar, dass die im Voraus festgelegte Anzahl N und/oder der Umfang der Leerstelle(n) gemäß einer besonderen Ausführungsform variiert werden können.
-
Eine zusätzliche mögliche Ausführungsform zum Umsetzen eines Mechanismus zum Verlagern von Daten gemäß der zuvor in 5 gezeigten Darstellung beinhaltet wie oben beschrieben dichtes Packen der unvollständigen Datensegmente in ein oder mehrere Cache-Speicher-Flash-Elemente (CFEs). In 8 ist ein beispielhaftes Verfahren 800 zum Ausführen einer derartigen Operation dargestellt und beginnt (Schritt 802) mit dem dichten Packen der unvollständigen Spuren (d. h. dem Entfernen von dazwischenliegenden Leerstellen) in die CFE(s) (Schritt 804). Bei einem nachfolgenden Schritt können die CFEs anschließend einer dynamischen Speicherbereinigung unterzogen werden (Schritt 806). Mit anderen Worten, Abschnitte von Daten in einem oder mehreren CFEs können nach dem Schritt des Packens als Ausschussdaten gekennzeichnet und zurückgewonnen werden. Das Verfahren 800 wird dann beendet (Schritt 808). Da möglicherweise zusätzlicher Speicherplatz des sekundären Cache-Speichers benötigt wird, um Mechanismen zum Sammeln von Ausschussdaten umzusetzen, kann bei weiteren Ausführungsformen ein alternativer Mechanismus umgesetzt werden, der die Datensegmente aus den CFEs nicht zurückgewinnt. Mit anderen Worten, sämtliche zugehörige Datensegmente werden möglicherweise auf einmal ausgelagert.
-
Einem Fachmann ist klar, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden können. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform, die Software- und Hardware-Aspekte kombiniert, annehmen, die hier alle 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, die computerlesbaren Programmcode aufweisen, der darin ausgeführt wird.
-
Jede Kombination aus einem oder mehreren nichtflüchtigen computerlesbaren Medien kann genutzt werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Speichermedium oder ein computerlesbares Signalmedium handeln. Ein computerlesbares Speichermedium kann z. B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede geeignete Kombination des Vorhergehenden sein, ist jedoch nicht darauf beschränkt. Zu spezifischeren Beispielen (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums würde Folgendes gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compactdisk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorhergehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung enthalten oder speichern kann.
-
Programmcode, der auf einem computerlesbaren Medium verkörpert ist, kann unter Verwendung jedes geeigneten Mediums übertragen werden, darunter drahtlose, leitungsgestützte, Lichtwellenleiterkabel-, HF-Medien, usw. oder jede geeignete Kombination aus dem Vorhergehenden, ohne darauf beschränkt zu sein. Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache ”C” oder ähnliche Programmiersprachen. Der Programmcode kann nur auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als ein eigenständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder nur auf dem fernen Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der ferne Computer mit dem Computer des Benutzers durch jeden Netzwerktyp verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer (z. B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
-
Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch Computerprogrammbefehle implementiert werden können. Diese Computerprogrammbefehle können an einen Prozessor eines Universalcomputers, eines Spezialcomputers oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds spezifiziert sind, erzeugen.
-
Diese Computerprogrammbefehle können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand produzieren, zu dem Befehle gehören, die die Funktion/Wirkung umsetzen, die in dem Block/den Blöcken des Ablaufplans und/oder Blockschaubilds spezifiziert sind. Computerprogrammbefehle können außerdem in einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden, um eine Reihe von Operationsschritten zu bewirken, die auf dem Computer, der anderen programmierbaren Datenverarbeitungsvorrichtung oder anderen Einheiten ausgeführt werden sollen, um einen durch einen Computer implementierten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaubilds spezifiziert sind, bereitzustellen.
-
Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Operation von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder Blockschaubildern ein Modul, Segment oder Abschnitt von Code repräsentieren, der einen oder mehrere ausführbare Befehle zum Umsetzen der spezifizierten logischen Funktion(en) umfasst. Es sollte außerdem angemerkt werden, dass bei einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen nicht in der in den Figuren angegebenen Reihenfolge auftreten. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können gelegentlich in Abhängigkeit von der beteiligten Funktionalität in der umgekehrten Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block in den Blockschaubildern und/oder Ablaufplan-Darstellungen und Kombinationen von Blöcken in den Blockschaubildern und/oder Ablaufplan-Darstellung durch Systeme, die auf spezieller Hardware beruhen, die die spezifizierten Funktionen oder Wirkungen ausführen, oder Kombinationen aus spezieller Hardware und Computerbefehlen umgesetzt werden können.
-
Zwar wurden eine oder mehrere Ausführungsformen der vorliegenden Erfindung genau beschrieben, einem Fachmann ist jedoch klar, dass Modifikationen und Anpassungen an diesen Ausführungsformen ausgeführt werden können, ohne vom Umfang der Erfindung abzuweichen, die in den nachfolgenden Ansprüchen dargestellt ist.