DE112013001284T5 - Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen - Google Patents

Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen Download PDF

Info

Publication number
DE112013001284T5
DE112013001284T5 DE112013001284.7T DE112013001284T DE112013001284T5 DE 112013001284 T5 DE112013001284 T5 DE 112013001284T5 DE 112013001284 T DE112013001284 T DE 112013001284T DE 112013001284 T5 DE112013001284 T5 DE 112013001284T5
Authority
DE
Germany
Prior art keywords
cache
page
cache memory
memory
pages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112013001284.7T
Other languages
English (en)
Other versions
DE112013001284B4 (de
Inventor
c/o IBM Corporation Blinick Stephen
c/o IBM Corporation Gupta Lokesh Mohan
c/o IBM Research GmbH Koltsidas Ioannis
c/o IBM Research GmbH Hu Xiao-Yu
c/o IBM Research GmbH Pletka Roman
c/o IBM Research GmbH Haas Robert
c/o IBM Corporation Benhase Michael Thomas
c/o IBM Research Gmb Eleftheriou Evangelos Stavros
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013001284T5 publication Critical patent/DE112013001284T5/de
Application granted granted Critical
Publication of DE112013001284B4 publication Critical patent/DE112013001284B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/122Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer

Abstract

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.

Description

  • 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.

Claims (9)

  1. Verfahren zum Verwalten von Daten in einem ersten Cache-Speicher und in einem zweiten Cache-Speicher, aufweisend: Verwalten, unter Verwendung eines Prozessors eines Computers, einer Referenzanzahl für eine Seite in dem zweiten Cache-Speicher, wenn die Seite in dem zweiten Cache-Speicher gespeichert ist; Feststellen, 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, Anfügen der Seite an ein Least-Recently-Used-(LRU-)Ende einer LRU-Liste in dem ersten Cache-Speicher; und als Reaktion auf die Feststellung, dass die Referenzanzahl kleiner oder gleich Null ist, Anfügen der Seite an ein Most-Recently-Used-(LRU-)Ende der LRU-Liste in dem ersten Cache-Speicher.
  2. Verfahren nach Anspruch 1, wobei der erste Cache-Speicher und der zweite Cache-Speicher mit dem Massenspeicher verbunden sind.
  3. Verfahren nach Anspruch 1 oder Anspruch 2, wobei, wobei der erste Cache-Speicher eine Einheit ist, auf die schneller zugegriffen werden kann als auf den zweiten Cache-Speicher, und wobei der zweite Cache-Speicher eine Einheit ist, auf die schneller zugegriffen werden kann als auf den Massenspeicher.
  4. Verfahren nach Anspruch 1, wobei der erste Cache-Speicher einen Direktzugriffsspeicher (RAM), der zweite Cache-Speicher eine Flash-Einheit und der Massenspeicher eine Einheit für sequenzielle Schreiboperationen aufweist.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Referenzanzahl eine erste Referenzanzahl aufweist und darüber hinaus aufweist: Verwalten einer zweiten Referenzanzahl in dem ersten Cache-Speicher für die Seite, wenn die Seite in dem ersten Cache-Speicher gespeichert ist, wobei die zweite Referenzanzahl für die Seite in dem ersten Cache-Speicher nach jedem Verweis auf die Seite in dem ersten Cache-Speicher erhöht wird.
  6. Verfahren nach einem der vorhergehenden Ansprüche, des Weiteren aufweisend: Verringern der Referenzanzahl für die Seite in dem zweiten Cache-Speicher nach jedem Verweis auf die Seite in dem zweiten Cache-Speicher.
  7. Verfahren nach Anspruch 1, wobei die Referenzanzahl eine erste Referenzanzahl aufweist und darüber hinaus aufweist: als Reaktion auf die Feststellung, dass die Seite aus dem ersten Cache-Speicher in den zweiten Cache-Speicher herabgestuft wird, Feststellen, ob die erste Referenzanzahl kleiner Null ist; und als Reaktion auf die Feststellung, dass die erste Referenzanzahl kleiner Null ist, Setzen der ersten Referenzanzahl auf eine Konstante (k) multipliziert mit einer zweiten Referenzanzahl.
  8. Computerprogrammprodukt zum Verwalten von Daten in einem ersten Cache-Speicher und in einem zweiten Cache-Speicher, wobei das Computerprogrammprodukt ein von einem Computer lesbares Speichermedium aufweist, in dem sich von einem Computer lesbarer Programmcode befindet, der ausgeführt wird, um das Verfahren nach einem der Ansprüche 1 bis 7 durchzuführen.
  9. System zum Verwalten von Daten, aufweisend: einen ersten Cache-Speicher; einen zweiten Cache-Speicher; einen Prozessor; ein von einem Computer lesbares Speichermedium, das über Code verfügt, der von dem Prozessor ausgeführt wird, um das Verfahren nach einem der Ansprüche 1 bis 7 durchzuführen.
DE112013001284.7T 2012-03-05 2013-02-18 Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen Active DE112013001284B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/412,412 US8930624B2 (en) 2012-03-05 2012-03-05 Adaptive cache promotions in a two level caching system
US13/412,412 2012-03-05
PCT/IB2013/051313 WO2013132370A1 (en) 2012-03-05 2013-02-18 Adaptive cache promotions in a two level caching system

Publications (2)

Publication Number Publication Date
DE112013001284T5 true DE112013001284T5 (de) 2014-12-24
DE112013001284B4 DE112013001284B4 (de) 2022-07-07

Family

ID=49043503

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013001284.7T Active DE112013001284B4 (de) 2012-03-05 2013-02-18 Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen

Country Status (6)

Country Link
US (2) US8930624B2 (de)
JP (1) JP6113199B2 (de)
CN (1) CN104145252B (de)
DE (1) DE112013001284B4 (de)
GB (1) GB2514501B (de)
WO (1) WO2013132370A1 (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700861B1 (en) * 2012-03-28 2014-04-15 Emc Corporation Managing a dynamic list of entries for cache page cleaning
WO2013175529A1 (en) * 2012-05-23 2013-11-28 Hitachi, Ltd. Storage system and storage control method for using storage area based on secondary storage as cache area
US9547604B2 (en) 2012-09-14 2017-01-17 International Business Machines Corporation Deferred RE-MRU operations to reduce lock contention
US9733991B2 (en) 2012-09-14 2017-08-15 International Business Machines Corporation Deferred re-MRU operations to reduce lock contention
US8990524B2 (en) * 2012-09-27 2015-03-24 Hewlett-Packard Development Company, Lp. Management of data elements of subgroups
US9286219B1 (en) * 2012-09-28 2016-03-15 Emc Corporation System and method for cache management
US9703505B2 (en) * 2013-12-30 2017-07-11 Teradata Us, Inc. Management of data in multi-storage systems that can include non-volatile and volatile storages
US10268410B2 (en) 2014-10-20 2019-04-23 Netapp, Inc. Efficient modification of storage system metadata
US9965196B2 (en) * 2014-10-20 2018-05-08 Netapp, Inc. Resource reservation for storage system metadata updates
US10817425B2 (en) * 2014-12-26 2020-10-27 Intel Corporation Hardware/software co-optimization to improve performance and energy for inter-VM communication for NFVs and other producer-consumer workloads
CN105938447B (zh) * 2015-03-06 2018-12-14 华为技术有限公司 数据备份装置及方法
US9652406B2 (en) 2015-04-30 2017-05-16 International Business Machines Corporation MRU batching to reduce lock contention
US10320936B2 (en) 2015-10-20 2019-06-11 International Business Machines Corporation Populating a secondary cache with unmodified tracks in a primary cache when redirecting host access from a primary server to a secondary server
US10127152B2 (en) 2015-10-20 2018-11-13 International Business Machines Corporation Populating a second cache with tracks from a first cache when transferring management of the tracks from a first node to a second node
US10033810B2 (en) 2015-12-03 2018-07-24 International Business Machines Corporation Recovery point objective via dynamic usage of bind segments in a global mirror environment
KR20170109133A (ko) * 2016-03-17 2017-09-28 에스케이하이닉스 주식회사 하이브리드 메모리 장치 및 그의 데이터 관리 방법
KR20170130011A (ko) * 2016-05-17 2017-11-28 삼성전자주식회사 캐시 메모리를 포함하는 서버 장치 및 그것의 동작 방법
US10037149B2 (en) * 2016-06-17 2018-07-31 Seagate Technology Llc Read cache management
CN106844231A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 末级高速缓存软硬件协作分区域管理系统及管理方法
CN106844232A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 一种面向多核处理器的共享末级高速缓存访存方法和装置
US10235283B2 (en) 2017-03-14 2019-03-19 International Business Machines Corporation Techniques for supporting in-place updates with a log-structured array controller
CN110058964B (zh) * 2018-01-18 2023-05-02 伊姆西Ip控股有限责任公司 数据恢复方法、数据恢复系统和计算机可读介质
CN110413545B (zh) * 2018-04-28 2023-06-20 伊姆西Ip控股有限责任公司 存储管理方法、电子设备和计算机程序产品
CN110413214B (zh) * 2018-04-28 2023-07-18 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机程序产品
US10983922B2 (en) * 2018-05-18 2021-04-20 International Business Machines Corporation Selecting one of multiple cache eviction algorithms to use to evict a track from the cache using a machine learning module
CN109857680B (zh) * 2018-11-21 2020-09-11 杭州电子科技大学 一种基于动态页面权重的lru闪存缓存管理方法
US11151057B2 (en) * 2019-12-06 2021-10-19 EMC IP Holding Company LLC Method and system for efficiently evicting data from memory slots in a storage system
US11022014B1 (en) 2020-04-28 2021-06-01 Faurecia Emissions Control Technologies, Usa, Llc Exhaust aftertreatment system with heated flash-boiling doser
CN111915763A (zh) * 2020-07-24 2020-11-10 东风汽车有限公司 一种汽车高级驾驶辅助功能异常信息采集方法及电子设备
US11379382B2 (en) * 2020-12-08 2022-07-05 International Business Machines Corporation Cache management using favored volumes and a multiple tiered cache memory
US11372778B1 (en) 2020-12-08 2022-06-28 International Business Machines Corporation Cache management using multiple cache memories and favored volumes with multiple residency time multipliers
CN114138186B (zh) * 2021-11-10 2024-02-23 杭州当虹科技股份有限公司 一种可动态调节的缓存方法和装置

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61131142A (ja) 1984-11-30 1986-06-18 Casio Comput Co Ltd Lru機構
US5381539A (en) 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
JPH0652060A (ja) 1992-07-28 1994-02-25 Hitachi Ltd Lruリスト制御方式
US5860131A (en) * 1996-06-17 1999-01-12 Helix Software Co. Method for providing dynamic cache management in a computer system
US6141731A (en) * 1998-08-19 2000-10-31 International Business Machines Corporation Method and system for managing data in cache using multiple data structures
JP2001109664A (ja) 1999-10-08 2001-04-20 Ricoh Co Ltd 情報処理装置およびそのバッファ管理方法
US6738865B1 (en) 2000-06-09 2004-05-18 International Business Machines Corporation Method, system, and program for demoting data from cache based on least recently accessed and least frequently accessed data
CA2312444A1 (en) 2000-06-20 2001-12-20 Ibm Canada Limited-Ibm Canada Limitee Memory management of data buffers incorporating hierarchical victim selection
US6507893B2 (en) 2001-01-26 2003-01-14 Dell Products, L.P. System and method for time window access frequency based caching for memory controllers
US6785771B2 (en) * 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
JP2004355365A (ja) * 2003-05-29 2004-12-16 Fujitsu Ltd キャッシュ管理装置およびキャッシュメモリ管理方法
US7769974B2 (en) 2004-09-10 2010-08-03 Microsoft Corporation Increasing data locality of recently accessed resources
US20060136668A1 (en) * 2004-12-17 2006-06-22 Rudelic John C Allocating code objects between faster and slower memories
US20070067575A1 (en) 2005-09-20 2007-03-22 Morris John M Method of managing cache memory based on data temperature
US8363519B2 (en) 2006-06-30 2013-01-29 Seagate Technology Llc Hot data zones
US7908236B2 (en) * 2006-07-20 2011-03-15 International Business Machines Corporation Using multiple data structures to manage data in cache
US20080104323A1 (en) 2006-10-26 2008-05-01 Colglazier Daniel J Method for identifying, tracking, and storing hot cache lines in an smp environment
US7711905B2 (en) 2007-07-16 2010-05-04 International Business Machines Corporation Method and system for using upper cache history information to improve lower cache data replacement
US8171224B2 (en) * 2009-05-28 2012-05-01 International Business Machines Corporation D-cache line use history based done bit based on successful prefetchable counter
US8880835B2 (en) 2009-07-07 2014-11-04 International Business Machines Corporation Adjusting location of tiered storage residence based on usage patterns
US20110107042A1 (en) 2009-11-03 2011-05-05 Andrew Herron Formatting data storage according to data classification
JP2011150684A (ja) * 2009-12-21 2011-08-04 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
JP5434738B2 (ja) 2010-03-26 2014-03-05 日本電気株式会社 ディスク装置

Also Published As

Publication number Publication date
GB201414607D0 (en) 2014-10-01
GB2514501A (en) 2014-11-26
US8935479B2 (en) 2015-01-13
US20130232294A1 (en) 2013-09-05
US20130232295A1 (en) 2013-09-05
DE112013001284B4 (de) 2022-07-07
CN104145252A (zh) 2014-11-12
CN104145252B (zh) 2017-03-29
US8930624B2 (en) 2015-01-06
GB2514501B (en) 2015-03-25
WO2013132370A1 (en) 2013-09-12
JP6113199B2 (ja) 2017-04-12
JP2015516613A (ja) 2015-06-11

Similar Documents

Publication Publication Date Title
DE112013001284B4 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE112012001302B4 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE112012001808B4 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE60035151T2 (de) Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE112012004540B4 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE112012004798B4 (de) Anpassung der Auslagerungsgeschwindigkeit auf Grundlage von Anforderungen an Lese- und Schreib-Antwortzeiten
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE19961499A1 (de) Caching von Objekten in Platten-gestützten Datenbanken
DE102013209318B4 (de) Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE10232926A1 (de) Cachesystem mit Leitungsgruppen und mit Kohärenz sowohl für einzelne Leitungen als auch Gruppen von Leitungen
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE112012004571T5 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE112012004796B4 (de) Periodische Auslagerungen von Innen- und Aussendurchmessern von Platten zum Verbessern von Lesereaktionszeiten
DE102015007709A1 (de) Invalidationsdatenbereich für einen Cache
DE102016001682A1 (de) Leistungsausgeglichene Datenspeichervorrichtung
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE112011100564T5 (de) Einfügen eines Flash-Zwischenspeichers in große Speichersysteme

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final