-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren zum Cachespeicher-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher.
-
Beschreibung des Standes der Technik
-
Ein Cachespeicher-Managementsystem führt Zwischenspeichern von Spuren, auf die vor Kurzem zugegriffen wurde, in einer Speichereinheit als Ergebnis von Lese- und Schreiboperationen in einer Speichereinheit mit einem schnelleren Zugriff als dem bei der Speichereinheit durch, die die angeforderten Spuren speichert, wie beispielsweise einem Hauptspeicher (memory). Nachfolgende Leseanforderungen auf Spuren in dem Cachespeicher mit dem schnelleren Zugriff werden mit einer höheren Geschwindigkeit zurückgegeben als die angeforderten Spuren von dem Speicher mit dem langsameren Zugriff, womit die Leselatenz verringert wird. Das Cachespeicher-Managementsystem kann auch vollständig zu einer Schreibanforderung zurückkehren, wenn die an die Speichereinheit gerichtete modifizierte Spur in den Cachespeicher geschrieben wird und bevor die modifizierte Spur heraus auf die Speichereinheit wie beispielsweise ein Festplattenwerk geschrieben wird. Die Latenz zum Schreiben auf die Speichereinheit ist normalerweise deutlich länger als die Latenz zum Schreiben auf einen Cachespeicher. Auf diese Weise wird durch Verwenden des Cachespeichers auch die Schreiblatenz verringert.
-
Ein Cachespeicher-Managementsystem kann eine verkettete Liste mit einem Eintrag für jede in dem Cachespeicher gespeicherte Spur führen, die Schreibdaten, die vor ihrem Schreiben auf die Speichereinheit in dem Cachespeicher zwischengespeichert werden, oder Lesedaten aufweisen kann. Wenn bei dem allgemein verwendeten Verfahren mit dem am wenigsten aktuell verwendeten Cachespeicher, Least Recently Used-(LRU)Cache, auf eine Spur in dem Cachespeicher zugegriffen wird, d. h. ein Cachespeicher-„Treffer” („cache hit”) ausgeführt wird, wird der Eintrag in der LRU-Liste für die zugegriffene Spur an ein am aktuellsten verwendetes Ende (Most Recently Used, MRU) der Liste verschoben. Falls die angeforderte Spur nicht in dem Cachespeicher vorhanden ist, d. h. es sich um einen Cachespeicher-Fehltreffer (cache miss) handelt, kann die Spur in dem Cachespeicher, deren Eintrag sich an dem am wenigsten aktuell verwendeten (LRU-)Ende der Liste befindet, entfernt (oder zurück in den Speicher (storage) ausgelesen) werden, und ein Eintrag für die Spurdaten, die von dem Speicher in den Cachespeicher gelesen (staged) werden, wird dem MRU-Ende der LRU-Liste hinzugefügt. Bei diesem Verfahren mit dem am wenigsten aktuell verwendeten Cachespeicher (LRU-Cachespeicher) verbleiben Spuren, auf die öfter zugegriffen wird, wahrscheinlich in dem Cachespeicher, wohingegen Daten, auf die weniger häufig zugegriffen wird, mit Wahrscheinlichkeit von dem LRU-Ende der Liste entfernt werden, um Platz in dem Cachespeicher für Spuren zu schaffen, auf die erstmalig zugegriffen wird.
-
Bei dem LRU-Cachespeicher-Verfahren wird versucht, die temporäre Lokalität zu optimieren, indem Spuren ausgelesen (destaged) werden, die mit der geringsten Wahrscheinlichkeit bald erneut geschrieben werden, um die Anzahl an Aussortierungsoperationen zu minimieren, d. h. wenn ein Schreibvorgang, der nicht ausgelesen wird, überschrieben wird, dann wird das Auslesen des überschriebenen Schreibvorgangs vermieden, wodurch Zeit und Aufwand zum Schreiben der Daten von dem Cachespeicher auf die Platte eingespart wird. Des Weiteren besteht ein Wunsch dahingehend, das Auslesen so durchzuführen, dass räumliche Lokalität ausgenutzt wird, was bedeutet, dass Daten an Speicherorte geschrieben werden, die am nächsten zueinander liegen, um die Entfernung zu optimieren, über die die Speichereinheit-Schreibmechanismen und die Speichermedien verschoben werden müssen, um den nächsten Speicherort, an den geschrieben werden soll, zu erreichen.
-
Ein Verfahren zum Ausnutzen von sowohl zeitlicher als auch räumlicher Lokalität ist der Wise Ordering for Writes(WOW)-Algorithmus. Der WOW-Algorithmus verwendet eine kreisförmig verkettete Liste oder eine Zeiteinteilung (clock), wobei die kreisförmig verkettete Liste einen Eintrag für jede in einem Cachespeicher zwischengespeicherte Schreibanforderung besitzt. Die Einträge werden in der verketteten Liste entsprechend dem Speicherort geordnet, an den die dazugehörige Schreibanforderung gerichtet wird, um die Vorteile räumlicher Lokalität auszunutzen. Des Weiteren weist jeder Eintrag ein Bit auf, das anzeigt, ob die Schreibdaten für den Speicherort in dem Cachespeicher kürzlich aktualisiert worden sind. Das Bit für einen Eintrag wird gesetzt, wenn die Schreibdaten für den Eintrag aktualisiert werden. Ein Zeiger zeigt auf einen aktuellen Eintrag in der kreisförmigen verketteten Liste. Bei einer Aufgabe, die den WOW-Algorithmus verwendet, wird auf einen von dem Zeiger adressierten Eintrag zugegriffen. Zeigt das Bit für den Eintrag an, dass die Daten für den Eintrag in dem Cachespeicher kürzlich aktualisiert worden sind, wird das Bit so gesetzt, um anzuzeigen, dass die Schreibdaten nicht vor kurzem aktualisiert worden sind, und der Zeiger wird so erhöht, dass er auf den nächsten Eintrag zeigt, so dass der Eintrag, der Schreibdaten für einen Speicherort aufweist, der sich räumlich am nächsten zu dem vorher geschriebenen Speicherort befindet, berücksichtigt wird. Es wird der Eintrag zum Schreiben ausgewählt, der sich räumlich am nächsten zu dem zuletzt geschriebenen Speicherort befindet und dessen Bit anzeigt, dass die Schreibdaten für den Eintrag nicht vor kurzem aktualisiert worden sind.
-
Auf diese Weise wird mit dem WOW-Algorithmus räumliche Lokalität ausgenutzt, da ein nächster zu schreibender Eintrag zur Berücksichtigung ausgewählt wird, der sich räumlich am nächsten zu der zuletzt ausgelesenen Schreibanforderung befindet. Des Weiteren wird auch zeitliche Lokalität ausgenutzt, da ein Eintrag, der vor kurzem aktualisiert worden ist, so lange übersprungen wird, bis sich der Zeiger kreisförmig zurück zu diesem übersprungenen zu berücksichtigenden Eintrag bewegt.
-
Plattenlaufwerke können den WOW-Algorithmus sowie weitere Algorithmen implementieren, die sowohl die lineare als auch Winkelposition der Schreibspuren berücksichtigen und eine Optimierung beider in Bezug auf eine aktuelle Schreibkopfposition durchführen, um die minimale Gesamtleistungszeit zu ermitteln.
-
Dieser Prozess wird als „Command re-ordering based on seek and rotational optimization” („Befehlsneuanordnung auf der Grundlage von Suche und rotierender Optimierung”) bezeichnet. Die Logikboards der Plattenlaufwerke analysieren Schreibanforderungen und ermitteln auf der Grundlage von sowohl wie viel Zeit es dauern wird, die verschiedenen Zylinder und Winkelpositionen der zu beschreibenden Spur zu suchen, als auch wie viel Zeit während des Wartens für das Rotieren der Daten unter den Köpfen verstreichen wird, welche zuerst zu bearbeiten ist.
-
Auf dem Gebiet der Technik besteht ein Bedarf an verbesserten Verfahren zur Verwendung eines Cachespeichers in einem Speichersystem.
-
KURZDARSTELLUNG
-
Es werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Cachespeicher-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher bereitgestellt. Der erste Cachespeicher führt modifizierte und unmodifizierte Spuren in dem Speicher, der Eingabe/Ausgabe (E/A) Anforderungen unterliegt. Modifizierte und unmodifizierte Spuren werden von dem ersten Cachespeicher zurückgesetzt. Die von dem ersten Cachespeicher zurückgesetzten modifizierten und unmodifizierten Spuren werden an den zweiten Cachespeicher weitergegeben. Die von dem zweiten Cachespeicher zurückgesetzten modifizierten und unmodifizierten Spuren werden verworfen. Die modifizierten Spuren in dem zweiten Cachespeicher, die sich an naheliegenden physischen Orten auf der Speichereinheit befinden, werden gruppiert, und die gruppierten modifizierten Spuren werden von dem zweiten Cachespeicher an die Speichereinheit ausgelesen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung.
-
2 veranschaulicht eine Ausführungsform von ersten Cachespeicher-Managementdaten.
-
3 veranschaulicht eine Ausführungsform von zweiten Cachespeicher-Managementdaten.
-
4 veranschaulicht eine Ausführungsform eines ersten Cachespeicher-Steuerblockes.
-
5 veranschaulicht eine Ausführungsform eines zweiten Cachespeicher-Steuerblockes.
-
6 veranschaulicht eine Ausführungsform eines Eintrages in einem räumlichen Index.
-
7 veranschaulicht eine Ausführungsform von Operationen zum Zurücksetzen unmodifizierter Spuren von dem ersten Cachespeicher.
-
8 veranschaulicht eine Ausführungsform von Operationen zum Auslesen modifizierter Spuren von dem ersten Cachespeicher.
-
9 veranschaulicht eine Ausführungsform von Operationen zum Hinzufügen einer Spur zu dem ersten Cachespeicher.
-
10 veranschaulicht eine Ausführungsform von Operationen zum Weitergeben einer Spur an den zweiten Cachespeicher.
-
11 veranschaulicht eine Ausführungsform von Operationen zum Freimachen von Platz in dem zweiten Cachespeicher.
-
12 veranschaulicht eine Ausführungsform von Operationen zum Auslesen modifizierter Spuren von dem zweiten Cachespeicher.
-
13 veranschaulicht eine Ausführungsform von Operationen zum Verarbeiten einer Anforderung für Spuren, die an eine Leseanforderung zurückgegeben werden sollen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung. Eine Vielzahl von Hosts 2a, 2b...2n kann Eingabe/Ausgabe-(E/A)Anforderungen über ein Netzwerk 6 an einen Speicher-Controller 4 ausgeben, um einen Zugriff auf Daten auf Datenträgern 8 (z. B. Logical Unit Numbers, Logical Devices, Logical Subsystems, usw.) in einem Speicher 10 vorzunehmen. Der Speicher-Controller 4 weist einen Prozessorkomplex 12, aufweisend einen oder mehrere Prozessoren mit einem oder mehreren Kernen, einen ersten Cachespeicher 14, eine erste Cachespeicher-Backup-Einheit 16 zum Sichern von Spuren in dem Cachespeicher 14 und einen zweiten Cachespeicher 18 auf. Der erste Cachespeicher 14 und der zweite Cachespeicher 18 cachen Daten, die zwischen den Hosts 2a, 2b...2n und dem Speicher 10 übertragen werden. Die erste Cachespeicher-Backup-Einheit 16 kann ein nichtflüchtiges Speichern von Spuren in dem ersten Cachespeicher 14 bereitstellen. In einer weiteren Ausführungsform kann die erste Cachespeicher-Backup-Einheit 16 in einem Cluster oder einer Hardware auf einem anderen Stromkreislauf (power boundary) als dem des ersten Cachespeichers 14 angeordnet sein.
-
Der Speicher-Controller 4 besitzt einen Speicher 20, der einen Speicher-Manager 22 zum Verwalten der Übertragung von zwischen den Hosts 2a, 2b...2n und dem Speicher 10 übertragenen Spuren sowie einen Cachespeicher-Manager 24, der die zwischen den Hosts 2a, 2b...2n und dem Speicher 10 in dem ersten Cachespeicher 14 übertragenen Daten verwaltet, eine erste Cachespeicher-Backup-Einheit 16 und den zweiten Cachespeicher 18 aufweist. Eine Spur kann eine jede beliebige Einheit von in dem Speicher 10 konfigurierten Daten wie beispielsweise eine Spur, eine Logikblockadresse (Logical Block Address, LBA)) usw. aufweisen, die Teil einer größeren Gruppierung von Spuren wie beispielsweise eines Datenträgers, einer Logikeinheit usw. ist. Der Cachespeicher-Manager 24 führt erste Cachespeicher-Managementdaten 26 und zweite Cachespeicher-Managementdaten 28 zum Verwalten von (unmodifizierten) Lese- und (modifizierten) Schreibspuren in dem ersten Cachespeicher 14 und dem zweiten Cachespeicher 18. Ein Index 30 einer ersten Cachespeicher-Backup-Einheit liefert einen Index von Spurenkennungen zu einem Ort in der ersten Cachespeicher-Backup-Einheit 16.
-
Der Speicher-Manager 22 und ein Cachespeicher-Manager 24 sind in 1 dargestellt, wenn ein Programmcode in den Speicher 20 geladen und von dem Prozessorkomplex 12 ausgeführt wird. Alternativ dazu können einige oder alle Funktionen in Hardware-Einheiten in dem Speicher-Controller 4 wie beispielsweise in anwendungsspezifischen integrierten Schaltungen (Application Specific Integrated Circuits, ASICs) implementiert werden.
-
Der zweite Cachespeicher 18 kann Spuren in einem Log Structured Array (LSA) 32 speichern, wobei Spuren in der Reihenfolge, wie sie empfangen werden, in einer sequenziellen Reihenfolge geschrieben werden und auf diese Weise ein zeitliches Ordnen der Spuren, die in den zweiten Cachespeicher 18 geschrieben werden, bereitgestellt wird. In einem LSA werden spätere Versionen von bereits in dem LSA vorhandenen Spuren an das Ende des LSA 32 geschrieben. In alternativen Ausführungsformen kann der zweite Cachespeicher 18 Daten in anderen Formaten als in einem LSA speichern.
-
In einer Ausführungsform kann der erste Cachespeicher 14 einen Arbeitsspeicher (RAM) wie beispielsweise einen dynamischen Arbeitsspeicher (DRAM) aufweisen, und der zweite Cachespeicher 18 kann einen Flash-Speicher wie beispielsweise eine Halbleiter-Einheit aufweisen, und der Speicher 10 ist aus einer oder mehreren Speichereinheiten mit sequenziellem Zugriff wie beispielsweise Festplattenlaufwerken und Magnetband gebildet. Der Speicher 10 kann eine einzige Speichereinheit mit sequenziellem Zugriff oder eine Anordnung aus Speichereinheiten wie beispielsweise eine Anordnung aus Just a Bunch of Disks (JBOD), Direct Access Storage Device (DASD), Redundant Array of Independent Disks (RAID), eine Virtualisierungseinheit usw. aufweisen. In einer Ausführungsform handelt es sich bei dem ersten Cachespeicher 14 um eine Speichereinheit mit einem schnelleren Zugriff als der des zweiten Cachespeichers 18, und bei dem zweiten Cachespeicher 18 handelt es sich um eine Speichereinheit mit einem schnelleren Zugriff als der des Speichers 10. Des Weiteren kann der erste Cachespeicher 14 höhere Kosten pro Speicherplatzeinheit als der zweite Cachespeicher 18 aufweisen, und der zweite Cachespeicher 18 kann höhere Kosten pro Speicherplatzeinheit als Speichereinheiten in dem Speicher 10 aufweisen.
-
Der erste Cachespeicher 14 kann Teil des Speichers 20 sein oder in einer separaten Speichereinheit wie beispielsweise einem DRAM implementiert sein. In einer Ausführungsform kann die erste Cachespeicher-Backup-Einheit 16 einen nichtflüchtigen Backup-Speicher (NVS, non-volatile backup-storage) wie beispielsweise einen nichtflüchtigen Speicher z. B. einen batteriegepufferten Arbeitsspeicher (RAM), einen statischen RAM (SRAM) usw. aufweisen.
-
Das Netzwerk 6 kann ein Speichernetzwerk (SAN), ein Lokalnetz (LAN), ein Weitverkehrsnetz (WAN), das Internet und Intranet usw. aufweisen.
-
2 veranschaulicht eine Ausführungsform der ersten Cachespeicher-Managementdaten 26 aufweisend einen Spurenindex 50, der einen Index an Spuren in dem ersten Cachespeicher 14 zum Steuern von Blöcken in einem Steuerblock-Verzeichnis 52 aufweist; eine Liste von nicht modifizierten sequenziellen LRU 54, die eine zeitliche Reihenfolge unmodifizierter sequenzieller Spuren in dem ersten Cachespeicher 14 bereitstellt; eine Liste modifizierter LRU 56, die eine zeitliche Reihenfolge modifizierter sequenzieller und nichtsequenzieller Spuren in dem ersten Cachespeicher 14 bereitstellt; und eine Liste unmodifizierter nichtsequenzieller LRU 58, die eine zeitliche Reihenfolge unmodifizierter nichtsequenzieller Spuren in dem ersten Cachespeicher 14 bereitstellt.
-
In bestimmten Ausführungsformen wird beim Ermitteln, dass die erste Cachespeicher-Backup-Einheit 16 voll ist, die Liste modifizierter LRU 56 zum Auslesen modifizierter Spuren von dem ersten Cachespeicher 14 so verwendet, dass die Kopie dieser Spuren in der ersten Cachespeicher-Backup-Einheit 16 verworfen werden kann, um in der ersten Cachespeicher-Backup-Einheit 16 Platz für neue modifizierte Spuren zu schaffen.
-
3 veranschaulicht eine Ausführungsform der zweiten Cachespeicher-Managementdaten 28 aufweisend einen Spurenindex 70, der einen Index an Spuren in dem zweiten Cachespeicher zum Steuern von Blöcken in einem Steuerblockverzeichnis 72 bereitstellt; eine unmodifizierte Liste 74, die eine zeitliche Reihenfolge unmodifizierter Spuren in dem zweiten Cachespeicher 18 bereitstellt; und einen räumlichen Index 76, der eine räumliche Reihenfolge der modifizierten Spuren in dem zweiten Cachespeicher 18 auf der Grundlage der physischen Orte in dem Speicher 10 bereitstellt, in dem die modifizierten Spuren gespeichert werden.
-
Alle LRU-Listen 54, 56, 58 und 74 können die Spuren-IDs von Spuren in dem ersten Cachespeicher 14 und dem zweiten Cachespeicher 18 aufweisen, die danach geordnet sind, wann zuletzt auf die identifizierte Spur zugegriffen wurde. Die LRU-Listen 54, 56, 58 und 74 haben ein „most recently used” (am aktuellsten genutztes) (MRU) Ende, das eine Spur anzeigt, auf die am aktuellsten zugegriffen wurde, sowie ein LRU-Ende (least recently used), das eine am wenigsten aktuell verwendete Spur oder eine Spur anzeigt, auf die am wenigsten aktuell zugegriffen wurde. Die Spuren-IDs von den Cachespeichern 14 und 18 hinzugefügten Spuren werden dem MRU-Ende der LRU-Liste hinzugefügt, und auf Spuren, die von den Cachespeichern 14 und 18 zurückgesetzt wurden, wird von dem LRU-Ende zugegriffen. Die Spuren-Indizes 50 und 70 sowie der räumliche Index 76 können eine Scatter-Index-Tabelle (SIT) aufweisen. Es können auch alternative Datentypstrukturen verwendet werden, um die zeitliche Reihenfolge von Spuren in den Cachespeichern 14 und 18 sowie die räumliche Reihenfolge in dem zweiten Cachespeicher 18 zu gewährleisten.
-
Nichtsequenzielle Spuren können Online Line Transaction Processing(OLTP)-Spuren aufweisen, die oftmals Schreibvorgänge kleiner Blöcke aufweisen, die nicht gänzlich zufällig sind und ein gewisses Maß an Referenzlokalität besitzen, d. h. sie weisen eine Wahrscheinlichkeit auf, dass auf sie wiederholt zugegriffen wird.
-
4 veranschaulicht eine Ausführungsform eines Eintrages eines ersten Cachespeicher-Steuerblockes 100 in dem Steuerblockverzeichnis 52, aufweisend eine Steuerblockkennung (ID) 102, einen ersten Cachespeicher-Ort 104 des physischen Ortes der Spur in dem ersten Cachespeicher 14, Daten 106, die anzeigen, ob die Spur modifiziert oder unmodifiziert ist, sowie Daten 108, die anzeigen, ob es sich bei der Spur um einen sequenziellen oder einen nichtsequenziellen Zugriff handelt.
-
5 veranschaulicht eine Ausführungsform eines Eintrages eines zweiten Cachespeicher-Steuerblockes 120 in dem zweiten Cachespeicher-Steuerblockverzeichnis 72, aufweisend eine Steuerblockkennung (ID) 122 und einen LSA-Ort 124, an dem sich die Spur in dem LSA 32 befindet, sowie Daten 126, die anzeigen, ob die Spur modifiziert oder unmodifiziert ist.
-
6 veranschaulicht einen Eintrag eines räumlichen Indexes 140, aufweisend eine Spurkennung 142 einer Spur in dem zweiten Cachespeicher 18 und den physischen Ort 144, an dem die Spur in dem Speicher 10 gespeichert ist, wie beispielsweise ein Zylinder, eine Platte, eine Blockadresse und eine Speichereinheit-Kennung.
-
7 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 zum Zurücksetzen unmodifizierter Spuren von dem ersten Cachespeicher 14 durchgeführt werden. Die Zurücksetzoperation kann nach dem Feststellen, dass Platz in dem ersten Cachespeicher 14 freigemacht werden soll, initiiert werden. Beim Initiieren (in Block 200) einer Operation, um festzulegen, ob Spuren von dem ersten Cachespeicher 14 entfernt werden sollen, um Platz in dem ersten Cachespeicher freizumachen, ermittelt der Cachespeicher-Manager 24 (in Block 202), ob nichtsequenzielle oder sequenzielle unmodifizierte Spuren zurückgesetzt werden sollen, auf der Grundlage von erwarteten Treffern (hits) auf unterschiedliche Typen von unmodifizierten Spuren. Wird (in Block 204) die Festlegung dahingehend getroffen, dass unmodifizierte sequenzielle Spuren zurückgesetzt werden sollen, verwendet der Cachespeicher-Manager 24 (in Block 206) die Liste unmodifizierter sequenzieller LRU 54, um die von dem LRU-Ende der Liste zurückzusetzenden unmodifizierten sequenziellen Spuren zu ermitteln, die nicht an den zweiten Cachespeicher 18 weitergeleitet werden. Falls (in Block 204) die Feststellung dahingehend getroffen wird, dass unmodifizierte nichtsequenzielle Spuren zurückgesetzt werden sollen, verwendet der Cachespeicher-Manager 24 die Liste unmodifizierter nichtsequenzieller LRU 58, um (in Block 208) die unmodifizierten nichtsequenziellen Spuren festzulegen, die zurückgesetzt werden sollen. Die unmodifizierten nichtsequenziellen Spuren werden (in Block 210) an den zweiten Cachespeicher 18 weitergegeben.
-
8 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 ausgeführt werden, um Spuren von dem ersten Cachespeicher 14 auszulesen. Der Cachespeicher-Manager 24 kann regelmäßig Spuren als Teil von geplanten Operationen auslesen und die Geschwindigkeit von Auslesungen erhöhen, wenn Platz in der ersten Cachespeicher-Backup-Einheit 16 benötigt wird. Beim Initiieren (in Block 250) der Operation zum Auslesen von modifizierten Spuren verarbeitet der Cachespeicher-Manager 24 (in Block 252) die Liste modifizierter LRU 56, um die von dem LRU-Ende der LRU-Liste 56 auszulesenden modifizierten Spuren festzulegen. Wenn (in Block 254) die festgelegten Spuren sequenziell sind, schreibt der Cachespeicher-Manager 24 (in Block 256) die festgelegten sequenziellen Spuren in den Speicher 10, wobei der zweite Cachespeicher 18 umgangen wird. Sind (in Block 254) die modifizierten Spuren nichtsequenziell, gibt der Cachespeicher-Manager 24 (in Block 258) die festgelegten nichtsequenziellen Spuren an den zweiten Cachespeicher 18 weiter und verwirft (in Block 260) die Kopie der festgelegten modifizierten Spuren von der ersten Cachespeicher-Backup-Einheit 16.
-
Mit den Operationen der 7 und 8 werden nichtsequenzielle Spuren ausgelesen, jedoch nicht an den zweiten Cachespeicher 18 weitergegeben. Modifizierte Spuren (Schreibvorgänge) werden direkt in den Speicher 10 geschrieben, wobei der zweite Cachespeicher umgangen wird. Sequenzielle unmodifizierte Spuren (Lesevorgänge) werden verworfen und nicht anderswohin kopiert, und unmodifizierte nichtsequenzielle Spuren, die von dem ersten Cachespeicher 14 ausgelesen wurden, werden an den zweiten Cachespeicher 18 weitergegeben.
-
9 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 durchgeführt werden, um dem ersten Cachespeicher 14 eine Spur hinzuzufügen, d. h. an ihn weiterzugeben, wobei die Spuren einen Schreibvorgang oder eine modifizierte Spur von einem Host 2a, 2b...2n, eine nichtsequenzielle Spur in dem zweiten Cachespeicher 18 aufweisen können, die einer Leseanforderung unterliegt und als Ergebnis in den ersten Cachespeicher 14 verschoben wird, oder angeforderte Daten, die weder in Cachespeicher 14 noch 18 gefunden wurden und von dem Speicher 10 abgerufen werden. Beim Empfangen (in Block 300) der dem ersten Cachespeicher 14 hinzuzufügenden Spur erstellt der Cachespeicher-Manager 24 (in Block 301) einen Steuerblock 100 (5) für die hinzuzufügende Spur, der den Ort 104 in dem ersten Cachespeicher 14 anzeigt und anzeigt, ob die Spur modifiziert/unmodifiziert 106 und sequenziell/nichtsequenziell 108 ist. Dieser Steuerblock 100 wird dem Steuerblockverzeichnis 52 des ersten Cachespeichers 14 hinzugefügt. Der Cachespeicher-Manager 24 fügt (in Block 302) einen Eintrag zu dem Spurenindex 50 des ersten Cachespeichers, der die Spuren-ID der hinzuzufügenden Spur aufweist, sowie einen Index zu dem erstellten Cachespeicher-Steuerblock 100 in dem Steuerblockverzeichnis 52 hinzu. Es wird (in Block 304) dem MRU-Ende der LRU-Liste 54, 56 oder 58 ein Eintrag des Spurentyps der hinzuzufügenden Spur hinzugefügt. Wenn es sich (in Block 306) bei der hinzuzufügenden Spur um eine modifizierte nichtsequenzielle Spur handelt, wird die hinzuzufügende Spur auch (in Block 308) zu der ersten Cachespeicher-Backup-Einheit 16 kopiert, und es wird ein Eintrag zu dem Index der ersten Cachespeicher-Backup-Einheit 30 für die hinzugefügte Spur hinzugefügt. Wenn es sich (in Block 306) bei der hinzuzufügenden Spur um eine unmodifizierte sequenzielle handelt, endet die Steuerung.
-
10 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 zum Weitergeben nichtsequenzieller Spuren an den zweiten Cachespeicher 18 durchgeführt werden, die von dem ersten Cachespeicher 14 zurückgesetzt werden. Beim Initiieren (in Block 350) der Operation zum Weitergeben einer Spur an den zweiten Cachespeicher 18 fügt der Cachespeicher-Manager 24 (in Block 352) die an den LSA 32 in dem zweiten Cachespeicher 18 weitergegebene Spur hinzu und erstellt (in Block 354) einen Steuerblock 120 (5) für die hinzuzufügende Spur, der den Spurort 124 in dem LSA 32 anzeigt und ob die Spur modifiziert/unmodifiziert 126 ist. Es wird ein Eintrag (in Block 356) zu dem Spurenindex des zweiten Cachespeichers 70, der die Spuren-ID der weitergegebenen Spur aufweist, sowie ein Index zu dem erstellten Cachespeicher-Steuerblock 120 in dem Steuerblockverzeichnis 72 für den zweiten Cachespeicher 18 hinzugefügt. Wenn (von der Nein-Abzweigung von Block 358) es sich bei der weitergegebenen Spur um unmodifizierte Daten handelt, zeigt der Cachespeicher-Manager 24 (in Block 360) die weitergegebene Spur an dem MRU-Ende der Liste unmodifizierter LRU 74 so an, wie durch Hinzufügen der Spuren-ID zu dem MRU-Ende. Wenn es sich (in Block 358) bei der weitergegebenen Spur um modifizierte Daten handelt, ermittelt der Cachespeicher-Manager 24 (in Block 362) einen physischen Ort, an den die modifizierte weitergegebene Spur auf dem Speicher 10 geschrieben werden soll und fügt (in Block 364) dem räumlichen Index 76 einen Eintrag hinzu, der die Spuren-ID 142 der weitergegebenen Spur und den ermittelten physischen Ort 144 der weitergegebenen Spur auf dem Speicher 10 anzeigt.
-
11 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 zum Freimachen von Platz in dem zweiten Cachespeicher 18 für neue, dem zweiten Cachespeicher 18 hinzuzufügende Spuren durchgeführt werden, d. h. Spuren, die von dem ersten Cachespeicher zurückgesetzt wurden. Beim Initiieren dieser Operation (in Block 400) legt der Cachespeicher-Manager 24 (in Block 402) unmodifizierte Spuren in dem zweiten Cachespeicher 18 von dem LRU-Ende der Liste unmodifizierter LRU 74 fest und annulliert (in Block 404) die festgelegten unmodifizierten Spuren, ohne dass die annullierten unmodifizierten Spuren in den Speicher 10 ausgelesen werden und entfernt des Weiteren die annullierten unmodifizierten Spuren von der Liste unmodifizierter LRU 74.
-
12 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 ausgeführt werden, um modifizierte Spuren in dem zweiten Cachespeicher 12 an den Speicher 10 auszulesen. Beim Initiieren (in Block 420) der Ausleseoperation verwendet der Cachespeicher-Manager 24 (in Block 422) den räumlichen Index 76, um modifizierte Spuren in dem zweiten Cachespeicher 18 festzulegen, um diejenigen zu gruppieren, die sich an nahe liegenden physischen Orten auf der Speichereinheit befinden, auf der Grundlage ihrer Reihenfolge in dem räumlichen Index 76, wie beispielsweise eine Gruppe von Spuren bei aufeinanderfolgenden Einträgen 140 (6) in dem nach Orten geordnetem räumlichen Index 76. Die festgelegten gruppierten modifizierten Spuren werden (in Block 424) von dem zweiten Cachespeicher 18 an die Speichereinheit 10 ausgelesen.
-
Die Operationen aus 12 optimieren Schreiboperationen in den Speicher 10, der eine Speichereinheit mit sequenziellem Zugriff aufweist, indem der Speicher 10 zum Schreiben von Spuren an Orte veranlasst wird, die räumlich am nächsten auf der Schreiboberfläche des Speichers 10 liegen, wodurch die Menge an Suchen und Bewegen des Schreibkopfes des Speichers 10 zum Schreiben der Spuren in dem zweiten Cachespeicher 18 in den Speicher 10 minimiert wird. Die Spuren werden aus dem ersten Cachespeicher 16 an den zweiten Cachespeicher 18 auf der Grundlage von zeitlichen Faktoren wie beispielsweise ihrer Position in einer LRU-Liste 54, 56, 58 und nicht in einer Reihenfolge weitergegeben, die zum sequenziellen Schreiben in einen Speicher mit sequenziellem Zugriff 10 wie beispielsweise ein Festplattenlaufwerk optimiert ist. Demzufolge optimieren die Operationen von 12 die zeitlich geordneten modifizierten Spuren auf der Grundlage ihres räumlichen Ortes auf dem Speicher 10, um das Schreiben auf dem Speicher 10 zu optimieren.
-
13 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 zum Abrufen angeforderter Spuren für eine Leseanforderung von den Cachespeichern 14 und 18 sowie dem Speicher 10 durchgeführt werden. Der Speicher-Manager 22, der die Leseanforderung verarbeitet, kann Anforderungen an den Cachespeicher-Manager 24 für die angeforderten Spuren vorlegen. Beim Empfangen (in Block 450) der Anforderung für die Spuren verwendet der Cachespeicher-Manager 24 (in Block 454) den Spurenindex 50 des ersten Cachespeichers, um zu ermitteln, ob sich alle der angeforderten Spuren in dem ersten Cachespeicher 14 befinden. Befinden sich (in Block 454) alle der angeforderten Spuren nicht in dem ersten Cachespeicher 14, verwendet der Cachespeicher-Manager 24 (in Block 456) den Spurenindex 70 des zweiten Cachespeichers, um jegliche der angeforderten Spuren in dem zweiten Cachespeicher 18 zu ermitteln, die sich nicht in dem ersten Cachespeicher 14 befinden. Werden (in Block 458) irgendwelche der angeforderten Spuren nicht in dem ersten Cachespeicher 14 oder in dem zweiten Cachespeicher 18 gefunden, ermittelt der Cachespeicher-Manager 24 (in Block 460) jegliche der angeforderten Spuren in dem Speicher 10, die sich nicht in dem ersten 14 oder dem zweiten Cachespeicher 18 befinden, anhand des Spurenindexes 70 des zweiten Cachespeichers. Anschließend gibt der Cachespeicher-Manager 24 (in Block 462) jegliche der ermittelten Spuren in dem zweiten Cachespeicher 18 und dem Speicher 10 an den ersten Cachespeicher 14 weiter. Der Cachespeicher-Manager 24 verwendet (in Block 464) den Spurenindex 50 des ersten Cachespeichers, um die angeforderten Spuren von dem ersten Cachespeicher 14 abzurufen, um sie der Leseanforderung zurückzugeben. Die Einträge für die abgerufenen Spuren werden (in Block 466) an das MRU-Ende der LRU-Liste 54, 56, 58 verschoben, die Einträge für die abgerufenen Einträge enthält.
-
Mit den Operationen von 13 ruft der Cachespeicher-Manager 24 angeforderte Spuren von einem Cachespeicher 14 der höchsten Ebene, dann von dem zweiten Cachespeicher 18 ab, bevor er zu dem Speicher 10 übergeht, da die Cachespeicher 14 und 18 die am aktuellsten modifizierte Version einer angeforderten Spur enthalten würden. Die aktuellste Version wird zunächst in dem ersten Cachespeicher 14, dann in dem zweiten Cachespeicher 18, wenn nicht in dem ersten Cachespeicher 14 vorhanden, und anschließend in dem Speicher 10 gefunden, wenn sie weder in Cachespeicher 14 noch 18 vorhanden ist.
-
Beschriebene Ausführungsformen stellen Verfahren bereit, die eine Verwendung eines Cachespeichers einer zweiten Ebene zwischen einem Cachespeicher einer primären oder ersten Ebene und einem Speicher ermöglichen, um den Cachespeicher-Platz zu erhöhen, wenn der erste Cachespeicher mit dem schnellsten Zugriff 14 über den teuersten Speicherplatz beziehungsweise Kosten pro Byte verfügt, und ein zweiter Cachespeicher, der weniger teuer als der erste Cachespeicher jedoch schneller als der Speicher ist, verwendet werden kann, um die Menge an Daten, die in dem System gecacht werden können, zu erhöhen. Durch Vergrößern des Speicherplatzes in Cachespeichern mit schnellerem Zugriff wird der Zugriff auf die gecachten Daten verbessert, wenn die angeforderten Daten in dem Cachespeicher vorhanden sind und von einem Cachespeicher zurückgegeben werden können, anstatt einen Abruf von dem weniger teuren Speicher mit langsameren Zugriff ausführen zu müssen. Des Weiteren werden in beschriebenen Ausführungsformen Spuren dem zweiten Cachespeicher auf der Grundlage einer zeitlichen Reihenfolge in dem ersten Cachespeicher hinzugefügt, und anschließend werden sie in dem zweiten Cachespeicher auf der Grundlage des räumlichen physischen Ortes in dem Speicher mit sequenziellem Zugriff so sortiert, dass die ausgelesenen Spuren in Gruppen von Spuren an nahe oder aufeinanderfolgende physische Orte in dem Speicher geschrieben werden, um das Schreiben der Spuren in den Speicher zu optimieren.
-
Die beschriebenen Operationen können als ein Verfahren, eine Vorrichtung oder ein Computerprogramm unter Verwendung von standardmäßigen Programmierungs- und/oder Entwicklungsverfahren zum Herstellen von Software, Firmware, Hardware oder jeder beliebigen Kombination daraus implementiert werden. Dementsprechend können Aspekte der Ausführungsformen vollständig als Hardware-Ausführungsform, vollständig als Software-Ausführungsform (einschließlich Firmware, residenter Software, Mikro-Code usw.) oder als eine Ausführungsform ausgebildet ein, die Software- und Hardware-Aspekte kombiniert, die hierin allesamt im Allgemeinen als „Schaltung”, „Modul” oder ”System” bezeichnet werden können. Des Weiteren können Aspekte der Ausführungsformen als Computerprogrammprodukt ausgebildet sein, das in einem oder mehreren computerlesbaren Medium oder Medien mit einem darin ausgebildeten computerlesbaren Programmcode ausgebildet ist.
-
Es kann jede beliebige Kombination aus einem oder mehreren computerlesbaren Medium (Medien) verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, solche Vorrichtung oder Einheit oder jede beliebige geeignete Kombination der vorstehend Genannten sein, ohne darauf beschränkt zu sein. Zu konkreteren Beispielen (eine ergänzbare Liste) des computerlesbaren Speichermediums gehören die Folgenden: eine elektrische Verbindung mit einem oder mehreren Kabeln, eine tragbare Computerdiskette, eine Festplatte, ein Arbeitsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer CD-Nur-Lesespeicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede beliebige geeignete Kombination der vorstehend Genannten. Im Kontext dieses Dokumentes kann es sich bei einem computerlesbaren Speichermedium um jegliches materielle Medium handeln, das ein Programm zur Verwendung durch ein oder im Zusammenhang mit einem Befehlsausführungssystem, einer solchen Vorrichtung oder Einheit enthalten oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein weitergegebenes Datensignal mit einem darin enthaltenen, computerlesbaren Programmcode, beispielsweise im Basisband oder als Teil einer Trägerwelle sein. Solch ein weitergegebenes Signal kann jede beliebige einer Reihe verschiedener Formen, einschließlich elektromagnetischer, optischer oder jeder beliebigen geeigneten Kombination daraus, jedoch nicht darauf beschränkt, umfassen. Ein computerlesbares Signalmedium kann jegliches computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder im Zusammenhang mit einem Befehlsausführungssystem, solcher Vorrichtung oder Einheit ein Programm übertragen, weitergeben oder senden kann.
-
Der in einem computerlesbaren Medium enthaltene Programmcode kann unter Verwendung eines jeden beliebigen geeigneten Mediums, unter anderem kabellos, kabelbasiert, Lichtwellenleiter, HF usw. oder jeder beliebigen geeigneten Kombination der vorstehend Genannten, jedoch nicht darauf beschränkt, übertragen werden.
-
Der Computerprogrammcode zum Durchführen der Operationen für Aspekte der vorliegenden Erfindung kann in jeder beliebigen Kombination einer oder mehrerer Programmiersprachen unter anderem einer objektorientierten Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder Ähnlichen oder herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache „C” oder ähnlichen Programmiersprachen geschrieben sein. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als ein Stand-Alone-Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In dem letzten Szenarium kann der ferne Computer über jeden beliebigen Typ von Netzwerk, unter anderem einem lokalen Netz (LAN), oder einem Weitverkehrsnetz (WAN) mit dem Computer des Benutzers verbunden sein, 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 vorstehend in Bezug auf Veranschaulichungen in Ablaufplänen und/oder Blockschaubildern zu Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist offensichtlich, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern von Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zum Herstellen einer Maschine auf eine Weise bereitgestellt werden, dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Implementieren der Funktionen/Schritte erstellen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder spezifiziert werden.
-
Diese Computerprogrammanweisungen können auch auf einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Weise so zu funktionieren, dass die auf dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel produzieren, der Anweisungen aufweist, welche die Funktion/den Schritt implementieren, die oder der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder spezifiziert ist.
-
Die Computerprogrammanweisungen können auch auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden, um eine Reihe von Arbeitsschritten zu veranlassen, die auf dem Computer, anderen programmierbaren Datenverarbeitungsvorrichtungen oder Einheiten auszuführen sind, um ein computerimplementiertes Verfahren so zu schaffen, dass die Anweisungen, die auf dem Computer oder anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zum Implementieren der in dem Ablaufplan und/oder dem oder den Block oder Blöcken des Blockschaltbildes spezifizierten Funktionen/Schritte bereitstellen.
-
Die Begriffe „eine Ausführungsform”, „Ausführungsform”, „Ausführungsformen”, „die Ausführungsform” „die Ausführungsformen”, „eine oder mehrere Ausführungsformen”, „einige Ausführungsformen” und „eine Ausführungsform” bedeuten „eine oder mehrere (jedoch nicht alle) Ausführungsformen der vorliegenden Erfindung(en)”, es sei denn, es wird ausdrücklich etwas Anderes festgelegt.
-
Die Begriffe „enthaltend”, „aufweisend”, „besitzend” und Varianten davon bedeuten „einschließlich, jedoch nicht darauf beschränkt” es sei denn, es wird ausdrücklich etwas Anderes festgelegt.
-
Die durchnummerierten Aufzählungen von Elementen implizieren nicht, dass sich jedes beliebige oder alle der Elemente gegenseitig ausschließen, es sei denn, es wird ausdrücklich etwas Anderes festgelegt.
-
Die Begriffe „ein”, „eine”, „eins” und „der/die/das” bedeuten „eins oder mehrere”, es sei denn, es wird ausdrücklich etwas Anderes festgelegt.
-
Einheiten, die über eine Datenübertragung miteinander in Verbindung stehen, müssen keine kontinuierliche Datenübertragung zueinander führen, es sei denn, es wird ausdrücklich etwas Anderes festgelegt. Darüber hinaus können Einheiten, die über eine Datenübertragung miteinander in Verbindung stehen, über eine oder mehrere Zwischenschaltungen miteinander direkt oder indirekt kommunizieren.
-
Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die über eine Datenübertragung miteinander in Verbindung stehen, impliziert nicht, dass alle solchen Komponenten erforderlich sind. Es wird im Gegenteil eine Reihe von verschiedenen optionalen Komponenten beschrieben, um die große Bandbreite an möglichen Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
-
Des Weiteren können, obgleich Prozessschritte, Verfahrensschritte, Algorithmen oder Ähnliches in einer sequenziellen Reihenfolge beschrieben werden, solche Prozesse, Verfahren und Algorithmen auch so konfiguriert werden, dass sie in anderen Reihenfolgen arbeiten. Mit anderen Worten impliziert keine Sequenz oder Reihenfolge von Schritten, die möglicherweise beschrieben wird, dass die Schritte auch in dieser Reihenfolge ausgeführt werden müssen. Die Schritte der hierin beschriebenen Prozesse können in jeder praktischen Reihenfolge ausgeführt werden. Des Weiteren können einige Schritte auch gleichzeitig durchgeführt werden.
-
Wird hierin eine einzelne Einheit oder ein einzelner Artikel beschrieben, ist ohne Weiteres ersichtlich, dass mehr als eine Einheit/ein Artikel (ungeachtet ob sie kooperieren oder nicht) anstelle einer einzelnen Einheit/eines Artikels verwendet werden können. Auf ähnliche Weise ist, wo mehr als eine Einheit oder ein Artikel hierin beschrieben werden (ungeachtet ob sie kooperieren oder nicht) ohne Weiteres ersichtlich, dass auch eine einzelne Einheit/ein Artikel anstelle der mehr als einen Einheit der des Artikels oder eine andere Anzahl von Einheiten/Artikeln anstelle der dargestellten Anzahl von Einheiten oder Programmen verwendet werden können. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ zu einer oder mehreren anderen Einheiten ausgebildet sein, die nicht ausdrücklich als solche Merkmale aufweisend beschrieben sind. Demzufolge müssen andere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht aufweisen.
-
Die veranschaulichten Operationen der 7 bis 13 zeigen bestimmte Ereignisse, die in einer bestimmten Reihenfolge auftreten. In alternativen Ausführungsformen können bestimmte Operationen in einer anderen Reihenfolge ausgeführt, modifiziert oder entfernt werden. Des Weiteren können Schritte zu der vorstehend beschriebenen Logik hinzugefügt werden und immer noch den beschriebenen Ausführungsformen entsprechen. Des Weiteren können hierin beschriebene Operationen sequenziell auftreten, oder bestimmte Operationen können parallel ausgeführt werden. Des noch Weiteren können Operationen von einer einzigen Verarbeitungseinheit oder von verteilten Verarbeitungseinheiten ausgeführt werden.