DE102012219098A1 - Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher - Google Patents

Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher Download PDF

Info

Publication number
DE102012219098A1
DE102012219098A1 DE102012219098A DE102012219098A DE102012219098A1 DE 102012219098 A1 DE102012219098 A1 DE 102012219098A1 DE 102012219098 A DE102012219098 A DE 102012219098A DE 102012219098 A DE102012219098 A DE 102012219098A DE 102012219098 A1 DE102012219098 A1 DE 102012219098A1
Authority
DE
Germany
Prior art keywords
cache
data
sub
level
subordinate
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.)
Ceased
Application number
DE102012219098A
Other languages
English (en)
Inventor
Michael T. Benhase
Stephen L. Blinick
Evangelos S. Eleftheriou
Lokesh M. Gupta
Robert Haas
Xiao-Yu Hu
Matthew J. Kalos
Roman A. Pletka
Ioannis Koltsidas
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 DE102012219098A1 publication Critical patent/DE102012219098A1/de
Ceased legal-status Critical Current

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
    • 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/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
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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
    • 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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories

Abstract

Es werden verschiedene beispielhafte Ausführungsformen von Verfahren, Systemen und Computerprogrammprodukten zum Verschieben von Teildatensegmenten innerhalb einer Datenverarbeitungs-Speicherumgebung, die durch einen Prozessor untergeordnete und übergeordnete Cachespeicherebenen aufweist, bereitgestellt. Bei einer solchen Ausführungsform wird, lediglich als Beispiel, ein gesamtes Datensegment, das eines der Teildatensegmente enthält, sowohl in die untergeordnete als auch in die übergeordnete Cachespeicherebene umgestuft. Angeforderte Daten des gesamten Datensegments werden aufgeteilt und an einem zuletzt verwendeten (MRU-)Abschnitt einer Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert. Nicht angeforderte Daten des gesamten Datensegments werden aufgeteilt und an einem am längsten ungenutzten (LRU-)Abschnitt der Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert. Die nicht angeforderten Daten werden fixiert, bis ein Schreibvorgang des gesamten Datensegments in die untergeordnete Cachespeicherebene abgeschlossen ist. Zusätzliche Ausführungsformen von Systemen und Computerprogrammprodukten werden offenbart und bieten damit in Zusammenhang stehende Vorteile.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich allgemein auf Computer und insbesondere auf Mechanismen zum Verwalten von Teildatensegmenten in einer Datenverarbeitungs-Speicherumgebung, die ein System mit doppeltem Cachespeicher aufweist.
  • Beschreibung der verwandten Technik
  • Computersysteme sind in der heutigen Gesellschaft weit verbreitet. Bei Computersystemen kann es sich um handeln Auf dem Gebiet der Datenverarbeitung bezieht sich ein „Cachespeicher” üblicherweise auf eine kleine, schnelle Hauptspeicher- oder Speichereinheit, die zum Speichern von Daten oder Befehlen verwendet wird, auf die kürzlich zugegriffen wurde, auf die häufig zugegriffen wird oder auf die wahrscheinlich künftig zugegriffen wird. Aus einem Cachespeicher zu lesen oder in ihn zu schreiben, ist üblicherweise kostengünstiger (im Hinblick auf die Zugriffszeit und/oder die Ressourcen-Auslastung), als auf sonstige Hauptspeicher- oder Speichereinheiten zuzugreifen. Nachdem Daten im Cachespeicher gespeichert worden sind, kann im Cachespeicher auf sie zugegriffen werden, statt die Daten erneut abzurufen und/oder neu zu verarbeiten, wodurch Zeit und Ressourcen eingespart werden.
  • KURZDARSTELLUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Cachespeicher können als Cachespeicher mit mehreren Ebenen bereitgestellt werden. Ein Cachespeicherungssystem kann zum Beispiel sowohl einen „primären” als auch einen „sekundären” Cachespeicher beinhalten. Beim Lesen von Daten kann ein(e) Datenverarbeitungssystem oder -einheit zuerst Daten im primären Cachespeicher suchen, und wenn die Daten nicht vorhanden sind, die Daten in dem sekundären Cachespeicher suchen. Wenn die Daten in keinem der Cachespeicher vorhanden sind, kann das/die Datenverarbeitungssystem oder -einheit die Daten von Plattenlaufwerken oder sonstigen Speichereinheiten abrufen. Beim Schreiben von Daten kann ein(e) Datenverarbeitungssystem oder -einheit Daten in den primären Cachespeicher schreiben. Diese Daten können schließlich in den sekundären Cachespeicher oder in eine Speichereinheit ausgelagert werden, um Platz in dem primären Cachespeicher zu schaffen.
  • Bei Datenverarbeitungssystemen, die Cachespeicher mit mehreren Ebenen aufweisen, kann das Schreiben von sogenannten „Teilspuren” oder Datensegmenten, die nicht vollständig gefüllt sind, in einen sekundären Cachespeicher Probleme bereiten. Beispielsweise wird unter Umständen Speicherplatz in dem sekundären Cachespeicher verschwendet. Bei einem sekundären Cachespeicher, der als Flash-Speicher oder Flash-Cachespeicher implementiert ist, ist das Implementieren des Speichers üblicherweise kostspielig, und Speicherplatz zu verschwenden, kann knappe Ressourcen in Anspruch nehmen. Erneut auf die Plattenlaufwerke oder sonstige primäre Speicher zuzugreifen, um die zusätzlichen Daten zu erfassen, um die „Lücken” in den Teilspuren zu füllen, kann darüber hinaus zusätzliche Eingabe/Ausgabe(E/A)-Aktivität verursachen, die ebenfalls Ressourcen in Anspruch nimmt und möglicherweise die Leistungsfähigkeit herabsetzt.
  • Gemäß einem Aspekt bezieht sich die Erfindung auf ein System zum Verschieben von Teildatensegmenten innerhalb einer Datenverarbeitungs-Speicherumgebung, die über untergeordnete und übergeordnete Cachespeicherebenen verfügt, das aufweist:
    einen Prozessor, der innerhalb der Datenverarbeitungs-Speicherumgebung betriebsfähig ist, wobei der Prozessor angepasst ist zum:
    Umstufen eines gesamten Datensegments, das eines der Teildatensegmente enthält, sowohl in die untergeordneten als auch die übergeordneten Cachespeicherebenen, wobei:
    angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem zuletzt verwendeten (Most Recently Used, MRU-)Abschnitt einer Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden,
    nicht geforderte Daten des gesamten Datensegments aufgeteilt werden und an einem am längsten ungenutzten (Least Recently Used, LRU-)Abschnitt der Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, und
    die nicht angeforderten Daten fixiert werden, bis ein Schreibvorgang des gesamten Datensegments in die untergeordnete Cachespeicherebene abgeschlossen ist.
  • Gemäß einer Ausführungsform erfolgt das Umstufen des gesamten Datensegments nach einer Leseanforderung für das eine der Teildatensegmente.
  • Gemäß einer Ausführungsform ist der Prozessor des Weiteren so angepasst, dass er vor dem Umstufen des gesamten Datensegments ermittelt, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte.
  • Gemäß einer Ausführungsform beinhaltet das Ermitteln, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, das Berücksichtigen einer Metrik der Eingabe/Ausgabe-Leistungsfähigkeit (Input/Output Performance, IOP), einer Bandbreitenmetrik und einer Speicherbereinigungsmetrik.
  • Gemäß einer Ausführungsform beinhaltet das Ermitteln, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, das Berücksichtigen, ob das eine der Teildatensegmente auf ein weiteres der Teildatensegmente folgt.
  • Gemäß einer Ausführungsform wird, wenn festgestellt wird, dass das eine der Teildatensegmente nicht auf untergeordneten Cachespeicherebene zwischengespeichert werden soll, eine vorhandene Umstufungsregel ausgeführt, statt das gesamte Datensegment umzustufen.
  • Gemäß einer Ausführungsform wird, wenn festgestellt wird, dass das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden soll, die untergeordnete Cachespeicherebene mit dem gesamten Datensegment befüllt, und die nicht angeforderten Daten des gesamten Datensegments an dem LRU-Ende der übergeordneten Cachespeicherebene werden freigegeben, wenn das Befüllen der untergeordneten Cachespeicherebene mit dem gesamten Datensegment abgeschlossen ist.
  • Gemäß einer Ausführungsform handelt es sich bei dem Cachespeicher der untergeordneten Ebene um einen Flash-Cachespeicher.
  • Gemäß einer Ausführungsform handelt es sich bei dem Cachespeicher der übergeordneten Ebene um einen dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM).
  • In einem weiteren Aspekt ein Computerprogrammprodukt zum Verschieben von Teildatensegmenten innerhalb einer Datenverarbeitungs-Speicherumgebung, die durch einen Prozessor untergeordnete und übergeordnete Cachespeicherebenen aufweist, wobei das Computerprogrammprodukt ein nichttransitorisches, computerlesbares Speichermedium aufweist, in dem computerlesbare Programmcodeabschnitte gespeichert sind, wobei die computerlesbaren Programmcodeabschnitte aufweisen:
    einen ersten ausführbaren Abschnitt zum Umstufen eines gesamten Datensegments, das eines der Teildatensegmente enthält, sowohl in die untergeordneten als auch in die übergeordneten Cachespeicherebenen, wobei:
    angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem zuletzt verwendeten (MRU-)Abschnitt einer Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, nicht angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem am längsten ungenutzten (LRU-)Abschnitt der Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, und
    die nicht angeforderten Daten fixiert werden, bis ein Schreibvorgang des gesamten Datensegments in die untergeordnete Cachespeicherebene abgeschlossen ist.
  • Gemäß einer Ausführungsform tritt das gesamte Datensegment nach einer Leseanforderung für das eine der Teildatensegmente auf.
  • Gemäß einer Ausführungsform ein Weiterer, der einen zweiten ausführbaren Abschnitt aufweist, um vor dem Umstufen des gesamten Datensegments zu ermitteln, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte.
  • Gemäß einer Ausführungsform beinhaltet, das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, das Berücksichtigen einer Metrik der Eingabe/Ausgabe-Leistungsfähigkeit (Input/Output Performance, IOP), einer Bandbreitenmetrik und einer Speicherbereinigungsmetrik.
  • Gemäß einer Ausführungsform beinhaltet, das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, das Berücksichtigen, ob das eine der Teildatensegmente auf ein weiteres der Teildatensegmente folgt.
  • Das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, beinhaltet das Berücksichtigen, ob das eine der Teildatensegmente auf ein weiteres der Teildatensegmente folgt.
  • Gemäß einer Ausführungsform wird festgestellt, dass das eine der Teildatensegmente nicht auf der untergeordneten Cachespeicherebene zwischengespeichert werden soll, und es wird eine vorhandene Umstufungsregel ausgeführt, statt das gesamte Datensegment umzustufen.
  • Gemäß einer Ausführungsform wird festgestellt, dass das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden soll, die untergeordnete Cachespeicherebene wird mit dem gesamten Datensegment befüllt, und die nicht angeforderten Daten des gesamten Datensegments werden an dem LRU-Ende der übergeordneten Cachespeicherebene freigegeben, wenn das Befüllen der untergeordneten Cachespeicherebene mit dem gesamten Datensegment abgeschlossen ist.
  • Angesichts des Obigen besteht ein Bedarf an einer effizienten Verwaltung von Teildatensegmenten in Systemen mit primärem/sekundärem Cachespeicher. Dementsprechend und angesichts des Obigen werden verschiedene beispielhafte Ausführungsformen von Verfahren, Systemen und Computerprogrammprodukten zum Verschieben von Teildatensegmenten innerhalb einer Datenverarbeitungs-Speicherumgebung, die untergeordnete und übergeordnete Cachespeicherebenen aufweist, durch einen Prozessor bereitgestellt. Bei einer solchen Ausführungsform wird, lediglich als Beispiel, ein gesamtes Datensegment, das eines der Teildatensegmente enthält, sowohl in die untergeordnete als auch in die übergeordnete Cachespeicherebene umgestuft. Angeforderte Daten des gesamten Datensegments werden aufgeteilt und an einem zuletzt verwendeten (MRU-)Abschnitt einer Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert. Nicht angeforderte Daten des gesamten Datensegments werden aufgeteilt und an einem am längsten ungenutzten (LRU-)Abschnitt der Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert. Die nicht angeforderten Daten werden fixiert, bis ein Schreibvorgang des gesamten Datensegments in die untergeordnete Cachespeicherebene abgeschlossen ist.
  • Zusätzlich zu der vorhergehenden beispielhaften Ausführungsform werden verschiedene sonstige Ausführungsformen von Systemen und Computerprogrammprodukten bereitgestellt, die damit in Zusammenhang stehende Vorteile bieten. Die vorhergehende Kurzdarstellung ist bereitgestellt worden, um eine Auswahl von Konzepten in vereinfachter Form vorzustellen, die im Folgenden in der ausführlichen Beschreibung näher beschrieben werden. Diese Kurzdarstellung soll weder dazu dienen, Schlüsselmerkmale oder Wesensmerkmale des beanspruchten Gegenstandes zu kennzeichnen, noch soll sie als Hilfsmittel zur Festlegung des Umfangs des beanspruchten Gegenstandes verwendet werden. Der beanspruchte Gegenstand ist nicht auf Realisierungen beschränkt, die beliebige oder sämtliche Nachteile beseitigen, die im Hintergrund angemerkt wurden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Zum besseren Verständnis der Vorteile der Erfindung erfolgt eine genauere Beschreibung der oben kurz beschriebenen Erfindung unter Bezugnahme auf bestimmte Ausführungsformen, die in den beigefügten Zeichnungen veranschaulicht werden. In dem Verständnis, dass diese Zeichnungen Ausführungsformen der Erfindung darstellen und daher nicht so zu verstehen sind, dass sie ihren Umfang einschränken, wird die Erfindung genauer und ausführlicher mithilfe der beigefügten Zeichnungen beschrieben und erläutert, für die gilt:
  • 1 ist ein Übersichts-Blockschaubild, das ein Beispiel für eine Netzwerk- und Datenverarbeitungsumgebung darstellt, in der eine Vorrichtung und ein Verfahren gemäß der Erfindung implementiert werden können;
  • 2 ist ein Übersichts-Blockschaubild, das ein Beispiel für ein Speichersystem darstellt, in dem eine Vorrichtung und ein Verfahren gemäß der Erfindung implementiert werden können;
  • 3 ist ein Übersichts-Blockschaubild, das eine Ausführungsform eines Cachespeichers mit mehreren Ebenen gemäß der Erfindung darstellt;
  • 4 ist ein Übersichts-Blockschaubild, das verschiedene Ebenen oder Bereiche darstellt, die innerhalb des sekundären Cachespeichers implementiert werden können;
  • 5 ist ein Ablaufplan, der ein beispielhaftes Verfahren zum Verwalten von Datensegmenten veranschaulicht, das das effiziente Umstufen von Teildatensegmenten gemäß einer Ausführungsform aufweist;
  • 6A ist ein Blockschaubild, das eine beispielhafte Leseanforderung und ihre angeforderten und nicht angeforderten Datenseiten einer Spur veranschaulicht; und
  • 6B ist ein Blockschaubild einer beispielhaften Leseanforderung und ihrer anschließenden Platzierung in dem primären Cachespeicher.
  • GENAUE BESCHREIBUNG BESTIMMTER AUSFÜHRUNGSFORMEN
  • Im Rahmen dieser Offenbarung wird der Ausdruck „sekundärer Cachespeicher” verwendet, um auf einen beliebigen Cachespeicher (wie zum Beispiel einen L2- oder L3-Cachespeicher) zu verweisen, der sich zwischen einem primären Cachespeicher und einer Speichereinheit wie zum Beispiel einem Plattenlaufwerk, einem Bandlaufwerk oder dergleichen befindet.
  • Unter Bezugnahme auf 1 wird eine Ausführungsform einer Computer-Netzwerkarchitektur 100 veranschaulicht. Die Architektur 100 wird dargestellt, um verschiedene Szenarien zum Implementieren des hierin veranschaulichten Cachespeicherungssystems darzulegen. Die Architektur 100 wird lediglich als Beispiel dargestellt und ist nicht beschränkend gemeint. Tatsächlich kann das hierin offenbarte Cachespeicherungssystem über die dargestellte Netzwerkarchitektur 100 hinaus auf eine große Vielfalt verschiedener Computer, Server, Speichersysteme und Netzwerkarchitekturen anwendbar sein.
  • Wie dargestellt, kann die Computer-Netzwerkarchitektur 100 einen oder mehrere Computer 102, 106 beinhalten, die durch ein Netzwerk 104 miteinander verbunden sind. Das Netzwerk 104 kann zum Beispiel ein lokales Netzwerk (local area network, LAN) 104, ein Weitverkehrs-Netzwerk (wide area network, WAN) 104, das Internet 104, ein Intranet 104 oder dergleichen beinhalten. Bei bestimmten Ausführungsformen können die Computer 102, 106 sowohl Client-Computer 102 als auch Server-Computer 106 beinhalten. Im Allgemeinen können die Client-Computer 102 Datenaustauschsitzungen initiieren, wohingegen die Server-Computer 106 auf Anforderungen von den Client-Computern 102 warten können. Bei bestimmten Ausführungsformen können die Computer 102 und/oder die Server 106 eine Verbindung mit einem oder mehreren internen oder externen direkt angeschlossenen Speichersystemen 112 (z. B. Festplattenlaufwerken, Halbleiterlaufwerken, Bandlaufwerken usw.) herstellen. Diese Computer 102, 106 und die direkt angeschlossenen Speichereinheiten 112 können mithilfe von Protokollen wie zum Beispiel ATA, SATA, SCSI, SAS, Fibre Channel oder dergleichen Daten austauschen. Beliebige oder sämtliche der Computer 102, 106 können das hierin beschriebene Cachespeicherungssystem verwenden, um auf Daten aus den Speichereinheiten 112 zuzugreifen.
  • Die Computer-Netzwerkarchitektur 100 kann bei bestimmten Ausführungsformen ein Speichernetzwerk 108 hinter den Servern 106 wie zum Beispiel ein Speicherbereichsnetz (storage area network, SAN) 108 oder ein LAN 108 beinhalten (z. B. wenn ein netzwerkgebundener Speicher verwendet wird). Dieses Netzwerk 108 kann die Server 106 mit einem oder mehreren Speichersystemen 110 wie zum Beispiel einzelnen Festplattenlaufwerken 110a oder Halbleiterlaufwerken 110a, Arrays 110b von Festplattenlaufwerken oder Halbleiterlaufwerken, Bandlaufwerken 110c, Bandbibliotheken 110d, CD-ROM-Bibliotheken oder dergleichen verbinden. Wenn es sich bei dem Netzwerk 108 um ein SAN handelt, können die Server 106 und die Speichersysteme 110 mithilfe eines Netzwerkstandards wie zum Beispiel Fibre Channel (FC) Daten austauschen. Beliebige oder sämtliche der Computer 102, 106 können das hierin beschriebene Cachespeicherungssystem verwenden, um Daten zu speichern, die aus den Speichereinheiten 110 abgerufen worden sind.
  • Unter Bezugnahme auf 2 wird eine Ausführungsform eines Speichersystems 110b veranschaulicht, das ein Array von Festplattenlaufwerken 204 und/oder Halbleiterlaufwerken 203 enthält. Die internen Komponenten des Speichersystems 110b werden dargestellt, da das Cachespeicherungssystem bei bestimmten Ausführungsformen innerhalb eines solchen Speichersystems 110b implementiert werden kann, wenngleich das Cachespeicherungssystem auch auf andere Speichersysteme 110 anwendbar sein kann. Wie dargestellt, beinhaltet das Speichersystem 110b eine Speichersteuereinheit 200, eine oder mehrere Weichen 202 und eine oder mehrere Steuereinheiten 203, 204 wie zum Beispiel Festplattenlaufwerke 204 oder Halbleiterlaufwerke 203 (wie zum Beispiel Laufwerke 203 auf der Grundlage von Flash-Speichern). Die Speichersteuereinheit 200 kann einen oder mehrere Hosts 106 (z. B. offenes System und/oder Mainframe-Server 106) in die Lage versetzen, auf Daten in der einen oder den mehreren Speichereinheiten 203, 204 zuzugreifen.
  • Bei ausgewählten Ausführungsformen beinhaltet die Speichersteuereinheit 200 einen oder mehrere Server 206. Die Speichersteuereinheit 200 kann außerdem Host-Adapter 208 und Einheitenadapter 210 beinhalten, um die Speichersteuereinheit 200 mit den Host-Einheiten 106 bzw. den Speichereinheiten 203, 204 zu verbinden. Mehrere Server 206a, 206b können Redundanz bereitstellen, um zu gewährleisten, dass Daten jederzeit für verbundene Hosts 106 verfügbar sind. Auf diese Weise kann, wenn ein Server 206a ausfällt, der andere Server 206b funktionsfähig bleiben, um zu gewährleisten, dass eine E/A zwischen den Hosts 106 und den Speichereinheiten 203, 204 fortgesetzt werden kann. Dieser Prozess kann als „Failover” bezeichnet werden.
  • Ein Beispiel für ein Speichersystem 110b, das eine ähnliche Architektur wie die in 2 veranschaulichte aufweist, ist das Unternehmensspeichersystem IBM® DS8000TM. Bei dem DS8000TM handelte sich um eine leistungsstarke Speichersteuereinheit mit hoher Speicherkapazität, die Plattenspeicher bereitstellt, der dazu bestimmt ist, einen Dauerbetrieb zu unterstützen. Die Modelle der Serie DS8000TM können die POWER5TM-Server 206a, 206b von IBM verwenden, die in eine Virtualisierungs-Engine-Technologie von IBM integriert werden können. Gleichwohl ist das hierin offenbarte Cachespeicherungssystem nicht auf das Unternehmensspeichersystem IBM® DS8000TM 110b beschränkt, sondern kann unabhängig von dem Hersteller, dem Produktnamen oder Komponenten oder Komponentennamen, die mit dem System 110 verbunden sind, in einem beliebigen vergleichbaren oder entsprechenden Speichersystem 110 implementiert werden. Des Weiteren wird jedes System, das einen Nutzen aus einer oder mehreren Ausführungsformen der Erfindung haben könnte, als in den Umfang der Erfindung fallend betrachtet. Folglich wird das IBM® DS8000TM lediglich als Beispiel dargestellt und ist nicht beschränkend gemeint.
  • Bei ausgewählten Ausführungsformen kann jeder Server 206 einen oder mehrere Prozessoren 212 (z. B. symmetrische n-Wege-Mehrprozessoren) und einen Speicher 214 beinhalten. Der Speicher 214 kann flüchtigen Speicher (z. B. RAM) wie auch nichtflüchtigen Speicher (z. B. ROM, EPROM, EEPROM, Festplatten, Flash-Speicher usw.) beinhalten. Der flüchtige Speicher und der nichtflüchtige Speicher können bei bestimmten Ausführungsformen Software-Module speichern, die auf dem/den Prozessor(en) 212 ausgeführt werden und dazu verwendet werden, auf Daten in den Speichereinheiten 203, 204 zuzugreifen. Die Server 206 können zumindest eine Instanz dieser Software-Module betreiben. Diese Software-Module können sämtliche Lese- und Schreibanforderungen an logische Datenträger in den Speichereinheiten 203, 204 verwalten.
  • Bei ausgewählten Ausführungsformen kann der Speicher 214 einen Cachespeicher 218 beinhalten. Wenn ein Host 106 (z. B. ein offenes System oder Mainframe-Server 106) einen Lesevorgang durchführt, kann der Server 206, der den Lesevorgang durchführt, Daten aus den Speichereinheiten 203, 204 abrufen und sie für den Fall, dass sie erneut benötigt werden, in seinem Cachespeicher 218 speichern. Wenn die Daten erneut durch einen Host 106 angefordert werden, kann der Server 206 die Daten aus dem Cachespeicher 218 abrufen, statt sie aus den Speichereinheiten 203, 204 abzurufen und so Zeit und Ressourcen einsparen. Wenn ein Host 106 einen Schreibvorgang durchführt, kann der Server 106, der die Schreibanforderung empfängt, den Schreibvorgang in ähnlicher Weise in seinem Cachespeicher 218 speichern und das Schreiben für einen späteren Zeitpunkt in die Speichereinheiten 203, 204 auslagern. Wenn ein Schreibvorgang in dem Cachespeicher 218 gespeichert wird, kann der Schreibvorgang auch in einem nichtflüchtigen Speicher (non-volatile storage, NVS) 220 des Gegenservers 206 gespeichert werden, sodass der Schreibvorgang durch den Gegenserver 206 wiederhergestellt werden kann, falls der erste Server 206 ausfällt.
  • Unter Bezugnahme auf 3 und unter fortdauernder Bezugnahme auf 2 kann ein Speichersystem 110b, wie zuvor erwähnt, sowohl Festplattenlaufwerke 204 als auch Halbleiterlaufwerke (solid-state drives, SSDs) 203 wie zum Beispiel Laufwerke 203 auf der Grundlage von Flash-Speichern beinhalten. Die E/A-Leistungsfähigkeit der SSDs 203 oder sonstiger Typen von Halbleiterspeichern ist üblicherweise erheblicher höher als die E/A-Leistungsfähigkeit der Festplattenlaufwerken 204. Aufgrund der höheren E/A-Leistungsfähigkeit können die Halbleiterlaufwerke 203 bei bestimmten Ausführungsformen dazu verwendet werden, einen großen sekundären Cachespeicher 300 zwischen dem primären Cachespeicher 218 und den Festplattenlaufwerken 204 bereitzustellen. Dieser große sekundäre Cachespeicher 300 kann die E/A-Leistungsfähigkeit des Speichersystems 110b erheblich verbessern und kann hierin als „Flash-Cachespeicher” bezeichnet werden.
  • Wenn eine Leseanforderung durch einen Server 106 empfangen wird, kann der Server 106 mithilfe des sekundären Cachespeichers 300 zunächst in dem primären Cachespeicher 218 nach Daten suchen und, wenn die Daten nicht vorhanden sind, in dem sekundären Cachespeicher 300 (der sich in den Halbleiterlaufwerken 203 befindet) nach den Daten suchen. Wenn die Daten in keinem der Cachespeicher vorhanden sind, kann der Server 106 die Daten aus den Plattenlaufwerken 204 abrufen. Beim Schreiben von Daten kann der Server 106 in ähnlicher Weise zunächst die modifizierten Daten in den primären Cachespeicher 218 schreiben. Diese modifizierten Daten können schließlich in den sekundären Cachespeicher 300 ausgelagert werden, um Platz in dem primären Cachespeicher 218 zu schaffen. Diese Daten können anschließend nach Bedarf in die Plattenlaufwerke 204 ausgelagert werden, um Platz in dem sekundären Cachespeicher 300 zu schaffen.
  • Bei bestimmten Ausführungsformen kann der sekundäre Cachespeicher 300 so dimensioniert sein, dass er etwa ein bis zwanzig Prozent oder bei anderen Ausführungsformen etwa fünf Prozent der gesamten Speicherkapazität des Speichersystems 110b bereitstellt. Auf diese Weise können bei einem Speichersystem 110b, das etwa zehn Terabyte (TB) Speicher (aus den Festplattenlaufwerken 204 und den Halbleiterlaufwerken 203) enthält, etwa 0,5 TB dieses Speicherplatzes als sekundärer Cachespeicher 300 verwendet werden. Bei einem so großen sekundären Cachespeicher 300 müssen unter Umständen Daten deutlich weniger häufig aus dem sekundären Cachespeicher 300 ausgelagert werden als bei herkömmlichen sekundären Cachespeichern. Als Beispiel könnte ein sehr großer sekundärer Cachespeicher 300 Schreibvorgänge für einen ganzen Tag speichern, ohne die Schreibvorgänge in die Plattenlaufwerke 204 auslagern zu müssen. Die Schreibvorgänge könnten dann nachts oder in einem Zeitraum relativer Inaktivität ausgelagert werden. Cachespeicher-Verwaltungsalgorithmen können neu gestaltet werden, um den zusätzlichen Speicherplatz in dem sekundären Cachespeicher 300 effizient auszunutzen und einen Nutzen aus den Verbesserungen der Leistungsfähigkeit zu ziehen, die bei der Verwendung eines großen sekundären Cachespeichers 300 möglich sind.
  • Wie in 3 dargestellt, kann jeder Cachespeicher 218, 300 Daten 302a, 302b und Metadaten 304a, 304b speichern. Wie in 4 dargestellt wird, können die Daten 302a, 302b in Form von Spuren gespeichert werden. Jeder Spur in dem sekundären Cachespeicher 300 kann ein sekundärer Spursteuerblock (secondary track control block, STCB) zugehörig sein. Der STCB kann hierin auch als Cachespeicher-Flash-Steuerblock (Cache Flash Control Block, CFCB) bezeichnet werden. Der STCB kann für jede Spur neben sonstigen Daten einen Zeiger auf die nächste Spur in der Kette, Daten, die angeben, ob die Spur frei oder belegt ist, wie auch Daten, die angeben, welche Sektoren in der Spur modifiziert worden sind, beinhalten. Bei bestimmten Ausführungsformen können die STCBs für alle Spuren in einer STCB-Tabelle 306 gespeichert werden, die, wie dargestellt, in dem sekundären Cachespeicher 300 oder an anderer Stelle gespeichert wird.
  • Darüber hinaus kann jeder Spur in dem sekundären Cachespeicher 300 ein sekundärer Stride-Steuerblock (secondary stride control block, SSCB) zugehörig sein. Der SSCB kann wie der STCB Diagnose- und/oder Statistikdaten beinhalten, bezieht sich jedoch stattdessen auf Strides (Gruppen von Spuren), die in dem sekundären Cachespeicher 300 gespeichert sind. Der SSCB kann hierin auch als Cachespeicher-Flash-Element (CFE) bezeichnet werden. Bei bestimmten Ausführungsformen können die SSCBs für alle Strides in einer SSCB-Tabelle 308 gespeichert werden, die, wie dargestellt, in dem sekundären Cachespeicher 300 oder an anderer Stelle gespeichert wird.
  • In ähnlicher Weise kann der primäre Cachespeicher 218 außerdem die Metadaten 304a speichern, die dem sekundären Cachespeicher 300 zugehörig sind. Der primäre Cachespeicher 218 kann zum Beispiel eine Indextabelle des sekundären Cachespeichers (secondary cache index table, SCIT) 308 speichern, die ein Verzeichnis für Spuren in dem sekundären Cachespeicher 300 bereitstellt. Bei bestimmten Ausführungsformen handelt es sich bei der SCIT 308 im Wesentlichen um eine Hash-Tabelle mit einer konstanten Hash-Funktion. Um eine bestimmte Spur in der SCIT 308 ausfindig zu machen, kann die Hash-Funktion eine Spurkennung (z. B. eine Spurnummer) in einen Hash-Wert umwandeln. Dieser Hash-Wert kann dann in der SCIT 308 nachgeschlagen werden, um den STCB für die Spur zu finden. Alternativ könnte die SCIT 308 in ein Cachespeicherverzeichnis des primären Cachespeichers 218 integriert werden, wodurch eine einzige Hash-Tabelle bereitgestellt würde, die die Spuren sowohl des primären als auch des sekundären Cachespeichers 218, 300 speichert. Bei ausgewählten Ausführungsformen wird die SCIT 308 ausschließlich in dem primären Cachespeicher 218 gehalten. Die SCIT 308 kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cachespeicher 300 erstellt oder neu erstellt werden (bei einem Failover, einem Failback oder einem einleitenden Laden des Microcodes (initial microcode load, IML)).
  • Bei bestimmten Ausführungsformen kann der primäre Cachespeicher 218 außerdem eine Liste freier Spuren (list of free tracks, LOFT) 310 speichern, die angibt, welche Spuren in dem sekundären Cachespeicher 300 frei (d. h. nicht belegt) sind. Diese Liste 310 kann dazu verwendet werden, freien Speicherplatz in dem sekundären Cachespeicher 300 ausfindig zu machen, um Daten aus dem primären Cachespeicher 218 in den sekundären Cachespeicher 300 auszulagern. Bei ausgewählten Ausführungsformen kann das Einfügen oder Entfernen von Spuren aus der LOFT 310 mit einer Protokollstruktur durchgeführt werden. Spuren können zum Beispiel am Ende der LOFT 310 eingefügt und am Beginn der LOFT 310 gelöscht werden. Die LOFT 310 kann ausschließlich in dem primären Cachespeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cachespeicher 300 erstellt oder neu erstellt werden.
  • Der primäre Cachespeicher 218 kann außerdem eine sortierte Baumstruktur von Spuren (sorted tree of tracks, STOT) 312 speichern, in der die Spuren nach „Spur-ID” oder einer anderen Kennung sortiert sind. Die STOT 312 kann dazu verwendet werden, die Suchzeit (auf den Plattenlaufwerken 204) beim Auslagern von Spuren aus dem sekundären Cachespeicher 300 in die Plattenlaufwerke 204 so weit wie möglich zu verkürzen. Die STOT 312 kann ausschließlich in dem primären Cachespeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cachespeicher 300 erstellt oder neu erstellt werden.
  • Der primäre Cachespeicher 218 kann außerdem eine Statistik je Stride (statistics per stride, STATS) 314 für jeden Stride mit einer oder mehreren Spuren in dem sekundären Cachespeicher 300 speichern. Ein „Stride” bezieht sich auf einen Satz logisch sequentieller Daten, die über mehrere Platten hinweg segmentiert sein könnten, zusammen mit zusätzlichen Paritätsdaten, wie sie beispielsweise in einer RAID-5-Konfiguration (eines redundanten Arrays kostengünstiger Platten) verwendet werden. Im Allgemeinen kann die STATS 314 verwendet werden, um zu ermitteln, für welche Spuren die geringste Anzahl von Plattenoperationen („Platten-Ops”) zum Auslagern aus dem sekundären Cachespeicher 300 in die Plattenlaufwerke 204 erforderlich ist. Im Allgemeinen ist die Auslagerungsabwertung für eine Spur geringer, wenn mehr Spuren in einem Stride vorhanden sind. Beim Auswählen von auszulagernden Spuren können Spuren, die die geringste Anzahl von Platten-Ops erfordern, zuerst ausgelagert werden, um die Ressourcen-Auslastung so weit wie möglich zu verringern. Bei ausgewählten Ausführungsformen kann die STATS 314 Daten wie zum Beispiel die Anzahl von Spuren, die in dem sekundären Cachespeicher 300 je Stride vorhanden sind, und die Anzahl von Platten-Ops, die zum Auslagern einer Spur in einem Stride erforderlich sind, speichern. Bei bestimmten Ausführungsformen kann die STATS 314 ein „Neuigkeits”-Bit für jeden Stride speichern. Das Neuigkeits-Bit kann jedes Mal, wenn ein Entfernungsprozess einen Stride durchläuft, inkrementiert werden. Das Neuigkeits-Bit kann jedes Mal, wenn eine Spur einem Stride hinzugefügt wird, zurückgesetzt werden. Das Neuigkeits-Bit kann dazu verwendet werden, Strides in dem sekundären Cachespeicher 300 zu halten, in die aktiv geschrieben wird. Die STATS 314 kann ausschließlich in dem primären Cachespeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cachespeicher 300 erstellt oder neu erstellt werden.
  • Die oben beschriebenen Metadaten 304a, 304b können auf unterschiedliche Weise strukturiert und gespeichert werden und sind nicht auf die veranschaulichte Struktur oder Ordnung beschränkt. Die Metadaten 304a, 304b werden beispielhaft bereitgestellt, um eine Technik zum Speichern und Strukturieren der Metadaten 304a, 304b darzustellen. Bei bestimmten Ausführungsformen können die Daten und Metadaten zum Beispiel gemeinsam in dem sekundären Cachespeicher 300 in einem Array mit Umlaufprotokollstruktur gespeichert werden. Sonstige Verfahren zum Strukturieren und Speichern der Metadaten 304a, 304b können angewendet werden und sind im Umfang der Erfindung eingeschlossen.
  • Wie zuvor erwähnt, besteht ein Vorteil eines großen sekundären Cachespeichers 300 darin, dass Daten deutlich weniger häufig aus dem sekundären Cachespeicher 300 ausgelagert werden müssen als bei herkömmlichen sekundären Cachespeichern. Dies kann es möglich machen, dass mehr Daten in dem sekundären Cachespeicher 300 angesammelt werden, bevor sie in die Plattenlaufwerke 204 ausgelagert werden. Dementsprechend können bei ausgewählten Ausführungsformen eine Vorrichtung und ein Verfahren gemäß der Erfindung so eingerichtet werden, dass sie abwarten, bis sich vollständige Strides von Daten in dem sekundären Cachespeicher 300 angesammelt und verbunden haben, bevor die Daten in die Plattenlaufwerke 204 ausgelagert werden. Wie oben erläutert, kann dadurch die Anzahl von Platten-Ops, die erforderlich sind, um Daten aus dem sekundären Cachespeicher 300 in die Plattenlaufwerke 204 auszulagern, so weit wie möglich verringert werden, wodurch die Leistungsfähigkeit des Systems insgesamt verbessert wird.
  • Unter Bezugnahme auf 4 können bei bestimmten Ausführungsformen Bereinigungsvorgänge aus dem sekundären Cachespeicher 300 auf der Grundlage der Belegung durchgeführt werden. Beispielsweise können drei Bereiche in dem sekundären Cachespeicher 300 definiert werden: (1) Quiesce; (2) Trigger; und (3) hohe Priorität. Wenn sich die Belegung des sekundären Cachespeichers 300 im Quiesce-Bereich befindet (wenn der sekundäre Cachespeicher z. B. zu null bis fünfzig Prozent belegt ist), können keine Daten aus dem Cachespeicher 300 entfernt werden. In ähnlicher Weise gilt, dass, wenn sich die Cachespeicherbelegung im Trigger-Bereich befindet (wenn der sekundäre Cachespeicher 300 z. B. zu fünfzig bis siebzig Prozent belegt ist), Bereinigungsvorgänge aus dem Cachespeicher in einem Normalmodus durchgeführt werden können, bis die Cachespeicherbelegung sich innerhalb des Quiesce-Bereichs befindet. In ähnlicher Weise gilt, dass, wenn sich die Cachespeicherbelegung in einem Bereich hoher Priorität befindet (wenn der sekundäre Cachespeicher 300 z. B. zu mehr als siebzig Prozent belegt ist), Bereinigungsvorgänge aus dem Cachespeicher in einem Hochprioritätsmodus durchgeführt werden können, bis sich die Cachespeicherbelegung wieder innerhalb des Trigger-Bereichs befindet. Die oben bereitgestellten numerischen Bereiche werden lediglich als Beispiel dargestellt und sind nicht beschränkend gemeint. Ungeachtet des Bereinigungsmodus kann der Bereinigungsprozess Spuren auslagern, für deren Auslagerung die geringste Anzahl von Platten-Ops erforderlich ist.
  • Wie zuvor erwähnt, kann das Verschieben von Teildatensegmenten (z. B. Spuren) in den sekundären Cachespeicher eine Verschwendung von Speicherplatz in dem sekundären Cachespeicher selbst verursachen und/oder zu zusätzlichen E/A-Vorgängen führen, da zusätzliche Arbeit erforderlich sein kann, um Lücken mit Daten aus dem Sicherungsspeicher zu füllen. Um die Verwaltung von Datensegmenten innerhalb eines Systems mit doppeltem Cachespeicher (d. h. eines Systems mit primärem und sekundärem Cachespeicher, wie zuvor beschrieben) zu unterstützen, stellen die veranschaulichten Ausführungsformen Mechanismen zum Verschieben von Daten zwischen einem Sicherungsspeicher, einem primären und einem sekundären Cachespeicher bereit, wie im Folgenden beschrieben wird.
  • Die Mechanismen der veranschaulichten Ausführungsformen zielen darauf ab, Teildatensegmente in dem primären (z. B. DRAM-)Cachespeicher zu beseitigen, sodass es sich bei Umstufungen von Datensegmenten in den sekundären (z. B. Flash-)Cachespeicher durchweg um vollständige Datensegmente handelt. Um dieses Ziel zu erreichen, speichern diese Mechanismen bei einer Ausführungsform vollständige Spuren in dem primären Cachespeicher zwischen, selbst wenn eine Teilzwischenspeicherung angefordert wird. Seiten oder Abschnitte der Spuren, die nicht Teil einer Client-/Host-Anforderung waren, können dann in dem Cachespeicher fixiert oder gehalten werden, bis die Umstufung des Datensegments abgeschlossen ist. Nachdem die Umstufung in den sekundären Cachespeicher abgeschlossen ist, können diejenigen Abschnitte, die nicht durch den Client/Host angefordert worden waren, aus dem primären Cachespeicher herabgestuft werden.
  • Was 5 betrifft, so veranschaulicht ein Verfahren 500 ein beispielhaftes Verfahren zur Datenverwaltung in einer Datenverarbeitungs-Speicherumgebung, die primäre, sekundäre und Sicherungsspeichersysteme, wie zuvor beschrieben, gemäß verschiedenen Mechanismen der veranschaulichten Ausführungsformen aufweist. Das Verfahren 500 beginnt (Schritt 502) mit einer Ermittlung, ob ein bestimmtes Datensegment (Spur) in dem sekundären Cachespeicher (Flash-Cachespeicher) zwischengespeichert werden soll (Schritt 504). Wenn dies nicht der Fall ist, werden vorhandene Spurumstufungsregeln ausgeführt (Schritt 508), und das Verfahren 500 endet (Schritt 520). Anderenfalls wird die gesamte Spur (einschließlich angeforderter und nicht angeforderter Abschnitte) gelesen (Schritt 506).
  • Das Verfahren 500 geht anschließend zu Schritt 510, in dem die angeforderten Seiten in einem zuletzt verwendeten (MRU-)Abschnitt des primären/übergeordneten Cachespeichers platziert werden, und dann zu Schritt 512 über, in dem die nicht angeforderten Seiten in einem am längsten ungenutzten (LRU-)Abschnitt des primären/übergeordneten Cachespeichers platziert und fixiert werden. Als anschließender oder gleichzeitiger Schritt wird der sekundäre Cachespeicher mit der gesamten Spur befüllt (Schritt 514). Nachdem das Schreiben in den sekundären Cachespeicher abgeschlossen ist (Schritt 516), werden die nicht angeforderten Seiten aus dem LRU-Abschnitt des primären Cachespeichers freigegeben (Schritt 518), und das Verfahren 500 endet (wiederum Schritt 520).
  • 6A und darauf folgend 6B veranschaulichen Blockschaubilder einer Leseanforderung und ihre anschließende Platzierung in dem primären (wie in dieser Ausführungsform dargestellt, DRAM-)Cachespeicher. Wie in 6A dargestellt, enthält die Leseanforderung für verschiedene Seiten einer Spur i (Datensegment 600) 0 bis 16 Seiten, darunter angeforderte Seiten 602 und nicht angeforderte Seiten 604. Wie darauf folgend in 6B dargestellt, wird das Datensegment aufgeteilt, wobei die angeforderten Seiten an dem MRU-Ende des primären Cachespeichers 218 (hier als angeforderte Seiten 606 dargestellt) platziert werden und die nicht angeforderten Seiten an dem LRU-Ende des primären Cachespeichers 218 (hier dargestellt als nicht angeforderte Seiten 608) platziert werden. Die nicht angeforderten Seiten 608 werden in dem Cachespeicher 218 fixiert, bis die Umstufung desselben Datensegments 600 in den sekundären Cachespeicher abgeschlossen ist. Anschließend werden die nicht angeforderten Seiten 608 freigegeben.
  • Wie für einen Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung eine reine Hardware-Ausführungsform, eine reine Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform annehmen, in der Software- und Hardware-Aspekte kombiniert werden, die sämtlich hierin verallgemeinernd als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert wird, auf denen computerlesbarer Programmcode verkörpert ist.
  • Es kann eine beliebige Kombination eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel um ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- bzw. Halbleitersystem, -vorrichtung oder -einheit oder um eine beliebige geeignete Kombination aus Obigem handeln, ohne darauf beschränkt zu sein. Zu konkreteren Beispielen (einer nicht erschöpfenden Liste) des computerlesbaren Speichermediums würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (random access memory, RAM), ein Festwertspeicher (read-only memory, ROM), ein löschbarer, programmierbarer Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine Magnetspeichereinheit oder eine beliebige geeignete Kombination des Obigen. Im Rahmen dieses Dokuments kann ein computerlesbares Speichermedium jedes physische Medium sein, das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen enthalten oder speichern kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann mithilfe eines beliebigen geeigneten Mediums übertragen werden, zum Beispiel über Funk, Kabel, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder über eine beliebige geeignete Kombination des Obigen, ohne darauf beschränkt zu sein. Computerprogrammcode zum Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben werden, zum Beispiel in einer objektorientierten Programmiersprache wie etwa Java, Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie zum Beispiel der Programmiersprache „C” oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jede Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden.
  • Aspekte der vorliegenden Erfindung werden oben unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle realisiert werden kann/können. Diese Computerprogrammbefehle können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Befehle, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Realisieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Befehle einen hergestellten Gegenstand (article of manufacture) erzeugen, der Befehle beinhaltet, die die/den Funktion/Vorgang realisieren, die/der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaltbilder angegeben ist. Die Computerprogrammbefehle können außerdem auf einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten geladen werden, um zu bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder sonstigen Einheiten ausgeführt wird, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführten Befehle Prozesse bereitstellen, um die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge zu realisieren.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der einen oder mehrere ausführbare Befehle zum Realisieren der angegebenen logischen Funktion(en) aufweist. Es ist außerdem zu beachten, dass bei einigen alternativen Umsetzungen die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten können. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Vorgänge ausführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen realisiert werden können.
  • Es sind zwar eine oder mehrere Ausführungsformen der vorliegenden Erfindung genau veranschaulicht worden, Fachleuten ist jedoch ersichtlich, dass Modifizierungen und Anpassungen an diesen Ausführungsformen vorgenommen werden können, ohne vom Umfang der vorliegenden Erfindung, wie sie in den folgenden Ansprüchen dargelegt wird, abzuweichen.

