DE112021005128T5 - Verwalten eines am längsten nicht verwendeten daten-caches mit einempersistenten hauptteil - Google Patents

Verwalten eines am längsten nicht verwendeten daten-caches mit einempersistenten hauptteil Download PDF

Info

Publication number
DE112021005128T5
DE112021005128T5 DE112021005128.8T DE112021005128T DE112021005128T5 DE 112021005128 T5 DE112021005128 T5 DE 112021005128T5 DE 112021005128 T DE112021005128 T DE 112021005128T DE 112021005128 T5 DE112021005128 T5 DE 112021005128T5
Authority
DE
Germany
Prior art keywords
data
memory
cache
stored
cache management
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.)
Pending
Application number
DE112021005128.8T
Other languages
English (en)
Inventor
Effi Ofer
Ety KHAITZIN
Ohad Eytan
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 DE112021005128T5 publication Critical patent/DE112021005128T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Ein Verfahren zum Verwalten eines Daten-Caches, wobei das Verfahren aufweist: Speichern einer Cache-Verwaltungsliste, die eine Mehrzahl von Einträgen aufweist und über Folgendes verfügt: einen in einem ersten Speicher gespeicherten Endteil, der in dem Daten-Cache gespeicherte Datenelemente dokumentiert, auf die kürzlich zugegriffen wurde, einen in einem zweiten Speicher gespeicherten Hauptteil, der in dem Daten-Cache gespeicherte Datenelemente dokumentiert, auf die weniger kürzlich zugegriffen wurde, und einen im ersten Speicher gespeicherten Kopfteil, der im Daten-Cache gespeicherte Datenelemente dokumentiert, auf die am längsten nicht zugegriffen wurde; und in jeder einer Mehrzahl von Iterationen: Empfangen mindestens einer Datenzugriffsanforderung; Dokumentieren der Datenzugriffsanforderung im Endteil; Identifizieren einer Mehrzahl von im Hauptteil und Endteil enthaltenen doppelten Einträgen; und Entfernen jedes der Mehrzahl von doppelten Einträgen aus dem Hauptteil im zweiten Speicher gemäß einer physischen Organisation der Mehrzahl von doppelten Einträgen im zweiten Speicher.

