DE102013200032B4 - Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher - Google Patents

Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher Download PDF

Info

Publication number
DE102013200032B4
DE102013200032B4 DE102013200032.4A DE102013200032A DE102013200032B4 DE 102013200032 B4 DE102013200032 B4 DE 102013200032B4 DE 102013200032 A DE102013200032 A DE 102013200032A DE 102013200032 B4 DE102013200032 B4 DE 102013200032B4
Authority
DE
Germany
Prior art keywords
memory
track
cache
data
sectors
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
DE102013200032.4A
Other languages
English (en)
Other versions
DE102013200032A1 (de
Inventor
Kevin J. Ash
Michael T. Benhase
Lokesh M. Gupta
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 DE102013200032A1 publication Critical patent/DE102013200032A1/de
Application granted granted Critical
Publication of DE102013200032B4 publication Critical patent/DE102013200032B4/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • 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
    • 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

Abstract

Computerprogrammprodukt zum Verwalten von Daten in einem Cachespeicher-System (4), das einen ersten Cachespeicher (14), einen zweiten Cachespeicher (18) und ein Speichersystem (10) aufweist, wobei das Computerprogrammprodukt ein nichtflüchtiges computerlesbares Speichermedium aufweist, das darin verkörperten computerlesbaren Programmcode aufweist, der ausgeführt wird, um Funktionen auszuführen, wobei die Funktionen aufweisen:Ermitteln einer Speicherspur (280), die von dem ersten Cachespeicher in den zweiten Cachespeicher herabzustufen ist, wobei die Speicherspur eine partielle Speicherspur aufweist, die Daten für weniger als alle Sektoren der Speicherspur enthält, wobei die Speicherspur in dem ersten Cachespeicher einer Speicherspur in dem Speichersystem entspricht und aus einer Vielzahl von Sektoren besteht;Ermitteln (282), ob der zweite Cachespeicher eine veraltete Version der Speicherspur enthält, die aus dem ersten Cachespeicher herabgestuft wird;als Antwort auf das Feststellen (282), dass der zweite Cachespeicher eine veraltete Version der Speicherspur enthält, Ermitteln (294), ob die veraltete Version der Speicherspur Daten für keine Daten enthaltende Speicherspursektoren der Speicherspur enthält, die aus dem ersten Cachespeicher herabgestuft wird;Verknüpfen (296) der Daten für die Sektoren aus der Speicherspur, die aus dem ersten Cachespeicher herabgestuft wurde, mit den Daten für die Speicherspursektoren aus der veralteten Version, welche Daten für die keine Daten enthaltenden Speicherspursektoren der Speicherspur enthält (294), die aus dem ersten Cachespeicher herabgestuft wird, zu einer ersten neuen Version der Speicherspur;Schreiben (298) der ersten neuen Version der Speicherspur in den zweiten Cachespeicher; undSchreiben (284) der partiellen Speicherspur, die aus dem ersten Cachespeicher herabgestuft wird, in eine zweite neue Version der Speicherspur in dem zweiten Cache als Antwort auf das Feststellen (282), dass der zweite Cachespeicher die veraltete Version nicht enthält, wobei die zweite neue Version der Speicherspur Daten der partiellen Speicherspur in nicht leeren Speicherspursektoren hat und leere Speicherspursektoren enthält, um Daten für weniger als alle Sektoren der Speicherspur zu enthalten.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf ein Computerprogrammprodukt, ein System und ein Verfahren zum Herabstufen von partielle Speicherspuren (tracks) aus einem ersten Cachespeicher in einen zweiten Cachespeicher.
  • Beschreibung des Stands der Technik
  • Ein Cache-Verwaltungssystem puffert Speicherspuren in einer Speichereinheit (storage device), auf die kurz zuvor infolge von Lese- und Schreibvorgängen zugegriffen wurde, in einer Speichereinheit, beispielsweise einem Arbeitsspeicher (memory), mit schnellerem Zugriff als bei der Speichereinheit, in der die angeforderten Speicherspuren gespeichert sind. Nachfolgende Leseanforderungen an Speicherspuren in dem Cachespeicher mit schnellerem Zugriff werden mit einer höheren Geschwindigkeit zurückgegeben als beim Zurückgeben der angeforderten Speicherspuren aus dem Speicher mit langsamerem Zugriff, wodurch die Leselatenz verringert wird. Das Cache-Verwaltungssystem kann auch ein „abgeschlossen“ (complete) an eine Schreibanforderung zurückgeben, wenn die an die Speichereinheit gerichtete geänderte Speicherspur in den Cache-Speicher geschrieben wird und bevor die geänderte Speicherspur in die Speichereinheit, beispielsweise ein Festplattenlaufwerk, geschrieben wird. Die Latenzzeit beim Schreiben in die Speichereinheit ist üblicherweise deutlich länger als die Latenzzeit beim Schreiben in einen Cachespeicher. Somit wird durch Verwenden eines Cachespeichers auch die Latenzzeit beim Schreiben verringert.
  • Ein Cache-Verwaltungssystem kann eine verknüpfte Liste verwalten, die einen Eintrag für jede in dem Cachespeicher gespeicherte Speicherspur aufweist, wobei diese Schreibdaten aufweisen kann, die vor dem Schreiben von Daten in die oder dem Lesen von Daten aus der Speichereinheit im Cachespeicher gepuffert werden. In der üblicherweise verwendeten Cachespeicher-Technik des „am längsten nicht verwendet“ (LRU - Least-Recently-Used) wird, wenn auf eine Speicherspur im Cachespeicher zugegriffen wird, d.h. bei einem Cachespeicher-„Treffer“, der Eintrag in der LRU-Liste für die Speicherspur, auf die der Zugriff erfolgt, an ein Ende der Liste „zuletzt verwendet (MRU - Most Recentlich Used) verschoben. Wenn sich die angeforderte Speicherspur nicht im Cachespeicher befindet, d.h. bei einem Cachespeicher-Fehltreffer, kann die Speicherspur im Cache, deren Eintrag sich am LRU-Ende der Liste befindet, entfernt (oder in den Speicher zurückgespeichert) werden, und ein Eintrag für die aus dem Speicher in den Cachespeicher zwischengespeicherten Speicherspurdaten kann am MRU-Ende der LRU-Liste hinzugefügt werden. Bei dieser LRU-Cachespeicher-Technik ist es wahrscheinlich, dass Speicherspuren, auf die häufiger zugegriffen wird, im Cachespeicher bleiben, während Daten, auf die weniger häufig zugegriffen wird, mit höherer Wahrscheinlichkeit vom LRU-Ende der Liste entfernt werden, um im Cachespeicher Platz für Speicherspuren zu schaffen, auf die neu zugegriffen wurde.
  • In der Fachwelt besteht ein Bedarf an verbesserten Techniken zum Nutzen von Cachespeicher in einem Speichersystem.
  • Die US 2010 / 0 325 345 A1 betrifft eine Unterstützung der Verwaltung eines Speichersystems, das einen Flash-Speicher als Speicherbereich verwendet. Ein Controller des mit einem Flash-Speicherchip versehenen Speichersystems verwaltet einen Kapazitätsüberschußwert des Flash-Speicherchips und überträgt einen auf dem Kapazitätsüberschußwert basierenden Wert an einen Verwaltungsserver, und zwar auf der Grundlage mindestens einer der folgenden Definitionen: einer Definition einer Paritätsgruppe, einer Definition einer internen logischen Einheit und einer Definition einer logischen Einheit. Der Verwaltungsserver zeigt einen Zustand des Speichersystems an, indem er den empfangenen Wert auf der Grundlage des Kapazitätsüberschreitungswerts verwendet.
  • Die US 2011 / 0 202 732 A1 betrifft ein Verfahren zur Planung der Migration von Extents zwischen Extent-Pools eines Speichersystems. Das Verfahren umfasst eine periodische Erstellung eines Profils eines Extent-Pools, um ein historisches Datenzugriffsprofil des Extent-Pools zu erstellen. Unter Verwendung dieses historischen Datenzugriffsprofils bestimmt das Verfahren ein optimales Migrationsfenster für die Migration eines Extents in den Extent-Pool. Das Verfahren dentifiziert dann ein tatsächliches Extent für die Migration in den Extent-Pool. Sobald das tatsächliche Extent identifiziert ist, plant die Methode das Extent für die Migration in den Extent-Pool während des optimalen Migrationsfensters ein.
  • Die US 2004 / 0 068 612 A1 betrifft eine RAID-Disk-Array-Steuerung. Die Steuerung implementiert eine Schreibmaske zur Unterstützung von Teilstreifen-Updates von einem Host-System ohne teures Kopieren von RAM auf RAM und wiederholte Diskzugriffe zur Zusammenstellung des aktualisierten Streifens. Neue Daten vom Host werden in einen einzigen Puffer übertragen und ein lokaler Prozessor verfolgt, durch ein Setzen von Bits in der Schreibmaske, welche Segmente des Zielstreifens aktualisiert werden. Auf das Disk-Array wird zugegriffen, um den Zielstreifen in denselben Puffer zu übertragen, aber die Pufferspeicher-Schreibfreigabe ist in Reaktion auf die Schreibmaske 52 während der Übertragung der Segmente, die vom Host aktualisiert wurden, gesperrt. Der komplette, aktualisierte Streifen wird somit in einem einzigen Puffer für Paritätsberechnungen und das Schreiben in das Disk-Array gebildet.
  • ZUSAMMENFASSUNG
  • Bereitgestellt werden ein Computerprogrammprodukt nach Anspruch 1, ein System nach Anspruch 11 und ein Verfahren nach Anspruch 12 zum Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher.
  • In einem Beispiel wird eine Ermittlung einer Speicherspur durchgeführt, die aus dem ersten Cachespeicher in den zweiten Cachespeicher herabzustufen ist, wobei die Speicherspur im ersten Cachespeicher einer Speicherspur im Speichersystem entspricht und aus einer Vielzahl von Sektoren besteht. Eine Ermittlung wird durchgeführt, ob der zweite Cachespeicher eine veraltete Version der Speicherspur enthält, die aus dem ersten Cachespeicher herabgestuft wird. Als Antwort auf ein Feststellen, dass der zweite Cachespeicher eine veraltete Version der Speicherspur enthält, wird eine Ermittlung durchgeführt, ob die veraltete Version der Speicherspur Speicherspursektoren enthält, die nicht in der Spur enthalten sind, die aus dem ersten Cachespeicher herabgestuft wird. Die Sektoren aus der Speicherspur, die aus dem ersten Cachespeicher herabgestuft wurde, werden mit Sektoren aus der veralteten Version der Speicherspur, welche nicht in der Speicherspur enthalten sind, die aus dem ersten Cachespeicher herabgestuft wird, zu einer neuen Version der Speicherspur kombiniert. Die neue Version der Speicherspur wird in den zweiten Cachespeicher geschrieben.
  • Figurenliste
    • 1 veranschaulicht eine Ausführungsform einer Computerumgebung.
    • 2 veranschaulicht eine Ausführungsform von Verwaltungsdaten eines ersten Cachespeichers.
    • 3 veranschaulicht eine Ausführungsform von Verwaltungsdaten eines zweiten Cachespeichers.
    • 4 veranschaulicht eine Ausführungsform eines zu einem ersten Cachespeicher gehörigen Steuerblocks.
    • 5 veranschaulicht eine Ausführungsform eines zu einem zweiten Cachespeicher gehörigen Steuerblocks.
    • 6 veranschaulicht eine Ausführungsform von Speicherblockdaten (stride information).
    • 7 veranschaulicht eine Ausführungsform einer zu einem zweiten Cachespeicher gehörigen RAID-Konfiguration.
    • 8 veranschaulicht eine Ausführungsform einer Speicher-RAID-Konfiguration.
    • 9 veranschaulicht eine Ausführungsform von Funktionen, um unveränderte nichtsequenzielle Speicherspuren aus dem ersten Cachespeicher herabzustufen, die in den zweiten Cachespeicher hochzustufen sind.
    • 10 veranschaulicht eine Ausführungsform von Funktionen, um eine Speicherspur zu dem ersten Cachespeicher hinzuzufügen.
    • 11 veranschaulicht eine Ausführungsform von Funktionen, um eine Speicherspur zu verarbeiten, die aus dem ersten Cachespeicher in den zweiten Cachespeicher herabzustufen ist.
    • 12 veranschaulicht eine Ausführungsform von Funktionen, um Speicherspuren aus dem ersten Speicherblock zu dem zweiten Speicherblock hinzuzufügen.
    • 13 veranschaulicht eine Ausführungsform von Funktionen, um Platz in dem zweiten Cachespeicher freizumachen.
    • 14 veranschaulicht eine Ausführungsform von Funktionen, um eine Anforderung nach Speicherspuren zu verarbeiten, die auf eine Leseanforderung zurückzugeben sind.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Beschriebene Ausführungsformen stellen Techniken zum Herabstufen von Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher bereit. Wenn die herabzustufende Speicherspur eine partielle Speicherspur aufweist und wenn die zweite Speicherspur eine veraltete Version der Speicherspur enthält, kann eine neue Version der Speicherspur in dem zweiten Cachespeicher erstellt werden, welche die Sektoren aus der partiellen Speicherspur enthält, die aus dem ersten Cachespeicher herabgestuft wird, kombiniert mit Sektoren in der veralteten Version der Speicherspur in dem zweiten Cachespeicher, die nicht in den Sektoren der partiellen Speicherspur enthalten sind, die herabgestuft wird. Die neue Version der Speicherspur kann an eine neue Position des zweiten Cachespeichers geschrieben werden.
  • 1 veranschaulicht eine Ausführungsform einer Computerumgebung. Eine Vielzahl von Hosts 2a, 2b...2n kann Eingabe/Ausgabe- (E/A-) Anforderungen an eine Speichersteuereinheit 4 über ein Netzwerk 6 schicken, um auf Daten auf Datenträgern 8 (z.B. Nummern von logischen Einheiten, logische Einheiten, logische Teilsysteme usw.) in einem Speicher (storage) 10 zuzugreifen. Die Speichersteuereinheit 4 beinhaltet einen Prozessorkomplex 12, der einen oder mehrere Prozessoren mit einem oder mehreren Kernen, einen ersten Cachespeicher 14 und einen zweiten Cachespeicher 18 enthält. Der erste 14 und der zweite 18 Cachespeicher dienen als Zwischenspeicher für Daten, die zwischen den Hosts 2a, 2b...2n und dem Speicher 10 übertragen werden.
  • Die Speichersteuereinheit 4 weist einen Arbeitsspeicher (memory) 20 auf, der eine Speicher-Verwaltungseinheit 22 zum Verwalten der Übertragung von zwischen den Hosts 2a, 2b...2n und dem Speicher 10 übertragenen Speicherspuren sowie eine Cache-Verwaltungseinheit 24 aufweist, die Daten verwaltet, die zwischen den Hosts 2a, 2b...2n und dem Speicher 10 in dem ersten Cachespeicher 14 und dem zweiten Cachespeicher 18 übertragen werden. Eine Speicherspur kann jede Einheit von in dem Speicher 10 konfigurierten Daten aufweisen, beispielsweise eine Speicherspur, eine logische Blockadresse (LBA) usw., die Teil einer größeren Gruppierung von Speicherspuren ist, beispielsweise ein Datenträger, eine logische Einheit usw. Die Cache-Verwaltungseinheit 24 pflegt zum ersten Cachespeicher gehörige Verwaltungsdaten 26 und zum zweiten Cachespeicher gehörige Verwaltungsdaten 28, um Lese- (unveränderte) und Schreib- (veränderte) Speicherspuren in dem ersten Cachespeicher 14 und dem zweiten Cachespeicher 18 zu verwalten.
  • Die Speicher-Verwaltungseinheit 22 und die Cache-Verwaltungseinheit 24 sind in 1 als Programmcode gezeigt, der in den Speicher 20 geladen und von dem Prozessorkomplex 12 ausgeführt wird. Alternativ können einige oder alle der Funktionen in Hardwareeinheiten in der Speichersteuereinheit 4 umgesetzt werden, beispielsweise in anwendungsspezifischen integrierten Schaltungen (Application Specific Integrated Circuits, ASICs).
  • Der zweite Cachespeicher 18 kann Speicherspuren in einem Log Structured Array (LSA) 32 speichern, in dem Speicherspuren in einer sequenziellen Reihenfolge so, wie sie empfangen werden, geschrieben werden und somit eine zeitliche Ordnung der in den zweiten Cachespeicher 18 geschriebenen Speicherspuren bereitstellen. In einem LSA werden spätere Versionen von bereits in dem LSA vorhandenen Speicherspuren 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.
  • Der Speicher 20 enthält ferner zum zweiten Cachespeicher gehörige RAID-Konfigurationsdaten 34, die Daten zu einer RAID-Konfiguration bereitstellen, die verwendet wird, um zu ermitteln, wie ein im zweiten Cachespeicher 18 zu speichernder Speicherblock (stride) von Speicherspuren gebildet werden kann. In einer Ausführungsform kann der zweite Cachespeicher 18 eine Vielzahl von Speichereinheiten aufweisen, beispielsweise getrennte Festkörper-Speichereinheiten (solid state storage devices, SSDs), sodass die von Speicherspuren aus dem ersten Cachespeicher 14 gebildeten Speicherblöcke einheitenübergreifend (mittels „Striping“) über die getrennten Speichereinheiten verteilt sind, die den zweiten Cachespeicher 18 bilden, beispielsweise Flash-Speicher. In einer weiteren Ausführungsform kann der zweite Cachespeicher 18 eine einzelne Speichereinheit, beispielsweise einen Flash-Speicher, aufweisen, sodass die Speicherspuren in Speicherblöcken gruppiert sind, wie sie durch die zum zweiten Cachespeicher gehörige RAID-Konfiguration 34 definiert sind, die Speicherspuren werden jedoch als Speicherblöcke in eine einzelne Einheit, beispielsweise einen Flash-Speicher, geschrieben, mit dem der zweite Cachespeicher 18 realisiert wird. Die Speicherspuren von Speicherblöcken, die für die zum zweiten Cachespeicher gehörige RAID-Konfiguration 34 konfiguriert sind, können in den LSA 32 in der Einheit des zweiten Cachespeicher 18 geschrieben werden. Die zum zweiten Cachespeicher gehörige RAI D-Konfiguration 34 kann unterschiedliche RAID-Stufen festlegen, z.B. Stufe 5, 10 usw.
  • Der Speicher 20 enthält ferner Speicher-RAID-Konfigurationsdaten 36, die Daten zu einer RAID-Konfiguration bereitstellen, die verwendet wird, um zu ermitteln, wie Speicherspuren aus dem ersten Cachespeicher 14 oder dem zweiten Cachespeicher 18, wenn der zweite Cachespeicher 18 veränderte Daten speichern sollte, in das Speichersystem 10 zu schreiben sind, wo die Speicherspuren in dem ausgelagerten Speicherblock speichereinheitenübergreifend, beispielsweise Plattenlaufwerke in dem Speichersystem 10, verteilt sind.
  • In einer Ausführungsform kann der erste Cachespeicher 14 einen Speicher mit wahlfreiem Zugriff (RAM), beispielsweise einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM) aufweisen, und der zweite Cachespeicher 18 kann einen Flash-Speicher, beispielsweise eine Festkörpereinheit, aufweisen, und der Speicher 10 besteht aus einer oder mehreren Speichereinheiten mit sequenziellem Zugriff, beispielsweise Festplattenlaufwerken und einem Magnetband. Der Speicher 10 kann eine einzelne Speichereinheit mit sequenziellem Zugriff aufweisen, oder er kann ein Array von Speichereinheiten aufweisen, beispielsweise ein JBOD- (Just a Bunch of Disks), DASD- (Direct Access Storage Device), RAID- (Redundant Array of Independent Disks) Array, eine Virtualisierungseinheit usw. In einer Ausführungsform handelt es sich bei dem ersten Cachespeicher 14 um eine Einheit mit schnellerem Zugriff als bei dem zweiten Cachespeicher 18, und bei dem zweiten Cachespeicher 18 handelt es sich um eine Einheit mit schnellerem Zugriff als bei dem Speicher 10. Weiterhin kann der erste Cachespeicher 14 höhere Kosten pro Speicherungseinheit (unit of storage) aufweisen als der zweite Cachespeicher 18, und der zweite Cachespeicher 18 kann höhere Kosten pro Speicherungseinheit aufweisen als die Speichereinheiten im Speicher 10.
  • Der erste Cachespeicher 14 kann Teil eines Speichers 20 sein oder in einer gesonderten Speichereinheit, beispielsweise einem DRAM, umgesetzt werden.
  • In bestimmten Ausführungsformen kann der zweite Cachespeicher einen Nurlese-Cachespeicher aufweisen, der von dem ersten Cachespeicher 14 herabgestufte Speicherspuren zwischenspeichert.
  • Das Netzwerk 6 kann ein Speicherbereichs-Netzwerk (Storage Area Network, SAN), ein Nachbereichs-Netzwerk (Local Area Network, LAN), ein Weitverkehrs-Netzwerk (Wide Area Network, WAN), das Internet, ein Intranet, usw. aufweisen.
  • 2 veranschaulicht eine Ausführungsform der zum ersten Cachespeicher gehörigen Verwaltungsdaten 26, die beinhalten: einen Speicherspurindex 50, der einen Index von Speicherspuren in dem ersten Cachespeicher 14 aufweist, um Blöcke in einem Steuerblockverzeichnis 52 zu steuern; eine unveränderte sequenzielle LRU-Liste 54, die eine zeitliche Ordnung unveränderter sequenzieller Speicherspuren in dem ersten Cachespeicher 14 bereitstellt; eine veränderte LRU-Liste 56, die eine zeitliche Ordnung veränderter sequenzieller und nichtsequenzieller Speicherspuren in dem ersten Cachespeicher 14 bereitstellt; eine unveränderte nichtsequenzielle LRU-Liste 58, die eine zeitliche Ordnung von unveränderten nichtsequenziellen Speicherspuren in dem ersten Cachespeicher 14 bereitstellt; und Speicherblockdaten 60, die Daten zu Speicherblöcken bereitstellen, die von unveränderten nichtsequenziellen Speicherspuren im ersten Cachespeicher 14 gebildet werden, die als Schreibvorgang mit vollständigem Speicherblock in den zweiten Cachespeicher 18 zu schreiben sind.
  • In bestimmten Ausführungsform wird nach dem Feststellen, dass der erste Cachespeicher 18 voll ist, die veränderte LRU-List 56 dazu verwendet, veränderte Speicherspuren aus dem ersten Cachespeicher 14 in den Speicher 10 auszulagern, sodass die Kopie dieser ausgelagerten Speicherspuren im ersten Cachespeicher 18 verworfen werden kann, um im ersten Cachespeicher 18 für neue veränderte Speicherspuren Platz zu machen.
  • Nachdem eine veränderte nichtsequenzielle Spur aus dem ersten Cachespeicher 14 in den Speicher 10 ausgelagert wurde, kann die Cache-Verwaltungseinheit 24 danach diese ausgelagerten Speicherspuren als eine unveränderte nichtsequenzielle Speicherspur in dem ersten Cachespeicher 14 kennzeichnen und die Angabe der neu gekennzeichneten unveränderten Spur zu der unveränderten nichtsequenziellen LRU-Liste 58 hinzufügen, von wo sie dafür infrage kommt, in den zweiten Cachespeicher 14 hochgestuft zu werden. Der Status der ausgelagerten veränderten Spur kann geändert werden, indem der zum ersten Cachespeicher gehörende Steuerblock 104 dahingehend geändert wird, dass er die ausgelagerte veränderte nichtsequenzielle Speicherspur in Feld 106 als unverändert angibt. Somit können unveränderte sequenzielle Speicherspuren in dem ersten Cachespeicher 14 Lesedaten oder veränderte nichtsequenzielle Speicherspuren aufweisen, die gemäß der veränderten LRU-Liste 56 in den Speicher 10 ausgelagert wurden. Somit können ausgelagerte veränderte Speicherspuren, die zu unveränderten Speicherspuren in der LRU-Liste 58 werden, in den zweiten Cachespeicher 14 hochgestuft werden, um für nachfolgende Leseanforderungen verfügbar zu sein. In diesen Ausführungsformen weist der zweite Cachespeicher 14 einen Nurlese-Cachespeicher auf, um unveränderte nichtsequenzielle Speicherspuren zwischenzuspeichern.
  • 3 veranschaulicht eine Ausführungsform der zum zweiten Cachespeicher gehörigen Verwaltungsdaten 28, die beinhalten: einen Speicherspurindex 70, der einen Index von Speicherspuren in dem zweiten Cachespeicher 18 bereitstellt, um Blöcke in einem Steuerblockverzeichnis 72 zu steuern; eine unveränderte Liste 74, die eine zeitliche Ordnung von unveränderten Speicherspuren in dem zweiten Cachespeicher 18 bereitstellt; und Speicherblockdaten 78, die Daten zu Speicherblöcken von Speicherspuren bereitstellen, die in den zweiten Cachespeicher 18 geschrieben wurden. In einer Ausführungsform speichert der zweite Cachespeicher 18 nur unveränderte, nichtsequenzielle Speicherspuren. In weiteren Ausführungsformen kann der zweite Cachespeicher 18 auch veränderte und/oder sequenzielle Speicherspuren speichern.
  • Alle LRU-Listen 54, 56, 58 und 74 können die Speicherspur-IDs von Speicherspuren in dem ersten Cachespeicher 14 und dem zweiten Cachespeicher 18 enthalten, die danach geordnet sind, wann auf die gekennzeichnete Speicherspur zuletzt zugegriffen wurde. Die LRU-Listen 54, 56, 58 und 74 weisen ein MRU- (most recently used) Ende auf, das eine Speicherspur angibt, auf die zuletzt zugegriffen wurde, und ein LRU- (least recently used) Ende, das eine Speicherspur angibt, die am längsten nicht verwendet oder auf die am längsten nicht zugegriffen wurde. Die Speicherspur-IDs von Speicherspuren, die zu den Cachespeichers 14 und 18 hinzugefügt wurden, werden am MRU-Ende der LRU-Liste hinzugefügt, und auf Speicherspuren, die aus den Cachespeichern 14 und 18 herabgestuft wurden, wird vom LRU-Ende aus zugegriffen. Die Speicherspurindizes 50 und 70 können eine Streuindextabelle (scatter index table, SIT) aufweisen. Datenstrukturen einer alternativen Art können verwendet werden, um die zeitliche Ordnung der Speicherspuren in den Cachespeichers 14 und 18 bereitzustellen.
  • Nichtsequenzielle Speicherspuren können OLTP- (Online Line Transaction Processing) Speicherspuren aufweisen, die oft kleine Blockschreibvorgänge aufweisen, die nicht vollständig wahlfrei sind und ein gewisses Lokalitätsprinzip aufweisen, d.h., bei denen eine Wahrscheinlichkeit besteht, dass wiederholt auf sie zugegriffen wird.
  • 4 veranschaulicht eine Ausführungsform eines Eintrags eines zu einem ersten Cachespeicher gehörigen Steuerblocks 100 in das Steuerblockverzeichnis 52, der beinhaltet: einen Steuerblock-Kennzeichner (ID) 102, eine zum ersten Cachespeicher gehörige Position 104 der physischen Position der Speicherspur in dem ersten Cachespeicher 14, Daten 106, die angeben, ob die Speicherspur verändert oder unverändert ist, Daten 108, die angeben, ob es sich bei der Speicherspur um eine mit sequenziellem oder nichtsequenziellem Zugriff handelt, Daten 110, die einen Herabstufungsstatus für die Speicherspur angeben, beispielsweise keine Herabstufung, bereit zum Herabstufen und Herabstufen abgeschlossen, und eine Sektorzuordnung 112, die Sektoren der Speicherspur angibt, die im ersten Cachespeicher 14 enthalten sind. Wenn die Sektorzuordnung 112 angibt, dass bestimmte der Sektoren der Speicherspur in dem ersten Cachespeicher 14 keine Daten aufweisen, weist die in dem ersten Cachespeicher 14 verwaltete Speicherspur eine partielle Speicherspur auf.
  • 5 veranschaulicht eine Ausführungsform eines Eintrags eines zum zweiten Cachespeicher gehörigen Steuerblocks 120 in dem zum zweiten Cachespeicher gehörigen Steuerblockverzeichnis 72, der beinhaltet: einen Steuerblock-Kennzeichner (ID) 122; eine LSA-Position 124, an der die Speicherspur im LSA 32 positioniert ist; Daten „verändert/unverändert“ 126, die angeben, ob es sich um eine veränderte oder unveränderte Speicherspur handelt; ein Merker „gültig/ungültig“ 128, der angibt, ob es sich um eine gültige oder ungültige Speicherspur handelt; und eine Sektorzuordnung 129, die Sektoren der Speicherspur angibt, die in dem zweiten Cachespeicher 18 enthalten sind. Eine Speicherspur in dem zweiten Cachespeicher 18 wird als ungültig angegeben, wenn die Speicherspur in dem ersten Cachespeicher 14 aktualisiert wird oder wenn die Speicherspur aus dem zweiten Cachespeicher 18 herabgestuft wird. Wenn die Sektorzuordnung 129 angibt, dass bestimmte der Sektoren der Speicherspur in dem zweiten Cachespeicher 18 keine Daten aufweisen, weist die in dem zweiten Cachespeicher 18 verwaltete Speicherspur eine partielle Speicherspur auf. Es kann sein, dass der Cachespeicher-Steuerblock 120 das Feld 126 nicht enthält, wenn der zweite Cachespeicher 18 nur unveränderte Lesedaten speichert.
  • 6 veranschaulicht ein Beispiel 130 der Speicherblockdaten 60, 78 für in dem zweiten Cachespeicher 18 zu bildende Speicherblock, der aufweist: einen Speicherblock-Kennzeichner (ID) 132, Speicherspuren 134 des Speichers 10, die dem Speicherblock 132 enthalten sind, und eine Belegung 136, die eine Anzahl von gültigen Speicherspuren in dem Speicherblock von der Gesamtzahl von Speicherspuren angibt, wobei die Speicherspuren in dem Speicherblock, die nicht gültig sind, für Aufräumfunktionen (garbage collection) infrage kommen.
  • 7 veranschaulicht eine Ausführungsform der zum zweiten Cachespeicher gehörigen RAID-Konfiguration 34, die dazu dient zu ermitteln, wie Speicherblöcke von Speicherspuren in dem zweiten Cachespeicher 18 aus den Speicherspuren in dem ersten Cachespeicher 14 gebildet werden. Eine RAID-Stufe 140 gibt die zu verwendende RAID-Konfiguration an, z.B. RAID 1, RAID 5, RAID 6, RAID 10 usw., eine Anzahl von Datenplatten (m) 142, die Speicherspuren von Benutzerdaten speichern, und eine Anzahl von Paritätsplatten (p) 144, die eine aus den Datenplatten 142 berechnete Parität speichern, wobei p eins oder größer sein kann und dabei die Anzahl der Platten zum Speichern der berechneten Paritätsblöcke angibt. Ein optionaler Paritätsmerker „unverändert“ 148 gibt an, ob eine Parität für unveränderte nichtsequenzielle Speicherspuren im ersten Cachespeicher 14 berechnet werden sollte, die in den zweiten Cachespeicher 18 hochgestuft werden. Dieser optionale Merker 148 gestattet es, nur unveränderte nichtsequenzielle Speicherspuren in einen Speicherblock aufzunehmen, um den Speicherblock nur mit unveränderten nichtsequenziellen Speicherspuren zu füllen. Der Speicherblock von unveränderten nichtsequenziellen Speicherspuren in dem ersten Cachespeicher 14 kann in einem LSA 32 angegeben werden, wo die Speicherspuren des Speicherblocks über m plus p Speichereinheiten verteilt sind, die den zweiten Cachespeicher 18 bilden. Alternativ kann der zweite Cachespeicher 18 weniger als n Einheiten aufweisen.
  • 8 veranschaulicht eine Ausführungsform der Speicher-RAID-Konfiguration 36, die verwaltet wird, um zu ermitteln, wie Speicherblöcke von veränderten Speicherspuren in dem zweiten Cachespeicher 18 gebildet werden, die auf die Platten des Speichers 10 zu verteilen sind. Eine RAID-Stufe 150 gibt die zu verwendende RAID-Konfiguration, eine Anzahl von Datenplatten (m) 152, die Speicherspuren von Benutzerdaten speichern, und eine Anzahl von Paritätsplatten (p) 154, die eine aus den Datenplatten 152 berechnete Parität speichern, an, wobei p eins oder höher sein kann und dabei die Anzahl der Platten zum Speichern der berechneten Paritätsblöcke angibt. Der Speicherblock von Speicherspuren aus dem zweiten Cachespeicher 18 kann über Platten im Speichersystem 10 verteilt werden.
  • In einer Ausführungsform können die RAID-Konfigurationen des zweiten Cachespeichers 34 und des Speichers 36 unterschiedliche Parameter bereitstellen oder dieselben Parameter aufweisen, beispielsweise unterschiedliche RAID-Stufen, Datenplatten, Paritätsplatten usw.
  • 9 veranschaulicht eine Ausführungsform von Funktionen, die von der Cache-Verwaltungseinheit 24 ausgeführt werden, um unveränderte nichtsequenzielle Speicherspuren aus dem ersten Cachespeicher 14 herabzustufen, damit sie in den zweiten Cachespeicher 18 hochgestuft werden, wobei die unveränderten, nichtsequenziellen Speicherspuren vom LRU-Ende der unveränderten nichtsequenziellen LRU-Liste 58 ausgewählt werden können, wenn Platz benötigt wird. Nach dem Einleiten (in Block 200) der Funktion zum Herabstufen ausgewählter unveränderter nichtsequenzieller Speicherspuren wird der Herabstufungsstatus 110 (4) der unveränderten nichtsequenziellen Speicherspuren, die zum Herabsetzen ausgewählt wurden, auf „bereit“ gesetzt (in Block 202). Die Cache-Verwaltungseinheit 24 verwendet (in Block 204) die zum zweiten Cachespeicher gehörigen RAID-Konfigurationsdaten 34, um einen ersten Speicherblock von Speicherspuren aus dem ersten Cachespeicher 114 zu bilden, die in einen Speicherblock des zweiten Cachespeicher 18 hochzustufen sind. Zum Beispiel kann ein Bilden des ersten Speicherblocks von Speicherspuren ein Bilden eines Speicherblocks für eine RAID-Konfiguration aufweisen, die auf einer RAID-Konfiguration beruht, die für den zweiten Cachespeicher definiert wurde 34 als n Einheiten aufweisend, die m Einheiten zum Speichern von Speicherspuren von Daten enthalten und mindestens eine Paritätseinheit p, um Paritätsdaten zu speichern, die aus den Speicherspuren von Daten für die m Einheiten berechnet wurden. Ferner kann der erste Speicherblock von Speicherspuren über n Festkörper-Speichereinheiten ohne Parität verteilt werden, um den zweiten Speicherblock in Ausführungsformen zu bilden, in denen der zweiten Cachespeicher mindestens n Festkörper-Speichereinheiten aufweist.
  • Die Cache-Verwaltungseinheit 24 verarbeitet (in Block 206) die unveränderte nichtsequenzielle LRU-Liste 58, um eine Anzahl unveränderter sequenzieller Speicherspuren zu ermitteln, die in ihren Steuerblöcken 100 einen Herabstufungsstatus 110 von „bereit“ aufweisen. Wenn die Cache-Verwaltungseinheit 24 feststellt (in Block 208), dass die Anzahl unveränderter nichtsequenzieller Speicherspuren ausreichend ist, um einen Speicherblock zu bilden, füllt die Cache-Verwaltungseinheit 24 (in Block 210) den ersten Speicherblock unveränderter nichtsequenzieller Speicherspuren, die einen Herabstufungsstatus 110 von „bereit“ aufweisen. In einer Ausführungsform kann der erste Speicherblock beginnend vom LRU-Ende der unveränderten nichtsequenziellen LRU-Liste 58 gefüllt werden und genügend Speicherspuren für die Datenplatten in dem Speicherblock verwenden. Wenn (in Block 212) die RAID-Konfiguration Paritätsplatten festlegt, berechnet die Cache-Verwaltungseinheit 24 (in Block 212) eine Parität für die unveränderten nichtsequenziellen Speicherspuren, die in dem Speicherblock enthalten sind, und nimmt die Paritätsdaten (für die p Paritätsplatten) in den Speicherblock auf. Wenn (in Block 208) keine ausreichenden unveränderten nichtsequenziellen Speicherspuren in dem ersten Cachespeicher 14 vorhanden sind, um den ersten Speicherblock zu füllen, endet die Steuerung, bis eine ausreichende Anzahl von unveränderten nichtsequenziellen Speicherspuren vorhanden ist, die den Herabstufungsstatus „bereit“ verfügbar haben, um den ersten Speicherblock zu füllen.
  • Nach dem Füllen des ersten Speicherblocks (in Block 210 und 212) ermittelt die Cache-Verwaltungseinheit 14 (in Block 214) einen freien zweiten Speicherblock in dem zweiten Cachespeicher 18, in den die Speicherspuren aus dem ersten Speicherblock aufzunehmen sind. Die Speicherspuren aus dem ersten Speicherblock werden (in Block 216) als vollständiger Speicherblock-Schreibvorgang in den zweiten Speicherblock geschrieben oder darin über die Einheiten verteilt, die den zweiten Cachespeicher 18 bilden. Nach dem Füllen des zweiten Speicherblocks in dem zweiten Cachespeicher 18 mit den Speicherspuren aus dem ersten Speicherblock gibt die Cache-Verwaltungseinheit 14 (in Block 218) die Belegung 136 der Speicherblockdaten 130 für den zweiten Speicherblock als vollständig an. Die Cache-Verwaltungseinheit 24 aktualisiert (in Block 220) den Herabstufungsstatus 110 für die unveränderten nichtsequenziellen Speicherspuren, die in dem Speicherblock enthalten sind, als Herabstufung „abgeschlossen“.
  • Die Funktionen von 9 werden zwar als ein Herabstufen unveränderter nichtsequenzieller Speicherspuren aus dem ersten Cachespeicher 14 beschrieben, die in den zweiten Cachespeicher 18 hochzustufen sind, in alternativen Ausführungsformen können die Funktionen aber auch auf ein Herabstufen von Speicherspuren anderer Arten, beispielsweise veränderten, sequenziellen usw., angewendet werden.
  • Bei den beschriebenen Ausführungsformen werden die unveränderten Speicherspuren aus dem ersten Cachespeicher 14 gesammelt und als Speicherblock in den zweiten Cachespeicher 18 geschrieben, sodass ein Eingabe/Ausgabe- (E/A-) Vorgang verwendet wird, um mehrere Speicherspuren zu übertragen.
  • In bestimmten Ausführungsformen können die im ersten Cachespeicher 14 verwalteten Speicherspuren partielle Speicherspuren aufweisen, die Speicherspuren aufweisen, die Daten nur für eine Teilmenge der Sektoren der Speicherspur aufweisen. Dies kann auftreten, weil die Cache-Verwaltungseinheit 24 aus dem Speicher 10 nur Sektoren einer Speicherspur einlagern kann, die durch eine Leseanforderung angefordert werden, nicht jedoch alle Sektoren der Speicherspur. Falls der erste Cachespeicher 14 für bestimmte Speicherspuren partielle Speicherspuren ebenso wie vollständige Speicherspuren (Speicherspuren, die Daten für alle Sektoren der Speicherspur aufweisen) speichert, können in einem Speicherblock mehr partielle Speicherspuren enthalten sein als vollständige Speicherspuren, und in einem Speicherblock können mehr partielle Speicherspuren, die mehr leere Sektoren aufweisen, enthalten sein als partielle Speicherspuren, die weniger leere Sektoren aufweisen, d.h. vollständigere partielle Speicherspuren. Somit kann ein Speicherblock ganz mit mehr partiellen Speicherspuren aus dem ersten Cachespeicher 14 gefüllt sein, die weniger Sektoren aufweisen, als mit Speicherspuren, die mehr Sektoren aufweisen. Weiterhin kann der zweite Cachespeicher 18 partielle Speicherspuren speichern, die aus dem ersten Cachespeicher 14 herabgestuft wurden. Somit können die im ersten Speicherblock aus dem ersten Cachespeicher 14 enthaltenen Speicherspuren, die in den zweiten Speicherblock im zweiten Cachespeicher 18 geschrieben werden, vollständige Speicherspuren und/oder partielle Speicherspuren aufweisen.
  • 10 veranschaulicht eine Ausführungsform von Funktionen, die von der Cache-Verwaltungseinheit 24 ausgeführt werden, um eine Speicherspur zu dem ersten Cachespeicher 14 hinzuzufügen, d.h. hochzustufen, wobei diese Spur eine Schreib- oder veränderte Speicherspur von einem Host 2a, 2b...2n, eine nichtsequenzielle Speicherspur in dem zweiten Cachespeicher 18, die einer Leseanforderung unterliegt und infolgedessen in den ersten Cachespeicher 14 verschoben wird, oder zum Lesen angeforderte Daten, die in keinem der Cachespeicher 14 oder 18 gefunden und aus dem Speicher 10 abgerufen wurden, aufweisen kann. Nach dem Empfangen (in Block 240) der Speicherspur, die zu dem ersten Cachespeicher 14 hinzuzufügen ist, und wenn (in Block 242) eine Kopie der Speicherspur bereits in dem ersten Cachespeicher 14 enthalten ist, schreibt die Cache-Verwaltungseinheit 24 (in Block 244) die empfangene Speicherspur in den ersten Cachespeicher 14. Der Cachespeicher-Steuerblock 100 (4) für die Speicherspur wird aktualisiert (in Block 246), um die Position 104, die die aktualisierte Speicherspur aufweist, den Datentyp (verändert/unverändert 106 und sequenziell/nichtsequenziell 108) [und] den Herabstufungsstatus 110 anzugeben, und die Sektorzuordnung 112 wird aktualisiert, um die Sektoren in der Daten aufweisenden aktualisierten Speicherspur anzugeben. Der Eintrag für die aktualisierte Speicherspur in der geeigneten LRU-Liste 54, 56, 58 wird (in Block 248) an das MRU-Ende der Liste 54, 56, 58 verschoben.
  • Wenn (in Block 242) die Speicherspur, die zu dem ersten Cachespeicher 14 hinzuzufügen ist, nicht bereits in dem ersten Cachespeicher 14 enthalten ist, erstellt die Cache-Verwaltungseinheit 24 (in Block 250) einen Steuerblock 100 (4) für die hinzuzufügenden Spur, in dem die Position 104 im ersten Cachespeicher 14 angegeben wird, sowie ob es sich bei der Speicherspur um eine veränderte/unveränderte 106 und eine sequenzielle/nichtsequenzielle 108 handelt, und in der Sektorzuordnung 112 werden die Sektoren für die Daten aufweisende Speicherspur angegeben. Dieser Steuerblock 100 wird zu dem Steuerblockverzeichnis 52 des ersten Cachespeicher 14 hinzugefügt. Die Cache-Verwaltungseinheit 24 fügt (in Block 252) einen Eintrag zu dem zum ersten Cachespeicher gehörigen Speicherspurindex 50, der die Speicherspur-ID der hinzuzufügenden Speicherspur aufweist, und einen Index zu dem erstellten Cachespeicher-Steuerblock 100 in dem Steuerblockverzeichnis 52 hinzu. Ein Eintrag wird (in Block 254) zum MRU-Ende der LRU-Liste 54, 56 oder 58 des Speicherspurtyps der hinzuzufügenden Speicherspur hinzugefügt. Wenn es sich (in Block 256) bei der hinzuzufügenden Speicherspur um eine veränderte nichtsequenzielle Spur handelt und wenn sich (in Block 258) eine Kopie der hinzuzufügenden Speicherspur in dem zweiten Cachespeicher 18 befindet, wie aus dem zum zweiten Cachespeicher gehörigen Speicherspurindex 70 ermittelt, wird die Kopie der Speicherspur in dem zweiten Cachespeicher 18 ungültig gemacht (in Block 260), beispielsweise durch Setzen des Merkers „gültig/ungültig“ 128 in dem zum zweiten Cachespeicher gehörigen Steuerblock 120, damit die Speicherspur in dem zweiten Cachespeicher 18 ungültig wird. Wenn (in Block 256) die hinzuzufügende Speicherspur unverändert sequenziell ist, endet die Steuerung.
  • 11 veranschaulicht eine Ausführungsform von Funktionen, die von der Cache-Verwaltungseinheit 24 ausgeführt werden, um eine Speicherspur aus dem ersten Cachespeicher 14 in den zweiten Cachespeicher 18 herabzustufen. Wenn nach dem Verarbeiten (in Block 280) einer aus dem ersten Cachespeicher 14 herabzustufenden Speicherspur der Speicherspurindex 70 des zweiten Cachespeicher 18 (in Block 282) anzeigt, dass der zweite Cachespeicher 18 nicht eine veraltete (ältere) Version der Speicherspur enthält als die Version, die aus dem ersten Cachespeicher 14 herabgestuft wird, schreibt die Cache-Verwaltungseinheit 24 (in Block 284) die Speicherspur, die herabgestuft wird und die eine partielle oder vollständige Speicherspur aufweisen kann, in eine neue Version der Speicherspur an einer neuen Position im zweiten Cachespeicher 18. Die Cache-Verwaltungseinheit 24 erstellt (in Block 286) einen zum zweiten Cachespeicher gehörigen Steuerblock 120 (5) für die geschriebene Speicherspur, der die LSA-Position 124, dass die Speicherspur gültige Daten aufweist 128 und die Sektoren der geschriebenen Spur, die nicht leer sind, in der Sektorzuordnung 129 angibt. Die Cache-Verwaltungseinheit 24 fügt (in Block 288) einen Eintrag zum MRU-Ende der LRU-Liste 74 für die zum zweiten Cachespeicher 18 hinzugefügte Speicherspur hinzu.
  • Wenn (in Block 282) der zweite Cachespeicher 18 eine veraltete Version der Speicherspur beinhaltet, ermittelt die Cache-Verwaltungseinheit 24 (in Block 290), ob die Speicherspur, die herabgestuft wird, Daten für alle Sektoren der Speicherspur enthält (d.h., dass es sich um eine vollständige, nicht eine partielle Speicherspur handelt). Die Ermittlung, ob es sich bei der Speicherspur, die herabgestuft wird, um eine partielle oder vollständige handelt, kann anhand der Sektorzuordnung 112 in dem zum ersten Cachespeicher gehörigen Steuerblock 100 (4) für die Speicherspur, die herabgestuft wird, ermittelt werden. Wenn es sich (in Block 290) bei der Speicherspur um eine vollständige Speicherspur handelt, schreibt die Cache-Verwaltungseinheit 24 (in Block 292) die vollständige Speicherspur, die herabgestuft wird, in eine neue Version der Speicherspur an einer neuen Position im zweiten Cachespeicher 18.
  • Wenn es sich (in Block 290) bei der Speicherspur, die herabgestuft wird, um eine partielle Spur handelt, d.h. die Sektorzuordnung 112 für die Speicherspur leere Sektoren angibt, ermittelt die Cache-Verwaltungseinheit 24 (in Block 294) anhand der Sektorzuordnung 129 für den zweiten Cachespeicher 18, ob die veraltete Version im zweiten Cachespeicher 18 von der partiellen Speicherspur, die herabgestuft wird, Speicherspursektoren beinhaltet, die nicht in der partiellen Speicherspur enthalten sind, die aus dem ersten Cachespeicher 14 herabgestuft wird. Die veraltete Version der Speicherspur kann eine partielle Speicherspur oder eine vollständige Speicherspur aufweisen. Die Ermittlung der Sektoren der veralteten Version der Speicherspur, die Daten aufweist, kann anhand der Sektorzuordnung 129 in dem zum zweiten Cachespeicher gehörigen Steuerblock 120 (5) für die veraltete Version der Speicherspur ermittelt werden, die sich bereits in dem zweiten Cachespeicher 18 befindet. Wenn die veraltete Version Sektoren enthält, die nicht in der partiellen Speicherspur, die herabgestuft wird, enthalten sind, verknüpft die Cache-Verwaltungseinheit 24 (in Block 296) die Sektoren aus der partiellen Speicherspur, die aus dem ersten Cachespeicher 14 herabgestuft wurde, mit Sektoren aus der veralteten Version der Speicherspur, die nicht in der partiellen Speicherspur, die herabgestuft wird, enthalten sind, zu einer neuer Version der Speicherspur, die an einer neuen Position im zweiten Cachespeicher 18 zu speichern ist. Die Cache-Verwaltungseinheit 24 schreibt (in Block 298) die neue Version der Speicherspur an eine neue Position in dem zweiten Cachespeicher 18. Wenn (in Block 294) die veraltete Version der Speicherspur, die herabgestuft wird, keine Speicherspursektoren enthält, die nicht in der partiellen Speicherspur, die herabgestuft wird, enthalten sind, schreibt die Cache-Verwaltungseinheit 24 (in Block 300) die partielle Speicherspur, die herabgestuft wird, in eine neue Version der Speicherspur an einer neuen Position in dem zweiten Cachespeicher 18.
  • Nach dem Schreiben der neuen Speicherspur aus den Blöcken 292, 298 oder 300 macht die Cache-Verwaltungseinheit 24 (in Block 302) die veraltete Version der Speicherspur in dem zweiten Cachespeicher 18 ungültig und aktualisiert (in Block 304) den zum zweiten Cachespeicher gehörigen Steuerblock 120 (5) für die Speicherspur, wobei er die neue Position in dem zweiten Cachespeicher 18 angibt, und aktualisiert die Sektorzuordnung 129, wobei er die Sektoren in dem zweiten Cachespeicher 18 angibt, die nun Daten für die Speicherspur, d.h. nicht leere Sektoren, aufweisen. Die Cache-Verwaltungseinheit 24 verschiebt ferner (in Block 306) den Eintrag für die Speicherspur in der LRU-Liste 74 an das MRU-Ende der LRU-Liste 74.
  • 12 veranschaulicht eine Ausführungsform von Funktionen, die von der Cache-Verwaltungseinheit 24 ausgeführt werden, um Speicherspuren aus dem ersten Speicherblock aus dem ersten Cachespeicher 14 in den zweiten Speicherblock in dem zweiten Cachespeicher 18 hinzuzufügen. Die Cache-Verwaltungseinheit 24 erstellt (in Block 322) Speicherblockdaten 130 (6) für den zweiten Speicherblock, die die Speicherspuren 134 aus dem ersten Speicherblock angeben, die hinzugefügt werden und die die Belegung 136 als vollständig angeben. Für jede Speicherspur in dem ersten Speicherblock, die hinzugefügt wird, führt die Cache-Verwaltungseinheit 24 (in Block 324) die Funktionen in 11 aus, um eine Speicherspur zu dem LSA in dem zweiten Cachespeicher 24 für die Speicherspur hinzuzufügen, die aus dem ersten Cachespeicher 14 herabgestuft wird, wobei dies das Verknüpfen der Sektoren einer partiellen Speicherspur, die herabgestuft wird, mit den Sektoren einer veralteten Version der Speicherspur in dem zweiten Cachespeicher 18 einbeziehen kann, die nicht in der partiellen Speicherspur, die aus dem ersten Cachespeicher 14 herabgestuft wird, enthalten sind.
  • 13 veranschaulicht eine Ausführungsform von Funktionen, die von der Cache-Verwaltungseinheit 24 ausgeführt werden, um in dem zweiten Cachespeicher 18 Platz für neue Speicherspuren frei zu machen, die zu dem zweiten Cachespeicher 18 hinzuzufügen sind, d.h. Speicherspuren, die aus dem ersten Cachespeicher 14 herabgestuft werden. Nach dem Einleiten dieser Funktion (in Block 350) ermittelt die Cache-Verwaltungseinheit 24 (in Block 352) unveränderte Speicherspuren in dem zweiten Cachespeicher 18 vom LRU-Ende der unveränderten LRU-Liste 74 und macht (in Block 354) die ermittelten unveränderten Speicherspuren ungültig, ohne die ungültig gemachten unveränderten Speicherspuren in den Speicher 10 auszulagern, und er entfernt auch die ungültig gemachten unveränderten Speicherspuren aus der unveränderten LRU-Liste 74 und gibt die Speicherspur in dem zum zweiten Cachespeicher gehörigen Steuerblock 120 für die Speicherspur als ungültig 128 an. Darüber hinaus können die von der Cache-Verwaltungseinheit 24 ausgewählten Speicherspuren zum Herabstufen aus dem zweiten Cachespeicher 18 aus unterschiedlichen in dem zweiten Cachespeicher 18 gebildeten Speicherblöcken stammen. Weiterhin können Speicherblöcke in dem zweiten Cachespeicher sowohl gültige als auch ungültige Speicherspuren aufweisen, wenn Speicherspuren ungültig gemacht werden, indem sie aus dem zweiten Cachespeicher 18 herabgestuft werden oder indem die Speicherspur in dem ersten Cachespeicher 18 aktualisiert wird.
  • In bestimmten Ausführungsformen verwendet die Cache-Verwaltungseinheit 24 unterschiedliche Speicherspur-Herabstufungsalgorithmen, um Speicherspuren zu ermitteln, die aus dem ersten Cachespeicher 14 und dem zweiten Cachespeicher 18 herabzustufen sind, indem er getrennte LRU-Listen 58 und 74 für den ersten 14 bzw. den zweiten Cachespeicher 18 verwendet, um die herabzustufenden Speicherspuren zu ermitteln. Die Algorithmen, die verwendet werden, um Speicherspuren zum Herabstufen in dem ersten 14 und dem zweiten 18 Cachespeicher auszuwählen, können Merkmale der Speicherspuren in dem ersten 14 und dem zweiten 18 Cachespeicher berücksichtigen, um die zuerst herabzustufenden Speicherspuren zu ermitteln.
  • 14 veranschaulicht eine Ausführungsform von Funktionen, die von der Cache-Verwaltungseinheit 24 ausgeführt werden, um für eine Leseanforderung angeforderte Speicherspuren aus den Cachespeichern 14 und 18 und dem Speicher 10 abzurufen. Die Speicher-Verwaltungseinheit 22, die die Leseanforderung verarbeitet, kann Anforderungen für die angeforderten Speicherspuren an die Cache-Verwaltungseinheit 24 schicken. Nach dem Empfangen (in Block 450) der Anforderung für die Speicherspuren verwendet die Cache-Verwaltungseinheit 24 (in Block 454) den zum ersten Cachespeicher gehörigen Speicherspurindex 50, um zu ermitteln, ob sich alle angeforderten Speicherspuren in dem ersten Cachespeicher 14 befinden. Wenn sich (in Block 454) nicht alle angeforderten Speicherspuren nicht in dem ersten Cachespeicher 14 befinden, verwendet die Cache- Verwaltungseinheit 24 (in Block 456) den zum zweiten Cachespeicher gehörigen Speicherspurindex 70, um etwaige der angeforderten Speicherspuren in dem zweiten Cachespeicher 18 zu ermitteln, die sich nicht in dem ersten Cachespeicher 14 befunden haben. Wenn es (in Block 458) etwaige angeforderte Speicherspuren gibt, die nicht in dem ersten 14 und dem zweiten 18 Cachespeicher gefunden wurden, ermittelt die Cache-Verwaltungseinheit 24 (in Block 460) anhand des zum zweiten Cachespeicher gehörigen Speicherspurindex 70 etwaige angeforderte Speicherspuren in dem Speicher 10, die sich nicht in dem ersten 14 und dem zweiten 18 Cachespeicher befunden haben. Die Cache-Verwaltungseinheit 24 stuft dann (in Block 462) etwaige der ermittelten Speicherspuren in dem zweiten Cachespeicher 18 und dem Speicher 10 in den ersten Cachespeicher 14 hoch. Die Cache-Verwaltungseinheit 24 verwendet (in Block 464) den zum ersten Cachespeicher gehörigen Speicherspurindex 50, um die angeforderten Speicherspuren aus dem ersten Cachespeicher 14 abzurufen, die an die Leseanforderung zurückzugeben sind. Die Einträge für die abgerufenen Speicherspuren werden (in Block 466) an das MRU-Ende der LRU-Liste 54, 56, 58 verschoben, einschließlich der Einträge für die abgerufenen Speicherspuren. Mit den Funktionen von 13 ruft die Cache-Verwaltungseinheit 24 angeforderte Speicherspuren aus einem Cachespeicher 14 einer höchsten Ebene ab, danach zuerst aus dem zweiten Cachespeicher 18, bevor er zu dem Speicher 10 übergeht, da die Cachespeicher 14 und 18 die zuletzt geänderte Version einer angeforderten Speicherspur aufweisen würden. Die neueste Version wird zuerst in dem ersten Cachespeicher 14 gefunden, danach in dem zweiten Cachespeicher 18, wenn sie sich nicht in dem ersten Cachespeicher 14 befindet, und danach in dem Speicher 10, wenn sie sich in keinem der Cachespeicher 14, 18 befindet.
  • Mit den Funktionen von 14 fragt die Cache-Verwaltungseinheit 24 angeforderte Speicherspuren aus einem Cachespeicher 14 einer höchsten Ebene ab, danach zuerst aus dem zweiten Cachespeicher 18, bevor er zu dem Speicher 10 übergeht, da die Cachespeicher 14 und 18 die zuletzt geänderte Version einer angeforderten Speicherspur aufweisen würden. Die neueste Version wird zuerst in dem ersten Cachespeicher 14 gefunden, danach dem zweiten Cachespeicher 18, wenn sie sich nicht in dem ersten Cachespeicher 14 befindet, und danach dem Speicher 10, wenn sie sich in keinem der Cachespeicher 14, 18 befindet.
  • Beschriebene Ausführungsformen stellen Techniken bereit, um Speicherspuren in einem ersten Cachespeicher in Speicherblöcken zu gruppieren, die gemäß einer RAID-Konfiguration für den zweiten Cachespeicher definiert sind, sodass Speicherspuren in dem ersten Cachespeicher in Speicherblöcken für einen zweiten Cachespeicher gruppiert werden können. Die in dem zweiten Cachespeicher zwischengespeicherten Speicherspuren können dann in Speicherblöcken, die gemäß einer RAID-Konfiguration für die Speicherung definiert sind, gruppiert und danach in das Speichersystem geschrieben werden.
  • Beschriebene Ausführungsformen stellen Techniken bereit, um Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher, der partielle Speicherspuren aufweist, herabzustufen, damit die Sektoren in der partiellen Speicherspur, die herabgestuft wird, mit etwaigen Sektoren in einer älteren Version der Speicherspur in dem zweiten Cachespeicher verknüpft werden, die nicht in der partiellen Speicherspur, die herabgestuft wird, enthalten sind. Die verknüpfte Speicherspur kann dann an eine neue Position in dem zweiten Cachespeicher geschrieben werden.
  • Die beschriebenen Funktionen können als ein Verfahren, eine Vorrichtung oder ein Computerprogrammprodukt umgesetzt werden, das Programmier- und/oder Entwicklungs-Standardtechniken verwendet, um Software, Firmware, Hardware oder eine Kombination davon zu erzeugen. Dementsprechend können Ausführungsformen der Erfindung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte miteinander verbindet und die hier alle allgemein als „Schaltkreis“, „Modul“ oder „System“ bezeichnet werden können. Darüber hinaus können Aspekte der Ausführungsformen die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medium (Medien) verkörpert ist, auf denen ein computerlesbarer Programmcode verkörpert ist.
  • Jede Kombination von einem oder mehreren computerlesbaren Medium (Medien) kann genutzt werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich beispielsweise und ohne darauf beschränkt zu sein um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination der Vorstehenden handeln. Zu konkreteren Beispielen (einer keinen Anspruch auf Vollständigkeit erhebenden Liste) des computerlesbaren Speichermediums würden die folgenden gehören: eine elektrische Verbindung mit einem oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM- oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compactdisc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination der Vorstehenden. Im Zusammenhang mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges materielles Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Befehlen enthalten oder speichern kann.
  • Bei einem computerlesbaren Signalmedium kann es sich um ein verbreitetes Datensignal mit computerlesbarem Programmcode handeln, der darin verkörpert ist, beispielsweise im Basisband oder als Teil einer Trägerwelle. Ein solches verbreitetes Signal kann eine beliebige aus einer Vielzahl von Formen annehmen, unter anderem und ohne darauf beschränkt zu sein elektromagnetische, optische oder jede geeignete Kombination davon. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Befehlen übertragen, verbreiten oder transportieren kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes geeigneten Mediums übertragen werden, unter anderem und ohne darauf beschränkt zu sein drahtlos, drahtgebunden, mittels Lichtwellenleiterkabel, HF usw. oder jeder geeigneten Kombination der Vorstehenden.
  • Computerprogrammcode zum Ausführen von Funktionen für Aspekte der vorliegenden Erfindung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als unabhängiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede Art von Netzwerk verbunden sein, darunter ein Nahbereichs-Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Verwendung eines Internet-Dienstanbieters).
  • Aspekte der vorliegenden Erfindung werden oben mit Bezug zu Ablaufplan-Veranschaulichungen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufplan-Veranschaulichungen und/oder Blockschaubilder und Kombinationen der Blöcke in den Ablaufplan-Veranschaulichungen und/oder Blockschaubildern durch Computerprogrammbefehle umgesetzt werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder anderer programmierbarer Datenverarbeitungsvorrichtungen bereitgestellt werden, sodass eine Maschine in der Weise hervorgebracht wird, dass die Befehle, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen schaffen, die in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaltbilder festgelegt sind.
  • Diese Computerprogrammbefehle können auch auf einem computerlesbaren Medium gespeichert werden, das einen Computer oder andere programmierbare Datenverarbeitungs-Vorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die auf dem computerlesbaren Medium gespeicherten Befehle ein Herstellungsprodukt hervorbringen, das Befehle aufweist, die Funktionen/Handlungen umsetzen, die in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaltbilder festgelegt sind.
  • Die Computerprogrammbefehle können auch in einen Computer, andere programmierbare Datenverarbeitungs-Vorrichtungen oder andere Einheiten geladen werden, um zu veranlassen, dass eine Reihe von Funktionsschritten auf dem Computer, den anderen programmierbaren Vorrichtungen oder anderen Einheiten ausgeführt wird, um einen durch Computer umgesetzten Prozess in der Weise hervorzubringen, dass die Befehle, die auf einem Computer oder anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaltbilder festgelegt sind.