Claims (15)

  1. Verfahren zum Verschieben von Teildatensegmenten innerhalb einer Datenverarbeitungs-Speicherumgebung, die durch einen Prozessor unter- und übergeordnete Cachespeicherebenen aufweist, wobei das Verfahren aufweist: Umstufen eines gesamten Datensegments, das eines der Teildatensegmente enthält, sowohl in die untergeordneten als auch die übergeordneten Cachespeicherebenen, wobei: angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem zuletzt verwendeten (MRU-)Abschnitt einer Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, nicht angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem am längsten ungenutzten (LRU-)Abschnitt der Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, und die nicht angeforderten Daten fixiert werden, bis ein Schreibvorgang des gesamten Datensegments in die untergeordnete Cachespeicherebene abgeschlossen ist.
  2. Verfahren nach Anspruch 1, wobei das Umstufen des gesamten Datensegments nach einer Leseanforderung für das eine der Teildatensegmente erfolgt.
  3. Verfahren nach einem der Ansprüche 1 bis 2, das des Weiteren vor dem Umstufen des gesamten Datensegments ein Ermitteln aufweist, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte.
  4. Verfahren nach Anspruch 3, wobei das Ermitteln, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, ein Berücksichtigen einer Metrik der Eingabe/Ausgabe-Leistungsfähigkeit (IOP), einer Bandbreitenmetrik und einer Speicherbereinigungsmetrik beinhaltet.
  5. Verfahren nach einem der Ansprüche 3 bis 4, wobei das Ermitteln, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, ein Berücksichtigen beinhaltet, ob das eine der Teildatensegmente auf ein weiteres der Teildatensegmente folgt.
  6. Verfahren nach einem der Ansprüche 3 bis 5, wobei, wenn festgestellt wird, dass das eine der Teildatensegmente nicht auf der untergeordneten Cachespeicherebene zwischengespeichert werden soll, eine vorhandene Umstufungsregel ausgeführt wird, statt das gesamte Datensegment umzustufen.
  7. Verfahren nach einem der Ansprüche 3 bis 6, wobei, wenn festgestellt wird, dass das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden soll, die untergeordnete Cachespeicherebene mit dem gesamten Datensegment befüllt wird und die nicht angeforderten Daten des gesamten Datensegments an dem LRU-Ende der übergeordneten Cachespeicherebene freigegeben werden, wenn das Befüllen der untergeordneten Cachespeicherebene mit dem gesamten Datensegment abgeschlossen ist.
  8. System zum Verschieben von Teildatensegmenten innerhalb einer Datenverarbeitungs-Speicherumgebung, die unter- und übergeordnete Cachespeicherebenen aufweist, wobei das System aufweist: einen Prozessor, der innerhalb der Datenverarbeitungs-Speicherumgebung betriebsfähig ist, wobei der Prozessor angepasst ist zum: Umstufen eines gesamten Datensegments, das eines der Teildatensegmente enthält, sowohl in die untergeordneten als auch die übergeordneten Cachespeicherebenen, wobei: angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem zuletzt verwendeten (MRU-)Abschnitt einer Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, nicht angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem am längsten ungenutzten (LRU-)Abschnitt der Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, und die nicht angeforderten Daten fixiert werden, bis ein Schreibvorgang des gesamten Datensegments in die untergeordnete Cachespeicherebene abgeschlossen ist.
  9. System nach Anspruch 8, wobei das Umstufen des gesamten Datensegments nach einer Leseanforderung für das eine der Teildatensegmente erfolgt.
  10. System nach einem der Ansprüche 8 bis 9, wobei der Prozessor des Weiteren angepasst ist, um vor dem Umstufen des gesamten Datensegments zu ermitteln, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte.
  11. System nach Anspruch 10, wobei das Ermitteln, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, ein Berücksichtigen einer Metrik der Eingabe/Ausgabe-Leistungsfähigkeit (IOP), einer Bandbreitenmetrik und einer Speicherbereinigungsmetrik beinhaltet.
  12. System nach einem der Ansprüche 10 bis 11, wobei das Ermitteln, ob das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden sollte, ein Berücksichtigen beinhaltet, ob das eine der Teildatensegmente auf ein weiteres der Teildatensegmente folgt.
  13. System nach einem der Ansprüche 10 bis 12, wobei, wenn festgestellt wird, dass das eine der Teildatensegmente nicht auf der untergeordneten Cachespeicherebene zwischengespeichert werden soll, eine vorhandene Umstufungsregel ausgeführt wird, statt das gesamte Datensegment umzustufen.
  14. System nach einem der Ansprüche 10 bis 13, wobei, wenn festgestellt wird, dass das eine der Teildatensegmente auf der untergeordneten Cachespeicherebene zwischengespeichert werden soll, die untergeordnete Cachespeicherebene mit dem gesamten Datensegment befüllt wird und die nicht angeforderten Daten des gesamten Datensegments an dem LRU-Ende der übergeordneten Cachespeicherebene freigegeben werden, wenn das Befüllen der untergeordneten Cachespeicherebene mit dem gesamten Datensegment abgeschlossen ist.
  15. Computerprogrammprodukt zum Verschieben von Teildatensegmenten innerhalb einer Datenverarbeitungs-Speicherumgebung, die durch einen Prozessor untergeordnete und übergeordnete Cachespeicherebenen aufweist, wobei das Computerprogrammprodukt ein nichttransitorisches, computerlesbares Speichermedium aufweist, in dem computerlesbare Programmcodeabschnitte gespeichert sind, wobei die computerlesbaren Programmcodeabschnitte aufweisen: einen ersten ausführbaren Abschnitt zum Umstufen sowohl in die untergeordneten als auch in die übergeordneten Cachespeicherebenen eines gesamten Datensegments, das eines der Teildatensegmente enthält, wobei: angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem zuletzt verwendeten (MRU-)Abschnitt einer Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, nicht angeforderte Daten des gesamten Datensegments aufgeteilt werden und an einem am längsten ungenutzten (LRU-)Abschnitt der Herabstufungs-Warteschlange der übergeordneten Cachespeicherebene positioniert werden, und die nicht angeforderten Daten fixiert werden, bis ein Schreibvorgang des gesamten Datensegments in die untergeordnete Cachespeicherebene abgeschlossen ist.