Description

  • HINTERGRUND
  • Einige in der vorliegenden Offenbarung beschriebene Ausführungsformen beziehen sich auf Verwalten eines Daten-Caches und insbesondere, jedoch nicht ausschließlich, auf Verwaltung eines Daten-Caches unter Verwendung eines Schnellzugriffsspeichers.
  • In der Datenverarbeitung handelt es sich bei einem Daten-Cache um eine Komponente, die Daten vorübergehend speichert, sodass künftige Anforderungen nach diesen Daten schneller bearbeitet werden können als die erste Anforderung nach diesen Daten. Ein Daten-Cache kann Hardware, Software oder beides aufweisen. Die in einem Daten-Cache gespeicherten Daten können das Ergebnis einer früheren Berechnung oder eine Kopie von an anderer Stelle gespeicherten Daten sein.
  • Aus Gründen der Kürze wird im Folgenden der Begriff „Cache“ für „Daten-Cache“ verwendet, und die Begriffe werden austauschbar verwendet.
  • Ein Cache-Client ist eine Entität, die auf im Cache gespeicherte Daten zugreift, z.B. eine Verarbeitungseinheit oder eine Anwendung. In einigen Systemen befindet sich ein Cache lokal bei einem Cache-Client und getrennt von einem Massenspeicher, in dem die Daten gespeichert sind, sodass der Cache-Client schneller auf eine Kopie der im Cache gespeicherten Daten zugreifen kann als beim Zugriff auf die Daten im Massenspeicher. Wenn die Daten zum Beispiel auf einem Festplattenlaufwerk (hard disk drive - HDD) gespeichert werden, können einige Daten in einem Cache gespeichert werden, der sich in einem Direktzugriffsspeicher (RAM) befindet. Der Zugriff auf einen RAM ist wesentlich schneller als der Zugriff auf ein HDD, sodass Daten, die im Cache eines RAM gespeichert sind, schneller bereitgestellt werden können als andere Daten, die auf einem HDD gespeichert sind. Ein weiteres Beispiel ist das Implementieren eines Caches, der einen Schnellspeicher verwendet, der teurer ist als ein anderer Speicher mit geringerer Zugriffszeit, der zum Speichern der Daten verwendet wird. Ein weiteres Beispiel ist das Speichern von Daten in einem mit einem Netzwerk verbundenen Speicher. Ein Cache-Client kann eine Kopie eines Teils der Daten in einem lokalen Speicher speichern, der flüchtig oder nichtflüchtig sein kann. In diesem Beispiel müssen für den Zugriff auf Daten im lokalen Speicher keine Daten über ein Netzwerk übertragen werden, sodass der Zugriff schneller sein kann.
  • Ein Cache darf keine Kopien aller im Massenspeicher gespeicherten Daten speichern. Einige Caches werden verwendet, um Daten zu speichern, auf die der Cache-Client kürzlich zugegriffen hat oder auf die er häufig zugreift, um die Leistung des Cache-Clients zu verbessern, indem solche Anforderungen schneller bearbeitet werden, wie wenn sie aus dem Massenspeicher bereitgestellt werden. Wenn ein Cache Kopien nur eines Teils der im Massenspeicher gespeicherten Daten speichert, muss ermittelt werden, ob eine Datenzugriffsanforderung des Cache-Clients von dem Cache bereitgestellt werden kann oder ob auf den Massenspeicher der Daten zugegriffen werden muss. Der Begriff „Cache-Metadaten“ bezeichnet Informationen, die eine Mehrzahl von im Cache gespeicherten Datenelementen dokumentieren, z.B. jeweils eine Kopie eines im Massenspeicher gespeicherten Datenelements, und die zum Verwalten des Caches verwendet werden. Diese Informationen können einen Zeitpunkt des Zugriffs auf eine Kopie des Datenelements und eine Quelle des Datenelements im permanenten Speicher umfassen, z.B. eine Speicheradresse oder ein Dateiname.
  • Im Laufe der Zeit kann es vorkommen, dass ein Cache-Client häufig auf ein neues Datenelement zugreift, auf das er zuvor nicht zugegriffen hat, und es kann erforderlich sein, eine Kopie des neuen Datenelements zu dem Cache hinzuzufügen. Wenn die Kapazität des Caches begrenzt ist, kann es erforderlich sein, eine Kopie eines anderen Datenelements aus dem Cache zu entfernen, um eine Kopie des neuen Datenelements im Cache zu erzeugen. Bei einem am längsten nicht verwendeten (least-recently-used - LRU) Cache handelt es sich um einen Cache, bei dem das am längsten nicht verwendete Datenelement zuerst entfernt wird, wenn ein Datenelement aus dem Cache entfernt werden muss.
  • KURZDARSTELLUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung sind ein Verfahren, ein Computerprogrammprodukt und/oder ein System zum Verwalten eines Daten-Caches vorhanden, wobei die folgenden Operationen (nicht unbedingt in der nachstehenden Reihenfolge) durchgeführt werden: (i) Speichern einer Cache-Verwaltungsliste, die eine Mehrzahl von Einträgen aufweist, wobei die Cache-Verwaltungsliste aufweist: (a) einen Endteil, der in einem ersten Speicher gespeichert ist und eine Mehrzahl von in einem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die kürzlich zugegriffen wurde, und (b) einen Hauptteil, der in einem zweiten Speicher gespeichert ist und eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die weniger kürzlich zugegriffen wurde; (ii) in jeder Cache-Verwaltungsiteration einer Mehrzahl von Cache-Verwaltungsiterationen: (a) Empfangen einer ersten Datenzugriffsanforderung; (b) Dokumentieren der ersten Datenzugriffsanforderung im Endteil; (c) Identifizieren einer Mehrzahl von im Hauptteil und Endteil enthaltenen doppelten Einträgen, die der ersten Datenzugriffsanforderung zugehörig sind; und (d) Entfernen jedes der Mehrzahl von doppelten Einträgen aus dem Hauptteil gemäß einer physischen Organisation der Mehrzahl von doppelten Einträgen in dem zweiten Speicher.
  • Figurenliste
  • Einige Ausführungsformen werden hier nur beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Mit besonderem Bezug nunmehr auf die Zeichnungen im Einzelnen wird darauf hingewiesen, dass die dargestellten Einzelheiten beispielhaft sind und der veranschaulichenden Beschreibung von Ausführungsformen dienen. In diesem Zusammenhang zeigt die Beschreibung zusammen mit den Zeichnungen dem Fachmann auf, wie die Ausführungsformen in der Praxis umgesetzt werden können.
    • 1 ist ein Blockschaubild einer Cache-Verwaltungsliste gemäß mindestens einer Ausführungsform der vorliegenden Erfindung;
    • 2 ist ein schematischer Blockschaltplan eines Systems gemäß mindestens einer Ausführungsform der vorliegenden Erfindung;
    • 3 ist ein Ablaufplan, der einen optionalen Ablauf von Operationen zum Verwalten eines Caches gemäß mindestens einer Ausführungsform der vorliegenden Erfindung schematisch darstellt;
    • 4 ist ein Ablaufplan, der einen optionalen Ablauf von Operationen für einen Cache-Fehltreffer gemäß mindestens einer Ausführungsform der vorliegenden Erfindung schematisch darstellt;
    • 5 ist ein Ablaufplan, der einen optionalen Ablauf von Operationen zum Verwalten des Zugriffs auf eine Mehrzahl von Datenelementen schematisch darstellt; und
    • 6 ist ein Blockschaubild einer möglichen Hardware- und SoftwareUmgebung für Software und/oder Verfahren gemäß mindestens einer Ausführungsform der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung bezieht sich auf Verwenden einer Cache-Verwaltungsliste, die eine Mehrzahl von Einträgen aufweist, und insbesondere auf Verwalten eines am längsten nicht verwendeten (LRU) Caches. Die folgende Beschreibung kann jedoch auch auf andere Schemata für Cache-Ersatzrichtlinien als LRU angewandt werden, bei denen ein weiterer Text angewandt werden kann, um zwischen einer Mehrzahl von Teilen der Cache-Verwaltungsliste zu unterscheiden, z.B. zuletzt verwendet, First-in-First-out und Last-in-Last-out.
  • Ein Cache-Treffer ist ein Ereignis, bei dem der Cache-Client auf ein Datenelement zugreift, das im Cache vorhanden ist. Ein Cache-Fehltreffer ist ein Ereignis, bei dem der Cache-Client Zugriff auf ein Datenelement anfordert, das nicht im Cache vorhanden ist (ein fehlendes Datenelement). Wenn ein Cache-Fehltreffer auftritt, muss auf den Massenspeicher zugegriffen werden, um auf das fehlende Datenelement zuzugreifen. Darüber hinaus kann es erforderlich sein, eine Kopie des fehlenden Datenelements zu dem Cache hinzuzufügen.
  • Einige Ausführungsformen der vorliegenden Offenbarung beschreiben ein System und ein Verfahren zum Verwalten eines Speicher-Caches, wobei eine Menge von Metadaten, die eine Mehrzahl von Datenelementen des Caches dokumentieren, eine Größe eines ersten Speichers übersteigt, der für die Metadaten verfügbar ist. In diesen Ausführungsformen werden die Metadaten zwischen dem ersten Speicher, in dem eine Mehrzahl von Datenelementen dokumentiert wird, auf die kürzlich zugegriffen wurde, und einem zweiten Speicher aufgeteilt, in dem eine Mehrzahl von Datenelementen dokumentiert wird, auf die weniger kürzlich zugegriffen wurde. Optional werden die Metadaten im ersten und zweiten Speicher in jeder einer Mehrzahl von Cache-Verwaltungsiterationen synchronisiert.
  • Das Vorstehende und andere Aufgaben werden durch die Merkmale der unabhängigen Ansprüche umgesetzt. Weitere Implementierungsformen ergeben sich aus den abhängigen Ansprüchen, der Beschreibung und den Figuren.
  • Gemäß einem ersten Aspekt der Erfindung umfasst ein Verfahren zum Verwalten eines Daten-Caches Speichern einer Cache-Verwaltungsliste, die eine Mehrzahl von Einträgen aufweist und über einen Endteil verfügt, der in einem ersten Speicher gespeichert ist und eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die kürzlich zugegriffen wurde, sowie einen Hauptteil, der in einem zweiten Speicher gespeichert ist und eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die weniger kürzlich zugegriffen wurde. Optional umfasst das Verfahren in jeder einer Mehrzahl von Cache-Verwaltungsiterationen Empfangen von mindestens einer Datenzugriffsanforderung, Dokumentieren der mindestens einen Datenzugriffsanforderung im Endteil, Identifizieren einer Mehrzahl von im Hauptteil und Endteil enthaltenen doppelten Einträgen und Entfernen jedes der Mehrzahl von doppelten Einträgen aus dem Hauptteil im zweiten Speicher gemäß einer physischen Organisation der Mehrzahl von doppelten Einträgen im zweiten Speicher. Das Dokumentieren der Datenzugriffe im Endteil, wenn sich der Endteil im ersten Speicher befindet, ermöglicht ein Erhöhen des Durchsatzes beim Verwalten des Caches im Vergleich zu dem Fall, dass der erste Speicher nicht groß genug ist, um die gesamte Cache-Verwaltungsliste zu speichern, und sich die gesamte Cache-Verwaltungsliste im zweiten Speicher befindet, z.B. wenn der Zugriff auf den ersten Speicher schneller als der Zugriff auf den zweiten Speicher ist. Das Entfernen jedes der Mehrzahl von doppelten Einträgen aus dem Hauptteil gemäß der physischen Organisation der Mehrzahl von doppelten Einträgen im zweiten Speicher verringert den Zeitaufwand, der zum Aktualisieren des Hauptteils im Vergleich zum Entfernen der Mehrzahl von doppelten Einträgen in einer zufälligen Reihenfolge erforderlich ist.
  • Gemäß einem zweiten Aspekt der Erfindung weist ein System zum Verwalten eines Daten-Caches mindestens einen Hardware-Prozessor auf, der so ausgelegt ist, dass er eine Cache-Verwaltungsliste speichert, die eine Mehrzahl von Einträgen aufweist und über Folgendes verfügt: einen Endteil, der in einem ersten Speicher gespeichert ist, der mit dem mindestens einen Hardware-Prozessor verbunden ist, und eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die kürzlich zugegriffen wurde, und einen Hauptteil, der in einem zweiten Speicher gespeichert ist, der mit dem mindestens einen Hardware-Prozessor verbunden ist, und eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die weniger kürzlich zugegriffen wurde; und in jeder einer Mehrzahl von Cache-Verwaltungsiterationen: Empfangen mindestens einer Datenzugriffsanforderung; Dokumentieren der mindestens einen Datenzugriffsanforderung im Endteil; Identifizieren einer Mehrzahl von im Hauptteil und Endteil enthaltenen doppelten Einträgen; und Entfernen jedes der Mehrzahl von doppelten Einträgen aus dem Hauptteil im zweiten Speicher gemäß einer physischen Organisation der Mehrzahl von doppelten Einträgen im zweiten Speicher.
  • Gemäß einem dritten Aspekt der Erfindung weist ein System zum Verwalten des Zugriffs auf eine Mehrzahl von Datenelementen auf: einen Daten-Cache, der mindestens einige der Mehrzahl von Datenelementen speichert; und mindestens einen Hardware-Prozessor, der mit dem Daten-Cache verbunden und so ausgelegt ist, dass er den Daten-Cache verwaltet durch: Speichern einer Cache-Verwaltungsliste, die eine Mehrzahl von Einträgen aufweist und über einen Endteil verfügt, der in einem ersten Speicher gespeichert ist und eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die kürzlich zugegriffen wurde, und einen Hauptteil, der in einem zweiten Speicher gespeichert ist und eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die weniger kürzlich zugegriffen wurde; und in jeder einer Mehrzahl von Cache-Verwaltungsiterationen: Empfangen mindestens einer Datenzugriffsanforderung; Dokumentieren der mindestens einen Datenzugriffsanforderung im Endteil; Identifizieren einer Mehrzahl von im Hauptteil und Endteil enthaltenen doppelten Einträgen; und Entfernen jedes der Mehrzahl von doppelten Einträgen aus dem Hauptteil im zweiten Speicher gemäß einer physischen Organisation der Mehrzahl von doppelten Einträgen im zweiten Speicher. Das Verwalten des Daten-Caches wie vorstehend beschrieben ermöglicht ein Erhöhen des Durchsatzes des Systems zum Verwalten des Zugriffs auf die Mehrzahl von Datenelementen.
  • In einer Implementierungsform des ersten und zweiten Aspekts weist die Cache-Verwaltungsliste des Weiteren einen Kopfteil auf, der im ersten Speicher gespeichert ist und eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die am längsten nicht zugegriffen wurde. Das Verfahren umfasst optional weiterhin in mindestens einigen der Mehrzahl von Cache-Verwaltungsiterationen: Identifizieren einer neuen Mehrzahl von Einträgen im Hauptteil, auf die am längsten nicht zugegriffen wurde, Dokumentieren einer neuen Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen, auf die am längsten nicht zugegriffen wurde, und Kopieren der neuen Mehrzahl von Einträgen, auf die am längsten nicht zugegriffen wurde, vom Hauptteil im zweiten Speicher in den Kopfteil im ersten Speicher. Das Speichern des Kopfteils im ersten Speicher ermöglicht ein Erhöhen des Durchsatzes beim Verwalten des Caches im Vergleich zum Speichern der gesamten Cache-Verwaltungsliste im zweiten Speicher, wenn der erste Speicher nicht groß genug ist, um die gesamte Cache-Verwaltungsliste zu speichern, z.B. wenn der Zugriff auf den ersten Speicher schneller als der Zugriff auf den zweiten Speicher ist.
  • In einer anderen Implementierungsform des ersten und zweiten Aspekts umfasst das Verfahren weiterhin Kopieren des Endteils in den zweiten Speicher. Der Hauptteil wird optional im zweiten Speicher in einer Mehrzahl von Dateien gespeichert. Das Kopieren des Endteils in den zweiten Speicher weist optional Hinzufügen einer Datei, die den Endteil aufweist, zu der Mehrzahl von Dateien auf. Das Kopieren des Endteils in den zweiten Speicher ermöglicht ein Beibehalten des Endteils, wenn es sich bei dem zweiten Speicher um einen nichtflüchtigen Speicher handelt. Das Hinzufügen einer Datei ermöglicht ein Verringern des Zeitaufwands, der zum Kopieren des Endteils in den zweiten Speicher erforderlich ist, z.B. im Vergleich zum Aktualisieren bestehender Dateien.
  • In einer weiteren Implementierungsform des ersten und zweiten Aspekts umfasst das Dokumentieren der mindestens einen Datenzugriffsanforderung im Endteil: Aktualisieren eines Eintrags des Endteils und/oder Dokumentieren einer weiteren Zugriffsanforderung nach dem entsprechenden dadurch dokumentierten Datenelement und/oder Verschieben des aktualisierten Eintrags an ein Ende des Endteils und/oder Hinzufügen eines neuen Eintrags zu dem Endteil. Optional wird mindestens eine weitere Cache-Verwaltungsiteration der Mehrzahl von Cache-Verwaltungsiterationen ausgeführt, wenn festgestellt wird, dass das Endteil voll ist. Optional werden zumindest einige der Mehrzahl von Cache-Verwaltungsiterationen periodisch ausgeführt. Das Ausführen der mindestens einen weiteren Cache-Verwaltungsiteration, wenn festgestellt wird, dass das Endteil voll ist, ermöglicht ein Identifizieren eines Kandidaten für das Entfernen aus dem Hauptteil des Caches und nicht aus dem Endteil, wodurch der Durchsatz beim Verwalten des Caches durch Verringern der Wahrscheinlichkeit eines künftigen Cache-Fehltreffers erhöht wird. Das periodische Ausführen mindestens einiger der Mehrzahl von Cache-Verwaltungsiterationen ermöglicht darüber hinaus ein Erhöhen des Durchsatzes beim Verwalten des Caches, indem ein Kandidat für das Entfernen aus dem Kopfteil identifiziert und die Wahrscheinlichkeit zum Ausführen einer Cache-Verwaltungsiteration beim Reagieren auf eine Datenzugriffsanforderung verringert wird.
  • In einer weiteren Implementierungsform des ersten und zweiten Aspekts umfasst das Verfahren weiterhin in mindestens einer Cache-Verwaltungsiteration der Mehrzahl von Cache-Verwaltungsiterationen Identifizieren einer Datenzugriffsanforderung der mindestens einen Datenzugriffsanforderung zum Anfordern des Zugriffs auf ein nicht in dem Daten-Cache gespeichertes Datenelement und Einfügen des Datenelements in den Daten-Cache. Optional weist die Cache-Verwaltungsliste des Weiteren einen Kopfteil auf, der im ersten Speicher gespeichert ist und eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die am längsten nicht zugegriffen wurde. Das Verfahren umfasst optional weiterhin in der mindestens einen Cache-Verwaltungsiteration: Identifizieren mindestens eines Eintrags des Kopfteils, der nicht im Endteil enthalten ist, und Dokumentieren des Zugriffs auf mindestens ein in dem Daten-Cache gespeichertes Datenelement sowie Entfernen des mindestens einen Eintrags aus dem Kopfteil. Optional wird mindestens noch eine weitere Cache-Verwaltungsiteration der Mehrzahl von Cache-Verwaltungsiterationen ausgeführt, wenn der mindestens eine Eintrag des Kopfteils, der nicht im Endteil enthalten ist, nicht identifiziert werden kann. Das Ausführen der mindestens noch einen weiteren Cache-Verwaltungsiteration der Mehrzahl von Cache-Verwaltungsiterationen, wenn mindestens ein Eintrag des Kopfteils, der nicht im Endteil enthalten ist, nicht identifiziert werden kann, ermöglicht ein Identifizieren eines Kandidaten für das Entfernen aus dem Hauptteil des Caches und nicht aus dem Endteil, wodurch der Durchsatz beim Verwalten des Caches durch Verringern der Wahrscheinlichkeit eines künftigen Cache-Fehltreffers erhöht wird.
  • In einer weiteren Implementierungsform des ersten und zweiten Aspekts ist ein Verhältnis zwischen einer ersten Zugriffszeit des ersten Speichers und einer zweiten Zugriffszeit des zweiten Speichers kleiner als ein Schwellenwert für das Zugriffszeitverhältnis. Das Verwenden eines ersten Speichers mit einer Zugriffszeit, bei der das Verhältnis zwischen einer ersten Zugriffszeit des ersten Speichers und einer zweiten Zugriffszeit des zweiten Speichers kleiner als ein Schwellenwert für das Zugriffszeitverhältnis ist, verringert den Zeitaufwand, der benötigt wird, um auf eine Speicherzugriffsanforderung zu reagieren, im Vergleich dazu, wenn die gesamte Cache-Verwaltungsliste im zweiten Speicher gespeichert wird.
  • In einer weiteren Implementierungsform des ersten und zweiten Aspekts wird der erste Speicher aus einer ersten Gruppe von digitalen Speichern ausgewählt, die besteht aus: einem Direktzugriffsspeicher (RAM), einem statischen RAM (SRAM), einem dynamischen RAM (DRAM), einem Festplattenlaufwerk und einer Halbleiterspeicherplatte; und der zweite Speicher wird aus einer zweiten Gruppe von digitalen Speichern ausgewählt, die besteht aus: einem DRAM, einem Festplattenlaufwerk, einer Halbleiterspeicherplatte, einem elektronisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), einem Flash-Speicher des NAND-Typs, einem mit einem Netzwerk verbundenen Speicher und einem Netzwerkspeicher.
  • In einer weiteren Implementierungsform des ersten und zweiten Aspekts wird mindestens eine der mindestens einen Datenzugriffsanforderung von einem Software-Objekt empfangen, das von dem mindestens einen Hardware-Prozessor ausgeführt wird. Die mindestens eine andere der mindestens einen Datenzugriffsanforderung wird optional von mindestens einem anderen Hardware-Prozessor empfangen, der mit dem mindestens einen Hardware-Prozessor verbunden ist. Optional ist der mindestens eine andere Hardware-Prozessor mit dem mindestens einen Hardware-Prozessor über mindestens eine digitale Datenübertragungsnetzwerk-Schnittstelle verbunden, die mit dem mindestens einen Hardware-Prozessor verbunden ist.
  • In einer Implementierungsform des dritten Aspekts ist der mindestens eine Hardware-Prozessor weiterhin so ausgelegt, dass er mindestens eine andere Datenzugriffsanforderung empfängt, den Zugriff auf mindestens ein Datenelement der Mehrzahl von Datenelementen anfordert; das mindestens eine Datenelement in den mindestens einigen im Daten-Cache gespeicherten Datenelementen identifiziert und auf das mindestens eine Datenelement im Daten-Cache als Reaktion auf die mindestens eine Datenzugriffsanforderung zugreift. Das Zugreifen auf das Datenelement im Daten-Cache erhöht den Durchsatz des Systems für den Zugriff auf die Mehrzahl von Datenelementen, indem die Anzahl der Datenelement in einem anderen Speicher verringert wird, z.B. wenn der Speicher entfernt zu dem mindestens einen Hardware-Prozessor angeordnet ist.
  • Andere Systeme, Verfahren, Merkmale und Vorteile der vorliegenden Offenbarung ergeben sich für den Fachmann bei der Betrachtung der folgenden Zeichnungen und der ausführlichen Beschreibung. Es ist beabsichtigt, dass alle diese zusätzlichen Systeme, Verfahren, Merkmale und Vorteile in dieser Beschreibung enthalten sind, in den Anwendungsbereich der vorliegenden Offenbarung fallen und durch die beigefügten Ansprüche geschützt sind.
  • Sofern nicht anders definiert, haben alle hier verwendeten technischen und/oder wissenschaftlichen Begriffe die gleiche Bedeutung, wie sie von einem Fachmann in den einschlägigen Fachgebieten allgemein verstanden wird. Verfahren und Materialien, die den hier beschriebenen ähnlich oder ihnen gleichwertig sind, können in der Praxis oder bei der Prüfung von Ausführungsformen zwar verwendet werden, im Folgenden werden jedoch beispielhafte Verfahren und/oder Materialien beschrieben. Im Falle von Konflikten ist die Patentschrift einschließlich der Definitionen maßgeblich. Darüber hinaus dienen die Materialien, Verfahren und Beispiele lediglich der Veranschaulichung und sollen nicht einschränkend sein.
  • Eine Möglichkeit, einen Cache zu verwalten, besteht darin, eine Cache-Verwaltungsliste zu verwalten, die eine Mehrzahl von Einträgen aufweist, von denen jeder ein im Cache gespeichertes Datenelement dokumentiert. Jeder Eintrag kann eine Dokumentation des letzten Zugriffs auf das jeweilige Datenelement durch einen oder mehrere Daten-Clients aufweisen, die den Daten-Cache verwenden. Die Cache-Verwaltungsliste kann sortiert sein und einen Anfang und ein Ende haben, sodass neue Einträge zu einem Teil der Cache-Verwaltungsliste an deren Ende hinzugefügt werden, der auch als Endteil bezeichnet wird. In einer solchen Cache-Verwaltungsliste weist ein weiterer Teil am Anfang der Liste, auch Kopfteil genannt, die ältesten Einträge der Mehrzahl von Einträgen auf. Es wird nunmehr Bezug auf 1 genommen, die ein Blockschaubild einer beispielhaften Cache-Verwaltungsliste 100 zeigt. In diesem Beispiel weist die Cache-Verwaltungsliste 100 einen Kopfteil 101, einen Hauptteil 102 und einen Endteil 103 auf. In diesem Beispiel weist der Kopfteil 101 mindestens einen Eintrag 111 auf, der den Zugriff auf ein zugehöriges entsprechendes Datenelement zu einem ersten Zeitpunkt dokumentiert, der mit t1 bezeichnet wird. In diesem Beispiel weist der Hauptteil 102 des Weiteren mindestens einen weiteren Eintrag 121 auf, der einen weiteren Zugriff auf ein zugehöriges entsprechendes Datenelement zu einem zweiten Zeitpunkt dokumentiert, der mit t2 bezeichnet wird. In diesem Beispiel weist der Endteil 103 weiterhin mindestens einen zusätzlichen anderen Eintrag 103 auf, der einen zusätzlichen anderen Zugriff auf ein zugehöriges zusätzliches anderes entsprechendes Datenelement zu einem dritten Zeitpunkt dokumentiert, der mit t3 bezeichnet wird.
  • Wie vorstehend beschrieben, wird bei einem LRU-Cache das am längsten nicht verwendete Datenelement zuerst entfernt, wenn ein Datenelement aus dem Cache entfernt werden muss. Ein LRU-Cache kann unter Verwendung einer Cache-Verwaltungsliste verwaltet werden, wobei der Kopfteil 101 einen oder mehrere Einträge aufweist, die ein oder mehrere Datenelemente dokumentieren, auf die am längsten nicht zugegriffen wurde, und ein oder mehrere andere Einträge, die ein oder mehrere Datenelemente dokumentieren, auf die kürzlich zugegriffen wurde, befinden sich im Endteil 103. Beispielsweise kann in der Cache-Verwaltungsliste 100 t3 gleich oder aktueller als t1 und t2 sein, d.h., t3 ist gleich oder später als t1 und t2. In diesem Beispiel kann t1 auch gleich oder weniger aktuell als t2 und t3 sein, d.h., t3 ist gleich oder früher als t2 und t3. Bei dem einen oder mehreren Datenelementen, auf die kürzlich zugegriffen wurde, kann es sich um ein oder mehrere Datenelemente handeln, auf die zuletzt zugegriffen wurde, d.h. ein Zeitpunkt, der einem Eintrag im Endteil 103 zugehörig ist, darf nicht später sein als ein anderer Zeitpunkt, der einem anderen Eintrag im Hauptteil 102 oder im Kopfteil 101 zugehörig ist. Eine Mehrzahl von Datenelementen, auf die weniger kürzlich zugegriffen wurde, kann durch eine Mehrzahl von anderen Einträgen im Hauptteil 102 der Liste dokumentiert werden. t2 kann zum Beispiel gleich oder weniger kürzlich als t3 sein, d.h., t2 ist gleich oder früher als t3.
  • Wenn ein Datenelement in einem Cache ersetzt werden muss, d.h., wenn ein oder mehrere vorhandene Datenelemente entfernt werden müssen, um an ihrer Stelle ein anderes Datenelement zu speichern, werden gemäß einigen Cache-Ersatzrichtlinien ein oder mehrere Einträge aus dem Kopfteil 103, z.B. Eintrag 131, ausgewählt, und die entsprechenden Datenelemente, die den ausgewählten Einträgen zugehörig sind, werden im Cache ersetzt. Wenn ein neues Datenelement zum Cache hinzugefügt wird, wird in solchen Richtlinien ein Eintrag, der den Zugriff auf das neue Datenelement dokumentiert, zum Endteil 101 hinzugefügt.
  • Um den Durchsatz eines Cache-Clients zu erhöhen, der auf den Cache zugreift, wird die Cache-Verwaltungsliste in der Regel im Arbeitsspeicher oder einem Speicher gespeichert, auf den der Cache-Client schnellen Zugriff hat. Wenn es sich bei dem Cache-Client zum Beispiel um einen Hardware-Prozessor handelt, kann die Cache-Verwaltungsliste in einer lokalen Arbeitsspeicherkomponente gespeichert werden, die elektrisch mit dem Hardware-Prozessor verbunden ist. Je nach Anzahl einer Mehrzahl von Datenelementen, deren Kopien im Cache gespeichert sind, und zusätzlich oder alternativ je nach Menge der Daten, die den Zugriff auf jedes Datenelement im Cache beschreiben, kann die Größe der Cache-Verwaltungsliste jedoch eine Speichergröße übersteigen, die dem Speichern der Cache-Verwaltungsliste zugeordnet ist. Im vorstehenden Beispiel kann die Größe der Cache-Verwaltungsliste eine Größe eines lokalen Arbeitsspeichers übersteigen, der dem Speichern der Cache-Verwaltungsliste zugeordnet ist.
  • Die Kosten für diesen Speicher oder Arbeitsspeicher können ein Hinderungsgrund dafür sein, die Größe des Speichers oder Arbeitsspeichers zum Speichern der Cache-Verwaltungsliste zu erhöhen, da schneller Speicher und schneller Arbeitsspeicher in der Regel teurer sind als langsamer Speicher oder Arbeitsspeicher. Eine mögliche Lösung besteht darin, die Cache-Verwaltungsliste in einem größeren Speicher, z.B. auf einem Festplattenlaufwerk, zu speichern. Ein großer Speicher ist jedoch in der Regel langsamer als ein anderer Speicher, der üblicherweise zum Speichern einer Cache-Verwaltungsliste verwendet wird. Bei einigen Technologien für große Speicher, z.B. Festplattenlaufwerke, wird die Zugriffszeit auf einen Eintrag der Cache-Verwaltungsliste darüber hinaus durch eine physische Organisation der Mehrzahl von Einträgen der Cache-Verwaltungsliste im Speicher beeinflusst. Der Zugriff auf mehr als einen der Mehrzahl von Einträgen ohne Berücksichtigung der physischen Organisation der Mehrzahl von Einträgen im Speicher kann erheblich langsamer als der Zugriff auf mehr als einen Eintrag gemäß der physischen Organisation im Speicher sein. Wenn die Cache-Verwaltungsliste zum Beispiel in einer Datei auf einem Festplattenlaufwerk gespeichert ist, kann das Öffnen und Schließen der Datei, um jeweils auf einen Eintrag zuzugreifen, erheblich langsamer als das Öffnen einer Datei und der Zugriff auf alle des einen oder mehrere Einträge in der Datei vor dem Schließen der Datei sein.
  • In einigen der hier beschriebenen Ausführungsformen wird vorgeschlagen, die Cache-Verwaltungsliste zwischen zwei Speichern aufzuteilen, wobei der Endteil, der eine Mehrzahl von in dem Cache gespeicherten Datenelementen dokumentiert, auf die kürzlich zugegriffen wurde, in einem ersten Speicher enthalten ist, und der Hauptteil, der eine Mehrzahl von in dem Cache gespeicherten Datenelementen dokumentiert, auf die weniger kürzlich zugegriffen wurde, in einem zweiten Speicher enthalten ist. Der erste Speicher kann schneller sein als der zweite Speicher, sodass eine erste Zugriffszeit, die eine Zeitspanne angibt, die zum Abrufen von Daten aus dem ersten Speicher erforderlich ist, kürzer sein kann als eine zweite Zugriffszeit, die eine Zeitspanne angibt, die zum Abrufen von Daten aus dem zweiten Speicher erforderlich ist. Der erste Speicher kann wesentlich schneller als der zweite Speicher sein, sodass ein Verhältnis zwischen der ersten Zugriffszeit und der zweiten Zugriffszeit unter einem Schwellenwert für das Zugriffszeitverhältnis liegt, z.B. unter 0,1 oder unter 0,01, d.h., der erste Speicher ist mindestens 10-mal bzw. 100-mal schneller als der zweite Speicher. Bei dem ersten Speicher kann es sich zum Beispiel um einen statischen RAM (SRAM) und beim zweiten Speicher um einen RAM handeln. In einem anderen Beispiel handelt es sich bei dem ersten Speicher um einen RAM und beim zweiten Speicher um ein HDD oder eine Halbleiterspeicherplatte (SSD). In einem anderen Beispiel handelt es sich bei dem ersten Speicher um eine SSD mit einer kürzeren Zugriffszeit als eine andere SSD, die für den zweiten Speicher verwendet wird.
  • In diesen Ausführungsformen werden eine oder mehrere Datenzugriffsanforderungen im Endteil dokumentiert. Wenn sich das Datenelement, auf das zugegriffen wird, im Cache befindet (Cache-Treffer), wird der Zugriff durch Hinzufügen eines Eintrags zum Endteil oder Aktualisieren eines vorhandenen Eintrags, z.B. durch Verschieben an ein Ende des Endteils, dokumentiert. Wenn ein Datenelement zum Cache hinzugefügt wird, wird ein Eintrag, der den Zugriff auf das Datenelement dokumentiert, zum Endteil hinzugefügt. Ein Eintrag gilt als Duplikat eines anderen Eintrags, wenn der Eintrag und der andere Eintrag beide den Zugriff auf dasselbe Datenelement dokumentieren. Der Eintrag und der andere Eintrag können unterschiedliche Zugriffe auf dasselbe Datenelement dokumentieren. Das Dokumentieren der Datenzugriffe im Endteil, wenn sich der Endteil im ersten Speicher befindet, ermöglicht ein Erhöhen des Durchsatzes beim Verwalten des Caches im Vergleich zu dem Fall, dass der erste Speicher nicht groß genug ist, um die gesamte Cache-Verwaltungsliste zu speichern, und sich die gesamte Cache-Verwaltungsliste im zweiten Speicher befindet, z.B. wenn der Zugriff auf den ersten Speicher schneller als der Zugriff auf den zweiten Speicher ist.
  • Da Datenzugriffe nur im Endteil dokumentiert werden, kann der Endteil im Laufe der Zeit einen oder mehrere Einträge aufweisen, die Duplikate eines oder mehrerer Einträge im Hauptteil sind. In der vorliegenden Offenbarung wird in einigen hier beschriebenen Ausführungsformen vorgeschlagen, eine Mehrzahl von doppelten Einträgen, die im Hauptteil und im Endteil enthalten sind, zu identifizieren und jeden der Mehrzahl von doppelten Einträgen aus dem Hauptteil im zweiten Speicher zu entfernen. Optional erfolgt das Entfernen jedes der Mehrzahl von doppelten Einträgen aus dem Hauptteil gemäß einer physischen Organisation der Mehrzahl von doppelten Einträgen im zweiten Speicher. Wenn sich die Mehrzahl von doppelten Einträgen zum Beispiel in einer Mehrzahl von Dateien im zweiten Speicher befindet, kann das Entfernen jedes der Mehrzahl von doppelten Einträgen einmaliges Öffnen jeder der Mehrzahl von Dateien und Entfernen aller der Mehrzahl von doppelten Einträgen in der Datei vor dem Schließen der Datei aufweisen. Das Entfernen jedes der Mehrzahl von doppelten Einträgen aus dem Hauptteil gemäß der physischen Organisation der Mehrzahl von doppelten Einträgen im zweiten Speicher verringert den Zeitaufwand, der zum Aktualisieren des Hauptteils im Vergleich zum Entfernen der Mehrzahl von doppelten Einträgen in einer zufälligen Reihenfolge erforderlich ist.
  • Das Identifizieren der Mehrzahl von doppelten Einträgen und das Entfernen der Mehrzahl von doppelten Einträgen aus dem Hauptteil erfolgen optional in jeder einer Mehrzahl von Cache-Verwaltungsiterationen (hier manchmal als Verwaltungsiterationen bezeichnet). Optional werden eine oder mehrere der Mehrzahl von Verwaltungsiterationen periodisch ausgeführt. Optional werden eine oder mehrere andere der Mehrzahl von Verwaltungsiterationen ausgeführt, wenn festgestellt wird, dass der Endteil voll ist, z.B. wenn ein neuer Eintrag zum Endteil hinzugefügt werden muss oder wenn ein neuer Eintrag zum Endteil hinzugefügt wurde. Der Endteil wird optional in den zweiten Speicher kopiert, z.B. wenn es sich bei dem zweiten Speicher um einen nichtflüchtigen Speicher handelt, z.B. ein HDD oder eine SSD, und der zweite Speicher ein flüchtiger Speicher ist, z.B. ein RAM.
  • In einigen Ausführungsformen wird der Kopfteil der Cache-Verwaltungsliste darüber hinaus im ersten Speicher gespeichert. Optional wird eine Kopie des Kopfteils im ersten Speicher gespeichert. Wenn ein Datenelement aus dem Cache entfernt werden muss, werden optional ein oder mehrere Einträge im Kopfteil und nicht im Endteil identifiziert, wobei der eine oder mehrere Einträge den Zugriff auf das Datenelement dokumentieren. Wenn das Datenelement aus dem Cache entfernt wird, werden optional der eine oder mehrere Einträge aus dem Kopfteil entfernt. Das Speichern des Kopfteils im ersten Speicher ermöglicht ein Erhöhen des Durchsatzes beim Verwalten des Caches im Vergleich zum Speichern der gesamten Cache-Verwaltungsliste im zweiten Speicher, wenn der erste Speicher nicht groß genug ist, um die gesamte Cache-Verwaltungsliste zu speichern, z.B. wenn der Zugriff auf den ersten Speicher schneller als der Zugriff auf den zweiten Speicher ist.
  • Optional werden eine oder mehrere zusätzliche andere der Mehrzahl von Cache-Verwaltungsiterationen ausgeführt, wenn festgestellt wird, dass der Kopfteil leer ist.
  • Bevor mindestens eine Ausführungsform ausführlich beschrieben wird, sei darauf hingewiesen, dass die Ausführungsformen in ihrer Anwendung nicht auf die Einzelheiten des Aufbaus und die Anordnung der in der folgenden Beschreibung aufgeführten und/oder in den Zeichnungen und/oder den Beispielen dargestellten Komponenten und/oder Verfahren beschränkt sind. Die hier beschriebenen Implementierungen können auch in anderen Ausführungsformen oder auf verschiedene Weise umgesetzt oder durchgeführt werden.
  • Bei den Ausführungsformen kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) aufweisen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der Ausführungsformen auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hier nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hier beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten von Ausführungsformen kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte von Ausführungsformen durchzuführen.
  • Aspekte von Ausführungsformen sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder bzw. Blockschaltpläne von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder bzw. Blockschaltpläne sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern bzw. Blockschaltplänen mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder bzw. Blockschaltplänen festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, einen Herstellungsartikel aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder bzw. Blockschaltpläne angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder bzw. Blockschaltpläne festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und Blockschaubilder bzw. Blockschaltpläne in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern bzw. Blockschaltplänen ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Implementierungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder bzw. Blockschaltpläne und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern bzw. Blockschaltplänen und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Es wird nunmehr Bezug auf 2 genommen, die einen schematischen Blockschaltplan eines beispielhaften Systems 200 gemäß einigen Ausführungsformen zeigt. In diesen Ausführungsformen ist mindestens ein Hardware-Prozessor 211 mit einem ersten Speicher 201 und einem zweiten Speicher 202 verbunden. Der erste Speicher 201 wird optional aus einer ersten Gruppe von Speichern ausgewählt, die einen RAM, einen SRAM, einen dynamischen Direktzugriffsspeicher (DRAM), ein HDD und eine SSD aufweist. Der zweite Speicher 202 wird optional aus einer zweiten Gruppe von Speichern ausgewählt, die einen DRAM, ein HDD, eine SSD, einen elektronisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), einen Flash-Speicher des NAND-Typs, einen mit einem Netzwerk verbundenen Speicher und einen Netzwerkspeicher aufweist. Der erste Speicher 201 ist optional schneller als der zweite Speicher 202, sodass eine erste Zugriffszeit des ersten Speichers 201 kürzer als eine zweite Zugriffszeit des zweiten Speichers 202 ist. Ein Verhältnis zwischen der ersten Zugriffszeit und der zweiten Zugriffszeit ist optional kleiner als ein Schwellenwert für das Zugriffszeitverhältnis. Einige Beispiele für einen Schwellenwert für das Zugriffszeitverhältnis sind 0,1, 0,5, 0,01, 0,035 und 0,0001.
  • Aus Gründen der Kürze wird im Folgenden der Begriff „Prozessor“ für „mindestens einen Hardware-Prozessor“ verwendet, und die Begriffe werden austauschbar verwendet.
  • Der Prozessor 211 ist optional mit dem Daten-Cache 210 verbunden. Der Daten-Cache 210 weist optional eine Mehrzahl von Datenelementen auf. Der Daten-Cache 210 wird optional im ersten Speicher 201 gespeichert. Der Daten-Cache 210 wird optional im zweiten Speicher 202 gespeichert. Der Daten-Cache 210 wird optional in einem anderen Speicher (nicht dargestellt) gespeichert, der mit dem Prozessor 211 verbunden ist. Der Prozessor 211 verwaltet optional den Daten-Cache 210, optional unter Verwendung der Cache-Verwaltungsliste 100. Die Cache-Verwaltungsliste 100 weist einen Endteil 103 auf, der eine Mehrzahl von im Daten-Cache 210 gespeicherten Datenelementen dokumentiert, auf die kürzlich zugegriffen wurde. Der Endteil 103 wird optional im ersten Speicher 201 gespeichert. Die Cache-Verwaltungsliste 100 weist optional einen Hauptteil 102 auf, der eine Mehrzahl von im Daten-Cache 210 gespeicherten Datenelementen dokumentiert, auf die weniger kürzlich zugegriffen wurde. Der Hauptteil 102 wird optional im zweiten Speicher 202 gespeichert. Die Cache-Verwaltungsliste 100 weist optional einen Kopfteil 101 auf, der eine Mehrzahl von im Daten-Cache 210 gespeicherten Datenelementen dokumentiert, auf die am längsten nicht zugegriffen wurde. Der Kopfteil 101 wird optional im ersten Speicher 201 gespeichert.
  • Der Prozessor 211 ist optional mit einer oder mehreren digitalen Datenübertragungsnetzwerk-Schnittstellen 205 verbunden. Aus Gründen der Kürze wird im Folgenden der Begriff „Netzwerkschnittstelle“ für „eine oder mehrere digitale Datenübertragungsnetzwerk-Schnittstellen“ verwendet, und die Begriffe werden austauschbar verwendet. Die Netzwerkschnittstelle 205 ist optional mit einem lokalen Netzwerk (LAN), z.B. ein drahtloses LAN oder ein Ethernet-LAN, verbunden. Die Netzwerkschnittstelle 205 ist optional mit einem Weitbereichsnetzwerk (WAN), z.B. ein Mobilfunknetz oder das Internet, verbunden. Der erste Speicher 201 ist optional über die Netzwerkschnittstelle 205 mit dem Prozessor 211 verbunden. Der zweite Speicher 202 ist optional über die Netzwerkschnittstelle 205 mit dem Prozessor 211 verbunden.
  • Ein weiterer Prozessor 220 ist optional über die Netzwerkschnittstelle 205 mit dem Prozessor 211 verbunden. Ein weiterer Prozessor 220 greift optional auf den Daten-Cache 210 zu, optional durch Senden einer oder mehrerer Zugriffsanforderungen an den Prozessor 211.
  • Um den Daten-Cache 210 zu verwalten, implementiert das System 200 in einigen Ausführungsformen das folgende optionale Verfahren.
  • Es wird nunmehr auch auf 3 Bezug genommen, die einen Ablaufplan zeigt, der einen optionalen Ablauf des Verfahrens 300 zum Verwalten eines Caches gemäß einigen Ausführungsformen schematisch darstellt. In diesen Ausführungsformen empfängt der Prozessor 211 in Schritt 301 eine oder mehrere Datenzugriffsanforderungen. Mindesten eine der einen oder mehrere Datenzugriffsanforderungen werden von einem Software-Objekt optional empfangen, das von dem Prozessor 211 ausgeführt wird, z.B. eine Anwendung. Mindestens eine andere der einen oder mehrere Datenzugriffsanforderungen werden von dem anderen Prozessor 220 optional über die Netzwerkschnittstelle 205 empfangen.
  • In Schritt 302 dokumentiert der Prozessor 211 optional die eine oder mehrere Datenzugriffsanforderung im Endteil 103. Das Dokumentieren der einen oder mehrerer Datenzugriffsanforderungen im Endteil 103 weist optional Aktualisieren eines Eintrags des Endteils 103 auf, wobei der Eintrag eine weitere Zugriffsanforderung nach dem entsprechenden Datenelement dokumentiert, das durch den Eintrag dokumentiert wird. Das Dokumentieren der einen oder mehrerer Datenzugriffsanforderungen im Endteil 103 weist optional weiter Verschieben des aktualisierten Eintrags an ein Ende des Endteils 103 auf. Das Dokumentieren der einen oder mehrerer Datenzugriffsanforderungen im Endteil 103 weist optional Hinzufügen eines neuen Eintrags zum Endteil 103 hinzu, optional am Ende des Endteils 103.
  • Im Laufe der Zeit kann es notwendig werden, den Hauptteil 102 und den Endteil 103 zu synchronisieren. In Schritt 311 identifiziert der Prozessor 211 optional eine Mehrzahl von doppelten Einträgen im Hauptteil 102 und Endteil 103. In Schritt 312 entfernt der Prozessor 211 optional jeden der Mehrzahl von doppelten Einträgen aus dem Hauptteil 102 im zweiten Speicher 202 gemäß einer physischen Organisation der Mehrzahl von doppelten Einträgen im zweiten Speicher 202.
  • Die Schritte 301, 302, 311 und 312 werden optional in jeder einer Mehrzahl von Verwaltungsiterationen ausgeführt. Optional werden zumindest einige der Mehrzahl von Verwaltungsiterationen periodisch ausgeführt. Optional werden eine oder mehrere der Mehrzahl von Verwaltungsiterationen ausgeführt, wenn festgestellt wird, dass der Endteil 103 voll ist. In einer oder mehreren der Mehrzahl von Verwaltungsiterationen kopiert der Prozessor 211 in Schritt 313 den Endteil 103 optional in den zweiten Speicher 202, z.B. wenn es sich bei dem zweiten Speicher 202 um einen nichtflüchtigen Speicher handelt, um eine dauerhafte Kopie des Endteils 103 zu erzeugen. Der Hauptteil 102 wird optional im zweiten Speicher 202 in einer Mehrzahl von Dateien gespeichert. Das Kopieren des Endteils 103 in den zweiten Speicher 202 weist optional Hinzufügen einer Datei, die den Endteil 103 aufweist, zu der Mehrzahl von Dateien auf.
  • In mindestens einer Verwaltungsiteration der Mehrzahl von Verwaltungsiterationen können mindestens eine der einen oder mehrere Datenzugriffsanforderungen zu einem Cache-Fehltreffer führen, wobei es sich bei der mindestens einen Datenzugriffsanforderung um eine Anforderung zum Zugreifen auf ein Datenelement handelt, das nicht im Daten-Cache 210 gespeichert ist.
  • Es wird nunmehr auch auf 4 Bezug genommen, die einen Ablaufplan zeigt, der einen optionalen Ablauf von Operationen 400 für einen Cache-Fehltreffer gemäß einigen Ausführungsformen schematisch darstellt. In diesen Ausführungsformen identifiziert der Prozessor 211 in Schritt 401 eine Datenzugriffsanforderung der einen oder mehrerer Datenzugriffsanforderungen, mit der der Zugriff auf ein nicht im Daten-Cache 210 gespeichertes Datenelement angefordert wird. In Schritt 402 fügt der Prozessor 211 das Datenelement optional in den Daten-Cache ein. Um die Datenzugriffsanforderung zu dokumentieren, müssen optional ein oder mehrere Datenelemente aus dem Daten-Cache 210 entfernt werden. In Schritt 411 identifiziert der Prozessor 211 optional einen oder mehrere Einträge des Kopfteils 101, die nicht im Endteil 103 enthalten sind, wobei der eine oder mehrere Einträge den Zugriff auf mindestens ein im Daten-Cache 210 gespeichertes Datenelement dokumentieren. Der Prozessor 211 kann zum Beispiel prüfen, ob ein Eintrag im Kopfteil 101, der ein erstes Datenelement dokumentiert, auf das zugegriffen wurde, im Endteil 103 enthalten ist, und in aufsteigender Reihenfolge der Zugriffszeit fortfahren, bis er den einen oder mehrere Einträge des Kopfteils 101 identifiziert, die nicht im Endteil 103 enthalten sind. Der eine oder mehrere Einträge des Kopfteils 101 sind optional nicht im Endteil 103 und nicht im Hauptteil 102. In Schritt 413 entfernt der Prozessor 211 optional den einen oder mehrere Einträge aus dem Kopfteil 101.
  • Es wird nunmehr erneut Bezug auf 3 genommen. Es kann erforderlich sein, den im ersten Speicher 201 gespeicherten Kopfteil 101 zu aktualisieren. In mindestens einigen der Mehrzahl von Verwaltungsiterationen identifiziert der Prozessor 211 in Schritt 321 optional im Hauptteil 102 eine neue Mehrzahl von Einträgen, die am längsten nicht verwendet wurden, und in Schritt 322 kopiert der Prozessor 211 optional Kopien der neuen Mehrzahl von Einträgen, die am längsten nicht verwendet wurden, vom Hauptteil 102 im zweiten Speicher 202 in den Kopfteil 101 im ersten Speicher 201. Nach dem Kopieren der neuen Mehrzahl von Einträgen, die am längsten nicht verwendet wurden, vom Hauptteil 102 in den Kopfteil 101 entfernt der Prozessor 211 zusätzlich optional die neue Mehrzahl von Einträgen, die am längsten nicht verwendet wurden, aus dem Hauptteil 102, wodurch die neue Mehrzahl von Einträgen, die am längsten nicht verwendet wurden, wirksam vom Hauptteil 102 in den Kopfteil 101 verschoben wird. Der Prozessor 211 entfernt optional die neue Mehrzahl von Einträgen, auf die am längsten nicht zugegriffen wurde, aus dem Hauptteil 102 in eine weitere der Mehrzahl von Verwaltungsiterationen. Der Prozessor 211 führt optional mindestens einige der Mehrzahl von Verwaltungsiterationen aus, wenn in Schritt 411 der eine oder mehrere Einträge des Kopfteils 101, die nicht im Endteil 103 enthalten sind, nicht identifiziert werden können, z.B. wenn der Kopfteil 101 leer ist.
  • In einigen Ausführungsformen verwaltet das System 200 den Zugriff auf eine Mehrzahl von Datenelementen, z.B. eine Mehrzahl von Datenelementen, die in einem Cloud-gestützten Objektspeicherdienst gespeichert sind. In diesem Beispiel wird ein Großteil der Mehrzahl von Datenelementen in einem entfernt vom Prozessor 211 angeordneten Speicher gespeichert. In diesen Ausführungsformen speichert der Daten-Cache 210 eine Mehrzahl von Kopien, jeweils eine von mindestens einigen der Mehrzahl von Datenelementen. Die im Daten-Cache 210 gespeicherten Kopien weisen optional mehr als 100 Terabyte Speicherplatz auf. Der Daten-Cache 210 wird optional in einem oder mehreren HDDs und zusätzlich oder alternativ in einer oder mehreren SSDs gespeichert. Beim zweiten Speicher 202, in dem der Hauptteil 102 gespeichert ist, handelt es sich optional um einen oder mehrere HDDs und zusätzlich oder alternativ um eine oder mehrere SSDs. Bei dem ersten Speicher 201, in dem der Kopfteil 101 und der Endteil 103 gespeichert sind, handelt es sich um eine Speicherkomponente, die mit dem Prozessor 211 verbunden ist.
  • Um den Zugriff auf die Mehrzahl von Datenelementen zu verwalten, implementiert das System 200 in einigen Ausführungsformen das folgende nichtobligatorische Verfahren.
  • Es wird nunmehr auch Bezug auf 5 genommen, die einen Ablaufplan zeigt, der einen optionalen Ablauf von Operationen 500 zum Verwalten des Zugriffs auf eine Mehrzahl von Datenelementen gemäß einigen Ausführungsformen schematisch darstellt. In diesen Ausführungsformen verwaltet der Prozessor 211 in Schritt 501 den Daten-Cache 210, optional unter Verwendung des Verfahrens 300. In Schritt 510 empfängt der Prozessor 211 optional eine oder mehrere Datenzugriffsanforderungen, z.B. vom anderen Prozessor 220 oder von einem Software-Objekt, das vom Prozessor 211 ausgeführt wird. Die eine oder mehrere Datenzugriffsanforderungen fordern optional den Zugriff auf mindestens ein Datenelement der Mehrzahl von Datenelementen an. In Schritt 511 identifiziert der Prozessor 211 optional das mindestens eine Datenelement im Daten-Cache 210, d.h. in den Kopien der mindestens einigen der Mehrzahl von Datenelementen, die im Daten-Cache 210 gespeichert sind. Als Reaktion auf die eine oder mehrere Datenzugriffsanforderungen greift der Prozessor 211 in Schritt 512 optional auf das mindestens eine Datenelement im Daten-Cache 210 zu.
  • Die Beschreibungen der verschiedenen Ausführungsformen wurden zum Zwecke der Veranschaulichung vorgestellt, sollen jedoch nicht erschöpfend oder auf die Ausführungsformen beschränkt sein. Für Fachleute ist offensichtlich, dass viele Änderungen und Abwandlungen möglich sind, ohne vom Anwendungsbereich und Erfindungsgedanken der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber Technologien auf dem Markt bestmöglich zu erläutern oder es Fachleuten zu ermöglichen, die hier beschriebenen Ausführungsformen zu verstehen.
  • Es wird davon ausgegangen, dass während der Laufzeit eines aus dieser Anmeldung hervorgehenden Patents viele relevante Speicher entwickelt werden, und der Anwendungsbereich des Begriffs „Speicher“ soll von vornherein alle diese neuen Technologien einschließen. Ferner wird davon ausgegangen, dass während der Laufzeit eines aus dieser Anmeldung hervorgehenden Patents viele relevante Datenelemente und Cache-Einträge entwickelt werden, und der Anwendungsbereich der Begriffe „Datenelement“ und „Eintrag“ soll von vornherein alle diese neuen Technologien einschließen.
  • Wie hier verwendet, bezieht sich der Begriff „etwa“ auf ± 10 %.
  • Die Begriffe „aufweisen“, „aufweisend“, „umfassen“, „umfassend“, „haben“ und ihre verbundenen Begriffe bedeuten „einschließlich, ohne darauf beschränkt zu sein“. Dieser Begriff umfasst die Begriffe „bestehend aus“ und „im Wesentlichen bestehend aus“.
  • Der Ausdruck „im Wesentlichen bestehend aus“ bedeutet, dass die Zusammensetzung oder das Verfahren zusätzliche Bestandteile und/oder Schritte enthalten kann, jedoch nur, wenn die zusätzlichen Bestandteile und/oder Schritte die grundlegenden und neuartigen Eigenschaften der beanspruchten Zusammensetzung oder des beanspruchten Verfahrens nicht wesentlich verändern.
  • Wie hier verwendet, umfassen die Singularformen „ein/eine/einer/eines“ und „der/die/das“ die Pluralformen, es sei denn, der Zusammenhang zeigt eindeutig etwas anderes auf. Der Begriff „eine Verbindung“ oder „mindestens eine Verbindung“ kann eine Mehrzahl von Verbindungen, einschließlich Mischungen davon, umfassen.
  • Das Wort „beispielhaft“ wird hier in der Bedeutung „um als Beispiel, Fall oder Veranschaulichung zu dienen“ verwendet. Eine als „beispielhaft“ beschriebene Ausführungsform ist nicht unbedingt als bevorzugt oder vorteilhaft gegenüber anderen Ausführungsformen auszulegen und/oder schließt die Einbeziehung von Merkmalen anderer Ausführungsformen nicht aus.
  • Das Wort „optional“ wird hier im Sinne von „wird in einigen Ausführungsformen bereitgestellt und in anderen Ausführungsformen nicht bereitgestellt“ verwendet. Eine bestimmte Ausführungsform kann eine Mehrzahl von „optionalen“ Merkmalen enthalten, sofern diese nicht im Widerspruch zueinanderstehen.
  • In dieser Anwendung können verschiedene Ausführungsformen in einem Bereichsformat dargestellt werden. Es sei darauf hingewiesen, dass die Beschreibung im Bereichsformat lediglich der Zweckmäßigkeit und Kürze dient und nicht als unflexible Einschränkung des Anwendungsbereichs der Ausführungsformen zu verstehen ist. Daher ist davon auszugehen, dass in der Beschreibung eines Bereichs alle möglichen Teilbereiche sowie einzelne Zahlenwerte innerhalb dieses Bereichs ausdrücklich offenbart werden. Zum Beispiel ist bei der Beschreibung eines Bereichs wie 1 bis 6 davon auszugehen, dass Teilbereiche wie 1 bis 3, 1 bis 4, 1 bis 5, 2 bis 4, 2 bis 6, 3 bis 6 usw. sowie einzelne Zahlen innerhalb dieses Bereichs, z. B. 1, 2, 3, 4, 5 und 6, ausdrücklich offenbart werden. Dies gilt unabhängig vom Umfang des Bereichs.
  • Wenn hier ein Zahlenbereich angegeben wird, ist damit jede angegebene Zahl (Bruchzahl oder Ganzzahl) innerhalb des angegebenen Bereichs gemeint. Die Ausdrücke „liegt zwischen“ einer ersten angegebenen Zahl und einer zweiten angegebenen Zahl und „reicht von“ einer ersten angegebenen Zahl „bis“ zu einer zweiten angegebenen Zahl werden hier austauschbar verwendet und schließen die erste und zweite angegebene Zahl sowie alle dazwischenliegenden Bruchzahlen und Ganzzahlen ein.
  • Es sei darauf hingewiesen, dass bestimmte Merkmale von Ausführungsformen, die aus Gründen der Klarheit im Zusammenhang mit einzelnen Ausführungsformen beschrieben werden, auch in Verbindung mit einer einzelnen Ausführungsform bereitgestellt werden können. Umgekehrt können verschiedene Merkmale von Ausführungsformen, die aus Gründen der Kürze im Zusammenhang mit einer einzelnen Ausführungsform beschrieben werden, auch separat oder in jeder geeigneten Unterkombination oder als geeignet in jeder anderen beschriebenen Ausführungsform bereitgestellt werden. Bestimmte Merkmale, die im Zusammenhang mit verschiedenen Ausführungsformen beschrieben werden, sind nicht als wesentliche Merkmale dieser Ausführungsformen zu betrachten, es sei denn, die Ausführungsform ist ohne diese Elemente nicht funktionsfähig.
  • Ausführungsformen werden zwar in Verbindung mit spezifischen Ausführungsformen beschrieben, es ist jedoch offenkundig, dass viele Alternativen, Änderungen und Variationen für den Fachmann offensichtlich sind. Es ist daher beabsichtigt, alle Alternativen, Änderungen und Variationen einzubeziehen, die in den Erfindungsgedanken und den breiten Anwendungsbereich der beigefügten Ansprüche fallen.
  • Alle in dieser Beschreibung erwähnten Veröffentlichungen, Patente und Patentanmeldungen sind in ihrer Gesamtheit durch Bezugnahme in die Beschreibung aufgenommen, und zwar im gleichen Maße, als ob angegeben wäre, dass jede einzelne Veröffentlichung, jedes einzelne Patent oder jede einzelne Patentanmeldung ausdrücklich und einzeln als durch Bezugnahme aufgenommen ist. Die Nennung oder Kenntlichmachung einer Bezugnahme in dieser Anmeldung ist nicht als Annahme zu werten, dass diese Bezugnahme als Stand der Technik für die vorliegende Erfindung verfügbar ist. Soweit Abschnittsüberschriften verwendet werden, sind diese nicht unbedingt als einschränkend zu verstehen. Prioritätsdokumente dieser Anmeldung werden darüber hinaus hiermit durch Bezugnahme in ihrer Gesamteinheit einbezogen.
  • Eine Ausführungsform einer möglichen Hardware- und Softwareumgebung für Software und/oder Verfahren gemäß der vorliegenden Erfindung wird nun unter Bezugnahme auf die Figuren im Einzelnen beschrieben. 6 ist ein funktionales Blockschaubild, das verschiedene Teile des vernetzten Computersystems 600 veranschaulicht, darunter: der Client-Computer 602; das Datenübertragungsnetzwerk 604; das Speicherteilsystem 606; der Server-Computer 608; die Datenübertragungseinheit 610; der Prozessorsatz 612; der Eingabe/Ausgabe(E/A)-Schnittstellensatz 614; die Anzeigeeinheit 616; die externen Einheiten 618; der Speicher 620; der Direktzugriffsspeicher (RAM 622); der Cache 624; der persistente Speicher 626 und das Cache-Verwaltungsprogramm 628.
  • Das Speicherteilsystem 606 ist in vielerlei Hinsicht repräsentativ für die verschiedenen Computerteilsysteme in der vorliegenden Erfindung. Daher werden in den folgenden Abschnitten mehrere Teile des Speicherteilsystems 606 erörtert.
  • Bei dem Speicherteilsystem 606 kann es sich um einen Laptop-Computer, einen Tablet-Computer, einen Netbook-Computer, einen Personal Computer (PC), einen Desktop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Smartphone oder eine beliebige elektronische Einheit, die in der Lage ist, über das Datenübertragungsnetzwerk 604 Daten mit den Client-Teilsystemen auszutauschen, handeln. Das Cache-Verwaltungsprogramm 628 ist eine Sammlung von maschinenlesbaren Anweisungen und/oder Daten, die dazu dienen, bestimmte Software-Funktionen zu erzeugen, zu verwalten und zu steuern, die weiter unten im Teilabschnitt „Beispielhafte Ausführungsform“ dieses Abschnitts „Ausführliche Beschreibung“ ausführlich erläutert werden.
  • Das Speicherteilsystem 606 ist in der Lage, über das Datenübertragungsnetzwerk 604 Daten mit anderen Computerteilsystemen auszutauschen. Bei dem Datenübertragungsnetzwerk 604 kann es sich beispielsweise um ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN) wie das Internet oder eine Kombination aus beidem handeln, und es kann drahtgebundene, drahtlose oder Lichtwellenleiterverbindungen umfassen. Im Allgemeinen kann das Datenübertragungsnetzwerk 604 aus einer beliebigen Kombination von Verbindungen und Protokollen bestehen, die die Datenübertragungen zwischen Server- und Client-Teilsystemen unterstützen.
  • Das Speicherteilsystem 606 ist als Blockschaubild mit vielen Doppelpfeilen dargestellt. Diese Doppelpfeile (keine separaten Bezugsziffern) stellen eine Datenübertragungsstruktur dar, die Datenübertragungen zwischen verschiedenen Komponenten des Speicherteilsystems 606 bereitstellt. Diese Datenübertragungsstruktur kann mit einer beliebigen Architektur implementiert werden, die für ein Übertragen von Daten und/oder Steuern von Informationen zwischen Prozessoren (z.B. Mikroprozessoren, Datenübertragungs- und Netzwerkprozessoren usw.), Systemspeichern, Peripherieeinheiten und beliebigen anderen Hardwarekomponenten in einem System entworfen wurde. Die Datenübertragungsstruktur kann zum Beispiel mindestens teilweise mit einem oder mehreren Bussen umgesetzt werden.
  • Bei dem Speicher 620 und dem persistenten Speicher 626 handelt es sich um durch einen Computer lesbare Speichermedien. Im Allgemeinen kann der Speicher 620 jedes geeignete flüchtige oder nichtflüchtige durch einen Computer lesbare Speichermedium enthalten. Es sei weiterhin darauf hingewiesen, dass jetzt und/oder in naher Zukunft: (i) die externe(n) Einheit(en) 618 einen Teil oder den gesamten Speicher für das Speicherteilsystem 606 bereitstellen kann (können); und/oder (ii) Einheiten außerhalb des Speicherteilsystems 606 in der Lage sein können, Speicher für das Speicherteilsystem 606 bereitzustellen.
  • Das Cache-Verwaltungsprogramm 628 wird in einem persistenten Speicher 626 für den Zugriff und/oder die Ausführung durch einen oder mehrere der jeweiligen Computerprozessoren des Computerprozessorsatzes 612 gespeichert, in der Regel über einen oder mehrere Speicher des Speichers 620. Persistenter Speicher 626: (i) ist zumindest persistenter als ein übertragenes Signal; (ii) speichert das Programm (einschließlich seiner Soft Logic und/oder Daten) auf einem flüchtigen Medium (z.B. magnetische oder optische Domänen); und (iii) ist wesentlich weniger persistent als ein permanenter Speicher. Alternativ kann der Datenspeicher persistenter und/oder permanenter als die Art von Speicher sein, die der persistente Speicher 626 bereitstellt.
  • Das Cache-Verwaltungsprogramm 628 kann sowohl maschinenlesbare als auch durchführbare Anweisungen und/oder inhaltliche Daten (d.h. den Typ der in einer Datenbank gespeicherten Daten) umfassen. In dieser besonderen Ausführungsform enthält der persistente Speicher 626 ein magnetisches Festplattenlaufwerk. Um einige mögliche Varianten zu nennen, kann der persistente Speicher 626 einen Halbleiterdatenträger, eine Halbleiterspeichereinheit, einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM), einen Flash-Speicher und beliebige andere durch einen Computer lesbare Speichermedien enthalten, die Programmanweisungen oder digitale Informationen speichern können.
  • Die vom persistenten Speicher 626 verwendeten Medien können auch wechselbar sein. Für den persistenten Speicher 626 kann beispielsweise eine wechselbare Festplatte verwendet werden. Zu anderen Beispielen gehören optische und magnetische Platten, USB-Speichersticks und Chipkarten, die für die Übertragung auf ein anderes durch einen Computer lesbares Speichermedium, das ebenfalls Teil des persistenten Speichers 626 ist, in ein Laufwerk eingesteckt werden.
  • Die Datenübertragungseinheit 610 stellt in diesen Beispielen Datenübertragungen mit anderen Datenverarbeitungssystemen oder -einheiten außerhalb des Speicherteilsystems 606 bereit. In diesen Beispielen enthält die Datenübertragungseinheit 610 eine oder mehrere Netzwerkschnittstellenkarten. Die Datenübertragungseinheit 610 kann Datenübertragungen über physische und drahtlose Datenübertragungsverbindungen bereitstellen, und zwar entweder über eine von beiden oder beide. Alle hier beschriebenen Softwaremodule können über eine Datenübertragungseinheit (z.B. die Datenübertragungseinheit 610) auf eine persistente Speichereinheit (z.B. den persistenten Speicher 626) heruntergeladen werden.
  • Der E/A-Schnittstellensatz 614 ermöglicht die Eingabe und Ausgabe von Daten mit anderen Einheiten, die lokal zum Übertragen von Daten mit dem Server-Computer 608 verbunden sein können. Zum Beispiel stellt der E/A-Schnittstellensatz 614 eine Verbindung zu den externen Einheiten 618 bereit. Die externen Einheiten 618 umfassen Einheiten wie z.B. eine Tastatur, ein Tastenfeld, einen Touchscreen und/oder eine andere geeignete Eingabeeinheit. Die externen Einheiten 618 können auch tragbare, durch einen Computer lesbare Speichermedien wie z.B. USB-Speichersticks, tragbare optische oder magnetische Platten und Speicherkarten umfassen. Software und Daten, die zum Ausführen von Ausführungsformen der vorliegenden Erfindung verwendet werden, z.B. das Cache-Verwaltungsprogramm 628, können auf solchen tragbaren durch einen Computer lesbaren Speichermedien gespeichert werden. In diesen Ausführungsformen kann die betreffende Software ganz oder teilweise über den E/A-Schnittstellensatz 614 in den persistenten Speicher 626 geladen werden. Der E/A-Schnittstellensatz 614 ist auch zum Übertragen von Daten mit der Anzeigeeinheit 616 verbunden.
  • Die Anzeigeeinheit 616 stellt einen Mechanismus bereit, um einem Benutzer Daten anzuzeigen, und es kann sich bei der Einheit z.B. um einen Computermonitor oder einen Anzeigebildschirm eines Smartphones handeln.
  • Die hier beschriebenen Programme werden auf Grundlage der Anmeldung identifiziert, für die sie in einer bestimmten Ausführungsform der Erfindung umgesetzt werden. Es ist jedoch zu beachten, dass eine bestimmte Programmnomenklatur hier nur aus Gründen der Zweckmäßigkeit verwendet wird, daher sollte die Erfindung nicht darauf beschränkt sein, nur in einer bestimmten Anwendung verwendet zu werden, die durch diese Nomenklatur bezeichnet und/oder impliziert wird.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung vorgestellt, sollen jedoch nicht erschöpfend oder auf die Ausführungsformen beschränkt sein. Für Fachleute ist offensichtlich, dass viele Änderungen und Abwandlungen möglich sind, ohne vom Anwendungsbereich und Erfindungsgedanken der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber Technologien auf dem Markt bestmöglich zu erläutern oder es Fachleuten zu ermöglichen, die hier beschriebenen Ausführungsformen zu verstehen.
  • Die entsprechenden Strukturen, Materialien, Maßnahmen und Äquivalente aller Mittel oder Schritt-plus-Funktion-Elemente in den nachfolgenden Ansprüchen sollen alle Strukturen, Materialien oder Maßnahmen zur Durchführung der Funktion in Kombination mit anderen beanspruchten Elementen umfassen, wie dies speziell beansprucht wird. Die Beschreibung der vorliegenden Offenbarung wurde zum Zwecke der Veranschaulichung und Beschreibung vorgestellt, soll jedoch nicht erschöpfend oder auf die Offenbarung in der offenbarten Form beschränkt sein. Für Fachleute ist offensichtlich, dass viele Änderungen und Abwandlungen möglich sind, ohne vom Umfang und Gedanken der Offenbarung abzuweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Offenbarung und die praktische Anwendung am besten zu erläutern und um anderen Fachleuten ein Verständnis der Offenbarung für verschiedene Ausführungsformen mit verschiedenen Änderungen zu ermöglichen, wie sie für die jeweils beabsichtigte Verwendung geeignet sind.

