-
Technisches Gebiet
-
Die vorliegende Erfindung betrifft adaptive Cache-Speicher-Umstufungen in einem Caching-System mit zwei Stufen.
-
Hintergrund
-
Ein Cache-Speicher-Verwaltungssystem sorgt für die Zwischenspeicherung von Seiten einer Speichereinheit, auf die kürzlich infolge von Lese- und Schreiboperationen zugegriffen wurde, in einer Speichereinheit, wie zum Beispiel dem Hauptspeicher, auf die schneller zugegriffen werden kann als auf die Speichereinheit, in der die angeforderten Seiten gespeichert sind. Nachfolgende Anforderungen für das Lesen von Seiten in dem Cache-Speicher, auf den schneller zugegriffen werden kann, werden schneller zurückgeschickt als die angeforderten Seiten von dem Speicher, auf den langsamer zugegriffen werden kann, was die Leselatenzzeit verringert. Das Cache-Speicher-Verwaltungssystem kann auf eine Schreibanforderung auch ”fertig” zurücksenden, wenn die an die Speichereinheit gerichtete geänderte Seite in den Cache-Speicher geschrieben ist und bevor die geänderte Seite an die Speichereinheit, wie zum Beispiel ein Festplattenlaufwerk, ausgegeben wird. Die Latenzzeit beim Schreiben in die Speichereinheit ist üblicherweise deutlich länger als die Latenzzeit beim Schreiben in einen Cache-Speicher. Folglich verringert die Verwendung eines Cache-Speichers auch die Schreiblatenzzeit.
-
Ein Cache-Speicher-Verwaltungssystem kann eine verkettete Liste verwalten, die über einen Eintrag für jede in dem Cache-Speicher gespeicherte Seite verfügt, welche Schreibdaten, die in dem Cache-Speicher zwischengespeichert werden, bevor sie in die Speichereinheit geschrieben werden, oder Lesedaten aufweisen kann. Bei der gemeinhin verwendeten Cache-Speichertechnik ”Least Recently Used (LRU)” wird, wenn auf eine Seite in dem Cache-Speicher zugegriffen wird, d. h. bei einem Cache-”Treffer”, der Eintrag in der LRU-Liste für die Seite, auf die zugegriffen wurde, an ein Most-Recently-Used-(MRU)-Ende der Liste verschoben. Wenn sich die angeforderte Seite nicht im Cache-Speicher befindet, d. h. bei einem Cache-Fehltreffer, kann die Seite in dem Cache-Speicher, deren Eintrag sich am LRU-Ende der Liste befindet, entfernt (oder wieder in den Massenspeicher ausgelagert) werden und ein Eintrag für die Daten der Seite, die aus dem Massenspeicher im Cache-Speicher zwischengespeichert wurden, wird an das MRU-Ende der LRU-Liste angefügt. Bei dieser LRU-Cache-Speichertechnik werden Seiten, auf die häufiger zugegriffen wird, wahrscheinlich im Cache-Speicher gehalten, während es bei Daten, auf die weniger oft zugegriffen wird, wahrscheinlicher ist, dass sie vom LRU-Ende der Liste entfernt werden, um im Cache-Speicher Platz für Seiten zu schaffen, auf die neu zugegriffen wird.
-
Die LRU-Cache-Speichertechnik versucht, eine Optimierung im Hinblick auf zeitliche Lokalität vorzunehmen, so dass Seiten, bei denen es am wenigsten wahrscheinlich ist, dass sie in Kürze neu geschrieben werden, ausgelagert werden, um die Anzahl der Auslagerungsoperationen zu minimieren, d. h., wenn eine nicht ausgelagerte Schreiboperation überschrieben wird, wird das Auslagern der überschriebenen Schreiboperation vermieden, was Zeit und den Aufwand spart, die Daten von dem Cache-Speicher auf Platte zu schreiben. Andererseits gibt es auch den Wunsch, die Auslagerung so vorzunehmen, dass die räumliche Lokalität ausgenutzt wird, was bedeutet, dass Daten an Speicherorte geschrieben werden, die so dicht wie möglich beieinander liegen, um den Weg zu minimieren, den der Schreibmechanismus der Speichereinheit und die Speichermedien bewegt werden müssen, um den nächsten zu beschreibenden Speicherort zu erreichen.
-
Ein Verfahren, das dazu dient, sowohl die zeitliche als auch die räumliche Lokalität auszunutzen, ist der Algorithmus ”Wise Ordering for Writes (WOW)”. Der WOW-Algorithmus verwendet eine kreisförmige verkettete Liste oder eine Zeiteinteilung (clock), wobei die kreisförmige verkettete Liste einen Eintrag für jede in dem Cache-Speicher 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 enthält jeder Eintrag ein Bit, das anzeigt, ob die Schreibdaten für den Speicherort in dem Cache-Speicher 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 einem Task, der 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 Cache-Speicher kürzlich aktualisiert worden sind, wird das Bit so gesetzt, dass es anzeigt, 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 beschriebenen Speicherort befindet, berücksichtigt wird. Es wird der Eintrag zum Schreiben ausgewählt, der sich räumlich am nächsten zu dem zuletzt beschriebenen 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 ausgelagerten Schreibanforderung befindet. Des Weiteren wird auch zeitliche Lokalität ausgenutzt, da ein Eintrag, der vor kurzem geschrieben 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 ausführen, die sowohl die lineare als auch die Winkelposition der Schreibseiten 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 die Winkelposition der zu schreibenden Seite 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.
-
In der Technik besteht ein Bedarf an verbesserten Verfahren zur Verwendung eines Caching-Systems mit zwei Stufen.
-
Kurzdarstellung der Erfindung
-
Es werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Verwalten von Daten in einem ersten Cache-Speicher und in einem zweiten Cache-Speicher bereitgestellt. In dem zweiten Cache-Speicher wird eine Referenzanzahl für die Seite verwaltet, wenn die Seite in dem zweiten Cache-Speicher gespeichert ist. Es wird festgestellt, dass die Seite aus dem zweiten Cache-Speicher in den ersten Cache-Speicher umgestuft werden soll. Als Reaktion auf die Feststellung, dass die Referenzanzahl größer Null ist, wird die Seite an ein Least-Recently-Used-(LRU-)Ende einer LRU-Liste in dem ersten Cache-Speicher angefügt. Als Reaktion auf die Feststellung, dass die Referenzanzahl kleiner oder gleich Null ist, wird die Seite an ein Most-Recently-Used-(LRU-)Ende der LRU-Liste in dem ersten Cache-Speicher angefügt.
-
Kurze Beschreibung der Zeichnungen
-
Ausführungsformen der Erfindung werden nun lediglich anhand eines Beispiels und mit Bezug auf die beigefügten Zeichnungen beschrieben, bei denen:
-
1 eine Ausführungsform einer Datenverarbeitungsumgebung zeigt.
-
2 eine Ausführungsform von Verwaltungsinformationen des ersten Cache-Speichers zeigt.
-
3 eine Ausführungsform von Verwaltungsinformationen des zweiten Cache-Speichers zeigt.
-
4 eine Ausführungsform eines Steuerblocks des ersten Cache-Speichers zeigt.
-
5 eine Ausführungsform eines Steuerblocks des zweiten Cache-Speichers zeigt.
-
6 eine Ausführungsform eines Eintrags in einem räumlichen Index zeigt.
-
7 eine Ausführungsform von Operationen zeigt, um nicht geänderte Seiten aus dem ersten Cache-Speicher herabzustufen.
-
8 eine Ausführungsform von Operationen zeigt, um geänderte Seiten aus dem ersten Cache-Speicher auszulagern.
-
9 eine Ausführungsform von Operationen zeigt, um dem ersten Cache-Speicher eine Seite hinzuzufügen.
-
10 eine Ausführungsform von Operationen zeigt, um eine Seite in den zweiten Cache-Speicher umzustufen.
-
11 eine Ausführungsform von Operationen zeigt, um Platz in dem zweiten Cache-Speicher freizugeben.
-
12 eine Ausführungsform von Operationen zeigt, um geänderte Seiten aus dem zweiten Cache-Speicher auszulagern.
-
13 eine Ausführungsform von Operationen zeigt, um eine Anforderung für Seiten zu verarbeiten, die auf eine Leseanforderung zurückgesendet werden sollen.
-
14 eine Ausführungsform eines Caching-Systems mit zwei Stufen und eines Massenspeichers zeigt.
-
15 eine Ausführungsform von Operationen zeigt, um einem ersten Cache-Speicher eine Seite aus einem zweiten Cache-Speicher hinzuzufügen.
-
Ausführliche Beschreibung
-
1 zeigt eine Ausführungsform einer Datenverarbeitungsumgebung. Eine Vielzahl von Hosts 2a, 2b ... 2n kann einem Speichercontroller 4 über ein Netzwerk 6 Eingabe-/Ausgabe-(E/A-)Anforderungen übergeben, um auf Daten auf den Datenträgern 8 (z. B., Nummern der logischen Einheit, logische Einheiten, logische Subsysteme usw.) in einem Massenspeicher 10 zuzugreifen, der mit dem Speichercontroller 4 verbunden ist. Der Speichercontroller 4 enthält einen Prozessorkomplex 12, zu dem ein oder mehrere Prozessoren mit einem oder mit mehreren Berechnungskernen, ein erster Cache-Speicher 14, eine Sicherungseinheit 16 des ersten Cache-Speichers, um Seiten in dem Cache-Speicher 14 zu sichern, und ein zweiter Cache-Speicher 18 gehört. Der erste Cache-Speicher 14 und der zweite Cache-Speicher 18 speichern Daten zwischen, die zwischen den Hosts 2a, 2b ... 2n und dem Massenspeicher 10 übertragen werden. Die Sicherungseinheit 16 des ersten Cache-Speichers kann eine nicht flüchtige Speicherung von Seiten in dem ersten Cache-Speicher 14 ermöglichen. In einer weiteren Ausführungsform kann sich die Sicherungseinheit 16 des ersten Cache-Speichers in einem Cluster oder in Hardware an einer anderen Leistungsgrenze als derjenigen des ersten Cache-Speichers 14 befinden.
-
Der Speichercontroller 4 verfügt über einen Hauptspeicher 20, der einen Speichermanager 22 enthält, um die Übertragung von Seiten, die zwischen den Hosts 2a, 2b ... 2n und dem Massenspeicher 10 übertragen werden, zu verwalten, und einen Cache-Speicher-Manager 24, der Daten, die zwischen den Hosts 2a, 2b ... 2n und dem Massenspeicher 10 übertragen werden, in dem ersten Cache-Speicher 14, der Sicherungseinheit 16 des ersten Cache-Speichers und dem zweiten Cache-Speicher 18 verwaltet. Eine Seite kann eine beliebige, in dem Massenspeicher 10 konfigurierte Dateneinheit aufweisen, wie zum Beispiel eine Seite, eine logische Blockadresse (LBA) usw., die Teil einer größeren Gruppierung von Seiten, wie zum Beispiel eines Datenträgers, einer logischen Einheit usw., ist. Im Cache-Speicher-Manager 24 sind Verwaltungsinformationen 26 des ersten Cache-Speichers und Verwaltungsinformationen 28 des zweiten Cache-Speichers hinterlegt, um Leseseiten (nicht geändert) und Schreibseiten (geändert) in dem ersten Cache-Speicher 14 und dem zweiten Cache-Speicher 18 zu verwalten. Ein Index 30 einer Sicherungseinheit des ersten Cache-Speichers stellt einem Speicherort in der Sicherungseinheit 16 des ersten Cache-Speichers einen Index mit Seitenkennungen bereit.
-
Der Speichermanager 22 und der Cache-Speicher-Manager 24 sind in 1 als Programmcode gezeigt, die in den Hauptspeicher 20 geladen und von dem Prozessorkomplex 12 ausgeführt werden. Alternativ können einige oder alle der Funktionen in Hardware-Einheiten in dem Speichercontroller 4 wie zum Beispiel in anwendungsspezifischen integrierten Schaltungen (Application Specific Integrated Circuits (ASICs)) realisiert werden.
-
Der zweite Cache-Speicher 18 kann Seiten in einem Log Structured Array (LSA) 32 speichern, bei dem Seiten in der Reihenfolge geschrieben werden, in der sie empfangen werden, und auf diese Weise eine zeitliche Sortierung der in den zweiten Cache-Speicher 18 geschriebenen Seiten ermöglichen. In einem LSA werden spätere Versionen von Seiten, die sich bereits in dem LSA befinden, an das Ende des LSA 32 geschrieben. In alternativen Ausführungsformen kann der zweite Cache-Speicher 18 Daten in anderen Formaten als einem LSA speichern.
-
In bestimmten Ausführungsformen kann der erste Cache-Speicher 14 einen Direktzugriffsspeicher (RAM) wie zum Beispiel einen dynamischen Direktzugriffsspeicher (DRAM) aufweisen, der zweite Cache-Speicher 18 kann einen Flash-Speicher wie zum Beispiel eine Halbleitereinheit aufweisen, und der Massenspeicher 10 besteht aus einer oder mehreren Speichereinheiten mit sequenziellem Zugriff wie zum Beispiel Festplattenlaufwerken und Magnetband. Der Massenspeicher 10 kann eine einzige Speichereinheit mit sequenziellem Zugriff oder eine Anordnung von Speichereinheiten wie zum Beispiel Just a Bunch of Disks (JBOD), eine Direktzugriff-Speichereinheit (Direct Access Storage Device (DASD)), eine redundante Anordnung unabhängiger Festplatten (Redundant Array of Independent Disks (RAID)), eine Virtualisierungseinheit usw. aufweisen. Der Massenspeicher 10 ist mit mindestens dem ersten Cache-Speicher 14 oder aber dem zweiten Cache-Speicher 18 verbunden. In bestimmten Ausführungsformen ist der erste Cache-Speicher 14 eine Einheit, auf die schneller zugegriffen werden kann als auf den zweiten Cache-Speicher 18, und der zweite Cache-Speicher 18 ist eine Einheit, auf die schneller zugegriffen werden kann als auf den Massenspeicher 10. Überdies kann der erste Cache-Speicher 14 höhere Kosten je Speichereinheit als der zweite Cache-Speicher 18 haben und der zweite Cache-Speicher 18 kann höhere Kosten je Speichereinheit als die Speichereinheiten in dem Massenspeicher 10 haben. Darüber hinaus kann der zweite Cache-Speicher 18 in bestimmten Ausführungsformen viel größer als der erste Cache-Speicher 14 sein.
-
Der erste Cache-Speicher 14 kann Teil des Hauptspeichers 20 oder in einer gesonderten Hauptspeichereinheit wie zum Beispiel einem DRAM realisiert sein. In bestimmten Ausführungsformen kann die Sicherungseinheit 16 des ersten Cache-Speichers einen nicht flüchtigen Sicherungsspeicher (non-volatile backup storage (NVS)) wie zum Beispiel einen nicht flüchtigen Hauptspeicher, z. B. einen batteriegepufferten Direktzugriffsspeicher (RAM), einen statischen RAM (SRAM) usw. aufweisen.
-
Das Netzwerk 6 kann ein Speicherbereichsnetzwerk (Storage Area Network (SAN)), ein lokales Netz (Local Area Network (LAN)), ein Weitverkehrsnetz (Wide Area Network (WAN)), das Internet und ein Intranet usw. aufweisen.
-
Obgleich sich bestimmte Ausführungsformen hierin auf eine Granularität des Cache-Speicher-Index von Seiten beziehen, gelten andere Ausführungsformen für Daten mit einer anderen Granularität des Cache-Speicher-Index, wie zum Beispiel Speicherspuren oder Speicherbereiche.
-
2 zeigt eine Ausführungsform der Verwaltungsinformationen 26 des ersten Cache-Speichers, zu denen ein Seitenindex 50, der Steuerblöcken in einem Steuerblockverzeichnis 52 einen Index mit Seiten in dem ersten Cache-Speicher 14 bereitstellt; eine nicht geänderte sequenzielle LRU-Liste 54, die eine zeitliche Sortierung von nicht geänderten sequenziellen Seiten in dem ersten Cache-Speicher 14 ermöglicht; eine geänderte LRU-Liste 56, die eine zeitliche Sortierung von geänderten sequenziellen und nichtsequenziellen Seiten in dem ersten Cache-Speicher 14 ermöglicht; eine nicht geänderte nichtsequenzielle LRU-Liste 58, die eine zeitliche Sortierung von nicht geänderten nichtsequenziellen Seiten in dem ersten Cache-Speicher 14 ermöglicht; Referenzzähler 60; und eine beschleunigte LRU 62 gehören.
-
3 zeigt eine Ausführungsform der Verwaltungsinformationen 28 des zweiten Cache-Speichers, zu denen ein Seitenindex 70, der Steuerblöcken in einem Steuerblockverzeichnis 72 einen Index mit Seiten in dem zweiten Cache-Speicher 18 bereitstellt; eine nicht geänderte Liste 74, die eine zeitliche Sortierung von nicht geänderten Seiten in dem zweiten Cache-Speicher 18 ermöglicht; einen räumlichen Index 76, der eine räumliche Sortierung der geänderten Seiten in dem zweiten Cache-Speicher 18 auf der Grundlage der physischen Speicherorte in dem Massenspeicher 10, an denen die geänderten Seiten gespeichert werden, ermöglicht; und Referenzzähler 78 gehören.
-
Alle LRU-Listen 54, 56, 58 und 74 können die Seitenkennungen (Seiten-IDs) von Seiten in dem ersten Cache-Speicher 14 und dem zweiten Cache-Speicher 18 enthalten, die nach dem Zeitpunkt des letztmaligen Zugriffs auf die gekennzeichnete Seite sortiert sind. Die LRU-Listen 54, 56, 58 und 74 weisen ein Most-Recently-Used-(MRU-)Ende auf, das eine Seite angibt, auf die zuletzt zugegriffen wurde, und ein LRU-Ende, das eine am längsten nicht benutzte Seite beziehungsweise eine Seite, auf die am längsten nicht mehr zugegriffen wurde, angibt. Die Seiten-IDS von Seiten, die den Cache-Speichern 14 und 18 hinzugefügt werden, werden entweder an das MRU-Ende oder an das LRU-Ende (in Abhängigkeit von der Temperatur der Seite) der LRU-Liste angefügt und auf Seiten, die aus dem Cache-Speicher 14 und aus dem Cache-Speicher 18 herabgestuft wurden, wird von dem LRU-Ende zugegriffen. Die Seitenindizes 50 und 70 und der räumliche Index 76 können eine Streuindextabelle (SIT) aufweisen. Datenstrukturen eines alternativen Typs können verwendet werden, um die zeitliche Sortierung von Seiten in den Cache-Speichern 14 und 18 und die räumliche Sortierung von Seiten in dem zweiten Cache-Speicher 18 zu ermöglichen.
-
Nichtsequenzielle Seiten können Online-Line-Transaction-Processing-(OLTP-)Seiten aufweisen, die oftmals Schreiboperationen von kleinen Blöcken aufweisen, die nicht vollkommen zufällig sind und ein gewisses Lokalitätsprinzip haben, d. h. bei denen es wahrscheinlich ist, dass wiederholt auf sie zugegriffen wird.
-
4 zeigt eine Ausführungsform eines Eintrags in einem Steuerblock 100 des ersten Cache-Speichers in dem Steuerblockverzeichnis 52, zu dem eine Steuerblockkennung (ID) 102, ein Speicherort 104 des ersten Cache-Speichers, der den physischen Speicherort der Seite in dem ersten Cache-Speicher 14 darstellt, Informationen 106, die angeben, ob die Seite geändert oder nicht geändert ist, und Informationen 108, die angeben, ob auf die Seite sequenziell oder nichtsequenziell zugegriffen wird, gehören.
-
5 zeigt eine Ausführungsform eines Eintrags in einem Steuerblock 120 des zweiten Cache-Speichers in dem Steuerblockverzeichnis 72 des zweiten Cache-Speichers, zu dem eine Steuerblockkennung (ID) 122, ein LSA-Speicherort 124, an dem sich die Seite in dem LSA 32 befindet, und Informationen 126 gehören, die angeben, ob die Seite geändert oder nicht geändert ist.
-
6 zeigt eine Ausführungsform eines Eintrags 140 in einem räumlichen Index, zu dem eine Seitenkennung 142 einer Seite in dem zweiten Cache-Speicher 18 und der physische Speicherort 144, an dem die Seite in dem Massenspeicher 10 gespeichert ist, wie zum Beispiel ein Zylinder, eine Platte, eine Blockadresse und die Kennung einer Speichereinheit, gehören.
-
7 zeigt eine Ausführungsform von Operationen, die von dem Cache-Speicher-Manager 24 durchgeführt werden, um nicht geänderte Seiten aus dem ersten Cache-Speicher 14 herabzustufen. Die Herabstufungsoperation kann nach der Feststellung, dass in dem ersten Cache-Speicher 14 Speicherplatz freigegeben werden muss, eingeleitet werden. Nach dem Einleiten (am Block 200) einer Operation, um festzustellen, ob Seiten aus dem ersten Cache-Speicher 14 entfernt werden sollen, um Speicherplatz in dem ersten Cache-Speicher 14 freizugeben, stellt der Cache-Speicher-Manager 24 (am Block 202) fest, ob nichtsequenzielle oder sequenzielle nicht geänderte Seiten auf der Grundlage von erwarteten Treffern auf verschiedenen Arten von nicht geänderten Seiten herabgestuft werden sollen. Wenn (am Block 204) festgestellt wird, dass nicht geänderte sequenzielle Seiten herabgestuft werden sollen, verwendet der Cache-Speicher-Manager 24 (am Block 206) die nicht geänderte sequenzielle LRU-Liste 54, um herabzustufende, nicht geänderte sequenzielle Seiten vom LRU-Ende der Liste zu ermitteln, die nicht in den zweiten Cache-Speicher 18 umgestuft werden. Wenn (am Block 204) festgestellt wird, dass nicht geänderte nichtsequenzielle Seiten herabgestuft werden sollen, verwendet der Cache-Speicher-Manager die nicht geänderte nichtsequenzielle LRU-Liste 58, um (am Block 208) herabzustufende, nicht geänderte nichtsequenzielle Seiten zu ermitteln. Die nicht geänderten nichtsequenziellen Seiten werden (am Block 210) in den zweiten Cache-Speicher 18 umgestuft.
-
8 zeigt eine Ausführungsform von Operationen, die von dem Cache-Speicher-Manager 24 durchgeführt werden, um geänderte Seiten aus dem ersten Cache-Speicher 14 auszulagern. Der Cache-Speicher-Manager 24 kann als Teil von zeitlich festgelegten Operationen regelmäßig Seiten auslagern und die Auslagerungsrate erhöhen, wenn in der Sicherungseinheit 16 des ersten Cache-Speichers Speicherplatz benötigt wird. Nach dem Einleiten (am Block 250) der Operation zum Auslagern von geänderten Seiten verarbeitet der Cache-Speicher-Manager 24 (am Block 252) die geänderte LRU-Liste 56, um geänderte Seiten vom LRU-Ende der LRU-Liste 56 zu ermitteln, die ausgelagert werden sollen. Wenn die ermittelten geänderten Seiten (am Block 254) sequenziell sind, schreibt der Cache-Speicher-Manager 24 die ermittelten geänderten sequenziellen Seiten (am Block 256) in den Massenspeicher 10, wobei er den zweiten Cache-Speicher 18 umgeht. Wenn die geänderten Seiten (am Block 254) nichtsequenziell sind, stuft der Cache-Speicher-Manager 24 die ermittelten geänderten nichtsequenziellen Seiten (am Block 258) in den zweiten Cache-Speicher 18 um und löscht (am Block 260) die Kopie der ermittelten geänderten Seiten aus der Sicherungseinheit 16 des ersten Cache-Speichers.
-
Mit den Operationen der 7 und 8 werden nichtsequenzielle Seiten herabgestuft, aber nicht in den zweiten Cache-Speicher 18 umgestuft. Sequenziell geänderte (Schreiboperationen) werden direkt in den Massenspeicher 10 geschrieben, wobei der zweite Cache-Speicher umgangen wird. Sequenzielle nicht geänderte Seiten (Leseoperationen) werden gelöscht und nicht an eine andere Stelle kopiert, und nicht geänderte nichtsequenzielle Seiten, die aus dem ersten Cache-Speicher 14 herabgestuft wurden, werden in den zweiten Cache-Speicher 18 umgestuft.
-
9 zeigt eine Ausführungsform von Operationen, die von dem Cache-Speicher-Manager 24 durchgeführt werden, um dem ersten Cache-Speicher 14 eine Seite hinzuzufügen, d. h., um eine Seite in den ersten Cache-Speicher 14 umzustufen, wobei die Seite eine Schreiboperation oder eine geänderte Seite von einem Host 2a, 2b ... 2n oder gelesene angeforderte Daten aufweisen kann, die weder im Cache-Speicher 14 noch im Cache-Speicher 18 gefunden und aus dem Massenspeicher 10 abgerufen wurden. Nach dem Empfang (am Block 300) der dem ersten Cache-Speicher 14 hinzuzufügenden Seite erzeugt der Cache-Speicher-Manager 24 (am Block 301) einen Steuerblock 100 (4) für die hinzuzufügende Seite, wobei er den Speicherort 104 in dem ersten Cache-Speicher 14 angibt sowie angibt, ob die Seite geändert/nicht geändert 106 und sequenziell/nichtsequenziell 108 ist. Dieser Steuerblock 100 wird in das Steuerblockverzeichnis 52 des ersten Cache-Speichers 14 aufgenommen. Der Cache-Speicher-Manager 24 fügt (am Block 302) einen Eintrag zu dem Seitenindex 50 des ersten Cache-Speichers hinzu, der über die Seiten-ID der hinzuzufügenden Seite und einen Index auf den erzeugten Cache-Speicher-Steuerblock 100 in dem Steuerblockverzeichnis 52 verfügt. Ein Eintrag wird (am Block 304) an das MRU-Ende der LRU-Liste 54, 56 oder 58 des Seitentyps der hinzuzufügenden Seite angefügt. Wenn die hinzuzufügende Seite (am Block 306) eine geänderte nichtsequenzielle Seite ist, wird die hinzuzufügende Seite (am Block 308) auch in die Sicherungseinheit 16 des ersten Cache-Speichers kopiert und ein Eintrag für die hinzugefügte Seite wird zu dem Index 30 der Sicherungseinheit des ersten Cache-Speichers hinzugefügt. Wenn die hinzuzufügende Seite (am Block 306) eine nicht geänderte sequenzielle Seite ist, endet die Steuerung.
-
10 zeigt eine Ausführungsform von Operationen, die von dem Cache-Speicher-Manager 24 durchgeführt werden, um nichtsequenzielle Seiten in den zweiten Cache-Speicher 18 umzustufen, die gerade aus dem ersten Cache-Speicher 14 herabgestuft werden. Nach dem Einleiten (am Block 350) der Operation zum Umstufen einer Seite in den zweiten Cache-Speicher 18 fügt der Cache-Speicher-Manager 24 (am Block 352) die Seite, die gerade umgestuft wird, zu dem LSA 32 in dem zweiten Cache-Speicher 18 hinzu und erzeugt (am Block 354) einen Steuerblock 120 (5) für die hinzuzufügende Seite, wobei er den Speicherort 124 der Seite in dem LSA 32 angibt sowie angibt, ob die Seite geändert/nicht geändert 126 ist. Ein Eintrag wird zu dem Seitenindex 70 des zweiten Cache-Speichers hinzugefügt (am Block 356), der über die Seiten-ID der umgestuften Seite und einen Index auf den erzeugten Cache-Speicher-Steuerblock 120 in dem Steuerblockverzeichnis 72 für den zweiten Cache-Speicher 18 verfügt. Wenn es sich (von der Nein-Verzweigung des Blocks 358) bei der Seite, die gerade umgestuft wird, um nicht geänderte Daten handelt, gibt der Cache-Speicher-Manager 24 (am Block 360) die umgestufte Seite am MRU-Ende der nicht geänderten LRU-Liste 74 an, indem er die Seiten-ID an das MRU-Ende anfügt. Wenn es sich bei der umgestuften Seite (am Block 358) um geänderte Daten handelt, ermittelt der Cache-Speicher-Manager 24 (am Block 362) einen physischen Speicherort, an den die geänderte umgestufte Seite in dem Massenspeicher 10 geschrieben werden soll, und fügt (am Block 364) dem räumlichen Index 76 einen Eintrag hinzu, wobei er die Seiten-ID 142 der umgestuften Seite und den ermittelten physischen Speicherort 144 der umgestuften Seite im Massenspeicher 10 angibt.
-
11 zeigt eine Ausführungsform von Operationen, die von dem Cache-Speicher-Manager 24 durchgeführt werden, um in dem zweiten Cache-Speicher 18 Speicherplatz für neue Seiten freizugeben, die dem zweiten Cache-Speicher 18 hinzugefügt werden sollen, d. h. Seiten, die gerade aus dem ersten Cache-Speicher 14 herabgestuft werden. Nach dem Einleiten dieser Operation (am Block 400) ermittelt der Cache-Speicher-Manager 24 (am Block 402) nicht geänderte Seiten in dem zweiten Cache-Speicher 18 von dem LRU-Ende der nicht geänderten LRU-Liste 74 und macht die ermittelten nicht geänderten Seiten (am Block 404) ungültig, ohne die ungültig gemachten, nicht geänderten Seiten in den Massenspeicher 10 auszulagern, und entfernt die ungültig gemachten nicht geänderten Seiten auch aus der nicht geänderten LRU-Liste 74.
-
12 zeigt eine Ausführungsform von Operationen, die von dem Cache-Speicher-Manager 24 durchgeführt werden, um geänderte Seiten in dem zweiten Cache-Speicher 12 in den Massenspeicher 10 auszulagern. Nach dem Einleiten (am Block 420) der Auslagerungsoperation verwendet der Cache-Speicher-Manager 24 (am Block 422) den räumlichen Index 76, um in dem zweiten Cache-Speicher 18 geänderte Seiten, die zu Gruppen zusammengefasst werden sollen, zu ermitteln, welche sich auf der Grundlage ihrer Reihenfolge in dem räumlichen Index 76 an nah beieinander liegenden physischen Speicherorten in dem Massenspeicher 10 befinden, wie zum Beispiel eine Gruppe von Seiten an aufeinanderfolgenden Einträgen 140 (6) in dem nach dem Speicherort geordneten räumlichen Index 76. Die ermittelten zu Gruppen zusammengefassten geänderten Seiten werden aus dem zweiten Cache-Speicher 18 in den Massenspeicher 10 ausgelagert (am Block 424).
-
Die Operationen von 12 optimieren Schreiboperationen in den Massenspeicher 10, der eine Speichereinheit mit sequenziellem Zugriff aufweist, indem sie den Massenspeicher 10 veranlassen, Seiten an physische Speicherorte zu schreiben, die sich auf der Schreiboberfläche des Speichers 10 physisch am nächsten sind, um auf diese Weise das Such- und Bewegungsaufkommen des Schreibkopfes 10 des Speichers 10, um die sich in dem zweiten Cache-Speicher 18 befindlichen Seiten in den Massenspeicher zu schreiben, auf ein Mindestmaß zu reduzieren. Die Seiten wurden aus dem ersten Cache-Speicher 16 auf der Grundlage von Zeitfaktoren, wie zum Beispiel ihrer Position in einer LRU-Liste 54, 56, 58, und nicht in einer für das sequenzielle Schreiben in einen Massenspeicher 10 mit sequenziellem Zugriff, wie zum Beispiel einem Festplattenlaufwerk, optimierten Reihenfolge in den zweiten Cache-Speicher 18 umgestuft. Folglich optimieren die Operationen von 12 die zeitlich geordneten geänderten Seiten auf der Grundlage ihres räumlichen Speicherorts in dem Massenspeicher 10, um das Schreiben am Massenspeicher 10 zu optimieren.
-
13 zeigt eine Ausführungsform von Operationen, die von dem Cache-Speicher-Manager 24 durchgeführt werden, um angeforderte Seiten für eine Leseanforderung aus den Cache-Speichern 14 und 18 und dem Massenspeicher 10 abzurufen. Der Speichermanager 22, der die Leseanforderung verarbeitet, kann Anforderungen an den Cache-Speicher-Manager 24 für die angeforderten Seiten übergeben. Nach dem Empfang der Anforderung für die Seiten (am Block 450) verwendet der Cache-Speicher-Manager 24 (am Block 454) den Seitenindex 50 des ersten Cache-Speichers, um festzustellen, ob sich alle angeforderten Seiten in dem ersten Cache-Speicher 14 befinden. Wenn sich (am Block 454) nicht alle angeforderten Seiten in dem ersten Cache-Speicher 14 befinden, verwendet der Cache-Speicher-Manager 24 (am Block 456) den Seitenindex 70 des zweiten Cache-Speichers, um beliebige der angeforderten Seiten in dem zweiten Cache-Speicher 18 zu ermitteln, die sich nicht im ersten Cache-Speicher 14 befinden. Wenn es (am Block 458) angeforderte Seiten gibt, die weder im ersten Cache-Speicher 14 noch im zweiten Cache-Speicher 18 gefunden werden, ermittelt der Cache-Speicher-Manager 24 (am Block 460) beliebige der angeforderten Seiten von dem Seitenindex 70 des zweiten Cache-Speichers, die sich nicht im ersten Cache-Speicher 14 und auch nicht im zweiten Cache-Speicher 18 befinden, im Massenspeicher 10. Der Cache-Speicher-Manager 24 stuft (am Block 462) dann beliebige der im zweiten Cache-Speicher 18 und im Massenspeicher 10 ermittelten Seiten in den ersten Cache-Speicher 14 um. Der Cache-Speicher-Manager 24 verwendet (am Block 464) den Seitenindex 50 des ersten Cache-Speichers, um die angeforderten Seiten aus dem ersten Cache-Speicher 14 abzurufen, die auf die Leseanforderung zurückgesendet werden sollen. Die Einträge für die abgerufenen Seiten werden (am Block 466) an das MRU-Ende der LRU-Liste 54, 56, 58 verschoben, die Einträge für die abgerufenen Seiten enthält. Mit den Operationen von 13 ruft der Cache-Speicher-Manager 24 angeforderte Seiten zuerst aus einem Cache-Speicher 14 der höchsten Stufe, dann dem zweiten Cache-Speicher 18 ab, bevor er zum Massenspeicher 10 übergeht, da die Cache-Speicher 14 und 18 über die aktuellste geänderte Version einer angeforderten Seite verfügen würden. Die aktuellste Version wird zuerst im ersten Cache-Speicher 14, dann, wenn sie sich nicht in dem ersten Cache-Speicher 14 befindet, in dem zweiten Cache-Speicher 18 und dann, wenn sie sich weder im Cache-Speicher 14 noch im Cache-Speicher 18 befindet, im Massenspeicher 10 gefunden.
-
Mit den Operationen von 13 ruft der Cache-Speicher-Manager 24 angeforderte Seiten zuerst aus einem Cache-Speicher 14 der höchsten Stufe, dann dem zweiten Cache-Speicher 18 ab, bevor er zum Massenspeicher 10 übergeht, da die Cache-Speicher 14 und 18 über die aktuellste geänderte Version einer angeforderten Seite verfügen würden. Die aktuellste Version wird zuerst im ersten Cache-Speicher 14, dann, wenn sie sich nicht in dem ersten Cache-Speicher 14 befindet, in dem zweiten Cache-Speicher 18 und dann, wenn sie sich weder im Cache-Speicher 14 noch im Cache-Speicher 18 befindet, im Massenspeicher 10 gefunden.
-
Beschriebene Ausführungsformen stellen Verfahren bereit, um die Verwendung eines Cache-Speichers der zweiten Stufe zwischen einem primären oder Cache-Speicher der ersten Stufe und einem Massenspeicher zu ermöglichen, um den Speicherplatz des Cache-Speichers zu vergrößern, wenn der erste Cache-Speicher 14, auf den am schnellsten zugegriffen werden kann, den kostspieligsten Speicherplatz, die höchsten Kosten pro Byte hat, und wenn ein zweiter Cache-Speicher, der weniger kostenintensiv als der erste Cache-Speicher, aber schneller als der Massenspeicher ist, verwendet werden kann, um die Menge an zwischengespeicherten Daten in dem System zu erhöhen. Durch eine Vergrößerung des Speicherplatzes im Cache-Speicher, auf den schneller zugegriffen werden kann, wird der Zugriff auf die zwischengespeicherten Daten, wenn sich angeforderte Daten in dem Cache-Speicher befinden, verbessert, und sie können aus dem Cache-Speicher zurückgeschickt werden und müssen nicht aus dem günstigeren Massenspeicher, auf den langsamer zugegriffen werden kann, abgerufen werden. In beschriebenen Ausführungsformen werden ferner dem zweiten Cache-Speicher Seiten auf der Grundlage einer zeitlichen Sortierung in dem ersten Cache-Speicher hinzugefügt und dann basierend auf einem räumlichen physischen Speicherort in dem Speicher mit sequenziellem Zugriff in dem zweiten Cache-Speicher sortiert, so dass ausgelagerte Seiten in Gruppen von Seiten an dicht beieinander liegende oder aufeinanderfolgende physische Speicherorte in dem Massenspeicher geschrieben werden, um das Schreiben der Seiten in den Massenspeicher zu optimieren.
-
14 zeigt eine Ausführungsform eines Caching-Systems mit zwei Stufen 14, 18 und eines Massenspeichers 10. Der erste Cache-Speicher 14 und der zweite Cache-Speicher 18 stellen die beiden Stufen des Cache-Speichers dar.
-
Der Cache-Speicher-Manager 24 optimiert den ersten Cache-Speicher 14 in einem Caching-System mit zwei Stufen, in dem der erste Cache-Speicher 14 und der zweite Cache-Speicher 18 die beiden Cache-Speicher sind, die das zweistufige Caching-System bilden. Der Cache-Speicher-Manager 24 sagt den Nutzwert einer Seite voraus, wenn die Seite aus dem zweiten Cache-Speicher 18 in den ersten Cache-Speicher 14 umgestuft wird. Auf der Grundlage des Nutzwerts der Seite optimiert der Cache-Speicher-Manager 24 den ersten Cache-Speicher 14, indem er die Seite an die geeignete Stelle in der entsprechenden LRU-Liste 54, 56, 58 einfügt.
-
Der Cache-Speicher-Manager 24 verbessert die Auslastung des ersten Cache-Speichers 14, so dass Seiten, die aus dem zweiten Cache-Speicher 18 in den ersten Cache-Speicher 14 umgestuft werden, so in die LRU-Liste 54, 56, 58 in dem ersten Cache-Speicher 14 eingefügt werden, dass die Trefferquote in dem ersten Cache-Speicher 14 maximiert wird.
-
In bestimmten Ausführungsformen wird eine Seite in den ersten Cache-Speicher 14 verbracht, nachdem auf sie verwiesen wurde. Folglich wird eine Seite bei jedem Treffer, den diese Seite in dem zweiten Cache-Speicher 18 erfährt, in den ersten Cache-Speicher 14 umgestuft. Wenn die Temperatur der Seite in dem zweiten Cache-Speicher 18 ”kalt” ist (d. h. auf die Seite wird nicht häufig zugegriffen), möchte der Cache-Speicher-Manager 24 dennoch nicht, dass die kalte Seite einen Seitenrahmen im ersten Cache-Speicher 14 lange belegt; aus diesem Grund fügt der Cache-Speicher-Manager 24 die kalte Seite nicht in die MRU-Liste, sondern in die LRU-Liste des ersten Cache-Speichers 14 ein, so dass die kalte Seite bald entfernt wird. Der Cache-Speicher-Manager 24 kann eine ”warme” Seite (d. h. auf die Seite wird häufig zugegriffen) an das MRU-Ende der LRU-Liste des ersten Cache-Speichers 14 einfügen.
-
Der Cache-Speicher-Manager 24 ermittelt die Temperatur einer Seite, während sich die Seite in dem ersten Cache-Speicher 14 und in dem zweiten Cache-Speicher 18 befindet, indem er Referenzzähler 60, 78 in dem ersten Cache-Speicher 14 und in dem zweiten Cache-Speicher 18 verwaltet. Da sich jede in dem zweiten Cache-Speicher 18 zwischengespeicherte Seite zuvor in dem ersten Cache-Speicher 14 befand und aus dem ersten Cache-Speicher 14 ausgelagert wurde, wendet der Cache-Speicher-Manager 24 die folgende Regel an, um festzustellen, ob eine Seite, die gerade in dem zweiten Cache-Speicher 18 zwischengespeichert ist, immer noch warm oder erkaltet ist (d. h. an das MRU-Ende der LRU-Liste des ersten Cache-Speichers 14 beziehungsweise an das LRU-Ende der LRU-Liste des ersten Cache-Speichers 14 umgestuft werden soll): eine Seite aus dem zweiten Cache-Speicher 18 wird an das MRU-Ende der LRU-Liste des ersten Cache-Speichers 14 umgestuft, wenn die Anzahl der Treffer, welche die Seite in dem zweiten Cache-Speicher 18 erfahren hat, höher war als die Anzahl der Treffer, die die Seite erfahren hat, während sie zuvor im ersten Cache-Speicher 14 zwischengespeichert war. Genauer gesagt:
- 1. Für sowohl den ersten Cache-Speicher 14 als auch den zweiten Cache-Speicher 18 werden für jede Seite Referenzzähler 60, 78 verwaltet. Es seien cR und cF die Zähler für den ersten Cache-Speicher 14 beziehungsweise für den zweiten Cache-Speicher 18.
- 2. Während eine Seite in dem ersten Cache-Speicher 14 zwischengespeichert ist, wird cR nach jedem Verweis auf die Seite erhöht.
- 3. Wenn die Seite aus dem ersten Cache-Speicher 14 in den zweiten Cache-Speicher 18 herabgestuft wird, wenn cF < 0, wird cF auf den Anfangswert kcR gesetzt (wobei k = 1, 2, 3, ...). k ist eine Konstante, mit der die Temperatur einer Seite eingestellt wird.
- 4. Während die Seite in dem zweiten Cache-Speicher zwischengespeichert ist, wird cF nach einem Verweis auf die Seite verringert und:
wenn cF > 0, wird die Seite an das LRU-Ende der LRU-Liste des ersten Cache-Speichers 14 umgestuft, so dass die Seite bald entfernt wird;
andernfalls wird die Seite an das MRU-Ende der LRU-Liste des ersten Cache-Speichers 14 umgestuft.
-
Auf diese Weise belegen Seiten, die lange warm bleiben, Rahmen in dem ersten Cache-Speicher 14. Seiten, die kalt zu werden beginnen, werden in den zweiten Cache-Speicher 18 abgedrängt und bleiben dort sehr viel länger, wodurch sie eine zweite Chance bekommen, an die MRU-Position der LRU-Liste des ersten Cache-Speichers 14 zu gelangen, wenn diese Seiten in Bälde warm werden. In bestimmten Ausführungsformen kann cF anfangs auf den Höchstwert von kcR und eine Konstante K gesetzt werden, wenn nur Seiten, die mindestens K Treffer in dem zweiten Cache-Speicher 18 erfahren haben, an die MRU-Position der LRU-Liste des ersten Cache-Speichers 14 umgestuft werden sollen.
-
In bestimmten Ausführungsformen ist k ein statischer Konfigurationsparameter und wird von einem Systemadministrator gesetzt. In bestimmten alternativen Ausführungsformen ist k ein dynamischer Konfigurationsparameter, der automatisch angepasst wird (z. B. vom Cache-Speicher-Manager 24). In manchen dieser alternativen Ausführungsformen wird k als Durchschnittstemperatur der beiden Cache-Speicher 14, 18 festgelegt. Folglich stellt k einen geeigneten Skalierungsfaktor für die beiden Cache-Speicher 14, 18 dar.
-
In bestimmten Ausführungsformen werden die kalten Seiten aus dem zweiten Cache-Speicher 18 nicht an das LRU-Ende einer anderen LRU-Liste des ersten Cache-Speichers 14 angefügt, sondern in eine beschleunigte LRU-Liste 62 umgestuft. Wenn eine Seite aus dem ersten Cache-Speicher 14 entfernt werden soll, wird eine zu entfernende Seite aus der beschleunigten LRU-Liste 62 ausgewählt.
-
15 zeigt eine Ausführungsform von Operationen, die von dem Cache-Speicher-Manager 24 durchgeführt werden, um dem ersten Cache-Speicher 14 eine Seite hinzuzufügen, d. h. eine Seite in den ersten Cache-Speicher 14 umzustufen, wobei die Seite eine nichtsequenzielle Seite in dem zweiten Cache-Speicher 18 aufweisen kann, die Gegenstand einer Leseanforderung ist und folglich aus dem zweiten Cache-Speicher 18 in den ersten Cache-Speicher 14 verschoben wird. Nach dem Empfang (am Block 500) der dem ersten Cache-Speicher 14 hinzuzufügenden Seite erzeugt der Cache-Speicher-Manager 24 (am Block 502) einen Steuerblock 100 (4) für die hinzuzufügende Seite, wobei er den Speicherort 104 in dem ersten Cache-Speicher 14 angibt sowie angibt, ob die Seite geändert/nicht geändert 106 und sequenziell/nichtsequenziell 108 ist. Dieser Steuerblock 100 wird in das Steuerblockverzeichnis 52 des ersten Cache-Speichers 14 aufgenommen. Der Cache-Speicher-Manager 24 fügt (am Block 504) einen Eintrag zu dem Seitenindex 50 des ersten Cache-Speichers hinzu, der über die Seiten-ID der hinzuzufügenden Seite und einen Index auf den erzeugten Cache-Speicher-Steuerblock 100 in dem Steuerblockverzeichnis 52 verfügt.
-
Im Block 506 stellt der Cache-Speicher-Manager 24 fest, ob cf > 0 für die Seite ist. Wenn ja, schaltet die Verarbeitung zum Block 510 weiter, andernfalls schaltet die Verarbeitung zum Block 512 weiter. Ein Eintrag wird (am Block 508) an das MRU-Ende der LRU-Liste 54, 56 oder 58 des Seitentyps der hinzuzufügenden Seite angefügt. Ein Eintrag wird (am Block 510) an das LRU-Ende der LRU-Liste 54, 56 oder 58 des Seitentyps der hinzuzufügenden Seite angefügt. Wenn die hinzuzufügende Seite (am Block 512) eine geänderte nichtsequenzielle Seite ist, wird die hinzuzufügende Seite (am Block 514) auch in die Sicherungseinheit 16 des ersten Cache-Speichers kopiert und ein Eintrag für die hinzugefügte Seite wird zu dem Index 30 der Sicherungseinheit des ersten Cache-Speichers hinzugefügt. Wenn die hinzuzufügende Seite (am Block 512) eine nicht geänderte sequenzielle Seite ist, endet die Steuerung.
-
Folglich richten sich Ausführungsformen an die Umstufung in einem Cache-Speicher mit zwei Stufen, wobei eine Seite aus der zweiten Stufe des Cache-Speichers (d. h. dem zweiten Cache-Speicher 18) in die erste Stufe des Cache-Speichers (d. h. den ersten Cache-Speicher 14) gestellt werden soll. Ausführungsformen schauen sich die jüngste Historie der Seite, die gerade umgestuft wird, an. Wenn die Seite verhältnismäßig warm war, stellt der Cache-Speicher-Manager 24 die warme Seite an das MRU-Ende der LRU-Liste der ersten Stufe des Cache-Speichers. Wenn die Seite verhältnismäßig kalt war, versetzt der Cache-Speicher-Manager 24 die Seite in einen Zustand für eine schnelle Entfernung (d. h. an das LRU-Ende der MRU-Liste der ersten Stufe des Cache-Speichers).
-
Die beschriebenen Operationen können unter Verwendung von standardmäßigen Programmier- und/oder technischen Verfahren als ein Verfahren, eine Vorrichtung oder ein Computerprogrammprodukt realisiert werden, um Software, Firmware, Hardware oder eine beliebige Kombination daraus zu erzeugen. Folglich können Aspekte der Ausführungsformen vollständig als Hardware-Ausführungsform, vollständig als Software-Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder als eine Ausführungsform ausgebildet sein, 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 sich auf einem oder mehreren computerlesbaren Datenträger(n) befindet, auf dem beziehungsweise denen sich computerlesbarer Programmcode befindet.
-
Jede beliebige Kombination aus einem oder mehreren von einem Computer lesbaren Datenträgern kann verwendet werden. Der von einem Computer lesbare Datenträger kann ein von einem Computer lesbarer Signaldatenträger oder ein von einem Computer lesbares Speichermedium sein. Ein von einem Computer lesbares Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede beliebige geeignete Kombination des Vorstehenden sein. Zu konkreteren Beispielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für das von einem Computer lesbare Speichermedium würden folgende gehören: eine elektrische Verbindung mit einem oder mehreren Kabeln, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorstehenden. Im Kontext dieses Schriftstücks kann es sich bei einem von einem Computer lesbaren Speichermedium um jedes physisch greifbare Medium handeln, das ein Programm zur Verwendung durch oder zur Verwendung in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
-
Ein von einem Computer lesbarer Signaldatenträger kann ein weitergegebenes Datensignal mit darin enthaltenem, von einem Computer lesbarem Programmcode, beispielsweise im Basisband oder als Teil einer Trägerwelle, enthalten. Solch ein weitergegebenes Signal kann eine beliebige einer Vielzahl von Formen einschließlich elektromagnetischer, optischer Formen oder jede beliebige geeignete Kombination dieser Formen, ohne darauf beschränkt zu sein, annehmen. Bei einem von einem Computer lesbaren Signaldatenträger kann es sich um jeden beliebigen von einem Computer lesbaren Datenträger handeln, der kein von einem Computer lesbares Speichermedium ist und der ein Programm zur Verwendung durch ein Anweisungsausführungssystem, eine Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Anweisungsausführungssystem, einer Anweisungsausführungsvorrichtung oder -einheit übertragen, weitergeben oder senden kann.
-
Programmcode, der sich auf einem von einem Computer lesbaren Datenträger befindet, kann mittels eines beliebigen geeigneten Mediums einschließlich eines drahtlosen Mediums, eines drahtgebundenen Mediums, eines Lichtwellenleiterkabels, mittels Hochfrequenz (HF) usw., ohne darauf beschränkt zu sein, oder mittels jeder beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
-
Computerprogrammcode zur Durchführung von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache, wie beispielsweise Java, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” oder in ähnlichen Programmiersprachen geschrieben sein. Die Ausführung des Programmcodes kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server erfolgen. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden sein oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Dienstanbieters) hergestellt werden.
-
Aspekte der vorliegenden Erfindung sind vorstehend mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computer-Programmprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern mittels Anweisungen eines Computerprogramms realisiert werden können. Diese Anweisungen eines Computerprogramms können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine so zu erzeugen, dass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
-
Diese Anweisungen eines Computerprogramms können auch auf einem von einem Computer lesbaren Datenträger gespeichert werden, der einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem von einem Computer lesbaren Datenträger gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, der Anweisungen enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
-
Die Anweisungen des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf andere Einheiten geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf anderen Einheiten zu bewirken, um einen von einem Computer ausgeführten Prozess so zu erzeugen, dass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
-
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 einzelne 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 Daten miteinander austauschen, müssen nicht laufend Daten miteinander austauschen, es sei denn, es wird ausdrücklich etwas Anderes festgelegt. Darüber hinaus können Einheiten, die Daten miteinander austauschen, über eine oder mehrere Zwischenschaltungen direkt oder indirekt miteinander Daten austauschen.
-
Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die Daten miteinander austauschen, impliziert nicht, dass all diese 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 dergleichen in einer sequenziellen Reihenfolge beschrieben sein können, solche Prozesse, Verfahren und Algorithmen auch so konfiguriert werden, dass sie in anderen Reihenfolgen arbeiten. Mit anderen Worten, keine Sequenz oder Reihenfolge von Schritten, die möglicherweise beschrieben wird, impliziert, dass die Schritte auch in dieser Reihenfolge durchgeführt werden müssen. Die Schritte der hierin beschriebenen Prozesse können in jeder praktischen Reihenfolge durchgeführt werden. Des Weiteren können einige Schritte auch gleichzeitig durchgeführt werden.
-
Wird hierin eine einzelne Einheit oder ein einzelner Gegenstand beschrieben, ist ohne Weiteres ersichtlich, dass mehr als eine Einheit/ein Gegenstand (ungeachtet dessen, ob sie kooperieren oder nicht) anstelle einer einzelnen Einheit/eines einzelnen Gegenstands verwendet werden können. Ebenso ist, wo mehr als eine Einheit oder ein Gegenstand hierin beschrieben werden (ungeachtet dessen, ob sie kooperieren oder nicht) ohne Weiteres ersichtlich, dass auch eine einzelne Einheit/ein einzelner Gegenstand anstelle der mehr als einen Einheit oder des mehr als einen Gegenstands oder eine andere Anzahl von Einheiten/Gegenständen anstelle der dargestellten Anzahl von Einheiten oder Programmen verwendet werden können. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ von einer oder mehreren anderen Einheiten ausgebildet sein, die nicht ausdrücklich als eine solche Funktionalität/solche Merkmale aufweisend beschrieben sind. Demzufolge brauchen weitere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht zu enthalten.
-
Die veranschaulichten Operationen der 7 bis 13 und 15 zeigen bestimmte Ereignisse, die in einer bestimmten Reihenfolge auftreten. In alternativen Ausführungsformen können bestimmte Operationen in einer anderen Reihenfolge durchgeführt, modifiziert oder entfernt werden. Überdies 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 durchgeführt werden.
-
Die vorstehende Beschreibung von verschiedenen Ausführungsformen der Erfindung erfolgte zum Zweck der Veranschaulichung und Erläuterung. Es ist nicht beabsichtigt, eine erschöpfende Darstellung zu geben oder die Erfindung auf die genaue offenbarte Form zu begrenzen. Viele Ab- und Veränderungen sind in Anbetracht der vorstehenden Lehre möglich. Es ist beabsichtigt, dass der Umfang der Erfindung nicht durch diese ausführliche Beschreibung, sondern vielmehr durch die dieser Beschreibung beigefügten Ansprüche begrenzt wird. Die vorstehende Spezifikation, Beispiele und Informationen liefern eine vollständige Beschreibung der Herstellung und Verwendung der erfindungsgemäßen Zusammensetzung. Da viele Ausführungsformen der Erfindung realisiert werden können, ohne von der Wesensart und dem Umfang der Erfindung abzuweichen, ist die Erfindung in den Ansprüchen, die nachstehend beigefügt sind, dargelegt.