DE102023109227A1 - Verfahren zur einfügung in einen cache und entfernung aus einem cache unter verwendung einer ghost-liste in einem cache-system, das einen reversen cache und einen hauptcache umfasst - Google Patents

Verfahren zur einfügung in einen cache und entfernung aus einem cache unter verwendung einer ghost-liste in einem cache-system, das einen reversen cache und einen hauptcache umfasst Download PDF

Info

Publication number
DE102023109227A1
DE102023109227A1 DE102023109227.8A DE102023109227A DE102023109227A1 DE 102023109227 A1 DE102023109227 A1 DE 102023109227A1 DE 102023109227 A DE102023109227 A DE 102023109227A DE 102023109227 A1 DE102023109227 A1 DE 102023109227A1
Authority
DE
Germany
Prior art keywords
cache
list
entry
ghost
recent
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
DE102023109227.8A
Other languages
English (en)
Inventor
Keyur B. Desai
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.)
Dell Products LP
Original Assignee
Dell Products LP
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 Dell Products LP filed Critical Dell Products LP
Publication of DE102023109227A1 publication Critical patent/DE102023109227A1/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Abstract

Offenbart wird ein Cache-System, das einen reversen Cache und einen Hauptcache umfasst. Der reverse Cache ist konfiguriert, um Kandidaten für die Einfügung in einen Hauptcache zu identifizieren. Der reverse Cache speichert Einträge wie Fingerprints und Indexwerte, die Darstellungen von Daten sind oder diese identifizieren. Wenn auf den Eintrag mehrere Male zugegriffen wurde oder er basierend auf der Operation des reversen Caches ein Kandidat für eine Übertragung ist, werden Daten, die dem Eintrag entsprechen, in den Hauptcache übertragen. Der Hauptcache ist konfiguriert, um Einträge unter Verwendung von Neuheits-, Häufigkeits- und Zeitanpassungen zu entfernen. Der Hauptcache und der reverse Cache können auf ähnliche Weise mit einer kürzlichen Liste, einer häufigen Liste, und/oder Ghost-Listen konfiguriert sein, aber unterschiedlich arbeiten.