Claims (20)

  1. Durch einen Computer implementiertes Verfahren zum Verwalten eines Daten-Caches, wobei das Verfahren aufweist: Speichern einer Cache-Verwaltungsliste, die eine Mehrzahl von Einträgen aufweist, wobei die Cache-Verwaltungsliste aufweist: einen in einem ersten Speicher gespeicherten Endteil, der eine Mehrzahl von in einem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die kürzlich zugegriffen wurde, und einen in einem zweiten Speicher gespeicherten Hauptteil, der eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die weniger kürzlich zugegriffen wurde; in jeder Cache-Verwaltungsiteration einer Mehrzahl von Cache-Verwaltungsiterationen: Empfangen einer ersten Datenzugriffsanforderung; Dokumentieren der ersten Datenzugriffsanforderung im Endteil; Identifizieren einer Mehrzahl von doppelten Einträgen, die der ersten Datenzugriffsanforderung zugehörig sind und im Hauptteil und Endteil enthalten sind; und Entfernen jedes der Mehrzahl von doppelten Einträgen aus dem Hauptteil gemäß einer physischen Organisation der Mehrzahl von doppelten Einträgen im zweiten Speicher.
  2. Verfahren nach Anspruch 1, wobei die Cache-Verwaltungsliste weiterhin einen Kopfteil aufweist, der im ersten Speicher gespeichert ist und eine erste Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die am längsten nicht zugegriffen wurde, wobei das Verfahren in mindestens einer Cache-Verwaltungsiteration der Mehrzahl von Cache-Verwaltungsiterationen weiterhin aufweist: Identifizieren einer zweiten Mehrzahl von Einträgen, auf die am längsten nicht zugegriffen wurde, im Hauptteil, der eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die am längsten nicht zugegriffen wurde; und Kopieren der zweiten Mehrzahl von Einträgen, auf die am längsten nicht zugegriffen wurde, aus dem Hauptteil in den Kopfteil.
  3. Verfahren nach Anspruch 1, das weiterhin Kopieren des Endteils in den zweiten Speicher aufweist.
  4. Verfahren nach Anspruch 1, wobei das Verfahren in mindestens einer Cache-Verwaltungsiteration der Mehrzahl von Cache-Verwaltungsiterationen weiterhin aufweist: Identifizieren eines nicht im Daten-Cache gespeicherten Datenelements auf der Grundlage der ersten Datenzugriffsanforderung; und Einfügen des Datenelements in den Daten-Cache.
  5. Verfahren nach Anspruch 4, wobei die Cache-Verwaltungsliste weiterhin einen Kopfteil aufweist, der im ersten Speicher gespeichert ist, wobei der Kopfteil eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die am längsten nicht zugegriffen wurde, wobei das Verfahren in mindestens einer Cache-Verwaltungsiteration der Mehrzahl von Cache-Verwaltungsiterationen weiterhin aufweist: Identifizieren mindestens eines Eintrags, der im Kopfteil und nicht im Endteil enthalten ist, wobei der Eintrag den Zugriff auf mindestens ein Datenelement dokumentiert, das im Daten-Cache gespeichert ist; und Entfernen des Eintrags aus dem Kopfteil.
  6. Verfahren nach Anspruch 1, wobei das Dokumentieren der ersten Datenzugriffsanforderung im Endteil eine Operation aufweist, die aus der Gruppe ausgewählt wird, die besteht aus: Aktualisieren eines ersten Eintrags des Endteils, wobei der erste Eintrag eine weitere Zugriffsanforderung nach einem entsprechenden dadurch dokumentierten Datenelement dokumentiert, und Verschieben des aktualisierten ersten Eintrags an ein Ende des Endteils; und Hinzufügen eines zweiten Eintrags zu dem Endteil.
  7. Verfahren nach Anspruch 1, wobei mindestens eine Cache-Verwaltungsiteration der Mehrzahl von Cache-Verwaltungsiterationen periodisch ausgeführt wird.
  8. Verfahren nach Anspruch 1, das weiterhin aufweist: Feststellen, dass der Endteil voll ist; und als Reaktion auf das Feststellen, dass der Endteil voll ist, Ausführen mindestens einer Cache-Verwaltungsiteration der Mehrzahl von Cache-Verwaltungsiterationen.
  9. Verfahren nach Anspruch 5, das weiterhin aufweist: Feststellen, dass der mindestens eine im Kopfteil enthaltene Eintrag nicht im Endteil enthalten ist; als Reaktion auf das Feststellen, dass der mindestens eine im Kopfteil enthaltene Eintrag nicht im Endteil enthalten ist, Ausführen mindestens einer Cache-Verwaltungsiteration der Mehrzahl von Cache-Verwaltungsiterationen.
  10. Verfahren nach Anspruch 1, wobei ein Verhältnis zwischen einer ersten Zugriffszeit des ersten Speichers und einer zweiten Zugriffszeit des zweiten Speichers kleiner als ein Schwellenwert für das Zugriffszeitverhältnis ist.
  11. Verfahren nach Anspruch 1, wobei: der erste Speicher aus einer ersten Gruppe von digitalen Speichern ausgewählt wird, die besteht aus: einem Direktzugriffsspeicher (RAM), einem statischen RAM (SRAM), einem ersten dynamischen RAM (DRAM), einem ersten Festplattenlaufwerk und einer ersten Halbleiterspeicherplatte; und der zweite Speicher aus einer zweiten Gruppe von digitalen Speichern ausgewählt wird, die besteht aus: dem ersten DRAM, einem zweiten DRAM, dem ersten Festplattenlaufwerk, einem zweiten Festplattenlaufwerk, der Halbleiterspeicherplatte, einer zweiten Halbleiterspeicherplatte, einem elektronisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), einem Flash-Speicher des NAND-Typs, einem mit einem Netzwerk verbundenen Speicher und einem Netzwerkspeicher.
  12. Verfahren nach Anspruch 3, wobei: der Hauptteil im zweiten Speicher in einer Mehrzahl von Dateien gespeichert wird; und das Kopieren des Endteils in den zweiten Speicher Hinzufügen einer Datei, die den Endteil aufweist, zu der Mehrzahl von Dateien aufweist.
  13. Computersystem zum Verwalten eines Daten-Caches, wobei das Computersystem aufweist: einen Prozessorsatz, der einen ersten Prozessor und einen zweiten Prozessor aufweist; und ein oder mehrere durch einen Computer lesbare Speichermedien; wobei: der Prozessorsatz strukturiert, platziert, verbunden und/oder programmiert ist, um Programmanweisungen auszuführen, die zusammen in dem einen oder mehreren durch einen Computer lesbaren Speichermedien gespeichert sind; und die Programmanweisungen Anweisungen enthalten, die programmiert sind, um Folgendes durchzuführen: Speichern einer Cache-Verwaltungsliste, die eine Mehrzahl von Einträgen aufweist, wobei die Cache-Verwaltungsliste aufweist: einen in einem ersten Speicher gespeicherten Endteil, der mit dem ersten Prozessor verbunden ist und eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die kürzlich zugegriffen wurde, und einen in einem zweiten Speicher gespeicherten Hauptteil, der mit dem ersten Prozessor verbunden ist und eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die weniger kürzlich zugegriffen wurde; in jeder Cache-Verwaltungsiteration einer Mehrzahl von Cache-Verwaltungsiterationen: Empfangen mindestens einer Datenzugriffsanforderung; Dokumentieren der Datenzugriffsanforderung im Endteil; Identifizieren einer Mehrzahl von doppelten Einträgen, die im Hauptteil und Endteil enthalten sind; und Entfernen jedes doppelten Eintrags der Mehrzahl von doppelten Einträgen aus dem Hauptteil gemäß einer physischen Organisation der Mehrzahl von doppelten Einträgen im zweiten Speicher.
  14. Computersystem nach Anspruch 13, das weiterhin Anweisungen aufweist, die programmiert sind, um Folgendes durchzuführen: Empfangen einer Datenzugriffsanforderung der mindestens einen Datenzugriffsanforderung von einem Software-Objekt, das vom ersten Prozessor ausgeführt wird.
  15. Computersystem nach Anspruch 13, das weiterhin Anweisungen aufweist, die programmiert sind, um Folgendes durchzuführen: Empfangen einer Datenzugriffsanforderung der mindestens einen Datenzugriffsanforderung vom zweiten Prozessor.
  16. Computersystem nach Anspruch 15, wobei der zweite Prozessor mit dem ersten Prozessor über mindestens eine digitale Datenübertragungsnetzwerk-Schnittstelle verbunden ist, die mit dem ersten Prozessor verbunden ist.
  17. Computersystem nach Anspruch 13, wobei das Computersystem ein Computerprogrammprodukt aufweist.
  18. Computersystem zum Verwalten des Zugriffs auf eine Mehrzahl von Datenelementen, wobei das Computersystem aufweist: einen Prozessorsatz; und ein oder mehrere durch einen Computer lesbare Speichermedien; wobei: der Prozessorsatz strukturiert, platziert, verbunden und/oder programmiert ist, um Programmanweisungen auszuführen, die zusammen in dem einen oder mehreren durch einen Computer lesbaren Speichermedien gespeichert sind; und die Programmanweisungen Anweisungen enthalten, die programmiert sind, um Folgendes durchzuführen: Speichern eines ersten Datenelements durch einen Daten-Cache; Speichern einer Cache-Verwaltungsliste, die eine Mehrzahl von Einträgen aufweist, wobei die Cache-Verwaltungsliste aufweist: einen in einem ersten Speicher gespeicherten Endteil, der eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die kürzlich zugegriffen wurde, und einen in einem zweiten Speicher gespeicherten Hauptteil, der eine Mehrzahl von in dem Daten-Cache gespeicherten Datenelementen dokumentiert, auf die weniger kürzlich zugegriffen wurde; und Durchführen einer Datenzugriffsverwaltungsoperation, die aufweist: Empfangen einer ersten Datenzugriffsanforderung; Dokumentieren der ersten Datenzugriffsanforderung im Endteil; Identifizieren einer Mehrzahl von im Hauptteil und Endteil enthaltenen doppelten Einträgen im Hinblick auf die erste Datenzugriffsanforderung; und Entfernen jedes doppelten Eintrags der Mehrzahl von doppelten Einträgen aus dem Hauptteil gemäß einer physischen Organisation der Mehrzahl von doppelten Einträgen im zweiten Speicher.
  19. Computersystem nach Anspruch 18, das weiterhin Anweisungen aufweist, die programmiert sind, um Folgendes durchzuführen: Empfangen einer zweiten Datenzugriffsanforderung, mit der Zugriff auf das erste Datenelement angefordert wird; als Reaktion auf das Empfangen der zweiten Datenzugriffsanforderung: Identifizieren des ersten im Daten-Cache gespeicherten Datenelements; und Zugreifen auf das erste Datenelement.
  20. Computersystem nach Anspruch 18, wobei das Computersystem ein Computerprogrammprodukt aufweist.