DE102012219098A 2011-11-01 2012-10-19 Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher Ceased DE102012219098A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/286,454 2011-11-01
US13/286,454 US8688913B2 (en) 2011-11-01 2011-11-01 Management of partial data segments in dual cache systems

Publications (1)

Publication Number Publication Date
DE102012219098A1 true DE102012219098A1 (de) 2013-05-02

Family

ID=48084561

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012219098A Ceased DE102012219098A1 (de) 2011-11-01 2012-10-19 Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher

Country Status (3)

Country Link
US (4) US8688913B2 (de)
DE (1) DE102012219098A1 (de)
GB (1) GB2505969B (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8825944B2 (en) 2011-05-23 2014-09-02 International Business Machines Corporation Populating strides of tracks to demote from a first cache to a second cache
US8825953B2 (en) 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache
US9021201B2 (en) * 2012-01-17 2015-04-28 International Business Machines Corporation Demoting partial tracks from a first cache to a second cache
US8825957B2 (en) 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using an occupancy of valid tracks in strides in the second cache to consolidate strides in the second cache
US8966178B2 (en) 2012-01-17 2015-02-24 International Business Machines Corporation Populating a first stride of tracks from a first cache to write to a second stride in a second cache
US9710173B2 (en) * 2014-05-20 2017-07-18 Micron Technology, Inc. Read cache memory with DRAM class promotion
US9710185B2 (en) 2014-07-10 2017-07-18 Samsung Electronics Co., Ltd. Computing system with partial data computing and method of operation thereof
US9857864B1 (en) * 2014-10-29 2018-01-02 Amazon Technologies, Inc. Systems and methods for reducing power consumption in a memory architecture
US20160269501A1 (en) * 2015-03-11 2016-09-15 Netapp, Inc. Using a cache cluster of a cloud computing service as a victim cache
EP3115904B1 (de) * 2015-07-06 2018-02-28 Alcatel Lucent Verfahren zur verwaltung eines verteilten caches
US10037164B1 (en) 2016-06-29 2018-07-31 EMC IP Holding Company LLC Flash interface for processing datasets
US10331561B1 (en) 2016-06-29 2019-06-25 Emc Corporation Systems and methods for rebuilding a cache index
US10089025B1 (en) 2016-06-29 2018-10-02 EMC IP Holding Company LLC Bloom filters in a flash memory
US10055351B1 (en) 2016-06-29 2018-08-21 EMC IP Holding Company LLC Low-overhead index for a flash cache
US10146438B1 (en) 2016-06-29 2018-12-04 EMC IP Holding Company LLC Additive library for data structures in a flash memory
US10261704B1 (en) 2016-06-29 2019-04-16 EMC IP Holding Company LLC Linked lists in flash memory
CN107291635B (zh) * 2017-06-16 2021-06-29 郑州云海信息技术有限公司 一种缓存替换方法和装置
US11150840B2 (en) * 2020-02-09 2021-10-19 International Business Machines Corporation Pinning selected volumes within a heterogeneous cache

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5710907A (en) * 1995-12-22 1998-01-20 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US6557080B1 (en) * 1999-01-25 2003-04-29 Wisconsin Alumni Research Foundation Cache with dynamic control of sub-block fetching
US6341331B1 (en) 1999-10-01 2002-01-22 International Business Machines Corporation Method and system for managing a raid storage system with cache
US6823427B1 (en) 2001-05-16 2004-11-23 Advanced Micro Devices, Inc. Sectored least-recently-used cache replacement
US6857045B2 (en) 2002-01-25 2005-02-15 International Business Machines Corporation Method and system for updating data in a compressed read cache
WO2003088048A1 (en) 2002-04-08 2003-10-23 University Of Texas System Non-uniform cache apparatus, systems, and methods
US6901483B2 (en) 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
US20040103251A1 (en) * 2002-11-26 2004-05-27 Mitchell Alsup Microprocessor including a first level cache and a second level cache having different cache line sizes
US6996688B2 (en) 2003-03-11 2006-02-07 International Business Machines Corporation Method, system, and program for improved throughput in remote mirroring systems
US7380047B2 (en) * 2004-09-30 2008-05-27 International Business Machines Corporation Apparatus and method for filtering unused sub-blocks in cache memories
US7478218B2 (en) 2005-02-18 2009-01-13 Vmware, Inc. Adaptive cache sizing based on monitoring of regenerated and replaced cache entries
US20110072218A1 (en) 2009-09-24 2011-03-24 Srilatha Manne Prefetch promotion mechanism to reduce cache pollution
US8255627B2 (en) * 2009-10-10 2012-08-28 International Business Machines Corporation Secondary cache for write accumulation and coalescing
US20120331227A1 (en) * 2011-06-21 2012-12-27 Ramakrishna Saripalli Facilitating implementation, at least in part, of at least one cache management policy

Also Published As

Publication number Publication date
GB201219067D0 (en) 2012-12-05
GB2505969B (en) 2014-08-06
US20150286580A1 (en) 2015-10-08
US8688913B2 (en) 2014-04-01
US8719494B2 (en) 2014-05-06
US20130111134A1 (en) 2013-05-02
US20140201448A1 (en) 2014-07-17
US9274975B2 (en) 2016-03-01
GB2505969A (en) 2014-03-19
US9086979B2 (en) 2015-07-21
US20130185512A1 (en) 2013-07-18

Similar Documents

Publication Publication Date Title
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE112012004571B4 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE102013205069B4 (de) Erhöhte effizienz bei inline-deduplizierungen
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE112012001302B4 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE112012004540B4 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen
DE112013002355B4 (de) Steigern von Datenzwischenspeicherungsleistung
DE112012001808B4 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE112013001284T5 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112011101317T5 (de) Optimieren eines Dateisystems für unterschiedliche Typen von Anwendungen in einem Datenverarbeitungs-Cluster unter Verwendung von dynamischer Blockgrössen-Granularität
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
CN102841854A (zh) 根据动态分级存储器缓存认知执行数据读取的方法和系统
DE102013205571B4 (de) Verfahren, Computerprogrammprodukt und Vorrichtung zum Migrieren von Datenträgern mit schlanker Speicherzuweisung in mehrschichtigen Speicherarchitekturen

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

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012020000

Ipc: G06F0012080000

R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final