DE112012004571T5 - Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern - Google Patents

Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern Download PDF

Info

Publication number
DE112012004571T5
DE112012004571T5 DE112012004571.8T DE112012004571T DE112012004571T5 DE 112012004571 T5 DE112012004571 T5 DE 112012004571T5 DE 112012004571 T DE112012004571 T DE 112012004571T DE 112012004571 T5 DE112012004571 T5 DE 112012004571T5
Authority
DE
Germany
Prior art keywords
data
incomplete
cache
data segments
segments
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112012004571.8T
Other languages
English (en)
Other versions
DE112012004571B4 (de
Inventor
Mohan c/o IBM Corp. Gupta Lokesh
c/o IBM Research GmbH Pletka Roman
c/o IBM Research GmbH Haas Robert
Joseph c/o IBM Corp. Kalos Matthew
Allen c/o IBM Corp. Nielsen Karl
Thomas c/o IBM Corp. Benhase Michael
Stavros c/o IBM Rese. GmbH Eleftheriou Evangelos
c/o IBM Research GmbH Koltsidas Ioannis
c/o IBM Research GmbH Hu Xiao-Yu
c/o IBM Corp. Blinick Stephen
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 DE112012004571T5 publication Critical patent/DE112012004571T5/de
Application granted granted Critical
Publication of DE112012004571B4 publication Critical patent/DE112012004571B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0871Allocation or management of cache space
    • 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/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Abstract

Beispielhafte Ausführungsformen von Verfahren, System und Computerprogrammprodukt für ein wirkungsvolleres Verschieben von Spuren in einem sekundären Speicher werden bereitgestellt. Da temporäre Bits mit sequenziellen Bits zum Steuern des zeitlichen Ablaufs zum Verschieben der Spur in einem primären Speicher verwendet werden, werden die temporären Bits und die sequenziellen Bits bei einer Ausführungsform lediglich beispielhaft von dem primären Speicher zum sekundären Speicher übertragen. Es wird zugelassen, dass die temporären Bits in dem sekundären Speicher lagern. Zusätzliche Ausführungsformen von System und Computerprogrammprodukt werden offenbart und stellen zugehörige Vorteile bereit.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich allgemein auf Computer und insbesondere auf Mechanismen zum Unterstützen von unvollständigen Datensegmenten in einer Datenverarbeitungs-Speicherumgebung.
  • Beschreibung des Standes der Technik
  • In der heutigen Gesellschaft sind Computersysteme allgegenwärtig. Auf dem Gebiet der Datenverarbeitung bezeichnet ein „Cache-Speicher” üblicherweise einen kleinen schnellen Arbeitsspeicher oder eine schnelle Speichereinheit, der bzw. die zum Speichern von Daten oder Befehlen verwendet wird, auf die kurz zuvor zugegriffen wurde, häufig zugegriffen wird oder möglicherweise in Kürze zugegriffen wird. Lesen von oder Schreiben in einen Cache-Speicher ist üblicherweise günstiger (in Bezug auf Zugriffszeit und/oder Ressourcennutzung) als Zugreifen auf einen anderen Arbeitsspeicher oder andere Speichereinheiten. Nachdem Daten in einem Cache-Speicher gespeichert wurden, kann auf sie im Cache-Speicher zugegriffen werden, anstatt die Daten neu abzurufen und/oder neu zu berechnen, wodurch sowohl Zeit als auch Ressourcen gespart werden.
  • Cache-Speicher können als Mehrebenen-Cache-Speicher bereitgestellt werden. Ein System zum Zwischenspeichern kann z. B. sowohl einen „primären” als auch einen „sekundären” Cache-Speicher enthalten. Beim Lesen von Daten kann ein Datenverarbeitungssystem oder eine Datenverarbeitungseinheit zuerst nach Daten in dem primären Cache-Speicher suchen und wenn keine Daten vorhanden sind, nach den Daten im sekundären Cache-Speicher suchen. Wenn die Daten in keinem Cache-Speicher vorhanden sind, kann das Datenverarbeitungssystem oder die Datenverarbeitungseinheit die Daten von Plattenlaufwerken oder anderen Speichereinheiten abrufen. Beim Schreiben von Daten kann ein Datenverarbeitungssystem oder eine Datenverarbeitungseinheit Daten in den primären Cache-Speicher schreiben. Diese Daten können schließlich in den sekundären Cache-Speicher oder eine Speichereinheit verschoben werden, um in dem primären Cache-Speicher Platz zu schaffen.
  • Bei Datenverarbeitungssystemen mit Mehrebenen-Cache-Speichern kann ein Schreiben von so genannten „unvollständigen Spuren” oder Datensegmenten, die nicht vollständig gefüllt sind, in einen sekundären Cache-Speicher Probleme bereiten. Speicherplatz in dem sekundären Cache-Speicher kann z. B. vergeudet werden. Bei einem sekundären Cache-Speicher, der als Flash-Arbeitsspeicher oder Flash-Cache-Speicher umgesetzt ist, ist die Realisierung eines Arbeitsspeichers üblicherweise kostenintensiv, und beim Vergeuden von Speicherplatz werden möglicherweise knappe Ressourcen in Anspruch genommen. Außerdem kann ein Zurückgreifen auf die Plattenlaufwerke oder andere primäre Speicher, um die zusätzlichen Daten zu erlangen, damit die „Leerstellen” in den unvollständigen Spuren aufgefüllt werden, zusätzliche Eingabe/Ausgabe-(E/A-)Aktivitäten hervorrufen, wodurch ebenfalls Ressourcen in Anspruch genommen werden und möglicherweise die Leistung herabgesetzt wird.
  • KURZDARSTELLUNG DER BESCHRIEBENEN AUSFÜHRUNGSFORMEN
  • Im Hinblick auf das Vorhergehende besteht ein Bedarf an einem wirkungsvollen Unterstützen von unvollständigen Datensegmenten in einem sekundären Cache-Speicher. Dementsprechend und im Hinblick auf das Vorhergehende werden zahlreiche beispielhafte Ausführungsformen von Verfahren, System und Computerprogrammprodukt zum Unterstützen von unvollständigen Datensegmenten in einer Datenverarbeitungsspeicherumgebung bereitgestellt, die Ebenen des Cache-Speichers mit geringerer und höherer Geschwindigkeit aufweist. Bei einer derartigen Ausführungsform ist lediglich beispielhaft ein Mechanismus zum Verschieben von Daten eingerichtet. Der Mechanismus ist so ausgelegt, dass er ausführt: Zulassen, dass die unvollständigen Datensegmente in der Cache-Speicher-Ebene mit höherer Geschwindigkeit während einer längeren Zeitspanne als wenigstens ein vollständiges Datensegment verbleiben und/oder Umsetzen einer Präferenz zum Verschieben der unvollständigen Datensegmente zu einer Cache-Speicher-Ebene mit geringerer Geschwindigkeit auf der Grundlage einer Anzahl von Leerstellen und/oder einer Daten-Vergleichsmaßzahl, wobei ein erstes der unvollständigen Datensegmente, das eine kleinere Anzahl von Leerstellen und/oder Daten mit höherer Aktualität aufweist, vor einem zweiten der unvollständigen Datensegmente, das eine höhere Anzahl von Leerstellen und/oder Daten mit geringerer Aktualität aufweist, zu der Cache-Speicher-Ebene mit geringerer Geschwindigkeit verschoben wird.
  • Zusätzlich zu der vorhergehenden beispielhaften Ausführungsform werden zahlreiche weitere Ausführungsform von System und Computerprogrammprodukt bereitgestellt und gewährleisten zugehörige Vorteile. Die vorhergehende Zusammenfassung wurde bereitgestellt, um eine Auswahl von Konzepten in einer vereinfachten Form vorzustellen, die nachstehend in der genauen Beschreibung weiter dargestellt werden. Diese Zusammenfassung soll keine Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands identifizieren und soll auch nicht als eine Hilfe verwendet werden, um den Umfang des beanspruchten Gegenstands festzulegen. Der beanspruchte Gegenstand ist nicht auf Umsetzungen beschränkt, die einige oder alle Nachteile beseitigen, die im Hintergrund genannt wurden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Damit die Vorteile der Erfindung leicht verständlich sind, wird eine ausführliche Beschreibung der Erfindung, die oben kurz beschrieben wurde, unter Bezugnahme auf spezielle Ausführungsformen wiedergegeben, die in den angefügten Zeichnungen dargestellt sind. Es ist klar, dass diese Zeichnungen Ausführungsformen der Erfindung darstellen und deshalb nicht so betrachtet werden sollen, dass sie ihren Umfang einschränken, wobei die Erfindung mit zusätzlicher Spezifität und zusätzlichen Einzelheiten durch die Verwendung der beigefügten Zeichnungen beschrieben und erläutert wird, worin:
  • 1 ein Übersichts-Blockschaltplan ist, der ein Beispiel einer Netzwerk- und Datenverarbeitungsumgebung zeigt, bei der eine Vorrichtung und ein Verfahren gemäß der Erfindung umgesetzt werden können;
  • 2 ein Übersichts-Blockschaltplan ist, der ein Beispiel eines Speichersystems zeigt, bei dem eine Vorrichtung und ein Verfahren gemäß der Erfindung umgesetzt werden können;
  • 3 ein Übersichts-Blockschaltplan ist, der eine Ausführungsform eines Mehrebenen-Cache-Speichers gemäß der Erfindung zeigt;
  • 4 ein Übersichts-Blockschaubild ist, das verschiedene Ebenen oder Bereiche zeigt, die in dem sekundären Cache-Speicher umgesetzt werden können;
  • 5 ein Ablaufplan ist, der ein beispielhaftes Verfahren zum wirkungsvollen Unterstützen von unvollständigen Datensegmenten gemäß einer Ausführungsform veranschaulicht;
  • 6 ein Ablaufplan ist, der eine zusätzliche Ausführungsform zum wirkungsvollen Unterstützen von unvollständigen Datensegmenten veranschaulicht;
  • 7 ein Ablaufplan ist, der eine zusätzliche Ausführungsform zum wirkungsvollen Unterstützen von unvollständigen Datensegmenten veranschaulicht; und
  • 8 ein Ablaufplan ist, der eine weitere zusätzliche Ausführungsform zum wirkungsvollen Unterstützen von unvollständigen Datensegmenten veranschaulicht.
  • GENAUE BESCHREIBUNG BESTIMMTER AUSFÜHRUNGSFORMEN
  • Für die Zwecke dieser Offenbarung wird der Ausdruck „sekundärer Cache-Speicher” verwendet, um einen beliebigen Cache-Speicher (darunter z. B. L2- oder L3-Cache-Speicher) zu bezeichnen, der sich zwischen einem primären Cache-Speicher und einer Speichereinheit wie etwa Plattenlaufwerk, Bandlaufwerk oder dergleichen befindet.
  • In 1 ist eine Ausführungsform einer Computer-Netzwerkarchitektur 100 veranschaulicht. Die Architektur 100 ist so dargestellt, dass sie verschiedene Szenarien zum Umsetzen des hier dargestellten Systems zum Zwischenspeichern zeigt. Die Architektur 100 wird lediglich beispielhaft dargestellt und soll nicht einschränkend sein. Stattdessen kann das hier offenbarte System zum Zwischenspeichern bei einer großen Vielfalt von unterschiedlichen Computern, Servern, Speichersystemen und Netzwerkarchitekturen zusätzlich zu der gezeigten Netzwerkarchitektur 100 angewendet werden.
  • Die gezeigte Computer-Netzwerkarchitektur 100 kann einen oder mehrere Computer 102, 106 enthalten, die durch ein Netzwerk 104 untereinander verbunden sind. Für das Netzwerk 104 kommen z. B. ein lokales Netzwerk (LAN) 104, ein Weitverkehrsnetz (WAN) 104, das Internet 104, ein Intranet 104 oder dergleichen infrage. Bei bestimmten Ausführungsformen können zu den Computern 102, 106 sowohl Client-Computer 102 als auch Server-Computer 106 gehören. Client-Computer 102 können im Allgemeinen Kommunikationssitzungen auslösen, wohingegen Server-Computer 102 auf Anforderungen von den Server-Computern 102 warten können. Bei bestimmten Ausführungsformen können die Computer 102 und/oder Server 106 mit einem oder mehreren internen oder externen direkt angeschlossenen Speichersystemen 112 verbunden werden (z. B. Festplattenlaufwerke, Halbleiter-Datenträger, Bandlaufwerke usw.). Diese Computer 102, 106 und direkt angeschlossene Speichereinheiten 112 können unter Verwendung von Protokollen wie ATA, SATA, SCSI, SAS, Fibre Channel oder dergleichen Daten untereinander austauschen. Alle oder einige der Computer 102, 106 können das System zum Zwischenspeichern nutzen, das hier beschrieben ist, um auf Daten der Speichereinheiten 112 zuzugreifen.
  • Die Computer-Netzwerkarchitektur 100 kann bei bestimmten Ausführungsformen ein Speichernetzwerk 108 neben den Servern 106 enthalten wie etwa ein Speicherbereichsnetzwerk (SAN) 108 oder ein LAN 108 (z. B. bei Verwendung einer am Netzwerk angeschlossenen Speichereinrichtung). Dieses Netzwerk 108 kann die Server 106 mit einem oder mehreren Speichersystemen 110 verbinden wie etwa einzelne Festplattenlaufwerke 110a oder Halbleiter-Datenträger 110a, Arrays 110b aus Festplattenlaufwerken oder Halbleiter-Datenträgern, Bandlaufwerke 110c, Bandspeicherbibliotheken 110d, CD-ROM-Bibliotheken oder dergleichen. Wenn es sich bei dem Netzwerk 108 um ein SAN handelt, können die Server 106 und die Speichersysteme 110 unter Verwendung eines Vernetzungs-Standards wie etwa Fibre Channel (FC) Daten untereinander austauschen. Einige oder alle Computer 102, 106 können das System zum Zwischenspeichern nutzen, das hier beschrieben wird, um Daten zu speichern, die von den Speichereinheiten 110 abgerufen werden.
  • In 2 ist eine Ausführungsform eines Speichersystems 110b dargestellt, das ein Array aus Festplattenlaufwerken 204 und/oder Halbleiter-Datenträgern 203 enthält. Die internen Komponenten des Speichersystems 110b sind dargestellt, da das System zum Zwischenspeichern bei bestimmten Ausführungsformen in einem derartigen Speichersystem 110b umgesetzt sein kann, obwohl das System zum Zwischenspeichern auch bei anderen Speichersystemen 110 anwendbar ist. Das gezeigte Speichersystem 110b enthält eine Speichersteuereinheit 200, ein oder mehrere Switches 202 und eine oder mehrere Speichereinheiten 203, 204 wie etwa Festplattenlaufwerke 204 und/oder Halbleiter-Datenträger 203 (wie etwa Datenträger 203 auf der Grundlage von Flash-Speichern). Die Speichersteuereinheit 200 kann es einem oder mehreren Hosts 106 (z. B. Open-System- und/oder Mainframe-Servern 106) ermöglichen, auf Daten in dem einen oder den mehreren Speichereinheiten 203, 204 zuzugreifen.
  • Bei ausgewählten Ausführungsformen enthält die Speichersteuereinheit 200 einen oder mehrere Server 206. Die Speichersteuereinheit 200 kann außerdem Host-Adapter 208 und Einheitenadapter 210 enthalten, um die Speichersteuereinheit 200 mit Host-Einheiten 106 bzw. Speichereinheiten 203, 204 zu verbinden. Mehrere Server 206a, 206b können eine Redundanz schaffen, um sicherzustellen, dass Daten stets für angeschlossene Hosts 106 zur Verfügung stehen. Sollte ein Server 206a ausfallen, kann somit der andere Server 206 funktionsfähig bleiben, um sicherzustellen, dass E/A-Operationen zwischen den Hosts und den Speichereinheiten 203, 204 fortgesetzt werden können. Dieser Prozess kann als „Ausfallsicherung” (failover) bezeichnet werden.
  • Bei einem Beispiel eines Speichersystems 110b, das eine Architektur ähnlich zu der in 2 dargestellten Architektur aufweist, handelt es sich um das IBM® DS8000TM Firmen-Speichersystem. Bei dem DS8000TM handelt es sich um eine leistungsfähige Speichersteuereinrichtung mit hoher Kapazität, die einen Plattenspeicher bereitstellt, der so ausgelegt ist, dass er Dauerbetrieb unterstützt. Die Modelle der DS8000TM-Serien können IBM POWER5TM-Server 206a, 206b verwenden, die bei der IBM Technologie einer Virtualisierungs-Steuerungsroutine integriert sein können. Das hier offenbarte System zum Zwischenspeichern ist trotzdem nicht auf das IBM® DS8000TM Firmen-Speichersystem 110b beschränkt, sondern kann in jedem vergleichbaren oder analogen Speichersystem 110 umgesetzt sein, unabhängig von Hersteller, Produktbezeichnung oder Komponenten oder Komponentenbezeichnungen, die dem System 110 zugehörig sind. Des Weiteren wird angenommen, dass jedes System, das aus einer oder mehreren Ausführungsformen der Erfindung Nutzen ziehen könnte, in den Umfang der Erfindung fällt. Deswegen wird das IBM® DS8000TM lediglich beispielhaft dargestellt und soll nicht einschränkend sein.
  • Bei ausgewählten Ausführungsformen kann jeder Server 206 einen oder mehrere Prozessoren 212 (z. B. symmetrische n-Wege-Prozessoren) und einen Arbeitsspeicher 214 enthalten. Für den Arbeitsspeicher 214 kommen flüchtige Arbeitsspeicher (z. B. RAM) sowie nichtflüchtige Arbeitsspeicher (z. B. ROM, EPROM, EEPROM, Festplatten, Flash-Speicher usw.) infrage. Der flüchtige Arbeitsspeicher und der nichtflüchtige Arbeitsspeicher können bei bestimmten Ausführungsformen Softwaremodule speichern, die in dem (den) Prozessor(en) 212 betrieben und verwendet werden, um auf Daten in den Speichereinheiten 203, 204 zuzugreifen. Die Server 206 können wenigstens eine Instanz dieser Softwaremodule beherbergen. Diese Softwaremodule können alle Lese- und Schreibanforderungen an logische Speicherdatenträger in den Speichereinheiten 203, 204 verwalten.
  • Bei ausgewählten Ausführungsformen kann der Arbeitsspeicher 214 einen Cache-Speicher 218 enthalten. Wenn ein Host 106 (z. B. ein Open-System- oder Mainframe-Server 106) eine Leseoperation ausführt, kann der Server 106, der den Lesevorgang ausführt, Daten von den Speichereinheiten 203, 204 holen und sie für den Fall, dass sie erneut benötigt werden, in seinem Cache-Speicher 218 speichern. Wenn die Daten durch einen Host 106 erneut benötigt werden, kann der Server 206 die Daten von dem Cache-Speicher 218 holen, anstatt sie von den Speichereinheiten 203, 204 zu holen, wodurch Zeit und Ressourcen gespart werden. Wenn ein Host 106 in ähnlicher Weise einen Schreibvorgang ausführt, kann der Server 106, der die Schreibanforderung empfängt, die Schreibdaten in seinem Cache-Speicher 218 speichern und die Schreibdaten zu einem späteren Zeitpunkt zu den Speichereinheiten 203, 204 auslagern. Wenn Schreibdaten im Cache-Speicher 218 gespeichert sind, können die Schreibdaten außerdem in einem nichtflüchtigen Speicher (NVS) 220 des gegenüberliegenden Servers 206 gespeichert werden, so dass die Schreibdaten durch den gegenüberliegenden Server 206 wiederhergestellt werden können, wenn der erste Server 206 ausfällt.
  • Unter allgemeiner weiterer Bezugnahme auf 2 kann in 3 ein Speichersystem 110b wie zuvor erwähnt sowohl Festplattenlaufwerke 204 als auch Halbleiter-Datenträger (SSDs) 203 wie etwa Datenträger 203 auf der Grundlage von Flash-Speichern enthalten. Die Eingabe/Ausgabe-(E/A-)Leistung von SSDs 203 oder anderer Typen des Halbleiter-Arbeitsspeichers ist üblicherweise viel höher als die E/A-Leistung von Festplattenlaufwerken 204. Wegen der höheren E/A-Leistung können die Halbleiter-Datenträger 203 bei bestimmten Ausführungsformen verwendet werden, um einen großen sekundären Cache-Speicher 300 zwischen dem primären Cache-Speicher 218 und den Festplattenlaufwerken 204 bereitzustellen. Der große sekundäre Cache-Speicher 300 kann die E/A-Leistung des Speichersystems 110b erheblich verbessern und kann hier als ein „Flash-Cache-Speicher” bezeichnet werden.
  • Wenn bei Verwendung des sekundären Cache-Speichers 300 eine Leseanforderung durch einen Server 106 empfangen wird, kann der Server 106 anfangs in dem primären Cache-Speicher 218 nach Daten suchen, und wenn die Daten nicht vorhanden sind, in dem sekundären Cache-Speicher 300 (der sich in den Halbleiter-Datenträgern 203 befindet) nach den Daten suchen. Wenn die Daten in keinem Cache-Speicher zur Verfügung stehen, kann der Server 106 die Daten von den Plattenlaufwerken 204 abrufen. Wenn Daten geschrieben werden, kann ein Server 106 in ähnlicher Weise anfangs die modifizierten Daten in den primären Cache-Speicher 218 schreiben. Diese modifizierten Daten können schließlich zu dem sekundären Cache-Speicher 300 verschoben werden, um in dem primären Cache-Speicher 218 Platz zu schaffen. Diese Daten können dann bei Bedarf zu den Plattenlaufwerken 204 verschoben werden, um in dem sekundären Cache-Speicher 300 Platz zur Verfügung zu stellen.
  • Bei bestimmten Ausführungsformen kann der sekundäre Cache-Speicher 300 beispielsweise so dimensioniert sein, dass er etwa ein bis zwanzig Prozent oder bei weiteren Ausführungsformen etwa fünf Prozent der Gesamt-Datenspeicherkapazität des Speichersystems 110b bereitstellt. Somit können für ein Speichersystem 110b, das einen Datenspeicher von etwa zehn Terabyte (TB) (sowohl von den Festplattenlaufwerken 204 als auch den Halbleiter-Datenträgern 203) bereitstellt, etwa 0,5 TB dieses Speicherplatzes als sekundärer Cache-Speicher 300 verwendet werden. Bei einem derartig großen Umfang des sekundären Cache-Speichers 300 besteht die Möglichkeit, dass Daten weit weniger häufig als bei herkömmlichen primären und sekundären Cache-Speichern aus dem sekundären Cache-Speicher 300 verschoben werden. Beispielsweise könnte ein sehr großer sekundärer Cache-Speicher 300 Schreibdaten für einen ganzen Tag speichern, ohne dass er die Schreibdaten zu den Plattenlaufwerken 204 verschieben muss. Die Schreibdaten könnten dann nachts oder während einer Periode relativer Inaktivität verschoben werden. Algorithmen zum Cache-Speicher-Management können neu entwickelt werden, um den zusätzlichen Platz in dem sekundären Cache-Speicher 300 wirkungsvoll zu nutzen und Vorteile aus Leistungsverbesserungen zu ziehen, die unter Verwendung eines großen sekundären Cache-Speichers 300 möglich sind.
  • Wie in 3 gezeigt kann jeder Cache-Speicher 218, 300 Daten 302a, 302b und Metadaten 304a, 304b speichern. Wie aus 4 ersichtlich können die Daten 302a, 302b in Form von Spuren gespeichert werden. Jede Spur in dem sekundären Cache-Speicher 300 kann einen ihr zugehörigen Steuerblock der sekundären Spur (STCB) aufweisen. Der STCB kann hier außerdem als Cache-Speicher-Flash-Steuerblock (CFCB) bezeichnet werden. Gemeinsam mit weiteren Informationen kann der STCB für jede Spur einen Zeiger auf die nächste Spur in der Kette, Informationen, die angeben, ob die Spur frei ist oder verwendet wird, sowie Informationen, die angeben, welche Sektoren in der Spur modifiziert wurden, enthalten. Bei bestimmten Ausführungsformen können die STCBs für sämtliche Spuren in einer STCB-Tabelle 306 gespeichert werden, die in der gezeigten Weise in dem sekundären Cache-Speicher 300 oder an anderer Stelle gespeichert wird.
  • Außerdem kann jede Spur in dem sekundären Cache-Speicher 300 einen ihr zugehörigen Steuerblock des sekundären Stride (SSCB) aufweisen. Der SSCB kann wie der STCB diagnostische und/oder statistische Angaben enthalten, die jedoch Strides (Gruppen von Spuren) betreffen, die in dem sekundären Cache-Speicher 300 gespeichert sind. Der SSCB kann hier auch als Cache-Speicher-Flash-Element (CFE) bezeichnet werden. Bei bestimmten Ausführungsformen können die SSCBs für sämtliche Strides in einer SSCB-Tabelle 308 gespeichert werden, die in der gezeigten Weise in dem sekundären Cache-Speicher 300 oder an anderer Stelle gespeichert wird.
  • Der primäre Cache-Speicher 218 kann in ähnlicher Weise ebenfalls Metadaten 304a speichern, die dem sekundären Cache-Speicher 300 zugehörig sind. Der primäre Cache-Speicher 218 kann z. B. eine Indextabelle des sekundären Cache-Speichers (SCIT) 308 speichern, die ein Verzeichnis für Spuren in dem sekundären Cache-Speicher 300 bereitstellt. Bei bestimmten Ausführungsformen handelt es sich bei der SCIT 308 im Wesentlichen um eine Hash-Wert-Tabelle mit einer konstanten Hash-Funktion. Um eine spezielle Spur in der SCIT 308 zu lokalisieren, kann die Hash-Funktion eine Spurkennung (z. B. eine Spurnummer) in einen Hash-Wert umsetzen. Nach diesem Hash-Wert kann dann in der SCIT 308 gesucht werden, um den STCB für die Spur zu finden. Alternativ könnte die SCIT 308 in einem Cache-Speicher-Verzeichnis des primären Cache-Speichers 218 vorhanden sein, wodurch eine einzige Hash-Wert-Tabelle bereitgestellt wird, die Spuren sowohl für den primären als auch den sekundären Cache-Speicher 218, 300 speichert. Bei ausgewählten Ausführungsformen wird die SCIT 308 ausschließlich in dem primären Cache-Speicher 218 geführt. Die SCIT 308 kann (bei einem Failover, Failback oder anfänglichen Laden von Mikrocode (IML)) durch Lesen der STCB-Tabelle 306 in dem sekundären Cache-Speicher 300 gebildet oder neu gebildet werden.
  • Bei bestimmten Ausführungsformen kann der primäre Cache-Speicher 218 außerdem eine Liste freier Spuren (LOFT) 310 speichern, die angibt, welche Spuren in dem sekundären Cache-Speicher 300 frei (d. h. nicht gelegt) sind. Diese Liste 310 kann verwendet werden, um freien Platz in dem sekundären Cache-Speicher 300 zu lokalisieren, um Daten von dem primären Cache-Speicher 218 zu dem sekundären Cache-Speicher 300 zu verschieben. Bei ausgewählten Ausführungsformen kann ein Einfügen oder Entfernen von Spuren von der LOFT 310 in einer mittels Protokoll strukturierten Weise ausgeführt werden. Spuren können beispielsweise am Ende der LOFT 310 eingefügt und vom Anfang der LOFT 310 gelöscht werden. Die LOFT 310 kann ausschließlich in dem primären Cache-Speicher 218 geführt werden und kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cache-Speicher 300 gebildet oder neu gebildet werden.
  • Der primäre Cache-Speicher 218 kann außerdem einen sortierten Baum von Spuren (DTOT) 312 speichern, bei dem die Spuren durch „trackid” oder eine andere Angabe sortiert sind. Die STOT 312 kann verwendet werden, um eine Suchdauer (auf den Plattenlaufwerken 204) auf ein Mindestmaß zu begrenzen, wenn Spuren von dem sekundären Cache-Speicher 300 zu den Plattenlaufwerken 204 verschoben werden. Die STOT 312 kann ausschließlich in dem primären Cache-Speicher 218 geführt werden und kann durch Lesen der STCB-Tabelle 306 in dem sekundären Cache-Speicher 300 gebildet oder neu gebildet werden.
  • Der primäre Cache-Speicher 218 kann außerdem statistische Angaben pro Stride-Element (STATS) 314 für jedes Stride-Element speichern, das in dem sekundären Cache-Speicher 300 eine oder mehrere Spuren aufweist. Ein „Stride-Element” bezeichnet eine Gruppe von logisch aufeinanderfolgenden Datenelementen, die möglicherweise über mehrere Platten segmentiert sind, verknüpft mit zusätzlichen Paritätsangaben, die beispielsweise bei einer RAID5-Konfiguration (Redundant Array of Inexpensive Disks) verwendet werden. Die STATS 314 können im Allgemeinen verwendet werden, um zu ermitteln, welche Spuren die geringste Anzahl von Plattenoperationen („disk ops”) zum Verschieben von dem sekundären Cache-Speicher 300 zu den Plattenlaufwerken 204 benötigen. Im Allgemeinen ist der Nachteil beim Verschieben einer Spur geringer, wenn in einem Stride-Element eine größere Anzahl von Spuren vorhanden ist. Wenn Spuren zum Verschieben ausgewählt werden, können Spuren, die die geringste Anzahl von Plattenoperationen (disk ops) erfordern, zuerst verschoben werden, um die Ressourcennutzung auf ein Mindestmaß zu begrenzen. Bei ausgewählten Ausführungsformen können die STATS 314 Angaben speichern wie etwa die Anzahl von Spuren, die in dem sekundären Cache-Speicher 300 für jedes Stride-Element vorhanden sind, und die Anzahl von Plattenoperationen (disk ops), die erforderlich sind, um eine Spur in ein Stride-Element zu verschieben. Bei bestimmten Ausführungsformen können die STATS 314 ein „Aktualitäts”-Bit für jedes Stride-Element speichern. Das Aktualitätsbit kann immer dann gesetzt werden, wenn ein Ausweisungsprozess durch ein Stride-Element verläuft. Das Aktualitätsbit kann immer dann zurückgesetzt werden, wenn eine Spur einem Stride-Element hinzugefügt wird. Das Aktualitätsbit kann verwendet werden, um Stride-Elemente in dem sekundären Cache-Speicher 300 zu halten, auf die aktiv geschrieben wird. Die STATS 314 können ausschließlich in dem primären Cache-Speicher 218 geführt werden und können durch Lesen der STCB-Tabelle 306 in dem sekundären Cache-Speicher 300 gebildet oder neu gebildet werden.
  • Die oben beschriebenen Metadaten 304a, 304b können auf zahlreiche verschiedene Arten strukturiert und gespeichert werden und sind nicht auf die dargestellte Struktur und Organisation beschränkt. Die Metadaten 304a, 304b werden beispielhaft bereitgestellt, um eine Technik zum Speichern und Strukturieren der Metadaten 304a, 304b zu zeigen. Bei bestimmten Ausführungsformen können die Daten und die Metadaten beispielsweise gemeinsam in dem sekundären Cache-Speicher 300 in einem kreisförmigen, mittels Protokoll strukturierten Array gespeichert werden. Weitere Verfahren zum Strukturieren und Speichern von Metadaten 304a, 304b können verwendet werden und sind in dem Umfang der Erfindung eingeschlossen.
  • Wie zuvor erwähnt besteht ein Vorteil eines großen sekundären Cache-Speichers 300 darin, dass Daten von dem sekundären Cache-Speicher 300 weit weniger häufig als bei herkömmlichen sekundären Cache-Speichern verschoben werden können. Dadurch besteht die Möglichkeit, dass mehr Daten in dem sekundären Cache-Speicher 300 angesammelt werden, bevor sie zu den Plattenlaufwerken 204 verschoben werden. Dementsprechend können bei ausgewählten Ausführungsformen eine Vorrichtung und ein Verfahren gemäß der Erfindung so eingerichtet werden, dass sie abwarten, bis volle Stride-Elemente von Daten in dem sekundären Cache-Speicher 300 akkumuliert und zusammengefügt werden, bevor die Daten zu den Plattenlaufwerken 204 verschoben werden. Wie oben erläutert kann dadurch die Anzahl von Plattenoperationen (disk ops) auf ein Mindestmaß begrenzt werden, die erforderlich sind, um Daten von dem sekundären Cache-Speicher 300 zu den Plattenlaufwerken 204 zu verschieben, wodurch die Gesamtsystemleistung verbessert wird.
  • In 4 können bei bestimmten Ausführungsformen Verschiebungen aus dem sekundären Cache-Speicher 300 auf der Grundlage eines Belegungsgrads ausgeführt werden. Es können beispielsweise drei Bereiche in dem sekundären Cache-Speicher 300 definiert werden: (1) Ruhezustand; (2) Auslöser; und (3) hohe Priorität. Wenn der Belegungsgrad des sekundären Cache-Speichers 300 im Bereich Ruhezustand ist (der sekundäre Cache-Speicher 300 ist z. B. zwischen null und fünfzig Prozent gefüllt), werden möglicherweise keine Daten aus dem Cache-Speicher 300 verschoben. Wenn in ähnlicher Weise der Belegungsgrad des Cache-Speichers in dem Bereich Auslöser liegt (der sekundäre Cache-Speicher 300 ist z. B. zwischen fünfzig und siebzig Prozent gefüllt), können Cache-Speicher-Verschiebungen in einer normalen Betriebsart ausgeführt werden, bis der Belegungsgrad des Cache-Speichers in dem Bereich Ruhezustand liegt. Wenn in ähnlicher Weise der Belegungsgrad des Cache-Speichers in dem Bereich hohe Priorität liegt (der sekundäre Cache-Speicher 300 ist z. B. mehr als siebzig Prozent gefüllt), können Cache-Speicher-Verschiebungen in einer Betriebsart mit hoher Priorität ausgeführt werden, bis der Belegungsgrad des Cache-Speichers wieder im Bereich Ruhezustand liegt. Die numerischen Bereiche, die oben bereitgestellt wurden, werden lediglich beispielhaft dargestellt und sollen nicht einschränkend sein. Unabhängig von der Verschiebungs-Betriebsart kann der Verschiebungsprozess Spuren verschieben, die die geringste Anzahl von Plattenoperationen zum Verschieben benötigen.
  • Wie oben erwähnt können Probleme infolge des Schreibens von teilweise gefüllten (unvollständigen) Datensegmenten in den sekundären Cache-Speicher, einschließlich des Verschwendens von wertvollem Speicherplatz und des Auftretens zusätzlicher E/A-Operationen entstehen. Die Mechanismen der vorliegenden Erfindung dienen dazu, diese Probleme durch Umsetzen von zahlreichen Strategien für ein wirksameres Unterstützen von unvollständigen Datensegmenten in dem sekundären Cache-Speicher zu lösen. Zu diesen Strategien gehören die folgenden möglichen Umsetzungen, die weiter beschrieben werden. Bei einer ersten Ausführungsform werden die unvollständigen Datensegmente oder Spuren als vollständige Spuren (mit Leerstellen oder fehlenden Daten) in den sekundären Cache-Speicher geschrieben. Bei einer zweiten Ausführungsform werden die unvollständigen Spuren in ein oder mehreren Cache-Speicher-Flash-Elemente (CFEs) dicht gepackt. Bei einer dritten möglichen Ausführungsform werden verschiedene Abschnitte oder Datenseiten der Spuren über Segmente des sekundären Cache-Speichers verstreut, wenn Speicherplatz lokalisiert wird.
  • Zunächst in 5 ist ein erstes beispielhaftes Verfahren zum Unterstützen von unvollständigen Datensegmenten in einem sekundären Cache-Speicher (Flash-Cache-Speicher) in einer Datenverarbeitungsumgebung mit zwei Ebenen des Cache-Speichers mit geringerer und höherer Geschwindigkeit dargestellt. Bei der dargestellten Ausführungsform ist der sekundäre Cache-Speicher als die Cache-Speicher-Ebene mit geringerer Geschwindigkeit dargestellt, und der Cache-Speicher mit höherer Geschwindigkeit kann wie in einer vorhergehenden beispielhaften Darstellung in der Speichersteuereinheit als DRAM-Cache-Speicher umgesetzt sein. Ein Verfahren 500 beginnt (Schritt 502), wenn ein Mechanismus zum Verschieben von Daten eingerichtet wird. Der Mechanismus zum Verschieben von Daten ist so ausgelegt, dass er zuerst ermöglicht, dass unvollständige Datensegmente länger in der höheren Ebene des Cache-Speichers bleiben als vollständige Datensegmente (Schritt 504). Mit anderen Worten, der Mechanismus zum Verschieben von Daten sieht Operationen bei einer integrierten Bevorzugung des Verschiebens von vollständigen Datensegmenten zu dem Flash-Cache-Speicher gegenüber den unvollständigen Datensegmenten in der Hoffnung vor, dass die Leerstellen in den unvollständigen Datensegmenten gefüllt werden.
  • Der Mechanismus zum Verschieben von Daten ist ferner so ausgelegt, dass er eine Bevorzugung der Datenverschiebung der unvollständigen Datensegmente zu dem Cache-Speicher mit geringerer Geschwindigkeit (wiederum z. B. ein Flash-Cache-Speicher) anhand von verschiedenen Maßzahlen umsetzt. Bei zwei möglichen derartigen Maßzahlen handelt es sich um die Anzahl von Leerstellen und die „Aktualität” von Daten oder eine Daten-Vergleichsmaßzahl (Schritt 506). Diese Maßzahlen werden in einer folgenden beispielhaften Situation weiter beschrieben. Eine Zielsetzung der zuvor beschriebenen Bevorzugung einer Datenverschiebung besteht darin, einen größeren Platz in dem schnelleren Cache-Speicher bei einer nachfolgenden Verschiebungsoperation freizugeben (wobei eine größere Anzahl von Daten verschoben wird) und sie zu einem einzigen Schreibvorgang in den sekundären langsameren Cache-Speicher zu verschmelzen. Das Verfahren 500 wird dann beendet (Schritt 508).
  • Wie zuvor beschrieben werden bei einer möglichen Ausführungsform des Mechanismus zum Verlagern von Daten, der oben in 5 dargestellt ist, die unvollständigen Datensegmente über Abschnitte des sekundären Cache-Speichers geschrieben, wenn Speicherplatz zur Verfügung steht. Um die verstreuten Daten zu lokalisieren, können Zeiger in dem Cache-Speicher-Flash-Steuerblock (wiederum CFCB) benutzt werden. Die folgende 6 veranschaulicht einen derartigen Mechanismus, der durch ein Verfahren 600 gezeigt ist, das beginnt (Schritt 602), indem Speicherseiten einer Spur über einen Flash-Cache-Speicher verteilt werden, wenn Speicherplatz zur Verfügung steht, wobei diese Speicherseiten unter Verwendung von Zeigern in einem oder mehreren CFCBs lokalisiert werden (Schritt 604). Das Verfahren 600 wird dann beendet. Zu Vorteilen der vorhergehenden Ausführungsform gehören ein Verringern und/oder Beseitigen von wertvollem Speicherplatz in dem sekundären Cache-Speicher und dass keine zusätzlichen E/A-Operationen benötigt werden.
  • Eine zusätzliche mögliche Umsetzung eines Mechanismus zum Verlagern von Daten beinhaltet das Schreiben der unvollständigen Spur(en) als vollständige Spuren (mit den Daten-Leerstellen) in den sekundären Cache-Speicher in Abhängigkeit von verschiedenen Faktoren. Die folgende 7 veranschaulicht einen derartigen Mechanismus zum Verlagern von Daten, der als Verfahren 700 ausgeführt ist. Das Verfahren 700 beginnt (Schritt 702) mit dem Ermitteln, ob das fragliche Datensegment eine unvollständige Spur ist (Schritt 704). Wenn das nicht der Fall ist, geht das Verfahren 700 zum Schritt 705, in dem die vollständige Spur in den Flash-Cache-Speicher geschrieben wird. Das Verfahren 700 wird dann beendet (Schritt 716). Das Verfahren 700 fragt ab, ob die unvollständige Spur eine „aktuellere” Daten-Vergleichsmaßzahl aufweist (mit anderen Worten, die Daten werden im Vergleich mit anderen Daten häufiger verwendet). Wenn das der Fall ist, geht das Verfahren 700 zum Schritt 708, in dem das Verfahren 700 abfragt, ob das fragliche unvollständige Datensegmente weniger als eine im Voraus festgelegte Anzahl „N” von Leerstellen aufweist. Wenn das der Fall ist, geht das Verfahren zum Schritt 710, in dem das unvollständige Datensegment in den sekundären Cache-Speicher geschrieben wird (Schritt 710). Bei einer alternativen Ausführungsform kann in ähnlicher Weise der Umfang der Leerstelle(n) bei einer Entscheidung, das unvollständige Datensegment zu schreiben, gewichtet werden.
  • Wenn das Datensegment im Schritt 706 keine aktuellere Daten-Vergleichsmaßzahl aufweist und nicht weniger als N Leerstellen vorhanden sind, geht das Verfahren 700 zum Schritt 712, in dem das unvollständige Datensegment verworfen wird. Das Verfahren 700 wird dann beendet (wiederum Schritt 716). Im Schritt 710 und wie bei einer optionalen Ausführungsform umgesetzt sein kann, geht das Verfahren 700 dann zu dem Sicherungsspeicher zurück, um die fehlenden Abschnitte des unvollständigen Datensegments zu lesen und einzufügen (Schritt 714). Das Verfahren wird dann beendet (wieder Schritt 716). Das Verwenden der vorhergehenden beispielhaften Mechanismen, die in 7 dargestellt sind, ermöglicht, dass die unvollständigen Datensegmente länger in der schnelleren Cache-Speicher-Ebene (z. B. DRAM-Cache-Speicher) bleiben als vollständige Datensegmente. Einem Fachmann ist klar, dass die im Voraus festgelegte Anzahl N und/oder der Umfang der Leerstelle(n) gemäß einer besonderen Ausführungsform variiert werden können.
  • Eine zusätzliche mögliche Ausführungsform zum Umsetzen eines Mechanismus zum Verlagern von Daten gemäß der zuvor in 5 gezeigten Darstellung beinhaltet wie oben beschrieben dichtes Packen der unvollständigen Datensegmente in ein oder mehrere Cache-Speicher-Flash-Elemente (CFEs). In 8 ist ein beispielhaftes Verfahren 800 zum Ausführen einer derartigen Operation dargestellt und beginnt (Schritt 802) mit dem dichten Packen der unvollständigen Spuren (d. h. dem Entfernen von dazwischenliegenden Leerstellen) in die CFE(s) (Schritt 804). Bei einem nachfolgenden Schritt können die CFEs anschließend einer dynamischen Speicherbereinigung unterzogen werden (Schritt 806). Mit anderen Worten, Abschnitte von Daten in einem oder mehreren CFEs können nach dem Schritt des Packens als Ausschussdaten gekennzeichnet und zurückgewonnen werden. Das Verfahren 800 wird dann beendet (Schritt 808). Da möglicherweise zusätzlicher Speicherplatz des sekundären Cache-Speichers benötigt wird, um Mechanismen zum Sammeln von Ausschussdaten umzusetzen, kann bei weiteren Ausführungsformen ein alternativer Mechanismus umgesetzt werden, der die Datensegmente aus den CFEs nicht zurückgewinnt. Mit anderen Worten, sämtliche zugehörige Datensegmente werden möglicherweise auf einmal ausgelagert.
  • Einem Fachmann ist klar, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden können. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform, die Software- und Hardware-Aspekte kombiniert, annehmen, die hier alle 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, die computerlesbaren Programmcode aufweisen, der darin ausgeführt wird.
  • Jede Kombination aus einem oder mehreren nichtflüchtigen computerlesbaren Medien kann genutzt werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Speichermedium oder ein computerlesbares Signalmedium handeln. Ein computerlesbares Speichermedium kann z. B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede geeignete Kombination des Vorhergehenden sein, ist jedoch nicht darauf beschränkt. Zu spezifischeren Beispielen (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums würde Folgendes gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compactdisk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorhergehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung enthalten oder speichern kann.
  • Programmcode, der auf einem computerlesbaren Medium verkörpert ist, kann unter Verwendung jedes geeigneten Mediums übertragen werden, darunter drahtlose, leitungsgestützte, Lichtwellenleiterkabel-, HF-Medien, usw. oder jede geeignete Kombination aus dem Vorhergehenden, ohne darauf beschränkt zu sein. Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache ”C” oder ähnliche Programmiersprachen. Der Programmcode kann nur auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als ein eigenständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder nur auf dem fernen Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der ferne Computer mit dem Computer des Benutzers durch jeden Netzwerktyp verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer (z. B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
  • Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch Computerprogrammbefehle implementiert werden können. Diese Computerprogrammbefehle können an einen Prozessor eines Universalcomputers, eines Spezialcomputers oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds spezifiziert sind, erzeugen.
  • Diese Computerprogrammbefehle können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand produzieren, zu dem Befehle gehören, die die Funktion/Wirkung umsetzen, die in dem Block/den Blöcken des Ablaufplans und/oder Blockschaubilds spezifiziert sind. Computerprogrammbefehle können außerdem in einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden, um eine Reihe von Operationsschritten zu bewirken, die auf dem Computer, der anderen programmierbaren Datenverarbeitungsvorrichtung oder anderen Einheiten ausgeführt werden sollen, um einen durch einen Computer implementierten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaubilds spezifiziert sind, bereitzustellen.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Operation von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder Blockschaubildern ein Modul, Segment oder Abschnitt von Code repräsentieren, der einen oder mehrere ausführbare Befehle zum Umsetzen der spezifizierten logischen Funktion(en) umfasst. Es sollte außerdem angemerkt werden, dass bei einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen nicht in der in den Figuren angegebenen Reihenfolge auftreten. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können gelegentlich in Abhängigkeit von der beteiligten Funktionalität in der umgekehrten Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block in den Blockschaubildern und/oder Ablaufplan-Darstellungen und Kombinationen von Blöcken in den Blockschaubildern und/oder Ablaufplan-Darstellung durch Systeme, die auf spezieller Hardware beruhen, die die spezifizierten Funktionen oder Wirkungen ausführen, oder Kombinationen aus spezieller Hardware und Computerbefehlen umgesetzt werden können.
  • Zwar wurden eine oder mehrere Ausführungsformen der vorliegenden Erfindung genau beschrieben, einem Fachmann ist jedoch klar, dass Modifikationen und Anpassungen an diesen Ausführungsformen ausgeführt werden können, ohne vom Umfang der Erfindung abzuweichen, die in den nachfolgenden Ansprüchen dargestellt ist.

Claims (24)

  1. Verfahren zum Unterstützen von unvollständigen Datensegmenten in einer Datenverarbeitungsspeicherumgebung mit langsameren und schnelleren Geschwindigkeitsebenen des Cache-Speichers durch einen Prozessor, wobei das Verfahren aufweist: Einrichten eines Mechanismus zum Verlagern von Daten, der so ausgelegt ist, dass er ausführt: Zulassen, dass die unvollständigen Datensegmente in der schnelleren Cache-Speicher-Ebene für eine längere Zeitdauer bleiben als wenigstens ein vollständiges Datensegmente und/oder Umsetzen einer Bevorzugung der Verlagerung der unvollständigen Datensegmente zu der langsameren Cache-Speicher-Ebene auf der Grundlage einer Anzahl von Leerstellen und/oder einer Daten-Vergleichsmaßzahl, wobei ein erstes der unvollständigen Datensegmente, das eine kleinere Anzahl von Leerstellen und/oder eine aktuellere Daten-Vergleichsmaßzahl aufweist, vor einem zweiten der unvollständigen Datensegmente, das eine größere Anzahl von Leerstellen und/oder eine weniger aktuelle Daten-Vergleichsmaßzahl aufweist, zu der langsameren Cache-Speicher-Ebene verlagert wird.
  2. Verfahren nach Anspruch 1, das ferner dem Einrichten des Mechanismus zum Verlagern von Daten nachfolgend ein Schreiben eines der unvollständigen Datensegmente in die langsamere Cache-Speicher-Ebene als ein vollständiges Datensegment aufweist.
  3. Verfahren nach Anspruch 1, das ferner dem Einrichten des Mechanismus zum Verlagern von Daten nachfolgend ein dichtes Packen eines der unvollständigen Datensegmente in ein Cache-Flash-Element (CFE) aufweist.
  4. Verfahren nach Anspruch 1, das ferner ein Schreiben von feststehenden Abschnitten der unvollständigen Datensegmente in Abschnitte des langsameren Cache-Speichers aufweist, die einer zugehörigen Speichereinheit entsprechen, wobei die feststehenden Abschnitte unter Verwendung von Zeigern in einem angeschlossenen Cache-Flash-Steuerblock (CFCB) lokalisiert werden.
  5. Verfahren nach Anspruch 2, das ferner ein Verwerfen des ersten der unvollständigen Datensegmente aufweist, wenn das erste der unvollständigen Datensegmente eine aktuellere Daten-Vergleichsmaßzahl und mehr als eine im Voraus festgelegte Anzahl von Leerstellen aufweist.
  6. Verfahren nach Anspruch 2, das ferner ein Lesen von Daten von einem Sicherungsspeicher aufweist, die fehlenden Daten bei einem der unvollständigen Datensegmente entsprechen, um die fehlenden Daten in die Lesedaten einzufügen.
  7. Verfahren nach Anspruch 6, wobei eine Entscheidung zum Lesen und Einfügen der Daten auf der Grundlage der Anzahl von Leerstellen und/oder der Daten-Vergleichsmaßzahl und/oder einer Größe einer der Leerstellen erfolgt.
  8. Verfahren nach Anspruch 3, das ferner dem dichten Packen eines der unvollständigen Datensegmente nachfolgend aufweist: dynamische Speicherbereinigung des CFE und/oder Verzichten auf ein Zurückgewinnen von Daten aus dem CFE.
  9. System zum Unterstützen von unvollständigen Datensegmenten in einer Datenverarbeitungsspeicherumgebung mit langsameren und schnelleren Ebenen des Cache-Speichers, wobei das System aufweist: einen Prozessor, der in der Datenverarbeitungsspeicherumgebung funktionsfähig ist, wobei der Prozessor ausgelegt ist zum: Einrichten eines Mechanismus zum Verlagern von Daten, der ausgelegt ist, um auszuführen: Zulassen, dass die unvollständigen Datensegmente in der schnelleren Cache-Speicher-Ebene für eine längere Zeitdauer bleiben als wenigstens ein vollständiges Datensegment und/oder Umsetzen einer Unterstützung der Verlagerung der unvollständigen Datensegmente zu der langsameren Cache-Speicher-Ebene auf der Grundlage einer Anzahl von Leerstellen und/oder einer Daten-Vergleichsmaßzahl, wobei ein erstes der unvollständigen Datensegmente, das eine kleinere Anzahl von Leerstellen und/oder eine aktuellere Daten-Vergleichsmaßzahl aufweist, vor einem zweiten der unvollständigen Datensegmente, das eine größere Anzahl von Leerstellen und/oder eine weniger aktuelle Daten-Vergleichsmaßzahl aufweist, zu der langsameren Cache-Speicher-Ebene verlagert wird.
  10. System nach Anspruch 9, wobei der Prozessor ferner so ausgelegt ist, dass er dem Einrichten eines Mechanismus zum Verlagern von Daten nachfolgend eines der unvollständigen Datensegmente als ein vollständiges Datensegment in die langsamere Cache-Speicher-Ebene schreibt.
  11. System nach Anspruch 9, wobei der Prozessor ferner so ausgelegt ist, dass er dem Einrichten eines Mechanismus zum Verlagern von Daten nachfolgend eines der unvollständigen Datensegmente in ein Cache-Flash-Element (CFE) dicht packt.
  12. System nach Anspruch 9, wobei der Prozessor ferner so ausgelegt ist, dass er festgelegte Abschnitte des unvollständigen Datensegments in Abschnitte des langsameren Cache-Speichers schreibt, der einer zugehörigen Speichereinheit zugehörig ist, wobei die festgelegten Abschnitte unter Verwendung von Zeigern in einem angeschlossenen Cache-Flash-Steuerblock (CFCB) lokalisiert werden.
  13. System nach Anspruch 10, wobei der Prozessor ferner so ausgelegt ist, dass er das erste der unvollständigen Datensegmente verwirft, wenn das erste der unvollständigen Datensegmente einen aktuelleren Daten-Vergleichswert und mehr als eine im Voraus festgelegte Anzahl von Leerstellen aufweist.
  14. System nach Anspruch 10, wobei der Prozessor ferner so ausgelegt ist, dass er von einem Sicherungsspeicher Daten liest, die fehlenden Daten von einem der unvollständigen Datensegmente entsprechen, um die fehlenden Daten in die Lesedaten einzufügen.
  15. System nach Anspruch 14, wobei eine Entscheidung zum Ausführen des Lesens und des Einfügens der Daten auf der Grundlage der Anzahl von Leerstellen und/oder der Daten-Vergleichsmaßzahl und/oder einer Größe von wenigstens einer der Leerstellen erfolgt.
  16. System nach Anspruch 11, wobei der Prozessor ferner so ausgelegt ist, dass er nach dem dichten Packen eines der unvollständigen Datensegmente auszuführt: dynamisches Speicherbereinigen des CFE, und Verzichten auf Zurückgewinnen von Daten aus dem CFE.
  17. Computerprogrammprodukt zum Unterstützen von unvollständigen Datensegmenten in einer Datenverarbeitungsspeicherumgebung mit langsameren und schnelleren Cache-Speicher-Ebenen durch einen Prozessor, wobei das Computerprogrammprodukt ein nichtflüchtiges computerlesbares Speichermedium mit darin gespeicherten computerlesbaren Programmcodeabschnitten aufweist, wobei die computerlesbaren Programmcodeabschnitte aufweisen: einen ersten ausführbaren Abschnitt zum Einrichten eines Mechanismus zum Verlagern von Daten, der so ausgelegt ist, dass er ausführt: Zulassen, dass die unvollständigen Datensegmente in der schnelleren Cache-Speicher-Ebene für eine längere Zeitdauer bleiben als wenigstens ein vollständiges Datensegment und/oder Umsetzen einer Bevorzugung der Verlagerung der unvollständigen Datensegmente zu der langsameren Cache-Speicher-Ebene auf der Grundlage einer Anzahl von Leerstellen und/oder einer Daten-Vergleichsmaßzahl, wobei ein erstes der unvollständigen Datensegmente, das eine kleinere Anzahl von Leerstellen und/oder eine aktuellere Daten-Vergleichsmaßzahl aufweist, vor einem zweiten der unvollständigen Datensegmente, das eine größere Anzahl von Leerstellen und/oder eine weniger aktuelle Daten-Vergleichsmaßzahl aufweist, zu der langsameren Cache-Speicher-Ebene verlagert wird.
  18. Computerprogrammprodukt nach Anspruch 17, das ferner einen zweiten ausführbaren Abschnitt enthält, um nach dem Einrichten des Mechanismus zum Verlagern von Daten eines der unvollständigen Datensegmente in die langsamere Cache-Speicher-Ebene als ein vollständiges Datensegment zu schreiben.
  19. Computerprogrammprodukt nach Anspruch 17, das ferner einen zweiten ausführbaren Abschnitt enthält, um nach dem Einrichten des Mechanismus zum Verlagern von Daten eines der unvollständigen Datensegmente in ein Cache-Flash-Element (CFE) dicht zu packen.
  20. Computerprogrammprodukt nach Anspruch 17, das ferner einen zweiten ausführbaren Abschnitt enthält, um feststehende Abschnitte des unvollständigen Datensegments in Abschnitte des langsameren Cache-Speichers zu schreiben, der einer zugehörigen Speichereinheit entspricht, wobei die feststehenden Abschnitte unter Verwendung von Zeigern in einem angeschlossenen Cache-Flash-Steuerblock (CFCB) lokalisiert werden.
  21. Computerprogrammprodukt nach Anspruch 18, das ferner einen dritten ausführbaren Abschnitt enthält, um das erste der unvollständigen Datensegmente zu verwerfen, wenn das erste der unvollständigen Datensegmente eine aktuellere Daten-Vergleichsmaßzahl und mehr als eine im Voraus festgelegte Anzahl von Leerstellen aufweist.
  22. Computerprogrammprodukt nach Anspruch 18, das ferner einen dritten ausführbaren Abschnitt enthält, um Daten von einem Sicherungsspeicher zu lesen, die fehlenden Daten von einem der unvollständigen Datensegmente entsprechen, um die fehlenden Daten in die Lesedaten einzufügen.
  23. Computerprogrammprodukt nach Anspruch 22, wobei eine Entscheidung zum Ausführen des Lesens und des Einfügens der Daten auf der Grundlage der Anzahl von Leerstellen und/oder der Daten-Vergleichsmaßzahl und/oder einer Größe von wenigstens einer der Leerstellen erfolgt.
  24. Computerprogrammprodukt nach Anspruch 19, das ferner einen dritten ausführbaren Abschnitt enthält, um nach dem dichten Packen des einen der unvollständigen Datensegmente auszuführen: dynamisches Speicherbereinigen des CFE oder Verzichten auf Zurückgewinnen von Daten aus dem CFE.
DE112012004571.8T 2011-11-01 2012-08-30 Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern Active DE112012004571B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/286,465 2011-11-01
USUS-13/286,465 2011-11-01
US13/286,465 US8688914B2 (en) 2011-11-01 2011-11-01 Promotion of partial data segments in flash cache
PCT/IB2012/054460 WO2013064917A1 (en) 2011-11-01 2012-08-30 Promotion of partial data segments in flash cache

Publications (2)

Publication Number Publication Date
DE112012004571T5 true DE112012004571T5 (de) 2014-07-24
DE112012004571B4 DE112012004571B4 (de) 2022-12-29

Family

ID=48173632

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012004571.8T Active DE112012004571B4 (de) 2011-11-01 2012-08-30 Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern

Country Status (5)

Country Link
US (4) US8688914B2 (de)
CN (1) CN103907096B (de)
DE (1) DE112012004571B4 (de)
GB (1) GB2509289B (de)
WO (1) WO2013064917A1 (de)

Families Citing this family (15)

* 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
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
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
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
GB2519549A (en) * 2013-10-24 2015-04-29 Ibm Write cache destaging
US9940344B2 (en) * 2013-12-18 2018-04-10 Red Hat, Inc. Fractal approach for probabilistic flow cache maintenance
US9361032B2 (en) 2014-05-14 2016-06-07 International Business Machines Corporation Management of server cache storage space
US9710185B2 (en) 2014-07-10 2017-07-18 Samsung Electronics Co., Ltd. Computing system with partial data computing and method of operation thereof
TWI522805B (zh) * 2015-06-18 2016-02-21 群暉科技股份有限公司 用來於一儲存系統中進行快取管理之方法與裝置
CN106469020B (zh) * 2015-08-19 2019-08-09 旺宏电子股份有限公司 高速缓存元件与控制方法及其应用系统
US10095628B2 (en) 2015-09-29 2018-10-09 International Business Machines Corporation Considering a density of tracks to destage in groups of tracks to select groups of tracks to destage
US10241918B2 (en) 2015-09-29 2019-03-26 International Business Machines Corporation Considering a frequency of access to groups of tracks to select groups of tracks to destage
US10120811B2 (en) 2015-09-29 2018-11-06 International Business Machines Corporation Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage
US9940250B2 (en) * 2015-11-09 2018-04-10 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for writes to storage write cache

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6651145B1 (en) 2000-09-29 2003-11-18 Intel Corporation Method and apparatus for scalable disambiguated coherence in shared storage hierarchies
US7136967B2 (en) 2003-12-09 2006-11-14 International Business Machinces Corporation Multi-level cache having overlapping congruence groups of associativity sets in different cache levels
US7930422B2 (en) 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
US7380047B2 (en) * 2004-09-30 2008-05-27 International Business Machines Corporation Apparatus and method for filtering unused sub-blocks in cache memories
US20060248547A1 (en) 2005-04-14 2006-11-02 International Business Machines Corporation Multi-level cache apparatus and method for enhanced remote invocation performance
US8627002B2 (en) 2006-10-12 2014-01-07 International Business Machines Corporation Method to increase performance of non-contiguously written sectors
US9176883B2 (en) 2009-04-30 2015-11-03 HGST Netherlands B.V. Storage of data reference blocks and deltas in different storage devices
US8255627B2 (en) 2009-10-10 2012-08-28 International Business Machines Corporation Secondary cache for write accumulation and coalescing
US8161241B2 (en) * 2010-01-12 2012-04-17 International Business Machines Corporation Temperature-aware buffered caching for solid state storage

Also Published As

Publication number Publication date
US8688914B2 (en) 2014-04-01
US20150095561A1 (en) 2015-04-02
US9176884B2 (en) 2015-11-03
DE112012004571B4 (de) 2022-12-29
US20130205077A1 (en) 2013-08-08
US8935462B2 (en) 2015-01-13
GB2509289B (en) 2014-10-01
CN103907096B (zh) 2016-08-24
US20130111106A1 (en) 2013-05-02
CN103907096A (zh) 2014-07-02
US20160019000A1 (en) 2016-01-21
GB2509289A (en) 2014-06-25
GB201406779D0 (en) 2014-05-28
WO2013064917A1 (en) 2013-05-10
US9417808B2 (en) 2016-08-16

Similar Documents

Publication Publication Date Title
DE112012004571T5 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
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
DE112013001284B4 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE102013205069B4 (de) Erhöhte effizienz bei inline-deduplizierungen
DE102008057219B4 (de) Verfahren zum Betreiben eines Solid-State-Speichersystems, Solid-State-Speichersystem und Computersystem
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE102019117787B4 (de) Speichervorrichtung und Betriebsverfahren derselben
DE112014005266B4 (de) Verfahren und System zur Vorwärtsreferenz-Protokollierung in einem peristenten Datenspeicher
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE112019000141T5 (de) System und verfahren zur vorhersage von mehrfachlesebefehlen, die auf nicht sequentielle daten gerichtet sind
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112011103290T5 (de) Intelligente Schreibcacheoperation für sequenzielle Datenspuren
DE112012001808B4 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher
DE112012001302T5 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE102009031125A1 (de) Nand-Fehlerbehandlung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
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