Claims (12)

  1. Computerprogrammprodukt zum Verwalten von Daten in einem Cachespeicher-System (4), das einen ersten Cachespeicher (14), einen zweiten Cachespeicher (18) und ein Speichersystem (10) aufweist, wobei das Computerprogrammprodukt ein nichtflüchtiges computerlesbares Speichermedium aufweist, das darin verkörperten computerlesbaren Programmcode aufweist, der ausgeführt wird, um Funktionen auszuführen, wobei die Funktionen aufweisen: Ermitteln einer Speicherspur (280), die von dem ersten Cachespeicher in den zweiten Cachespeicher herabzustufen ist, wobei die Speicherspur eine partielle Speicherspur aufweist, die Daten für weniger als alle Sektoren der Speicherspur enthält, wobei die Speicherspur in dem ersten Cachespeicher einer Speicherspur in dem Speichersystem entspricht und aus einer Vielzahl von Sektoren besteht; Ermitteln (282), ob der zweite Cachespeicher eine veraltete Version der Speicherspur enthält, die aus dem ersten Cachespeicher herabgestuft wird; als Antwort auf das Feststellen (282), dass der zweite Cachespeicher eine veraltete Version der Speicherspur enthält, Ermitteln (294), ob die veraltete Version der Speicherspur Daten für keine Daten enthaltende Speicherspursektoren der Speicherspur enthält, die aus dem ersten Cachespeicher herabgestuft wird; Verknüpfen (296) der Daten für die Sektoren aus der Speicherspur, die aus dem ersten Cachespeicher herabgestuft wurde, mit den Daten für die Speicherspursektoren aus der veralteten Version, welche Daten für die keine Daten enthaltenden Speicherspursektoren der Speicherspur enthält (294), die aus dem ersten Cachespeicher herabgestuft wird, zu einer ersten neuen Version der Speicherspur; Schreiben (298) der ersten neuen Version der Speicherspur in den zweiten Cachespeicher; und Schreiben (284) der partiellen Speicherspur, die aus dem ersten Cachespeicher herabgestuft wird, in eine zweite neue Version der Speicherspur in dem zweiten Cache als Antwort auf das Feststellen (282), dass der zweite Cachespeicher die veraltete Version nicht enthält, wobei die zweite neue Version der Speicherspur Daten der partiellen Speicherspur in nicht leeren Speicherspursektoren hat und leere Speicherspursektoren enthält, um Daten für weniger als alle Sektoren der Speicherspur zu enthalten.
  2. Computerprogrammprodukt nach Anspruch 1, wobei die Funktionen weiterhin aufweisen: Ungültigmachen (298) der veralteten Version der Speicherspur in dem zweiten Cachespeicher als Antwort auf ein Schreiben der ersten neuen Version der Speicherspur in den zweiten Cachespeicher.
  3. Computerprogrammprodukt nach Anspruch 1, wobei die erste neue Version der Speicherspur eine partielle Speicherspur (300) aufweist, die Daten für weniger als alle Sektoren der Speicherspur enthält, als Antwort (294) darauf, dass die veraltete Version der Speicherspur keine Daten für die keine Daten enthaltenden Sektoren der Speicherspur enthält, die herabgestuft wird.
  4. Computerprogrammprodukt nach Anspruch 1, wobei die erste neue Version der Speicherspur eine vollständige Speicherspur aufweist, die Daten für alle Sektoren der Speicherspur enthält, als Antwort (290) darauf, dass die veraltete Version der Speicherspur Daten für die keine Daten enthaltenden Sektoren der Speicherspur enthält, die herabgestuft wird.
  5. Computerprogrammprodukt nach Anspruch 1, wobei die Funktionen weiterhin aufweisen: Schreiben (292) der Speicherspur, die herabgestuft wird, in eine dritte neue Version der Speicherspur als Antwort auf ein Feststellen (290), dass die Speicherspur, die herabgestuft wird, Daten für alle Sektoren der Speicherspur enthält.
  6. Computerprogrammprodukt nach Anspruch 1, wobei die veraltete Version der Speicherspur Daten für Sektoren der Speicherspur enthält (294), die zuvor aus dem ersten Cachespeicher in den zweiten Cachespeicher herabgestuft wurde, und wobei die erste neue Version der Speicherspur an eine Position in dem zweiten Cachespeicher geschrieben (298) wird, die nicht die veraltete Version der Speicherspur enthält (304).
  7. Computerprogrammprodukt nach Anspruch 1, wobei die herabgestufte Speicherspur aus dem ersten Cachespeicher in einem ersten Speicherblock enthalten ist, der aus dem ersten Cachespeicher herabzustufende Speicherspuren aufweist, wobei die Funktionen weiterhin aufweisen: Schreiben der Speicherspuren aus dem ersten Speicherblock in einen zweiten Speicherblock in dem zweiten Cachespeicher, der keine gültigen Speicherspuren aufweist.
  8. Computerprogrammprodukt nach Anspruch 7, wobei die Funktionen des Ermittelns (280) der herabzustufenden Speicherspur, des Ermittelns (282), ob der zweite Cachespeicher die veraltete Version aufweist, des Ermittelns (294), ob die veraltete Version Daten für Sektoren enthält, die nicht in der Speicherspur, die herabgestuft wird, enthalten sind, des Verknüpfens (296) der Daten für die Sektoren und des Schreibens (284, 294) der ersten oder zweiten neuen Version für jede Speicherspur in dem ersten Speicherblock ausgeführt werden, der in den zweiten Speicherblock geschrieben wurde.
  9. Computerprogrammprodukt nach Anspruch 8, wobei ein Bilden des ersten Speicherblocks von Speicherspuren ein Bilden eines Speicherblocks für eine RAID- (Redundant Array of Independent Disk) Konfiguration aufweist, die auf einer RAID-Konfiguration beruht, die für den zweiten Cachespeicher als eine Vielzahl von Festkörper-Speichereinheiten aufweisend definiert wurde, wobei der erste Speicherblock von Speicherspuren aus dem ersten Cachespeicher über die Festkörper-Speichereinheiten verteilt ist, um den zweiten Speicherblock in dem zweiten Cachespeicher zu bilden.
  10. Computerprogrammprodukt nach Anspruch 1, wobei es sich bei dem ersten Cachespeicher um eine Einheit mit schnellerem Zugriff handelt als bei dem zweiten Cachespeicher und wobei es sich bei dem zweiten Cachespeicher um eine Einheit mit schnellerem Zugriff als bei den Speichereinheiten handelt.
  11. System (4), das mit einem Speichersystem (10) im Datenaustausch steht, aufweisend: einen Prozessor (12); einen ersten Cachespeicher (14), auf den der Prozessor zugreifen kann; einen zweiten Cachespeicher (18), auf den der Prozessor zugreifen kann; ein computerlesbares Speichermedium mit einem darin verkörperten computerlesbaren Programmcode, der von dem Prozessor ausgeführt wird, um Funktionen auszuführen, wobei die Funktionen aufweisen: Ermitteln (280) einer Speicherspur, die von dem ersten Cachespeicher in den zweiten Cachespeicher herabzustufen ist, wobei die Speicherspur eine partielle Speicherspur aufweist, die Daten für weniger als alle Sektoren der Speicherspur enthält, wobei die Speicherspur in dem ersten Cachespeicher einer Speicherspur in dem Speichersystem entspricht und aus einer Vielzahl von Sektoren besteht; Ermitteln (282), ob der zweite Cachespeicher eine veraltete Version der Speicherspur enthält, die aus dem ersten Cachespeicher herabgestuft wird; als Antwort auf das Feststellen (282), dass der zweite Cachespeicher eine veraltete Version der Speicherspur enthält, Ermitteln (294), ob die veraltete Version der Speicherspur Daten für keine Daten enthaltende Speicherspursektoren der Speicherspur enthält, die aus dem ersten Cachespeicher herabgestuft wird; Verknüpfen (296) der Daten für die Sektoren aus der Speicherspur, die aus dem ersten Cachespeicher herabgestuft wurde, mit den Daten für die Speicherspursektoren aus der veralteten Version, welche Daten für die keine Daten enthaltenden Speicherspursektoren der Speicherspur enthält (294), die aus dem ersten Cachespeicher herabgestuft wird, zu einer ersten neuen Version der Speicherspur; Schreiben (298) der ersten neuen Version der Speicherspur in den zweiten Cachespeicher; und Schreiben (284) der partiellen Speicherspur, die aus dem ersten Cachespeicher herabgestuft wird, in eine zweite neue Version der Speicherspur in dem zweiten Cache als Antwort auf das Feststellen (282), dass der zweite Cachespeicher die veraltete Version nicht enthält, wobei die zweite neue Version der Speicherspur Daten der partiellen Speicherspur in nicht leeren Speicherspursektoren hat und leere Speicherspursektoren enthält, um Daten für weniger als alle Sektoren der Speicherspur zu enthalten.
  12. Verfahren zum Verwalten von Daten in einem Cachespeicher-System (4), aufweisend einen ersten Cachespeicher (14), einen zweiten Cachespeicher (18) und ein Speichersystem (10), welches aufweist: Ermitteln einer Speicherspur (280), die von dem ersten Cachespeicher in den zweiten Cachespeicher herabzustufen ist, wobei die Speicherspur eine partielle Speicherspur aufweist, die Daten für weniger als alle Sektoren der Speicherspur enthält, wobei die Speicherspur in dem ersten Cachespeicher einer Speicherspur in dem Speichersystem entspricht und eine Vielzahl von Sektoren aufweist; Ermitteln (282), ob der zweite Cachespeicher eine veraltete Version der Speicherspur enthält, die aus dem ersten Cachespeicher herabgestuft wird; als Antwort auf das Feststellen (282), dass der zweite Cachespeicher eine veraltete Version der Speicherspur enthält, Ermitteln (294), ob die veraltete Version der Speicherspur Daten für keine Daten enthaltende Speicherspursektoren der Speicherspur enthält, die aus dem ersten Cachespeicher herabgestuft wird; Verknüpfen (296) der Daten für die Sektoren aus der Speicherspur, die aus dem ersten Cachespeicher herabgestuft wurde, mit den Daten für die Speicherspursektoren aus der veralteten Version, welche Daten für die keine Daten enthaltenden Speicherspursektoren der Speicherspur enthält (294), die aus dem ersten Cachespeicher herabgestuft wird, zu einer ersten neuen Version der Speicherspur; Schreiben (298) der ersten neuen Version der Speicherspur in den zweiten Cachespeicher; und Schreiben (284) der partiellen Speicherspur, die aus dem ersten Cachespeicher herabgestuft wird, in eine zweite neue Version der Speicherspur in dem zweiten Cache als Antwort auf das Feststellen (282), dass der zweite Cachespeicher die veraltete Version nicht enthält, wobei die zweite neue Version der Speicherspur Daten der partiellen Speicherspur in nicht leeren Speicherspursektoren hat und leere Speicherspursektoren enthält, um Daten für weniger als alle Sektoren der Speicherspur zu enthalten.
