DE112012001808B4 - Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher - Google Patents

Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher Download PDF

Info

Publication number
DE112012001808B4
DE112012001808B4 DE112012001808.7T DE112012001808T DE112012001808B4 DE 112012001808 B4 DE112012001808 B4 DE 112012001808B4 DE 112012001808 T DE112012001808 T DE 112012001808T DE 112012001808 B4 DE112012001808 B4 DE 112012001808B4
Authority
DE
Germany
Prior art keywords
cache
tracks
memory
unmodified
modified
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.)
Active
Application number
DE112012001808.7T
Other languages
English (en)
Other versions
DE112012001808T5 (de
Inventor
Michael Thomas Benhase
Lokesh Mohan Gupta
Matthew Joseph Kalos
Binny Sher Gill
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 DE112012001808T5 publication Critical patent/DE112012001808T5/de
Application granted granted Critical
Publication of DE112012001808B4 publication Critical patent/DE112012001808B4/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Computerprogrammprodukt zum Verwalten von Daten in einem Cachespeichersystem, aufweisend einen ersten Cachespeicher, einen zweiten Cachespeicher und eine Speichereinheit, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit einem darauf ausgebildeten computerlesbaren Programmcode aufweist, der ausgeführt wird, um Operationen durchzuführen, wobei die Operationen aufweisen:Führen in dem ersten Cachespeicher modifizierter und unmodifizierter Spuren in dem Speicher, der Eingabe/Ausgabeanforderungen unterliegt;Zurücksetzen modifizierter und unmodifizierter Spuren von dem ersten Cachespeicher;Weitergeben der von dem ersten Cachespeicher zurückgesetzten modifizierten und unmodifizierten Spuren an den zweiten Cachespeicher;Verwerfen unmodifizierter Spuren, die von dem zweiten Cachespeicher zurückgesetzt wurden;Gruppieren modifizierter Spuren in dem zweiten Cachespeicher, die sich an nahen physischen Orten auf der Speichereinheit befinden; undAuslesen der gruppierten modifizierten Spuren aus dem zweiten Cachespeicher auf die Speichereinheit.

Description

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

Claims (20)

  1. Computerprogrammprodukt zum Verwalten von Daten in einem Cachespeichersystem, aufweisend einen ersten Cachespeicher, einen zweiten Cachespeicher und eine Speichereinheit, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium mit einem darauf ausgebildeten computerlesbaren Programmcode aufweist, der ausgeführt wird, um Operationen durchzuführen, wobei die Operationen aufweisen: Führen in dem ersten Cachespeicher modifizierter und unmodifizierter Spuren in dem Speicher, der Eingabe/Ausgabeanforderungen unterliegt; Zurücksetzen modifizierter und unmodifizierter Spuren von dem ersten Cachespeicher; Weitergeben der von dem ersten Cachespeicher zurückgesetzten modifizierten und unmodifizierten Spuren an den zweiten Cachespeicher; Verwerfen unmodifizierter Spuren, die von dem zweiten Cachespeicher zurückgesetzt wurden; Gruppieren modifizierter Spuren in dem zweiten Cachespeicher, die sich an nahen physischen Orten auf der Speichereinheit befinden; und Auslesen der gruppierten modifizierten Spuren aus dem zweiten Cachespeicher auf die Speichereinheit.
  2. Computerprogrammprodukt nach Anspruch 1, wobei es sich bei dem ersten Cachespeicher um eine Einheit mit schnellerem Zugriff als der des zweiten Cachespeichers handelt, und wobei es sich bei dem zweiten Cachespeicher um eine Einheit mit schnellerem Zugriff als der des Speichers handelt.
  3. Computerprogrammprodukt nach Anspruch 1, wobei der erste Cachespeicher einen Arbeitsspeicher (RAM) aufweist, der zweite Cachespeicher eine Flash-Einheit aufweist und die Speichereinheit eine Einheit mit sequenziellem Schreiben aufweist.
  4. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen des Weiteren aufweisen: Führen eines räumlichen Indexes, der die modifizierten Spuren in dem zweiten Cachespeicher in einer Reihenfolge auf der Grundlage ihres physischen Ortes in dem Speicher anzeigt, wobei der räumliche Index verwendet wird, um auf der Grundlage ihrer Reihenfolge in dem räumlichen Index die modifizierten Spuren festzulegen, die gruppiert werden sollen, die sich an nahen physischen Orten auf der Speichereinheit befinden.
  5. Computerprogrammprodukt nach Anspruch 1, wobei die von dem ersten Cachespeicher zurückgesetzten modifizierten und unmodifizierten Spuren, die an den zweiten Cachespeicher weitergegeben werden, Online Line Transaction Processing (OLTP)-Spuren aufweisen.
  6. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen des Weiteren aufweisen: Führen einer ersten LRU(Least Recently Used)-Liste, die unmodifizierte nichtsequenzielle Spuren in dem ersten Cachespeicher anzeigt; Führen einer zweiten LRU-Liste, die unmodifizierte sequenzielle Spuren in dem ersten Cachespeicher anzeigt; Festlegen, dass unmodifizierte nichtsequenzielle Spuren in dem ersten Cachespeicher zurückgesetzt werden sollen; Verwenden der ersten LRU-Liste, um die unmodifizierten nichtsequenziellen Spuren festzulegen, die zurückgesetzt werden sollen; Festlegen, dass unmodifizierte sequenzielle Spuren in dem ersten Cachespeicher zurückgesetzt werden sollen; und Verwenden der zweiten LRU-Liste, um die unmodifizierten sequenziellen Spuren festzulegen, die zurückgesetzt werden sollen.
  7. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen des Weiteren aufweisen: Führen einer LRU- (am wenigsten aktuell genutzten, „least recently used“) Liste unmodifizierter Spuren in dem zweiten Cachespeicher; Ermitteln, dass Spuren von dem zweiten Cachespeicher zurückgesetzt werden sollen, um Platz freizumachen; Festlegen unmodifizierter Spuren von der LRU-Liste von unmodifizierten Spuren in dem zweiten Cachespeicher; und Annullieren der festgelegten unmodifizierten Spuren von dem zweiten Cachespeicher.
  8. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen des Weiteren aufweisen: Speichern modifizierter und unmodifizierter Spuren, die von dem ersten Cachespeicher zurückgesetzt wurden, in einem Log Structured Array (LSA) in dem zweiten Cachespeicher; und Führen eines LSA-Index für den zweiten Cachespeicher, der Spuren in dem zweiten Cachespeicher anzeigt und für jede Spur einen Zeiger auf einen Steuerblock für die Spur, der einen Ort der Spur in der LSA anzeigt.
  9. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen des Weiteren aufweisen: Schreiben einer modifizierten dem ersten Cachespeicher hinzugefügten Spur in eine Cachespeicher-Backup-Einheit; Führen einer Liste modifizierter LRU eines ersten Cachespeichers, die modifizierte Spuren in dem ersten Cachespeicher anzeigt; Festlegen, dass von der ersten Cachespeicher-Backup-Einheit ausgelesen werden soll; Verwenden der Liste modifizierter LRU des ersten Cachespeichers, um modifizierte Spuren festzulegen, die von dem ersten Cachespeicher ausgelesen werden sollen, in Reaktion darauf, dass die Liste modifizierter LRU des ersten Cachespeichers voll ist; und Verwerfen von Spuren aus der Cachespeicher-Backup-Einheit, bei denen es sich um Kopien der modifizierten Spuren handelt, von denen festgelegt wurde, dass sie zurückgesetzt werden sollen.
  10. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen des Weiteren aufweisen: Empfangen einer Leseanforderung für angeforderte Spuren; Abrufen jeglicher der angeforderten Spuren in dem ersten Cachespeicher, um sie an die Leseanforderung zurückzugeben; Abrufen jeglicher der angeforderten Spuren, die nicht in dem ersten Cachespeicher gefunden wurden, die sich in dem zweiten Cachespeicher befinden, um sie an die Leseanforderung zurückzugeben; und Abrufen jeglicher der angeforderten Spuren aus dem Speicher, die nicht in dem ersten oder dem zweiten Cachespeicher gefunden wurden, um sie an die Leseanforderung zurückzugeben; und Weitergeben jeglicher der angeforderten Spuren, die aus dem zweiten Cachespeicher und dem Speicher abgerufen wurden, an den ersten Cachespeicher.
  11. System, das in Datenübertragung mit einer Speichereinheit steht, aufweisend: einen ersten Cachespeicher; einen zweiten Cachespeicher; einen Prozessor; ein computerlesbares Speichermedium mit einem Code, der von dem Prozessor zum Durchführen von Operationen ausgeführt wird, wobei die Operationen aufweisen: Führen in dem ersten Cachespeicher modifizierter und unmodifizierter Spuren in dem Speicher, der Eingabe/Ausgabe (E/A) Anforderungen unterliegt; Zurücksetzen modifizierter und unmodifizierter Spuren von dem ersten Cachespeicher; Weitergeben der modifizierten und der unmodifizierten Spuren von dem ersten Cachespeicher; Verwerfen unmodifizierter Spuren, die von dem zweiten Cachespeicher zurückgesetzt wurden; Gruppieren modifizierter Spuren in dem zweiten Cachespeicher, die sich an naheliegenden physischen Orten zueinander auf der Speichereinheit befinden; und Auslesen der gruppierten modifizierten Spuren von dem zweiten Cachespeicher in die Speichereinheit.
  12. System nach Anspruch 11, wobei der erste Cachespeicher einen Arbeitsspeicher (RAM) aufweist, der zweite Cachespeicher eine Flash-Einheit aufweist und die Speichereinheit eine Einheit mit sequenzieller Schreibfunktion aufweist.
  13. System nach Anspruch 11, wobei die Operationen des Weiteren aufweisen: Führen eines räumlichen Indexes, der die modifizierten Spuren in dem zweiten Cachespeicher in einer Reihenfolge auf der Grundlage ihres physischen Ortes in dem Speicher anzeigt, wobei der räumliche Index verwendet wird, um die modifizierten Spuren zu ermitteln, die gruppiert werden, die sich an nahen physischen Orten auf der Speichereinheit befinden, auf der Grundlage ihrer Reihenfolge in dem räumlichen Index.
  14. System nach Anspruch 11, wobei die Operationen des Weiteren aufweisen: Führen einer ersten LRU-Liste, die unmodifizierte nichtsequenzielle Spuren in dem ersten Cachespeicher anzeigt; Führen einer zweiten LRU-Liste, die unmodifizierte sequenzielle Spuren in dem ersten Cachespeicher anzeigt; Festlegen, dass unmodifizierte nichtsequenzielle Spuren in dem ersten Cachespeicher zurückgesetzt werden sollen; Verwenden der ersten LRU-Liste, um die unmodifizierten nichtsequenziellen Spuren, die zurückgesetzt werden sollen, festzulegen; Festlegen, dass unmodifizierte sequenzielle Spuren in dem ersten Cachespeicher zurückgesetzt werden sollen; und Verwenden der zweiten LRU-Liste, um die unmodifizierten sequenziellen Spuren, die zurückgesetzt werden sollen, festzulegen.
  15. System nach Anspruch 11, wobei die Operationen des Weiteren aufweisen: Empfangen einer Leseanforderung für die angeforderten Spuren; Abrufen jeglicher der angeforderten Spuren in dem ersten Cachespeicher, um sie an die Leseanforderung zurückzugeben; Abrufen jeglicher der angeforderten Spuren, die nicht in dem ersten Cachespeicher gefunden wurden, die sich in dem zweiten Cachespeicher befinden, um sie an die Leseanforderung zurückzugeben; und Abrufen jeglicher der angeforderten Spuren, die nicht in dem ersten oder dem zweiten Cachespeicher gefunden wurden, von dem Speicher, um sie an die Leseanforderung zurückzugeben; und Weitergeben jeglicher der angeforderten Spuren an den ersten Cachespeicher, die von dem zweiten Cachespeicher und dem Speicher abgerufen wurden.
  16. Verfahren aufweisend: Führen in dem ersten Cachespeicher modifizierter und unmodifizierter Spuren in dem Speicher, der Eingabe/Ausgabe (E/A) Anforderungen unterliegt; Zurücksetzen modifizierter und unmodifizierter Spuren von dem ersten Cachespeicher; Weitergeben der modifizierten und unmodifizierten Spuren, die von dem ersten Cachespeicher zurückgesetzt wurden, an einen zweiten Cachespeicher; Verwerfen unmodifizierter Spuren, die von dem ersten Cachespeicher zurückgesetzt wurden; Gruppieren modifizierter Spuren in dem zweiten Cachespeicher, die sich an physischen Orten auf der Speichereinheit nahe zueinander befinden; und Auslesen der gruppierten modifizierten Spuren von dem zweiten Cachespeicher an die Speichereinheit.
  17. Verfahren nach Anspruch 16, wobei der erste Cachespeicher einen Arbeitsspeicher (RAM) aufweist, der zweite Cachespeicher eine Flash-Einheit aufweist und die Speichereinheit eine Einheit mit sequenziellem Schreiben aufweist.
  18. Verfahren nach Anspruch 16, des Weiteren aufweisend: Führen eines räumlichen Indexes, der die modifizierten Spuren in dem zweiten Cachespeicher in einer Reihenfolge auf der Grundlage ihres physischen Ortes in dem Speicher anzeigt, wobei der räumliche Index verwendet wird, um auf der Grundlage ihrer Reihenfolge in dem räumlichen Index die modifizierten Spuren festzulegen, die gruppiert werden sollen, die sich an nahen physischen Orten auf der Speichereinheit befinden.
  19. Verfahren nach Anspruch 16, des Weiteren aufweisend: Führen einer ersten LRU-Liste, die unmodifizierte nichtsequenzielle Spuren in dem ersten Cachespeicher anzeigt; Führen einer zweiten LRU-Liste, die unmodifizierte sequenzielle Spuren in dem ersten Cachespeicher anzeigt; Festlegen, dass unmodifizierte nichtsequenzielle Spuren in dem ersten Cachespeicher zurückgesetzt werden sollen; Verwenden der ersten LRU-Liste, um die unmodifizierten nichtsequenziellen Spuren festzulegen, die zurückgesetzt werden sollen; Festlegen, dass unmodifizierte sequenzielle Spuren in dem ersten Cachespeicher zurückgesetzt werden sollen; und Verwenden der zweiten LRU-Liste, um die unmodifizierten sequenziellen Spuren festzulegen, die zurückgesetzt werden sollen.
  20. Verfahren nach Anspruch 16, des Weiteren aufweisend: Empfangen einer Leseanforderung für angeforderte Spuren; Abrufen jeglicher der angeforderten Spuren in dem ersten Cachespeicher, um sie an die Leseanforderung zurückzugeben; Abrufen jeglicher der angeforderten Spuren, die nicht in dem ersten Cachespeicher gefunden wurden, die sich in dem zweiten Cachespeicher befinden, um sie an die Leseanforderung zurückzugeben; und Abrufen jeglicher der angeforderten Spuren, die nicht in dem ersten oder dem zweiten Cachespeicher gefunden wurden, aus dem Speicher, um sie an die Leseanforderung zurückzugeben; und Weitergeben jeglicher der angeforderten Spuren, die aus dem zweiten Cachespeicher und dem Speicher abgerufen wurden, an den ersten Cachespeicher.
DE112012001808.7T 2011-05-23 2012-05-22 Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher Active DE112012001808B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/113,974 2011-05-23
US13/113,974 US8793436B2 (en) 2011-05-23 2011-05-23 Cache management of tracks in a first cache and a second cache for a storage
PCT/IB2012/052563 WO2012160513A1 (en) 2011-05-23 2012-05-22 Cache management of tracks in a first cache and a second cache for a storage

Publications (2)

Publication Number Publication Date
DE112012001808T5 DE112012001808T5 (de) 2014-01-23
DE112012001808B4 true DE112012001808B4 (de) 2018-12-13

Family

ID=47216678

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012001808.7T Active DE112012001808B4 (de) 2011-05-23 2012-05-22 Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher

Country Status (6)

Country Link
US (2) US8793436B2 (de)
JP (1) JP6099059B2 (de)
CN (1) CN103562887B (de)
DE (1) DE112012001808B4 (de)
GB (1) GB2504911B (de)
WO (1) WO2012160513A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280477B2 (en) * 2010-12-13 2016-03-08 Seagate Technology Llc Data storage management in a memory device
US9426120B1 (en) * 2012-12-21 2016-08-23 Mobile Iron, Inc. Location and time based mobile app policies
JP6273678B2 (ja) * 2013-03-01 2018-02-07 日本電気株式会社 ストレージ装置
US9632945B2 (en) 2013-11-12 2017-04-25 International Business Machines Corporation Destage grouping for sequential fast write tracks
US9141486B2 (en) 2014-01-15 2015-09-22 Avago Technologies General Ip (Singapore) Pte Ltd Intelligent I/O cache rebuild in a storage controller
US10293811B2 (en) 2015-06-01 2019-05-21 Nissan Motor Co., Ltd. Hybrid vehicle power generation control device
US9747041B2 (en) * 2015-12-23 2017-08-29 Intel Corporation Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device
US10417139B2 (en) * 2017-08-18 2019-09-17 International Business Machines Corporation Cache management based on types of I/O operations
US11054994B2 (en) * 2017-12-14 2021-07-06 International Business Machines Corporation Copy source to target management in a data storage system
US10521139B2 (en) 2017-12-14 2019-12-31 International Business Machines Corporation Copy source to target management in a data storage system
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
JP2020115275A (ja) * 2019-01-17 2020-07-30 富士通株式会社 情報処理装置およびプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090077312A1 (en) 2007-09-19 2009-03-19 Hitachi, Ltd. Storage apparatus and data management method in the storage apparatus
US7793061B1 (en) 2007-06-29 2010-09-07 Emc Corporation Techniques for using flash-based memory as a write cache and a vault

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464713A (en) 1981-08-17 1984-08-07 International Business Machines Corporation Method and apparatus for converting addresses of a backing store having addressable data storage devices for accessing a cache attached to the backing store
JPH05303528A (ja) * 1992-04-27 1993-11-16 Oki Electric Ind Co Ltd ライトバック式ディスクキャッシュ装置
US5418921A (en) * 1992-05-05 1995-05-23 International Business Machines Corporation Method and means for fast writing data to LRU cached based DASD arrays under diverse fault tolerant modes
US5991775A (en) 1992-09-23 1999-11-23 International Business Machines Corporation Method and system for dynamic cache allocation between record and track entries
US5437022A (en) * 1992-12-17 1995-07-25 International Business Machines Corporation Storage controller having additional cache memory and a means for recovering from failure and reconfiguring a control unit thereof in response thereto
US5636359A (en) 1994-06-20 1997-06-03 International Business Machines Corporation Performance enhancement system and method for a hierarchical data cache using a RAID parity scheme
JPH08115169A (ja) * 1994-10-14 1996-05-07 Hitachi Ltd ディスク制御装置
JPH08249218A (ja) * 1995-03-15 1996-09-27 Fujitsu Ltd ファイル制御装置及びデータ書き込み方法
US6108764A (en) 1998-12-17 2000-08-22 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention
US6321240B1 (en) 1999-03-15 2001-11-20 Trishul M. Chilimbi Data structure partitioning with garbage collection to optimize cache utilization
US6460122B1 (en) 1999-03-31 2002-10-01 International Business Machine Corporation System, apparatus and method for multi-level cache in a multi-processor/multi-controller environment
JP2000285022A (ja) * 1999-03-31 2000-10-13 Fujitsu Ltd ディスク制御装置
US7610438B2 (en) 2000-01-06 2009-10-27 Super Talent Electronics, Inc. Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
US6785771B2 (en) * 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7472222B2 (en) * 2004-10-12 2008-12-30 Hitachi Global Storage Technologies Netherlands B.V. HDD having both DRAM and flash memory
US7885921B2 (en) 2004-11-18 2011-02-08 International Business Machines Corporation Managing atomic updates on metadata tracks in a storage system
US7698501B1 (en) 2005-04-29 2010-04-13 Netapp, Inc. System and method for utilizing sparse data containers in a striped volume set
US8504597B2 (en) 2005-09-09 2013-08-06 William M. Pitts Distributed file system consistency mechanism extension for enabling internet video broadcasting
US20070118695A1 (en) * 2005-11-18 2007-05-24 International Business Machines Corporation Decoupling storage controller cache read replacement from write retirement
US7650341B1 (en) 2005-12-23 2010-01-19 Hewlett-Packard Development Company, L.P. Data backup/recovery
US7702870B2 (en) 2006-01-19 2010-04-20 Network Appliance Inc. Method and apparatus for defragmentation and for detection of relocated blocks
US20080005520A1 (en) 2006-06-09 2008-01-03 Siegwart David K Locality with parallel hierarchical copying garbage collection
US7562203B2 (en) 2006-09-27 2009-07-14 Network Appliance, Inc. Storage defragmentation based on modified physical address and unmodified logical address
JP2008108145A (ja) 2006-10-26 2008-05-08 Hitachi Ltd 計算機システム及びこれを用いたデータの管理方法
JP5031341B2 (ja) 2006-11-30 2012-09-19 株式会社日立製作所 記憶システム及びデータ管理方法
US7721043B2 (en) 2007-01-08 2010-05-18 International Business Machines Corporation Managing write requests in cache directed to different storage groups
CN100501702C (zh) 2007-01-17 2009-06-17 晶天电子(深圳)有限公司 一种闪存卡及其缓存、恢复数据的方法
JP4900807B2 (ja) * 2007-03-06 2012-03-21 株式会社日立製作所 ストレージシステム及びデータ管理方法
CN101527162A (zh) 2008-03-07 2009-09-09 深圳市朗科科技股份有限公司 卡槽式闪存硬盘
US9088591B2 (en) 2008-04-28 2015-07-21 Vmware, Inc. Computer file system with path lookup tables
TWI476610B (zh) 2008-04-29 2015-03-11 Maxiscale Inc 同級間冗餘檔案伺服器系統及方法
US8255627B2 (en) 2009-10-10 2012-08-28 International Business Machines Corporation Secondary cache for write accumulation and coalescing
US8478945B2 (en) 2010-02-01 2013-07-02 International Business Machines Corporation Dynamic management of destage tasks in a storage controller
US8838903B2 (en) * 2010-02-04 2014-09-16 Dataram, Inc. Priority ordered multi-medium solid-state storage system and methods for use
CN101819509A (zh) 2010-04-19 2010-09-01 清华大学深圳研究生院 一种固态硬盘读写方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7793061B1 (en) 2007-06-29 2010-09-07 Emc Corporation Techniques for using flash-based memory as a write cache and a vault
US20090077312A1 (en) 2007-09-19 2009-03-19 Hitachi, Ltd. Storage apparatus and data management method in the storage apparatus

Also Published As

Publication number Publication date
WO2012160513A1 (en) 2012-11-29
JP2014519650A (ja) 2014-08-14
US20120303872A1 (en) 2012-11-29
GB2504911B (en) 2014-06-25
CN103562887B (zh) 2016-11-09
GB201321577D0 (en) 2014-01-22
US20120303864A1 (en) 2012-11-29
US8745332B2 (en) 2014-06-03
CN103562887A (zh) 2014-02-05
GB2504911A (en) 2014-02-12
JP6099059B2 (ja) 2017-03-22
US8793436B2 (en) 2014-07-29
DE112012001808T5 (de) 2014-01-23

Similar Documents

Publication Publication Date Title
DE112012001808B4 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher
DE112012001302B4 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112013001284B4 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE112012004540B4 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen
DE112012004571B4 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE60035151T2 (de) Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE68924206T2 (de) Verfahren und Einrichtung zum Filtern von Ungültigkeitserklärungsanforderungen.
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
US10067974B2 (en) Loading and reloading an in-memory copy of a database object without blocking concurrent updates to the database object
DE112018002951T5 (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
US20110060724A1 (en) Distributed database recovery
US8793441B2 (en) System, method and computer program product for managing data using a write-back cache unit
DE112013000650B4 (de) Datenzwischenspeicherungsbereich
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE102012216022A1 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
CN106716409A (zh) 基于查询需求从行存储数据库自适应地构建和更新列存储数据库的方法和系统
DE102015007709A1 (de) Invalidationsdatenbereich für einen Cache

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE GBR, DE

Representative=s name: RICHARDT PATENTANWAELTE PART GMBB, DE

Representative=s name: RICHARDT 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