Description

  • GEBIET DER ERFINDUNG
  • Ausführungsformen der vorliegenden Erfindung betreffen allgemein das Cachen in Rechensystemen. Insbesondere betreffen zumindest einige Ausführungsformen der Erfindung Systeme, Hardware, Software, computerlesbare Medien und Verfahren zur Einfügung von Daten in Caches in Rechensystemen.
  • HINTERGRUND
  • In Rechensystemen werden Daten oft auf einer Speichervorrichtung, wie z. B. einer Festplatte, gespeichert. Wenn Daten gebraucht werden, wird auf die Festplatte zugegriffen, um die Daten abzurufen und zu verwenden. Um diesen Vorgang zu verbessern, kann ein Cache verwendet werden. Ein Cache ist typischerweise in einem Speicher implementiert, der schneller als die Festplatte ist. Daten von der Festplatte können im Cache gecacht werden und es kann schneller auf sie zugegriffen werden. Folglich verbessert der Cache tendenziell die Leistung eines Rechensystems zumindest dadurch, dass die Notwendigkeit umgangen wird, auf die Festplatte zuzugreifen, wenn die Daten im Cache sind.
  • Die Größe des Caches ist jedoch üblicherweise begrenzt oder seine Größe ist fixiert und typischerweise geringer als die der Festplatte. Folglich sind gegebenenfalls einige der Daten, die von einer Anwendung benötigt werden, nicht im Cache vorhanden, was zu einem Cach Miss führt. Um die Leistung zu verbessern und die Cache-Trefferrate zu verbessern, besteht der Wunsch, Daten zu speichern, auf die vom Cache zugegriffen wird. Beispielsweise kann es nützlicher sein, Daten zu cachen, die mehrere Male verwendet oder auf die mehrere Male zugegriffen wird, als Daten, die nur einmal oder zweimal verwendet oder auf die nur einmal oder zweimal zugegriffen wird. Herkömmlicherweise wird dies unter Verwendung verschiedener Entfernungsstrategien erreicht. Im Allgemeinen besteht das Ziel von Entfernungsstrategien darin, Daten zu entfernen, auf die weniger häufig zugegriffen wird als auf andere Daten im Speicher. Neben dem Entfernen von Daten kann auch das Einfügen von Daten in einen Cache die Leistung verbessern. Daten, die einmal verwendet und in den Cache eingefügt werden, können Platz im Cache verbrauchen, der besser verwendet werden könnte, um Daten zu speichern, auf die mehrere Male zugegriffen wird.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Um die Art und Weise zu beschreiben, wie zumindest einige der Vorteile und Merkmale der Erfindung erreicht werden können, folgt eine genauere Beschreibung von Ausführungsformen der Erfindung unter Bezugnahme auf spezifische Ausführungsformen davon, die in den beiliegenden Zeichnungen veranschaulicht sind. Mit dem Hinweis, dass diese Zeichnungen lediglich typische Ausführungsformen der Erfindung zeigen und daher nicht als ihren Schutzumfang einschränkend zu verstehen sind, werden Ausführungsformen der Erfindung unter Verwendung der beiliegenden Zeichnungen genauer und mit mehr Detail beschrieben und erläutert, wobei:
    • 1A Aspekte eines Caches, wie z. B. eines adaptiven Ersatz-Caches, offenbart;
    • 1B Aspekte eines reversen Caches offenbart, der gemeinsam mit einem Hauptcache verwendet werden kann;
    • 2 Aspekte der Übertragung von Einträgen von einem reversen Cache in einen Hauptcache und Aspekte des Entfernens von Einträgen aus einem reversen Cache offenbart;
    • 3 Aspekte des Betriebs eines reversen Caches zur Übertragung der Einträge in einen Hauptcache offenbart;
    • Figure 4 Aspekte des Entfernens von Einträgen aus einem reversen Cache offenbart;
    • 5 Aspekte des Betriebs eines reversen Caches offenbart, der eine kürzliche Liste und eine häufige Liste umfasst;
    • 6 Aspekte des Betriebs eines reversen Caches offenbart, der eine Ghost-Liste, eine kürzliche Liste, eine häufige Ghost-Liste und eine häufige Liste umfasst;
    • 7A Aspekte der Anpassung von Zeitstempeln in einem Cache offenbart;
    • Figure 7B weitere Aspekte der Anpassung von Zeitstempeln in einem Cache offenbart;
    • 7C Aspekte des Entfernens von Einträgen aus einem Cache offenbart;
    • 8A Aspekte des Anpassens von Zeitstempeln in einem Cache offenbart, der Ghost-Listen umfasst;
    • 8B Aspekte des Entfernens von Einträgen aus einem Cache offenbart, der Ghost-Listen umfasst;
    • 9 Aspekte des Betriebs eines Cache-Systems umfasst, das einen Hauptcache und einen reversen Cache umfasst;
    • 10 Aspekte eines Cache-Systems offenbart; und
    • 11 Aspekte einer Rechenvorrichtung oder eines Rechensystems offenbart.
  • AUSFÜHRLICHE BESCHREIBUNG EINIGER BEISPIELHAFTER AUSFÜHRUNGSFOMREN
  • Ausführungsformen der vorliegenden Erfindung betreffen im Allgemeinen Caches, Cach-Systeme und Cach-Operationen. Insbesondere betreffen zumindest einige Ausführungsformen der Erfindung Systeme, Hardware, Software, computerlesbare Medien und Verfahren für Cache-Operationen, einschließlich Cache-Eintrageoperationen, Cache-Verwaltungsoperationen, Cache-Steueroperationen, Cache-Einfügeoperationen und/oder Cache-Entfernungsoperationen.
  • Effektive Cache-Entfernungs- und/oder -Einfügeoperationen können die Leistung eines Caches, Anwendungen, die den Cache verwenden, und den Betrieb des Rechensystems verbessern. Ausführungsformen der Erfindung betreffen Cache-Operationen, sodass Elemente, die als letztes und/oder am häufigsten verwendet wurden, in den Cache eingefügt werden. Indem Daten auf überlegtere Weise in den Cache eingefügt werden, ist die Wahrscheinlichkeit höher, dass auf die Daten im Cache zugegriffen wird, und folglich wird die Cache-Trefferrate verbessert, wodurch die Leistung des Rechensystems verbessert wird.
  • Ausführungsformen der Erfindung betreffen einen reversen Cache, der im Zusammenhang mit verschiedenen Cache-Methoden beschrieben ist, einschließlich Methoden, die auf der Häufigkeit basieren, z. B. Least Frequently Used (LFU; am wenigsten häufig benutzt), Methoden, die auf Neuheit basieren, wie z. B. Least Recently Used (LRU; am wenigsten zeitnah verwendet), und Methoden, die auf Zeit basieren. Als Beispiel und ohne Einschränkung bezieht sich die Neuheit darauf, wann auf einen Eintrag im Vergleich zu anderen Einträgen zugegriffen wurde, und die Häufigkeit bezieht sich darauf, wie oft auf einen Eintrag zugegriffen wurde. Häufigkeit kann auch Aspekte von Neuheit einschließen. Die Zeit bezieht sich darauf, wie lange sich ein Eintrag schon im Cache befindet. Ausführungsformen der Erfindung betreffen außerdem die Verwendung eines reversen Caches gemeinsam mit einem Hauptcache. Der reverse Cache kann Eintragekriterien implementieren, die bestimmen, welche Einträge vom reversen Cache in den Hauptcache übertragen werden. Die Eintragekriterien basieren auf Neuheit, Häufigkeit und/oder Zeit. Entfernungen aus dem Hauptcache können basierend auf Neuheit, Häufigkeit und/oder Zeit verwaltet werden.
  • Ausführungsformen der Erfindung werden auch im Zusammenhang mit einem adaptiven Ersatz-Cache (ARC) offenbart. ARC ist ein Cache-Verwaltungsverfahren, bei dem Neuheit und Häufigkeit verwendet werden. Bevor der Betrieb eines reversen Caches beschrieben wird, wird der Betrieb eines beispielhaften Caches offenbart, der Aspekte von Ausführungsformen der Erfindung beinhaltet.
  • 1A offenbart Aspekte eines adaptiven Ersatz-Caches. Der adaptive Ersatz-Cache oder Cache 100 weist typischerweise eine fixe Größe auf, die durch den Kasten 110 dargestellt ist. Der Inhalt oder die Daten, die im Cache 100 gespeichert sind, sind durch eine Einträgeliste 112 dargestellt, die beispielsweise kürzliche Einträge 118 und häufige Einträge 120 umfasst. Die kürzlichen Einträge 118 umfassen eine kürzliche Liste 102 und eine kürzliche Ghost-Liste 116. Die häufigen Einträge 120 umfassen eine häufige Liste 104 und eine häufige Ghost-Liste 114. Die kürzliche Liste 102 und die kürzliche Ghost-Liste 116 sind typischerweise konfiguriert, um Einträge in Bezug auf Neuheit zu speichern oder zu listen. Die häufige Liste 104 und die häufige Ghost-Liste 114 sind konfiguriert, um Einträge in Bezug auf Häufigkeit und/oder Neuheit im Cache 100 zu speichern oder zu listen.
  • Der Anfang der Liste 102 und der Anfang der Liste 104 sind mit einem Marker 106 (als „!“ dargestellt) assoziiert. Der Marker 108 (als „^“ dargestellt) stellt eine Zielgröße für die kürzliche Liste 102 und/oder die kürzliche Ghost-Liste 116 dar. In einem Beispiel kann die Zielgröße der kürzlichen Liste 102 und/oder der kürzlichen Ghost-Liste 116 größer als die Zielgröße der häufigen Liste 104 und/oder der häufigen Ghost-Liste 114 sein. Im Grunde vermittelt der Marker 106 die tatsächlichen Größen der Listen 102 und 104 im Cache 100. Wie dargestellt können sich die tatsächlichen Größen der Listen 102, 116, 104 und 114 von den Zielgrößen unterscheiden. Die relativen Größen der kürzlichen Liste 102, der kürzlichen Ghost-Liste 116, der häufigen Liste 104 und/oder der häufigen Ghost-Liste 114 können sich während des Betriebs des Caches 100 ändern.
  • Wenn Einträge zu den Listen 102, 116, 104 und 114 hinzugefügt oder aus ihnen entfernt werden, kann sich ihre relative Größe ändern. Mit anderen Worten kann sich der Marker 106 während des Betriebs des Caches 100 bewegen oder verändern. Der Marker 106 kann sich auf einen Platz oder eine Position in Bezug auf die Einträgeliste 112 beziehen.
  • Einträge in der kürzlichen Liste 102 sind links vom Marker 106 veranschaulicht. Wenn ein Eintrag zu der kürzlichen Liste 102 hinzugefügt wird, wird der Eintrag am Anfang (z. B. neben dem Marker 106) hinzugefügt und die restlichen Einträge in der kürzlichen Liste 103 wandern nach links (oder vom Marker weg), je nach Notwendigkeit. Einträge am Ende der oder unten in der kürzlichen Liste 102 wandern in die kürzliche Ghost-Liste 116. Im Laufe der Zeit können Einträge aus der kürzlichen Ghost-Liste 116 entfernt werden.
  • Auf ähnliche Weise werden Einträge zur häufigen Liste 104 rechts vom Marker 106 hinzugefügt, und die restlichen Einträge in der häufigen Liste 104 wandern nach rechts, falls notwendig. Einträge, welche die Liste 104 verlassen, kommen in die häufige Ghost-Liste 114. Einträge in der häufigen Ghost-Liste 114 werden schlussendlich entfernt.
  • Die kürzliche Liste 102 und die kürzliche Ghost-Liste 116 arbeiten ähnlich wie eine LRU-Liste (Least Recently Used). Die kürzliche Liste 102 und die kürzliche Ghost-Liste 116 dienen für kürzliche Einträge in den Cache 100. Auf Einträge in die kürzliche Liste 102 wurde ein einziges Mal zugegriffen. Die häufige Liste 104 und die häufige Ghost-Liste 114 sind konfiguriert, um Einträge zu speichern, auf die mehrere Male zugegriffen wurde.
  • Neue Einträge in den Cache 100 werden am Anfang der kürzlichen Liste 102 hinzugefügt und (in diesem visuellen Beispiel) allmählich nach links geschoben. Schließlich werden diese Einträge von der kürzlichen Liste 102 in die kürzliche Ghost-Liste 116 geschoben und dann aus der kürzlichen Ghost-Liste 116 entfernt. Auf ähnliche Weise werden Einträge in die häufige Liste 104 am Anfang der häufigen Liste 104 hinzugefügt. Diese Einträge bewegen sich nach rechts in die häufige Ghost-Liste 114 und werden schlussendlich aus dem Cache 100 entfernt.
  • In einem Beispiel wird jede der Listen 102, 116, 104 und 114 im Wesentlichen wie eine am wenigsten zeitnah/am wenigsten häufig verwendete Liste betrieben. Wie zuvor angemerkt beziehen die häufige Liste 104 und die häufige Ghost-Liste 114 aber auch die Zugriffshäufigkeit mit ein. In einem Beispiel sind die Listen 102, 116, 104 und 114 (die Einträgeliste 112) ein Beispiel für ein Cache-Verzeichnis, das die im Cache 110 gespeicherten Daten identifiziert. In einem anderen Beispiel kann die Einträgeliste 112 Daten darstellen. Die Einträgeliste 112 kann verwendet werden, wenn Daten zum Cache 100 hinzugefügt/daraus entfernt werden.
  • Es versteht sich auch, dass die Implementierung der Einträgeliste 112 gegebenenfalls kein Verzeichniskonzept aufweist, sondern unter Verwendung einer geeigneten Datenstruktur implementiert ist. Im Allgemeinen ist die Struktur so konfiguriert, dass die Einträge in einer zeitbezogenen und/oder Häufigkeitsweise angeordnet sind. Diese Struktur oder Anordnung ist jedoch nicht einschränkend und andere Strukturen oder Listenanordnungen liegen innerhalb des Schutzumfangs der Ausführungsformen der Erfindung. Die Beschreibung von 1A hilft beim Verständnis der Beziehung zwischen der Cache-Größe, den Einträgen im Cache, der Art und Weise, wie Einträge eingegeben/entfernt werden, und der Art und Weise, wie Einträge im Verzeichnis oder in der Einträgeliste 112 identifiziert werden.
  • 1B veranschaulicht ein Beispiel für einen reversen Cache. Insbesondere betreffen Ausführungsformen der Erfindung einen reversen Cache oder einen reversen adaptiven Ersatz-Cache. In einem Beispiel kann der reverse Cache 150 in Verbindung mit einem Hauptcache verwendet werden, um zu steuern, wie Einträge hinzugefügt werden oder in einen Hauptcache übertragen werden. Somit kann der Cache 100 ein Hauptcache sein und der Cache 150 kann bestimmen, welche Einträge zum Hauptcache 100 hinzugefügt werden.
  • 1B kann auch einen reversen Cache darstellen, indem die Richtung der Pfeile 122 (siehe 1A) in die Richtung umgekehrt wird, die durch die Pfeile 124 veranschaulicht wird, wie im Cache 150 in 1B veranschaulicht. In einem Beispiel verwendet ein reverser Cache 150 die Neuheit und Häufigkeit, um Daten zu identifizieren, die in den Hauptcache eingefügt werden können. Der reverse Cache 150 ist in einem Beispiel konfiguriert, um Daten zu identifizieren, die zu einem Hauptcache hinzugefügt oder verschoben werden sollten. Da eine beispielhafte Funktion eines reversen Caches darin besteht, Daten zur Übertragung in den Hauptcache zu identifizieren, kann der reverse Cache 150 Datenidentifikatoren (z. B. Fingerprints), Indexwerte, andere Einträge oder dergleichen und keine tatsächlichen Daten speichern.
  • Die Operation des reversen Caches 150 kann einen Eintrag in einen Hauptcache übertragen. Wenn ein Eintrag übertagen wird, speichert der Hauptcache die tatsächlichen Daten und nicht den Fingerprint der Daten. Der Betrieb des reversen Caches 150 kann auch eine kürzliche Ghost-Liste 152, eine kürzliche Liste 154, eine häufige Liste 156 und eine häufige Ghost-Liste 158 einschließen. Die kürzlichen Einträge 160 umfassen die kürzliche Ghost-Liste 152 und die kürzliche Liste 154 und die häufigen Einträge 162 umfassen die häufige Liste 156 und die häufige Ghost-Liste 158. Somit umfasst die Einträgeliste 164 die kürzlichen Einträge 160 und die häufigen Einträge 162.
  • In einem Beispiel speichert der reverse Cache 150 eine Darstellung von Daten, einen Zeiger auf Daten, einen einzigartigen Datenidentifikator, einen Indexwert oder dergleichen und speichert keine tatsächlichen Daten. Im reversen Cache können Identifikatoren wie Fingerprints (z. B. Hashes der Daten), Indexwert oder dergleichen gespeichert werden.
  • Die kürzliche Liste 154 und die häufige Liste 156 können beispielsweise Fingerprints von Daten speichern. Die kürzliche Ghost-Liste 152 und die häufige Ghost-Liste 158 können Indexwerte speichern, die im Grunde auf die Fingerprints der Daten zeigen. Das Speichern von Fingerprints verbraucht weniger Platz als das Speichern der entsprechenden Daten. Das Speichern von Indexwerten verbraucht weniger Platz als die Fingerprints.
  • 2 offenbart Aspekte eines reversen Caches, der konfiguriert ist, um Daten zur Übertragung in einen Hauptcache zu identifizieren. Der Hauptcache 202 kann in einem Beispiel ein adaptiver Ersatz-Cache (siehe 1A) sein oder kann andere Verfahren verwenden, um Daten im Hauptcache 202 zu verwalten/daraus zu entfernen. 2 veranschaulicht einen reversen Cache 210, der konfiguriert ist, um mit einem Hauptcache 202 zusammenzuarbeiten, der Daten speichert oder cacht, die beispielsweise von einer Anwendung verwendet werden. In diesem Beispiel ist der reverse Cache 210 konfiguriert, um Daten zu identifizieren, die im Hauptcache 202 gespeichert oder in diesen verschoben werden. Wenn vom reversen Cache Daten identifiziert werden, werden die Daten in den Hauptcache übertragen. In einem Beispiel werden Daten auf automatische Weise oder durch Betrieb des reversen Caches 210 in den Hauptcache 202 übertragen.
  • Im Allgemeinen identifiziert der reverse Cache 210 Daten zur Übertragung in den Hauptcache 202, auf die mehrere Male zugegriffen wurde. Insbesondere neigt der Betrieb des reversen Caches 210 dazu, Daten zu identifizieren, auf die mehrere Male und/oder kürzlich zugegriffen wurde. Daten, auf die mehrere Male zugegriffen wurde, sind Kandidaten für eine Übertragung in den Hauptcache 202. In manchen Beispielen muss auf Daten eine Schwellenanzahl oft zugegriffen werden, bevor sie in den Hauptcache 202 übertragen werden. In manchen Beispielen ist keine Schwellenanzahl notwendig und die Daten werden durch den Betrieb des reversen Caches 210 übertragen, sodass gegebenenfalls die Daten, auf die (im Vergleich zu anderen Einträgen im reversen Cache 210) am häufigsten zugegriffen oder mehrere Male zugegriffen wurde, in den Hauptcache 202 übertragen werden.
  • Der Hauptcache 202 und der reverse Cache 210 können im selben Speicher implementiert sein, sodass der reverse Cache 210 einen Teil des Speichers zusammen mit dem Hauptcache 202 einnimmt. Der reverse Cache 210 und der Hauptcache 202 können auch getrennt sein und getrennt verwaltet werden. Der Hauptcache 202 und der reverse Cache 210 sind in einem Speicher implementiert, der typischerweise schneller (z. B. Random Access Memory (RAM)) ist als andere Speicher, wie z. B. eine Festplatte. Der Hauptcache 202 und/oder der reverse Cache 210 können als Speicher L1, L2, L3 oder dergleichen implementiert sein.
  • Der Hauptcache 202 speichert Daten, die durch die Daten 204, 206 und 208 repräsentiert werden, und kann mit kürzlichen Einträgen und/oder häufigen Einträgen assoziiert sein, wie in 1B veranschaulicht ist. Die Daten 204, 206 und 208 können Blöcke, Pakete, Dateien oder dergleichen sein. In einem Beispiel speichert der reverse Cache 210 nicht die tatsächlichen Daten, obwohl dies durch Ausführungsformen der Erfindung nicht ausgeschlossen ist. In diesem Beispiel umfasst der reverse Cache 210 einen Neuheitsabschnitt 220 und einen Häufigkeitsabschnitt 222, die Verweise auf Daten speichern, z. B. Daten-Fingerprints, die durch die Fingerprints 212, 214, 216 und 218 dargestellt sind. Ein Fingerprint ist ein Beispiel für einen Identifikator, der Blöcke, Pakete, Dateien oder andere Daten auf einzigartige Weise repräsentieren kann. Ein Fingerprint kann ein Hash der Daten sein. Dies ermöglicht einen vergleichsweise kleinen reversen Cache 210 im Vergleich zum Hauptcache 202.
  • Die Ghost-Listen oder -Abschnitte des reversen Caches 210, die den Ghost-Neuheitsabschnitt 240 und den Ghost-Häufigkeitsabschnitt 244 umfassen, können Indexwerte speichern, die durch die Indexwerte 242 und 246 dargestellt sind. Die Indexwerte sind typischerweise kleiner als Fingerprints oder andere Identifikatoren. Manche Ausführungsformen des reversen Caches 210 umfassen gegebenenfalls keine Ghost-Abschnitte.
  • Die Fingerprints und Indexwerte, die im reversen Cache 210 gespeichert sind, können im Allgemeinen als Einträge im reversen Cache 210 bezeichnet werden.
  • Eine Beispielfunktion des reversen Caches 210 ist es, Daten zu identifizieren, die in den Hauptcache 202 übertragen werden können, oder Daten basierend auf dem Zustand oder Betrieb des reversen Caches 210 in den Hauptcache 202 zu übertragen. Die Kriterien können sein, Daten zu übertragen, wenn auf die Daten eine bestimmte Anzahl oft zugegriffen wurde. Beispielsweise arbeitet der reverse Cache 210, um zu bestimmen, dass der Fingerprint 216 die Kriterien erfüllt (z. B. eine Anzahl „x“ von Zugriffen) und die entsprechenden Daten als Daten 206 in den Hauptcache 202 übertragen werden können. Alternativ dazu kann der Betrieb des reversen Caches 210 den Fingerprint 216 unabhängig von den Kriterien übertragen, falls solche verwendet werden. In manchen Beispielen können die Kriterien flexibel sein und vom Zustand des reversen Caches 210 abhängen. Wie zuvor erwähnt kann die Anzahl, wie oft auf Daten zugegriffen werden sollte, was ein Beispiel für die Kriterien ist, bevor sie übertragen werden, fix oder flexibel sein. Außerdem ist die Verwendung von Kriterien nicht erforderlich.
  • Beispielsweise kann ein Eintrag übertragen werden, wenn der reverse Cache 210 voll ist und ein neuer Eintrag (z. B. ein neuer Fingerprint) in den reversen Cache 210 eingefügt 226 wird. Natürlich kann der reverse Cache 210 wählen, einen Eintrag zu entfernen 224 und den Eintrag nicht in den Hauptcache 202 zu übertragen. Wenn beispielsweise auf einen bestimmten Eintrag, der höchstwahrscheinlich in den Hauptcache 202 übertragen wird, nur ein einziges Mal oder weniger oft als ein Schwellenwert zugegriffen wurde, kann die Einfügung 226 eines neuen Eintrags zur Entfernung des jeweiligen Eintrags aus dem reversen Cache 210 führen, ohne dass der jeweilige Eintrag übertagen wird.
  • Wenn der Fingerprint 216 die Kriterien oder die Schwelle für die Übertragung erfüllt, oder mittels Operation des reversen Caches 210, der im Grunde die Kriterien implementiert oder flexible Kriterien implementiert, werden die dem Fingerprint 206 entsprechenden Daten als Daten 206 in den Hauptcache 202 übertragen. Die Übertragung des Fingerprints 216 kann auch den Fingerprint 216 aus dem reversen Cache 210 entfernen. In einem weiteren Beispiel kann ein Fingerprint, z. B. der Fingerprint 214, einen Punkt erreichen, an dem der Fingerprint 214 aus dem reversen Cache entfernt 224 wird. In diesem Beispiel wurde auf den Fingerprint 214 nur ein einziges Mal zugegriffen und er befindet sich am Ende des Neuheitsabschnitts 220. Das zeigt, dass der Fingerprint 214 der älteste Eintrag (zumindest in Bezug auf Neuheit) und der mit dem am längsten vergangenen Zugriff ist. Daher kann die Einfügung 226 eines neuen Fingerprints oder Indexwerts zur Entfernung 224 des Fingerprints 214 führen.
  • Dies kann vom Zustand des reversen Caches 210 oder von anderen Faktoren abhängen. Wenn beispielsweise der reverse Cache 210 voll ist, führt das Hinzufügen eines neuen Eintrags zur Übertragung eines Eintrags oder zur Entfernung eines Eintrags. In einem Beispiel kann der reverse Cache 210 arbeiten, um einen Eintrag automatisch zu übertragen. Alternativ dazu kann der reverse Cache 210 ein Kriterium oder Kriterien implementieren. Wenn das Kriterium oder die Kriterien nicht erfüllt werden, wird ein Eintrag entfernt, um den neuen Eintrag unterzubringen.
  • In einem Beispiel umfasst der reverse Cache 210 gegebenenfalls nur einen Neuheitsabschnitt 220 und einen Häufigkeitsabschnitt 222. In diesem Beispiel kann der reverse Cache 210 Fingerprints speichern und wie zuvor beschreiben arbeiten. Einträge werden im Allgemeinen aus dem Neuheitsabschnitt 220 entfernt und vom Häufigkeitsabschnitt 222 übertragen. Einträge in den Neuheitsabschnitt 220, auf die ein zweites Mal zugegriffen wird, werden in den Häufigkeitsabschnitt 222 verschoben.
  • In einem weiteren Beispiel kann der reverse Cache 210 einen Ghost-Neuheitsabschnitt 240, einen Neuheitsabschnitt 220, einen Häufigkeitsabschnitt 222 und einen Ghost-Häufigkeitsabschnitt 244 aufweisen. In diesem Beispiel werden Einträge auch vom Häufigkeitsabschnitt 222 in den Hauptcache 202 übertragen und aus dem reversen Cache 210 aus dem Neuheitsabschnitt 220 oder aus dem Ghost-Neuheitsabschnitt 240 entfernt. Übertragungen und Entfernungen sind jedoch nicht darauf beschränkt.
  • Insbesondere umfassen der Ghost-Neuheitsabschnitt 240 und der Neuheitsabschnitt 220 typischerweise Einträge, auf die ein einziges Mal zugegriffen wurde. Wenn ein Eintrag in den reversen Cache 210 eingefügt wird 226, wird der Eintrag als Indexwert 242 von links in den Ghost-Neuheitsabschnitt 240 eingefügt und Einträge im Ghost-Neuheitsabschnitt 240 und Einträge im Neuheitsabschnitt 220 werden nach rechts geschoben. An einem bestimmten Punkt (z. B. Erreichen des Markers 230), werden Einträge aus dem Neuheitsabschnitt 220 entfernt 224.
  • Wie zuvor erwähnt speichern der Ghost-Neuheitsabschnitt 240 und der Ghost-Häufigkeitsabschnitt 244 in einem Beispiel Indexwerte. Beispielsweise kann ein Rechensystem (z. B. ein Datenschutzsystem) einen Index von Fingerprints speichern, wobei jeder Fingerprint ein Datum identifiziert. Der Index i für den Eintrag Fi im Fingerprint-Index F kann als Indexwert 242 gespeichert werden. Wenn der Indexwert 242 das Ende des Ghost-Neuheitsabschnitts 240 erreicht, wird der Wert als Fingerprint in den Neuheitsabschnitt 220 übertragen.
  • Wenn auf einen Eintrag im Ghost-Liste-Neuheitsabschnitt 240 ein zweites Mal zugegriffen wird, wird er in den Ghost-Häufigkeitsabschnitt 244 verschoben. Der Indexwert 242 befindet sich beispielsweise im Ghost-Neuheitsabschnitt 240. Wenn auf die dem Indexwert 242 entsprechenden Daten ein zweites Mal zugegriffen wird, kann der Indexwert 242 in den Ghost-Häufigkeitsabschnitt 244 verschoben werden und von rechts in den Ghost-Häufigkeitsabschnitt 244 eintreten. Dies führt dann dazu, dass Einträge im Ghost-Häufigkeitsabschnitt 244 und Häufigkeitsabschnitt 222 nach links vershoben werden, und es kann dazu führen, dass ein Eintrag vom Häufigkeitsabschnitt 222 in den Hauptcache 202 übertragen wird 228.
  • Wenn auf einen Eintrag im Neuheitsabschnitt 220 (nun als Fingerprint gespeichert) ein zweites Mal zugegriffen wird, wird der Eintrag als Indexwert in den Ghost-Häufigkeitsabschnitt 244 verschoben. In diesem Fall kann der Fingerprint durch seinen Indexwert ersetzt werden. Alternativ dazu können Fingerprints im Neuheitsabschnitt 220, auf die ein zweites Mal zugegriffen wird, in den Häufigkeitsabschnitt 222 verschoben werden, weil sie im reversen Cache 210 schon als Fingerprints vorhanden sind. In jedem Fall treten Indexwerte und Fingerprints vom Ghost-Neuheitsabschnitt und Neuheitsabschnitt 220 in diesem visuellen Beispiel von der rechten Seite des Häufigkeitsabschnitts 222 oder Ghost-Häufigkeitsabschnitts 244 ein. In einem Beispiel kann der Ghost-Häufigkeitsabschnitt 244 weggelassen werden, sodass, wenn auf einen Eintrag im Ghost-Neuheitsabschnitt 240 ein zweites Mal zugegriffen wird, der Eintrag zu einem Fingerprint umgewandelt und in den Häufigkeitsabschnitt 222 verschoben wird.
  • Sobald sich ein Eintrag auf der Häufigkeitsseite des reversen Caches 210 befindet, wird der Eintrag nach links vershoben und kann an einem bestimmten Punkt in den Hauptcache 202 übertragen werden 228, nachdem er den Marker 230 erreicht hat. Einträge im Ghost-Häufigkeitsabschnitt 244 können auch basierend auf ihrer Position im Häufigkeitsabschnitt 222 und/oder Ghost-Häufigkeitsabschnitt 244 und/oder abhängig von ihrer Beziehung zu anderen Einträgen, die sich im Häufigkeitsabschnitt 222 und/oder Ghost-Häufigkeitsabschnitt 244 befinden, oder abhängig vom Gesamtzustand des reversen Caches 210 entfernt werden. Wenn auf einen Eintrag für eine Zeitdauer nicht zugegriffen wurde, kann der Eintrag entfernt werden.
  • Im Allgemeinen werden neue Einträge in den reverse Cache 210 jedoch in den Ghost-Neuheitsabschnitt 240 eingefügt und bewegen sich nach rechts, wo sie schlussendlich entfernt werden 224, sofern sich nicht in den Häufigkeitsabschnitt des reversen Caches verschoben werden, wobei sie in diesem visuellen Beispiel von rechts in den Ghost-Häufigkeitsabschnitt 244 eintreten. In einem Beispiel wird der Neuheitsabschnitt 220 weggelassen, sodass Einträge in den Neuheitsabschnitt des Caches als Indizes eingegeben werden. Somit können Einträge entfernt werden, wenn sie am unteren Ende des Ghost-Neuheitsabschnitts 240 ankommen.
  • 3 offenbart Aspekte eines reversen Caches, einschließlich der Übertragung eines Eintrags vom reversen Cache in einen Hauptcache. 3 veranschaulicht einen reversen Cache 302. Der reverse Cache 302 umfasst eine häufige Ghost- oder kürzliche Ghost-Liste 406 (B1), eine Neuheits- oder kürzliche Liste 308 (T1), eine Häufigkeitsliste 310 (T2) und eine Ghost-Häufigkeitsliste 312 (B2). Die Operationen 304 umfassen Operationen, bei denen Einträge in den Cache 302 hinzugefügt werden, und veranschaulichen, wie die Einträge von den Listen 306 und 308 in die Listen 310 und 312 wandern.
  • Der Satz von Operationen 304 veranschaulicht, wie Einträge eingegeben und im reversen Cache 302 verschoben werden. In diesem Beispiel kann der reverse Cache 302 insgesamt 6 Einträge aufnehmen, aber die Größe des Caches kann größer oder kleiner sein und kann vom Benutzer bestimmt oder variiert werden. In diesem Beispiel können die Ghost-Listen 306 und 312 jeweils einen Eintrag aufnehmen. Die Größe der Listen 306, 308, 310 und 312 kann jedoch flexibel und anpassbar sein. Wenn beispielsweise auf die ersten 6 Einträge jeweils nur einmal zugegriffen wird, wandert keiner dieser Einträge zur Häufigkeitsseite des reversen Caches 302. Daher kann die Größe der kürzlichen Ghost-Liste 306 1 sein und die Größe der kürzlichen Liste 308 kann 5 sein (wodurch die gesamte Größe des reversen Caches 302 verwendet wird, die in diesem Beispiel 6 Einträge beträgt). Die Größe des reversen Caches 302 kann auch dynamisch veränderbar sein.
  • 3 dient dazu zu veranschaulichen, wie Daten in einem reversen Cache gecacht und in einen Hauptcache übertragen werden können. In diesem Beispiel sind die Daten 64 KB groß und in 8 Pakete oder Segmente mit jeweils 8 KB aufgeteilt. Für jedes Paket oder Segment wird ein Fingerprint (z. B. ein Hash) ausgeführt, und dies führt zu den Fingerprints 00, 01, 02, 03, 04, 05, 06 und 07. Jeder dieser Fingerprints entspricht einem Paket der Beispieldaten. Wie zuvor erwähnt, ist der reverse Cache 302 konfiguriert, um Fingerprints oder andere Datenidentifikatoren zu speichern und nicht die entsprechenden Daten. Die Größe jedes Fingerprints ist deutlich kleiner (z. B. 32 Byte) als die Größe jedes Pakets (8 KB in diesem Beispiel). Somit kann die Größe des reversen Caches im Vergleich zum Platz, der zum Speichern der tatsächlichen Pakete erforderlich ist, gering sein.
  • Der Einfachheit halber werden Fingerprints verwendet, um Einträge im Cache darzustellen. Wenn jedoch ein Fingerprint in einer Ghost-Liste vorhanden ist, stellt der Indikator (z. B. 00, 01, ...) einen Indexwert dar und keinen vollständigen Fingerprint.
  • Jede der Operationen in den Operationen 304 wird beschrieben. Der Einfachheit halber kann bei der Beschreibung der Operation des reversen Caches jeder Fingerprint oder Indexwert als Eintrag im reversen Cache bezeichnet werden. In einem Beispiel umfasst jedoch jeder Eintrag zumindest einen Indexwert, einen Fingerprint oder einen anderen Datenidentifikator. Jedes Mal, wenn ein Fingerprint in den reversen Cache eingegeben oder auf einen solchen zugegriffen wird, kann eine Zugriffszählung für diesen Fingerprint erhöht werden. So kann der Cache 302 auch einige Metadaten speichern. Die folgenden Operationen umfassen Get-Operationen zum Abrufen von Daten. In diesem Beispiel weist der reverse Cache 302 eine Größe von vier (6) auf und kann so vier Einträge gleichzeitig aufnehmen.
  • Get 02 bewirkt, dass 02 als Eintrag 02 in die Kürzliche Ghost-Liste 306 eingegeben wird. Wie zuvor erwähnt kann 02 ein Indexwert sein.
  • Get 02 schiebt den Eintrag 02 von der kürzlichen Ghost-Liste 306 in die Ghost-Häufigkeitsliste 312. Wenn auf einen Eintrag in der Neuheitsliste ein zweites Mal zugegriffen wird, wandert der Eintrag von der Neuheitsliste zur Häufigkeitsliste. In diesem Beispiel wandert der Eintrag 02 von der kürzlichen Ghost-Liste 306 zur Ghost-Häufigkeitsliste 312. Der Eintrag 02 ist immer noch ein Indexwert in der Ghost-Häufigkeitsliste 312.
  • Get 00 gibt 00 als Eintrag 00 in die kürzliche Ghost-Liste 306 ein. An diesem Punkt ist der Eintrag 00 ein Indexwert.
  • Get 01 gibt 01 als Eintrag 01 in die kürzliche Ghost-Liste 306 ein und verschiebt den Eintrag 00 nach rechts. Der Eintrag 01 ist ein Indexwert. Der Eintrag 00, der ein Indexwert ist, wird durch einen Fingerprint der Daten ersetzt.
  • Get 03 gibt 03 in die kürzliche Ghost-Liste 306 ein und verschiebt die Einträge 01 und 00 nach rechts. Sowohl der Eintrag 01 als auch 00 werden als Fingerprints gespeichert, da sie in der kürzlichen Liste 308 sind und nicht in der kürzlichen Ghost-Liste 306.
  • Get 03 verschiebt den Eintrag 03 von der häufigen Ghost-Liste 306 zur Ghost-Häufigkeitsliste 312. Der Eintrag des Eintrags 03 in die Ghost-Häufigkeitsliste 312 als Indexwert verschiebt den Eintrag 02 nach links. Der Eintrag 02 wird durch einen Fingerprint ersetzt, wenn er in die Häufigkeitsliste 310 eintritt.
  • Get 03 bewirkt, dass der Eintrag 03 in der Häufigkeitsliste 312 vor den Eintrag 02 tritt. Der Eintrag 02 wird in die Ghost-Häufigkeitsliste 312 verschoben und wird verändert oder durch einen Indexwert ersetzt. Der Eintrag 03 wird durch einen Fingerprint ersetzt.
  • Get 03 bewirkt keine Veränderung im reversen Cache 312. Für den Eintrag 03 kann jedoch ein zusätzlicher Zugriff aufgezeichnet werde. In dieser Phase wurde auf den Eintrag 03 4-mal zugegriffen.
  • Get 01 verschiebt den Eintrag 01 von der kürzlichen Ghost-Liste 306 in die Ghost-Häufigkeitsliste 312 und verschiebt die Einträge 03 und 02 Einträge nach links. An diesem Punkt kehrt der Eintrag 00 in die kürzliche Ghost-Liste 306 zurück. Somit ist nur der Eintrag 00 in der kürzlichen Ghost-Liste 306, weil auf die anderen Einträge 01, 02 und 03 mehr als einmal zugegriffen wurde. Der Eintrag 02 wird verändert oder durch einen Fingerprint ersetzt.
  • Get 03 bewirkt keine Veränderung im reversen Cache 302. Auf den Eintrag 03 wurde jedoch 5-mal zugegriffen.
  • Get 03 bewirkt keine Veränderung, außer dass vermerkt wird, dass auf den Eintrag 03 6-mal zugegriffen wurde.
  • Get 05 bewirkt, dass 05 in die kürzliche Ghost-Liste 306 eingegeben wird. Der Eintrag 00 wird nach rechts verschoben und tritt in die kürzliche Liste 308 ein. Der Eintrag 00 wird durch einen Fingerprint ersetzt.
  • Get 05 verschiebt den Eintrag 05 in die Ghost-Häufigkeitsliste 312. Somit enthält die Häufigkeitsliste 310 die Einträge 03, 02, 01 und 00.
  • Get 06 platziert den Eintrag 06 als Indexwert in der kürzlichen Ghost-Liste 306.
  • An diesem Punkt ist der reverse Cache 302 voll. Die Hinzufügung eines weiteren Eintrags kann dazu führen, dass ein Eintrag übertragen oder aus dem reversen Cache entfernt wird. Somit muss ein Eintrag übertragen oder entfernt werden, um eine neue Hinzufügung aufzunehmen.
  • Get 07 verschiebt den Eintrag 07 in die kürzliche Ghost-Liste 306. In diesem Beispiel wird, um den Eintrag 07 als Indexwert in den reverse Cache 302 einzufügen, der Eintrag 03 in den Hauptcache übertragen. Somit werden die tatsächlichen Daten, die dem Fingerprint 03 entsprechen, in den Hauptcache eingefügt und der Eintrag 03 wird aus dem reversen Cache 302 entfernt. Wie zuvor erwähnt stellt das Einfügen von Daten in den Hauptcache auf diese gezielte Art und Weise sicher, dass der Hauptcache Daten enthält, auf die mehrere Male zugegriffen wurde und auf die auch in Zukunft mit höherer Wahrscheinlichkeit zugegriffen wird. Dies kann die Trefferrate des Hauptcaches verbessern.
  • Wie zuvor erwähnt können Einträge durch eine Operation des Caches in den Hauptcache übertragen werden. Wenn beispielsweise der reverse Cache 302 voll ist und ein neuer Eintrag hinzugefügt wird, wird der nächste Kandidat übertragen. Es kann jedoch auch möglich sein, stattdessen einen Eintrag zu entfernen. Wenn beispielsweise das Erfordernis vorliegt, dass auf einen Eintrag 7-mal zugegriffen werden muss, bevor der in den Hauptcache übertragen wird, kann Get 07 zur Entfernung des Eintrags 06 führen (bei dem es sich um den ältesten kürzlichen Eintrag handelt, auf den nur einmal zugegriffen wurde), weil auf den Eintrag 03 nicht 7-mal (oder ein anderer Schwellenwert oft) zugegriffen wurde. Alternativ dazu kann der Eintrag 05 statt dem Eintrag 06 aus der Ghost-Häufigkeitsliste 312 entfernt werden, weil der 05 ein Indexwert ist, während der Eintrag 06 ein Fingerprint ist. Somit gibt es verschiedene Optionen, wenn es notwendig ist, einen Eintrag aus dem reversen Cache 302 zu entfernen.
  • In diesem Beispiel wurde der Eintrag 03 übertragen, nachdem 6-mal auf ihn zugegriffen wurde. Würde ein weiterer Eintrag (z. B. 08) zum reversen Cache hinzugefügt, würde der Eintrag 02, auf den nur zweimal zugegriffen wurde, in den Hauptcache übertragen werden. Dies zeigt, dass in einem Beispiel die Schwelle für die Übertragung von Einträgen in den Hauptcache variieren kann und dies basierend auf der Operation des Caches stattfinden kann. Insbesondere kann zum Platzmachen für einen neuen Eintrag einfach der Eintrag links in der Häufigkeitsliste 310 in den Hauptcache übertragen werden.
  • Wenn eine harte Schwelle vorhanden ist, könnte dies alternativ zur Entfernung eines Eintrags aus dem reversen Cache 302 führen. Wenn beispielsweise die Mindestzahl von Zugriffen 3 ist, konnte der Eintrag 02 in diesem Beispiel nicht übertragen werden und es ist gegebenenfalls eine Entfernung erforderlich. Die Entfernung kann aus der kürzlichen Liste 308 (der älteste Eintrag kann entfernt werden) oder aus der Ghost-Häufigkeitsliste 312 (der Eintrag mit der geringsten Anzahl an Zugriffen kann entfernt werden) erfolgen. Die typische Operation ist jedoch, dass in diesen Beispielen ein Eintrag übertragen wird.
  • 4 offenbart Aspekte der Entfernung eines Eintrags aus einem reversen Cache. 4 veranschaulicht beispielhafte Operationen 404 in einem reversen Cache 402, der ein Beispiel für den reversen Cache 302 ist. Die Operationen 404 werden in einem reversen Cache ausgeführt, der konfiguriert ist, um in diesem Beispiel sechs Einträge zu enthalten.
  • Jede der Operationen 404 wird beschrieben.
  • Get 02 platziert 02 als Indexwert in der kürzlichen Ghost-Liste 406.
  • Get 02: verschiebt den Eintrag 02 in die Ghost-Häufigkeitsliste 412.
  • Get 00 platziert 00 als Indexwert in der kürzlichen Ghost-Liste 406.
  • Get 01 platziert 01 als Indexwert in der Ghost-Liste 406 und schiebt den Eintrag 00 nach rechts, wo der Indexwert durch einen Fingerprint ersetzt wird.
  • Get 03 platziert 03 in der kürzlichen Ghost-Liste 406 und schiebt die Einträge 01 und 00 nach rechts.
  • Get 04 platziert 04 in der kürzlichen Ghost-Liste 406 und schiebt die Einträge 03, 01 und 00 nach rechts in der kürzlichen Liste 408.
  • Get 05 platziert 05 in der kürzlichen Ghost-Liste 406 und schiebt die Einträge 04, 03, 01 und 00 nach rechts in der kürzlichen Liste 408.
  • In diesem Beispiel sind in der Häufigkeitsliste 410 keine Einträge vorhanden. Der Cache ist jedoch voll (6 Einträge sind im reversen Cache 402) gespeichert.
  • Get 06 platziert 06 in der kürzlichen Ghost-Liste 406. Der Eintrag 01 wird aus dem reversen Cache 402 entfernt, ohne in den Hauptcache übertragen zu werden. Der Eintrag 01 ist der älteste Eintrag auf der kürzlichen Seite und es wurde nur einmal darauf zugegriffen. Daher wird der Eintrag 01 entfernt.
  • In einer Ausführungsform ist der reverse Cache ein Gating-Mechanismus zum Hinzufügen oder Einfügen von Daten in einen Hauptcache. In einem Beispiel ist der reverse Cache so konfiguriert, dass nur Einträge, auf die mehr als einmal zugegriffen wurde, in den Hauptcache übertragen oder eingegeben werden. Ein Eintrag im reversen Cache für Daten, auf die nur einmal zugegriffen wurde, verbleibt auf der Neuheitsseite und wird schlussendlich aus dem reversen Cache entfernt, wenn Einträge für Daten, auf die vor kürzerer Zeit zugegriffen wurde, zum reversen Cache hinzugefügt werden. Gleichzeitig sind Einträge, auf die mehr als einmal zugegriffen wurde, auf dem Weg, in den Hauptcache übertragen zu werden.
  • Ausführungsformen eines reversen Caches ermöglichen, durch Inkorporation von Ghost-Listen, dass die Größe des reversen Caches erweitert werden kann, während das Speicherausmaß, das zur Implementierung des reversen Caches erforderlich ist, beschränkt wird.
  • 5 veranschaulicht ein Beispiel für ein Cache-System. Das Cache-System 500 umfasst einen reversen Cache 502 und einen Hauptcache 508 und veranschaulicht außerdem eine Entfernungsoperation und eine Einfügeoperation. In diesem Beispiel umfasst das Cache-System keine Ghost-Neuheitsliste oder häufige Ghost-Liste.
  • Der reverse Cache 502 umfasst eine kürzliche Liste 512 (T1) und eine häufige Liste 514 (T2). Die Befehle 504 stellen Datenzugriffe dar und führen zu einer Operation im reversen Cache 502. In diesem Beispiel nimmt der reverse Cache 502 insgesamt 4 Einträge auf.
  • Anfangs werden die Befehle Get 02, Get 03, Get 01 und Get 00 ausgeführt. Dies führt zu den Einträgen 00, 01, 03, 02 in Inhalten 506 der kürzlichen Liste 512. Der Cache 502 ist voll. Wenn Get 05 ausgeführt wird, wird der Eintrag 02 entfernt 512. In diesem Beispiel wurde auf die Einträge 00, 01, 02, 03 und 05 jeweils ein einziges Mal zugegriffen und sie befinden sich in der kürzlichen Liste 512. Der Eintrag 02 befindet sich am Ende der kürzlichen Liste 512, und wenn ein neuerer Eintrag 05 hinzugefügt wird, wird der Eintrag 02 entfernt 510.
  • Der nächste Satz von Befehlen veranschaulicht die Übertragung des Eintrags 03 in den Hauptcache 508. Der Befehl Get 03 verschiebt den Eintrag 03 in die häufige Liste 514, weil dies der zweite Zugriff auf einen Eintrag in der kürzlichen Liste 512 ist. Die Ausführung der Befehle Get 01, Get 00 und Get 05 führt zu einer Situation, in der alle Einträge in der kürzlichen Liste 512 in die häufige Liste 514 verschoben werden.
  • Dann wird der nächste Befehl Get 06 ausgeführt. Da der Cache 502 voll ist, führt die Einfügung des Eintrags 06 in die kürzliche Liste 512 dazu, dass auch der Eintrag 03 in den Hauptcache 508 übertragen wird.
  • Tatsächlich durchlaufen Einträge im reversen Cache 502 eine Kriterienbeurteilung. Einträge in der kürzlichen Liste 512 werden zum „!“ hin geschoben und können entfernt werden. Einträge in der häufigen Liste 514 werden ebenfalls zum „!“ hin geschoben und können in den Hauptcache 508 übertragen werden. Der reverse Cache 502 enthält somit Verweise auf Daten (z. B. Fingerprints) und ermöglicht die Auswahl von in den Hauptcache 508 zu übertragenden Daten basierend auf den Kriterien des reversen Caches 502. Beispielsweise sind nur Daten für den Eintrag in den Hauptcache 508 geeignet, auf die mehr als einmal zugegriffen wurde.
  • Durch Speichern von Verweisen auf Daten im reversen Cache 502 kann Platz gespart und effizienter genutzt werden.
  • 6 veranschaulicht ein weiteres Beispiel für ein Cache-System. Das Cache-System 600 umfasst einen reversen Cache 610 und einen Hauptcache 608. In diesem Beispiel werden Daten links in den reversen Cache 610 eingegeben 602, oder genauer gesagt in die kürzliche Ghost-Liste 602. In einem Beispiel wird der neue Eintrag als Indexwert hinzugefügt, der kleiner ist als ein Fingerprint der Daten.
  • Wenn der Eintrag in diesem visuellen Beispiel nach rechts wandert, kann der Eintrag entfernt werden 604, bevor er in die kürzliche Liste T1 eintritt. In einem Beispiel des Cache-Systems 600 wird die kürzliche Liste T1 gegebenenfalls nicht verwendet oder ist nicht vorhanden.
  • Wenn auf einen Eintrag in der kürzlichen Ghost-Liste B1 ein zweites Mal zugegriffen wird, wird der Eintrag in die häufige Ghost-Liste B2 verschoben 606 (in einem Beispiel immer noch als Indexwert). Sobald er sich in der häufigen Ghost-Liste B2 befindet, kann der Eintrag nach links in die häufige Liste T2 wandern. Beim Wandern in die häufige Liste T2 wird der Eintrag zu einem Fingerprint der Daten erhöht. Dann kann der Eintrag sich weiter in Richtung der „1“ bewegen, und an diesem Punkt wird der Eintrag in den Hauptcache 608 übertagen 612.
  • Insbesondere treten neue Einträge in die kürzliche Ghost-Liste B1 ein und werten allmählich nach rechts geschoben. Die Einträge in der kürzlichen Ghost-Liste B1 sind in einem Beispiel Indexwerte. Wenn auf den Eintrag nicht in der kürzlichen Ghost-Liste B1 erneut verwiesen wird, wird der Eintrag (der Fingerprint-Index) aus der kürzlichen Ghost-Liste B1 entfernt. Einträge, auf die nur ein einziges Mal zugegriffen wird, sind nicht geeignet, um in die häufige Liste zu wandern, und sind keine Kandidaten für einen Eintrag im Hauptcache 608.
  • Wenn auf einen Eintrag in der kürzlichen Ghost-Liste B1 ein zweites Mal verwiesen wird, tritt der Eintrag in die häufige Liste ein. Insbesondere tritt der Eintrag in einem Beispiel in die häufige Ghost-Liste B2 ein. Wenn der Eintrag nach links wandert und in die häufige Liste T2 eintritt, wird in der häufigen Liste T2 anstelle des Index auf den Fingerprint verwiesen. Als Vergleich kann ein Indexwert eine geringe Größe aufweisen (z. B. 5), während der Fingerprint größer sein kann, wie etwa Ix1234abcd1234bbbbf.
  • Auf Einträge in der häufigen Liste T2 kann mehrere Male zugegriffen werden und sie können allmählich zum „!“ wandern, aus dem reversen Cache 610 entfernt und in den Hauptcache 608 eingegeben werden.
  • 7A offenbart Aspekte einer Cache-Verwaltung auf Zeitschwellenbasis. In einem Beispiel wird der Hauptcache als ARC-Cache implementiert, und Ausführungsformen der Erfindung betreffen das Entfernen von Daten aus dem Hauptcache unter Verwendung von häufigkeits-, neuheits- und/oder zeitbasierten Anpassungen. In diesem Beispiel veranschaulicht eine Tabelle 710 einen Cache, der vier Einträge speichert: 00, 01, 02 und 03. Die Tabelle 710 veranschaulicht für jeden Eintrag einen Zeitstempel für den letzten Zugriff, eine Häufigkeit der Verwendung und eine Neuheit der Verwendung. Einträge, deren Häufigkeit der Verwendung größer als 1 ist, befinden sich in der Liste T2 oder häufigen Liste, während sich Einträge, deren Häufigkeit der Verwendung gleich 1 ist, in der Liste T1 oder kürzlichen Liste befinden.
  • Wenn Einträge basierend auf Zeit entfernt werden (z. B. vor einer bestimmten Zeit), ist es möglich, dass Einträge, die vor kürzerer Zeit/häufiger verwendet wurden, aufgrund ihres Zugriffszeitstempels entfernt werden, der mit den Entfernungskriterien verglichen wird. Wenn der Entfernungsvorgang auf die Entfernung von N Einträgen beschränkt ist, können Elemente, die vor längerer Zeit/weniger häufig verwendet wurden, im Cache verbleiben, weil der Entfernungsvorgang diese Einträge niemals verarbeitet (d. h. es wurden N Einträge entfernt, bevor diese Einträge erreicht werden).
  • Die Tabelle 710 in 7A veranschaulicht den Status von Cache-Einträgen zu einem Zeitpunkt, an dem eine Enfernungsengine 712 einen Entfernungsvorgang ausführt, um überfällige Einträge aus dem Cache zu entfernen. Der Entfernungsvorgang ist konfiguriert, um in diesem Beispiel zwei Einträge unter Verwendung einer Schwellenzeit von 10:03:01 zu entfernen. Unter Verwendung dieser Schwelle gibt es drei Einträge, die Kandidaten für eine Entfernung sind (00, 01, 03), weil jeder einen Zeitstempel des letzten Zugriffs hat, der kürzer als (oder früher als) die Schwellenzeit ist. Der Entfernungsvorgang ist jedoch konfiguriert, um maximal zwei Einträge zu entfernen. Wenn die Cache-Einträge linear verarbeitet werden und die Anzahl an Entfernungen auf 2 beschränkt ist, werden die Einträge 00 und 01 aus dem Cache entfernt.
  • Wie in Tabelle 714 veranschaulicht, ist das Ergebnisse nicht optimal. Die Tabelle 714 veranschaulicht den Cache nach Durchlauf des Entfernungsvorgangs. Wie dargestellt verbleiben nur die Einträge 02 und 03 im Cache. Dies ist gegebenenfalls kein optimales Ergebnis.
  • Beispielsweise zeigt eine Beurteilung der Neuheit und Häufigkeit der Einträge, die im Cache verbleiben, dass der Zeitstempel des Eintrags 03 früher war oder früher stattfand als die Zeitstempel der Einträge 00 und 01. Die restlichen Einträge 02 und 03 wurden weniger häufig verwendet als die entfernten Einträge 00 und 01. Der verbleibende Eintrag 03 hat eine geringere Neuheit der Verwendung als die entfernten Einträge 00 und 01. Dies zeigt, dass der Entfernungsthread Einträge aus dem Cache entfernte, obwohl es bessere Kandidaten für die Entfernung gab. Insbesondere weist dies darauf hin, dass der Eintrag 03 vor den Einträgen 00 und 01 entfernt hätte werden sollen.
  • 7B offenbart Aspekte einer Entfernungsoperation unter Verwendung eines Anpassungsfaktors. Der Anpassungsfaktor ist konfiguriert, um die Effizienz der Cache-Entfernungsoperationen zu verbessern und sicherzustellen, dass optimalere Kandidaten von der Entfernungsengine identifiziert und entfernt werden. Der Anpassungsfaktor wird verwendet, um zumindest ein Charakteristikum oder Metadatum der Cache-Einträge anzupassen.
  • 7B veranschaulicht einen Cache 720, der vier Einträge umfasst: 00, 01, 02 und 03. Die Einträge 02 und 03 sind in der Liste T1, während die Einträge 00 und 01 in der Liste T2 sind. Wenn die Entfernungsengine an der Tabelle 722 ausgeführt wird, die repräsentativ für die Cache-Einträge ist, werden die Einträge mit einem Anpassungsfaktor versehen. Der Anpassungsfaktor wird auf den Zeitstempel des letzten Zugriffs angewendet, um einen Zeitstempel des letzten Zugriffs mit Anpassungsfaktor zu erzeugen. Somit wird der Anpassungsfaktor verwendet, um angepasste Zeitstempel zu erzeugen.
  • Der Anpassungsfaktor kann auf viele unterschiedliche Arten und in vielen unterschiedlichen Konfigurationen implementiert werden. Lediglich als Beispiel und nicht als Einschränkung können die Anpassungsfaktoren für Einträge in der Liste T1 wie folgt bestimmt werden. Der oberste Eintrag (der 02 in der Liste T1 des Caches 320 ist) erhält einen Anpassungsfaktor von 30 Sekunden. Der nächste Eintrag in der Liste T1 (03) in diesem Beispiel erhält einen Anpassungsfaktor von 25 Sekunden. In diesem Beispiel nimmt Anpassungsfaktor für Einträge ab, die weiter vom Anfang der Liste oder vom Marker 726 entfernt sind. Als allgemeine Regel und lediglich als Beispiel werden Einträge in der Liste T1 oder kürzlichen Liste, die weiter am Anfang sind, unter Verwendung eines größeren Anpassungsfaktors angepasst als Einträge, die weiter vom Anfang der Liste entfernt sind. Die Art und Weise, wie der Anpassungsfaktor abnimmt, kann variieren. In diesem Beispiel nimmt der Anpassungsfaktor für jeden Eintrag um 5 Sekunden ab.
  • Der Anpassungsfaktor für Einträge in der Liste T2 oder häufigen Liste kann gleich oder unterschiedlich sein. In diesem Beispiel ist der Anpassungsfaktor für Einträge in der Liste T2 das Doppelte vom Anpassungsfaktor für Einträge in der Liste T1. Somit hat der Eintrag 01 (am Anfang der Liste T2) einen Anpassungsfaktor von 60 Sekunden und der Eintrag 02 hat einen Anpassungsfaktor von 50 Sekunden. Die Anpassungsfaktoren, die auf die Einträge in der Liste T2 angewendet werden, können um einen Faktor, eine Konstante oder dergleichen abnehmen, wenn der Eintragsindex zunimmt (Der Index des Eintrags am Anfang der Liste ist 0 und der Index für den n. Eintrag ist n).
  • Wenn die Entfernungsengine 728 die Einträge im Cache 720 verarbeitet, die in der Tabelle 722 dargestellt sind und deren Merkmale oder Metadaten mit einem Anpassungsfaktor angepasst wurden, identifiziert die Entfernungsengine 728 einen einzelnen Kandidaten zur Entfernung - Eintrag 03. Das trifft in diesem Beispiel sogar zu, wenn die Entfernungsengine 728 konfiguriert ist, um maximal zwei Einträge zur Entfernung zu identifizieren. Wie in der Tabelle 724 veranschaulicht, wird der Eintrag 03 aus dem Cache 720 entfernt.
  • Insbesondere hatten in diesem Beispiel, unter der Annahme, dass die Schwellenzeit 10:03:01 war, alle Einträge außer Eintrag 03 einen angepassten Zeitstempel, der größer oder später war als die Schwellenzeit. Außerdem wies der Eintrag 03 die geringste Häufigkeit der Verwendung auf. Darüber hinaus wies der Eintrag 03 eine geringere Neuheit auf als die anderen Einträge im Cache 320 und die Häufigkeit der Verwendung von Eintrag 03 war gleich wie jene von Eintrag 02. Daher entfernte die Entfernungsengine 728, im Vergleich zu 7A, einen Eintrag, der ein besserer Kandidat zur Entfernung war als die Einträge 00 und 01, die durch die Entfernungsengine 712 entfernt wurden, die keinen Anpassungsfaktor verwendete. In einer Ausführungsform wird die Häufigkeit der Verwendung durch den Anpassungsfaktor nicht beeinflusst.
  • Ausführungsformen der Erfindung stellen somit neue Cache-Entfernungsstrategien bereit und sind in der Lage, mehrere Einträge gleichzeitig zu entfernen. Einträge, die kürzlich oder häufig verwendet werden, werden nicht entfernt, weil der Anpassungsfaktor basierend auf der Zeitschwelle verhindert, dass diese Einträge als Kandidaten für eine Entfernung identifiziert werden.
  • 7C offenbart Aspekte eines Verfahrens zur Durchführung einer Entfernungsoperation. In einem Beispiel kann der Cache eine Entfernungsstrategie basierend auf einem oder mehreren Aspekten oder Merkmalen der Einträge im Cache implementieren, einschließlich, ohne Einschränkung, Neuheit, Häufigkeit und Zeit (d. h. Zeitstempel). In einem Beispiel kann die Entfernungsoperation zumindest einige der Merkmale oder Metadaten des Eintrags anpassen, bevor Entfernungskandidaten identifiziert werden. Einige der Elemente können laufend, regelmäßig oder weniger häufig als andere Elemente des Verfahrens 400 ausgeführt werden.
  • In diesem beispielhaften Verfahren 750 arbeitet 752 der Cache normal und umfasst eine Einträgeliste oder ein Cache-Verzeichnis oder Daten. Die Cache-Einträgeliste kann eine kürzliche Liste und eine häufige Liste umfassen. Der normale Betrieb kann das Hinzufügen von neuen Einträgen in den Cache oder das Zugreifen auf vorhandene Einträge im Cache umfassen. Wenn diese Aktionen stattfinden, wird die Einträgeliste wie zuvor beschrieben angepasst.
  • Als Nächstes kann eine Cache-Entfernungsoperation initiiert 754 oder ausgelöst werden. In einem Beispiel umfasst die Cache-Entfernungsoperation Aspekte einer Entfernungsoperation auf Zeitschwellenbasis. Somit kann eine Schwellenzeit etabliert oder bestimmt werden. Die Zeitschwelle kann standardmäßig oder durch Benutzereingabe oder dergleichen bestimmt werden.
  • Sobald die Entfernungsoperation initiiert wurde, können Anpassungen für die Cache-Einträge erzeugt werden 756. Die Anpassungen der Cache-Einträge können alle durch den Entfernungsvorgang bestimmt werden. Alternativ dazu können Anpassungen bestimmt oder neu berechnet werden, wenn Einträge neu hinzugefügt oder umgeordnet werden. Somit können die Anpassungswerte schon erzeugt werden, wenn eine Entfernungsoperation erzeugt wird. In manchen Beispielen müssen die Anpassungen gegebenenfalls aktualisiert werden. Das Erzeugen 756 der Anpassungen kann das Erzeugen eines angepassten Zeitstempels (d. h. eines angepassten Zeitstempels seit dem letzten Zugriff) umfassen, indem der Zeitstempel seit dem letzten Zugriff durch den Anpassungsfaktor angepasst oder verändert wird.
  • Sobald die Anpassungen oder angepassten Zeitstempel erzeugt werden, werden Kandidaten zur Entfernung basierend auf den angepassten Einträgen identifiziert 758. Da die Entfernungsoperation Kandidaten basierend auf einer Zeitschwelle identifiziert, werden die Kandidaten identifiziert, indem die Zeitschwelle mit den angepassten Zeitstempeln der Cache-Einträge verglichen wird.
  • In einem Beispiel kann die Entfernungsoperation alle Kandidaten zur Entfernung identifizieren. In diesem Fall werden die Kandidaten identifiziert 758 und die frühesten Einträge werden entfernt 710. Diese Zahl kann auf ein Maximum beschränkt sein. In einem weiteren Beispiel identifiziert 758 die Entfernungsoperation Kandidaten, bis eine maximale Anzahl von Kandidaten gefunden wurde. In jedem Fall oder in anderen Ausführungsformen werden die identifizierten Einträge (bis zum Maximum) dann entfernt 760. In einem Beispiel ist es nicht notwendig, die maximale Anzahl von Einträgen aus dem Cache zu entfernen.
  • In diesen Beispielen ermöglichen Ausführungsformen der Erfindung, dass die Cache-Entfernungsoperation auf Zeitschwellenbasis die Neuheit und/oder Häufigkeit der Cache-Einträge berücksichtigt und sich nicht einfach auf die lediglich auf der Zeitschwellenbasis identifizierten Kandidaten verlässt.
  • 8A offenbart Aspekte der Entfernung von Cache-Einträgen durch Anwendung von Anpassungsfaktoren auf Einträge in der Cache-Einträgeliste, einschließlich der kürzlichen Liste (T1), der kürzlichen Ghost-Liste (B1), der häufigen Liste (T2) und der häufigen Ghost-Liste (B2). 5 veranschaulicht einen Cache 802, der vier Einträge enthält: 00, 01, 02 und 03. Der Cache 802 enthält die Einträge 03 und 02 in der Liste T1 oder kürzlichen Liste und die Einträge 01 und 00 in der Liste T2 oder häufigen Liste. Die kürzliche Ghost-Liste B1 und die kürzliche Ghost-Liste B2 sind in dem Moment leer. Dies ist derselbe Cache wie der in 7B veranschaulichte Cache 820.
  • Zum Zeitpunkt 10:04:01 ist der Eintrag 02 ein Treffer oder es wird auf ihn zugegriffen 504. Da dies der zweite Treffer oder Zugriff auf den Eintrag 02 ist, wird der Eintrag 02 an den Anfang der häufigen Liste verschoben und der Eintrag 00 wird in die häufige Ghost-Liste B2 verschoben, wie im Cache 806 veranschaulicht ist. In diesem Beispiel können die dem Eintrag 00 zugeordneten Daten gegebenenfalls nicht aus dem Cache entfernt. Obwohl Daten oft verworfen werden, wenn ein Eintrag in die Ghost-Liste wandert, gibt es Situationen in Ausführungsformen der Erfindung, in denen sich der Eintrag in der Ghost-Liste befindet, die Daten aber nicht verworfen werden. Wenn beispielsweise ein neuer Eintrag (z. B. Eintrag 04) zum Cache hinzugefügt wird, ist es gegebenenfalls notwendig, dem Eintrag 00 zugeordnete Daten in der Ghost-Liste zu verwerfen, wenn der Cache voll ist.
  • In einem Beispiel kann, wenn der Eintrag 00 in die Ghost-Liste B2 wandert, der Anpassungsfaktor weiter reduziert werden oder schneller reduziert werden als der Anpassungsfaktor der häufigen Liste T2. Die Anpassungsfaktoren (oder -werte) für die kürzliche und häufige Liste wurden zuvor beschrieben. Die Anpassungsfaktoren für die Ghost-Listen B1 und B2 werden nun beschrieben. Die Anpassungsfaktoren werden Behandlung und nicht einschränkend beschrieben.
  • Wenn beispielsweise ein Eintrag in der kürzlichen Liste oder Liste T1 an das Ende der kürzlichen Liste wandert, kann sich der Anpassungsfaktor um eine Konstante ändern. Die Berechnung der Anpassungsfaktoren der kürzlichen Liste von i = 0 bis i = n, wobei der oberste Eintrag in der Liste T1 ein Index i = 0 ist, verläuft wie folgt: Anpassungsfaktor i + 1 = Anpassungsfaktor i Konstante .
    Figure DE102023109227A1_0001
  • Auf ähnliche Weise kann der Anpassungsfaktor für Einträge in der häufigen Liste wie folgt ausgedrückt werden (in Bezug auf die Konstante für die kürzliche Liste, lediglich als Beispiel): Anpassungsfaktor i + 1 = Anpassungsfaktor i 2 * Konstante .
    Figure DE102023109227A1_0002
  • Diese Beispiele veranschaulichen, dass die Anpassungsfaktoren für die Einträge in der Liste T1 und T2 in Bezug zueinander stehen können, was aber nicht erforderlich ist. Außerdem kann die Konstante durch eine variable Konstante ersetzt werden, sodass jeder Schritt den Anpassungsfaktor oder -wert in größerem Ausmaß reduziert als die vorherige Reduktion.
  • Die Anpassungsfaktoren für die Ghost-Listen können sich von den Anpassungsfaktoren der kürzlichen und häufigen Liste unterscheiden. Beispielsweise kann die Konstante für die Liste T15 Sekunden sein. Wenn der Anpassungsfaktor für die den ersten (Index 0) Eintrag 25 Sekunden ist, ist der Anpassungsfaktor für den nächsten Eintrag in der Liste T1 20 Sekunden. Wenn ein Eintrag in die Ghost-Liste fällt, kann der Anpassungsfaktor schneller reduziert werden (z. B. doppelt so schnell). Wenn beispielsweise der Anpassungsfaktor des Eintrags 03 im Cache 506 25 Sekunden ist und der Eintrag 03 in die Ghost-Liste oder Liste B1 verschoben wird, würde der Anpassungsfaktor um 10 Sekunden (statt 5 Sekunden) bis 15 Sekunden abnehmen.
  • Wenn ein Eintrag in der Liste T1 nach links wandert, nimmt somit der Anpassungsfaktor für jede Verschiebung um 5 Sekunden ab. Der Anpassungsfaktor steigt um 10 Sekunden, sobald sich der Eintrag in der Ghost-Liste befindet. Der Anpassungsfaktor für die Ghost-Liste B2 kann ebenfalls 10 Sekunden betragen, es können aber auch andere Faktoren verwendet werden.
  • Die Tabellen 808 und 810 veranschaulichen ein Beispiel für einen Anpassungsfaktor für Einträge in den Ghost-Listen.
  • Wenn der Anpassungsfaktor angewendet wird, wie in der Tabelle 808 veranschaulicht ist, beträgt der Anpassungsfaktor für den Eintrag 00 (der sich in der Ghost-Liste des Caches 806 befindet) 40 Sekunden. Die Tabelle 810 betrifft ein Beispiel, in dem kein Anpassungsfaktor auf Einträge in den Ghost-Listen angewendet wird.
  • Wenn der Cache 806 voll ist und eine Entfernungsoperation durchgeführt wird, verbessert die Bereitstellung eines Anpassungsfaktors für Ghost-Liste-Einträge die Leistung des Caches 806. Wenn beispielsweise eine Operation auf Zeitschwellenbasis unter Verwendung einer Zeitschwelle von 10:02:59 am Cache 806 ausgeführt wird, wird der Anpassungsfaktor angewendet und führt zu den in Tabelle 808 angeführten angepassten Zeitstempeln (Zeitstempel des letzten Zugriffs mit Anpassungsfaktor). Dies führt zur Entfernung des Eintrags 03, weil nur der angepasste Zeitstempel des Elements 503 früher ist als die Zeitschwelle (10:01:25 ist früher als 10:02:59).
  • Dies ist ein gutes Ergebnis, weil der Eintrag 03 den schlechtesten Neuheitswert (4) hat und nur ein einziges Mal auf ihn zugegriffen wurde (Zugriffshäufigkeit). Im Gegensatz dazu hat der Eintrag 00, der sich in der Ghost-Liste befindet, eine Verwendungshäufigkeit von 2 und einen Neuheitswert von (3). Der Anpassungsfaktor verbessert so die Leistung, indem ein besserer Kandidat für die Entfernung identifiziert wird als der Eintrag in der Ghost-Liste.
  • Die Tabelle 810 veranschaulicht, dass ohne den Anpassungsfaktor und unter Verwendung derselben Schwelle die Einträge 00 und 03 aus dem Cache 806 entfernt werden. Dies ist gegebenenfalls nicht so optimal wie das in Tabelle 808 veranschaulichte Ergebnis.
  • Unter Verwendung des Anpassungsfaktors für die kürzliche und häufige Ghost-Liste zusätzlich zur kürzlichen und häufigen Liste stellt eine allmähliche Reduktion des Anpassungsfaktors bereit, der auf die Einträge der Einträgeliste angewendet wird, einschließlich der kürzlichen Liste, der kürzlichen Ghost-Liste, der häufigen Liste und der häufigen Ghost-Liste, und ermöglicht es, dass Einträge eine längere Lebensdauer im Cache haben.
  • 8B offenbart Aspekte einer Entfernungsoperation. Das Verfahren ist ähnlich wie das Verfahren 750 und berücksichtigt außerdem Einträge in den Ghost-Listen. Beim Verfahren 820 wird der Cache betrieben 822. Als Nächstes wird eine Cache-Entfernungsoperation initiiert 824. Nach der Initiation werden die relevanten Anpassungsfaktoren auf die Einträge in der Einträgeliste angewendet, um Anpassungen wie angepasste Zeitstempel zu erzeugen 826. In diesem Beispiel umfasst die Einträgeliste eine kürzliche Liste mit zugehöriger Ghost-Liste und eine häufige Liste mit zugehöriger Ghost-Liste.
  • Kandidaten zur Entfernung werden basierend auf den angepassten Zeitstempeln im Vergleich zu einem Zeitschwellenwert identifiziert 828. Identifizierte Kandidaten werden dann entfernt 830. Wie zuvor erwähnt kann die tatsächliche Anzahl an entfernten Einträgen beschränkt sein. Es ist jedoch nicht notwendig, mehr als einen Eintrag zu entfernen, auch wenn Ausführungsformen der Erfindung vorteilhafterweise die gleichzeitige Identifizierung und Entfernung von mehreren Einträgen ermöglichen.
  • 9 offenbart Aspekte der Einfügung von Daten in einen Cache unter Verwendung eines Gateway-Mechanismus, wie z. B. eines reversen Caches. In diesem Beispiel werden Daten, die angefordert wurden, identifiziert 902. Beispielsweise kann eine Anwendung auf Daten zugreifen. In einem Beispiel wird das Verfahren 900 ausgeführt, nachdem bestimmt wurde, dass die angeforderten Daten nicht im Hauptcache vorhanden sind.
  • Es wird bestimmt, ob die angeforderten Daten (oder ein angeforderter Fingerprint oder Indexwert davon) im reversen Cache vorhanden ist 904. Wenn der Eintrag (z. B. der Fingerprint oder Indexwert der angeforderten Daten) im reversen Cache vorhanden ist (J bei 904), werden die Einträge im Cache angepasst. Wenn sich der Eintrag beispielsweise auf der kürzlichen Seite (entweder in der kürzlichen Ghost-Liste oder in der kürzlichen Liste) befindet, wird der Eintrag auf die häufige Seite verschoben. Beispielsweise wird der Eintrag in die Ghost-Häufigkeitsliste verschoben. Wenn sich der Eintrag auf der Häufigkeitsseite befindet, kann der Eintrag innerhalb der Häufigkeitsliste basierend auf der Anzahl von Zugriffen und/oder der Zugriffsdauer verschoben werden. Die häufige Liste kann basierend auf der Anzahl von Zugriffen und/oder basierend auf der Zugriffsneuheit geordnet werden. Das Verschieben eines Eintrags auf der Häufigkeitsseite kann somit den Eintrag an den Anfang der Liste verschieben oder nicht.
  • Angenommen beispielsweise, dass auf einen ersten Eintrag in der Häufigkeitsliste 5-mal zugegriffen wurde und auf die nächsten drei Einträge in der Häufigkeitsliste 3-mal zugegriffen wurde. Wenn auf einen Eintrag, auf den 2-mal zugegriffen wurde, ein drittes Mal zugegriffen wird, wird der Eintrag an die zweite Stelle vor die anderen Einträge verschoben, auf die dreimal zugegriffen wurde (aufgrund der Neuheit), aber hinter den Eintrag, auf den 5-mal zugegriffen wurde. In einem anderen Beispiel wird der Eintrag einfach an den Anfang der Häufigkeitsliste verschoben, unabhängig davon, wie oft auf andere Einträge zugegriffen wurde. Dies ermöglicht es dem reversen Cache, wenn er arbeitet, um einen Eintrag in den Hauptcache zu übertragen, sowohl die Häufigkeit als auch die Neuheit zu berücksichtigen.
  • Wenn sich der Eintrag nicht im reversen Cache befindet (N bei 904), wird bestimmt, ob es Kandidaten für die Übertragung 908 in den Hauptcache gibt. Wenn es einen Kandidaten gibt (J bei 908), wird der Kandidat in den Hauptcache übertragen und der aktuelle Eintrag wird zur Neuheitsliste des reversen Caches hinzugefügt.
  • Wenn es keinen Kandidaten für eine Übertragung gibt (N bei 908), wird bestimmt, ob ein alter Eintrag aus dem reversen Cache entfernt werden soll 912. Wenn es einen Eintrag zum Entfernen gibt (z. B. den ältesten Eintrag in der kürzlichen Liste oder den am wenigsten zeitnah verwendeten Eintrag in der Ghost-Häufigkeitsliste), wird der alte Eintrag aus dem reversen Cache entfernt und der Eintrag wird zur kürzlichen Liste des reversen Caches hinzugefügt.
  • Wenn es keinen Kandidaten zum Entfernen gibt, wird der Eintrag zur kürzlichen Ghost-Liste des reversen Caches hinzugefügt 916.
  • Wenn Einträge aus dem reversen Cache übertragen oder entfernt werden, kann die Übertragung oder Entfernung unter verschiedenen Umständen stattfinden. In einem Beispiel wird die Entscheidung getroffen, wenn der reverse Cache voll ist und ein neuer Eintrag für den Cache empfangen wird. Um den neuen Eintrag zum reversen Cache hinzuzufügen, ist es daher notwendig, Platz für den neuen Eintrag zu schaffen, indem ein anderer Eintrag entfernt oder übertragen wird.
  • Alternativ dazu kann der neue Eintrag einfach hinzugefügt werden, wenn im Cache Platz ist. Einträge können aber trotzdem übertragen werden, wenn der Cache nicht voll ist, beispielsweise basierend auf einer Zugriffsschwelle. Wenn auf einen Eintrag eine bestimmte Anzahl oft (Schwelle) zugegriffen wird, kann der Eintrag unabhängig davon übertragen werden, ob der reverse Cache voll ist oder nicht.
  • Als Nächstes wird der Hauptcache verwaltet 918. Insbesondere werden Einträge oder Daten im Hauptcache basierend auf der kürzlichen Liste, der häufigen Liste und/oder den angepassten Zeitschwellen verwaltet. Ausführungsformen der Erfindung verwalten, zusätzlich zur Operation eines reversen Caches, die bestimmt, welche Einträge in den Hauptcache übertragen werden, auch den Hauptcache, um sicherzustellen, dass Einträge wie hierin erläutert entfernt werden.
  • 10 offenbart Aspekte eines Cache-Systems. Das Cache-System 1000 umfasst einen Hauptcache 1004, einen reversen Cache 1006 und eine Cache-Engine 1002. Die Cache-Engine 1002 kann eine Cache-Steuerung sein, die konfiguriert ist, um den Hauptcache 1004 und den reversen Cache 1006 zu betreiben.
  • In diesem Beispiel wird der reverse Cache 1006 betrieben, um Einträge oder Daten für die Übertragung 1008 in den Hauptcache 1004 zu identifizieren. Somit kann die Cache-Engine 1002 den reversen Cache 1006 betreiben und Einträge für die Übertragung 1008 und/oder Entfernung 1012 aus dem reversen Cache 1006 zu identifizieren. Der reverse Cache 1006 kann eine beliebige Kombination aus einer kürzlichen Ghost-Liste, einer kürzlichen Liste, einer häufigen Liste und einer häufigen Ghost-Liste umfassen. Die kürzliche Ghost-Liste und die häufige Ghost-Liste können konfiguriert sein, um Indexwerte zu speichern, während die kürzliche Liste und die häufige Liste Fingerprints oder andere Identifikatoren speichern können.
  • Der Hauptcache 1004 kann ein ARC-Cache sein, der arbeitet, um Einträge basierend auf Neuheit, Häufigkeit und/oder angepassten Zeitwerten zu entfernen. Der Hauptcache 1004 und der reverse Cache 1006 können ähnliche Strukturen aufweisen (kürzliche Ghost-Liste B1, häufige Ghost-Liste B2, kürzliche Liste T1 und/oder T2), die auf unterschiedliche Art und Weise betrieben werden. Wie hierin erläutert wird der reverse Cache 1006 betrieben, um Einträge für die Übertragung zu identifizieren, und der Hauptcache 1004 wird betrieben, um überfällige Einträge zu entfernen. Aspekte der Unterschiebe im Betrieb zwischen dem Hauptcache 1004 und dem reversen Cache 1006 werden unter Bezugnahme auf 1A und 1B erläutert.
  • Nachstehend folgt eine Erläuterung von Aspekten von beispielhaften Betriebsumgebungen für verschiedene Ausführungsformen der Erfindung. Diese Erläuterung soll den Schutzumfang der Erfindung oder die Anwendbarkeit in keiner Weise einschränken.
  • Im Allgemeinen können Ausführungsformen der Erfindung in Verbindung mit Systemen, Software und Komponenten implementiert werden, die individuell und/oder gemeinsam Cache-Operationen implementieren und/oder deren Implementierung bewirken, einschließlich Cache-Entfernungsoperationen, Operationen bezüglich am wenigsten häufig verwendet, Operationen auf Häufigkeits- und/oder Neuheitsbasis, Operationen auf Zeitschwellenbasis oder Kombinationen davon. Allgemeiner schließt der Schutzumfang der Erfindung jede Betriebsumgebung ein, in der die offenbarten Konzepte nützlich sein können.
  • Zumindest einige Ausführungsformen der Erfindung stellen die Implementierung der offenbarten Funktionalität in vorhandenen Backup-Plattformen bereit, wobei Beispiele die Plattformen Dell-EMC NetWorker und Avamar und zugehörige Backup-Software- und Speicherumgebungen umfassen, wie z. B. die Speicherumgebung Dell-EMC DataDomain. Im Allgemeinen ist der Schutzumfang der Erfindung jedoch nicht auf bestimmte Datenbackupplattformen oder Datenspeicherumgebungen beschränkt.
  • Beispielhafte Cloud-Rechenumgebungen, die öffentlich sein können oder nicht, umfassen Speicherumgebungen, die eine Datenschutzfunktionalität für einen oder mehrere Clients bereitstellen. Ein weiteres Beispiel für eine Cloud-Rechenumgebung ist eine, in der Verarbeitung, Datenschutz und andere Dienste im Namen von einem oder mehreren Clients ausgeführt werden können. Einige Beispiele für Cloud-Rechenumgebungen, in Verbindung mit denen Ausführungsformen der Erfindung eingesetzt werden können, umfassen, ohne Einschränkung, Microsoft Azure, Amazon AWS, Dell EMC Cloud Storage Services und Google Cloud. Allgemeiner ist der Schutzumfang der Erfindung jedoch nicht auf den Einsatz einer bestimmten Art oder Implementierung einer Cloud-Rechenumgebung eingeschränkt. Cache-Operationen können darin implementiert werden.
  • Zusätzlich zur Cloud-Umgebung kann die Betriebsumgebung auch einen oder mehrere Clients einschließen, die in der Lage sind, Daten zu sammeln, zu modifizieren und zu erzeugen. Diese Clients können während dieser Operationen Caches verwenden. Als solches kann ein bestimmter Client einen oder mehrere Fälle einer oder mehrerer solcher Anwendungen einsetzen oder damit assoziiert sein, die solche Operationen in Bezug auf Daten ausführen, einschließlich Cache-bezogenen Operationen. Solche Clients können physische Maschinen oder virtuelle Maschinen (VM) oder Container einschließen.
  • Insbesondere können Vorrichtungen in der Betriebsumgebung die Form von Software, physischen Maschinen oder VMs oder Containern oder eine beliebige Kombination davon annehmen, obwohl für keine Ausführungsform eine bestimmte Vorrichtungsimplementierung oder -konfiguration erforderlich ist. Auf ähnliche Weise Datenschutzsystemkomponenten wie Datenbanken, Speicher-Server,
  • Wie hierin verwendet soll die Bezeichnung ,Daten' einen breiten Bedeutungsumfang einschließen. Daher umfasst die Bezeichnung, beispielsweise und ohne Einschränkung, Datensegmente, die beispielsweise durch Datenstromsegmentierungsprozesse erzeugt werden, Datenpakete, Datenblöcke, atomare Daten, E-Mails, Objekte beliebiger Art, Dateien beliebiger Art, einschließlich Mediendateien, Textverarbeitungsdateien, Tabellendateien und Datenbankdateien, sowie Kontakte, Verzeichnisse, Unterverzeichnisse, Volumina und beliebige Gruppen aus einem oder mehreren der Vorstehenden.
  • Beispielhafte Ausführungsformen der Erfindung können an jedem beliebigen System angewendet werden, das in der Lage ist, verschiedene Objektarten in analoger, digitaler oder anderer Form zu speichern und handzuhaben. Obwohl gegebenenfalls Bezeichnungen wie Dokument, Datei, Segment, Block oder Objekt als Beispiel verwendet werden, sind die Prinzipien der Offenbarung nicht auf eine bestimmte Form der Darstellung und Speicherung von Daten oder andere Informationen beschränkt. Solche Prinzipien sind vielmehr gleichermaßen für jedes beliebige Objekt anwendbar, das Informationen darstellen kann.
  • Es gilt anzumerken, dass jede(r) der offenbarten Prozesse, Operationen, Verfahren und/oder jeder beliebige Teil von beliebigen davon als Antwort auf, als Ergebnis von und/oder basierend auf der Leistung eines oder mehrerer beliebiger Prozesse, beliebiger Verfahren und/oder beliebiger Operationen ausgeführt werden können. Dementsprechend kann die Leistung eines oder mehrere Prozesse beispielsweise eine Basis für oder ein Auslöser der nachfolgenden Leistung eines oder mehrerer von zusätzlichen Prozessen, Operationen und/oder Verfahren sein. Somit können beispielsweise die verschiedenen Prozesse, aus denen ein Verfahren besteht, miteinander verbunden der auf andere Weise durch Beziehungen miteinander assoziiert sein, wie sie soeben erwähnt wurden. Schließlich werden die einzelnen Prozesse, aus denen die verschiedenen hierin offenbarten beispielhaften Verfahren bestehen, in manchen Ausführungsformen in der in diesen Beispielen spezifisch angeführten Reihenfolge ausgeführt, was aber nicht erforderlich ist. In anderen Ausführungsformen können die einzelnen Prozesse, aus denen ein offenbartes Verfahren besteht, in einer anderen Reihenfolge als der spezifisch angeführten Reihenfolge ausgeführt werden.
  • Es folgen weitere beispielhafte Ausführungsformen der Erfindung. Diese werden nur beispielhaft angeführt und sollen den Schutzumfang der Erfindung in keiner Weise einschränken.
  • Ausführungsform 1. Verfahren, umfassend: Identifizieren einer Datenanfrage, Bestimmen, ob ein Eintrag für die angeforderten Daten in einem reversen Cache vorhanden ist, Hinzufügen des Eintrags für die angeforderten Daten zum reversen Cache, wenn der Eintrag nicht im reversen Cache vorhanden ist, wobei der Eintrag im reversen Cache angepasst wird, wenn der Eintrag im reversen Cache vorhanden ist, und Übertragen eines Kandidateneintrags vom reversen Cache in einen Hauptcache und Entfernen von Einträgen aus dem Hauptcache basierend auf Metadaten, die jedem Eintrag zugeordnet sind, wobei die Metadaten einen Neuheitswert, einen Häufigkeitswert, einen Zeitstempel und einen angepassten Zeitstempel umfassen.
  • Ausführungsform 2. Verfahren nach Ausführungsform 1, wobei der reverse Cache eine kürzliche Ghost-Liste, eine kürzliche Liste, eine häufige Liste und/oder eine häufige Ghost-Liste umfasst, das weiters, wenn der Eintrag im reversen Cache vorhanden ist, das Verschieben des Eintrags in die häufige Ghost-Liste umfasst, wenn sich der Eintrag in der kürzlichen Liste oder in der kürzlichen Ghost-Liste befindet.
  • Ausführungsform 3. Verfahren nach Ausführungsform 1 und/oder 2, wobei ein neuer Eintrag in den reversen Cache zu einer kürzlichen Ghost-Liste hinzugefügt wird.
  • Ausführungsform 4. Verfahren nach Ausführungsform 1, 2, und/oder 3, das weiters das Entfernen eines Eintrags aus der kürzlichen Ghost-Liste des reversen Caches nach einem Zeitraum und wenn auf den Eintrag kein zweites Mal zugegriffen wird umfasst.
  • Ausführungsform 5. Verfahren nach Ausführungsform 1, 2, 3, und/oder 4, das weiters das Verschieben des Eintrags von der kürzlichen Ghost-Liste in eine häufige Ghost-Liste umfasst, wenn auf den Eintrag in der kürzlichen Ghost-Liste ein zweites Mal zugegriffen wird.
  • Ausführungsform 6. Verfahren nach Ausführungsform 1, 2, 3, 4, und/oder 5, das weiters das Übertagen des Eintrags in den Hauptcache umfasst, nachdem der Eintrag in die häufige Liste verschoben wurde und zu einem Kandidateneintrag wurde.
  • Ausführungsform 7. Verfahren nach Ausführungsform 1, 2, 3, 4, 5, und/oder 6, wobei das Entfernen von Einträgen aus dem Hauptcache weiters das Anpassen jedes der Zeitstempel umfasst, um angepasste Zeitstempel zu erzeugen.
  • Ausführungsform 8. Verfahren nach Ausführungsform 1, 2, 3, 4, 5, 6, und/oder 7, wobei der Hauptcache und der reverse Cache jeweils Listen umfassen, wobei die Listen eine kürzliche Ghost-Liste, eine kürzliche Liste, eine häufige Liste, und/oder eine häufige Ghost-Liste umfassen, wobei die Listen des reversen Caches anders betrieben werden als die Listen des Hauptcaches.
  • Ausführungsform 9. Verfahren nach Ausführungsform 1, 2, 3, 4, 5, 6, 7, und/oder 8, wobei Einträge, die zu den Listen des reversen Caches hinzugefügt werden, in die häufige Ghost-Liste des reversen Caches zuerst eingegeben werden, und Einträge, die zu den Listen des Hauptcaches hinzugefügt werden, zuerst zur kürzlichen Liste des Hauptcaches hinzugefügt werden.
  • Ausführungsform 10. Verfahren nach Ausführungsform 1, 2, 3, 4, 5, 6, 7, 8, und/oder 9, wobei für jeden aus dem reversen Cache und dem Hauptcache Einträge in der kürzlichen Ghost-Liste und der kürzlichen Liste in die häufige Liste oder die häufige Ghost-Liste verschoben werden, wenn ein zweites Mal darauf zugegriffen wird.
  • Ausführungsform 11. Verfahren, umfassend: Betreiben eines reversen Caches, um Einträge für eine Übertragung in einen Hauptcache zu identifizieren, wobei Einträge basierend auf der Neuheit des Zugriffs und/oder Häufigkeit des Zugriffs übertragen werden, und Entfernen von Einträgen aus dem Hauptcache basierend auf der Neuheit des Zugriffs, der Häufigkeit des Zugriffs und angepassten Zeitstempeln.
  • Ausführungsform 13. Verfahren zur Ausführung beliebiger der Operationen, Verfahren oder Prozesse oder eines beliebigen Abschnitts von beliebigen davon oder einer beliebigen Kombination davon, wie hierin offenbart.
  • Ausführungsform 14. Nichttransitorisches Speichermedium, auf dem Anweisungen gespeichert sind, die durch einen oder mehrere Hardware-Prozessoren ausführbar sind, um Operationen auszuführen, die Operationen gemäß einer der Ausführungsformen 1 bis 13 umfassen.
  • Die hierin offenbarten Ausführungsformen können die Verwendung eines Spezial- oder Allzweckcomputers umfassen, einschließlich verschiedener Computer-Hardware- und -Softwaremodule, wie nachstehend genauer erläutert wird. Ein Computer kann einen Prozessor und ein Computer-Speichermedium umfassen, das Anweisungen enthält, die, wenn sie durch den Prozessor ausgeführt werden und/oder bewirkt wird, dass sie durch den Computer ausgeführt werden, eines oder mehrere der hierin offenbarten Verfahren oder ein oder mehrere beliebige Teile eines beliebigen offenbarten Verfahrens ausführen.
  • Wie vorstehend erwähnt umfassen Ausführungsformen innerhalb des Schutzumfangs der vorliegenden Erfindung auch Computer-Speichermedien, bei denen es sich um physische Medien handelt, die Computer-ausführbare Anweisungen oder Datenstrukturen darauf tragen oder gespeichert haben. Solche Computer-Speichermedien können jedes beliebige physische Medium sein, auf das ein Allzweck- oder Spezialcomputer zugreifen kann.
  • Beispielsweise und ohne Einschränkung kann ein solches Computer-Speichermedium einen Hardware-Speicher wie eine Festkörperplatte/-vorrichtung (SSD), einen RAM, einen ROM, einen EEPROM, eine CD-ROM, eine Flashspeicher, einen Phasenwechselspeicher („PCM“) oder einen anderen optischen Plattenspeicher, magnetischen Plattenspeicher oder andere magnetische Speichervorrichtungen oder beliebige andere Hardware-Speichervorrichtungen umfassen, die verwendet werden können, um einen Programmcode in Form von Computer-ausführbaren Anweisungen oder Datenstrukturen zu speichern, auf die ein Allzweck- oder Spezialcomputersystem zugreifen kann und diese ausführen kann, um die offenbarte Funktionalität der Erfindung zu implementieren.
  • Computer-ausführbare Anweisungen umfassen beispielsweise Anweisungen und Daten, die bei Ausführung bewirken, dass ein Allzweckcomputer, ein Spezialcomputer oder eine Spezialverarbeitungsvorrichtung eine bestimmte Funktion oder Gruppe von Funktionen ausführt. Als solches können manche Ausführungsformen der Erfindung auf ein oder mehrere Systeme oder eine oder mehrere Vorrichtungen herunterladbar sein, beispielsweise von einer Webseite, Netzwerktopologie oder anderen Quelle. Außerdem umfasst der Schutzumfang der Erfindung jede(s) beliebige Hardware-System oder -Vorrichtung, das/die einen Fall einer Anwendung umfasst, welche die offenbarten ausführbaren Anweisungen umfasst.
  • Obwohl der Gegenstand in einer Sprache beschrieben wurde, die spezifisch für strukturelle Merkmale und/oder methodische Handlungen ist, versteht sich, dass der in den beiliegenden Ansprüchen definierte Gegenstand, nicht notwendigerweise auf die oben beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden die hier offengelegten spezifischen Merkmale und Handlungen als beispielhafte Formen der Implementierung der Ansprüche offenbart.
  • Wie hier verwendet, kann sich die Bezeichnung „Modul“ oder „Komponente“ oder „Engine“ auf Software-Objekte oder Routinen beziehen, die auf dem Rechensystem ausgeführt werden. Die verschiedenen hierin beschriebenen Komponenten, Module, Engines und Dienste können als Objekte oder Prozesse implementiert werden, die auf dem Rechensystem ausgeführt werden, zum Beispiel als separate Threads. Während das/die hierin beschriebene(n) System und Verfahren in Software implementiert werden können, sind auch Implementierungen in Hardware oder eine Kombination aus Software und Hardware möglich und vorgesehen. In der vorliegenden Offenbarung kann eine „Recheneinheit“ ein beliebiges Rechensystem wie zuvor definiert oder ein beliebiges Modul oder eine Kombination von Modulen sein, die auf einem Rechensystem laufen.
  • In zumindest einigen Fällen wird ein Hardware-Prozessor bereitgestellt, der ausführbare Anweisungen zur Ausführung eines Verfahrens oder Prozesses, wie der hierin offenbarten Verfahren und Prozesse, ausführen kann. Der Hardware-Prozessor kann ein Element anderer Hardware sein oder nicht, wie z. B. der hierin offenbarten Rechenvorrichtungen und -systeme.
  • In Bezug auf Rechenumgebungen können Ausführungsformen der Erfindung in Client-Server-Umgebungen, egal ob Netzwerk- oder lokale Umgebungen, oder in jeder anderen geeigneten Umgebung ausgeführt werden. Geeignete Betriebsumgebungen für zumindest einige Ausführungsformen der Erfindung umfassen Cloud-Rechenumgebungen, in denen sich ein oder mehrere Clients, Server oder andere Maschinen in einer Cloud-Umgebung befinden und arbeiten können.
  • Unter kurzer Bezugnahme auf 11 können eine oder mehrere der in den Figuren und/oder an anderer Stelle hierin offengelegten oder implizierten Einheiten die Form einer physischen Rechenvorrichtung annehmen oder eine solche einschließen oder auf einem solchen implementiert werden oder von diesem gehostet werden, wobei ein Beispiel hierfür ist mit 1100 bezeichnet ist. Wenn eines der vorgenannten Elemente eine virtuelle Maschine (VM) umfasst oder daraus besteht, kann diese VM eine Virtualisierung jeder beliebigen Kombination der in 11 offenbarten physischen Komponenten darstellen.
  • Im Beispiel von 11 umfasst die physische Rechenvorrichtung 1100 einen Speicher 1102, der einen, einige oder alle Speicher aus einem Arbeitsspeicher (RAM, Random Access Memory), nichtflüchtigen Speicher (NVM, Non-Volatile Memory) 1104, wie z. B. NVRAM, einem Festwertspeicher (ROM, Read-Only Memory) und einem persistenten Speicher sein kann, einen oder mehrere Hardware-Prozessoren 1106, nicht-transitorische Speichermedien 1108, eine Ul-Vorrichtung 1110 UND einen Datenspeicher 1112 enthalten kann. Eine oder mehrere der Speicherkomponenten 1102 der physischen Rechenvorrichtung 1100 können die Form einer Festkörpervorrichtungs(SSD)-Speichers annehmen. Außerdem können eine oder mehrere Anwendungen 1114 bereitgestellt werden, die Anweisungen enthalten, die von einem oder mehreren Hardware-Prozessoren 1106 ausgeführt werden können, um eine der hierin offenbarten Operationen oder Abschnitte davon durchzuführen, wie hierin offenbart. Eine oder mehrere der Speicherkomponenten 1102 können einen oder mehrere Caches enthalten. Die Caches können mehrere Ebenen von Caches enthalten.
  • Solche ausführbaren Anweisungen können verschiedene Formen annehmen, z. B. Anweisungen, die ausführbar sind, um ein beliebiges hierin offenbartes Verfahren oder einen Abschnitt davon auszuführen, und/oder die von/an einem Speicherstandort, sei es vor Ort in einem Unternehmen oder einem Cloud-Rechenstandort, einem Client, einem Datenzentrum, einem Datenschutzstandort, einschließlich eines Cloud-Speicherstandorts, oder einem Backup-Server ausführbar sind, um eine der hierin offenbarten Funktionen auszuführen. Ebenso können solche Anweisungen ausführbar sein, um beliebige andere hierin offenbarte Operationen und Verfahren oder Abschnitte davon auszuführen.
  • Die vorliegende Erfindung kann in anderen spezifischen Formen verkörpert werden, ohne von ihrem Geist oder ihren wesentlichen Merkmalen abzuweichen. Die beschriebenen Ausführungsformen sind in jeder Hinsicht nur als veranschaulichend und nicht einschränkend zu betrachten. Der Schutzumfang der Erfindung ist daher durch die beiliegenden Ansprüche gegeben und nicht durch die vorstehende Beschreibung. Alle Änderungen, die innerhalb der Bedeutung und des Äquivalenzbereichs der Ansprüche fallen, sind in deren Schutzumfang enthalten.