DE112021005128.8T 2020-09-29 2021-09-25 Verwalten eines am längsten nicht verwendeten daten-caches mit einempersistenten hauptteil Pending DE112021005128T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/036,108 2020-09-29
US17/036,108 US11366764B2 (en) 2020-09-29 2020-09-29 Managing a least-recently-used data cache with a persistent body
PCT/IB2021/058752 WO2022070011A1 (en) 2020-09-29 2021-09-25 Managing least-recently-used data cache with persistent body

Publications (1)

Publication Number Publication Date
DE112021005128T5 true DE112021005128T5 (de) 2023-07-20

Family

ID=80822640

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021005128.8T Pending DE112021005128T5 (de) 2020-09-29 2021-09-25 Verwalten eines am längsten nicht verwendeten daten-caches mit einempersistenten hauptteil

Country Status (6)

Country Link
US (1) US11366764B2 (de)
JP (1) JP2023542550A (de)
CN (1) CN116209987A (de)
DE (1) DE112021005128T5 (de)
GB (1) GB2614676A (de)
WO (1) WO2022070011A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115639949A (zh) * 2021-07-20 2023-01-24 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192450B1 (en) 1998-02-03 2001-02-20 International Business Machines Corporation Destage of data for write cache
GB2460464A (en) 2008-05-30 2009-12-02 Symbian Software Ltd Memory paging control method using two cache parts, each maintained using a FIFO algorithm
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
US9390116B1 (en) * 2013-09-26 2016-07-12 Emc Corporation Insertion and eviction schemes for deduplicated cache system of a storage system
US10013344B2 (en) 2014-01-14 2018-07-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Enhanced SSD caching
US9460025B1 (en) 2014-06-12 2016-10-04 Emc Corporation Maintaining a separate LRU linked list for each thread for multi-threaded access
US10645002B2 (en) * 2014-06-20 2020-05-05 Hewlett Packard Enterprise Development Lp System, apparatus and method for managing redundancy elimination in packet storage during observation of data movement
US10102147B1 (en) 2016-06-21 2018-10-16 EMC IP Holding Company LLC Phased based distributed LRU for shared cache systems
CN108008912A (zh) 2016-11-02 2018-05-08 华为技术有限公司 一种基于dram的存储缓存方法和智能终端
US10908825B2 (en) 2018-03-29 2021-02-02 Intel Corporation SSD with persistent DRAM region for metadata
CN111159066A (zh) 2020-01-07 2020-05-15 杭州电子科技大学 一种动态调整的缓存数据管理及淘汰方法

