DE112014000254T5 - Merhrstufiges Zwischenspeichern und migrieren in unterschiedlichen Granularitäten - Google Patents

Merhrstufiges Zwischenspeichern und migrieren in unterschiedlichen Granularitäten Download PDF

Info

Publication number
DE112014000254T5
DE112014000254T5 DE112014000254.2T DE112014000254T DE112014000254T5 DE 112014000254 T5 DE112014000254 T5 DE 112014000254T5 DE 112014000254 T DE112014000254 T DE 112014000254T DE 112014000254 T5 DE112014000254 T5 DE 112014000254T5
Authority
DE
Germany
Prior art keywords
data
data segments
groups
ssd
heatmap
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
DE112014000254.2T
Other languages
English (en)
Other versions
DE112014000254T8 (de
DE112014000254B4 (de
Inventor
Michael T. Benhase
Lokesh M. Gupta
Cheng-Chung Song
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 DE112014000254T5 publication Critical patent/DE112014000254T5/de
Publication of DE112014000254T8 publication Critical patent/DE112014000254T8/de
Application granted granted Critical
Publication of DE112014000254B4 publication Critical patent/DE112014000254B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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
    • 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/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
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-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/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed 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/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • 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
    • G06F2212/284Plural cache memories being distributed
    • 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/608Details relating to cache mapping
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0673Single storage device
    • 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/0673Single storage device
    • G06F3/0682Tape device

Abstract

Für eine Datenverarbeitung in einer Datenverarbeitungs-Speicherumgebung, die zumindest Zwischenspeicher mit hoher und niedrigerer Geschwindigkeit und verwaltete mehrstufige Speicherebenen enthält, werden durch eine Prozessoreinheit Gruppen von Datensegmenten zwischen den mehrstufigen Speicherebenen migriert, so dass gleichmäßig intensiv genutzte der Gruppen von Datensegmenten migriert werden, um einen Halbleiterdatenträger-(SSD-)Abschnitt der mehrstufigen Speicherebenen zu verwenden, häufchenweise intensiv genutzte der Gruppen von Datensegmenten migriert werden, um den SSD-Abschnitt zu verwenden, während der Zwischenspeicher mit niedrigerer Geschwindigkeit für einen restlichen Abschnitt der häufchenweise intensiv genutzten verwendet wird, und dass selten intensiv genutzten der Gruppen von Datensegmenten migriert werden, um den Zwischenspeicher mit niedrigerer Geschwindigkeit zu verwenden, während eine niedrigere der mehrstufigen Speicherebenen für einen restlichen Abschnitt der selten intensiv genutzten verwendet wird.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf Computer und insbesondere auf Mechanismen zum Migrieren und Zwischenspeichern von Datensegmenten in einer Datenverarbeitungs-Speicherumgebung.
  • Beschreibung des verwandten Standes der Technik
  • In der heutigen Gesellschaft sind Computersysteme gang und gäbe. Computersysteme können auf dem Gebiet der Datenverarbeitung verwendet werden, wobei sich ”Zwischenspeicher” für gewöhnlich auf einen kleinen, schnellen Hauptspeicher oder eine Speichereinheit bezieht, die verwendet wird, um Daten oder Anweisungen zu speichern, auf die kürzlich zugegriffen wurde, auf die häufig zugegriffen wird oder auf die künftig wahrscheinlich zugegriffen werden wird. Ein Lesen aus einem Zwischenspeicher oder ein Schreiben in einen Zwischenspeicher ist (hinsichtlich Zugriffszeit und/oder Ressourcennutzung) für gewöhnlich günstiger als ein Zugreifen auf andere Hauptspeicher oder Speichereinheiten. Nachdem Daten zwischengespeichert wurden, kann auf diese im Zwischenspeicher zugriffen werden, und die Daten müssen nicht erneut abgerufen und/oder erneut verarbeitet werden, wodurch sowohl Zeit als auch Ressourcen gespart werden.
  • KURZDARSTELLUNG DER BESCHRIEBENEN AUSFÜHRUNGSFORMEN
  • Zwischenspeicher können als Mehrebenen-Zwischenspeicher bereitgestellt werden. Beispielsweise kann ein Zwischenspeichersystem sowohl einen „primären” als auch einen „sekundären” Zwischenspeicher beinhalten. Beim Lesen von Daten kann ein Datenverarbeitungssystem oder eine Datenverarbeitungseinheit zunächst im primären Zwischenspeicher nach Daten suchen und wenn die Daten nicht vorhanden sind, im sekundären Zwischenspeicher nach den Daten suchen. Wenn sich die Daten in keinem der Zwischenspeicher befinden, kann das Datenverarbeitungssystem oder die Datenverarbeitungseinheit Daten von Plattenlaufwerken oder anderen Speichereinheiten abrufen. Beim Schreiben von Daten kann ein Datenverarbeitungssystem oder eine Datenverarbeitungseinheit Daten in den primären Zwischenspeicher schreiben. Diese Daten können schließlich in den sekundären Zwischenspeicher oder eine Speichereinheit ausgelagert werden, um Platz im primären Zwischenspeicher zu schaffen.
  • Speicherumgebungen in Computersystemen können sogenannte mehrstufige Speicherarchitekturen beinhalten, die eine Vielfalt von Speichermedien wie Unternehmens-Festplattenlaufwerke (HDD), Serial-Advanced-Technology-Attachment-(SATA-)Plattenlaufwerke, Halbleiterdatenträger (SSD), Magnetbandlaufwerke und andere Einheiten beinhalten können. Daten können zwischen solchen Einheiten migriert werden. Ein Platzieren einiger Arten von Daten im geeigneten Medium kann die Gesamtleistung der Speicherumgebung stark verbessern.
  • Bei solchen mehrstufigen Speicherarchitekturen kann eine Verbesserung dergestalt eingeführt werden, dass einige Datensegmente unter Verwendung der mehrstufigen Speichermechanismen migriert werden können, während andere den sekundären Zwischenspeicher verwenden können, oder umgekehrt oder beides. Auf diese Weise kann die Gesamtleistung der Speicherumgebung weiter verbessert werden.
  • Bei solchen mehrstufigen Speicherarchitekturen, die sich der oben genannten „hybriden” Migrations- und Zwischenspeichermechanismen bedienen, besteht ein Bedarf an einem wirksamen Mittel, mit dem die diversen Speicherorganisationen (Datenträger, Pools usw.) zwischen Zwischenspeicher und mehrstufigen Speicherarchitekturen berücksichtigt werden, um eine optimale Leistung zu erzielen, wenn große „Anhäufungen” (clumps) von Daten „intensiv genutzt” werden.
  • Demgemäß und unter Berücksichtigung des Vorstehenden werden diverse beispielhafte Verfahrens-, System- und Computerprogrammprodukt-Ausführungsformen zum Verarbeiten von Daten in einer Datenverarbeitungs-Speicherumgebung durch eine Prozessoreinheit bereitgestellt, wobei die Datenverarbeitungs-Speicherumgebung zumindest Zwischenspeicher mit hoher Geschwindigkeit und mit niedrigerer Geschwindigkeit sowie mehrstufige Speicherebenen enthält. Bei einer Ausführungsform werden lediglich beispielhaft Gruppen von Datensegmenten zwischen den mehrstufigen Speicherebenen migriert, so dass gleichmäßig intensiv genutzte der Gruppen von Datensegmenten unter Verwendung eines Halbleiterdatenträger-(SSD-)Abschnitts der mehrstufigen Speicherebenen migriert werden, häufchenweise intensiv genutzte der Gruppen von Datensegmenten unter Verwendung des SSD-Abschnitts migriert werden, während der Zwischenspeicher mit niedrigerer Geschwindigkeit für einen restlichen Abschnitt der häufchenweise intensiv genutzten verwendet wird, und dass selten intensiv genutzten der Gruppen von Datensegmenten unter Verwendung des Zwischenspeichers mit niedrigerer Geschwindigkeit migriert werden, während eine niedrigere der mehrstufigen Speicherebenen für einen restlichen Abschnitt der selten intensiv genutzten verwendet wird.
  • Neben der vorstehenden beispielhaften Ausführungsform werden diverse andere System- und Computerprogrammprodukt-Ausführungsformen bereitgestellt, und diese bieten entsprechende Vorteile. Die vorstehende Kurzdarstellung soll ausgewählte Konzepte, die in der folgenden ausführlichen Beschreibung näher beschrieben sind, in vereinfachter Form vorstellen. Diese Kurzdarstellung soll keine Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands kennzeichnen und auch nicht als Hilfe bei der Ermittlung des Umfangs des beanspruchten Gegenstands dienen. Der beanspruchte Gegenstand ist nicht auf Umsetzungen beschränkt, die beliebige oder alle der im Hintergrund angeführten Nachteile ausräumen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Um die Vorteile der Erfindung besser verstehen zu können, folgt eine eingehendere Beschreibung der oben kurz beschriebenen Erfindung unter Bezugnahme auf spezifische Ausführungsformen, die in den beiliegenden Zeichnungen veranschaulicht sind. Unter der Maßgabe, dass diese Zeichnungen Ausführungsformen der Erfindung zeigen und daher nicht als deren Umfang einschränkend anzusehen sind, wird die Erfindung anhand der beiliegenden Zeichnungen spezifischer und ausführlicher beschrieben und erläutert, wobei in den Zeichnungen:
  • 1 ein Übersichts-Blockschaubild ist, das eine beispielhafte mehrstufige Speicherumgebung zeigt, in der Mechanismen gemäß der vorliegenden Erfindung umgesetzt sein können;
  • 2 ein Übersichts-Blockschaltbild ist, das ein beispielhaftes Speichersystem zeigt, in dem Mechanismen gemäß der vorliegenden Erfindung umgesetzt sein können;
  • 3 ein Übersichts-Blockschaltbild ist, das eine Ausführungsform eines Mehrebenen-Zwischenspeichers gemäß der Erfindung zeigt;
  • 4 ein Ablaufplan ist, der ein beispielhaftes Verfahren zum schlanken Zuweisen eines Speicherdatenträgers für einen Flash-Zwischenspeicher unter gemeinsamer Nutzung eines Speicherbereichspools zwischen Flash-Zwischenspeicher- und mehrstufigen Speicherarchitekturen zum Verbessern der Speichermigrationsleistung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
  • 5 ein Ablaufplan ist, der ein beispielhaftes Verfahren zum Verwenden von Heatmaps (Karten der Nutzungsintensität von Daten) unterschiedlicher Granularität in Kombination mit Flash-Zwischenspeicher- und mehrstufigen Speicherarchitekturen zum Verbessern der Speichermigrationsleistung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt; und
  • 6 ein Ablaufplan ist, der ein beispielhaftes Verfahren zum Freigeben von Flash-Zwischenspeicherplatz/Bereinigen von Speichern in Verbindung mit den beispielhaften Verfahren zeigt, wie sie in den obigen 4 und 5 veranschaulicht sind.
  • AUSFÜHRLICHE BESCHREIBUNG GEWISSER AUSFÜHRUNGSFORMEN
  • Bei einer beispielhaften mehrstufigen Speicherumgebung kann eine Migration von Datensegmenten für gewöhnlich mit großer Granularität betrieben werden. Dazu werden große Datenblöcke (z. B. 1 Gigabyte (GB)) zumindest teilweise auf der Grundlage von Statistiken migriert, die über große Intervalle gesammelt wurden. Bei einem solchen mehrstufigen System kann ein Datensegment migriert werden, wenn der Speicherbereich als ”intensiv genutzt” ermittelt wird (z. B. eine große Trefferanzahl aufgrund von Lesevorgängen aus dem Datensegment bzw. Schreibvorgängen in dieses).
  • Im Gegensatz zu Vorgängen mit großer Granularität, die von mehrstufigen Mechanismen durchgeführt werden, kann der sekundäre Zwischenspeicher oder „Flash-Zwischenspeicher” Datensegmente mit kleinerer Granularität bearbeiten (z. B. Speicherspur von 64 Kilobyte (KB)) und speichert Speicherspuren auf einem Flash-Hauptspeicher zwischen, wenn die Speicherspuren aus dem primären Zwischenspeicher (d. h. Dynamischer Nur-Lese-Speicher (DRAM)) tiefer gestuft werden.
  • Zwar kann ein mehrstufiger Speicher in Bezug auf das Zwischenspeichern von gleichmäßig intensiv genutzten Daten vorteilhaft und ein „Flash-Zwischenspeicher” für das Zwischenspeichern von selten intensiv genutzten Daten vorteilhaft sein, jedoch kann es zu gewissen Situationen kommen, in denen große Anhäufungen von Datensegmenten intensiv genutzt werden können. Es besteht ein Bedarf an einem Mechanismus, der ein solches Szenario wirksam handhabt.
  • Um eine solche Handhabung zu erzielen, stellen die veranschaulichten Ausführungsformen ein Hinzufügen einer weiteren Speicherstufe zum Zwischenspeichern und Migrieren und ein gemeinsames Nutzen von Datensegmenten zwischen mehrstufigem Speicher (große Granularität), mehrstufigem Speicher (mittlere Granularität) und Flash-Zwischenspeicher (geringe Granularität) bereit.
  • Darüber hinaus stellen die veranschaulichten Ausführungsformen Mechanismen zum Verwenden von Heatmaps bereit, die auf der Grundlage dieser unterschiedlicher Granularitäten arbeiten, um ein Ermittlungswerkzeug für das Migrieren und Zwischenspeichern von Datensegmenten in einer Datenverarbeitungs-Speicherumgebung vorzusehen, so dass eine optimale Leistung erzielt wird, wie nachstehend ausführlicher beschrieben. Datensegmente werden in diesem Heatmap-Kontext untersucht, um zu ermitteln, ob sie ”gleichmäßig”, ”gehäuft” oder ”selten” intensiv genutzt werden, wie nachstehend ausführlicher veranschaulicht. Danach werden unterschiedliche Zwischenspeicher- und Migrationsmechanismen auf jene Datensegmente angewandt, die als gleichmäßig intensiv genutzt, häufchenweise intensiv genutzt bzw. selten intensiv genutzt ermittelt wurden.
  • Es wird nun auf 1 Bezug genommen, in der ein Blockschaubild einer mehrstufigen Datenverarbeitungs-Speicherumgebung 100 gemäß einigen Ausführungsformen veranschaulicht ist. Die Datenverarbeitungs-Speicherumgebung 100 enthält eine erste Datenverarbeitungseinheit, z. B. ein Speichersystem 102, die mit einer oder mehreren Datenverarbeitungseinheiten, z. B. Clients 104, verbunden ist. Bei einigen Ausführungsformen können das Speichersystem 102 und die Clients 104 eine beliebige geeignete Datenverarbeitungseinheit aufweisen, darunter die derzeit auf dem Gebiet bekannten, z. B. ein Personal Computer, eine Arbeitsstation, ein Mainframe, ein Computer im mittleren Leistungsbereich, ein Netzwerkgerät, ein Palmtop-Computer, eine Telefoneinheit, ein Blade-Computer, ein mobiler Computer usw.
  • Bei einigen Ausführungsformen kann eine Speicherverwaltungseinheit 106, z. B. das Produkt Tivoli® Storage Manager® (TSM), das von international Business Machines (IBM®) Corporation vermarktet wird, für ein sicheres Speichern und Verwalten von Datensegmenten gemäß Aspekten der vorliegenden Erfindung verwendet werden. Die Speicherverwaltungseinheit 106 kann in einem Speicherverwaltungsserver, z. B. einem TSM-Server 102, oder anderswo ausgeführt werden. Bei einer Ausführungsform ist die Speicherverwaltungseinheit von und/oder in Verbindung mit einer Prozessoreinheit 105 betreibbar, wie gezeigt. Der Fachmann wird verstehen, dass diverse andere Konfigurationen des Prozessors 105, der Speicherverwaltungseinheit 106 und ähnlicher weiterer Verarbeitungs- und/oder Hauptspeicherkomponenten in Betracht gezogen werden. IBM, Tivoli und Tivoli Storage Manager sind Handelsmarken oder eingetragene Handel der IBM Corporation.
  • Der TSM kann Datenspeicherdienste für Clients, z. B. TSM-Clients 104a, zum Verwalten von Daten bereitstellen. Der TSM-Server 102 kann Dateien speichern, die von einem oder mehreren TSM-Clients 104a, 104b an den TSM-Server 102 gesendet werden. Die Speicherverwaltungseinheit 100 und/oder die Prozessoreinheit 105 kann bzw. können einem Systemadministrator ermöglichen, Speicherpools zu konfigurieren, wenn ein Speicherpool eine Gruppe von Einheiten aufweist, die zum Speichern von Daten verwendet werden, die von den TSM-Clients 104a, 104b erhalten werden. Speicherpools werden als Ziele zum Speichern von Vorgängen aus den TSM-Clients 104a, 104b verwendet; entsprechende Verarbeitungshinweise finden sich in TSM-Serverrichtlinien und anderen Unterlagen.
  • Wie gezeigt, kann eine Vielfalt von Speichereinheiten in einer Speicherhierarchie organisiert sein. Speichermedien innerhalb der Speicherhierarchie können somit in Datenstrukturen gruppiert werden, die hier als Speicherpools bezeichnet werden. Die Speicherhierarchie kann so organisiert sein, dass sie einer oder mehreren Kennzahlen entspricht, z. B. einer Leistungskennzahl, bei der es sich um eine Schreib- oder Lesegeschwindigkeit handeln kann. Die Speicherhierarchie 108 kann wie gezeigt so organisiert sein, dass die Hierarchiespitze einen Zwischenspeicherpool 110 mit einer höchsten Menge oder Qualität einer bestimmten Leistungskennzahl enthalten kann. Unter dem Zwischenspeicherpool 110 kann eine Anzahl von Einheiten der Klasse Halbleiterdatenträger (SSD) anhand der gleichen, ähnlichen oder anderer Kennzahlen in SSD-Pools organisiert sein (z. B. SSD-Pools 112 und 114).
  • Gemäß den Mechanismen der veranschaulichten Ausführungsformen kann die bestimmte Leistungskennzahl an sogenannte „Heatmaps” (der Einfachheit halber nicht gezeigt) gebunden sein, die anzeigen, ob Datensegmente mit geringen, mittleren oder großen Granularitäten einer gewissen Eigenschaft entsprechen, wie nachstehend ausführlicher beschrieben. Bei einer Ausführungsform kann diese Eigenschaft „gleichmäßig intensiv genutzt”, „häufchenweise intensiv genutzt” oder „selten intensiv genutzt” genannt werden, wie wiederum nachstehend ausführlicher beschrieben.
  • Unter den SSD-Pools 112 und 114 kann danach eine Stufe von Plattenpools (z. B. Plattenpools 116, 118 und 120) organisiert sein. Wie der Fachmann verstehen wird, können die Plattenpools 116, 118 und 120 eine Vielfalt von Platteneinheiten beinhalten, z. B. Pools von Unternehmens-Plattenlaufwerken, SATA-Plattenlaufwerken, Platteneinheiten, die in einer bestimmten Redundant-Array-of-Independent-Disks-(RAID-)Konfiguration konfiguriert sind, und dergleichen.
  • Die erste Stufe von Plattenpools kann sich über einer zweiten Stufe von Plattenpools (z. B. Pools 122, 124 und 126) befinden, da sie eine größere Menge, ein oder mehrere stärkere Attribute oder eine bessere Qualität der Leistungskennzahl aufweist. Unter der zweiten Stufe von Plattenpools kann sodann eine weitere Stufe von Magnetbandpools (z. B. Magnetbandpool 128, 130 und 132) organisiert sein. Für den Fachmann sind diverse Möglichkeiten für die Organisation solcher Speicherhierarchien 108 offensichtlich. Bei einer Ausführungsform kann der Systemadministrator durch Eingaben in den administrativen TSM-Client 104b oder einen anderen Mechanismus bei der Durchführung solcher Konfigurationen in der Speicherhierarchie 108 helfen. Zwar sind hier die Magnetbandpools 128, 130 und 132 innerhalb der Speicherhierarchie 108 liegend gezeigt sind, es sei jedoch angemerkt, dass solche Magnetbandpools im Allgemeinen in einem Speicherteilsystem zu finden sind, das in Bezug auf in der Hierarchie höher eingereihte Pools extern ist.
  • Unter Bezugnahme auf 2 ist eine Ausführungsform eines Speichersystems 102 gezeigt, das eine Anordnung von Festplattenlaufwerken 204 und Halbleiterdatenträger 204 enthält. Die internen Komponenten des Speichersystems 102 sind gezeigt, da das Zwischenspeichersystem bei einigen Ausführungsformen innerhalb eines solchen Speichersystems 102 umgesetzt sein kann, selbst wenn das Zwischenspeichersystem auch auf andere Speichersysteme 102 anwendbar sein kann. Wie gezeigt, enthält das Speichersystem 102 eine Speichersteuereinheit 200, einen oder mehrere Schalter 202 und eine oder mehrere Speichereinheiten 204, z. B. Festplattenlaufwerke 204 oder Halbleiterdatenträger 204 (z. B. Datenträger 204 auf der Grundlage von Flash-Hauptspeicher). Die Speichersteuereinheit 200 kann einem oder mehreren Clients 104 (z. B. Open-System- und/oder Mainframe-Server 104) das Zugreifen auf Daten in der einen oder den mehreren Speichereinheiten 204 ermöglichen. Die Clients 104 (z. B. 1) können über ein Speicherbereichsnetz (SAN, Storage Area Network) 220 zugänglich sein, wie gezeigt.
  • Bei ausgewählten Ausführungsformen enthält die Steuereinheit 200 einen oder mehrere Server 206. Die Speichersteuereinheit 200 kann auch Hostadapter 208 und Einheitenadapter 210 enthalten, um die Speichersteuereinheit 200 mit Hosteinheiten 106 bzw. Speichereinheiten 203, 204 zu verbinden. Mehrere Server 206a, 206b können eine Redundanz bereitstellen, um sicherzustellen, dass Daten für verbundene Hosts 106 immer zur Verfügung stehen. Wenn ein Server 206a ausfällt, bleibt somit der andere Server 206b funktionsfähig, um sicherzustellen, dass eine E/A zwischen den Clients 104 und den Speichereinheiten 204 fortgesetzt werden kann. Dieser Prozess kann als „Funktionsübernahme” bezeichnet werden.
  • Ein Beispiel für ein Speichersystem 102 mit einer Architektur ähnlich der in 2 gezeigten ist das DS8000TM-Unternehmensspeichersystem von IBM®. Das DS8000TM ist eine Hochleistungs-Speichersteuereinheit mit sehr hoher Speicherkapazität, die einen Plattenspeicher bereitstellt, der so ausgelegt ist, dass er durchgehende Vorgänge unterstützt. Die Modelle der DS8000TM-Reihe können die POWER5TM-Server 206a, 206b von IBM verwenden, die in die Virtualisierungsmodultechnologie von IBM integriert sein können. Nichtsdestotrotz ist das hier offenbarte Zwischenspeichersystem nicht auf das DS8000TM-Unternehmensspeichersystem von IBM® beschränkt, sondern kann in einem beliebigen vergleichbaren oder analogen Speichersystem 110 umgesetzt werden, unabhängig vom Hersteller, vom Produktnamen oder von den Komponenten oder Komponentennamen, die dem System 110 zugehörig sind. Außerdem wird ein beliebiges System, dass von einer oder mehreren Ausführungsformen der Erfindung profitieren könnte, als in den Umfang der Erfindung fallend angesehen. Somit ist das DS8000TM von IBM® nur beispielhaft dargeboten 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-Multiprozessoren) und einen Hauptspeicher 214 enthalten. Als Hauptspeicher 214 kommt ein flüchtiger Hauptspeicher (z. B. RAM) sowie ein nichtflüchtiger Hauptspeicher (z. B. ROM, EPROM, EEPROM, Festplatten, Flash-Hauptspeicher usw.) infrage. Der flüchtige Hauptspeicher und der nichtflüchtige Hauptspeicher können bei einigen Ausführungsformen Softwaremodule speichern, die auf dem einen oder den mehreren Prozessoren 212 ausgeführt und verwendet werden, um auf Daten in den Speichereinheiten 204 zuzugreifen. Die Server 206 können zumindest eine Instanz dieser Softwaremodule beherbergen. Diese Softwaremodule können alle Lese- und Schreibanfragen an logische Datenträger in den Speichereinheit 204 verwalten.
  • Bei ausgewählten Ausführungsformen kann der Hauptspeicher 214 einen Zwischenspeicher 218 enthalten. Immer wenn ein Client 104 (z. B. ein Open-System- oder Mainframe-Server 104) einen Lesevorgang durchführt, kann der Server 206, der den Lesevorgang durchgeführt, Daten aus den Speichereinheiten 204 abrufen und diese in seinem Zwischenspeicher 218 speichern, wenn diese erneut benötigt werden. Wenn die Daten von einem Client 104 erneut angefordert werden, kann der Server 206 die Daten anstatt aus den Speichereinheiten 204 aus dem Zwischenspeicher 218 abrufen, wodurch sowohl Zeit als auch Ressourcen gespart werden. Wenn ein Client 104 einen Schreibvorgang durchführt, kann der Server 106, der die Schreibanfrage erhält, den Schreibvorgang gleichermaßen in seinem Zwischenspeicher 218 speichern und den Schreibvorgang zu einem späteren Zeitpunkt an die Speichereinheiten 204 auslagern. Wenn ein Schreibvorgang im Zwischenspeicher 218 gespeichert wird, kann der Schreibvorgang auch in einem nichtflüchtigen Speicher 220 des gegenüberliegenden Servers 206 gespeichert werden, so dass der Schreibvorgang bei einem Ausfall des ersten Servers 206 durch den gegenüberliegenden Server 206 wiederhergestellt werden kann.
  • Unter Bezugnahme auf 3 und unter weiterer allgemeiner Bezugnahme auf 2 kann ein Speichersystem 102 wie zuvor erwähnt sowohl Festplattenlaufwerke 204 als auch Halbleiterdatenträger (SSDs) 204 enthalten, z. B. Halbleiterdatenträger 204 auf der Grundlage von Flash-Speichern. Die E/A-Leistung der SSDs 204 oder anderer Typen von Halbleiterdatenträgern ist für gewöhnlich viel höher als die E/A-Leistung der Festplattenlaufwerke 204. Aufgrund der höheren E/A-Leistung können die Halbleiterdatenträger 204 bei einigen Ausführungsformen verwendet werden, um einen großen sekundären Zwischenspeicher 300 zwischen dem primären Zwischenspeicher 218 und den Festplattenlaufwerken 204 bereitzustellen. Dieser große sekundäre Zwischenspeicher 300 kann die E/A-Leistung des Speichersystems 102 erheblich verbessern und kann hier als „Flash-Zwischenspeicher” bezeichnet werden. Der primäre Zwischenspeicher kann hier als Hochgeschwindigkeits-Zwischenspeicher oder Zwischenspeicher mit höherer Geschwindigkeit bezeichnet werden (da er für gewöhnlich Zugriff auf die schnellsten Dynamischer-Nur-Lese-Speicher- bzw. DRAM-Architekturen hat), auch wenn diese Terminologie in keinster Weise einschränkend sein soll.
  • Wenn eine Leseanfrage vom Server 206 (z. B. 2) erhalten wird, kann ein Server 206 unter Verwendung des sekundären Zwischenspeichers 300 zunächst im primären Zwischenspeicher 218 nach Daten suchen und wenn die Daten nicht vorhanden sind, im sekundären Zwischenspeicher 300 (der sich in den Halbleiterdatenträgern 204 befindet) nach den Daten suchen. Wenn die Daten in keinem Zwischenspeicher vorhanden sind, kann der Server 206 die Daten aus den Plattenlaufwerken 204 abrufen. Beim Schreiben von Daten kann der Server 206 gleichermaßen zunächst die geänderten Daten in den primären Zwischenspeicher 218 schreiben. Diese geänderten Daten können schließlich in den sekundären Zwischenspeicher 300 ausgelagert werden, um Platz im primären Zwischenspeicher 218 zu schaffen. Diese Daten können danach auf die Plattenlaufwerke 204 ausgelagert werden, um je nach Bedarf Platz im sekundären Zwischenspeicher 300 zu schaffen.
  • Bei einigen Ausführungsformen kann der sekundäre Zwischenspeicher 300 derart bemessen sein, dass er ungefähr 1 bis 20 Prozent oder bei anderen Ausführungsformen ungefähr 5 Prozent der Gesamtspeicherkapazität des Speichersystems 102 bereitstellt. Bei einem Speichersystem 102, das ungefähr 10 Terabyte (TB) an Speicherkapazität (sowohl von den Festplattenlaufwerken 204 als auch den Halbleiterdatenträger 204) aufweist, können somit ungefähr 0,5 TB dieses Speicherplatzes als sekundärer und „Flash”-Zwischenspeicher 300 verwendet werden. Bei einer derart hohen Speicherkapazität des sekundären Zwischenspeichers 300 müssen Daten gegebenenfalls weitaus seltener als bei herkömmlichen primären oder sekundären Zwischenspeichern aus dem sekundären Zwischenspeicher 300 ausgelagert werden. Beispielsweise könnte ein sehr großer sekundärer Zwischenspeicher 300 Schreibvorgänge für einen gesamten Tag speichern, ohne dass die Schreibvorgänge auf die Plattenlaufwerke 204 ausgelagert werden müssen. Die Schreibvorgänge könnten danach in der Nacht oder während eines Zeitraums mit relativer Inaktivität ausgelagert werden. Algorithmen zum Verwalten von Zwischenspeichern können so umgestaltet werden, dass der zusätzliche Platz im sekundären Zwischenspeicher 300 effizient genutzt wird und von den Leistungsverbesserungen profitiert wird, die durch Verwendung eines großen sekundären Zwischenspeichers 300 möglich werden.
  • Wie in 3 gezeigt, kann jeder Zwischenspeicher 218, 300 Daten 302a, 302b und Metadaten 304a, 304b speichern. Die Daten 302a, 302b können in Form von Speicherspuren gespeichert werden. Jeder Speicherspur im sekundären Zwischenspeicher 300 kann ein sekundärer Speicherspur-Steuerblock (STCB, Secondary Track Control Block) zugeordnet sein. Der STCB kann hier auch als Zwischenspeicher-Flash-Steuerblock (CFCB, Cache Flash Control Block) bezeichnet werden. Der STCB kann neben anderen Informationen für jede Speicherspur einen Zeiger auf die nächste Speicherspur in der Kette, Informationen darüber, ob die Speicherspur frei ist oder verwendet wird, sowie Informationen enthalten, die anzeigen, welche Sektoren in der Speicherspur geändert wurden. Bei einigen Ausführungsformen können die STCBs für alle Speicherspuren in einer STCB-Tabelle 306, die wie gezeigt im sekundären Zwischenspeicher 300 gespeichert ist, oder anderswo gespeichert werden.
  • Darüber hinaus kann jeder Speicherspur im sekundären Zwischenspeicher 300 ein sekundärer Stride-Steuerblock (SSCB, Secondary Stride Control Block) zugeordnet sein. Der SSCB kann wie der STCB diagnostische und/oder statische Informationen enthalten, diese beziehen sich jedoch auf im sekundären Zwischenspeicher 300 gespeicherte Strides (Gruppen von Speicherspuren). Der SSCB kann hier auch als Zwischenspeicher-Flash-Element (CFE, Cache Flash Element) bezeichnet werden. Bei einigen Ausführungsformen können die SSCBs für alle Strides in einer SSCB-Tabelle 308, die wie gezeigt im sekundären Zwischenspeicher 300 gespeichert ist, oder anderswo gespeichert werden.
  • Gleichermaßen kann der primäre Zwischenspeicher 218 Metadaten 304a speichern, die dem sekundären Zwischenspeicher 300 zugehörig sind. Beispielsweise kann der primäre Zwischenspeicher 218 eine sekundäre Zwischenspeicher-Indextabelle (SCIT, Secondary Cache Index Table) 308 speichern, die ein Verzeichnis für Speicherspuren im sekundären Zwischenspeicher 300 bereitstellt. Bei einigen Ausführungsformen ist die SCIT 308 im Wesentlichen eine Hashtabelle mit einer konstanten Hashfunktion. Um eine spezifische Speicherspur in der SCIT 308 zu lokalisieren, kann die Hashfunktion einen Speicherspuridentifikator (z. B. eine Speicherspurnummer) in einen Hashwert umwandeln. Dieser Hashwert kann dann in der SCIT 308 nachgeschlagen werden, um den STCB für die Speicherspur zu finden. Alternativ könnte die SCIT 308 in ein Zwischenspeicherverzeichnis des primären Zwischenspeichers 218 integriert werden, wodurch eine einzelne Hashtabelle bereitgestellt wird, die Speicherspuren sowohl für den primären als auch den sekundären Zwischenspeicher 218, 300 speichert. Bei ausgewählten Ausführungsformen wird die SCIT 308 ausschließlich im primären Zwischenspeicher 218 gehalten. Die SCIT 308 kann (im Fall einer Funktionsübernahme, eines Zurücksetzens oder eines einleitenden Ladens des Mikrocodes (IML, Initial Microcode Load)) durch Lesen der STCB-Tabelle 306 im sekundären Zwischenspeicher 300 erstellt oder wiederhergestellt werden.
  • Bei einigen Ausführungsformen kann der primäre Zwischenspeicher 218 auch eine Liste von freien Speicherspuren (LOFT, List of Free Tracks) 310 speichern, die anzeigt, welche Speicherspuren im sekundären Zwischenspeicher 300 frei sind (d. h. unbelegt). Diese Liste 310 kann verwendet werden, um freien Platz im sekundären Zwischenspeicher 300 zu lokalisieren, um Daten aus dem primären Zwischenspeicher 218 in den sekundären Zwischenspeicher 300 auszulagern. Bei ausgewählten Ausführungsformen kann das Einfügen oder Entfernen von Speicherspuren aus der LOFT 310 logstrukturiert durchgeführt werden. Beispielsweise können Speicherspuren am Ende der LOFT 310 eingefügt und an der vorderen Stelle der LOFT 310 gelöscht werden. Die LOFT 310 kann ausschließlich im primären Zwischenspeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 im sekundären Zwischenspeicher 300 erstellt oder wiederhergestellt werden.
  • In dem primären Zwischenspeicher 218 kann auch ein sortierter Speicherspurbaum (STOT, Sorted Tree of Tracks) 312 gespeichert werden, der die Speicherspuren nach „Speicherspurkennung” oder einem anderen Indikator sortiert. Die STOT 312 kann verwendet werden, um die Suchzeit (auf den Plattenlaufwerken 204) beim Auslagern von Speicherspuren aus dem sekundären Zwischenspeicher 300 auf die Plattenlaufwerke 204 zu minimieren. Die STOT 312 kann ausschließlich im primären Zwischenspeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 im sekundären Zwischenspeicher 300 erstellt oder wiederhergestellt werden.
  • In dem primären Zwischenspeicher 218 können auch Statistiken pro Stride (STATS, Statistics per Stride) 314 für jeden Stride gespeichert werden, der eine oder mehrere Speicherspuren im sekundären Zwischenspeicher 300 hat. Ein „Stride” bezieht sich auf einen Satz von logisch sequenziellen Daten, die über mehrere Platten segmentiert sein könnten, verknüpft mit weiteren Paritätsinformationen, wie z. B. in einer RAID-5-Konfiguration (Redundant Array of Inexpensive Disks) verwendet. Im Allgemeinen können die STATS 314 verwendet werden, um zu ermitteln, welche Speicherspur die geringste Anzahl von Plattenvorgängen erfordert, um eine Auslagerung aus dem sekundären Zwischenspeicher 300 auf die Plattenlaufwerke 204 durchzuführen. Im Allgemeinen ist der Auslagerungsaufwand für eine Speicherspur niedriger, wenn mehr Speicherspuren in einem Stride vorhanden sind. Bei der Auswahl von auszulagernden Speicherspuren können Speicherspuren, die die geringste Anzahl von Plattenvorgängen erfordern, zuerst ausgelagert werden, um die Ressourcennutzung zu minimieren. Bei ausgewählten Ausführungsformen können die STATS 314 Informationen wie für jeden Stride die Anzahl von Speicherspuren, die im sekundären Zwischenspeicher 300 vorhanden sind, und die Anzahl von Plattenvorgängen, die zum Auslagern einer Speicherspur in einem Stride erforderlich sind, speichern. Bei einigen Ausführungsformen können die STATS 314 ein „Neuheiten”-Bit für jeden Stride speichern. Das Neuheitenbit kann jedes Mal erhöht werden, wenn ein Entfernungsprozess einen Stride durchläuft. Das Neuheitenbit kann jedes Mal zurückgesetzt werden, wenn eine Speicherspur zu einem Stride hinzugefügt wird. Das Neuheitenbit kann verwendet werden, um Strides, auf die aktiv geschrieben wird, im sekundären Zwischenspeicher 300 zu halten. Die STATS 314 kann ausschließlich im primären Zwischenspeicher 218 gehalten werden und kann durch Lesen der STCB-Tabelle 306 im sekundären Zwischenspeicher 300 erstellt oder wiederhergestellt werden.
  • Die oben beschriebenen Metadaten 304a, 304b können auf diverse unterschiedliche Arten strukturiert und gespeichert werden und sind nicht auf die veranschaulichte Struktur oder Organisation beschränkt. Die Metadaten 304a, 304b werden beispielhaft angeführt, um eine Technik zum Speichern und Strukturieren der Metadaten 304a, 304b zu zeigen. Bei einigen Ausführungsformen beispielsweise können die Daten und Metadaten zusammen in einer kreisförmigen logstrukturierten Anordnung im sekundären Zwischenspeicher 300 gespeichert werden. Andere Verfahren zum Strukturieren und Speichern von Metadaten 304a, 304b können verwendet werden und fallen in den Umfang der Erfindung.
  • Wie zuvor erwähnt, besteht ein Vorteil eines großen sekundären Zwischenspeichers 300 darin, dass Daten weitaus seltener als bei herkömmlichen sekundären Zwischenspeichern aus der sekundären Zwischenspeicher 300 ausgelagert werden können. Dadurch ist es möglich, dass sich mehr Daten im zweiten Zwischenspeicher 300 ansammeln können, bevor diese auf die Plattenlaufwerke 204 ausgelagert werden. Bei ausgewählten Ausführungsformen können eine Vorrichtung und ein Verfahren gemäß der Erfindung somit so konfiguriert sein, dass sie warten, bis sich vollständige Datenstrides angesammelt haben und im zweiten Zwischenspeicher 300 zusammenfügen, bis die Daten auf die Plattenlaufwerke 204 ausgelagert werden. Wie oben erläutert, kann dies die Anzahl von Plattenvorgängen minimieren, die zum Auslagern von Daten aus dem sekundären Zwischenspeicher 300 auf die Plattenlaufwerke 204 erforderlich sind, wodurch die allgemeine Systemleistung verbessert wird.
  • Unter Bezugnahme auf 4 ist ein beispielhaftes Verfahren zum schlanken Zuweisen eines mit niedrigerer Geschwindigkeit (z. B. „Flash-Zwischenspeicher”) (im Gegensatz zur Verwendung eines Zusatz-Datenträgers mit fester Größe) unter gemeinsamer Nutzung von Datensegmenten mit diversen Granularitäten zwischen dem Flash-Zwischenspeicher und mehreren mehrstufigen Speicherebenen in einer Datenverarbeitungsumgebung veranschaulicht. Bei der veranschaulichten Ausführungsform ist der sekundäre Zwischenspeicher als die Zwischenspeicherebene mit niedrigerer Geschwindigkeit dargestellt, und der Zwischenspeicher mit höherer Geschwindigkeit kann in der Speichersteuereinheit als DRAM-Zwischenspeicher umgesetzt sein wie bei einer vorherigen beispielhaften Veranschaulichung. Ein Verfahren 400 beginnt (Schritt 402). Bei einer Ausführungsform ist die mehrstufige Speicherarchitektur so konfiguriert, dass sie einen gleichen Speicherpool (z. B. Speicherbereichspool) gemeinsam mit dem Zwischenspeicher mit niedrigerer Geschwindigkeit nutzt. Bei einer Ausführungsform kann ein solcher gemeinsam genutzter Speicherpool 1-GB-Speicherbereiche von Datensegmenten beinhalten. Anstatt einen Zusatzdatenträger zu verwenden, wird die Zwischenspeicherspeicher mit niedrigerer Geschwindigkeit schlank zugewiesen (z. B. mit variabler Größe und dynamischer Antwort auf sich ändernde Speicherbedingungen). Bei einer Ausführungsform kann der schlank zugewiesene Zwischenspeicher mit niedrigerer Geschwindigkeit um die oben genannte Datengröße von 1-GB-Blöcken wachsen oder schrumpfen, wiederum je nach sich verändernden Speicherbedingungen in der Umgebung.
  • Demgemäß und unter Berücksichtigung des Vorstehenden werden in Schritt 404 Gruppen von Datensegmenten zwischen mehrstufigem Speicher migriert, so dass gleichmäßig intensiv genutzte Datensegmente auf einen Halbleiterdatenträger-(SSD-)Abschnitt der mehrstufigen Speicherebenen migriert werden, sogenannte „häufchenweise intensiv genutzte” Datensegmente, wie nachstehend ausführlicher beschrieben, werden migriert, um den SSD-Abschnitt zu verwenden, während gleichzeitig der Zwischenspeicher mit niedrigerer Geschwindigkeit für einen restlichen Abschnitt der häufchenweise intensiv genutzten Datensegmente verwendet wird, und selten intensiv genutzte Datensegmente werden migriert, um den Zwischenspeicher mit niedrigerer Geschwindigkeit zu verwenden, während gleichzeitig eine sogar noch niedrigere der mehrstufigen Speicherebenen für einen restlichen Abschnitt der selten intensiv genutzten Datensegmente verwendet wird. Danach endet das Verfahren 400 (Schritt 406).
  • Das Verfahren 400 kann weiter verbessert werden, indem Heatmaps mit unterschiedlicher Granularität für ein Ermitteln, welche Datensegmente gleichmäßig intensiv genutzt, häufchenweise intensiv genutzt bzw. selten intensiv genutzt werden, verwendet werden. Bei einer Ausführungsform beispielsweise kann eine zweistufige Begutachtung erfolgen, wobei gegebenenfalls festgestellt wird, dass ein ausgewähltes Datensegment gleichmäßig intensiv genutzt oder häufchenweise intensiv genutzt wird, indem z. B. zunächst die Heatmap mit großer Granularität (d. h. 1-GB-Blöcke) untersucht wird, um zu ermitteln, ob die Heatmap mit großer Granularität intensiv genutzt wird, und ist dies nicht der Fall, wird die Heatmap mit kleinerer Granularität (z. B. ein Stride-nach-Stride-Vergleich oder KB-Blöcke) untersucht, um zu ermitteln, ob eine gewisse Anzahl dieser granularen Abschnitte intensiver als ein vorab festgelegter Schwellenwert genutzt wird. Wenn bei einem bestimmten Speicherbereich mehr als 500 Strides in einem 1-GB-Speicherbereich intensiv genutzt werden, kann man davon ausgehen, dass die Heatmap mit niedrigerer Granularität einen gleichmäßig intensiv genutzten Speicherbereich anzeigt. Wenn eine gewisse Anzahl über einem vorab festgelegten Schwellenwert von Abschnittabschnitten des 1-GB-Speicherbereichs intensiv genutzt wird, kann der Speicherbereich wiederum als gleichmäßig intensiv genutzt angesehen werden. Wenn alternativ die Heatmap für den 1-GB-Speicherbereich keine intensive Nutzung anzeigt, aber zumindest einer der Abschnittabschnitte des Datensegments (z. B. 10- oder 100-MB-Abschnittdatenbereiche) intensiv genutzt wird, kann der jeweilige Speicherbereich als häufchenweise intensiv genutzt angesehen werden.
  • Um eine seltene intensive Nutzung zu ermitteln, kann die Heatmap mit größerer Granularität gleichermaßen zunächst herangezogen werden, um eine intensive Nutzung über einem vorab festgelegten Schwellenwert zu ermitteln, und ist dies nicht der Fall, kann die Heatmap mit niedrigerer Granularität verwendet werden, um zu ermitteln, ob weniger als die vorab festgelegte Anzahl von granularen Abschnitten intensiver als der vorab festgelegte Schwellenwert genutzt werden.
  • Die ermittelte gleichmäßige intensive Nutzung, häufchenweise intensive Nutzung und/oder seltene intensive Nutzung kann danach verwendet werden, um Daten zwischen Flash-Zwischenspeicher- und mehrstufigen Speicherarchitekturen gemäß den Mechanismen der vorliegenden Erfindung zu migrieren, wie nachstehend ausführlicher beschrieben und in 5 gezeigt.
  • 5 veranschaulicht ein weiteres beispielhaftes Verfahren zum Migrieren von Daten gemäß Mechanismen der veranschaulichten Ausführungsformen unter Berücksichtigung gleichmäßiger und seltener intensiver Nutzung, die z. B. gemäß der vorherigen Beschreibung ermittelt werden kann.
  • Ein Verfahren 500 beginnt (Schritt 502) mit der Konfiguration von Heatmaps mit kleiner, mittlerer und großer Granularität (Schritt 504). Bei einer Ausführungsform können diese Heatmaps auf 1-GB-Speicherbereichen für die größere Granularität, auf mittleren Abschnittspeicherbereichen (z. B. 10- oder 100-MB-Abschnitten) für die mittlere Granularität und auf einer Anzahl von N Plattenblöcken (z. B. einem Stride von 1-MB-Blöcken) für die kleinere Granularität konfiguriert werden.
  • Man betrachte die folgende beispielhafte Ausführungsform. Ein bestimmter Flash-Zwischenspeicher kann mit einem 1- bis 128-Blöcken-Zwischenspeicher, Ebene 2 (L2), konfiguriert sein, ein Zwischenspeicher mit niedrigerer Geschwindigkeit kann mit einer oberen Stufe mit einer 10-MB-Kopie-SDD auf L2 und einer unteren Stufe mit 1-GB-Migrations-HDD auf L3 konfiguriert sein. Bei einem solchen Beispiel können 100-x-10-MB-Blöcke (im Gegensatz zu 1-GB-Blöcken) auf einem SSD-Speicher für häufchenweise intensiv genutzte 1-GB-Speicherbereiche verwendet werden. Für diese Blöcke können gleichmäßig intensiv genutzte Segmente im SSD-Abschnitt zwischengespeichert und/oder aus dem Flash-Zwischenspeicher migriert werden, und der Flash-Zwischenspeicher kann verwendet werden, um den 1-GB-Speicherbereich in den SSD-Abschnitt zu verschieben. Im Fall von selten intensiv genutzten Segmenten kann der Flash-Zwischenspeicher verwendet werden, um solche Daten und/oder aus dem SSD-Abschnitt migrierte Daten zwischenzuspeichern. Im Fall von häufchenweise intensiv genutzten Segmenten können neben den oben genannten 1-GB-Speicherbereichen schließlich 10-MB-Blöcke verwendet werden, und der Flash-Zwischenspeicher kann (soweit möglich) verwendet werden, um diese Segmente zwischenzuspeichern, wobei der Rest in den SSD-Abschnitt migriert und/oder dort zwischengespeichert wird.
  • Unter erneuter Bezugnahme auf das Verfahren 500 wird in Schritt 506 ermittelt, ob ein ausgewählter Speicherbereich gleichmäßig intensiv genutzt oder häufchenweise intensiv genutzt wird. Wie zuvor erwähnt, kann bei einer Ausführungsform festgestellt werden, dass der Speicherbereich gleichmäßig intensiv genutzt wird, wenn die Heatmap für die größere Granularität eine hohe Nutzungsintensität anzeigt (d. h. intensiver als ein vorab festgelegter Schwellenwert) und/oder alternativ wenn zumindest eine Anzahl von M der N Plattenblöcke mit niedrigerer Granularität intensiv genutzt wird. Wie zuvor erwähnt, kann bei einer Ausführungsform erneut festgestellt werden, dass der Speicherbereich häufchenweise intensiv genutzt wird, wenn die Heatmap für die große Granularität keine hohe Nutzungsintensität anzeigt, jedoch zumindest eine der Anhäufungen in einem Speicherteilbereich (wiederum vielleicht 10- oder 100-MB-Abschnitte) intensiv genutzt wird.
  • Wenn festgestellt wird, dass der Speicherbereich gleichmäßig intensiv genutzt oder häufchenweise intensiv genutzt wird, geht das Verfahren 500 zu Schritt 516 über, in dem abgefragt wird, ob der gleichmäßig intensiv genutzte/häufchenweise intensiv genutzter Speicherbereich aktuell im SSD-Abschnitt der mehrstufigen Speicherarchitektur gespeichert ist (z. B. im Gegensatz zum Flash-Zwischenspeicher mit niedrigerer Geschwindigkeit). Ist dies nicht der Fall, wird der gesamte intensiv genutzte Speicherbereich oder der häufchenweise intensiv genutzte Abschnittspeicherbereich auf den SSD-Abschnitt der mehrstufigen Speicherarchitektur migriert (Schritt 520), und das Verfahren kehrt zu Schritt 506 zurück. Bei einer Ausführungsform ist der Zugriff des Flash-Zwischenspeichers (oder die Datenverarbeitung einer beliebigen Form solcher zwischengespeicherten Daten) auf solche migrierten Daten deaktiviert, bis der Speicherbereich oder Abschnittspeicherbereich vollständig auf den SSD-Abschnitt migriert wurde, damit die Leistung nicht negativ beeinflusst wird.
  • Unter erneuter Bezugnahme auf Schritt 516, wenn festgestellt wird, dass der Speicherbereich aktuell im SSD-Abschnitt zwischengespeichert ist, wird/werden der Speicherbereich/der eine oder die mehreren Speicherteilbereiche im SSD-Abschnitt gehalten (Schritt 518), und das Verfahren kehrt zu Schritt 506 zurück.
  • Unter erneuter Bezugnahme auf Schritt 506, wenn festgestellt wird, dass der Speicherbereich nicht gleichmäßig intensiv genutzt wird, geht das Verfahren 500 zu Schritt 508, in dem abgefragt wird, ob der Speicherbereich selten intensiv genutzt wird. Erneut wird bei einer Ausführungsform gegebenenfalls festgestellt, dass der Speicherbereich selten intensiv genutzt wird, wenn die Heatmap für die größere Granularität keine hohe Nutzungsintensität anzeigt (d. h. nicht intensiver als ein vorab festgelegter Schwellenwert) und/oder alternativ wenn zumindest eine Anzahl von M der N Plattenblöcke mit niedrigerer Granularität nicht intensiv genutzt wird.
  • Wenn in Schritt 508 festgestellt wird, dass der Speicherbereich nicht selten intensiv genutzt wird, kehrt das Verfahren zu Schritt 506 zurück, wie gezeigt. Wenn festgestellt wird, dass der Speicherbereich selten intensiv genutzt wird, geht das Verfahren zu Schritt 510, in dem erneut abgefragt wird, ob sich der Speicherbereich im SSD-Abschnitt der mehrstufigen Speicherarchitektur befindet (wiederum im Gegensatz zum Zwischenspeicher mit niedrigerer Geschwindigkeit). Ist dies der Fall, wird jener Abschnitt des Speicherbereichs, bei dem eine seltene Nutzung festgestellt wird, unter Verwendung des SSD-Abschnitts in den Zwischenspeicher mit niedrigerer Geschwindigkeit migriert (Schritt 514) und der gesamte Speicherbereich (oder bei einer weiteren Ausführungsform alternativ jener Abschnitt des Speicherbereichs, der nicht als selten intensiv genutzt erachtet wird) von der SSD auf die HDD migriert. Das Verfahren 500 kehrt sodann zu Schritt 506 zurück, um bezüglich eines weiteren Speicherbereichs abzufragen (oder vielleicht wird der gleiche Speicherbereich mittlerweile gleichmäßig intensiv genutzt). Unter erneuter Bezugnahme auf Schritt 510, wenn festgestellt wird, dass der Speicherbereich aktuell im SSD-Abschnitt zwischengespeichert ist, wird der Speicherbereich im SSD-Abschnitt gehalten (Schritt 512), und das Verfahren kehrt zu Schritt 506 zurück.
  • In 6 wird sodann ein beispielhafter Mechanismus zur Speicherplatzrückgewinnung/Speicherbereinigung auf Datensegmenten, die in einem Flash-Zwischenspeicher zwischengespeichert sind, gemäß der vorliegenden Erfindung, um angemessen Platz zum Zwischenspeichern und Migrieren von Daten beispielsweise über einen Zeitraum zu halten.
  • Ein Verfahren 600 beginnt (Schritt 602) mit dem Untersuchen eines Datensegments (z. B. Speicherbereich), um einen aktuellen Belegungsgrad zu ermitteln (Schritt 604). Wiederum kann die relevante Größe des Speicherbereichs hier variieren, im Einklang mit den vorherigen Beispielen kann die Speicherbereichsgröße jedoch 1 GB betragen. Wenn festgestellt wird, dass der Speicherbereich unter einen bestimmten Belegungsgrad fällt (Schritt 606), wird der Speicherbereich speicherbereinigt, um Platz im Flash-Zwischenspeicher freizugeben (Schritt 608). Unter erneuter Bezugnahme auf Schritt 606, wenn ermittelt wird, dass die Belegungsgrad nicht unter den oben genannten Belegungsgrad fällt, kehrt das Verfahren 600 zu Schritt 604 zurück, um einen weiteren Speicherbereich (oder vielleicht zu einem späteren Zeitpunkt den gleichen Speicherbereich) zu prüfen. Der Fachmann wird verstehen, dass der Belegungsgrad eines bestimmten Speicherbereichs in einem ermittelten Flash-Zwischenspeicher abnehmen kann, wenn Speicherbereiche auf die verwalteten Speicherstufen migriert werden oder Speicherspuren aus dem Speicherbereich gemäß einer Migrationsrichtlinie (z. B. selten verwendet (LRU, Least Recently Used) tiefer gestuft werden.
  • Wie der Fachmann verstehen wird, können diverse Schritte im Verfahren 500 individuell auf eine bestimmte Anwendung angepasst werden. Jedenfalls können einige Datensegmente zwischen dem mehrstufigen Speicher und dem Flash-Zwischenspeicher (dem Zwischenspeicher mit niedrigerer Geschwindigkeit) hin- und zurückgeleitet werden, z. B. wenn festgestellt wurde, dass ein ausgewähltes Datensegment, das sich aktuell im Flash-Zwischenspeicher befindet, nun gleichmäßig intensiv genutzt wird, wobei das gesamte Segment auf eine SSD migriert wird, wobei der Flash-Zwischenspeicher nicht abgeschaltet wird, bis der Speicherbereich migriert wurde, oder wenn festgestellt wird, dass ein ausgewähltes Datensegment, das sich aktuell im Flash-Zwischenspeicher befindet, nun selten intensiv genutzt wird, wobei jene Abschnitte der Segmente, bei denen eine seltene Nutzung festgestellt wird, auf den SSD-Abschnitt der mehrstufigen Speicherarchitektur migriert werden.
  • Wie der Fachmann verstehen wird, können Aspekte der vorliegenden Erfindung in Form eines Systems, eines Verfahrens oder eines Computerprogrammprodukts umgesetzt sein. Demgemäß können Aspekte der vorliegenden Erfindung die Form einer ausschließlich aus Hardware bestehenden Ausführungsform, einer ausschließlich aus Software bestehenden Ausführungsform (unter anderem Firmware, residente Software, Microcode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert, die hier allesamt allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Ferner können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das als ein oder mehrere computerlesbare Medien umgesetzt ist, die einen computerlesbaren Programmcode aufweisen.
  • Es kann eine beliebige Kombination aus einem oder mehreren computerlesbaren Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann beispielsweise ein/e elektrische/s, magnetische/s, optische/s, elektromagnetische/s, Infrarot- oder Halbleitersystem, -vorrichtung, -einheit oder -verbreitungsmedium oder eine geeignete Kombination des Vorstehenden sein, ohne jedoch darauf beschränkt zu sein. Spezifischere Beispiele (eine nichterschöpfende Liste) für das computerlesbare Speichermedium sind unter anderem: eine elektrische Verbindung mit einem oder mehreren Leitungen, ein tragbarer Computerdatenträger, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein elektronisch löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine geeignete Kombination des Vorstehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm zur Verwendung durch ein Anweisungsausführungssystem, eine Anweisungsausführungsvorrichtung oder eine Anweisungsausführungseinheit oder in Verbindung damit enthalten oder speichern kann.
  • Der in einem computerlesbaren Medium enthaltene Programmcode kann mithilfe eines geeigneten Mediums übertragen werden, beispielsweise drahtlos, kabelgebunden, Lichtwellenleiterkabel, HF usw. oder durch eine Kombination des Vorstehenden, ohne jedoch darauf beschränkt zu sein. Computerprogrammcodes zum Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung können in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, beispielsweise objektorientierte Programmiersprachen wie Java, Smalltalk und C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie „C”-Programmiersprachen oder ähnliche Programmiersprachen. Der Programmcode kann zur Gänze am Computer des Benutzers, teilweise am Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder gänzlich auf dem entfernt angeordneten Computer oder -Server ausgeführt werden. Bei letzterem Szenario kann der entfernt angeordnete Computer über einen beliebigen Netzwerktyp, beispielsweise lokales Netz (LAN, Local Area Network) oder Weitverkehrsnetz (WAN, Wide Area Network), mit dem Computer des Benutzers verbunden sein oder die Verbindung zu einem externen Computer kann hergestellt sein (z. B. über einen Internet-Diensteanbieter über Internet).
  • Aspekte der vorliegenden Erfindung sind unter Bezugnahme auf die Ablaufplandarstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung oben beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplandarstellungen und/oder Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplandarstellungen und/oder Blockschaltbildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erstellen, so dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel für das Umsetzen von in dem einen oder den mehreren Ablaufplan- und/oder Blockschaltbildblöcken angegebenen Funktionen/Aktionen schaffen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Weise zu arbeiten, so dass die im computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel schaffen, darunter Anweisungen beinhaltet, die die in den einen oder mehreren Ablaufplan- und/oder Blockschaltbildblöcken angegebene Funktion/Aktion umsetzen. Die Computerprogrammanweisungen können auch in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um zu bewirken, dass eine Reihe von Funktionsschritten auf dem Computer, auf der anderen programmierbaren Vorrichtung oder auf anderen Einheiten durchgeführt wird, um ein durch einen Computer ausgeführtes Verfahren zu schaffen, so dass die Anweisungen, die auf dem Computer oder auf der anderen programmierbaren Vorrichtung ausgeführt werden, Verfahren zum Umsetzen der in dem einen oder den mehreren Ablaufplan- und/oder Blockschaltbildblöcken angegebenen Funktionen/Aktionen bereitstellen.
  • Der Ablaufplan und das Blockschaltbild in den obigen Figuren zeigen die Architektur, die Funktionalität und den Betrieb möglicher Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block des Ablaufplans oder der Blockschaltbilder ein Modul, ein Segment oder einen Abschnitt von Codes darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen für die Umsetzung der einen oder mehreren angegebenen logischen Funktionen aufweist. Es sei darüber hinaus angemerkt, dass die in den Blöcken ausgewiesenen Funktionen bei einigen alternativen Ausführungsformen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten könnten. Beispielsweise können zwei aufeinanderfolgen Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal in umgekehrter Reihenfolge ausgeführt werden, je nach Funktionalität. Es sei ferner angemerkt, dass jeder Block der Blockschaltbilder und/oder der Ablaufplandarstellung und Kombinationen von Blöcken in den Blockschaltbildern und/oder in der Ablaufplandarstellung durch spezifische hardware-basierte Systeme umgesetzt sein können, die die angegebenen Funktionen oder Aktionen oder Kombinationen von spezifischen Hardware- und Computeranweisungen durchführen.
  • Zwar wurden eine oder mehrere Ausführungsformen der vorliegenden Erfindung ausführlich beschrieben, der Fachmann wird jedoch verstehen, dass Änderungen und Anpassungen dieser Ausführungsformen vorgenommen werden können, ohne sich vom Umfang der vorliegenden Erfindung, wie er in den nachstehenden Ansprüchen angeführt ist, zu entfernen.

Claims (27)

  1. Verfahren zum Verarbeiten von Daten in einer Datenverarbeitungs-Speicherumgebung durch eine Prozessoreinheit, wobei die Datenverarbeitungs-Speicherumgebung zumindest Zwischenspeicher mit hoher Geschwindigkeit und mit niedrigerer Geschwindigkeit sowie mehrstufige Speicherebenen enthält, wobei das Verfahren aufweist: Migrieren von Gruppen von Datensegmenten zwischen den mehrstufigen Speicherebenen, so dass gleichmäßig intensiv genutzte der Gruppen von Datensegmenten migriert werden, um einen Halbleiterdatenträger-(SSD-)Abschnitt der mehrstufigen Speicherebenen zu verwenden, häufchenweise intensiv genutzte der Gruppen von Datensegmenten migriert werden, um den SSD-Abschnitt zu verwenden, während der Zwischenspeicher mit niedrigerer Geschwindigkeit für einen restlichen Abschnitt der häufchenweise intensiv genutzten verwendet wird, und dass selten intensiv genutzten der Gruppen von Datensegmenten migriert werden, um den Zwischenspeicher mit niedrigerer Geschwindigkeit zu verwenden, während eine niedrigere der mehrstufigen Speicherebenen für einen restlichen Abschnitt der selten intensiv genutzten verwendet wird.
  2. Verfahren nach Anspruch 1, das ferner ein Ermitteln der gleichmäßig intensiv genutzten Gruppen von Datensegmenten unter Verwendung einer ersten Heatmap (Karte der Nutzungsintensität von Daten) für ein ausgewähltes der Gruppe von Datensegmenten beinhaltet, wobei die Heatmap eine erste, größte Granularität aufweist.
  3. Verfahren nach Anspruch 2, das ferner ein Ermitteln der gleichmäßig intensiv genutzten Gruppen von Datensegmenten beinhaltet, indem festgestellt wird, dass eine erste Heatmap eine höhere Datennutzungs-Intensität anzeigt als ein erster vorab festgelegter Schwellenwert.
  4. Verfahren nach Anspruch 3, wobei das Feststellen, dass die erste Heatmap eine höhere Datennutzungs-Intensität anzeigt als der erste vorab festgelegte Schwellenwert, ein Feststellen beinhaltet, dass zumindest eine vorab festgelegte Anzahl von granularen Abschnitten des ausgewählten der Gruppe von Datensegmenten intensiver als der erste vorab festgelegte Schwellenwert genutzt wird.
  5. Verfahren nach Anspruch 2, das ferner ein Ermitteln der häufchenweise intensiv genutzten Gruppen von Datensegmenten unter Verwendung einer zweiten Heatmap beinhaltet, die eine kleinere Granularität als die erste, größte Granularität der ersten Heatmap aufweist.
  6. Verfahren nach Anspruch 5, das ferner ein Ermitteln der häufchenweise intensiv genutzten Gruppen von Datensegmenten durch ein Feststellen beinhaltet, dass die erste Heatmap keine höhere Datennutzungs-Intensität anzeigt als der vorab festgelegte Schwellenwert, jedoch zumindest ein Teil der zweiten Heatmap eine höhere Datennutzungs-Intensität anzeigt als ein zweiter vorab festgelegter Schwellenwert.
  7. Verfahren nach Anspruch 5, das ferner ein Ermitteln der selten intensiv genutzten Gruppen von Datensegmenten durch ein Feststellen beinhaltet, dass weder die erste Heatmap noch die zweite Heatmap eine höhere Datennutzungs-Intensität anzeigt als der erste bzw. der zweite vorab festgelegte Schwellenwert.
  8. Verfahren nach Anspruch 1, das ferner ein Migrieren einer ausgewählten der Gruppen von Datensegmenten zwischen dem SSD-Abschnitt und dem Zwischenspeicher mit niedrigerer Geschwindigkeit beinhaltet durch: wenn die ausgewählte Gruppe im Zwischenspeicher mit niedrigerer Geschwindigkeit zwischengespeichert ist und festgestellt wird, dass sie gleichmäßig intensiv genutzt und häufchenweise intensiv genutzt wird, Migrieren der ausgewählten Gruppe aus dem Zwischenspeicher mit niedrigerer Geschwindigkeit in den SSD-Abschnitt, wobei im Zwischenspeicher mit niedrigerer Geschwindigkeit enthaltene Daten nicht verarbeitet werden, bis die ausgewählte Gruppe vollständig in den SSD-Abschnitt migriert wurde.
  9. Verfahren nach Anspruch 1, das ferner ein Migrieren einer ausgewählten der Gruppen von Datensegmenten zwischen dem SSD-Abschnitt und dem Zwischenspeicher mit niedrigerer Geschwindigkeit beinhaltet durch: wenn die ausgewählte Gruppe im SSD-Abschnitt zwischengespeichert ist und festgestellt wird, dass sie selten intensiv genutzt wird, Migrieren der ausgewählten Gruppe aus dem SSD-Abschnitt in den Zwischenspeicher mit niedrigerer Geschwindigkeit und danach Migrieren der ausgewählten Gruppe aus dem SSD-Abschnitt auf eine Festplatteneinheit (HDD, Hard Disk Device).
  10. System zum Verarbeiten von Daten in einer Datenverarbeitungs-Speicherumgebung, wobei die Datenverarbeitungs-Speicherumgebung zumindest Zwischenspeicher mit hoher Geschwindigkeit und mit niedrigerer Geschwindigkeit sowie mehrstufige Speicherebenen enthält, wobei das System aufweist: eine Prozessoreinheit, die in der Datenverarbeitungs-Speicherumgebung betreibbar ist, wobei die Prozessoreinheit: Gruppen von Datensegmenten zwischen den mehrstufigen Speicherebenen migriert, so dass gleichmäßig intensiv genutzte der Gruppen von Datensegmenten migriert werden, um einen Halbleiterdatenträger-(SSD-)Abschnitt der mehrstufigen Speicherebenen zu verwenden, häufchenweise intensiv genutzte der Gruppen von Datensegmenten migriert werden, um den SSD-Abschnitt zu verwenden, während der Zwischenspeicher mit niedrigerer Geschwindigkeit für einen restlichen Abschnitt der häufchenweise intensiv genutzten verwendet wird, und dass selten intensiv genutzten der Gruppen von Datensegmenten migriert werden, um den Zwischenspeicher mit niedrigerer Geschwindigkeit zu verwenden, während eine niedrigere der mehrstufigen Speicherebenen für einen restlichen Abschnitt der selten intensiv genutzten verwendet wird.
  11. System nach Anspruch 10, wobei die Prozessoreinheit die gleichmäßig intensiv genutzten Gruppen von Datensegmenten unter Verwendung einer ersten Heatmap für ein ausgewähltes der Gruppe von Datensegmenten ermittelt, wobei die Heatmap eine erste, größte Granularität aufweist.
  12. System nach Anspruch 11, wobei die Prozessoreinheit die gleichmäßig intensiv genutzten Gruppen von Datensegmenten ermittelt, indem sie feststellt, dass eine erste Heatmap eine höhere Datennutzungs-Intensität anzeigt als ein erster vorab festgelegter Schwellenwert.
  13. System nach Anspruch 12, wobei die Prozessoreinheit nach dem einem Feststellen, dass die erste Heatmap eine höhere Datennutzungs-Intensität anzeigt als der erste vorab festgelegte Schwellenwert, feststellt, dass zumindest eine vorab festgelegte Anzahl von granularen Abschnitten des ausgewählten der Gruppe von Datensegmenten intensiver als der erste vorab festgelegte Schwellenwert genutzt wird.
  14. System nach Anspruch 11, wobei die Prozessoreinheit die häufchenweise intensiv genutzten Gruppen von Datensegmenten unter Verwendung einer zweiten Heatmap ermittelt, die eine kleinere Granularität als die erste, größte Granularität der ersten Heatmap aufweist.
  15. System nach Anspruch 14, wobei die Prozessoreinheit nach Ermitteln der häufchenweise intensiv genutzten Gruppen von Datensegmenten feststellt, dass die erste Heatmap keine höhere Datennutzungs-Intensität anzeigt als der vorab festgelegte Schwellenwert, jedoch zumindest ein Abschnitt der zweiten Heatmap eine höhere Datennutzungs-Intensität anzeigt als ein zweiter vorab festgelegter Schwellenwert.
  16. System nach Anspruch 14, wobei die Prozessoreinheit die selten intensiv genutzten Gruppen von Datensegmenten durch ein Feststellen ermittelt, dass weder die erste Heatmap noch die zweite Heatmap eine höhere Datennutzungs-Intensität anzeigt als der erste bzw. der zweite vorab festgelegte Schwellenwert.
  17. System nach Anspruch 10, wobei die Prozessoreinheit eine ausgewählte der Gruppen von Datensegmenten zwischen dem SSD-Abschnitt und dem Zwischenspeicher mit niedrigerer Geschwindigkeit migriert durch: wenn die ausgewählte Gruppe im Zwischenspeicher mit niedrigerer Geschwindigkeit zwischengespeichert ist und festgestellt wird, dass sie gleichmäßig intensiv genutzt und häufchenweise intensiv genutzt wird, Migrieren der ausgewählten Gruppe aus dem Zwischenspeicher mit niedrigerer Geschwindigkeit in den SSD-Abschnitt, wobei im Zwischenspeicher mit niedrigerer Geschwindigkeit enthaltene Daten nicht verarbeitet werden, bis die ausgewählte Gruppe vollständig in den SSD-Abschnitt migriert wurde.
  18. System nach Anspruch 10, wobei die Prozessoreinheit eine ausgewählte der Gruppen von Datensegmenten zwischen dem SSD-Abschnitt und dem Zwischenspeicher mit niedrigerer Geschwindigkeit migriert durch: wenn die ausgewählte Gruppe im SSD-Abschnitt zwischengespeichert ist und festgestellt wird, dass sie selten intensiv genutzt wird, Migrieren der ausgewählten Gruppe aus dem SSD-Abschnitt in den Zwischenspeicher mit niedrigerer Geschwindigkeit und danach Migrieren der ausgewählten Gruppe aus dem SSD-Abschnitt auf eine Festplatteneinheit (HDD, Hard Disk Device).
  19. Computerprogrammprodukt zum Verarbeiten von Daten in einer Datenverarbeitungs-Speicherumgebung durch eine Prozessoreinheit, wobei die Datenverarbetungs-Speicherumgebung zumindest Zwischenspeicher mit hoher Geschwindigkeit und niedrigerer Geschwindigkeit und mehrstufige Speicherebenen enthält, wobei das Computerprogrammprodukt ein nichtflüchtiges computerlesbares Speichermedium aufweist, auf dem computerlesbare Programmcodeabschnitte gespeichert sind, wobei die computerlesbaren Programmcodeabschnitte aufweisen: einen ersten ausführbaren Abschnitt, der Gruppen von Datensegmenten zwischen den mehrstufigen Speicherebenen migriert, so dass gleichmäßig intensiv genutzte der Gruppen von Datensegmenten migriert werden, um einen Halbleiterdatenträger-(SSD-)Abschnitt der mehrstufigen Speicherebenen zu verwenden, häufchenweise intensiv genutzte der Gruppen von Datensegmenten migriert werden, um den SSD-Abschnitt zu verwenden, während der Zwischenspeicher mit niedrigerer Geschwindigkeit für einen restlichen Abschnitt der häufchenweise intensiv genutzten verwendet wird, und dass selten intensiv genutzten der Gruppen von Datensegmenten migriert werden, um den Zwischenspeicher mit niedrigerer Geschwindigkeit zu verwenden, während eine niedrigere der mehrstufigen Speicherebenen für einen restlichen Abschnitt der selten intensiv genutzten verwendet wird.
  20. Computerprogrammprodukt nach Anspruch 19, das ferner einen zweiten ausführbaren Abschnitt enthält, der die gleichmäßig intensiv genutzten Gruppen von Datensegmenten unter Verwendung einer ersten Heatmap für ein ausgewähltes der Gruppe der Datensegmente ermittelt, wobei die Heatmap eine erste, größte Granularität aufweist.
  21. Computerprogrammprodukt nach Anspruch 20, das ferner einen dritten ausführbaren Abschnitt enthält, der die gleichmäßig intensiv genutzten Gruppen von Datensegmenten durch Feststellen ermittelt, dass eine erste Heatmap eine höhere Datennutzungs-Intensität anzeigt als ein erster vorab festgelegter Schwellenwert.
  22. Computerprogrammprodukt nach Anspruch 21, der ferner einen vierten ausführbaren Abschnitt enthält, der nach einem Feststellen, dass die erste Heatmap eine höhere Datennutzungs-Intensität anzeigt als der erste vorab festgelegte Schwellenwert, feststellt, dass zumindest eine vorab festgelegte Anzahl von granularen Abschnitten des ausgewählten der Gruppe von Datensegmenten intensiver als der erste vorab festgelegte Schwellenwert genutzt wird.
  23. Computerprogrammprodukt nach Anspruch 20, das ferner einen dritten ausführbaren Abschnitt enthält, der die häufchenweise intensiv genutzten Gruppen von Datensegmenten unter Verwendung einer zweiten Heatmap ermittelt, die eine kleinere Granularität als die erste, größte Granularität der ersten Heatmap aufweist.
  24. Computerprogrammprodukt nach Anspruch 23, das ferner einen vierten ausführbaren Abschnitt enthält, der nach Ermitteln der häufchenweise intensiv genutzten Gruppen von Datensegmenten feststellt, dass die erste Heatmap keine höhere Datennutzungs-Intensität anzeigt als der vorab festgelegte Schwellenwert, jedoch zumindest ein Abschnitt der zweiten Heatmap eine höhere Datennutzungs-Intensität anzeigt als ein zweiter vorab festgelegter Schwellenwert.
  25. Computerprogrammprodukt nach Anspruch 23, das ferner einen vierten ausführbaren Abschnitt enthält, der die selten intensiv genutzten Gruppen von Datensegmenten ermittelt, indem er festgestellt, dass weder die erste Heatmap noch die zweite Heatmap eine höhere Datennutzungs-Intensität anzeigt als der erste bzw. der zweite vorab festgelegte Schwellenwert.
  26. Computerprogrammprodukt nach Anspruch 19, das ferner einen zweiten ausführbaren Abschnitt enthält, der eine ausgewählte der Gruppen von Datensegmenten zwischen dem SSD-Abschnitt und dem Zwischenspeicher mit niedrigerer Geschwindigkeit migriert durch: wenn die ausgewählte Gruppe im Zwischenspeicher mit niedrigerer Geschwindigkeit zwischengespeichert ist und festgestellt wird, dass sie gleichmäßig intensiv genutzt und häufchenweise intensiv genutzt wird, Migrieren der ausgewählten Gruppe aus dem Zwischenspeicher mit niedrigerer Geschwindigkeit in den SSD-Abschnitt, wobei im Zwischenspeicher mit niedrigerer Geschwindigkeit enthaltene Daten nicht verarbeitet werden, bis die ausgewählte Gruppe vollständig in den SSD-Abschnitt migriert wurde.
  27. Computerprogrammprodukt nach Anspruch 19, das ferner einen zweiten ausführbaren Abschnitt enthält, der eine ausgewählte der Gruppen von Datensegmenten zwischen dem SSD-Abschnitt und dem Zwischenspeicher mit niedrigerer Geschwindigkeit migriert durch: wenn die ausgewählte Gruppe im SSD-Abschnitt zwischengespeichert ist und ermittelt wird, dass sie selten intensiv genutzt wird, Migrieren der ausgewählten Gruppe aus dem SSD-Abschnitt in den Zwischenspeicher mit niedrigerer Geschwindigkeit und danach Migrieren der ausgewählten Gruppe aus dem SSD-Abschnitt auf eine Festplatteneinheit (HDD, Hard Disk Device).
DE112014000254.2T 2013-01-22 2014-01-16 Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten Active DE112014000254B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/746,951 2013-01-22
US13/746,951 US9037791B2 (en) 2013-01-22 2013-01-22 Tiered caching and migration in differing granularities
PCT/CN2014/070714 WO2014114203A1 (en) 2013-01-22 2014-01-16 Tiered caching and migration in differing granularities

Publications (3)

Publication Number Publication Date
DE112014000254T5 true DE112014000254T5 (de) 2015-10-01
DE112014000254T8 DE112014000254T8 (de) 2016-01-28
DE112014000254B4 DE112014000254B4 (de) 2022-06-09

Family

ID=51208667

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014000254.2T Active DE112014000254B4 (de) 2013-01-22 2014-01-16 Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten

Country Status (4)

Country Link
US (4) US9037791B2 (de)
CN (1) CN104937574B (de)
DE (1) DE112014000254B4 (de)
WO (1) WO2014114203A1 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949522B1 (en) * 2011-06-21 2015-02-03 Netlogic Microsystems, Inc. Performance of a stride-based prefetcher on an out-of-order processing unit (CPU)
US9026741B1 (en) * 2012-06-30 2015-05-05 Emc Corporation System and method for warming cache
US9424201B2 (en) * 2013-03-14 2016-08-23 Nvidia Corporation Migrating pages of different sizes between heterogeneous processors
US9535856B2 (en) 2014-02-21 2017-01-03 International Business Machines Corporation Data access to a storage tier on a client in a multi-tiered storage system
US9250762B2 (en) * 2014-02-24 2016-02-02 Dataram, Inc. Graphics deterministic pre-caching
US10474569B2 (en) * 2014-12-29 2019-11-12 Toshiba Memory Corporation Information processing device including nonvolatile cache memory and processor
US10445253B2 (en) * 2016-04-20 2019-10-15 International Business Machines Corporation Cost effective service level agreement data management
US10241719B2 (en) * 2016-06-27 2019-03-26 International Business Machines Corporation Dynamic granularity for storage optimization
US10318428B2 (en) 2016-09-12 2019-06-11 Microsoft Technology Licensing, Llc Power aware hash function for cache memory mapping
US10257258B2 (en) * 2016-10-31 2019-04-09 International Business Machines Corporation Transferring data between block and file storage systems
CN108008912A (zh) * 2016-11-02 2018-05-08 华为技术有限公司 一种基于dram的存储缓存方法和智能终端
CN106527988B (zh) * 2016-11-04 2019-07-26 郑州云海信息技术有限公司 一种固态硬盘数据迁移的方法及装置
US10042578B2 (en) 2016-11-08 2018-08-07 International Business Machines Corporation Extent migration in multi-tier storage systems
US10108368B2 (en) * 2017-01-09 2018-10-23 International Business Machines Corporation Heat map transfer in space-efficient storage
US20180210836A1 (en) * 2017-01-24 2018-07-26 Microsoft Technology Licensing, Llc Thermal and reliability based cache slice migration
CN108733308B (zh) 2017-04-17 2021-06-22 伊姆西Ip控股有限责任公司 用于管理盘池的方法和设备
US10241561B2 (en) 2017-06-13 2019-03-26 Microsoft Technology Licensing, Llc Adaptive power down of intra-chip interconnect
US10705767B2 (en) * 2017-07-20 2020-07-07 International Business Machines Corporation Optimizing user satisfaction when training a cognitive hierarchical storage-management system
US10621059B2 (en) * 2017-12-19 2020-04-14 International Business Machines Corporation Site recovery solution in a multi-tier storage environment
JP2019191886A (ja) * 2018-04-24 2019-10-31 富士通株式会社 情報処理装置,情報処理方法およびプログラム
US10922268B2 (en) 2018-08-30 2021-02-16 International Business Machines Corporation Migrating data from a small extent pool to a large extent pool
US11216314B2 (en) * 2018-11-02 2022-01-04 EMC IP Holding Company LLC Dynamic reallocation of resources in accelerator-as-a-service computing environment
CN110209345A (zh) * 2018-12-27 2019-09-06 中兴通讯股份有限公司 数据存储的方法及装置
US11016691B2 (en) * 2019-01-25 2021-05-25 International Business Machines Corporation Migrating data from a large extent pool to a small extent pool
CN110377227B (zh) * 2019-06-13 2020-07-07 阿里巴巴集团控股有限公司 一种数据分块存储方法、装置及电子设备
US11789632B1 (en) * 2020-07-12 2023-10-17 Lightbits Labs Ltd. System and method for data placement in multiple tier storage systems
US11526303B2 (en) * 2020-09-02 2022-12-13 Johnson Controls Tyco IP Holdings LLP Systems and methods for multi-tiered data storage abstraction layer
CN115033608B (zh) * 2022-08-12 2022-11-04 广东采日能源科技有限公司 一种储能系统信息的分级处理方法及系统

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778210A (en) * 1996-01-11 1998-07-07 Intel Corporation Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US6065019A (en) 1997-10-20 2000-05-16 International Business Machines Corporation Method and apparatus for allocating and freeing storage utilizing multiple tiers of storage organization
US6981096B1 (en) 1998-10-02 2005-12-27 International Business Machines Corporation Mapping and logic for combining L1 and L2 directories and/or arrays
US7340593B2 (en) * 2004-04-09 2008-03-04 Dell Products L.P. Hard drive reset cache
US7380047B2 (en) * 2004-09-30 2008-05-27 International Business Machines Corporation Apparatus and method for filtering unused sub-blocks in cache memories
US7392353B2 (en) * 2004-12-03 2008-06-24 International Business Machines Corporation Prioritization of out-of-order data transfers on shared data bus
US8832247B2 (en) 2006-03-24 2014-09-09 Blue Coat Systems, Inc. Methods and systems for caching content at multiple levels
US7616470B2 (en) 2006-06-16 2009-11-10 International Business Machines Corporation Method for achieving very high bandwidth between the levels of a cache hierarchy in 3-dimensional structures, and a 3-dimensional structure resulting therefrom
US8627002B2 (en) * 2006-10-12 2014-01-07 International Business Machines Corporation Method to increase performance of non-contiguously written sectors
CN100451976C (zh) 2007-07-23 2009-01-14 清华大学 基于海量数据分级存储系统的迁移管理方法
US8615678B1 (en) * 2008-06-30 2013-12-24 Emc Corporation Auto-adapting multi-tier cache
JP5229731B2 (ja) 2008-10-07 2013-07-03 インターナショナル・ビジネス・マシーンズ・コーポレーション 更新頻度に基づくキャッシュ機構
US8245008B2 (en) 2009-02-18 2012-08-14 Advanced Micro Devices, Inc. System and method for NUMA-aware heap memory management
US8429348B2 (en) * 2009-03-13 2013-04-23 International Business Machines Corporation Method and mechanism for delaying writing updates to a data cache
US9582222B2 (en) 2009-04-30 2017-02-28 Western Digital Technologies, Inc. Pre-cache similarity-based delta compression for use in a data storage system
WO2010140938A1 (en) 2009-06-03 2010-12-09 Telefonaktiebolaget L M Ericsson (Publ) Method and node for distributing electronic content in a content distribution network
US8255627B2 (en) * 2009-10-10 2012-08-28 International Business Machines Corporation Secondary cache for write accumulation and coalescing
US8627004B2 (en) * 2010-01-07 2014-01-07 International Business Machines Corporation Extent migration for tiered storage architecture
US8572241B2 (en) 2010-09-17 2013-10-29 Microsoft Corporation Integrating external and cluster heat map data
US8284627B2 (en) 2010-10-22 2012-10-09 International Business Machines Corporation Reducing energy consumption and optimizing workload and performance in multi-tier storage systems using extent-level dynamic tiering
US8380958B2 (en) 2010-11-09 2013-02-19 International Business Machines Corporation Spatial extent migration for tiered storage architecture
US8984225B2 (en) 2011-06-22 2015-03-17 Avago Technologies General Ip (Singapore) Pte. Ltd. Method to improve the performance of a read ahead cache process in a storage array
CN102831088A (zh) 2012-07-27 2012-12-19 国家超级计算深圳中心(深圳云计算中心) 基于混合存储器的数据迁移方法和装置

Also Published As

Publication number Publication date
WO2014114203A1 (en) 2014-07-31
CN104937574B (zh) 2017-06-16
DE112014000254T8 (de) 2016-01-28
US9037791B2 (en) 2015-05-19
US20150227467A1 (en) 2015-08-13
US9471506B2 (en) 2016-10-18
US20150286418A1 (en) 2015-10-08
CN104937574A (zh) 2015-09-23
US9465554B2 (en) 2016-10-11
US9285998B2 (en) 2016-03-15
DE112014000254B4 (de) 2022-06-09
US20140208018A1 (en) 2014-07-24
US20160132273A1 (en) 2016-05-12

Similar Documents

Publication Publication Date Title
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112012004571B4 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE60313783T2 (de) Bewegen von daten zwischen speichereinheiten
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE112013002355B4 (de) Steigern von Datenzwischenspeicherungsleistung
DE112011102487T5 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE112015000710T5 (de) Verteiltes Speichersystem
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112013006655T5 (de) Speichervorrichtung und Verfahren zum Steuern der Speichervorrichtung
DE112015004863T5 (de) Verfolgen der Vermischung von Schreibvorgängen und Entabbildungsbefehlen über Stromversorgungszyklen
DE102012218269B4 (de) Schnittstelle zur Verwaltung von Datenverschiebung in einem Speichersystem mit thin provisioning
DE112018003524T5 (de) Dynamische datenverlagerung unter verwendung von speicherbänken auf cloud-grundlage
DE102013215535A1 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE112010003577T5 (de) Datenverwaltung in Halbleiterspeicher-Einheiten und mehrstufigen Speichersystemen
DE102013106242A1 (de) Halbleiterlaufwerk mit Konvertierungsschicht (ETL) und Umleitung von temporären Dateien zur Verschleissminderung von Flashspeichern
DE112008000180T5 (de) Verfahren und System für die Umsetzung eines Fast-Wakeup eines Flashspeichersystems
DE112010003887T5 (de) Datenverwaltung in Halbleiter-Speichereinheiten
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112017000167B4 (de) Verteilte Datendeduplizierung in einem Prozessorraster

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0013000000

Ipc: G06F0012080000

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