Claims (20)

  1. Verfahren, umfassend: Identifizieren einer Datenanfrage; Bestimmen, ob ein Eintrag für die angeforderten Daten in einem reversen Cache vorhanden ist; Hinzufügen des Eintrags für die angeforderten Daten zum reversen Cache, wenn der Eintrag nicht im reversen Cache vorhanden ist, wobei der Eintrag im reversen Cache angepasst wird, wenn der Eintrag im reversen Cache vorhanden ist; und Übertragen eines Kandidateneintrags vom reversen Cache in einen Hauptcache; und Entfernen von Einträgen aus dem Hauptcache basierend auf Metadaten, die mit jedem Eintrag assoziiert sind, wobei die Metadaten einen Neuheitswert, einen Häufigkeitswert, einen Zeitstempel und einen angepassten Zeitstempel umfassen.
  2. Verfahren nach Anspruch 1, wobei der reversen Cache eine kürzliche Ghost-Liste, eine kürzliche Liste, eine häufige Liste und/oder eine häufige Ghost-Liste umfasst, das weiters, wenn der Eintrag im reversen Cache vorhanden ist, das Verschieben des Eintrags in die häufige Ghost-Liste umfasst, wenn sich der Eintrag in der kürzlichen Liste oder in der kürzlichen Ghost-Liste befindet.
  3. Verfahren nach Anspruch 1, wobei ein neuer Eintrag in den reversen Cache zu einer kürzlichen Ghost-Liste hinzugefügt wird.
  4. Verfahren nach Anspruch 3, das weiters das Entfernen eines Eintrags aus der kürzlichen Ghost-Liste des reversen Caches nach einem Zeitraum und wenn auf den Eintrag kein zweites Mal zugegriffen wird umfasst.
  5. Verfahren nach Anspruch 4, das weiters das Verschieben des Eintrags von der kürzlichen Ghost-Liste in eine häufige Ghost-Liste umfasst, wenn auf den Eintrag in der kürzlichen Ghost-Liste ein zweites Mal zugegriffen wird.
  6. Verfahren nach Anspruch 4, das weiters das Übertagen des Eintrags in den Hauptcache umfasst, nachdem der Eintrag in die häufige Liste verschoben wurde und zu einem Kandidateneintrag wurde.
  7. Verfahren nach Anspruch 1, wobei das Entfernen von Einträgen aus dem Hauptcache weiters das Anpassen jedes der Zeitstempel umfasst, um angepasste Zeitstempel zu erzeugen.
  8. Verfahren nach Anspruch 1, wobei der Hauptcache und der reverse Cache jeweils Listen umfassen, wobei die Listen eine kürzliche Ghost-Liste, eine kürzliche Liste, eine häufige Liste, und/oder eine häufige Ghost-Liste umfassen, wobei die Listen des reversen Caches anders betrieben werden als die Listen des Hauptcaches.
  9. Verfahren nach Anspruch 8, wobei Einträge, die zu den Listen des reversen Caches hinzugefügt werden, in die häufige Ghost-Liste des reversen Caches zuerst eingegeben werden, und Einträge, die zu den Listen des Hauptcaches hinzugefügt werden, zuerst zur kürzlichen Liste des Hauptcaches hinzugefügt werden.
  10. Verfahren nach Anspruch 8, wobei für jeden aus dem reversen Cache und dem Hauptcache Einträge in der kürzlichen Ghost-Liste und der kürzlichen Liste in die häufige Liste oder die häufige Ghost-Liste verschoben werden, wenn ein zweites Mal darauf zugegriffen wird.
  11. Nichttransitorisches Speichermedium, auf dem Anweisungen gespeichert sind, die durch einen oder mehrere Hardware-Prozessoren ausführbar sind, um Operationen auszuführen, umfassend: Identifizieren einer Datenanfrage; Bestimmen, ob ein Eintrag für die angeforderten Daten in einem reversen Cache vorhanden ist; Hinzufügen des Eintrags für die angeforderten Daten zum reversen Cache, wenn der Eintrag nicht im reversen Cache vorhanden ist, wobei der Eintrag im reversen Cache angepasst wird, wenn der Eintrag im reversen Cache vorhanden ist; und Übertragen eines Kandidateneintrags vom reversen Cache in einen Hauptcache; und Entfernen von Einträgen aus dem Hauptcache basierend auf Metadaten, die mit jedem Eintrag assoziiert sind, wobei die Metadaten einen Neuheitswert, einen Häufigkeitswert, einen Zeitstempel und einen angepassten Zeitstempel umfassen.
  12. Nichttransitorisches Speichermedium nach Anspruch 11, wobei der reverse Cache eine kürzliche Ghost-Liste, eine kürzliche Liste, eine häufige Liste, und/oder eine häufige Ghost-Liste umfasst, weiters umfassend, wenn der Eintrag im reversen Cache vorhanden ist, Verschieben des Eintrags in die häufige Ghost-Liste, wenn der Eintrag in der kürzlichen Liste oder in der kürzlichen Ghost-Liste vorhanden ist.
  13. Nichttransitorisches Speichermedium nach Anspruch 12, das weiteres das Entfernen eines Eintrags aus der kürzlichen Ghost-Liste des reversen Caches nach einem Zeitraum und wenn auf den Eintrag kein zweites Mal zugegriffen wird umfasst.
  14. Nichttransitorisches Speichermedium nach Anspruch 13, weiters umfassend das Verschieben des Eintrags von der kürzlichen Ghost-Liste in eine häufige Ghost-Liste, wenn auf den Eintrag in der kürzlichen Ghost-Liste ein zweites Mal zugegriffen wird.
  15. Nichttransitorisches Speichermedium nach Anspruch 13, weiters umfassend das Übertragen des Eintrags in den Hauptcache, nachdem der Eintrag in die häufige Liste verschoben wurde und zum Kandidateneintrag wurde.
  16. Nichttransitorisches Speichermedium nach Anspruch 11, wobei das Entfernen von Einträgen aus dem Hauptcache weiters das Anpassen jedes der Zeitstempel umfasst, um angepasste Zeitstempel zu erzeugen.
  17. Nichttransitorisches Speichermedium nach Anspruch 11, wobei der Hauptcache und der reverse Cache jeweils Listen umfassen, wobei die Listen eine kürzliche Ghost-Liste, eine kürzliche Liste, eine häufige Liste, und/oder eine häufige Ghost-Liste umfassen, wobei die Listen des reversen Caches anders betrieben werden als die Listen des Hauptcaches.
  18. Nichttransitorisches Speichermedium nach Anspruch 17, wobei Einträge, die zu den Listen des reversen Caches hinzugefügt werden, in die häufige Ghost-Liste des reversen Caches eingegeben werden, und Einträge, die zu den Listen des Hauptcaches hinzugefügt werden, zuerst zur kürzlichen Liste des Hauptcaches hinzugefügt werden.
  19. Nichttransitorisches Speichermedium nach Anspruch 17, wobei für jeden aus dem reversen Cache und dem Hauptcache Einträge in der kürzlichen Ghost-Liste und der kürzlichen Liste in die häufige Liste oder die häufige Ghost-Liste verschoben werden, wenn ein zweites Mal darauf zugegriffen wird.
  20. Verfahren, umfassend: Betreiben eines reversen Caches, um Einträge für eine Übertragung in einen Hauptcache zu identifizieren, wobei Einträge basierend auf der Neuheit des Zugriffs und/oder Häufigkeit des Zugriffs übertragen werden; und Entfernen von Einträgen aus dem Hauptcache basierend auf der Neuheit des Zugriffs, der Häufigkeit des Zugriffs und angepassten Zeitstempeln.