DE102013200032.4A 2012-01-17 2013-01-03 Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher Active DE102013200032B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/352,239 US9021201B2 (en) 2012-01-17 2012-01-17 Demoting partial tracks from a first cache to a second cache
US13/352,239 2012-01-17

Publications (2)

Publication Number Publication Date
DE102013200032A1 DE102013200032A1 (de) 2013-07-18
DE102013200032B4 true DE102013200032B4 (de) 2021-06-02

Family

ID=47757802

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013200032.4A Active DE102013200032B4 (de) 2012-01-17 2013-01-03 Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher

Country Status (4)

Country Link
US (2) US9021201B2 (de)
CN (1) CN103207840B (de)
DE (1) DE102013200032B4 (de)
GB (1) GB2500457B (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298695B (zh) * 2013-07-19 2020-06-16 腾讯科技(深圳)有限公司 数据缓存方法、装置及服务器
US10133488B2 (en) 2014-03-17 2018-11-20 Primaryio, Inc. Apparatus and method for cache provisioning, configuration for optimal application performance
US10146437B2 (en) * 2014-03-17 2018-12-04 Primaryio, Inc. Tier aware caching solution to increase application performance
US10242075B2 (en) * 2014-09-25 2019-03-26 Lg Cns Co., Ltd. Database apparatus, database management method performed in database apparatus and storing the same
US9665493B2 (en) * 2014-10-03 2017-05-30 International Business Machines Corporation Increased cache performance with multi-level queues of complete tracks
US20160212198A1 (en) * 2015-01-16 2016-07-21 Netapp, Inc. System of host caches managed in a unified manner
US10067884B2 (en) 2015-08-21 2018-09-04 International Business Machines Corporation Distributing a plurality of tracks to add to cache to lists assigned to processors
US9952904B2 (en) 2015-08-21 2018-04-24 International Business Machines Corporation Distributing tracks to add to cache to processor cache lists based on counts of processor access requests to the cache
US10108552B2 (en) * 2015-08-21 2018-10-23 International Business Machines Corporation Using cache lists for processors to determine tracks to demote from a cache
US10114753B2 (en) 2015-08-21 2018-10-30 International Business Machines Corporation Using cache lists for multiple processors to cache and demote tracks in a storage system
US10628331B2 (en) * 2016-06-01 2020-04-21 International Business Machines Corporation Demote scan processing to demote tracks from cache
CN106331335A (zh) * 2016-08-22 2017-01-11 深圳市金立通信设备有限公司 一种图像数据处理方法及终端
US10691566B2 (en) 2017-07-27 2020-06-23 International Business Machines Corporation Using a track format code in a cache control block for a track in a cache to process read and write requests to the track in the cache
US11327664B1 (en) * 2017-08-04 2022-05-10 Dell Products L.P. Fast small write forwarding with non-temporal cache memory

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040068612A1 (en) * 2002-10-08 2004-04-08 Stolowitz Michael C. Raid controller disk write mask
US20100325345A1 (en) * 2009-06-22 2010-12-23 Hitachi, Ltd. Method for managing storage system using flash memory, and computer
US20110202732A1 (en) * 2010-02-16 2011-08-18 International Business Machines Corporation Extent migration scheduling for multi-tier storage architectures

Family Cites Families (41)

* 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
US5860090A (en) * 1995-10-20 1999-01-12 Informix Software, Inc. Append-only storage in a disk array using striping and parity caching
US5860091A (en) 1996-06-28 1999-01-12 Symbios, Inc. Method and apparatus for efficient management of non-aligned I/O write request in high bandwidth raid applications
US20010029574A1 (en) 1998-06-18 2001-10-11 Rahul Razdan Method and apparatus for developing multiprocessore cache control protocols using a memory management system generating an external acknowledgement signal to set a cache to a dirty coherence state
JP2000057039A (ja) 1998-08-03 2000-02-25 Canon Inc アクセス制御方法及び装置及びファイルシステム及び情報処理装置
US6321240B1 (en) 1999-03-15 2001-11-20 Trishul M. Chilimbi Data structure partitioning with garbage collection to optimize cache utilization
US6341331B1 (en) * 1999-10-01 2002-01-22 International Business Machines Corporation Method and system for managing a raid storage system with cache
US6925515B2 (en) * 2001-05-07 2005-08-02 International Business Machines Corporation Producer/consumer locking system for efficient replication of file data
ATE498866T1 (de) 2001-06-26 2011-03-15 Oracle America Inc Verfahren zur verwendung eines l2-verzeichnisses, um spekulatives laden in einem mehrprozessorsystem zu ermöglichen
US6748488B2 (en) * 2001-09-28 2004-06-08 Sun Microsystems, Inc. Storage array having multiple erasure correction and sub-stripe writing
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
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7885921B2 (en) 2004-11-18 2011-02-08 International Business Machines Corporation Managing atomic updates on metadata tracks in a storage system
US20060155934A1 (en) 2005-01-11 2006-07-13 Ramakrishnan Rajamony System and method for reducing unnecessary cache operations
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
JP4766240B2 (ja) 2005-11-08 2011-09-07 日本電気株式会社 ファイル管理方法、装置、およびプログラム
US7444478B2 (en) 2005-11-18 2008-10-28 International Business Machines Corporation Priority scheme for transmitting blocks of data
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
US20090210620A1 (en) 2008-02-19 2009-08-20 Jibbe Mahmoud K Method to handle demand based dynamic cache allocation between SSD and RAID cache
US7958310B2 (en) 2008-02-27 2011-06-07 International Business Machines Corporation Apparatus, system, and method for selecting a space efficient repository
US9088591B2 (en) 2008-04-28 2015-07-21 Vmware, Inc. Computer file system with path lookup tables
WO2009134772A2 (en) 2008-04-29 2009-11-05 Maxiscale, Inc Peer-to-peer redundant file server system and methods
KR101044521B1 (ko) 2008-12-31 2011-06-27 엘에스산전 주식회사 네트워크에 연결된 슬레이브 장치들의 동기 제어장치
US20100191907A1 (en) 2009-01-26 2010-07-29 Lsi Corporation RAID Converter and Methods for Transforming a First RAID Array to a Second RAID Array Without Creating a Backup Copy
US8180981B2 (en) 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
US8255627B2 (en) 2009-10-10 2012-08-28 International Business Machines Corporation Secondary cache for write accumulation and coalescing
US8838903B2 (en) 2010-02-04 2014-09-16 Dataram, Inc. Priority ordered multi-medium solid-state storage system and methods for use
US8688913B2 (en) 2011-11-01 2014-04-01 International Business Machines Corporation Management of partial data segments in dual cache systems
US8688914B2 (en) 2011-11-01 2014-04-01 International Business Machines Corporation Promotion of partial data segments in flash cache

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040068612A1 (en) * 2002-10-08 2004-04-08 Stolowitz Michael C. Raid controller disk write mask
US20100325345A1 (en) * 2009-06-22 2010-12-23 Hitachi, Ltd. Method for managing storage system using flash memory, and computer
US20110202732A1 (en) * 2010-02-16 2011-08-18 International Business Machines Corporation Extent migration scheduling for multi-tier storage architectures

Also Published As

Publication number Publication date
GB201300444D0 (en) 2013-02-27
CN103207840B (zh) 2016-01-06
US20130185504A1 (en) 2013-07-18
US9026732B2 (en) 2015-05-05
GB2500457B (en) 2014-04-16
CN103207840A (zh) 2013-07-17
US9021201B2 (en) 2015-04-28
US20130185502A1 (en) 2013-07-18
DE102013200032A1 (de) 2013-07-18
GB2500457A (en) 2013-09-25

Similar Documents

Publication Publication Date Title
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
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
DE112019006907B3 (de) Auswählen von einem von mehreren cache-bereinigungsalgorithmen, der zum entfernen einer spur aus dem cache verwendet werden soll
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE112012001302B4 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112011100618B4 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE112012004571B4 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE112013001284T5 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
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
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE102016013577B4 (de) Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE112012004798T5 (de) Anpassung der Auslagerungsgeschwindigkeit auf Grundlage von Anforderungen an Lese- und Schreib-Antwortzeiten
DE102015013125A1 (de) Vorrichtung, Systeme und Verfahren zur Bereitstellung eines speichereffizienten Caches
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE112013006655T5 (de) Speichervorrichtung und Verfahren zum Steuern der Speichervorrichtung
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE102015007709A1 (de) Invalidationsdatenbereich für einen Cache
DE102016001066A1 (de) Zuordnung der logischen Blockadresse für Festplattenlaufwerke
DE112012004796B4 (de) Periodische Auslagerungen von Innen- und Aussendurchmessern von Platten zum Verbessern von Lesereaktionszeiten
DE112012001808T5 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher

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
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final