Also Published As

Publication number Publication date
GB202305749D0 (en) 2023-05-31
WO2022070011A1 (en) 2022-04-07
GB2614676A (en) 2023-07-12
US11366764B2 (en) 2022-06-21
CN116209987A (zh) 2023-06-02
US20220100677A1 (en) 2022-03-31
JP2023542550A (ja) 2023-10-10

Similar Documents

Publication Publication Date Title
DE102016103359B4 (de) Singleton-cachespeicher-verwaltungsprotokoll für hierarchische virtualisierte speichersysteme
DE112011100618B4 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE112013000900B4 (de) Bewahren von Redundanz in Datendeduplizierungssystemen unter Verwendung eines Anzeigers
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE112012002615T5 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE102015013125A1 (de) Vorrichtung, Systeme und Verfahren zur Bereitstellung eines speichereffizienten Caches
DE112011103290T5 (de) Intelligente Schreibcacheoperation für sequenzielle Datenspuren
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs
DE112018003585B4 (de) Verfahren, Computerprogrammprodukt und Speicherbandlaufwerk-Hardwareeinheit zum Verbessern der Deduplizierung eines Bandlaufwerkspeichers
DE112013000650T5 (de) Datenzwischenspeicherungsbereich
DE112014000448T5 (de) Auszugabruf beruhend auf Ähnlichkeitssuche bei Datendeduplizierung
DE102021108455B4 (de) Erzeugen von Snapshots eines Schlüssel-Wert-Index
DE112018000900T5 (de) Verarbeiten eines Befehls zum Freigeben von Speicherplatz in einem Computersystem
DE102021123290A1 (de) Schnelles verfolgen von cache zum unterstützen von aggressivem vorablesen
DE112018005768T5 (de) Copy-source-to-target-verwaltung in einem datenspeichersystem
DE102012221814A1 (de) Neuanordnung von Software-Abbildern auf der Grundlage von deren vorhergesagter Verwendung
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache

Legal Events

Date Code Title Description
R012 Request for examination validly filed