DE102023109227.8A 2022-04-13 2023-04-12 Verfahren zur einfügung in einen cache und entfernung aus einem cache unter verwendung einer ghost-liste in einem cache-system, das einen reversen cache und einen hauptcache umfasst Pending DE102023109227A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/659,115 2022-04-13
US17/659,115 US20230333985A1 (en) 2022-04-13 2022-04-13 Methods for cache insertion and cache eviction using ghost list in a cache system that includes a reverse cache and a main cache

Publications (1)

Publication Number Publication Date
DE102023109227A1 true DE102023109227A1 (de) 2023-10-19

Family

ID=88191831

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023109227.8A Pending DE102023109227A1 (de) 2022-04-13 2023-04-12 Verfahren zur einfügung in einen cache und entfernung aus einem cache unter verwendung einer ghost-liste in einem cache-system, das einen reversen cache und einen hauptcache umfasst

Country Status (3)

Country Link
US (1) US20230333985A1 (de)
CN (1) CN116909942A (de)
DE (1) DE102023109227A1 (de)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7596662B2 (en) * 2006-08-31 2009-09-29 Intel Corporation Selective storage of data in levels of a cache memory
US8407419B2 (en) * 2010-11-30 2013-03-26 Open Text S.A. System and method for managing a cache using file system metadata
US8924647B1 (en) * 2012-09-26 2014-12-30 Emc Corporation Dynamic selection of data replacement protocol for multi-level cache
US11347428B2 (en) * 2019-01-16 2022-05-31 EMC IP Holding Company LLC Solid state tier optimization using a content addressable caching layer

