DE112019001526B4 - Auswählen von einem von mehreren cache-bereinigungsalgorithmen, der zum entfernen einer spur aus dem cache verwendet werden soll - Google Patents

Auswählen von einem von mehreren cache-bereinigungsalgorithmen, der zum entfernen einer spur aus dem cache verwendet werden soll Download PDF

Info

Publication number
DE112019001526B4
DE112019001526B4 DE112019001526.5T DE112019001526T DE112019001526B4 DE 112019001526 B4 DE112019001526 B4 DE 112019001526B4 DE 112019001526 T DE112019001526 T DE 112019001526T DE 112019001526 B4 DE112019001526 B4 DE 112019001526B4
Authority
DE
Germany
Prior art keywords
cache
confidence level
list
track
machine learning
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.)
Active
Application number
DE112019001526.5T
Other languages
English (en)
Other versions
DE112019001526T5 (de
Inventor
Lokesh Gupta
Matthew Borlick
Kyler Anderson
Kevin John Ash
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112019001526T5 publication Critical patent/DE112019001526T5/de
Application granted granted Critical
Publication of DE112019001526B4 publication Critical patent/DE112019001526B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Abstract

Computerprogrammprodukt, um Spuren aus einem Cache (110) in einen Speicher (104) herabzustufen, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, in dem durch einen Computer (100) lesbarer Programmcode realisiert ist, der, wenn er ausgeführt wird, Operationen durchführt, wobei die Operationen aufweisen:Bereitstellen (516) eines ersten Machine-Learning-Moduls (1321), das als Eingabe eine erste Bereinigungsspur zur Entfernung aus dem Cache empfängt, die durch einen ersten Cache-Bereinigungsalgorithmus (1301) bestimmt wird, und ein erstes Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der erste Cache-Bereinigungsalgorithmus eine Cache-Lesetrefferrate optimiert;Bereitstellen (518) eines zweiten Machine-Learning-Moduls (1322), das als Eingabe eine zweite Bereinigungsspur zur Entfernung aus dem Cache empfängt, die durch einen zweiten Cache-Bereinigungsalgorithmus (1302) bestimmt wird, und ein zweites Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der zweite Cache-Bereinigungsalgorithmus die Cache-Lesetrefferrate optimiert, wobei der erste und der zweite Cache-Bereinigungsalgorithmus unterschiedliche Bereinigungsschemata verwenden;Festlegen (602) eines geänderten ersten Vertrauensniveaus auf der Grundlage von ersten Informationen über eine vorgegebene Spur;Festlegen (604) eines geänderten zweiten Vertrauensniveaus auf der Grundlage von zweiten Informationen über die vorgegebene Spur;Nachtrainieren (606) des ersten Machine-Learning-Moduls, um das geänderte erste Vertrauensniveau für die vorgegebene Spur zu erzeugen; undNachtrainieren (608) des zweiten Machine-Learning-Moduls, um das geänderte zweite Vertrauensniveau für die vorgegebene Spur zu erzeugen.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren zum Verwenden eines Machine-Learning-Moduls, um einen von mehreren Cache-Bereinigungsalgorithmen auszuwählen, der zum Entfernen einer Spur aus dem Cache verwendet werden soll.
  • HINTERGRUND
  • Ein Cache-Verwaltungssystem puffert Spuren in einer Speichereinheit, auf die infolge von Lese- und Schreiboperationen in einer Speichereinheit mit schnellerem Zugriff, wie beispielsweise Hauptspeicher, als die Speichereinheit, welche die angeforderten Spuren speichert, kürzlich zugegriffen wurde. Nachfolgende Leseanforderungen an Spuren in dem Cache mit schnellerem Zugriff werden schneller zurückgegeben als die angeforderten Spuren aus dem Speicher mit langsamerem Zugriff, was die Leselatenzzeit somit verringert.
  • Ein Cache-Verwaltungssystem kann eine verkettete Liste verwalten, die einen Eintrag für jede in dem Cache gespeicherte Spur hat, welche Schreibdaten, die im Cache gepuffert werden, bevor sie in die Speichereinheit geschrieben werden, oder Lesedaten aufweisen kann. Ein Cache-Verwaltungssystem verwendet einen Cache-Bereinigungsalgorithmus, um eine aus dem Cache zu entfernende Spur auszuwählen, wenn Speicherplatz freigegeben werden muss, um Platz für eine Spur zu schaffen, die für eine Lese- oder Schreibanforderung zum Cache hinzugefügt werden soll. Cache-Verwaltungsalgorithmen sind bestrebt, das Verhältnis der Treffer zu den Fehlern (Hit-to-Miss-Ratio) eines Cache zu erhöhen, wobei ein Cachetreffer stattfindet, wenn sich eine Leseanforderung an eine Spur richtet, die sich im Cache befindet, und von dem Cache mit dem schnelleren Zugriff bedient werden kann, und wobei ein Lesefehler stattfindet, wenn sich die angeforderte Spur nicht im Cache befindet. Ein Lesefehler führt zu einer höheren Latenzzeit bei einer Leseanforderung, um die auf die Anforderung zurückzugebende Spur aus dem Speicher in den Cache einzulesen.
  • Verschiedene Cache-Bereinigungsalgorithmen können in verschiedenen Betriebsumgebungen und bei verschiedenen Leseanforderungs-Spurmustern zu besseren Hit-to-Miss-Ratios eines Cache führen.
  • Es gibt in der Technik einen Bedarf für verbesserte Techniken zur Auswahl eines Cache-Bereinigungsalgorithmus, der zum Entfernen einer Spur aus dem Cache verwendet werden soll, um das Hit-to-Miss-Ratio eines Cache bei verschiedenen Lesezugriffsmustern und Arbeitslasten zu verbessern.
  • Die US 2011 / 0 296 122 A1 betrifft Ein System und Verfahren zum Löschen von Daten aus einem Cache in einem Speichergerät wird offenbart. Das Verfahren kann das Analysieren des Cache für die am wenigsten kürzlich fragmentierte logische Gruppe und das Entfernen der Einträge aus der am wenigsten kürzlich fragmentierten logischen Gruppe umfassen. Oder das Verfahren kann auch das Analysieren der Komprimierungshistorie und das Auswählen von Einträgen zum Auslagern auf der Grundlage der Analyse der Komprimierungshistorie umfassen. Das Verfahren kann auch die Planung verschiedener Auslagerungsmechanismen während verschiedener Operationen des Speichergeräts umfassen. Das System kann einen Cache-Speicher, einen Hauptspeicher und einen Controller umfassen, der so konfiguriert ist, dass er Einträge, die mit der am wenigsten fragmentierten logischen Gruppe assoziiert sind, löscht, der so konfiguriert ist, dass er Einträge auf der Grundlage einer Analyse der Verdichtungshistorie löscht, oder der so konfiguriert ist, dass er verschiedene Löschmechanismen während verschiedener Operationen des Speichergeräts plant.
  • Die US 2015 / 0 186 274 A1 betrifft ein Speichersystem, das eine Vielzahl von Cache-Bereinigungsrichtlinien und optional eine Vielzahl von Richtlinien zur Änderung virtueller Adressen implementiert. Eine Cache-Speichereinheit des Speichersystems hat eine Vielzahl von Cache-Speicher-Untereinheiten. Die Cache-Speichereinheit wird optional von einer Cache-Verwaltungseinheit in Übereinstimmung mit den Cache-Bereinigungsrichtlinien verwaltet. Die Cache-Speicher-Untereinheiten sind für die Aufbewahrung von Informationen zugewiesen, die mit jeweiligen Speicheradressen verknüpft sind, und sind mit den Cache-Beseitigungsrichtlinien in Übereinstimmung mit den jeweiligen Speicheradressen verknüpft. Beispielsweise wird als Reaktion auf einen Verweis auf eine Adresse, die in einem Cache fehlt, die Adresse verwendet, um auf einen Seitentabelleneintrag zuzugreifen, der einen Indikator aufweist, der eine Bereinigungsrichtlinie angibt, die zu verwenden ist, wenn eine Cache-Zeile aus dem Cache ausgewählt wird, um sie in Verknüpfung mit der Zuweisung einer Cache-Zeile des Cache zu löschen, um die über die Adresse erhaltenen Daten zu behalten.
  • Die US 2015 / 0 052 286 A1 betrifft Systeme und Verfahren, die das Abrufen eines Hash-Indexes in einem elektronischen Gerät unterstützen. Das System enthält eine Adressierungskomponente, die einen Hash-Index in Abhängigkeit von einer Exklusiv-Oder-Identität erzeugt. Die Adressierungskomponente kann den Hash-Index in Abhängigkeit von einem Tag-Wert abrufen. Dementsprechend kann der benötigte Speicherplatz reduziert werden und elektronische Geräte können effizienter sein.
  • KURZDARSTELLUNG
  • Die Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren zum Herabstufen von Spuren aus einem Cache, deren Merkmalen in den entsprechenden unabhängigen Ansprüchen angegeben sind. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben
  • In einem ersten Beispiel werden ein Computerprogrammprodukt, ein System und ein Verfahren zur Verwendung eines Machine-Learning-Moduls bereitgestellt, um einen von mehreren Cache-Bereinigungsalgorithmen auszuwählen, der zum Entfernen einer Spur aus dem Cache verwendet werden soll. Ein erster Cache-Bereinigungsalgorithmus legt aus dem Cache zu entfernende Spuren fest. Ein zweiter Cache-Bereinigungsalgorithmus legt aus dem Cache zu entfernende Spuren fest, wobei der erste und der zweite Cache-Bereinigungsalgorithmus unterschiedliche Bereinigungsschemata verwenden. Mindestens ein Machine-Learning-Modul wird ausgeführt, um eine Ausgabe zu erzeugen, die einen Cache-Bereinigungsalgorithmus des ersten Cache-Bereinigungsalgorithmus und des zweiten Cache-Bereinigungsalgorithmus angibt, der zur Auswahl einer aus dem Cache zu entfernenden Spur verwendet werden soll. Eine Spur wird entfernt, die von einem Cache-Bereinigungsalgorithmus des ersten und des zweiten Cache-Bereinigungsalgorithmus ausgewählt wird, der in der Ausgabe aus dem mindestens einen Machine-Learning-Modul angegeben wird.
  • Verschiedene Cache-Bereinigungsalgorithmen können das Hit-to-Miss-Ratio eines Cache unter verschiedenen Betriebsbedingungen verbessern. Beschriebene Ausführungsformen verwenden mindestens ein Machine-Learning-Modul, das eine Ausgabe erzeugt, die angibt, welcher Cache-Bereinigungsalgorithmus des ersten und des zweiten Cache-Bereinigungsalgorithmus zur Auswahl der zu entfernenden Spur verwendet werden soll, wobei es den Cache-Bereinigungsalgorithmus auswählen würde, der wahrscheinlich eine größere positive Auswirkung auf das Hit-to-Miss-Ratio eines Cache hätte.
  • In einem zweiten Beispiel kann das erste Beispiel zusätzlich das Ausführen des ersten Cache-Bereinigungsalgorithmus, um eine erste aus dem Cache zu entfernende Bereinigungsspur festzulegen, und das Ausführen des zweiten Cache-Bereinigungsalgorithmus, um eine zweite aus dem Cache zu entfernende Bereinigungsspur festzulegen, beinhalten. Das ausgeführte mindestens eine Machine-Learning-Modul empfängt als Eingabe die erste und die zweite Bereinigungsspur sowie Cache-Statistiken, um eine Ausgabe zu erzeugen, die verwendet wird, um einen Cache-Bereinigungsalgorithmus des ersten und des zweiten Cache-Bereinigungsalgorithmus auszuwählen, der zur Auswahl einer aus dem Cache zu entfernenden Spur verwendet werden soll.
  • In dem zweiten Beispiel werden dem mindestens einen Machine-Learning-Algorithmus die erste und die zweite Bereinigungsspur, die der erste und der zweite Cache-Bereinigungsalgorithmus zum Entfernen auswählen würde, sowie Cache-Statistiken bereitgestellt, die verwendet werden sollen, um festzustellen, welche der ausgewählten ersten und zweiten Bereinigungsspur, die entfernt werden soll, das Hit-to-Miss-Ratio eines Cache am meisten verbessern würde.
  • In einem dritten Beispiel kann das zweite Beispiel zusätzlich beinhalten, dass das Ausführen des mindestens einen Machine-Learning-Moduls das Ausführen eines ersten Machine-Learning-Moduls, das als Eingabe die erste Bereinigungsspur und Cache-Statistiken empfängt und ein erstes Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der erste Cache-Bereinigungsalgorithmus eine Cache-Lesetrefferrate optimiert, und das Ausführen eines zweiten Machine-Learning-Moduls aufweist, das als Eingabe die zweite Bereinigungsspur und Cache-Statistiken empfängt und ein zweites Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der zweite Cache-Bereinigungsalgorithmus die Cache-Lesetrefferrate optimiert. Die erste Bereinigungsspur wird als Reaktion darauf, dass das erste Vertrauensniveau das zweite Vertrauensniveau übersteigt, aus dem Cache entfernt, und die zweite Bereinigungsspur wird als Reaktion darauf, dass das zweite Vertrauensniveau das erste Vertrauensniveau übersteigt, aus dem Cache entfernt.
  • In dem dritten Beispiel werden ein erster und ein zweiter Machine-Learning-Algorithmus trainiert, um ein Vertrauensniveau zu schätzen, das eine Wahrscheinlichkeit angibt, dass der zu dem Machine-Learning-Algorithmus gehörende Cache-Bereinigungsalgorithmus die Cache-Lesetrefferrate optimieren wird. Die von dem Cache-Bereinigungsalgorithmus mit dem höchsten Vertrauensniveau ausgewählte Spur wird dann aus dem Cache entfernt, um den Cache-Bereinigungsalgorithmus zu verwenden, der das optimale Ergebnis für die Erhöhung der Lesetrefferrate, d.h. eine Minimierung der Cachefehlerrate, bereitstellt. Auf diese Weise wird Computertechnologie für eine Cachebereinigung verbessert, indem der Cache-Bereinigungsalgorithmus verwendet wird, um eine bestimmte zu entfernende Spur auszuwählen, die die beste Auswirkung auf die Lesetrefferrate haben wird und das Cache-Miss-Ratio minimiert, das von den relativen Vertrauensniveaus angegeben wird, welche von den Machine-Learning-Algorithmen erzeugt werden.
  • In einem vierten Beispiel wird ein Computerprogrammprodukt, ein System und Verfahren bereitgestellt, um Spuren aus dem Cache in einen Speicher herabzustufen. Ein erster Cache-Bereinigungsalgorithmus wird ausgeführt, um eine erste aus dem Cache zu entfernende Bereinigungsspur festzulegen. Ein zweiter Cache-Bereinigungsalgorithmus wird ausgeführt, um eine zweite aus dem Cache zu entfernende Bereinigungsspur festzulegen, wobei der erste und der zweite Cache-Bereinigungsalgorithmus unterschiedliche Bereinigungsschemata verwenden. Mindestens ein Machine-Learning-Modul wird ausgeführt, das als Eingabe die erste Bereinigungsspur, die zweite Bereinigungsspur und Cache-Statistiken empfängt und eine Ausgabe erzeugt, die verwendet wird, um einen Cache-Bereinigungsalgorithmus des ersten und des zweiten Cache-Bereinigungsalgorithmus auszuwählen, der zur Auswahl einer aus dem Cache zu entfernenden Spur verwendet werden soll. Die erste Bereinigungsspur wird als Reaktion darauf aus dem Cache entfernt, dass die Ausgabe aus dem mindestens einen Machine-Learning-Modul die Verwendung des ersten Cache-Bereinigungsalgorithmus angibt. Die zweite Bereinigungsspur wird als Reaktion darauf aus dem Cache entfernt, dass die Ausgabe aus dem mindestens einen Machine-Learning-Modul die Verwendung des zweiten Cache-Bereinigungsalgorithmus angibt.
  • Das vierte Beispiel stellt Verbesserungen der Computertechnologie zum Auswählen einer zu entfernenden Spur bereit, indem sie mindestens ein Machine-Learning-Modul veranlasst, die Spuren zu berücksichtigen, die von verschiedenen möglichen Cache-Bereinigungsalgorithmen und Cache-Statistiken zum Entfernen ausgewählt würden, um festzustellen, welcher Cache-Bereinigungsalgorithmus in diesem bestimmten Moment eine zu entfernende Spur auswählen würde, die höchstwahrscheinlich eine bessere Auswirkung auf das Hit-to-Miss-Ratio eines Cache haben würde, d.h. eine zu entfernende Spur auswählen würde, die in naher Zukunft mit einer geringeren Wahrscheinlichkeit angefordert werden würde.
  • In einem fünften Beispiel beinhaltet das vierte Beispiel zusätzlich, dass die Ausgabe aus dem mindestens einen Machine-Learning-Modul ein erstes Vertrauensniveau, das eine Wahrscheinlichkeit angibt, dass der erste Cache-Bereinigungsalgorithmus eine Cache-Lesetrefferrate optimiert, und ein zweites Vertrauensniveau aufweist, das eine Wahrscheinlichkeit angibt, dass der zweite Cache-Bereinigungsalgorithmus die Cache-Lesetrefferrate optimiert. Die Ausgabe gibt die Verwendung des ersten Cache-Bereinigungsalgorithmus als Reaktion darauf an, dass das erste Vertrauensniveau das zweite Vertrauensniveau übersteigt. Die Ausgabe gibt die Verwendung des zweiten Cache-Bereinigungsalgorithmus als Reaktion darauf an, dass das zweite Vertrauensniveau das erste Vertrauensniveau übersteigt.
  • In dem fünften Beispiel wird mindestens ein Machine-Learning-Algorithmus verwendet, um Vertrauensniveaus für verschiedene Cache-Bereinigungsalgorithmen zu erzeugen, die zur Auswahl einer zu entfernenden Spur verwendet werden können. Die Vertrauensniveaus geben an, welcher Cache-Bereinigungsalgorithmus im Moment, auf der Grundlage der Spur, die er zu entfernen vorschlägt, sowie aktuellen Cache-Statistiken, die Cache-Lesetrefferrate wahrscheinlich optimieren und der beste Cache-Bereinigungsalgorithmus sein würde, um die Leistungsfähigkeit des Caches zu verbessern.
  • In einem sechsten Beispiel beinhaltet das vierte Beispiel zusätzlich, dass das mindestens eine Machine-Learning-Modul ein erstes Machine-Learning-Modul, das als Eingabe die erste Bereinigungsspur empfängt und das erste Vertrauensniveau ausgibt, und ein zweites Machine-Learning-Modul aufweist, das als Eingabe die zweite Bereinigungsspur empfängt und das zweite Vertrauensniveau ausgibt. Eine Liste des aktiven Cache gibt die Spuren in dem Cache an und eine Liste des inaktiven Cache gibt aus dem Cache entfernte Spuren an. Eine Angabe einer Spur wird aus der Liste des aktiven Cache entfernt, wenn die Spur aus dem Cache entfernt ist. Die Angabe der aus dem Cache entfernten Spur wird zu der Liste des inaktiven Cache hinzugefügt. Als Reaktion darauf, dass eine Leseanforderung an eine angeforderte Spur in der Liste des aktiven Cache nicht angegeben und in der Liste des inaktiven Cache angegeben ist, wird ein geändertes erstes Vertrauensniveau auf der Grundlage von ersten Informationen über die angeforderte Spur in der Liste des inaktiven Cache festgelegt. Ein geändertes zweites Vertrauensniveau wird auf der Grundlage von zweiten Informationen über die angeforderte Spur in der Liste des inaktiven Cache festgelegt. Das erste Machine-Learning-Modul wird nachtrainiert, um das geänderte erste Vertrauensniveau für die angeforderte Spur zu erzeugen. Das zweite Machine-Learning-Modul wird nachtrainiert, um das geänderte zweite Vertrauensniveau für die angeforderte Spur zu erzeugen.
  • In dem sechsten Beispiel wird eine Liste des inaktiven Cache verwendet, um Informationen über aus dem Cache entfernte Spuren zu verwalten. Wenn es einen Lesefehler gibt, werden ein geändertes erstes Vertrauensniveau und ein geändertes zweites Vertrauensniveau auf der Grundlage von ersten Informationen und zweiten Informationen über die angeforderte Spur in der Liste des inaktiven Cache festgelegt, die Informationen über entfernte Spuren hat. Wenn die Informationen für die angeforderte Spur in der Liste des inaktiven Cache angeben, dass die Wahrscheinlichkeit für die Auswahl der Spur durch den Cache-Bereinigungsalgorithmus größer ist, wird das von dem Machine-Learning-Modul für diesen Cache-Bereinigungsalgorithmus für diese angeforderte Spur und diese Cache-Statistiken erzeugte Vertrauensniveau erhöht, um die Wahrscheinlichkeit zu erhöhen, dass dieser Cache-Bereinigungsalgorithmus ausgewählt wird, da er die angeforderte Spur mit größerer Wahrscheinlichkeit auswählen wird. Wenn die Informationen für die angeforderte Spur in der Liste des inaktiven Cache andererseits angeben, dass die Wahrscheinlichkeit für die Auswahl der Spur durch den Cache-Bereinigungsalgorithmus geringer ist, wird das von dem Machine-Learning-Modul für diese angeforderte Spur und diese Cache-Statistiken erzeugte Vertrauensniveau verringert, um die Wahrscheinlichkeit zu verringern, dass dieser Cache-Bereinigungsalgorithmus ausgewählt wird, da er die angeforderte Spur mit geringerer Wahrscheinlichkeit auswählen wird. Auf diese Weise werden die Machine-Learning-Module auf der Grundlage einer angeforderten Spur, die zu einem Cachefehler führt, nachtrainiert, um ein Vertrauensniveau zu erzeugen, bei dem die Wahrscheinlichkeit größer ist, dass ein Cache-Bereinigungsalgorithmus ausgewählt wird, der die angeforderte Spur wahrscheinlich auswählen würde, und um ein Vertrauensniveau zu erzeugen, bei dem die Wahrscheinlichkeit geringer ist, dass ein Cache-Bereinigungsalgorithmus ausgewählt wird, der die angeforderte Spur mit einer geringeren Wahrscheinlichkeit auswählen würde. Auf diese Weise werden die Vertrauensniveaus angepasst, um die Wahrscheinlichkeit zu erhöhen, dass der Cache-Bereinigungsalgorithmus, der die angeforderte Spur auswählen würde, die zu dem Cachefehler führt, verwendet wird, um Cachefehler in der Zukunft zu verringern und das Hit-to-Miss-Ratio zu verbessern.
  • Figurenliste
    • 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung.
    • 2 veranschaulicht eine Ausführungsform einer Least-Recently-Used-(LRU) Liste.
    • 3 veranschaulicht eine Ausführungsform eines Cache-Steuerblocks.
    • 4 veranschaulicht eine Ausführungsform von Cache-Statistiken.
    • Die 5a und 5b veranschaulichen eine Ausführungsform von Operationen zur Verarbeitung einer Leseanforderung an eine Spur.
    • 6 veranschaulicht eine Ausführungsform von Operationen zum Nachtrainieren von Machine-Learning-Algorithmen bei einem Lesefehler.
    • 7 veranschaulicht eine Ausführungsform von Operationen, um ein geändertes Vertrauensniveau für einen LRU-Algorithmus festzulegen, das für die angeforderte Spur ausgegeben werden sollte, wenn es einen Lesefehler auf der angeforderten Spur gibt.
    • 8 veranschaulicht eine Ausführungsform von Operationen, um ein geändertes Vertrauensniveau für einen Least-Frequently-Used-(LFU-)Algorithmus festzulegen, das für die angeforderte Spur ausgegeben werden sollte, wenn es einen Lesefehler auf der angeforderten Spur gibt.
    • 9 veranschaulicht eine Datenverarbeitungsumgebung, in der die Komponenten von 1 ausgeführt werden können.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ein Speichercontroller stuft Spuren aus einem aktiven Cache herab, um Platz für das Zwischenspeichern von Daten für neue E/A-Anforderungen, z.B. Lese-oder Schreibanforderungen, zu schaffen. Wenn sich die Daten für eine Leseanforderung bereits in dem Cache befinden, d.h. ein Cachetreffer, müssen die angeforderten Daten nicht in den Cache eingelesen werden. Wenn sich die Daten für die Leseanforderung nicht in dem Cache befinden, d.h. ein Cachefehler, oder wenn es Schreibdaten für die Anforderung gibt, müssen Spuren in dem Cache gegebenenfalls aus dem Cache entfernt werden, um Speicherplatz für die in den Cache einzulesenden Lesedaten oder die Schreibdaten zu schaffen. Spuren werden auf der Grundlage von Cache-Bereinigungsalgorithmen entfernt. Wenn die Cachefehlerrate hoch ist, müssen Daten fortlaufend aus dem Speicher in den Cache eingelesen werden, und neue E/A-Anforderungen müssen dann in eine Warteschlange gestellt werden, bis Speicherplatz in dem Cache freigegeben wird. Eine solche Warteschlangensteuerung von E/A-Anforderungen kann zu schwerwiegenden Performanzproblemen und hohen Antwortzeiten bei den in die Warteschlange gestellten E/A-Anforderungen führen.
  • Beschriebene Ausführungsformen stellen Verbesserungen der Computertechnologie bereit, um eine Spur aus einem Cache zu entfernen, indem ein erster und ein zweiter Cache-Bereinigungsalgorithmus bereitgestellt und mindestens ein Machine-Learning-Modul ausgeführt wird, um eine Ausgabe zu erzeugen, die einen Cache-Bereinigungsalgorithmus des ersten Cache-Bereinigungsalgorithmus und des zweiten Cache-Bereinigungsalgorithmus angibt, der zur Auswahl einer aus dem Cache zu entfernenden Spur verwendet werden soll, um das Hit-to-Miss-Ratio des Cache zu verbessern, was das Hit-to-Miss-Ratio eines Cache maximiert und die Leselatenzzeit minimiert. Beschriebene Ausführungsformen stellen Verbesserungen für das Auswählen eines Cache-Bereinigungsalgorithmus bereit, der verwendet werden soll, um die zu entfernende Spur festzulegen, indem Machine-Learning-Module verwendet werden, um die angeforderte Spur zu verarbeiten und den Cache-Bereinigungsalgorithmus festzulegen, der das Hit-to-Miss-Ratio eines Cache am besten optimiert, indem Machine-Learning-Optimierungstechniken verwendet werden. Auf diese Weise verbessern beschriebene Ausführungsformen die Auswahl eines Cache-Bereinigungsalgorithmus, der verwendet werden soll, um eine Spur zu entfernen, indem berücksichtigt wird, welcher Cache-Bereinigungsalgorithmus den höchsten Vertrauenswert hat, oder um das Hit-to-Miss-Ratio mit größerer Wahrscheinlichkeit zu erhöhen und die Anzahl der Cachefehler zu verringern.
  • 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung. Ein Datenverarbeitungssystem 100 greift auf Daten in Datenträgern 102 (z.B. Nummern von logischen Einheiten, logischen Einheiten, logischen Subsystemen usw.) zu, die in einem Speicher 104 konfiguriert sind. Das Datenverarbeitungssystem 100 enthält einen Prozessor 106 und einen Hauptspeicher 108, der einen aktiven Cache 110 enthält, um Daten für den Speicher 104 zwischenzuspeichern. Der Prozessor 106 kann eine oder mehrere zentrale Verarbeitungseinheiten (CPUs, central processing units) oder eine Gruppe von mehreren Kernen auf einer einzelnen CPU aufweisen. Der aktive Cache 110 puffert von Prozessen innerhalb des Datenverarbeitungssystems angeforderte Daten. Alternativ kann das Datenverarbeitungssystem 100 einen Speichercontroller aufweisen, der Eingabe-/Ausgabe-(E/A-)Zugriffsanforderungen für Spuren in dem Speicher 104 von Hosts 118 verarbeitet, die mit dem Datenverarbeitungssystem 100 (Speichercontroller) über ein Netzwerk 120 verbunden sind.
  • Der Hauptspeicher 108 enthält des Weiteren einen Speichermanager 122 und einen Cache-Manager 124. Der Speichermanager 122 verwaltet Zugriffsanforderungen von internen Prozessen in dem Datenverarbeitungssystem 100 und/oder von Hosts 118 für Spuren in dem Speicher 104. Der Cache-Manager 124 verwaltet Spuren, auf die zugegriffen wurde, in dem aktiven Cache 110 für einen zukünftigen Lesezugriff auf die Spuren, damit die Spuren, auf die zugegriffen wurde, aus dem Cache 110 mit schnellerem Zugriff zurückgegeben werden können, anstatt sie aus dem Speicher 104 abrufen zu müssen. Eine Spur kann eine in dem Speicher 104 konfigurierte beliebige Dateneinheit aufweisen, wie beispielsweise eine Spur, eine logische Blockadresse (LBA, Logical Block Address) usw., die Teil einer größeren Gruppierung von Spuren ist, wie etwa eines Datenträgers, einer logischen Einheit usw.
  • Der Cache-Manager 124 verwaltet Cache-Verwaltungsinformationen 126 in dem Hauptspeicher 108, um Lesespuren (nicht geändert) und Schreibspuren (geändert) in dem Cache 110 zu verwalten. Zu den Cache-Verwaltungsinformationen 126 kann ein Spurindex 128, der einen Index von Spuren in dem Cache 110 bereitstellt, um Steuerblöcke in einem Steuerblockverzeichnis 300 zwischenzuspeichern; eine LRU-Liste 200A des aktiven Cache für Spuren in dem aktiven Cache 110 und eine LRU-Liste 200IA des inaktiven Cache, um aus dem aktiven Cache 110 entfernte Spuren zum Zweck der Überwachung des Cache-Zugriffs anzugeben, um Cache-Bereinigungsalgorithmen zu optimieren, gehören. Das Steuerblockverzeichnis 300 enthält die Cache-Steuerblöcke, wobei es einen Cache-Steuerblock für jede Spur in dem Cache 110 gibt, der Metadaten auf der Spur in dem Cache 110 bereitstellt. Der Spurindex 128 ordnet den Cache-Steuerblöcken Spuren zu, welche Informationen über die Spuren in dem Cache 110 bereitstellen. Nachdem festgestellt wurde, dass die LRU-Liste 200A des aktiven Cache voll ist oder einen Schwellenwert erreicht hat, wird die LRU-Liste 200A des aktiven Cache verwendet, um Spuren festzulegen, die aus dem Cache entfernt werden sollen.
  • In einer Ausführungsform werden Cache-Steuerblöcke für Spuren verwaltet, die in der LRU-Liste 200A des aktiven Cache und in der LRU-Liste 200IA des inaktiven Cache angegeben sind, wobei der Unterschied darin besteht, dass die Spurdaten für in der LRU-Liste 200IA des inaktiven Cache angegebene Spuren nicht im Cache 110 gespeichert werden können, da sie aus dem Cache 110 entfernt wurden. In noch einer weiteren alternativen Ausführungsform können die für Spuren in der LRU-Liste 200IA des inaktiven Cache verwendeten Cache-Steuerblöcke weniger Felder und weniger Informationen als diejenigen für Spuren haben, die im Cache 110 verwaltet werden, so dass ein Cache-Steuerblock für eine Spur, die in der LRU-Liste 200IA des inaktiven Cache angegeben ist, gegebenenfalls weniger Daten erforderlich macht. In einer weiteren Ausführungsform können Daten für Spuren in der LRU-Liste 200IA des inaktiven Cache in einem Phantomcache gespeichert werden.
  • Der Hauptspeicher 108 enthält des Weiteren einen ersten Cache-Bereinigungsalgorithmus 1301 und einen zweiten Cache-Bereinigungsalgorithmus 1302, die verschiedene Algorithmen zur Auswahl von zu entfernenden Spuren bereitstellen. Zum Beispiel kann in einer einzelnen Ausführungsform der erste Cache-Bereinigungsalgorithmus 1301 einen Least-Recently-Used-(LRU-)Algorithmus aufweisen, der eine Spur am LRU-Ende der LRU-Liste 200A des aktiven Cache, die entfernt werden soll, oder einen Cache, auf den im Cache 110 am längsten nicht zugegriffen wurde, welcher entfernt werden soll, auswählt. Die LRU-Liste 200A des aktiven Cache kann eine doppelt verkettete Liste aufweisen, um die Zugriffsreihenfolge zu überwachen. Wenn eine Spur zum Cache 110 hinzugefügt wird, wird ein Eintrag für die hinzugefügte Spur zum MRU-Ende der LRU-Liste 200A des aktiven Cache hinzugefügt. Wenn auf eine Spur zugegriffen oder eine Spur aktualisiert wird, die sich bereits im Cache 110 befindet, wird der Eintrag für diese Spur in der LRU-Liste 200A des aktiven Cache an das MRU-Ende der Liste 200A verschoben. Wenn der Cache 110 seine maximale Größe erreicht, wird die am LRU-Ende angegebene Spur, die am längsten nicht verwendet oder auf die am längsten nicht zugegriffen wurde, aus dem Cache 110 entfernt.
  • Der zweite Cache-Bereinigungsalgorithmus 1302 kann einen Least-Frequently-Used-(LFU-)Algorithmus aufweisen, der eine Spur entfernt, die am wenigsten verwendet wird oder die geringste Anzahl von Zugriffen hat, während sie sich im Cache 110 befindet, wobei die Cache-Steuerblöcke 300 für die Spuren einen Häufigkeitszähler angeben, der eine Häufigkeit angibt, mit der auf die Spur zugegriffen wurde, während sie sich im aktiven Cache 110 befand. In weiteren Ausführungsformen kann der erste Cache-Bereinigungsalgorithmus 1301 und/oder der zweite Cache-Bereinigungsalgorithmus 1302 alternative Cache-Bereinigungstechniken ausführen, wie beispielsweise Adaptive Replacement Cache (ARC), Clock with Adaptive Replacement (CAR), LFU with Dynamic Aging (LFUDA), Low Inter-Reference Recency Set (LIRS), Time Aware Least Recently Used (TLRU), Most Recently Used (MRU), Pseudo-LRU (PLRU), Random Replacement (RR), Segmented LRU (SLRU), Bélády's Algorithmus, First in first out (FIFO), Last in first out (LIFO), Multi-queue (MQ) usw.
  • Der Hauptspeicher 108 kann des Weiteren ein erstes Machine-Learning-Modul 1321 und ein zweites Machine-Learning-Modul 1322 ausführen, die eine Machine-Learning-Technik wie beispielsweise Decision Tree Learning, Association Rule Learning, neuronales Netz, Inductive Programming Logic, Support Vector Machines, Bayes-Modelle usw. ausführen, um ein Vertrauensniveau festzulegen, das eine Wahrscheinlichkeit angibt, dass der zu dem Machine-Learning-Algorithmus gehörende Bereinigungsalgorithmus eine zu entfernende Spur auswählt, die das Hit-to-Miss-Ratio optimiert, um die Wahrscheinlichkeit zu erhöhen, dass sich eine angeforderte Spur, auf die zugegriffen werden soll, im aktiven Cache 110 befindet. Zum Beispiel kann das erste Machine-Learning-Modul 1321 als Eingabe die Spur, die von dem ersten Cache-Bereinigungsalgorithmus 1301 als zu entfernende Spur festgelegt wurde, sowie Cache-Statistiken empfangen, um ein erstes Vertrauensniveau zu erzeugen, dass der erste Cache-Bereinigungsalgorithmus 1301, wie beispielsweise ein LRU-Bereinigungsalgorithmus, eine zu entfernende Spur auswählen wird, die das Hit-to-Miss-Ratio maximiert. Das zweite Machine-Learning-Modul 1322 kann als Eingabe die Spur, die von dem zweiten Cache-Bereinigungsalgorithmus 1302 als zu entfernende Spur festgelegt wurde, sowie Cache-Statistiken empfangen, um ein zweites Vertrauensniveau zu erzeugen, dass der zweite Cache-Bereinigungsalgorithmus 1302, wie beispielsweise ein LFU-Bereinigungsalgorithmus, eine zu entfernende Spur auswählen wird, die das Hit-to-Miss-Ratio maximiert. Der Cache-Manager 124 kann dann das ausgegebene erste und zweite Vertrauensniveau verwenden, um die von dem ersten Cache-Bereinigungsalgorithmus 1301 oder dem zweiten Cache-Bereinigungsalgorithmus 1302 ausgewählte zu entfernende Spur auszuwählen.
  • In einer einzelnen Ausführungsform können der erste Machine-Learning-Algorithmus 1321 und der zweite Machine-Learning-Algorithmus 1322 getrennte KNN-Programme aufweisen. Das erste neuronale Netz 1321 kann mittels Backward Propagation trainiert werden, um Gewichte und Biasse an Knoten in einer verborgenen Schicht des ersten KNN-Programms anzupassen, um ein gewünschtes erstes Vertrauensniveau auf der Grundlage einer Eingabe von dem ersten Cache-Bereinigungsalgorithmus 1301 sowie den Cache-Statistiken zu erzeugen, welche eine zu entfernende Spur aufweist. Das zweite neuronale Netz 1322 kann mittels Backward Propagation trainiert werden, um Gewichte und Biasse von Knoten in einer verborgenen Schicht des zweiten KNN-Programms anzupassen, um ein gewünschtes zweites Vertrauensniveau auf der Grundlage einer Eingabe von dem zweiten Cache-Bereinigungsalgorithmus 1302 sowie den Cache-Statistiken zu erzeugen, welche eine zu entfernende Spur aufweist. Bei der Backpropagation wird die Fehlerquote der Ausgabe gemessen und die Gewichte und Biasse an Knoten in der verborgenen Schicht werden entsprechend angepasst, um den Fehler zu verkleinern. Backpropagation kann einen Algorithmus für überwachtes Lernen von künstlichen neuronalen Netzen mittels Gradientenabstieg aufweisen. Für ein künstliches neuronales Netz und eine Fehlerfunktion kann das Verfahren den Gradienten der Fehlerfunktion in Bezug auf die Gewichte und Biasse des neuronalen Netzes berechnen.
  • Während Zwischenspeicherungsoperationen kann der Cache-Manager 124 für bestimmte Zeitintervalle, wie beispielsweise 15-Sekunden-Intervalle, Cache-Zugriffsstatistiken 400 wie etwa ein Hit-to-Miss-Ratio eines Cache für den gerade verwendeten Cache 110 sowie eine Cache-Größe erfassen.
  • Obgleich 1 zwei Cache-Bereinigungsalgorithmen und zwei Machine-Learning-Module zeigt, kann es in weiteren Ausführungsformen mehr als zwei Cache-Bereinigungsalgorithmen und mehr als zwei Machine-Learning-Module geben. Des Weiteren kann anstelle eines getrennten Machine-Learning-Moduls 132i, um ein Vertrauensniveau für jeden der Cache-Bereinigungsalgorithmen 130i festzulegen, ein Machine-Learning-Modul 132 verwendet werden, um einen zu verwendenden Cache-Bereinigungsalgorithmus auf der Grundlage einer Eingabe der zu entfernenden Spur auszuwählen, die von den Cache-Bereinigungsalgorithmen 1301, 1302 sowie den Cache-Statistiken 400 ausgewählt wird.
  • In den beschriebenen Ausführungsformen weisen die Listen 200A und 200IA LRU-Listen auf. In alternativen Ausführungsformen können die Listen 200A und 200IA andere Arten von Listen aufweisen, um eine Angabe von Spuren in dem Cache 110 zu organisieren.
  • Der Speichermanager 122, der Cache-Manager 124, der erste Cache-Bereinigungsalgorithmus 1301, der zweite Cache-Bereinigungsalgorithmus 1302, das erste Machine-Learning-Modul 1321 und das zweite Machine-Learning-Modul 1322 sind in 1 als Programmcode gezeigt, der in den Hauptspeicher 108 geladen und von dem Prozessor 106 ausgeführt wird. Alternativ können einige oder alle der Funktionen in Hardware-Einheiten in dem System 100, wie beispielsweise in anwendungsspezifischen integrierten Schaltungen (ASICs, Application Specific Integrated Circuits), ausgeführt sein oder von getrennten funktionsspezifischen Prozessoren ausgeführt werden.
  • Der Speicher 104 kann eine oder mehrere in der Technik bekannte Speichereinheiten wie beispielsweise eine Solid-State-Speichereinheit (SSD, solid state storage device), die aus Solid-State-Elektronik besteht, EEPROM (Electrically Erasable Programmable Read-Only Memory bzw. elektrisch löschbaren programmierbaren Nur-Lese-Speicher), einen Flashspeicher, eine Flashplatte, ein Arbeitsspeicher-(Random-Access-Memory-(RAM-)Laufwerk, ein Storage-Class-Memory (SCM), einen Phasenwechselspeicher (PCM, Phase Change Memory), ein Resistive Random Access Memory (RRAM), ein Spin Transfer Torque Memory (STM-RAM), ein Conductive Bridging RAM (CBRAM), ein Magnetfestplattenlaufwerk, eine optische Platte, ein Band usw. aufweisen. Die Speichereinheiten können des Weiteren zu einer Anordnung von Einheiten wie beispielsweise Just a Bunch of Disks (JBOD), Direct Access Storage Device (DASD), einer Redundant-Array-of Independent Disks-(RAID-)Anordnung, einer Virtualisierungseinheit usw. zusammengestellt werden. Des Weiteren können die Speichereinheiten heterogene Speichereinheiten von verschiedenen Herstellern oder von demselben Hersteller aufweisen.
  • Der Hauptspeicher 108 kann geeignete flüchtige oder nicht flüchtige Speichereinheiten, darunter die vorstehend beschriebenen, aufweisen.
  • In bestimmten Ausführungsformen weist der aktive Cache 110 einen Cache auf, um Spuren unmittelbar aus dem Speicher 104 zu speichern. In alternativen Ausführungsformen können die beschriebenen Cache-Bereinigungstechniken, die hierin mehrere Cache-Bereinigungsalgorithmen 1301, 1302 und Machine-Learning-Module 1321, 1322 verwenden, verwendet werden, um Spuren aus Prozessor-Caches wie beispielsweise L1- und L2-Caches, einem Cache der letzten Stufe und anderen Caches in dem System 100 zu entfernen.
  • Das Netzwerk 120 kann ein Speicherbereichsnetz (SAN, Storage Area Network), ein lokales Netz (LAN, Local Area Network), ein Weitverkehrsnetz (WAN, Wide Area Network), das Internet und ein Intranet usw. aufweisen.
  • 2 veranschaulicht eine Ausführungsform von einer der LRU-Listen 200i, wie beispielsweise der LRU-Cache-Listen 200A und 200IA, als eine Liste, die ein MRU-Ende 202 hat, das eine Spur kennzeichnet, die zuletzt zum Cache 110 hinzugefügt wurde oder auf die zuletzt im Cache 110 zugegriffen wurde, und die ein LRU-Ende 204 hat, von dem die an dem LRU-Ende 204 gekennzeichnete Spur zur Herabstufung aus dem Cache 110 ausgewählt wird. Das LRU-Ende 204 zeigt auf eine Spurkennung, wie beispielsweise eine Spurkennungsadresse oder einen Cache-Steuerblockindex für die Spur, von der Spur, die sich in Bezug auf Spuren, die in dieser Liste 200A angegeben sind, am längsten im Cache 110 befindet. Die LRU-Liste 200IA des inaktiven Cache gibt aus dem Cache 110 herabgestufte Spuren an.
  • 3 veranschaulicht eine Ausführungsform eines Cache-Steuerblocks 300i für eine der Spuren im aktiven Cache 110, der, ohne darauf beschränkt zu sein, eine Cache-Steuerblockkennung 302 wie beispielsweise einen Indexwert des Cache-Steuerblocks 300i; eine Spur-ID 304 der Spur im Speicher 104; die Cache-LRU-Liste 306, in der der Cache-Steuerblock 300i angegeben ist; einen LRU-Listeneintrag 308, an dem die Spur angegeben ist; einen Cache-Zeitstempel 310, der einen Zeitpunkt angibt, zu dem die Spur zum Cache 110 hinzugefügt und auf der LRU-Liste 304 angegeben wurde; und einen Häufigkeitszähler 312 enthält, der eine Häufigkeit angibt, mit der auf die Spur 304 zugegriffen wurde, während sich die Spur im aktiven Cache 110 befand. Während er sich auf der LRU-Liste 200IA des inaktiven Cache befindet, wird der Häufigkeitszähler 312 nicht aktualisiert, sofern die in der LRU-Liste 200IA des inaktiven Cache angegebene Spur nicht wieder in die LRU-Liste 200A des aktiven Cache verschoben wird.
  • 4 veranschaulicht eine Ausführungsform von Zeitintervall-Cache-Statistiken 400, die für ein Zeitintervall erfasst werden. Der Cache-Manager 124 kann Cache-Zugriffsstatistiken für Zeitintervalle innerhalb eines großen Zeitraums während Zwischenspeicherungsoperationen erfassen. Die Zeitintervall-Cache-Zugriffsstatistiken 400i beinhalten ein Hit-to-Miss-Ratio 402 eines Cache, das die Anzahl der Treffer als ein Verhältnis von Treffern und Fehlern angibt, und eine Cache-Größe 404 einer von Spuren in Anspruch genommenen Cache-Kapazität. Andere Statistiken können ebenfalls erfasst werden.
  • Die 5a und 5b veranschaulichen eine Ausführungsform von durch den Cache-Manager 124 durchgeführten Operationen, um die Machine-Learning-Module 1321 und 1322 zur Festlegung eines Cache-Bereinigungsalgorithmus 1301 und 1302 zu verwenden, der zur Auswahl einer aus dem Cache 110 zu entfernenden Spur verwendet werden soll, um im Cache 110 Platz für eine aus dem Speicher 104 einzulesende Spur zu schaffen, die auf eine Leseanforderung von einem Host 118 zurückgegeben werden soll. Nach dem Empfang (am Block 500) der Leseanforderung wird, wenn sich die angeforderte Spur, die gelesen werden soll, (am Block 502) in der LRU-Liste 200A des aktiven Cache befindet, der Eintrag 200RT für die angeforderte Spur (RT) (am Block 504) an das MRU-Ende 202 der LRU-Liste 200A des aktiven Cache verschoben. Der Cache-Steuerblock 300RT für die angeforderte Spur wird (am Block 506) aktualisiert, um den Häufigkeitszähler 312 zu erhöhen und den LRU-Listeneintrag 308 so zu aktualisieren, dass er das MRU-Ende 202 angibt. Die zwischengespeicherte angeforderte Spur wird (am Block 508) aus dem Cache 110 an den die Spur anfordernden Host 118 zurückgegeben.
  • Wenn sich die Spur (am Block 502) nicht im Cache 110 befindet und wenn es (am Block 510) nicht genügend Speicherplatz im Cache 110 für die angeforderte Spur gibt, schaltet die Steuerung zum Block 512, um den Prozess der Auswahl einer durch den ersten Cache-Bereinigungsalgorithmus 1301 oder den zweiten Cache-Bereinigungsalgorithmus 1302 zu entfernenden Spur einzuleiten. Am Block 512 ruft der Cache-Manager 124 die Ausführung des ersten Cache-Bereinigungsalgorithmus 1301 (z.B. LRU) auf, um eine erste zu entfernende Spur festzulegen, und (am Block 514) ruft er die Ausführung des zweiten Cache-Bereinigungsalgorithmus 1302 (z.B. LFU) auf, um eine zweite zu entfernende Spur festzulegen.
  • Der Cache-Manager 124 kann dann die Ausführung des ersten Machine-Learning-Moduls 1321 (am Block 516) aufrufen, das als Eingabe die erste Bereinigungsspur, d.h. die erste zu entfernende Spur, sowie Cache-Statistiken 400 empfängt und ein erstes Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der erste Cache-Bereinigungsalgorithmus 1301 eine Lese-Hit-to-Miss-Rate am Cache 110 optimiert. Der Cache-Manager 124 ruft die Ausführung des zweiten Machine-Learning-Moduls 1322 (am Block 518) auf, das als Eingabe die zweite Bereinigungsspur, d.h. die zweite zu entfernende Spur, sowie Cache-Statistiken 400 empfängt und ein zweites Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der zweite Cache-Bereinigungsalgorithmus 1302 eine Lesetrefferrate des Cache 110 optimiert. Wenn das erste Vertrauensniveau (am Block 520) größer als das zweite Vertrauensniveau ist, entfernt der Cache-Manager 124 (am Block 522) die erste Bereinigungsspur aus dem Cache 110, die von dem ersten Machine-Learning-Modul 1321 ausgewählt wurde. Andernfalls wird, wenn das zweite Vertrauensniveau (am Block 520) größer ist, die zweite Bereinigungsspur (am Block 524) aus dem Cache 110 entfernt, die von dem zweiten Machine-Learning-Modul 1322 ausgewählt wurde.
  • Die Operationen an den Blöcken 512 bis 524 zum Entfernen einer Spur aus dem Cache 110 können auch verwendet werden, um im Cache 110 Platz für eine Schreibanforderung an eine Spur freizumachen, die sich noch nicht im Cache befindet.
  • Mit Bezug auf 5b wird, nachdem die Spur (am Block 522 oder 524) entfernt wurde, der Eintrag für die angeforderte Spur 200RT in der LRU-Liste 200IA des inaktiven Cache (am Block 528) an das MRU-Ende 202 der LRU-Liste 200A des aktiven Cache verschoben, wenn die angeforderte Spur (am Block 526) in der LRU-Liste 200IA des inaktiven Cache angegeben ist. Der Cache-Steuerblock 300RT für die angeforderte Spur wird (am Block 530) aktualisiert, um den Häufigkeitszähler 312 zu erhöhen, aktualisiere die Cache-LRU-Liste 306, um die LRU-Liste 200A des aktiven Cache anzugeben, und aktualisiere den LRU-Listeneintrag 308, um das MRU-Ende 202 anzugeben.
  • Wenn sich die angeforderte Spur (am Block 526) nicht in der LRU-Liste 200IA des inaktiven Cache befindet, fügt der Cache-Manager 124 (am Block 532) einen Eintrag an das MRU-Ende 202 der LRU-Liste 200A des aktiven Cache für die angeforderte Spur hinzu und erzeugt (am Block 534) einen Cache-Steuerblock 300RT für die angeforderte Spur, mit einem Häufigkeitszähler 312 von eins, und gibt die LRU-Liste 200A des aktiven Cache und das MRU-Ende 202 in den Feldern 306 bzw. 308 des Cache-Steuerblocks 300RT an. Wenn die LRU-Liste 200IA des inaktiven Cache (am Block 536) voll ist, wird ein Eintrag am LRU-Ende 204 der LRU-Liste 200IA des inaktiven Cache (am Block 538) entfernt. Wenn die LRU-Liste 200IA des inaktiven Cache (am Block 536) nicht voll ist oder nachdem der Eintrag (am Block 538) entfernt wurde, gibt der Cache-Manager 124 (am Block 540) die entfernte Spur am MRU-Ende 202 der LRU-Liste 200IA des inaktiven Cache an und aktualisiert den Cache-Steuerblock 300ET für die entfernte Spur (ET, evicted track), um die LRU-Liste 200IA des inaktiven Cache und das MRU-Ende 202 in den Feldern 306 bzw. 308 des Cache-Steuerblocks 300ET anzugeben.
  • Vom Block 540 oder 530 wird die angeforderte Spur in den Cache 110 eingelesen und (am Block 542) an den anfordernden Host 118 zurückgegeben. Die Steuerung schaltet dann (am Block 544) zu 6, um die Machine-Learning-Algorithmen 1321, 1322 nachzutrainieren, um eine Anpassung für den Lesefehler auf der angeforderten Spur vorzunehmen.
  • Wenn sich die angeforderte Spur (am Block 510) nicht im Cache 110 befindet und im Cache 110 Speicherplatz für die angeforderte Spur vorhanden ist, führt der Cache-Manager 124 (am Block 546) die Operationen an den Blöcken 526 bis 534 durch, damit die angeforderte Spur am MRU-Ende 202 der LRU-Liste 200A des aktiven Cache für Situationen angegeben wird, in denen sich die angeforderte Spur nicht in der LRU-Liste 200IA des inaktiven Cache befindet. Der Cache-Manager 124 schaltet (am Block 548) dann zum Block 542 in FIG. to 5b, um die angeforderte Spur in den Cache 110 einzulesen und die Machine-Learning-Module 1321, 1322 nachzutrainieren, um auf den Cachefehler einzugehen.
  • Bei den Ausführungsformen der 5a und 5b werden Machine-Learning-Algorithmen verwendet, um Vertrauensniveaus für die verschiedenen Cache-Bereinigungsalgorithmen festzulegen, so dass der Cache-Bereinigungsalgorithmus, der das höchste Vertrauensniveau für das Auswählen einer zu entfernenden Spur hat, zur Auswahl der zu entfernenden Spur verwendet wird, wobei das Vertrauensniveau die Wahrscheinlichkeit angibt, mit der der Cache-Bereinigungsalgorithmus eine zu entfernende Spur auswählt, um das Hit-to-Miss-Ratio eines Cache zu optimieren, das Cachefehler minimiert oder Cachetreffer maximiert.
  • 6 veranschaulicht eine Ausführungsform von Operationen, die von den Machine-Learning-Modulen 1321 und 1322 oder einer anderen Komponente wie beispielsweise dem Cache-Manager 124 durchgeführt werden, um die Vorhersagealgorithmen der Machine-Learning-Module 1321, 1322 im Falle eines Lesefehlers auf einer angeforderten Spur nachzutrainieren. Nach dem Einleiten (am Block 600) der Operation zum Nachtrainieren der Machine-Learning-Algorithmen 1321, 1322 legt das erste Machine-Learning-Modul 1321 (am Block 602) auf der Grundlage von ersten Informationen über die angeforderte Spur in der Liste des inaktiven Cache, z.B. auf der Grundlage einer Position der angeforderten Spur in der Liste des inaktiven Cache, ein geändertes erstes Vertrauensniveau fest. In einer einzelnen Ausführungsform, in der der erste Cache-Bereinigungsalgorithmus 1301 einen LRU-Bereinigungsalgorithmus aufweist, wird das erste Vertrauensniveau als Reaktion darauf erhöht, dass sich die angeforderte Spur näher am MRU-Ende 202 der LRU-Liste 200IA des inaktiven Cache als am LRU-Ende 204 befindet, was bedeutet, dass der Cachefehler auf einer Spur auftrat, die sich in der LRU-Liste 200IA des inaktiven Cache verhältnismäßig weit oben befand. Wenn sich die angeforderte Spur näher am LRU-Ende 204 als am MRU-Ende 202 befindet, kann das erste Vertrauensniveau verringert werden, da auf die Spur von den in der LRU-Liste 200IA des inaktiven Cache verzeichneten Spuren unterdurchschnittlich oft zugegriffen wurde.
  • Das zweite Machine-Learning-Modul 1322 legt (am Block 604) auf der Grundlage von zweiten Informationen über die angeforderte Spur in der Liste des inaktiven Cache, z.B. auf der Grundlage eines Häufigkeitszählers 312 der angeforderten Spur in der Liste des inaktiven Cache ein geändertes zweites Vertrauensniveau fest. In einer Ausführungsform, in der der zweite Cache-Bereinigungsalgorithmus 1302 einen LFU-Algorithmus zum Entfernen einer auf der Grundlage des Häufigkeitszählers 312 am wenigsten verwendeten Spur aufweist, wird das zweite Vertrauensniveau als Reaktion darauf erhöht, dass der Häufigkeitszähler-Wert der angeforderten Spur größer als der Durchschnitt der Häufigkeitszähler-Werte der Spuren in der Liste des inaktiven Cache ist, was bedeutet, dass der LFU-Bereinigungsalgorithmus unter der Voraussetzung, dass die angeforderte Spur einen über dem Durchschnitt liegenden Häufigkeitszähler-Wert hat, ein besseres Ergebnis erzeugen würde. Das zweite Vertrauensniveau kann als Reaktion darauf, dass der Häufigkeitszähler-Wert der angeforderten Spur unter dem Durchschnitt der Häufigkeitszähler-Werte der Spuren in der Liste des inaktiven Cache liegt, verringert werden, da der LFU-Bereinigungsalgorithmus in einem solchen Fall kein gutes Bereinigungsergebnis für die angeforderte Spur erzeugen würde, die einen unter dem Durchschnitt liegenden Häufigkeitszähler 312 hat, was bedeutet, dass sich die angeforderte Spur auf der Grundlage des Zugriffshäufigkeitsprädiktors weniger wahrscheinlich für eine Auswahl eignet.
  • Nachdem ein geändertes erstes und zweites Vertrauensniveau festgelegt wurde, können die Machine-Learning-Module 1321, 1322 dann diese Werte verwenden, um den Algorithmus des ersten Machine-Learning-Moduls 1321 und den Algorithmus des zweiten Machine-Learning-Moduls 1322 nachzutrainieren, um das geänderte erste bzw. zweite Vertrauensniveau für die angeforderte Spur zu erzeugen, die zu einem Cachefehler führte. Das erste Machine-Learning-Modul 1321 kann den Algorithmus des ersten Machine-Learning-Moduls 1321, wie beispielsweise die Gewichte und Biasse an den Knoten der verborgenen Schicht, (am Block 606) mittels Backpropagation zur Verringerung der Fehlerquote nachtrainieren, um das geänderte erste Vertrauensniveau für die angeforderte Spur zu erzeugen, wobei die angeforderte Spur und die Cache-Statistiken 400 als Eingabe verwendet werden. Das zweite Machine-Learning-Modul 1322 trainiert das zweite Machine-Learning-Modul 1322 (am Block 608) weiter nach, um das geänderte zweite Vertrauensniveau für die angeforderte Spur zu erzeugen, wobei die angeforderte Spur und Cache-Statistiken als Eingabe verwendet werden.
  • In Ausführungsformen, in denen die Vorhersagealgorithmen der Machine-Learning-Module 1321 und/oder 1322 neuronale Netze aufweisen, kann der Cache-Manager 124 eine Backward-Propagation-Routine aufrufen, um die Machine-Learning-Module nachzutrainieren, um das geänderte erste und zweite Vertrauensniveau zu erzeugen. Für andere Arten von Machine-Learning-Algorithmen, wie beispielsweise Bayes-Modelle, können andere Techniken zum Nachtrainieren der Machine-Learning-Module 1321, 1322 verwendet werden, um die geänderten Vertrauensniveaus auf der Grundlage der Eingabe zu erzeugen.
  • Bei den Ausführungsformen von 6 werden die Machine-Learning-Module 1321, 1322 als Reaktion auf einen Lesefehler nachtrainiert, indem die für die fehlende Spur erzeugten Vertrauensniveaus unter Verwendung von Informationen über den Zugriff auf die angeforderte Spur angepasst werden, die in der LRU-Liste 200IA des inaktiven Cache verwaltet werden, welche eine Position der angeforderten Spur in der LRU-Liste 200IA des inaktiven Cache und einen Häufigkeitszähler-Wert für die angeforderte Spur enthalten. Dies ermöglicht eine Anpassung in Echtzeit, um die Vorhersagbarkeit der Machine-Learning-Algorithmen 1321, 1322 auf der Grundlage von Informationen über einen unmittelbaren Cachefehler für eine angeforderte Spur zu verbessern, um die Vorhersagbarkeit der Machine-Learning-Algorithmen bei der Auswahl eines Cache-Bereinigungsalgorithmus zum Entfernen einer Spur aus der Spur zu verbessern, um Platz für die angeforderte Spur zu schaffen, die zu dem Fehler führte.
  • 7 veranschaulicht eine Ausführungsform von Operationen, die von dem ersten Machine-Learning-Modul 1321 oder einer anderen Komponente wie beispielsweise dem Cache-Manager 124 durchgeführt werden, um das geänderte erste Vertrauensniveau zu berechnen, wenn der erste Bereinigungsalgorithmus einen LRU-Algorithmus aufweist, wie sie beispielsweise am Block 606 in 6 durchgeführt werden. Nachdem die Operation zur Berechnung (am Block 700) des geänderten ersten Vertrauensniveaus eingeleitet wurde, berechnet das erste Machine-Learning-Modul 1321 (am Block 704), wenn sich die angeforderte Spur (am Block 702) näher am MRU-Ende 202 als am LRU-Ende 204 befindet, d.h. einen über dem Durchschnitt liegenden, kürzlich erfolgten Zugriff hat, eine positive Fehlerquote zu:
    • (Position der angeforderten Spur in der Liste des inaktiven Cache minus (einer Größe der Liste des inaktiven Cache geteilt durch zwei)), geteilt durch (die Größe der Liste des inaktiven Cache geteilt durch zwei)
  • Das erste Machine-Learning-Modul 1321 erhöht (am Block 706) das erste Vertrauensniveau um die positive Quote, um ein höheres geändertes erstes Vertrauensniveau zu erzeugen, multipliziere z.B. das erste Vertrauensniveau mit (1 plus der positiven Fehlerquote).
  • Wenn sich die angeforderte Spur (am Block 702) näher am LRU-Ende 204 befindet, berechnet das erste Machine-Learning-Modul 1321 (am Block 708) eine negative Fehlerquote zu:
    • ((eine Größe der Liste des inaktiven Cache geteilt durch zwei) minus der Position der angeforderten Spur in der Liste des inaktiven Cache minus) geteilt durch (die Größe der Liste des inaktiven Cache geteilt durch zwei)
  • Das erste Machine-Learning-Modul 1321 verringert (am Block 710) das erste Vertrauensniveau um die negative Quote, um ein niedrigeres geändertes erstes Vertrauensniveau zu erzeugen, multipliziere z.B. das erste Vertrauensniveau mit (1 minus der negativen Fehlerquote).
  • Bei der Ausführungsform von Operationen von 7 wird die Position der angeforderten Spur in der LRU-Liste 200IA des inaktiven Cache verwendet, um eine Fehlerquote für das erste Vertrauensniveau beruhend darauf festzulegen, inwieweit sich die angeforderte Spur, die zu dem Cachefehler führt, in der oberen oder unteren Hälfte der LRU-Liste 200IA des inaktiven Cache befindet. Wenn sich die angeforderte Spur in der oberen Hälfte der LRU-Liste 200IA des inaktiven Cache befindet, wurde auf die angeforderte Spur aktueller als auf die durchschnittliche Spur in der LRU-Liste 200IA des inaktiven Cache zugegriffen und somit sollte der LRU-Bereinigungsalgorithmus ein höheres Vertrauensniveau für die angeforderte Spur erzeugen, d.h., ein aktuellerer Zugriff bedeutet eine höhere Wahrscheinlichkeit von Lesetreffern. Wenn sich die angeforderte Spur in der unteren Hälfte der LRU-Liste 200IA des inaktiven Cache befindet, wurde auf die angeforderte Spur weniger aktuell als auf die durchschnittliche Spur in der LRU-Liste 200IA des inaktiven Cache zugegriffen und somit sollte der LRU-Bereinigungsalgorithmus für die angeforderte Spur, auf die weniger aktuell zugegriffen wurde, ein niedrigeres Vertrauensniveau erzeugen, das Cachefehler wahrscheinlich nicht verringern wird.
  • 8 veranschaulicht eine Ausführungsform von Operationen, die von dem zweiten Machine-Learning-Modul 1322 oder einer anderen Komponente wie beispielsweise dem Cache-Manager 124 durchgeführt werden, um das geänderte zweite Vertrauensniveau zu berechnen, wenn der zweite Bereinigungsalgorithmus 1302 einen LFU-Algorithmus aufweist, wie sie beispielsweise am Block 608 in 6 durchgeführt werden. Nachdem die Operation zur Berechnung (am Block 800) des geänderten zweiten Vertrauensniveaus eingeleitet wurde, berechnet das zweite Machine-Learning-Modul 1322 (am Block 804), wenn der Häufigkeitszähler 312 der angeforderten Spur (am Block 802) größer als ein Durchschnitt der Häufigkeitszähler-Werte 312 für die Spuren in der LRU-Liste 200IA des inaktiven Cache ist, eine positive Fehlerquote zu:
    • (der Häufigkeitszähler-Wert der angeforderten Spur minus des Durchschnitts der Häufigkeitszähler-Werte) geteilt durch (einen maximalen Häufigkeitszähler-Wert von Häufigkeitszähler-Werten in der Liste des inaktiven Cache minus des Durchschnitts der Häufigkeitszähler-Werte).
  • Das zweite Machine-Learning-Modul 1322 erhöht (am Block 806) das zweite Vertrauensniveau um die positive Quote, um ein höheres geändertes zweites Vertrauensniveau zu erzeugen, multipliziere z.B. das zweite Vertrauensniveau mit (1 plus der positiven Fehlerquote).
  • Wenn der Häufigkeitszähler 312 der angeforderten Spur (am Block 802) niedriger als ein Durchschnitt der Häufigkeitszähler-Werte 312 für die Spuren in der LRU-Liste 200IA des inaktiven Cache ist, berechnet das zweite Machine-Learning-Modul 1322 (am Block 808) eine negative Fehlerquote zu:
    • (der Durchschnitt der Häufigkeitszähler-Werte minus des Häufigkeitszähler-Werts der angeforderten Spur) geteilt durch (einen maximalen Häufigkeitszähler-Wert von Häufigkeitszähler-Werten in der Liste des inaktiven Cache minus des Durchschnitts der Häufigkeitszähler-Werte).
  • Das zweite Machine-Learning-Modul 1322 verringert (am Block 810) das zweite Vertrauensniveau um die negative Quote, um ein niedrigeres geändertes zweites Vertrauensniveau zu erzeugen, multipliziere z.B. das zweite Vertrauensniveau mit (1 minus der negativen Fehlerquote).
  • Bei der Ausführungsform von Operationen von 8 wird die Position der Zugriffshäufigkeit der angeforderten Spur in der LRU-Liste 200IA des inaktiven Cache verwendet, um eine Fehlerquote für das zweite Vertrauensniveau beruhend darauf festzulegen, inwieweit die Zugriffshäufigkeit der angeforderten Spur, die zu dem Cachefehler führt, über oder unter dem Durchschnitt liegt. Wenn die Zugriffshäufigkeit der angeforderten Spur in der LRU-Liste 200IA des inaktiven Cache über dem Durchschnitt liegt, wurde auf die angeforderte Spur häufiger zugegriffen als auf die meisten Spuren in der LRU-Liste 200IA des inaktiven Cache und somit sollte der LRU-Bereinigungsalgorithmus ein höheres Vertrauensniveau für die angeforderte Spur erzeugen, d.h. mehr Lesetreffer. Wenn die Zugriffshäufigkeit der angeforderten Spur unter dem Durchschnitt der Spuren in der LRU-Liste 200IA des inaktiven Cache liegt, wurde auf die angeforderte Spur weniger häufig zugegriffen als auf die durchschnittliche Spur in der LRU-Liste 200IA des inaktiven Cache und somit sollte der LRU-Bereinigungsalgorithmus ein niedrigeres Vertrauensniveau für die angeforderte Spur, auf die weniger häufig zugegriffen wurde, erzeugen und nicht zu einem besseren Hit-to-Miss-Ratio des Cache beitragen.
  • In der beschriebenen Ausführungsformen können die Variablen „I“ usw., wenn sie mit verschiedenen Elementen verwendet werden, eine gleiche oder eine andere Instanz dieses Elements bezeichnen.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field-programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Informationsverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Informationsverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Informationsverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Informationsverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme, welche die festgelegten Funktionen oder Schritte durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen, umgesetzt werden können.
  • Die Datenverarbeitungskomponenten von 1, darunter die Hosts 118 und das Datenverarbeitungssystem 100, können in einem oder mehreren Computersystemen, wie beispielsweise dem in 9 gezeigten Computersystem 902, ausgeführt werden. Das Computersystem/der Server 902 kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen, wie beispielsweise Programmmodulen, die von einem Computersystem ausgeführt werden, beschrieben werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen ausführen. Das Computersystem/der Server 902 kann in verteilten Cloud-Computing-Umgebungen in die Praxis umgesetzt werden, in denen Aufgaben von fernen Verarbeitungseinheiten durchgeführt werden, die durch ein Übertragungsnetzwerk miteinander verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in fernen Speichermedien eines Computersystems, darunter Hauptspeichereinheiten, befinden.
  • Wie in 9 gezeigt ist, ist das Computersystem/der Server 902 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/Servers 902 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 904, ein Systemspeicher 906 und ein Bus 908 gehören, der verschiedene Systemkomponenten verbindet, darunter den Systemspeicher 906 mit dem Prozessor 904. Der Bus 908 stellt eine oder mehrere von beliebigen Busstrukturen von mehreren Arten von Busstrukturen dar, darunter einen Hauptspeicherbus oder einen Hauptspeichercontroller, einen peripheren Bus, einen Accelerated Graphics Port und einen Prozessor- oder lokalen Bus, der beliebige einer Vielfalt an Busarchitekturen verwendet. Beispielhaft, und nicht als Einschränkung, gehören zu solchen Architekturen der Bus „Industry Standard Architecture (ISA)“, der Bus „Micro Channel Architecture (MCA)“, der Bus „Enhanced ISA (EISA)“, der lokale Bus „Video Electronics Standards Association (VESA)“ und der Bus „Peripheral Component Interconnects (PCI)“.
  • Das Computersystem/der Server 902 enthält üblicherweise eine Vielfalt an Datenträgern, die durch ein Computersystem gelesen werden können. Solche Datenträger können jedwede verfügbaren Datenträger sein, auf die von dem Computersystem/Server 902 zugegriffen werden kann, und zu ihnen gehören sowohl flüchtige und nicht flüchtige als auch auswechselbare und nicht auswechselbare Datenträger.
  • Zum Systemspeicher 906 können durch ein Computersystem lesbare Datenträger in Form von flüchtigem Speicher, wie beispielsweise einem Direktzugriffsspeicher (RAM) 910 und/oder einem Cache 912, gehören. Das Computersystem/der Server 902 kann des Weiteren weitere auswechselbare/nicht auswechselbare, flüchtige/nicht flüchtige Speichermedien eines Computersystems enthalten. Lediglich als Beispiel kann das Speichersystem 913 für das Lesen von und das Schreiben auf einen nicht auswechselbaren, nicht flüchtigen Magnetdatenträger (nicht gezeigt und üblicherweise als „Festplattenlaufwerk“ bezeichnet) bereitgestellt werden. Obgleich nicht gezeigt, können ein Magnetplattenlaufwerk für das Lesen von und das Schreiben auf eine auswechselbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk für das Lesen von oder das Schreiben auf eine auswechselbare, nicht flüchtige optische Platte, wie beispielsweise ein CD-ROM, DVD-ROM oder andere optische Datenträger bereitgestellt werden. In diesen Fällen kann jeder Datenträger über eine oder mehrere Datenträgerschnittstellen mit dem Bus 908 verbunden werden. Wie weiter dargestellt und nachstehend beschrieben wird, kann der Speicher 906 mindestens ein Programmprodukt enthalten, das über einen Satz (z.B. zumindest einen) von Programmmodulen verfügt, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Das Programm/Dienstprogramm 914, das über einen Satz (zumindest einen) von Programmmodulen 916 verfügt, kann beispielhaft, und nicht als Einschränkung, im Speicher 906 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Ausführung einer Netzwerkumgebung umfassen. Die Komponenten des Computers 902 können als Programmmodule 916 ausgeführt sein, die im Allgemeinen die Funktionen und/oder die methodischen Vorgehensweisen von Ausführungsformen der Erfindung ausführen, wie hierin beschrieben ist. Die Systeme von 1 können in einem oder mehreren Computersystemen 902 ausgeführt sein, wobei, wenn sie in mehreren Computersystemen 902 ausgeführt sind, die Computersysteme dann über ein Netzwerk Daten austauschen können.
  • Das Computersystem/der Server 902 kann auch mit einer oder mehreren externen Einheiten 918 wie beispielsweise einer Tastatur, einer Zeigereinheit, einem Bildschirm 920 usw.; mit einer oder mehreren Einheiten, die einem Benutzer den Dialogverkehr mit dem Computersystem/Server 902 ermöglichen; und/oder beliebigen Einheiten (z.B. Netzkarte, Modem usw.), die dem Computersystem/Server 902 den Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen, Daten austauschen. Ein solcher Datenaustausch kann über Eingabe-/Ausgabe-(E/A-)Schnittstellen 922 erfolgen. Dennoch kann das Computersystem/der Server 902 mit einem oder mehreren Netzwerken wie beispielsweise einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z.B. dem Internet) über den Netzwerkadapter 924 Daten austauschen. Wie dargestellt ist, tauscht der Netzwerkadapter 924 mit den anderen Komponenten des Computersystems/Servers 902 über den Bus 908 Daten aus. Es sollte klar sein, dass auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 902 verwendet werden könnten, obgleich diese nicht gezeigt sind. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Plattenlaufwerken, RAID-Systeme, Bandlaufwerke sowie Speichersysteme zur Datenarchivierung usw.

Claims (11)

  1. Computerprogrammprodukt, um Spuren aus einem Cache (110) in einen Speicher (104) herabzustufen, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, in dem durch einen Computer (100) lesbarer Programmcode realisiert ist, der, wenn er ausgeführt wird, Operationen durchführt, wobei die Operationen aufweisen: Bereitstellen (516) eines ersten Machine-Learning-Moduls (1321), das als Eingabe eine erste Bereinigungsspur zur Entfernung aus dem Cache empfängt, die durch einen ersten Cache-Bereinigungsalgorithmus (1301) bestimmt wird, und ein erstes Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der erste Cache-Bereinigungsalgorithmus eine Cache-Lesetrefferrate optimiert; Bereitstellen (518) eines zweiten Machine-Learning-Moduls (1322), das als Eingabe eine zweite Bereinigungsspur zur Entfernung aus dem Cache empfängt, die durch einen zweiten Cache-Bereinigungsalgorithmus (1302) bestimmt wird, und ein zweites Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der zweite Cache-Bereinigungsalgorithmus die Cache-Lesetrefferrate optimiert, wobei der erste und der zweite Cache-Bereinigungsalgorithmus unterschiedliche Bereinigungsschemata verwenden; Festlegen (602) eines geänderten ersten Vertrauensniveaus auf der Grundlage von ersten Informationen über eine vorgegebene Spur; Festlegen (604) eines geänderten zweiten Vertrauensniveaus auf der Grundlage von zweiten Informationen über die vorgegebene Spur; Nachtrainieren (606) des ersten Machine-Learning-Moduls, um das geänderte erste Vertrauensniveau für die vorgegebene Spur zu erzeugen; und Nachtrainieren (608) des zweiten Machine-Learning-Moduls, um das geänderte zweite Vertrauensniveau für die vorgegebene Spur zu erzeugen.
  2. Computerprogrammprodukt nach Anspruch 1, wobei das erste und das zweite Machine-Learning-Modul ein erstes bzw. ein zweites KNN-Programm aufweist; wobei das Nachtrainieren des ersten Machine-Learning-Moduls das Verwenden von Backward Propagation aufweist, um Gewichte und Biasse von Knoten in einer verborgenen Schicht des ersten KNN-Programms anzupassen, um das geänderte erste Vertrauensniveau auf der Grundlage einer Eingabe zu erzeugen, welche die vorgegebene Spur und Cache-Statistiken aufweist; und wobei das Nachtrainieren des zweiten Machine-Learning-Moduls das Verwenden von Backward Propagation aufweist, um Gewichte und Biasse von Knoten in einer verborgenen Schicht des zweiten KNN-Programms anzupassen, um das geänderte zweite Vertrauensniveau auf der Grundlage einer Eingabe zu erzeugen, welche die vorgegebene Spur und die Cache-Statistiken aufweist.
  3. Computerprogrammprodukt nach Anspruch 1, wobei die vorgegebene Spur eine angeforderte Spur umfasst, die Gegenstand einer Leseanforderung ist, für die festgestellt wurde, dass sie sich nicht im Cache befindet, wobei die Operationen ferner aufweisen: Verwalten einer Liste (200A) des aktiven Cache mit den Spuren in dem Cache; Verwalten einer Liste (200IA) des inaktiven Cache mit aus dem Cache entfernten Spuren, die aus der Liste des aktiven Cache entfernt sind; wobei das Festlegen der geänderten ersten und zweiten Vertrauensniveaus und das Nachtrainieren der ersten und zweiten Machine-Learning-Module in Reaktion darauf ausgeführt werden, dass die angeforderte Spur nicht in der Liste des aktiven Cache angegeben ist (502) und in der Liste des inaktiven Cache angegeben ist (526).
  4. Computerprogrammprodukt nach Anspruch 3, wobei die Liste des aktiven Cache und die Liste des inaktiven Cache LRU-Listen von Spuren in dem Cache aufweisen, wobei der erste Cache-Bereinigungsalgorithmus einen LRU-Algorithmus aufweist, der eine zu entfernende Spur auswählt, die sich an einem LRU-Ende der LRU-Liste befindet, wobei das Festlegen des geänderten ersten Vertrauensniveaus auf einer Position der angeforderten Spur in der Liste des inaktiven Cache beruht.
  5. Computerprogrammprodukt nach Anspruch 4, wobei das Festlegen des geänderten ersten Vertrauensniveaus auf der Grundlage der Position der angeforderten Spur in der Liste des inaktiven Cache aufweist: Erhöhen (706) des ersten Vertrauensniveaus als Reaktion darauf, dass sich die angeforderte Spur näher an einem Most Recently Used (MRU)-Ende der Liste des inaktiven Cache als am LRU-Ende befindet (702); und Verringern (710) des ersten Vertrauensniveaus als Reaktion darauf, dass sich die angeforderte Spur näher am LRU-Ende als am MRU-Ende befindet (702).
  6. Computerprogrammprodukt nach Anspruch 4, wobei das Festlegen des geänderten ersten Vertrauensniveaus auf der Grundlage der Position der angeforderten Spur in der Liste des inaktiven Cache aufweist: als Reaktion darauf, dass sich die angeforderte Spur näher an einem MRU-Ende der Liste des inaktiven Cache als am LRU-Ende befindet (702), Durchführen von Folgendem: Berechnen (704) einer positiven Fehlerquote, die (die Position der angeforderten Spur in der Liste des inaktiven Cache minus (einer Größe der Liste des inaktiven Cache geteilt durch zwei)), geteilt durch die Größe der Liste des inaktiven Cache geteilt durch zwei aufweist; und Anpassen (706) des ersten Vertrauensniveaus um die positive Fehlerquote, um das geänderte erste Vertrauensniveau zu erzeugen; und als Reaktion darauf, dass sich die angeforderte Spur näher am LRU-Ende als am MRU-Ende der Liste des inaktiven Cache befindet (702), Durchführen von Folgendem: Berechnen (708) einer negativen Fehlerquote, die ((eine Größe der Liste des inaktiven Cache geteilt durch zwei) minus der Position der angeforderten Spur in der Liste des inaktiven Cache minus) geteilt durch die Größe der Liste des inaktiven Cache geteilt durch zwei aufweist; und Anpassen (710) des ersten Vertrauensniveaus um die negative Fehlerquote, um das geänderte erste Vertrauensniveau zu erzeugen.
  7. Computerprogrammprodukt nach Anspruch 3, wobei die Operationen des Weiteren aufweisen: Bereitstellen eines Häufigkeitszählers (312) für jede der Spuren in der Liste des aktiven Cache und der Liste des inaktiven Cache, der eine Häufigkeit angibt, mit der auf eine Spur in dem Cache zugegriffen wurde, während sie auf der Liste des aktiven Cache stand, bevor sie in die Liste des inaktiven Cache verschoben wurde, wobei der zweite Cache-Bereinigungsalgorithmus einen LFU-Algorithmus aufweist, der eine zu entfernende Spur auswählt, die einen niedrigsten Häufigkeitszähler der Häufigkeitszähler für die Spuren in dem Cache hat, wobei das Festlegen des geänderten zweiten Vertrauensniveaus auf einem Häufigkeitszähler-Wert der angeforderten Spur in Bezug auf einen Durchschnitt von Häufigkeitszähler-Werten von Spuren in der Liste des inaktiven Cache beruht.
  8. Computerprogrammprodukt nach Anspruch 7, wobei das Festlegen des geänderten zweiten Vertrauensniveaus auf der Grundlage des Häufigkeitszähler-Werts der angeforderten Spur in der Liste des inaktiven Cache aufweist: Erhöhen (806) des zweiten Vertrauensniveaus als Reaktion darauf, dass der Häufigkeitszähler-Wert der angeforderten Spur größer als der Durchschnitt der Häufigkeitszähler-Werte der Spuren in der Liste des inaktiven Cache ist (802); und Verringern (810) des zweiten Vertrauensniveaus als Reaktion darauf, dass der Häufigkeitszähler-Wert der angeforderten Spur niedriger als der Durchschnitt der Häufigkeitszähler-Werte der Spuren in der Liste des inaktiven Cache ist (802).
  9. Computerprogrammprodukt nach Anspruch 7, wobei das Festlegen des geänderten zweiten Vertrauensniveaus auf der Grundlage des Häufigkeitszähler-Werts der angeforderten Spur in der Liste des inaktiven Cache aufweist: als Reaktion darauf, dass der Häufigkeitszähler-Wert der angeforderten Spur größer als der Durchschnitt der Häufigkeitszähler-Werte der Spuren in der Liste des inaktiven Cache ist (802), Durchführen von Folgendem: Berechnen (804) einer positiven Fehlerquote, die (den Häufigkeitszähler-Wert der angeforderten Spur minus des Durchschnitts der Häufigkeitszähler-Werte) geteilt durch (einen maximalen Häufigkeitszähler-Wert von Häufigkeitszähler-Werten in der Liste des inaktiven Cache minus des Durchschnitts der Häufigkeitszähler-Werte) aufweist; und Anpassen (806) des zweiten Vertrauensniveaus um die positive Fehlerquote, um das geänderte zweite Vertrauensniveau zu erzeugen; und als Reaktion darauf, dass der Häufigkeitszähler-Wert der angeforderten Spur niedriger als der Durchschnitt der Häufigkeitszähler-Werte der Spuren in der Liste des inaktiven Cache ist (802), Durchführen von Folgendem: Berechnen (808) einer negativen Fehlerquote, die (den Durchschnitt der Häufigkeitszähler-Werte minus des Häufigkeitszähler-Werts der angeforderten Spur) geteilt durch (einen maximalen Häufigkeitszähler-Wert von Häufigkeitszähler-Werten in der Liste des inaktiven Cache minus des Durchschnitts der Häufigkeitszähler-Werte) aufweist; und Anpassen (810) des zweiten Vertrauensniveaus um die negative Fehlerquote, um das geänderte zweite Vertrauensniveau zu erzeugen.
  10. System (100) zum Herabstufen von Spuren aus einem Cache (110) in einen Speicher (104), das aufweist: einen Prozessor (106); und ein durch einen Computer lesbares Speichermedium, das über darin realisierten, durch einen Computer lesbaren Programmcode verfügt, der, wenn er ausgeführt wird, Operationen durchführt, wobei die Operationen aufweisen: Bereitstellen (516) eines ersten Machine-Learning-Moduls (1321), das als Eingabe eine erste Bereinigungsspur zur Entfernung aus dem Cache empfängt, die durch einen ersten Cache-Bereinigungsalgorithmus (1301) bestimmt wird, und ein erstes Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der erste Cache-Bereinigungsalgorithmus eine Cache-Lesetrefferrate optimiert; Bereitstellen (518) eines zweiten Machine-Learning-Moduls (1322), das als Eingabe eine zweite Bereinigungsspur zur Entfernung aus dem Cache empfängt, die durch einen zweiten Cache-Bereinigungsalgorithmus (1302) bestimmt wird, und ein zweites Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der zweite Cache-Bereinigungsalgorithmus die Cache-Lesetrefferrate optimiert, wobei der erste und der zweite Cache-Bereinigungsalgorithmus unterschiedliche Bereinigungsschemata verwenden; Festlegen (602) eines geänderten ersten Vertrauensniveaus auf der Grundlage von ersten Informationen über eine vorgegebene Spur; Festlegen (604) eines geänderten zweiten Vertrauensniveaus auf der Grundlage von zweiten Informationen über die vorgegebene Spur; Nachtrainieren (606) des ersten Machine-Learning-Moduls, um das geänderte erste Vertrauensniveau für die vorgegebene Spur zu erzeugen; und Nachtrainieren (608) des zweiten Machine-Learning-Moduls, um das geänderte zweite Vertrauensniveau für die vorgegebene Spur zu erzeugen.
  11. Verfahren zum Herabstufen von Spuren aus einem Cache (110) in einen Speicher (104), das aufweist: Bereitstellen (516) eines ersten Machine-Learning-Moduls (1321), das als Eingabe eine erste Bereinigungsspur zur Entfernung aus dem Cache empfängt, die durch einen ersten Cache-Bereinigungsalgorithmus (1301) bestimmt wird, und ein erstes Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der erste Cache-Bereinigungsalgorithmus eine Cache-Lesetrefferrate optimiert; Bereitstellen (516) eines zweiten Machine-Learning-Moduls (1321), das als Eingabe eine zweite Bereinigungsspur zur Entfernung aus dem Cache empfängt, die durch einen zweiten Cache-Bereinigungsalgorithmus (1302) bestimmt wird, und ein zweites Vertrauensniveau ausgibt, das eine Wahrscheinlichkeit angibt, dass der zweite Cache-Bereinigungsalgorithmus die Cache-Lesetrefferrate optimiert, wobei der erste und der zweite Cache-Bereinigungsalgorithmus unterschiedliche Bereinigungsschemata verwenden; Festlegen (602) eines geänderten ersten Vertrauensniveaus auf der Grundlage von ersten Informationen über eine vorgegebene Spur; Festlegen (604) eines geänderten zweiten Vertrauensniveaus auf der Grundlage von zweiten Informationen über die vorgegebene Spur; Nachtrainieren (606) des ersten Machine-Learning-Moduls, um das geänderte erste Vertrauensniveau für die vorgegebene Spur zu erzeugen; und Nachtrainieren (608) des zweiten Machine-Learning-Moduls, um das geänderte zweite Vertrauensniveau für die vorgegebene Spur zu erzeugen.
DE112019001526.5T 2018-05-18 2019-05-13 Auswählen von einem von mehreren cache-bereinigungsalgorithmen, der zum entfernen einer spur aus dem cache verwendet werden soll Active DE112019001526B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/984,180 2018-05-18
US15/984,180 US10983922B2 (en) 2018-05-18 2018-05-18 Selecting one of multiple cache eviction algorithms to use to evict a track from the cache using a machine learning module
PCT/IB2019/053913 WO2019220301A1 (en) 2018-05-18 2019-05-13 Selecting one of multiple cache eviction algorithms to use to evict track from the cache

Publications (2)

Publication Number Publication Date
DE112019001526T5 DE112019001526T5 (de) 2020-12-10
DE112019001526B4 true DE112019001526B4 (de) 2022-06-09

Family

ID=68532844

Family Applications (2)

Application Number Title Priority Date Filing Date
DE112019001526.5T Active DE112019001526B4 (de) 2018-05-18 2019-05-13 Auswählen von einem von mehreren cache-bereinigungsalgorithmen, der zum entfernen einer spur aus dem cache verwendet werden soll
DE112019006907.1T Active DE112019006907B3 (de) 2018-05-18 2019-05-13 Auswählen von einem von mehreren cache-bereinigungsalgorithmen, der zum entfernen einer spur aus dem cache verwendet werden soll

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE112019006907.1T Active DE112019006907B3 (de) 2018-05-18 2019-05-13 Auswählen von einem von mehreren cache-bereinigungsalgorithmen, der zum entfernen einer spur aus dem cache verwendet werden soll

Country Status (6)

Country Link
US (3) US10983922B2 (de)
JP (1) JP7216741B2 (de)
CN (1) CN112074819A (de)
DE (2) DE112019001526B4 (de)
GB (1) GB2588037B (de)
WO (1) WO2019220301A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983922B2 (en) 2018-05-18 2021-04-20 International Business Machines Corporation Selecting one of multiple cache eviction algorithms to use to evict a track from the cache using a machine learning module
US11222265B2 (en) * 2018-10-25 2022-01-11 International Business Machines Corporation Perform destages of tracks with holes in a storage system by training a machine learning module
US11449230B2 (en) * 2019-03-07 2022-09-20 Dell Products L.P. System and method for Input/Output (I/O) pattern prediction using recursive neural network and proaction for read/write optimization for sequential and random I/O
US11636040B2 (en) * 2019-05-24 2023-04-25 Texas Instruments Incorporated Methods and apparatus for inflight data forwarding and invalidation of pending writes in store queue
US11766575B2 (en) * 2019-06-24 2023-09-26 Varian Medical Systems, Inc. Quality assurance process for radiation therapy treatment planning
US10860259B1 (en) * 2019-07-17 2020-12-08 Tyson York Winarski Multi-tiered storage system for blockchain
CN113392042B (zh) * 2020-03-12 2024-04-09 伊姆西Ip控股有限责任公司 用于管理缓存的方法、电子设备和计算机程序产品
KR20210128073A (ko) * 2020-04-16 2021-10-26 에스케이하이닉스 주식회사 메모리 시스템
US20210334709A1 (en) * 2020-04-27 2021-10-28 International Business Machines Corporation Breadth-first, depth-next training of cognitive models based on decision trees
US11669452B2 (en) * 2020-11-11 2023-06-06 Nokia Solutions And Networks Oy Reconfigurable cache hierarchy framework for the storage of FPGA bitstreams
US11379281B2 (en) * 2020-11-18 2022-07-05 Akamai Technologies, Inc. Detection and optimization of content in the payloads of API messages
CN112596673B (zh) * 2020-12-18 2023-08-18 南京道熵信息技术有限公司 具有双重raid数据保护的多活多控存储系统
CN114741630A (zh) * 2021-01-07 2022-07-12 华为云计算技术有限公司 一种淘汰数据的方法、装置、缓存节点以及缓存系统
US20230102891A1 (en) * 2021-09-29 2023-03-30 Advanced Micro Devices, Inc. Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
CN115277243B (zh) * 2022-08-04 2024-03-08 陈锦汇 一种基于lru高速缓存的网络通信方法
KR102634367B1 (ko) * 2023-07-10 2024-02-07 스마트마인드 주식회사 인공지능모델 캐싱 방법 및 이러한 방법을 수행하는장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110296122A1 (en) 2010-05-31 2011-12-01 William Wu Method and system for binary cache cleanup
US20150052286A1 (en) 2013-08-15 2015-02-19 Applied Micro Circuits Corporation Retrieval hash index
US20150186274A1 (en) 2013-12-30 2015-07-02 Michael Henry Kass Memory System Cache Eviction Policies

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100236983B1 (ko) * 1996-11-20 2000-01-15 정선종 신경망을 이용한 예측 기법 기반 버퍼 교체 방법
US6785771B2 (en) * 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
WO2004046933A1 (ja) 2002-11-20 2004-06-03 Fujitsu Limited メモリ制御装置およびキャッシュリプレース制御方法
US10635723B2 (en) * 2004-02-15 2020-04-28 Google Llc Search engines and systems with handheld document data capture devices
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US8965819B2 (en) * 2010-08-16 2015-02-24 Oracle International Corporation System and method for effective caching using neural networks
US8793436B2 (en) 2011-05-23 2014-07-29 International Business Machines Corporation Cache management of tracks in a first cache and a second cache for a storage
US8850122B2 (en) 2011-11-30 2014-09-30 International Business Machines Corporation Cache optimization via predictive cache size modification
US8930624B2 (en) 2012-03-05 2015-01-06 International Business Machines Corporation Adaptive cache promotions in a two level caching system
US9274956B1 (en) 2012-10-31 2016-03-01 Amazon Technologies, Inc. Intelligent cache eviction at storage gateways
US9323695B2 (en) 2012-11-12 2016-04-26 Facebook, Inc. Predictive cache replacement
US9940170B2 (en) 2012-12-24 2018-04-10 Empire Technology Development Llc Dynamically managing distribution of data and computation across cores for sequential programs
US9747214B2 (en) 2013-05-22 2017-08-29 Schwegman Lundberg & Woessner, P.A. Forecast modeling cache prefetch system and method
US20150186287A1 (en) 2013-12-30 2015-07-02 Michael Henry Kass Using Memory System Programming Interfacing
US20150277764A1 (en) 2014-03-28 2015-10-01 Kabushiki Kaisha Toshiba Multi-mode nand-caching policy for hybrid-hdd
US10176103B1 (en) * 2015-05-07 2019-01-08 American Megatrends, Inc. Systems, devices and methods using a solid state device as a caching medium with a cache replacement algorithm
JP2017072982A (ja) 2015-10-07 2017-04-13 富士通株式会社 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム
US9811474B2 (en) * 2015-10-30 2017-11-07 International Business Machines Corporation Determining cache performance using a ghost cache list indicating tracks demoted from a cache list of tracks in a cache
US9824030B2 (en) * 2015-10-30 2017-11-21 International Business Machines Corporation Adjusting active cache size based on cache usage
KR20170138765A (ko) 2016-06-08 2017-12-18 삼성전자주식회사 메모리 장치, 메모리 모듈 및 메모리 장치의 동작 방법
US10430349B2 (en) 2016-06-13 2019-10-01 Advanced Micro Devices, Inc. Scaled set dueling for cache replacement policies
US10983922B2 (en) 2018-05-18 2021-04-20 International Business Machines Corporation Selecting one of multiple cache eviction algorithms to use to evict a track from the cache using a machine learning module

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110296122A1 (en) 2010-05-31 2011-12-01 William Wu Method and system for binary cache cleanup
US20150052286A1 (en) 2013-08-15 2015-02-19 Applied Micro Circuits Corporation Retrieval hash index
US20150186274A1 (en) 2013-12-30 2015-07-02 Michael Henry Kass Memory System Cache Eviction Policies

Also Published As

Publication number Publication date
US20190354488A1 (en) 2019-11-21
US10783087B2 (en) 2020-09-22
DE112019006907B3 (de) 2023-08-17
DE112019001526T5 (de) 2020-12-10
JP2021524078A (ja) 2021-09-09
GB2588037A (en) 2021-04-14
US11301394B2 (en) 2022-04-12
US20190354489A1 (en) 2019-11-21
WO2019220301A1 (en) 2019-11-21
JP7216741B2 (ja) 2023-02-01
GB2588037B (en) 2022-05-11
GB202019055D0 (en) 2021-01-20
US10983922B2 (en) 2021-04-20
CN112074819A (zh) 2020-12-11
US20210117337A1 (en) 2021-04-22

Similar Documents

Publication Publication Date Title
DE112019001526B4 (de) Auswählen von einem von mehreren cache-bereinigungsalgorithmen, der zum entfernen einer spur aus dem cache verwendet werden soll
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE112012002452B4 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE112013002355B4 (de) Steigern von Datenzwischenspeicherungsleistung
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE112012004540B4 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen
DE112011100618B4 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE112012004571B4 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102016013577B4 (de) Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern
DE112012001302T5 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
US9372810B2 (en) Collaborative caching
DE112010003610T5 (de) Vorabfüllen eines Cachespeichers bei Threadmigration
DE202016107157U1 (de) Profilierungs-Cache-Ersatz
DE112020002792B4 (de) Verschleissorientierte blockmodusumwandlung in nichtflüchtigen speichern
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE112019003288T5 (de) Verwenden eines moduls mit maschinellem lernen, um zu ermitteln, wann eine fehlerprüfung eines speicherelements durchzuführen ist
DE112013000650T5 (de) Datenzwischenspeicherungsbereich
DE102016001682A1 (de) Leistungsausgeglichene Datenspeichervorrichtung
DE102021123290A1 (de) Schnelles verfolgen von cache zum unterstützen von aggressivem vorablesen
DE112018000900T5 (de) Verarbeiten eines Befehls zum Freigeben von Speicherplatz in einem Computersystem
CN110413545B (zh) 存储管理方法、电子设备和计算机程序产品
DE112021003441T5 (de) Abrufen von Cacheressourcen für erwartete Schreiboperationen auf Spuren in einem Schreibsatz, nachdem die Cacheressourcen für die Spuren in dem Schreibsatz freigegeben wurden
DE112020001089B4 (de) Verbessern von cache-trefferverhältnissen bei ausgewählten datenträgern in einem speichersystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R130 Divisional application to

Ref document number: 112019006907

Country of ref document: DE

R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final