Also Published As

Publication number Publication date
CN116909942A (zh) 2023-10-20
US20230333985A1 (en) 2023-10-19

Similar Documents

Publication Publication Date Title
DE112012002452B4 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE102012215665B4 (de) Dynamische Änderung der TTL-Werte in einem Datencache
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
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE69836796T2 (de) Datenverarbeiter mit lokalisierter gedächtnisreklamierung
DE102015007709A1 (de) Invalidationsdatenbereich für einen Cache
DE112013000650B4 (de) Datenzwischenspeicherungsbereich
DE19961499A1 (de) Caching von Objekten in Platten-gestützten Datenbanken
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE102009019271A1 (de) Übertragen von Sequenzzahlen für das Wiederherstellen nach Stromausfall bei einem nichtflüchtigen Speicher
DE112012002615T5 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE112008003826T5 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
WO2015090668A1 (de) Posix-kompatibles dateisystem, verfahren zum erzeugen einer dateiliste und speichervorrichtung
DE102013210719B4 (de) Verfahren und Systeme zum Verwalten von Cache-Speichern
DE112010003675T5 (de) Adress-Server
DE202016107437U1 (de) Daten-Caching
DE102012212183B4 (de) Verfahren und Speichercontroller zur Bestimmung einer Zugriffscharakteristik einer Datenentität
DE102014116393A1 (de) Verfahren und System für ein sicheres Archivieren von Daten
DE112012003695T5 (de) Aufrechterhalten mehrerer Zielkopien
DE112016003466T5 (de) Vorinstallieren von Seitentabellen-Cachezeilen einer virtuellen Maschine
DE112005003668T5 (de) HSM-Steuerprogramm, HSM-Steuervorrichtung und HSM-Steuerverfahren
DE102016001035A1 (de) Verfahren und Vorrichtung zum Aufbau einer Online-Aktualisierung von grossen Audio-Fingerabdruck-Datenbanken in Echtzeit
DE102022108673A1 (de) Ressourcenzuweisung für synthetische backups